Vai al contenuto
PLC Forum


Comunicazione Tra Un Programma Windows (.net) E S7-1200


gianorione

Messaggi consigliati

Ciao a tutti.

Sto progettando un programma windows scritto in visual studio .net che deve comunicare con un S7-1200 (gestito da un'altra persona).

Siamo entrambi alle prime armi per quanto riguarda la comunicazione windows<->S7, nel senso che lui ha sempre usato il PLC senza mai scambiare dati con un PC, mentre io non ho mai lavorato con i PLC siemens.

Lui mi ha detto che potremmo scambiarci i dati sulla seriale, ma penso che ci siano anche altri modi per comunicare.

La comunicazione è molto semplice: a me serve sapere lo stato di alcuni bit per attivare degli eventi nel programma windows, a lui servono dei trigger on/off per avviare dei processi sul PLC.

Ho cominciato a fare un po’ di ricerche sul sito Siemens, ma vedo che il campo è molto vasto.

Ecco, più che una soluzione, mi piacerebbe ricevere almeno una dritta su cosa devo cercare, dove devo puntare il mio browser. Collegamento seriale, USB, TCP/IP ?

Aver scoperto questo forum è comunque già un buon inizio.

Questo link già mi sta aiutanto molto:

Grazie in anticipo per il vostro aiuto.
Gianni

Link al commento
Condividi su altri siti


Ciao,

cerca Snap 7 su questo forum: è stato scritto da un'utente del forum, io l'ho usato e devo dire che è strepitoso: non finirò mai di ringraziarlo per averlo scritto !!

L'ho usato con VC++ e MFC e, dopo alcune prove (non più di 4-5 ore), me lo sono praticamente dimenticato: è praticamente trasparente.

Funziona benissimo, è veloce ed è free: cosa vuoi di più ?

Link al commento
Condividi su altri siti

Ciao Drugo,

grazie per la pronta risposta.

Snap7 l'avevo già individuato proprio su questo forum ed ho cominciato ad analizzarlo.

In aggiunta, però, quello che non mi è ancora chiaro è come instaurare uno scambio dati S7<->PC, ossia tramite quali canali fisici.

La CPU dovrebbe essere la 1214, quindi non c'è la porta LAN (però ho capito che forse potremmo prendere anche un 1215).

Il collega programma la CPU usando il proprio laptop (anche se non gli ancora chiesto come), quindi un qualche canale ci sarà.
Come vedi (e me ne scuso) sono proprio all'inizio con l'S7.

Ciao.

Link al commento
Condividi su altri siti

Giuseppe Signorella

La CPU dovrebbe essere la 1214, quindi non c'è la porta LAN

Tutte le CPU della famiglia S7 1200 a partire dalla 1211 sono dotate di porta profilnet. (LAN)

Link al commento
Condividi su altri siti

Aggiungo che Snap7 è un protocollo per Ethernet.

Sulla macchinetta di cui ho preparato il software (tra l'altro abbiamo usato proprio la 1214), abbiamo messo uno switch a 4 porte, così la connessione con il PC è sempre garantita (la 1214 ha una sola porta LAN), mentre se ci si deve collegare con il portatile ci sono ancora 2 porte libere sullo switch.

Se decidi per Snap7, non esitare a chiedere: posso anche inviarti il progetto di test per Snap7; tieni solo a mente che io ho usato un vecchio compilatore (VStudio 6.0) e ho utilizzato VC++ con MFC.

Link al commento
Condividi su altri siti

Drugo, ti ringrazio per la precisazione e disponibilità.
Mi sto guardando la documentazione degli S7 per capire qualcosa in più; mi serve almeno ancora qualche giorno di studio per poter parlarne senza commettere errori da newbie :-)

Se ho ben capito allora con SNAP7 parliamo solo di comunicazione ethernet, quindi è necessaria la connessione via LAN.
La porta LAN sulla 1214 sarebbe quella indicata con Profinet, vero? Nel commento precedente mi ero confuso perchè avevo letto che le 1215 e 1217 avevano 2 porte LAN, quindi credevo che la 1214 non ne avesse. Ma da quanto leggo la profinet è a tutti gli effetti una porta LAN, o sbaglio?

Invece di usare lo switch come hai fatto tu posso collegare il PC e la 1214 alla rete aziendale, così entrambi ricevono un proprio IP e posso poi attaccarmi col la WLAN del portatile ed il WiFi aziendale?
Scusa le domande banali, ma qui con me non ho ancora la 1214 e quindi senza avere l'HW fra le mani e fare un po' esperimenti è difficile capire i concetti.

Se decidi per Snap7, non esitare a chiedere: posso anche inviarti il progetto di test per Snap7; tieni solo a mente che io ho usato un vecchio compilatore (VStudio 6.0) e ho utilizzato VC++ con MFC.

Grazie, se puoi inviarmelo, sarebbe un piacere.
Per VS6 non c'è problema (ho cominciato con VB3, quindi dispongo di tutte le versioni fino ad oggi dell'ambiente di sviluppo MS)

