Vai al contenuto

Gestione protocollo modbus

Home Forum Controllori SlimLine e Netsyst (LogicLab) Gestione protocollo modbus

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Autore
    Post
  • #35198
    Anonimo
    Inattivo

    E’ possibile utilizzare il protocollo modbus RTU (master o slave) con la cpu simline in 485 ?
    Ci sono degli esempi ?

    #37200
    Sergio Bertana
    Amministratore del forum

    SlimLine supporta il protocollo modbus in modo nativo, il modbus RTU slave è disponibile standard su tutte le porte seriali sia RS232 che RS485 (Nella versione Full RS485).

    La versione Versione Full RS485 dispone anche della porta ethernet ed è possibile accedere con un comune browser alla configurazione sia dei parametri seriali che dell’indirizzo di nodo modbus (Screenshot).

    Se invece vuoi gestire la comunicazione modbus master basta utilizzare l’apposito blocco funzione sModbusRTUMaster (Estratto manuale). L’utilizzo del blocco funzione è estremamente semplice ed è interamente visibile nell’esempio ladder incluso nel manuale.

    L’argomento comunicazione modbus è ampiamente trattato nel forum, e con la funzione Ricerca testo puoi trovare molti argomenti che lo trattano. (Vedi questi posts 1, 2).

    Ho comunque ripreso il programma di esempio ModbusScambioIO (Download programma) che esegue lo scambio I/O logici tra due sistemi SlimLine. L’esempio contiene due progetti, uno da trasferire sul sistema master (Stampa), ed uno da trasferire sul sistema slave (Stampa).

    Come si vede nel progetto master ho semplicemente accodato due chiamate al blocco funzione sModbusRTUMaster, il primo esegue la lettura degli ingressi dal modulo slave (Con il comando 16#01), il secondo esegue la scrittura delle uscite sul modulo slave (Con il comando 16#0F).

    #37225
    Sergio Bertana
    Amministratore del forum

    Il blocco funzione sModbusRTUMaster dalla versione SFW054B100 della libreria ePLCUtyLib, ha cambiato nome diventando ModbusRTUMaster_v1. Il funzionamento è perfettamente analogo alla FB precedente, è stato aggiunto un parametro per la definizione del tempo di attesa dopo l’esecuzione del comando Modbus.

    Nel caso in cui occorra gestire la comunicazione con molti nodi slaves e/o eseguire molti comandi sullo stesso nodo), anche se è possibile semplicemente accodare i diversi blocchi funzione ModbusRTUMaster_v1 (Uno per ogni nodo o funzione) è preferibile realizzare un apposito blocco funzione che gestisce la comunicazione. Questo permette di semplificare il programma e limitare l’uso della memoria dati necessaria.

    Ho realizzato un programma che esegue la lettura degli ingressi e la scrittura delle uscite digitali su di un modulo di I/O remoto TRP-C28M. Nel programma è stato creato un blocco funzione che esegue il comando di lettura ingressi (02 Read Input Status) ed il comando di scrittura uscite (0F: Force Multiple Coils) per un massimo di 16 nodi.

    Viene fornito tutto il codice sorgente in modo da permetterne la modifica per adattarlo alle proprie necessità, stampa programma, download sorgente.

    #37771
    Dario
    Partecipante

    Buongiorno, sto cercando di utilizzare un PLC SlimLine per sviluppare un protocollo di comunicazione. Sul manuale sono disponibili all’utente i registri MX100.0 a MX100.4095. Avrei bisogno di almeno una quantità quadrupla di registri accessibili dall’interfaccia ethernet con il protocolla Modbus Over IP.

    Nelle caratteristiche dello SlimLine sono specificate una memoria dati di 12kbyte per l’utente. Come viene sfruttata dalla CPU ? Sono le variabili designate come “Auto” che in fase di compilazione vengono assegnate automaticamente a aun’area di memoria ? Se comunque lo SlimLine non basti, avete controllori con una memoria per le variabili superiore ?

    #37772
    Sergio Bertana
    Amministratore del forum

    Nella tua domanda non è chiaro se il protocollo è Modbus e se il sistema deve agire da master o da slave. SlimLine dispone di 4 Kb di memoria allocata nella DB100 (Questa è l’unica area accessibile dai comandi Modbus integrati nel sistema operativo).

    In merito alla memoria utente come fai notare giustamente tu vi sono poi altri 8 Kb che vengono utilizzati per allocare le variabili automatiche. Quindi se utilizzi il blocco funzione ModbusSlave puoi gestirti l’accesso ad una tua propria memoria, ed in questo caso puoi allocare un array fino a 8 Kb ed accedervi da Modbus.

    Ma se i registri sono molti di più e qui sinceramente non capisco l’applicazione, è possibile utilizzare il file system andando ad allocare un file nella directory Storage (Fino a 256 Kb). Con le funzioni Sysfseek, Sysfread, Sysfwrite, potrai posizionarti sul file (Come se fosse un indirizzo di memoria e poi leggere e scrivere). Naturalmente dovrai farti un tuo proprio comando di gestione del protocollo, in questo post trovi il programma sorgente di una FB modbus master.

    #38839
    Alberto
    Partecipante

    Sto lavorando con una scheda OEM SlimLIne full RS485 e vorrei collegarmi dalla porta Ethernet con ModBus/TCP. Ho provato a collegarmi con l’indirizzo IP e la porta 502 con un tool tipo Modscan ma il PLC non risponde.

    Leggo che si parla di ModBus over IP che ha una trama diversa dal ModBus/TCP, posso avere indicazioni in proposito ?

    #38840
    Sergio Bertana
    Amministratore del forum

    Ecco lo screenshot di un test eseguito con Modscan. Il protocollo Modbus TCP è diverso dal Modbus RTU, ma utilizzando Modscan se lo imposti per modbus TCP sicuramente genera la trama corretta. Piuttosto hai impostato correttamente gli altri parametri:

    Indirizzo di nodo Modbus deve essere 1.
    Hai eseguito un comando 16#03 Read Holding Register ?
    Che  indirizzo di registro hai usato (Devi usare indirizzi nel range da 40000 a 42047).

    #38841
    Alberto
    Partecipante

    Grazie per le utili informazioni, ora funziona tutto. Avevo impostato correttamente il nodo 1, la lettura 16#03 Read Holding Register ma avevo male interpretato il range indirizzi.

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