Davide.Paio Inserito: 27 dicembre 2022 Segnala Inserito: 27 dicembre 2022 Buongiorno a tutti, ho un leggero problemino di comunicazione/configurazione con il Modbus TCP/IP. Setup: CPU S7-1200 1214C DC/DC/DC HMI: WEINTEK CMT3072 INVERTER: G120C MULTIMETRO: NEMO 96HDLe ESPANSIONE ETHERNET MULTIMETRO: IF96015 SOFTWARE: TIA v17 Ho seguito le istruzioni per configurare il multimetro e l'espansione e fin qua quasi tutto ok. L'unica pecca è che non vi è specificato il tipo CLIENT/SERVER, quindi ho testato entrambi nella CPU. ISTRUZIONE CLIENT SU S7-1200 ISTRUZIONE SERVER SU S7-1200 DATA ARRAY Questi sono alcuni valori che dovrei leggere dal multimetro: Provando a lanciare il tutto la variabile STATUS cambia stato diventando 16#7006, secondo il manuale di Siemens di quelle istanze significa che sta leggendo i dati ma l'array rimane sempre vuoto. Cosa sto sbagliando? Heeelp PLS
Mattia Spoldi Inserita: 28 dicembre 2022 Segnala Inserita: 28 dicembre 2022 ho dato un'occhio al volo, MB_Server non ti serve, serve solo se qualcuno deve leggere dei dati del tuo plc via mb, se vuoi leggerli tu da qualche dispositivo devi usare la MB_client primo errore che ho visto è che il req è forzato alto, il blocco lavora sul fronte, quindi se devi fare una lettura ciclica devi farlo clockare il secondo errore potrebbe essere che leggi dal holding register sbagliato, a naso direi che devi cominciare a leggere dal hr 40000(dec) + 0x301(hex) terzo errore, stai provando a leggere dei dati di tipo UD_WORD e dichiari l'array di tipo word, io lo dichiarerei di tipo UDINT. prova così
Davide.Paio Inserita: 1 gennaio 2023 Autore Segnala Inserita: 1 gennaio 2023 Il 28/12/2022 alle 18:54 , Mattia Spoldi ha scritto: ho dato un'occhio al volo, MB_Server non ti serve, serve solo se qualcuno deve leggere dei dati del tuo plc via mb, se vuoi leggerli tu da qualche dispositivo devi usare la MB_client primo errore che ho visto è che il req è forzato alto, il blocco lavora sul fronte, quindi se devi fare una lettura ciclica devi farlo clockare il secondo errore potrebbe essere che leggi dal holding register sbagliato, a naso direi che devi cominciare a leggere dal hr 40000(dec) + 0x301(hex) terzo errore, stai provando a leggere dei dati di tipo UD_WORD e dichiari l'array di tipo word, io lo dichiarerei di tipo UDINT. prova così Grazie per la risposta, domani provo ad utilizzare solamente MB_Client e gli aggiungo un clock, il bit REQ deve rimanere alto per qualche secondo mi basta un semplice impulso? Per quanto riguarda l'holding register mi basta convertire 0x301(hex) in valore DEC (769) e sommarlo a 40000, diventado così 40769? Corretto? Il 28/12/2022 alle 20:42 , Yiogo ha scritto: è sbagliato provare prima con un plc, risolvi prima i problemi di comunicazione con un client modbus da pc, una volta che ti sei chiarito tutto passi al plc Riusciresti a consigliarmene 1? Grazie
Davide.Paio Inserita: 6 gennaio 2023 Autore Segnala Inserita: 6 gennaio 2023 Il 3/1/2023 alle 08:39 , Yiogo ha scritto: https://store.chipkin.com/products/tools/cas-modbus-scanner Mi da errore; Could not setup TCP Connection
Davide.Paio Inserita: 6 gennaio 2023 Autore Segnala Inserita: 6 gennaio 2023 Il 28/12/2022 alle 18:54 , Mattia Spoldi ha scritto: ho dato un'occhio al volo, MB_Server non ti serve, serve solo se qualcuno deve leggere dei dati del tuo plc via mb, se vuoi leggerli tu da qualche dispositivo devi usare la MB_client primo errore che ho visto è che il req è forzato alto, il blocco lavora sul fronte, quindi se devi fare una lettura ciclica devi farlo clockare il secondo errore potrebbe essere che leggi dal holding register sbagliato, a naso direi che devi cominciare a leggere dal hr 40000(dec) + 0x301(hex) terzo errore, stai provando a leggere dei dati di tipo UD_WORD e dichiari l'array di tipo word, io lo dichiarerei di tipo UDINT. prova così Ho provato a effettuare le modifiche che mi hai proposto ma nulla in merito. Ho provato anche a cambiare MB_MODE in 104 ma o si blocca nella lettura dei dati oppure mi dice che un' altra istanza modbus è in corso. Ho cambiato l'array in DInt, holder register start a 40769 oppure solamente 769 ma non legge niente. MB_DATA_LENGHT ho provato anche ad abbasare questo arrivando a portalo a 1 ma la faccenda non cambia. I'm sad
Mattia Spoldi Inserita: 8 gennaio 2023 Segnala Inserita: 8 gennaio 2023 secondo me, i valori del multimetro che devi leggere, non sono negli holding register, ma devi "pescarli" da qualche altra parte, a naso direi dagli ingressi, ma senza manuale del multimetro ci si fa poco.
Davide.Paio Inserita: 10 gennaio 2023 Autore Segnala Inserita: 10 gennaio 2023 Il 8/1/2023 alle 10:01 , Mattia Spoldi ha scritto: secondo me, i valori del multimetro che devi leggere, non sono negli holding register, ma devi "pescarli" da qualche altra parte, a naso direi dagli ingressi, ma senza manuale del multimetro ci si fa poco. questo è il link con il manuale degli indirizzi: https://www.imeitaly.com/wp-content/uploads/technical-sheets/PR106.pdf. Provando con il tasto cerca non viene neanche menzionato l'holding register
Mattia Spoldi Inserita: 11 gennaio 2023 Segnala Inserita: 11 gennaio 2023 il manuale dice che devi leggere con il codice funzione modbus 0x03(pag 7), il manuale di siemens dice che per il codice funzione 0x03, devi usare o il mb_mode a 0 o a 103, la differenza(credo) è come vengono interpretati gli indirizzi, con 0 parti a leggere dal famoso 40001, mentre col 103 parti dal registro 0. io proverei con mb_mode a 0 e come indirizzo 40001 + 769 mb_mode a 103 e come indirizzo 769 per il parametro mb_Data_len, non riesco bene a capire come viene gestito, il manuale siemens parla di inserire il numero di registri che vai a leggere, il protocollo modbus specifica che i registri sono a 16 bit, nel caso del tuo strumento ti invia dati a 32 bit, quindi secondo me, tu devi leggere 6 registri del tuo strumento, ma siemens li vuole gestiti come 12 registri, quindi, sempre secondo me, dovresti inserire 12 per l'array di destinazione, io farei (almeno per incominciare a provare) un'array di 100 elementi di tipo udint o dword, poi una volta capito il giochino, lo riduci alle sole (spero) 6 che ti servono. Ultimo ma non ultimo, quando cambi il mb_mode con la cpu in run, il blocco mb_client, si incasina, se stai facendo delle prove con impianti in produzione, prima di cambiarlo, blocca il req e alza il disconnect, se stai facendo prove a banco, fai uno stop-run della cpu che fai prima. Alla mal parata, ti consiglio di recuperare un software di test per il modbus e provare prima con quello, escludi il plc e fai tutto da pc, una volta capito come ti risponde lo strumento, gli vai dietro con il plc.
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