Comunicazione modbus tra SlimLine e Inverter
Home › Forum › Programmazione IEC 61131 (LogicLab) › Comunicazione modbus tra SlimLine e Inverter
- Questo topic ha 14 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 3 anni, 4 mesi fa da
Sergio Bertana.
-
AutorePost
-
Marzo 4, 2019 alle 3:44 pm #46707
Alessandro Campodonico
PartecipanteAvrei la necessità di comunicare con 4 inverter schneider ATV12 per dargli qualche comando base, start direzione, riferimento velocità, e prelevare qualche altro dato base, assorbimento, frequenza, allarmi.
La comunicazione dei ATV12 è modbus in RS485, io uso uno SlimLine CPU compact ethernet, che ha una porta TCP/IP e una porta RS232, ho dato un’occhiata sul forum e non so se ho capito bene, ma ci potrebbe essere la possibilità di far fare da convertitore TCP/IP -> Modbus RS485 direttamento allo SlimLine utilizzando varie FB? ho capito bene o sono completamente fuori strada?
In altro modo potrei comunque utilizzare la porta RS232 della CPU però a questo punto sarei obbligato a mettere un convertitore giusto?
Per informazione, utilizzo gia la connessione TCP/IP dello SlimLine per comunicare con un pannellino HMI weintek e con un router.
Marzo 4, 2019 alle 5:34 pm #46756Sergio Bertana
Amministratore del forumIl sistema SlimLine può fare sia da convertitore TCP/Seriale (Topic) che da convertitore Modbus TCP/Modbus RTU (Topic) ma queste due funzionalità nel tuo caso non servono. A quanto mi sembra di capire tu vuoi gestirte l’inverter da programma PLC.
Per fare questo basta istanziare un FB ModbusMaster e gestire i comandi verso gli inverters (Puoi riferirti a questo topic). Certo era meglio utilizzare un modulo CPU MPS054A1*0 che ha già la porta seriale RS485 isolata, ma se hai il modello compact nella gamma dei convertitori Seriale/Seriale puoi trovare il convertitore che fà per te.
In merito alla connessione TCP puoi usarla per connetterti con tutto quello che vuoi, gli unici limiti sono dati dalla quantità di sockets che il sistema può gestire (Ad oggi sono 32) e dall’utilizzo della memoria rilocabile RMalloc. Ogni socket utilizza la quantità di memoria definita nella sua creazione.
Aprile 17, 2019 alle 12:04 pm #47310Alessandro Campodonico
PartecipanteGrazie per i chiarimenti, avrei ancora una domanda, per poter gestire tutti e 4 gli inverter mi servirebbero 4 convertitori seriale/seriale? O ne basta uno?
Nel caso ne bastasse uno come andrebbero collegati?
Aprile 17, 2019 alle 12:09 pm #47314Sergio Bertana
Amministratore del forumLa caretteristica principale del protocollo Modbus è proprio quella di poter operare in multidrop, cioè di avere un sistema master che su una connessione a due fili dialoga con uno o più sistemi slave, ogni sistema slave avrà un suo proprio indirizzo (Definito nodo Modbus).
Quindi nel tuo caso dovrai impostare un indirizzo diverso (Nodo Modbus) per ogni inverter e poi potrai con una sola linea seriale RS485 dialogare con tutti. La connessione è semplicemente in parallelo, i due fili sono parallelati su tutti i dispositivi (Guarda questa nota applicativa).
Aprile 18, 2019 alle 12:02 pm #47318Alessandro Campodonico
PartecipantePerfetto, Gentilissimo come al solito. Ultima domandina:) invece utilizzando un convertitore RS485/ethernet tcp/ip e collegando gli inverter in tcp/ip all’elsist potrei avere il vantaggio di poter accedere direttamente agli inverter magari tramite easyaccess? cosi magari sarebbe possibile cambiare i parametri a distanza ?
Aprile 18, 2019 alle 12:11 pm #47320Sergio Bertana
Amministratore del forumUn pò di confusione… Intanto se utilizzi un convertitore Ethernet/seriale per dialogare con gli inverter e se vuoi accedere allo stesso da HMI via EasyAccess devi “sganciarlo” dallo SlimLine, altrimenti il ModbusMaster dello SlimLine ti occupa la comunicazione.
Molto, ma molto, molto meglio è utilizzare la porta seriale delo SlimLine per dialogare con gli inveter, poi istanzi sullo SlimLine un server TCP su una porta TCP (Ipotizziamo la porta 1000). Quando ti connetti da Ethernet alla porta 1000 dello SlimLine (Lo puoi fare trami EasyAccess), da programma puoi disabilitare il FB ModbusMaster ed abilitare il FB DataStreamExch o ModbusTCPGateway per instradare i dati dalla connessione Ethernet alla porta seriale a cui fanno capo gli inverters (Forum).
Novembre 27, 2020 alle 8:09 am #58344Alessandro Campodonico
PartecipanteStò utilizzando con ottimi risultati il FB Modbus Master per comunicare con 5 inverter. Però in modo apparentemente casuale il FB mi riporta un errore che spiandolo con Toolly è 10007506, se non ho capito male indica un errore nella ricezione dati, questo errore comunque non interrompe la comunicazione, che prosegue senza problemi. L’errore viene fuori a random un pò su tutti gli inverter più o meno ogni 2/4 minuti, ecco il report della console di spionaggio
03:23:03 (.310)|Tx|02 03 1C 20 00 01 82 63 03:23:03 (.011)|Rx|02 03 02 00 03:23:03 (.002)|Rx|Error:10007606, On Case:212, Back:51 ... 03:23:05 (.310)|Tx|03 03 1C 20 00 01 83 B2 03:23:05 (.016)|Rx|02 03 02 00 05 01 B7
Si vede chiaramente che nella risposta mancano dei caratteri ma non capisco il motivo. La configurazione di Baud rate ecc direi che è corretta altrimenti penso non comunicherebbe mai, invece riesco a comandare gli inverter.
Il timeout è 100mS, il delay è 10mS (ma anche portandolo a valori più alti 300mS) il problema si presenta lo stesso. Qualche Consiglio ?
Novembre 27, 2020 alle 8:21 am #58347Sergio Bertana
Amministratore del forumCome dici tu e come si vede dal report di spionaggio si perdono caratteri della risposta, nel FB ModbusMaster occorre definire il parametro IFTime che indica il tempo di interframe. Nel protocollo RTU i pacchetti sono separati da un tempo che varia in funzione del baud rate, quindi occorre impostarlo correttamente.
Se il dispositivo che risponde per un qualche motivo inserisce una pausa nella risposta, il FB lo interpreta come la fine del pacchetto e passa a controllarlo, trovandolo in errore.
Il FB ModbusMaster_v1 è stato completamente ridisegnato, è stato eliminato il controllo sul tempo di interframe, il pacchetto viene completamente sniffato e verificato rendendolo indipendente dai tempi.
Non mi dici che FB utilizzi, ti consiglio di passare alla versione v1 e di verificarne il funzionamento, attenzione che nel passaggio alla v1 abbiamo cambiato la definizione d ei tempi di timeout e delay, ora sono valori REAL espressi in secondi.
Novembre 27, 2020 alle 11:34 am #58348Alessandro Campodonico
PartecipanteGrazie della veloce risposta, volevo provare ad aggiornare la libreria con il FB ModbusMaster_v1 dove lo trovo?
Novembre 27, 2020 alle 11:37 am #58350Sergio Bertana
Amministratore del forumNovembre 27, 2020 alle 2:04 pm #58352Alessandro Campodonico
PartecipantePerfetto pare che aggiornando al ModbusMaster_v1 il problema sia sparito.
Sempre molto disponibili e utili come sempre!
Febbraio 18, 2021 alle 8:24 am #59081Alessandro Campodonico
PartecipanteGirovagando nel forum sono venuto a conoscenza di questo FB ACModbus, considerando che in determinate strumentazioni utilizzo i vostri sistemi per comunicare via Modbus RS485 con 5 Inverter, mi piacerebbe avere qualche info in piu su questa FB che presumo sia nata recentemente.
Se non ho capito male viene “comodo” usarla quando si ha necessita di leggere registri non consecutivi su più Device, corretto?
In che modo migliora la comunicazione? L’utilizzo di questa FB potrebbe migliorare le performance della comunicazione e quindi anche la velocita?
Grazie mille per le delucidazioni
Febbraio 18, 2021 alle 8:33 am #59086Sergio Bertana
Amministratore del forumCome hai detto giustamente tu il FB ACModbus, Array command Modbus, è nato proprio per facilitare la comunicazione con dispositivi Modbus permettendo di definire i comandi da eseguire tramite un array di strutture di tipo ACMODBUS_DATA.
L’utilizzo della FB semplifica sicuramente la scrittura dei programmi in quanto si occupa di tutte le operazioni di scheduling dei comandi ottimizzando il passaggio da un comando all’altro, proprio con l’obbiettivo di ottenere il meglio delle prestazioni possibili.
Ma se chi ha scritto un programma in ST utilizzando il FB ModbusMaster schedulando opportunamente i comandi ha già attuato tutte le possibili strategie per minimizzare i tempi ha già ottenuto il massimo delle prestazioni e quindi anche la FB ACModbus non potrà fare di più.
Novembre 22, 2021 alle 8:12 am #62156AndreaT.
PartecipanteScusate non riesco a trovare nella libreria eLLabMdbDevsLib.plclib il blocco funzione ModbusMaster.
Novembre 22, 2021 alle 8:21 am #62167Sergio Bertana
Amministratore del forumNon so che versione della libreria tu abbia, ma se scarichi dal sito l’ultima versione trovi sicuramente il FB di gestione Modbus master.
Ora si chiama ModbusMaster_v1, chi ha dimestichezza con le nostre librerie conosce che ogni volta che in un oggetto di libreria (Funzione o FB) vengono modificati i parametri di I/O viene cambiato anche il nome dell’oggetto aggiungendo una versione, come in questo caso “_v1“.
Se in un vecchio progetto si è utilizzato un oggetto precedente esempio ModbuMaster è possibile recuperarlo dalla libreria eLLabObsoleteLib.
Inutile dire che in caso di revisione di un vecchio progetto converrebbe comunque utilizzare sempre le ultime versioni disponibili.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.