Ciao.

Link al commento
Condividi su altri siti

Giuseppe Signorella

Se ho ben capito allora con SNAP7 parliamo solo di comunicazione ethernet, quindi è necessaria la connessione via LAN

Si, esatto. Snap 7 esclusivamente per comunicazione Ethernet.

leggo la profinet è a tutti gli effetti una porta LAN, o sbaglio?

La profinet è una porta di comunicazione composta dal protocollo TCP/UDP IP + profibus, che come mezzo di comunicazione utilizza l' Ethernet. (la porta LAN)

Se vuoi avere però una rete profinet (performante) In particolar modo nelle applicazioni di tipo real time, devi utilizzare switch e dispositivi di rete concepiti appositamente per il profinet, in quando i normali switch non sono in grado di riconoscere il (transito) di pacchetti profibus e quindi di dare la priorità ad essi.

Link al commento
Condividi su altri siti

Invece di usare lo switch come hai fatto tu posso collegare il PC e la 1214 alla rete aziendale, così entrambi ricevono un proprio IP e posso poi attaccarmi col la WLAN del portatile ed il WiFi aziendale?

Non puoi usare DHCP con il 1200, solo alcune CP (Communication Processor) lo permettono e comunque poi ci sono molte limitazioni sulle connessioni configurabili : i PLC devono lavorare con IP statici.

Inoltre anche se possibile sarebbe scomodissimo, per connetterti al PLC devi conoscere il suo indirizzo e non c'è una risoluzione dei nomi, significherebbe farti "il giro delle sette chiese" ad ogni accensione :smile:.

La soluzione di drugo66 è la migliore, un qualunque switch semirottamato va benissimo, è sempre preferibile separare le reti IT da quelle PLC.

In ogni caso per qualche prova in ufficio puoi assegnare l'indirizzo del PLC ad una sottorete differente ed aggiungere un secondo indirizzo IP (compatibile con quello del PLC) alla scheda wireless, cliccando "avanzate" nella finestra degli indirizzi IP della tua scheda wireless.

Per fare delle prove con Snap7 non hai necessità del PLC fisico, puoi lanciare Serverdemo (un PLC virtuale che ti mette a disposizione 3 DB) sullo stesso PC in cui fai sviluppo al quale puoi connetterti a 127.0.0.1. Per prendere confidenza con le funzioni di trasferimento va benissimo.

Ciao

Davide

Link al commento
Condividi su altri siti

Ciao,

il file di progetto lo trovi

Chiedo venia ma non ho avuto tempo di inserire i commenti, mi sono limitato a scrivere sulla finestra l'IP del PLC, che è comunque possibile cambiare da codice.

Come ho scritto nella descrizione, per questioni di spazio, non ho zippato le cartelle Debug e Release, che dovrebbero essere comunque create quando si compila il tutto.

Buon lavoro

Link al commento
Condividi su altri siti

In ogni caso per qualche prova in ufficio puoi assegnare l'indirizzo del PLC ad una sottorete differente ed aggiungere un secondo indirizzo IP (compatibile con quello del PLC) alla scheda wireless, cliccando "avanzate" nella finestra degli indirizzi IP della tua scheda wireless.

Io pero' ho la necessitá di accedere alla rete aziendale col PC dove gira il mio programma, perchè devo comunicare con il database SAP dell'azienda.

Quindi se devo tenere separate la rete PCL da quella aziendale, se ho capito bene, dovrei procedere in questo modo:

- nel PC ci metto due porte ethernet LAN1 e LAN2

- la LAN1 la collego alla ethernet aziendale con IP assegnato via DHCP o qualunque altra policy di assegnazione usi l'azienda

- la LAN2 la collego allo switch assegnandole un IP fisso di un'altra sottorete a piacere

- il PCL lo collego allo switch assegnandogli un IP fisso della medesima sottorete.

E' corretto?

L'unica cosa che non mi piace è quello di dover aggiungere lo switch e la seconda LAN al PC. Quando l'impianto sarà finito non me ne occuperò più io e vorrei che fosse quanto più semplice possibile.

Anche se a quanto mi pare di capire non ci sono altre soluzioni.

Ciao,

Gianni

Modificato: da gianorione
Link al commento
Condividi su altri siti

Non mi ritengo un esperto, ma quello che dici (che poi è quello che ti hanno consigliato) è come ci comportiamo normalmente noi: il PC lo prendiamo già con 2 porte LAN proprio per questo motivo, tenere separato la rete PLC dalla rete aziendale.

Lo switch è, a conti fatti, un costo irrisorio e serve solo a garantire al softwarista un accesso comodo al PLC (altrimenti dovrebbe tutte le volte sconnettere il PC), contando anche il fatto che senza, non potrebbe testare la comunicazione: se poi, come hai detto, volete usare una CPU con 2 porte, allora il problema non si pone

Link al commento
Condividi su altri siti

il PC lo prendiamo già con 2 porte LAN proprio per questo motivo

