Vai al contenuto
PLC Forum


Comunicazione Pc E Modicon M340


paolo1985

Messaggi consigliati

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 si

puo 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 invio

un 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...

Link al commento
Condividi su altri siti


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 dettagli

ciao

Link al commento
Condividi su altri siti

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?

Link al commento
Condividi su altri siti

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?

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Te lo faccio sapere io, ho provato:

tutti i device modbus comunicano in questa maniera:

domanda: -----------> nrslave - cod richiesta - id dato da leggere - len dati - crc

risposta: ------------> nrslave - cod richiesta - num bytes letti - valore 1a word dati - .............. - valore ultima word dati - crc

quindi il file modbus master in vb, funziona bene!!

in tutti i manuali MODBUS è illustrata la trama della comunicazione

B)B) B)

Link al commento
Condividi su altri siti

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è.

Link al commento
Condividi su altri siti

è una cosa abbastanza normale, i dati ti arrivano "girati" di 8 byte, dipende da come è costruita la "richiesta"

Modificato: da biros66
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...