Gestione protocollo modbus
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Gestione protocollo modbus
- Questo topic ha 7 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 10 anni, 1 mese fa da
Alberto.
-
AutorePost
-
Aprile 10, 2012 alle 7:33 am #35198
Anonimo
InattivoE’ possibile utilizzare il protocollo modbus RTU (master o slave) con la cpu simline in 485 ?
Ci sono degli esempi ?Aprile 10, 2012 alle 8:00 am #37200Sergio Bertana
Amministratore del forumSlimLine 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).
Aprile 20, 2012 alle 12:46 pm #37225Sergio Bertana
Amministratore del forumIl 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.
Settembre 13, 2013 alle 11:47 am #37771Dario
PartecipanteBuongiorno, 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 ?
Settembre 13, 2013 alle 2:12 pm #37772Sergio Bertana
Amministratore del forumNella 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.
Marzo 22, 2015 alle 6:07 pm #38839Alberto
PartecipanteSto 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 ?
Marzo 23, 2015 alle 7:23 am #38840Sergio Bertana
Amministratore del forumEcco 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).Marzo 23, 2015 alle 10:16 am #38841Alberto
PartecipanteGrazie 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.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.