Il modulo di comunicazione I/O remoti su Ethernet, serie iR-ETN di Weintek oltre che ai pannelli serie cMT può essere connesso a qualsiasi dispositivo in grado di gestire il protocollo Modbus TCP costituendo un sistema di periferia decentrata adatto ad ogni applicazione di automazione.
Alimentando il modulo se l’alimentazione è corretta il led rosso (L.V) lampeggia per alcuni istanti e poi si spegne, se la connessione alla rete Ethernet è corretta il led verde (Link) sul connettore RJ45 si accende. Il modulo ha indirizzo di default 192.168.0.212/24 quindi il dispositivo che deve dialogare con il modulo deve avere un indirizzo IP che appartiene alla stessa classe di rete 192.168.0.xxx.Al modulo di comunicazione possono essere connessi uno o più moduli di I/O serie iR per raggiungere il numero di I/O necessari alla propria applicazione.Il modulo è provvisto di due porte RJ45 per la connessione Ethernet in modo da permettere la connessione in cascata con altri moduli di comunicazione e/o altri dispositivi.
Come testare il modulo
Il modo più semplice per testare il modulo è di connetterlo ad un PC ed eseguire il programma EasyRemoteIO (Scaricabile dal ns sito). Dal menù Online->Automatic Scan è possibile eseguire lo scan automatico di tutta la rete, al termine verranno visualizzati tutti i moduli iR-ETN connessi alla rete.Selezionando il modulo desiderato nella finestra Parameter saranno visualizzati tutti i dati identificativi del modulo.Nella finestra Address Map è possibile visualizzare l’indirizzo Modbus dei vari I/O connessi al modulo di comunicazione.
Impostazione indirizzo IP
Dal menù Online->Change IP è possibile modificare l’indirizzo IP del modulo. Impostato il nuovo indirizzo verrà eseguito un reboot del modulo che si riavvierà con l’indirizzo definito.Per riportare il modulo al suo indirizzo di default basterà premere il tasto di reset a modulo acceso per almeno 2 secondi (Il led ENET-ERR lampeggerà). Ora spegnendo il modulo alla prossima accensione si riavvierà con l’indirizzo di default 192.168.0.212.
Test comunicazione Modbus
Dal menù Tools->Modbus è possibile aprire un gestore Modbus che permette di inviare comandi al modulo. Nell’esempio a lato viene inviato un comando di set di tutte 8 le uscite del modulo DM16-P. Per il test è anche possibile utilizzare l’utility Modbus Master di Toolly.
Per un elenco completo di tutti i registri Modbus disponibili fare riferimento al Manuale utente iR-ETN scaricabile dal ns sito.
Esempi
Come utilizzare gli esempi.
Il programma Ptp149 iR-ETN-Comm fornito con LogicLab permette di gestire il modulo dai ns sistemi programmabili SlimLine.
LogicLab (Ptp149, ST_iRETNModbus)
PROGRAM ST_iRETNModbus
VAR
i : UDINT; (* Auxiliary variable *)
LInputs : ARRAY[0..7] OF BOOL; (* Logic inputs *)
LOutputs : ARRAY[0..7] OF BOOL; (* Logic outputs *)
ACData : ARRAY[0..1] OF ACMODBUS_DATA_V3; (* Array command data *)
TCPClient : SysTCPClient; (* TCP client management *)
MMdb : ModbusMaster_v3; (* Modbus master *)
ACMdb : ACModbus_v3; (* Array command modbus *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_iRETNModbus"
// *****************************************************************************
// This program manage the modbus communication with iR-ETN module.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
// Program initializations.
IF (SysFirstLoop) THEN
// TCP client settings.
TCPClient.PeerAdd:=ADR('192.168.0.184'); //Peer address
TCPClient.PeerPort:=502; //Peer port
TCPClient.LocalAdd:=ADR('0.0.0.0'); //Local address
TCPClient.LocalPort:=0; //Local port
TCPClient.FlushTm:=50; //Flush time (mS)
TCPClient.LifeTm:=20; //Life time (S)
TCPClient.RxSize:=128; //Rx buffer size
TCPClient.TxSize:=128; //Tx buffer size
// Modbus master settings.
MMdb.Type:=MODBUS_PROTOCOL#MDB_TCP; //Modbus protocol type
MMdb.Absolute:=FALSE; //Absolute addressing
MMdb.Timeout:=T#1s; //Timeout time
MMdb.Delay:=T#1s; //Delay time
// Array command modbus settings.
ACMdb.ACAdd:=ADR(ACData); //Array command address
ACMdb.ACNr:=SIZEOF(ACData)/SIZEOF(ACData[0]); //Array command number
ACMdb.RTime:=T#10s; //Retry time
// Array command parameter set (Read digital inputs).
ACData[0].Command.0:=TRUE; //Spy On
ACData[0].Command.1:=TRUE; //Absolute addressing
ACData[0].Node:=16#00; //Modbus node
ACData[0].FCode:=16#01; //Modbus function code
ACData[0].Address:=16#0000; //Modbus register address
ACData[0].Points:=8; //Modbus register points
ACData[0].Buffer:=ADR(LInputs); //Memory buffer address
// Array command parameter set (Write digital outputs).
ACData[1].Command.0:=TRUE; //Spy On
ACData[1].Command.1:=TRUE; //Absolute addressing
ACData[1].Node:=16#00; //Modbus node
ACData[1].FCode:=16#0F; //Modbus function code
ACData[1].Address:=16#0000; //Modbus register address
ACData[1].Points:=8; //Modbus register points
ACData[1].Buffer:=ADR(LOutputs); //Memory buffer address
END_IF;
// -------------------------------------------------------------------------
// ARRAY COMMAND MANAGEMENT
// -------------------------------------------------------------------------
// Manage the Modbus communication.
TCPClient(Connect:=TRUE); //TCPClient management
MMdb(File:=TCPClient.File); //Modbus master
ACMdb(MMdb:=ADR(MMdb)); //Array command modbus
// Manage modbus commands.
ACMdb.Enable:=NOT(ACMdb.Done) AND (SysFIsOpen(MMdb.File)); //FB enable
// -------------------------------------------------------------------------
// SIMPLY TEST
// -------------------------------------------------------------------------
// Just to test blink two logic outputs.
LOutputs[0]:=SysClock100;
LOutputs[1]:=NOT(SysClock100);
// [End of file]