Fixed Modbus register access
This commit is contained in:
28
PLC/DUTs/Modbus/HoldingRegisters/ST_MODBUS_REG_10.TcDUT
Normal file
28
PLC/DUTs/Modbus/HoldingRegisters/ST_MODBUS_REG_10.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_MODBUS_REG_10" Id="{0c25ea41-552d-4ad4-8369-cc4ac1877b46}">
|
||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||
TYPE ST_MODBUS_REG_10 :
|
||||
STRUCT
|
||||
// Addr: 10.000
|
||||
sManufacturer : STRING(32); // 1 char = 1 byte
|
||||
|
||||
// Addr: 10.016
|
||||
sModelname : STRING(32);
|
||||
|
||||
// Addr: 10.032
|
||||
sSerialnumber : STRING(32);
|
||||
|
||||
// Addr: 10.048
|
||||
sBMSVersion : STRING(64);
|
||||
|
||||
// Addr: 10.080
|
||||
uiTotalParallelMembers : UINT; //uint 16bit = 1 Word
|
||||
|
||||
// Addr: 10.081
|
||||
uiActiveParallelMembers : UINT;
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
108
PLC/DUTs/Modbus/HoldingRegisters/ST_MODBUS_REG_11.TcDUT
Normal file
108
PLC/DUTs/Modbus/HoldingRegisters/ST_MODBUS_REG_11.TcDUT
Normal file
@@ -0,0 +1,108 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
|
||||
<DUT Name="ST_MODBUS_REG_11" Id="{7e772293-d4e3-4809-9da8-3d4e0412ede6}">
|
||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||
TYPE ST_MODBUS_REG_11 :
|
||||
STRUCT
|
||||
// Addr: 11.000
|
||||
eBatteryStatus : E_BATTERY_STATUS;
|
||||
|
||||
// Addr: 11.001
|
||||
eChargeStatus : E_CHARGE_STATUS;
|
||||
|
||||
// Addr: 11.002
|
||||
// Unit: Ah
|
||||
udiChargeCapacity : UDINT; // 32bit
|
||||
|
||||
// Addr: 11.004
|
||||
// Unit: Wh
|
||||
udiEnergyCapacity : UDINT;
|
||||
|
||||
// Addr: 11.006
|
||||
// Unit: W
|
||||
udiMaxChargingActivePower : UDINT := 30_000;
|
||||
|
||||
// Addr: 11.008
|
||||
// Unit: W
|
||||
udiMaxDischargingActivePower : UDINT := 30_000;
|
||||
|
||||
// Addr: 11.010
|
||||
// Unit: var
|
||||
udiMaxAvailableInductiveReactivePower : UDINT := 0;
|
||||
|
||||
// Addr: 11.012
|
||||
// Unit: var
|
||||
udiMaxAvailableCapacitiveReactivePower : UDINT := 0;
|
||||
|
||||
// Addr: 11.014
|
||||
// Unit: %
|
||||
uiSelfDischargeRate : UINT; // 16 bit
|
||||
|
||||
// Addr: 11.015
|
||||
// Unit: %
|
||||
uiMaxAllowedSOC : UINT := 100;
|
||||
|
||||
// Addr: 11.016
|
||||
// Unit: %
|
||||
uiMinAllowedSOC : UINT := 0;
|
||||
|
||||
// Addr: 11.017
|
||||
// Unit: %
|
||||
uiCurrentSOC : UINT;
|
||||
|
||||
// Addr: 11.018
|
||||
// Unit: %
|
||||
uiCurrentDOD : UINT;
|
||||
|
||||
// Addr: 11.019
|
||||
// Unit: Wh
|
||||
udiChargedEnergy : UDINT;
|
||||
|
||||
// Addr: 11.021
|
||||
// Unit: Wh
|
||||
udiAvailableEnergy : UDINT;
|
||||
|
||||
// Addr: 11.023
|
||||
// Unit: %
|
||||
uiCurrentSOH : UINT := 100;
|
||||
|
||||
// Addr: 11.024
|
||||
// Unit: A
|
||||
diTotalACCurrentPhase1 : DINT;
|
||||
|
||||
// Addr: 11.026
|
||||
// Unit: A
|
||||
diTotalACCurrentPhase2 : DINT;
|
||||
|
||||
// Addr: 11.028
|
||||
// Unit: A
|
||||
diTotalACCurrentPhase3 : DINT;
|
||||
|
||||
// Addr: 11.030
|
||||
// Unit: W
|
||||
diSetpointActivePowerMirror : DINT;
|
||||
|
||||
// Addr: 11.032
|
||||
rSetpointCosPhiMirror : REAL; // 32 bit
|
||||
|
||||
// Addr: 11.034
|
||||
// Unit: W
|
||||
diCurrentActivePower : DINT;
|
||||
|
||||
// Addr: 11.036
|
||||
// Unit: var
|
||||
diCurrentReactivePower : DINT;
|
||||
|
||||
// Addr: 11.038
|
||||
udiLifeMessage : UDINT;
|
||||
|
||||
// Addr: 11.040
|
||||
lwWarningBitmap : LWORD;
|
||||
|
||||
// Addr: 11.044
|
||||
lwErrorBitmap : LWORD;
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
19
PLC/DUTs/Modbus/HoldingRegisters/ST_MODBUS_REG_12.TcDUT
Normal file
19
PLC/DUTs/Modbus/HoldingRegisters/ST_MODBUS_REG_12.TcDUT
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
|
||||
<DUT Name="ST_MODBUS_REG_12" Id="{7c428918-2d8d-43ab-8096-edbee8bd4171}">
|
||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||
TYPE ST_MODBUS_REG_12 :
|
||||
STRUCT
|
||||
// Unit: W
|
||||
diSetpointActivePower : DINT;
|
||||
|
||||
// Addr: 12.002
|
||||
rSetpointCosPhi : REAL;
|
||||
|
||||
// Addr: 12.004
|
||||
eReactivePowerType : E_REACTIVE_POWER_TYPE;
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
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