paolo1985 Inserito: 3 marzo 2009 Segnala Inserito: 3 marzo 2009 Ciao a tutti.Io sono un programmatore in c++, per motivi di lavoro devo fare un programma su pc in modo che comunichi via TCP-IP con un PLC (Telemecanique Modicon M340) ho letto per internet che sipuo usare il protocollo Modbus, ho trovato molte guide per internet e nel sito del produttore, ma non spiegano bene come funziona il protocollo ho come collegarlo.Nel programma (fatto in borland c++ 5) ho messo un TClientSocket in modo che si collega al plc (ip 129.0.0.1 porta 502), fin qua sembra che vada tutto bene perche lui trova la connessione, pero quando li invioun buffer ad esempio "m_EventOnSocket(void )" o "GlobalState" in toglie la connessione al plc, i codici che ho messo sarebbero quelli del protocollo modbus.Qualcuno mi protrebbe aiutare come fare un collegamento al plc e dirmi come fare a inviare il codice in modo da utilizzare il plc dal PC....Grazie in anticipo...
paolo1985 Inserita: 3 marzo 2009 Autore Segnala Inserita: 3 marzo 2009 scusate mi sta sorgendo un dubbio.... ma nessuno mi risponde forse perchè non sono stato chiaro?
biros66 Inserita: 3 marzo 2009 Segnala Inserita: 3 marzo 2009 http://www.plcforum.it/portale/index.php?act=up_dw_filepdf nmodbus in Vbasic , funziona, puoi prendere spunto da li
raggio alfa Inserita: 3 marzo 2009 Segnala Inserita: 3 marzo 2009 Ho avuto grossi problemi di comunicazione pc-zelio con il protocollo modbus, poi finalmente li ho risolti.Ho utilizzato visual basic ma non credo sia una questione di linguaggio. Se ti interessa posso fornirti i dettagliciao
paolo1985 Inserita: 6 marzo 2009 Autore Segnala Inserita: 6 marzo 2009 Si mi interessa....Poi nel frattempo per internet ho trovato una libreria ModbusDriver ( www.modbusdriver.com ), ho scaricato il DEMO e ho visto che riuscivo a comunicare e a scrivere su plc,ovviamente essendo una versione demo ho delle limitazioni...Prima di comprare il pacchetto qualcuno mi puo dire se ci sono altri oggetti ho librerie migliori ho prograsmmi gia fatti?
paolo1985 Inserita: 6 marzo 2009 Autore Segnala Inserita: 6 marzo 2009 Si mi interessa....Poi nel frattempo per internet ho trovato una libreria ModbusDriver ( www.modbusdriver.com ), ho scaricato il DEMO e ho visto che riuscivo a comunicare e a scrivere su plc,ovviamente essendo una versione demo ho delle limitazioni...Prima di comprare il pacchetto qualcuno mi puo dire se ci sono altri oggetti ho librerie migliori ho prograsmmi gia fatti?
raggio alfa Inserita: 7 marzo 2009 Segnala Inserita: 7 marzo 2009 Ho utilizzato un software gratuito reperito su www.it-lang-vb.net (inserisci in "ricerca rapida" in alto a destra la parola chiave "modbus" e potrai scaricare il software in visual basic). Per un programmatore in c++ credo sia semplice estrarre le routine che realizzano le varie funzioni modbus.In "readme" trovi utili indicazioni sul protocollo modbus.Ho realizzato una applicazione con lo zelio con estensione SR3 MBU01BD e, dopo lungo penare in tentativi alla cieca, ho scoperto che il sistema non segue rigorosamente il protocollo modbus. Per essere chiari il protocollo prevede:- Il pc (master della comunicazione modbus) invia un comando di lettura costituito da un certo numero di byte il cui contenuto è dettagliatamente descritto nel protocollo- il plc (slave della comunicazione modbus) risponde con byte che sono ancora descritti nel protocollo.In realtà la il messaggio di risposta del mio sistema E' SEMPRE PRECEDUTO DALLA RIPETIZIONE DEL MESSAGGIO DI INTERROGAZIONE. Prima di comprendere questo (che non è scritto da nessuna parte nè nel protocollo modbus nè nelle caratteristiche dei componenti utilizzati) sono stato costretto a molte prove. Immagina dover lavorare su caratteri esadecimali senza sapere cosa si sta cercando.Ti suggerisco di leggere attentamente il protocollo modbus.ciao e buon lavoro
alfiosca Inserita: 8 marzo 2009 Segnala Inserita: 8 marzo 2009 Complimenti raggio alfaRiesci a risolvere ogni problema e dai anche degli ottimi suggerimenti.Ciao Alfio
biros66 Inserita: 8 marzo 2009 Segnala Inserita: 8 marzo 2009 caro raggio alfa, se come dici, verificherò a breve, il modulo modbus slave dello zelio non è "molto modbus" ma diciamo "modbus naif", allora devi spiegarmi un paio di cose:1 - se il modulo risponde alla tua interrogazione con la replica di quanto gli chiedi, tutto ciò è facilmente identificabile, la trama dovrebbe iniziare in questa maniera: 0303xxxxxxx che vuole dire 03 (ad esempio slave n.ro 3) 03 (codice richiesta 03 - holding register) e quindi il resto viene di conseguenza.2 - mi spieghi come fanno a funzionare i vari pannelli operatore che possono essere collegati al modulo dello zelio, selezionando come protocollo il MODBUS STANDARD?Facci sapere, siamo curiosi
biros66 Inserita: 8 marzo 2009 Segnala Inserita: 8 marzo 2009 In realtà la il messaggio di risposta del mio sistema E' SEMPRE PRECEDUTO DALLA RIPETIZIONE DEL MESSAGGIO DI INTERROGAZIONE. Prima di comprendere questo (che non è scritto da nessuna parte nè nel protocollo modbus nè nelle caratteristiche dei componenti utilizzati) sono stato costretto a molte prove. Immagina dover lavorare su caratteri esadecimali senza sapere cosa si sta cercandoTe lo faccio sapere io, ho provato:tutti i device modbus comunicano in questa maniera:domanda: -----------> nrslave - cod richiesta - id dato da leggere - len dati - crcrisposta: ------------> nrslave - cod richiesta - num bytes letti - valore 1a word dati - .............. - valore ultima word dati - crcquindi il file modbus master in vb, funziona bene!!in tutti i manuali MODBUS è illustrata la trama della comunicazione B)
raggio alfa Inserita: 10 marzo 2009 Segnala Inserita: 10 marzo 2009 Caro biros66,per avere la risposta che dici tu (che poi è quella del protocollo modbus), ho dovuto shiftare all'indietro di 8 posti l'array di caratteri di risposta. In questi 8 caratteri è contenuto esattamente il messaggio di domanda per la funzione 03.Solo in tal modo la comunicazione, fatta con l'ardware ed il software che ho decsritto in precedenza, funziona correttamente.Non so il perchè.
biros66 Inserita: 10 marzo 2009 Segnala Inserita: 10 marzo 2009 (modificato) è una cosa abbastanza normale, i dati ti arrivano "girati" di 8 byte, dipende da come è costruita la "richiesta" Modificato: 10 marzo 2009 da biros66
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