Fixed Modbus register access

This commit is contained in:
Matthias Heisig
2024-01-17 11:26:11 +01:00
parent 82826c258a
commit 57987cb19f
24 changed files with 1310 additions and 572 deletions

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
<DUT Name="ST_EMS_MODBUS_INTERFACE" Id="{c26c9ee9-feee-46cf-86e6-45d1a1e6819c}">
<Declaration><![CDATA[// Speicherbereiche, welche über einen kontinuierlichen Registerbereich
// gelesen werden sollen, müssen in einer Struktur mit dem attribut {attribute 'pack_mode' := '1'}
// angelegt werden.
// Der Grund ist, dass der TwinCAT Modbus Server beim zugriff über den ADS
// Server nur die Symbolische erste Adresse anfragt und dann davon ausgeht,
// dass die anderen Register im Speicherbereich hintereinander liegen.
// Bei rein symbolisch angelegten Variablen müss dies nicht der Fall sein und es kommt zu einem
// Fehler beim lesen über die symbolischen grenzen der variablen hinaus.
{attribute 'pack_mode' := '1'}
TYPE ST_EMS_MODBUS_INTERFACE :
STRUCT
// Modbus Registers 10.000 to 10.999
stModbusReg10 : ST_MODBUS_REG_10;
// Modbus Registers 11.000 to 11.999
stModbusReg11 : ST_MODBUS_REG_11;
// Modbus Registers 12.000 to 12.999
stModbusReg12 : ST_MODBUS_REG_12;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>