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 ... 100the functions:
03 || 03hex || Read || Holding Registers <-- This function works in my project
16 || 10hex || Write || Multiple RegistersSo, 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 || FalseAlso, 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) || 12Then I created Local Variable:
Name || Increase_Response_Delay
Initial Value || 3
Retain || False
Write on Change || FalseThis 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 TimeoutSo I still cannot write the value to the register.