Error: "Write of group with index 3 skipped"



  • Hello.

    I would like to write register on Modbus RTU Slave that contain Device Adress.
    But several days in a row I see the same error in Port Monitor "Write of group with index 3 skipped".

    Reading of the Modbus RTU Slave is OK, test registers show to me what they have to.

    Slave device is "Vaisala HUMICAPâ Humidity and Temperature Module HMM170".
    Master device is "UniPi Neuron L513".
    Mervis 2.4.0 (117845).

    Before rewriting the register with Device Adress, I decided to try change Response_Delay.
    According to the manual,

    the register:
    1540 || 0603hex || Response delay || 16-bit integer || Unit: ms || Range: 0 ... 100

    the functions:
    03 || 03hex || Read || Holding Registers <-- This function works in my project
    16 || 10hex || Write || Multiple Registers

    So, first I created a group to read this register and data point to see the actual value. It shows "1" ms. Seems it is a default value.

    According the Modbus protocol driver, I created another group for writing the register. The parameters are:

    Name || 1540_Communication_write
    Groupe type || WriteOnly
    Starting Element || 1540
    Function || F16 Write Multiple Registers
    Quantity of Element || 1
    Write Only On Change || False
    Logical OR over Overlapped || False

    Also, the Data Point was created:

    Name || Response_Delay_w
    Comm. Value Mapped Type || Builtin
    ST Type || int
    Transform || identity
    Enable SWAutogen || True
    Write Offset Gap || 2
    Data Offset (Parser) || 0
    Bit Offset (Parser) || 0
    MultiByte Length (Parser) || 2
    MultiByte Order (Parser) || 12

    Then I created Local Variable:

    Name || Increase_Response_Delay
    Initial Value || 3
    Retain || False
    Write on Change || False

    This Local Variable is connected directly to Global Variable "HumiditySensor_1_Response_Delay_w".
    As for me, Local Variable must send its initial value to Global Variable and as a result change the value of Data Point "Response_Delay_w" and write to Slave device register.

    Problem -->

    I can build and deploy the project successfully. During debugging I see that the Data Point "Response_Delay_w" get the value from Increase_Response_Delay, but the cell of Data Point is painted red (PLC Value in Variable Browser). The value of "Response_Delay_r" does not changed, because in Port monitor there is an error "Write of group with index 3 skipped".

    Is it the problem on a Slave device or am I do something wrong?



  • @Dmytro said in Error: "Write of group with index 3 skipped":

    Write Only On Change || False

    In a previous post was a mistake. Write Only On Change || True
    It causes error "Write of group with index 3 skipped"
    If that parameter has value False, error message in Port monitor disappears.

    Instead of that, Port monitor shows to me another problem:

    15.12.2021 14:37:40.0122 => Send: 240 16 6 3 0 1 2 3 0 201 7
    15.12.2021 14:37:40.0822 Timeout
    15.12.2021 14:37:40.0922 => Send: 240 16 6 3 0 1 2 3 0 201 7
    15.12.2021 14:37:40.1622 Timeout
    15.12.2021 14:37:40.1722 => Send: 240 16 6 3 0 1 2 3 0 201 7
    15.12.2021 14:37:40.2422 Timeout
    15.12.2021 14:37:40.2672 => Send: 240 3 0 0 0 66 208 218
    15.12.2021 14:37:40.3372 Timeout
    15.12.2021 14:37:40.3472 => Send: 240 3 0 0 0 66 208 218
    15.12.2021 14:37:40.3652 <= Recv: 240 16 6 3 0
    15.12.2021 14:37:40.3722 <= Recv: 1 228 96
    15.12.2021 14:37:40.3722 Timeout

    So I still cannot write the value to the register.