Vai al contenuto

Comunicazione modbus tra SlimLine e Inverter

Home Forum Programmazione IEC 61131 (LogicLab) Comunicazione modbus tra SlimLine e Inverter

Stai visualizzando 15 post - dal 1 a 15 (di 15 totali)
  • Autore
    Post
  • #46707

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

    #46756
    Sergio Bertana
    Amministratore del forum

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

    #47310

    Grazie 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?

    #47314
    Sergio Bertana
    Amministratore del forum

    La 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).

    #47318

    Perfetto, 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 ?

    #47320
    Sergio Bertana
    Amministratore del forum

    Un 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).

    #58344

    Stò 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 ?

    #58347
    Sergio Bertana
    Amministratore del forum

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

    #58348

    Grazie della veloce risposta, volevo provare ad aggiornare la libreria con il FB ModbusMaster_v1 dove lo trovo?

    #58350
    Sergio Bertana
    Amministratore del forum

    Come vedi dal manuale si trova nella libreria eLLabMdbDevsLib, devi eseguirne il download.

    #58352

    Perfetto pare che aggiornando al ModbusMaster_v1 il problema sia sparito.

    Sempre molto disponibili e utili come sempre!

    #59081

    Girovagando 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

    #59086
    Sergio Bertana
    Amministratore del forum

    Come 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ù.

    #62156
    AndreaT.
    Partecipante

    Scusate non riesco a trovare nella libreria eLLabMdbDevsLib.plclib il blocco funzione ModbusMaster.

    #62167
    Sergio Bertana
    Amministratore del forum

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

Stai visualizzando 15 post - dal 1 a 15 (di 15 totali)
  • Devi essere connesso per rispondere a questo topic.