Vai al contenuto

Configurazione modulo I/O remoto Ethernet serie iR

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.

Weintek moduli IR

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.

Screenshot configurazione iR-ETN con EasyRemoteIO

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.

Screenshot set IP su ir_ETN con EasyRemoteIO

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.

Screenshot test Modbus su iR-ETN con EAsyRemoteIO

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]
Was this article helpful?