Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Timeout Error in Modbus Communication with WAGO PFC200 and iEM2050 Meter using 750-652 Module

smeitink
2024-02-24
2024-04-07
  • smeitink - 2024-02-24

    Hi all,

    I'm looking for help with an issue I've come across while trying to facilitate Modbus communication between a WAGO PFC200 PLC using a 750-652 communication module and an iEM2050 Series Single Phase Energy Meter.

    I believe to have everything wired and setup correcty, but I keep running into a "Error time out" message, and by now I don't really know what else to try.

    My setup is as follows: A PFC200 Wago PLC, which has 2 750-652 Serial Interfaces extension modules connected to its field bus. I'm using one of these to talk to a Schneider iEM2050 - kWh-meter over modbus.

    I have connected terminal 23 (A) of the iEM2050 to connector 6 (A) on the 750-652. I have connected terminal 24 (B) of the iEM2050 to connector 2 (B) of the 750-652. I'm using 200mm of twisted together wires to connected them both, and I have placed a 120 ohm resistor between A and B at both ends. I've attached relevant pinout images to this post.

    I then wrote a simple program that configures the Mobus port, as per the datasheet of the iEM2050. You can find an image of the relavent page attached to this post too.

    This is my program:

    PROGRAM PLC_PRG
    
    VAR
        Master: FbMbMasterSerial;
        xIsConnected: BOOL;
        xError: BOOL;   
        iIndex: INT := 1;
        xTrigger: BOOL;
    
        utQuery : typMbQuery := (
                            bUnitId := 1,               // The Modbus unit or slave address
                            bFunctionCode := 4,         // Function code for reading input registers
                            uiReadAddress := 1829,        // adress for the Power on off counter 
                            uiReadQuantity := 1        // Quantity of registers to read 
                            );
        iStep: INT;
        oStatusModbus: WagoSysErrorBase.FbResult;
        utResponseModbus: typMbResponse;
        xConnect: BOOL := FALSE;
        delayTimer: TON;
    END_VAR
    
    Master(
        xConnect:= xConnect, 
        I_Port:= _750_652_24_1, 
        udiBaudrate:= 9600, 
        usiDataBits:= 8, 
        eParity:= WagoTypesCom.eTTYParity.Even, 
        eStopBits:= WagoTypesCom.eTTYStopBits.One, 
        eHandshake:= WagoTypesCom.eTTYHandshake.None, 
        ePhysical:= WagoTypesCom.eTTYPhysicalLayer.RS485_HalfDuplex, 
        xIsConnected=> xIsConnected, 
        xError=> xError, 
        oStatus=> oStatusModbus, 
        eFrameType:= WagoAppPlcModbus.eMbFrameType.RTU, 
        tTimeOut:= T#5S, 
        utQuery:= utQuery, 
        xTrigger:= xTrigger, 
        utResponse:= utResponseModbus);
    
    delayTimer(IN := TRUE, PT := T#3S);
    
    // Use the Q output of the timer to set xConnect after the delay
    IF delayTimer.Q THEN
        xConnect := TRUE;
    END_IF
    
    CASE iStep OF
        0: //Wacht totdat de master de poort geopend heeft
            IF xIsConnected THEN
                iStep := 1;
            END_IF
        1: //Stuur request naar de slave
            xTrigger := TRUE;
            iStep := 2;
        2: //Wacht totdat de master klaar is met het afhandelen van de request
            IF NOT xTrigger THEN
                iStep := 3;
            END_IF
    END_CASE
    

    The TON delay before opening the port is due to a an error I encountered when opening it straight away. This seems to be a bug, as described here. However, the TON solved that particular issue.

    I tried reading multiple registers, but like I said, I still always end up with the "Error time out".

    What else can I test or try at this point?

     
    • dawidr - 2024-04-07

      Did you manage to solve the problem with time out?
      I got the same issue and I've no idea what I'm doing wrong.

       
    • dawidr - 2024-04-07

      Did you manage to solve the problem with time out?
      I got the same issue and I've no idea what I'm doing wrong.

       
    • dawidr - 2024-04-07
       

      Last edit: dawidr 2024-04-07
  • TimvH

    TimvH - 2024-02-27

    I'm not sure, but maybe you have to configure the 750-652 first with the WAGO-IO-CHECK software to set it in RS485 mode?

     

Log in to post a comment.