Fixed Modbus register access
This commit is contained in:
28
PLC/DUTs/Modbus/ST_EMS_MODBUS_INTERFACE.TcDUT
Normal file
28
PLC/DUTs/Modbus/ST_EMS_MODBUS_INTERFACE.TcDUT
Normal 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>
|
||||
Reference in New Issue
Block a user