Per connettersi a dispositivi seriali Modbus RTU via ethernet occorre utilizzare un Gateway Modbus TCP/RTU, esistono sul mercato prodotti stand-alone, come quelli da noi distribuiti nella gamma dei convertitori Ethernet-Seriale. Ma se ad un Gateway desidero connettere in rete RS485 più dispositivi, occorre che il Gateway gestisca il passaggio dell’indirizzo di nodo ma non sempre i convertitori lo gestiscono (Vedi topic).

Visto il costo paragonabile ad un Gateway commerciale del nostro modulo CPU SlimLine, abbiamo realizzato il blocco funzione ModbusTCPGateway che permette di utilizzarlo per realizzare un Gateway Modbus TCP to Modbus RTU (Vedi topic). E se il modulo ha più seriali più FB possono coesistere nel programma permettendo di avre più gateway in un solo modulo.

Ecco un semplice programma in linguaggio FBD che realizza un completo gateway Modbus TCP/RTU.Il FB TCPServer attiva un server in ascolto sulla porta 1000.

Il FB SPort gestisce la porta COMo impostandone i parametri di funzionamento.

Il FB MTCPGw gestisce la conversione del protocollo dal TCP all’RTU. Su FpRTU viene passato lo stream di comunicazione in uscita dal server TCP. Su FpRTU viene passato lo stream di comunicazione in uscita dalla seriale. Il FB è abilitato solo quando vi è una connessione attiva sul server TCP.

L’esempio precedente realizzato in linguaggio grafico FBD rende molto bene l’idea del funzionamento del programma, ma per un programmatore che desideri implementare nel programma altre funzioni è più semplice utilizzare il linguaggio testuale ST. Ecco lo stesso programma realizzato in ST.

Rendo disponibile per il download il progetto ModbusGateway che contiene i due programmi (Uno realizzato in FBD ed uno realizzato in ST). Per poter coesistere i due programmi ho messo in ascolto due porte TCP diverse (La 1000 nel programma in FBD e la 2000 nel programma in ST).

Naturalmente è anche possibile avere più connessioni contemporanee sulla stessa porta in tal caso occorre definire su FB SysTCPServer il numero di connessioni accettate. Passare un array di streams per le varie connessioni e poi istanziare una coppia di FB di gestione porta seriale e ModbusTCPGateway per ogni connessione gestita.

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 22 Novembre 2018