ottimo, mi conforta sapere che questa è una procedura standard.

Non è comunque una questione di costi, cerco solo di concepire l'architettura più semplice possibile: penso ad eventuali guasti e parti da sostituire

(ma comunque questo vale tanto per un PCL, che per uno switch o qualunque altro componente elettronico dell'impianto)

se poi, come hai detto, volete usare una CPU con 2 porte, allora il problema non si pone

però se ho ben capito in questo caso dovrei fare:

- LAN1(PC) collegata alla rete aziendale

- LAN2(PC) collegata al Porta1 del PLC (IP fisso ad entrambe le porte)

- Porta2 PLC libera per collegare eventualmente un Laptop per programmare/gestire il PLC (ip fisso)

quindi eviterei lo switch in questo modo (ne ho visti rompersene parecchi, a meno di prendere qualcosa di alto livello)

ti ringrazio ancora per il file e ad entrambi per la disponibilità.

Ciao,

Gianni

Modificato: da gianorione
Link al commento
Condividi su altri siti

Esatto, in questo modo la rete di stabilimento è isolata da quella del/dei PLC anche se c'è fare qualche considerazione sul segmento dei PLC:

  1. La doppia porta della CPU (se non ricordo male) è comunque gestita da uno switch interno, hai un unico IP, quindi se si rompe uno switch è meglio che non si rompa quello della CPU. La sostituzione di uno switch non gestito può essere fatta anche da un elettricista manutentore, per sostituire la CPU ti chiamano alle 3 di notte :lol: (*)
  2. In questo modo esaurisci tutte le porte, nel 99,9999999% dei casi ci sarà un pannello operatore collegato al PLC (sicuramente ethernet, non avrebbe senso altrimenti), dove lo colleghi ? Fai stacca/attacca alla porta del PC programmatore ? e in questo caso il pannello operatore come lo programmi ?

Sono d'accordo che ciò che non metti non si rompe, ma un minimo di agio nella gestione te lo devi concedere ;)

Ciao

(*) Ti chiamano comunque alle 3 di notte, ma almeno gli puoi dire "se vedi le lucette spente, vai a fregare un hub in qualche ufficio".

Modificato: da dan64100
Link al commento
Condividi su altri siti

  • 5 months later...

Salve a tutti,

poco tempo fa ho adottato la libreria Snap7 con grande soddisfazione per realizzare lo scambio dati fra una applicazione C# e una CPU S7-300.

Ora sto provando a comunicare con una cpu S7-1200. La connessione viene accettata MA ricevo solo le info "PLC Order Code" e "PLC Version".

Ogni altra richesta viene rifiutata con uno dei seguenti messaggi:

  • "function refused by CPU (Unknow error)"
  • "CPU: function not available"
  • "CPU: Item not available"

Premetto che nel plc sta girando un programma che ho sviluppato per la gestione di una piccola automazione. Ho istanziato le DB8 e DB9 appositamente per lo scambio dati (sono globali e non ottimizzate)

Con il "clientdemo" del mitico dan64100 ho provato sia a leggere e scivere qualche merker, sia a leggere le DB8 E DB9, ma il isultato è sempre "Item not available".

Ho provato anche il programma VC6 "S71200.EXE" sviluppato dal buon drugo66 appositamente per questa CPU, ma ottengo solo i messaggi di cui sopra.

Quale potrebbe essere il problema?

Milo

Link al commento
Condividi su altri siti

Ciao,

"function refused by CPU (Unknow error)" e "CPU: function not available" non mi sono mai capitate, ma mi sa di una chiamata ad una funzione non prevista per la famiglia S7-1200: verifica bene sul manuale;

"CPU: Item not available" significa semplicemente che il dato che stai leggendo/scrivendo nelle memoria della CPU non esiste: sicuro che hai definito i DB corretti (di solito si tratta di quelli) e che il dato esiste ?

Per l'applicativo che ho scritto io, devi creare tutti i dati riportati nel dialogo (mi sembra di ricordare che li avevo scritti tutti): i merker esistono comunque, ma i DB e i dati in essi contenuti li devi creare tu nella CPU, altrimenti lo Snap7 non li trova e ti torna quell'errore.

P.S.: da regolamento del forum è vietato accodarsi a discussioni esistenti: la prossima volta, apri una discussione nuova e, se lo ritieni necessario, fai riferimento a questa tramite un link.

Link al commento
Condividi su altri siti

OK, mea culpa ...

comunque ho risolto, avevo omesso di impostare i permessi di accesso PUT/GET nelle proprietà della CPU.

Grazie a tutti per l'mpagabile aiuto che mettete a disposizione della collettività.

Milo

Link al commento
Condividi su altri siti

  • 5 years later...

Per caso questa libreria funziona anche su windos Ce?

Dovrei fare uno sviluppo su una pulsantiera con Windows ce Compact framenetwork 3.5

 

Grazie mille

 

 

Link al commento
Condividi su altri siti

Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...