kiro83 Inserito: 23 marzo 2009 Segnala Share Inserito: 23 marzo 2009 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 favoreGrazie Link al commento Condividi su altri siti More sharing options...
kiro83 Inserita: 23 marzo 2009 Autore Segnala Share Inserita: 23 marzo 2009 Un ulteriore domanda le socket di Berkeley sono solo per unix o anche per windows ?Ancora grazie Link al commento Condividi su altri siti More sharing options...
Bruno Inserita: 30 marzo 2009 Segnala Share Inserita: 30 marzo 2009 CiaoIo 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 indentificatocome "Protocollo compatibile S5" in Accoppiamento con altri sistemi con FETCH/WRITE (infatti nell'header del messaggio c'e S5)DocumentoL'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 More sharing options...
Savino Inserita: 30 marzo 2009 Segnala Share Inserita: 30 marzo 2009 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 More sharing options...
kiro83 Inserita: 30 marzo 2009 Autore Segnala Share Inserita: 30 marzo 2009 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 More sharing options...
Bruno Inserita: 30 marzo 2009 Segnala Share Inserita: 30 marzo 2009 Ciao Kiro83non 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.CiaoBR1P.S.Se non trovi nulla posta di nuovo (magari con più informazioni), ti aiuterò volentieri. Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 30 marzo 2009 Segnala Share Inserita: 30 marzo 2009 (modificato) 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: 30 marzo 2009 da Savino Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora