Vai al contenuto
PLC Forum


Plc Ethernet Pc - connessione tra plc e pc


kiro83

Messaggi consigliati

Salve a tutti sono alle prime armi con i plc infatti questo e il mio lavoro di tesi, devo creare un drive plc ethernet pc su simens , poiche non so bene se la mia idea e giusta vi diro un po di tutto , voi fate altrettanto scrivendo tutto cio che sapete sulla connessione di plc e pc dal generale allo specifico.

In sostanza devo inviare e ricevere pacchetti dal plc , la mia idea era di creare una connessione tcp/ip col plc e attendere un pacchetto di Acknowledge provenienti dal pc, in sostanza il plc fa da server in attesa del client pc.

Per quanto riguarda la parte programmativa pensavo di implementare una socket di Berkley sul pc e di utilizzare le funzioni send e reciv su S7,la parte del plc se ho capito bene non e troppo complicata poiche S7 con simatic net mette a disposizione tutto quello che serve per creare connessioni la parte pc con le socket di Berkley credo di riuscire a farla, poi chi sà.

Un paio di domande a voi che siete esperti:

Per questo tipo di applicazioni meglio TCP/IP o UDP/IP?

Il codice delle socket di Berkley (c++), va modificato se si passa ad un visual c ?

P.S.

Se inoltre conoscete dove posso trovare un po di manuali su quello che vi ho descritto? potete linkarli per favore

Grazie

Link al commento
Condividi su altri siti


Ciao

Io ho messo in rete un esempio sviluppato in VB6 che utilizza un protocollo messo a disposizione dalla siemens identificato come fetch/write.

Il protocollo fetch/write è documentato in appendice al manuale NCM S7 per Industrial Ethernet e viene indentificato

come "Protocollo compatibile S5" in Accoppiamento con altri sistemi con FETCH/WRITE (infatti nell'header del messaggio c'e S5)

Documento

L'esempio da me postato era pensato a scopo puramente dimostrativo per la possibilità di collegamento, considera che per rendere davvero semplice l'esempio ho utilizzato l'oggetto winsock, nel programmi che utilizzo sugli impianti preferisco le API di windows (basate sui socket da te nominati).

Un alto esempio sullo stesso protocollo era stato reso disponibile da Adriano71 sviluppato in c# per Visual Studio 2005.

Se provi a cercare i messaggi postati da me o da Adriano troverai indicazioni sul protocollo in questione.

Per quanto riguarda la gestione socket "Berkeley" sono superiori al sistema operativo ospitante, ossia: sono molto simili sia in Unix che in Windows (la base è la medesima c'è di mezzo un porting).

Se cerchi documentazione per l'utilizzo in windows ti consiglio questo Link.

Il codice delle socket di Berkley (c++), va modificato se si passa ad un visual c ?

Domanda strana.... io considero che sia l'applicazione ad essere in un ambito visuale o no, per abitudine per i miei protocolli sviluppo codice per la realizzazione di oggetti o DLL che possano essere utilizzati sia in applicazioni visuali che no....

Dovresti avere abbastanza informazioni per realizzare quello che ti serve.

Ciao

BR1

Link al commento
Condividi su altri siti

kiro83,

Il codice delle socket di Berkley (c++), va modificato se si passa ad un visual c ?

Beh, dipende cosa.. di solito non dovrebbe. Quello che a volte non sarebbe portabile sarebbero la gestione degli oggetti e le risorse grafiche legati al sistema operativo. Ma per quello che tu vuoi fare, non avresti grossi probemi.

Link al commento
Condividi su altri siti

Vi ringrazio per le risposte , ma vorrei porvi un altra domanda , se utilizzo fetch e write il lato pc puo non avere programmi simatic installati , perche io preferirei creare un applicazione che non si appoggi su simatic ma piutosto tramite interfaccia (che dovro creare) crei connessione e trasferimento dati, infatti ho pensato di untilizzare send e reciv che se ho capito bene funzionano come il send e il reciv delle normali socket.

Altra domanda se il mio send si trova nel ob1 le risorse che vengono occupate inficiano il corretto funzionamento del plc , inotre con send e piu complesso creare un buffer circolare per risolvere il problema della differenza di velocita tra ciclo del plc e del pc che con fetch e piu semplice, che ne dite?

SEND/RECIV O FETCH/WRITE

Link al commento
Condividi su altri siti

Ciao Kiro83

non vorrei sembrare str********* (diciamo maleducato per autocensura), ma hai provato la funzione "cerca" presente in questo bellissimo sito ?

L'argomento è stato trattato varie volte, a livello di configurazione hardware, a livello di limiti e anche indicando le varie tipologie di connessioni.

Io ti suggerisco una ricerca con chiave "FETCH/WRITE", dopo la lettura dei vari post (molti sono interessanti) penso che ti verrà voglia di provare anche una ricerca con chiave "libnodave".

Questo non per essere kkkkkkkk, ma per farti capire che solo tu puoi decidere quale è la strada migliore per la soluzione del tuo problema/progetto..... magari potrai sempre tornare indietro.

Ciao

BR1

P.S.

Se non trovi nulla posta di nuovo (magari con più informazioni), ti aiuterò volentieri.

Link al commento
Condividi su altri siti

Kiro83,

Altra domanda se il mio send si trova nel ob1 le risorse che vengono occupate inficiano il corretto funzionamento del plc , inotre con send e piu complesso creare un buffer circolare per risolvere il problema della differenza di velocita tra ciclo del plc e del pc che con fetch e piu semplice, che ne dite?

Non ho capito molto quello che vuoi dire.

Comunque, esempio :

 OB1

Network 1:

                UC CP_AG_RECV ( FC10)

Network 2:
                UC FC1
                UC FC2
                UC FC..
                 ..
                 .
Network 3:

                UC CP_AG_SEND ( FC11) 

/////////

 CP_AG_RECV  (FC10)

      CALL  "AG_RECV"
       ID    :=..
       LADDR :=....
       RECV  := ..
       NDR   :=...
       ERROR :=...
       STATUS:=...
       LEN   :=.....

///////////////////////

CP_AG_SEND ( FC11) 

       CALL  "AG_SEND"
       ACT   :=..
       ID    :=..
       LADDR :=..
       SEND  :=...
       LEN   :=..
       DONE  :=..
       ERROR :=..
       STATUS:=..

Modificato: da Savino
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...