Finished first implementation of modbus error registers
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="ST_DWORD_UNIT_ERROR_BITMAP" Id="{560d7018-6164-4678-9d70-c41b4bfe9348}">
|
||||
<Declaration><![CDATA[TYPE ST_DWORD_UNIT_ERROR_BITMAP :
|
||||
STRUCT
|
||||
bTNegLow : BIT; // Bit 0
|
||||
bTNegHigh : BIT; // Bit 1
|
||||
bTNegError : BIT; // Bit 2
|
||||
bTPosLow : BIT; // Bit 3
|
||||
bTPosHigh : BIT; // Bit 4
|
||||
bTPosError : BIT; // Bit 5
|
||||
bPInNegLow : BIT; // Bit 6
|
||||
bPInNegHigh : BIT; // Bit 7
|
||||
bPInNegError : BIT; // Bit 8
|
||||
bPInPosLow : BIT; // Bit 9
|
||||
bPInPosHigh : BIT; // Bit 10
|
||||
bPInPosError : BIT; // Bit 11
|
||||
bPTankNegLow : BIT; // Bit 12
|
||||
bPTankNegHigh : BIT; // Bit 13
|
||||
bPTankNegError : BIT; // Bit 14
|
||||
bPTankPosLow : BIT; // Bit 15
|
||||
bPTankPosHigh : BIT; // Bit 16
|
||||
bPTankPosError : BIT; // Bit 17
|
||||
bVHigh : BIT; // Bit 18
|
||||
bVLow : BIT; // Bit 19
|
||||
bVError : BIT; // Bit 20
|
||||
bValveNeg : BIT; // Bit 21
|
||||
bValvePos : BIT; // Bit 22
|
||||
bPumpNeg : BIT; // Bit 23
|
||||
bPumpPos : BIT; // Bit 24
|
||||
bLeack : BIT; // Bit 25
|
||||
bSafetyIntlk : BIT; // Bit 26
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="ST_DWORD_UNIT_WARNING_BITMAP" Id="{fe3a1ecb-072b-4492-b355-17d925e9fa12}">
|
||||
<Declaration><![CDATA[TYPE ST_DWORD_UNIT_WARNING_BITMAP :
|
||||
STRUCT
|
||||
bTNegLow : BIT; // Bit 0
|
||||
bTNegHigh : BIT; // Bit 1
|
||||
bTPosLow : BIT; // Bit 2
|
||||
bTPosHigh : BIT; // Bit 3
|
||||
bPInNegLow : BIT; // Bit 4
|
||||
bPInNegHigh : BIT; // Bit 5
|
||||
bPInPosLow : BIT; // Bit 6
|
||||
bPInPosHigh : BIT; // Bit 7
|
||||
bPTankNegLow : BIT; // Bit 8
|
||||
bPTankNegHigh : BIT; // Bit 9
|
||||
bPTankPosLow : BIT; // Bit 10
|
||||
bPTankPosHigh : BIT; // Bit 11
|
||||
bVHigh : BIT; // Bit 12
|
||||
bVLow : BIT; // Bit 13
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="ST_WORD_BMS_ERROR_BITMAP" Id="{33fc17c1-ae64-4c44-aa8c-117a09c656ef}">
|
||||
<Declaration><![CDATA[TYPE ST_WORD_BMS_ERROR_BITMAP :
|
||||
STRUCT
|
||||
bEStop : BIT; // Bit 0
|
||||
bEthercat : BIT; // Bit 1
|
||||
bDCSwitchS1 : BIT; // Bit 2
|
||||
bDCSwitchS2 : BIT; // Bit 3
|
||||
bError : BIT; // Bit 4
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="ST_WORD_BMS_WARNING_BITMAP" Id="{6dfd9c4b-4e74-434e-9f65-01d443c224d5}">
|
||||
<Declaration><![CDATA[TYPE ST_WORD_BMS_WARNING_BITMAP :
|
||||
STRUCT
|
||||
bNotAllInAuto : BIT;
|
||||
bSafetyIntlkString1 : BIT;
|
||||
bSafetyIntlkString2 : BIT;
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="U_BMS_ERROR_REGISTER" Id="{f3b37ac5-caba-4b85-a532-93295a2b6a11}">
|
||||
<Declaration><![CDATA[TYPE U_BMS_ERROR_REGISTER :
|
||||
UNION
|
||||
wRegister : WORD;
|
||||
stBitmap : ST_WORD_BMS_ERROR_BITMAP;
|
||||
END_UNION
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="U_BMS_WARNING_REGISTER" Id="{00faf0ca-8dad-4f4f-9244-3aea273b10bd}">
|
||||
<Declaration><![CDATA[TYPE U_BMS_WARNING_REGISTER :
|
||||
UNION
|
||||
wRegister : WORD;
|
||||
stBitmap : ST_WORD_BMS_WARNING_BITMAP;
|
||||
END_UNION
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="U_UNIT_ERROR_REGISTER" Id="{07ba2ddc-5e9f-4e51-9106-3d60de54c4e3}">
|
||||
<Declaration><![CDATA[TYPE U_UNIT_ERROR_REGISTER :
|
||||
UNION
|
||||
dwRegister : DWORD;
|
||||
stBitmap : ST_DWORD_UNIT_ERROR_BITMAP;
|
||||
END_UNION
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="U_UNIT_WARNING_REGISTER" Id="{30d76b14-f783-4b87-a308-2e6a78ac04eb}">
|
||||
<Declaration><![CDATA[TYPE U_UNIT_WARNING_REGISTER :
|
||||
UNION
|
||||
dwRegister : DWORD;
|
||||
stBitmap : ST_DWORD_UNIT_WARNING_BITMAP;
|
||||
END_UNION
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
</DUT>
|
||||
</TcPlcObject>
|
||||
@@ -1,25 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.11">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<DUT Name="ST_MODBUS_REG_13" Id="{ff1eee07-3bd7-4808-a42a-073911e581d6}">
|
||||
<Declaration><![CDATA[TYPE ST_MODBUS_REG_13 :
|
||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||
TYPE ST_MODBUS_REG_13 :
|
||||
STRUCT
|
||||
// String warning active flags
|
||||
// Addr: 13.000
|
||||
wBMSWarningActive : WORD;
|
||||
wBMSWarningActive : U_BMS_WARNING_REGISTER;
|
||||
|
||||
// String error active
|
||||
// Addr: 13.001
|
||||
wBMSErrorActive : WORD;
|
||||
wBMSErrorActive : U_BMS_ERROR_REGISTER;
|
||||
|
||||
// String warning active flags
|
||||
// (Bit 0 -> String 1, Bit 1 -> String 2, etc.)
|
||||
// (Bit 0 -> Warning in string 1 active, Bit 1 -> String 2, etc.)
|
||||
// Addr: 13.002
|
||||
wStringWarningActive : WORD;
|
||||
|
||||
// String error active
|
||||
// (Bit 0 -> String 1, Bit 1 -> String 2, etc.)
|
||||
// (Bit 0 -> Error in string 1 active, Bit 1 -> String 2, etc.)
|
||||
// Addr: 13.003
|
||||
wStringErrorActive : WORD;
|
||||
|
||||
// Confirm alarms through modbus
|
||||
// Addr: 13.004
|
||||
wConfirmAlarms : WORD;
|
||||
END_STRUCT
|
||||
END_TYPE
|
||||
]]></Declaration>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.11">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<GVL Name="GVL_MODBUS" Id="{913a9222-1338-4c08-b758-91c1bd26dcd9}">
|
||||
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||
VAR_GLOBAL
|
||||
@@ -20,11 +20,13 @@ VAR_GLOBAL
|
||||
// Addr: 13.000
|
||||
stBMSErrorReg : ST_MODBUS_REG_13;
|
||||
|
||||
// Addr: 14.000 -> 14.023
|
||||
awWarningsUnitsActive : ARRAY [0..(GVL_CONFIG.uiNumberOfUnits-1)] OF WORD;
|
||||
// Addr: 14.000 -> 14.047
|
||||
// Index 0 -> Unit 1, Index 1 -> Unit 2 etc.
|
||||
awWarningsUnitsActive : ARRAY [0..(GVL_CONFIG.uiNumberOfUnits-1)] OF U_UNIT_WARNING_REGISTER;
|
||||
|
||||
// Addr: 15.000 -> 15.023
|
||||
awErrorsUnitsActive : ARRAY [0..(GVL_CONFIG.uiNumberOfUnits-1)] OF WORD;
|
||||
// Addr: 15.000 -> 15.047
|
||||
// Index 0 -> Unit 1, Index 1 -> Unit 2 etc.
|
||||
awErrorsUnitsActive : ARRAY [0..(GVL_CONFIG.uiNumberOfUnits-1)] OF U_UNIT_ERROR_REGISTER;
|
||||
END_VAR]]></Declaration>
|
||||
</GVL>
|
||||
</TcPlcObject>
|
||||
@@ -9,7 +9,7 @@
|
||||
<WriteProductVersion>true</WriteProductVersion>
|
||||
<GenerateTpy>false</GenerateTpy>
|
||||
<Name>PLC</Name>
|
||||
<ProgramVersion>3.1.4026.14</ProgramVersion>
|
||||
<ProgramVersion>3.1.4026.15</ProgramVersion>
|
||||
<Application>{afd0b275-de2f-4006-ab0f-6826ccfce7be}</Application>
|
||||
<TypeSystem>{18a2eab9-0077-4cea-9d3b-9a168bdf0814}</TypeSystem>
|
||||
<Implicit_Task_Info>{6e35f35d-280b-4da2-9c5b-fc35ab6da425}</Implicit_Task_Info>
|
||||
@@ -57,6 +57,30 @@
|
||||
<Compile Include="DUTs\E_COMPONENT_STATUS.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_DWORD_UNIT_ERROR_BITMAP.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_DWORD_UNIT_WARNING_BITMAP.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_BMS_ERROR_BITMAP.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_BMS_WARNING_BITMAP.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_BMS_ERROR_REGISTER.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_BMS_WARNING_REGISTER.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_UNIT_ERROR_REGISTER.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_UNIT_WARNING_REGISTER.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DUTs\Modbus\HoldingRegisters\ST_MODBUS_REG_10.TcDUT">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
@@ -158,6 +182,7 @@
|
||||
<Folder Include="DUTs" />
|
||||
<Folder Include="DUTs\Modbus" />
|
||||
<Folder Include="DUTs\Modbus\HoldingRegisters" />
|
||||
<Folder Include="DUTs\Modbus\ErrorWarningRegisters" />
|
||||
<Folder Include="GVLs" />
|
||||
<Folder Include="POUs\Sunspec" />
|
||||
<Folder Include="POUs\Sunspec\ModelData" />
|
||||
@@ -2607,7 +2632,7 @@
|
||||
<Type n="String">System.String</Type>
|
||||
<Type n="UInt32">System.UInt32</Type>
|
||||
</TypeList>
|
||||
</XmlArchive>
|
||||
</XmlArchive>
|
||||
</PlcProjectOptions>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
624
PLC/PLC.tmc
624
PLC/PLC.tmc
File diff suppressed because one or more lines are too long
@@ -1,11 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<POU Name="FB_Module" Id="{87be924f-018d-4c09-997b-f0c0054414cc}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Module
|
||||
VAR_INPUT
|
||||
// Emergency stop ok
|
||||
xEmergencyStopOk : BOOL;
|
||||
|
||||
// Unit numbering start (0 based index)
|
||||
// Unit 1 -> Index 0
|
||||
uiFirstUnitIndex : UINT;
|
||||
|
||||
// Enable
|
||||
xEnable : BOOL;
|
||||
|
||||
@@ -179,6 +183,8 @@ END_IF
|
||||
// Leackage Unit 1/2 error (1 - OK; 0 - Leackage)
|
||||
// ===============================
|
||||
IF (NOT xLeakageSegments12) AND (NOT _fbLeackageSegment12Alarm.bRaised) AND xReleaseErrors THEN
|
||||
GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex].stBitmap.bLeack := 1;
|
||||
GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex+1].stBitmap.bLeack := 1;
|
||||
_fbLeackageSegment12Alarm.Raise(0);
|
||||
END_IF
|
||||
|
||||
@@ -195,6 +201,8 @@ END_IF
|
||||
// Leackage Unit 3/4 error (1 - OK; 0 - Leackage)
|
||||
// ===============================
|
||||
IF (NOT xLeakageSegments34) AND (NOT _fbLeackageSegment34Alarm.bRaised) AND xReleaseErrors THEN
|
||||
GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex+2].stBitmap.bLeack := 1;
|
||||
GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex+3].stBitmap.bLeack := 1;
|
||||
_fbLeackageSegment34Alarm.Raise(0);
|
||||
END_IF
|
||||
|
||||
@@ -223,7 +231,9 @@ _fbUnit1(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
xReleaseManualMode := xReleaseManualMode,
|
||||
rBalancingTargetVoltage := rBalancingTargetVoltage,
|
||||
xAllToManualMode := xAllToManualMode);
|
||||
xAllToManualMode := xAllToManualMode,
|
||||
stModbusWarnings := GVL_MODBUS.awWarningsUnitsActive[uiFirstUnitIndex],
|
||||
stModbusErrors := GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex]);
|
||||
|
||||
refstHMIInterface.stHMIInterfaceUnit1.rCurrent := rCurrent;
|
||||
|
||||
@@ -261,7 +271,9 @@ _fbUnit2(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
xReleaseManualMode := xReleaseManualMode,
|
||||
rBalancingTargetVoltage := rBalancingTargetVoltage,
|
||||
xAllToManualMode := xAllToManualMode);
|
||||
xAllToManualMode := xAllToManualMode,
|
||||
stModbusWarnings := GVL_MODBUS.awWarningsUnitsActive[uiFirstUnitIndex+1],
|
||||
stModbusErrors := GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex+1]);
|
||||
|
||||
refstHMIInterface.stHMIInterfaceUnit2.rCurrent := rCurrent;
|
||||
|
||||
@@ -299,7 +311,9 @@ _fbUnit3(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
xReleaseManualMode := xReleaseManualMode,
|
||||
rBalancingTargetVoltage := rBalancingTargetVoltage,
|
||||
xAllToManualMode := xAllToManualMode);
|
||||
xAllToManualMode := xAllToManualMode,
|
||||
stModbusWarnings := GVL_MODBUS.awWarningsUnitsActive[uiFirstUnitIndex+2],
|
||||
stModbusErrors := GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex+2]);
|
||||
|
||||
refstHMIInterface.stHMIInterfaceUnit3.rCurrent := rCurrent;
|
||||
|
||||
@@ -337,7 +351,9 @@ _fbUnit4(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
xReleaseManualMode := xReleaseManualMode,
|
||||
rBalancingTargetVoltage := rBalancingTargetVoltage,
|
||||
xAllToManualMode := xAllToManualMode);
|
||||
xAllToManualMode := xAllToManualMode,
|
||||
stModbusWarnings := GVL_MODBUS.awWarningsUnitsActive[uiFirstUnitIndex+3],
|
||||
stModbusErrors := GVL_MODBUS.awErrorsUnitsActive[uiFirstUnitIndex+3]);
|
||||
|
||||
refstHMIInterface.stHMIInterfaceUnit4.rCurrent := rCurrent;
|
||||
|
||||
@@ -587,37 +603,5 @@ _fbLeackageSegment34Alarm.ipArguments.Clear().AddString(_sName);]]></ST>
|
||||
</Implementation>
|
||||
</Set>
|
||||
</Property>
|
||||
<LineIds Name="FB_Module">
|
||||
<LineId Id="3" Count="81" />
|
||||
<LineId Id="86" Count="9" />
|
||||
<LineId Id="371" Count="1" />
|
||||
<LineId Id="96" Count="25" />
|
||||
<LineId Id="123" Count="9" />
|
||||
<LineId Id="373" Count="1" />
|
||||
<LineId Id="133" Count="25" />
|
||||
<LineId Id="160" Count="9" />
|
||||
<LineId Id="375" Count="1" />
|
||||
<LineId Id="170" Count="25" />
|
||||
<LineId Id="197" Count="9" />
|
||||
<LineId Id="377" Count="1" />
|
||||
<LineId Id="207" Count="135" />
|
||||
<LineId Id="380" Count="1" />
|
||||
<LineId Id="383" Count="0" />
|
||||
<LineId Id="379" Count="0" />
|
||||
<LineId Id="384" Count="0" />
|
||||
<LineId Id="343" Count="27" />
|
||||
<LineId Id="2" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Module.FB_init">
|
||||
<LineId Id="3" Count="26" />
|
||||
<LineId Id="2" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Module.Name.Get">
|
||||
<LineId Id="2" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Module.Name.Set">
|
||||
<LineId Id="3" Count="16" />
|
||||
<LineId Id="2" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
@@ -1,11 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<POU Name="FB_String" Id="{46501225-f446-4674-bfed-3be64273e576}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_String
|
||||
VAR_INPUT
|
||||
// Enable
|
||||
xEnable : BOOL;
|
||||
|
||||
// String number for unit numbering starting with 0 for String 1
|
||||
uiStringNumber : UINT;
|
||||
|
||||
// Error shutdown -> No discharge throught inverter
|
||||
xErrorShutdown : BOOL;
|
||||
|
||||
@@ -27,9 +30,6 @@ VAR_INPUT
|
||||
// Reset Safety
|
||||
xResetSafety : BOOL;
|
||||
|
||||
// All safetyinterlocks from safety plc are ok
|
||||
xSafetyIntlksOk AT %I* : BOOL;
|
||||
|
||||
// Safety communication error
|
||||
{attribute 'analysis' := '-33'}
|
||||
xSafetyComError AT %I* : BOOL;
|
||||
@@ -49,9 +49,6 @@ VAR_INPUT
|
||||
// Switch all components to manual mode
|
||||
xAllToManualMode : BOOL;
|
||||
|
||||
// Repair switch closed
|
||||
xRepairSwitchOk AT %I* : BOOL;
|
||||
|
||||
// String inverter ip
|
||||
sInverterIP : STRING;
|
||||
|
||||
@@ -61,6 +58,15 @@ VAR_INPUT
|
||||
xIsoErrorL2 AT %I* : BOOL;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
// Repair switch closed
|
||||
xRepairSwitchOk AT %I* : BOOL;
|
||||
|
||||
// All safetyinterlocks from safety plc are ok
|
||||
xSafetyIntlksOk AT %I* : BOOL;
|
||||
|
||||
// All component safety interlocks are ok
|
||||
xSafetyIntlksComponentsOk : BOOL;
|
||||
|
||||
// Current string voltage
|
||||
rCurrentVoltage : REAL;
|
||||
|
||||
@@ -301,12 +307,12 @@ _fbStringCurrent(
|
||||
stHMIInterface.rCurrent := _fbStringCurrent.stHMIInterface.rValue;
|
||||
|
||||
|
||||
|
||||
// ===============================
|
||||
// Module 1
|
||||
// ===============================
|
||||
_fbModule1(
|
||||
xEnable := _xEnable,
|
||||
uiFirstUnitIndex := uiStringNumber * 12,
|
||||
rCurrent := stHMIInterface.rCurrent,
|
||||
xStartBalancing := _xStartBalancing,
|
||||
xInverterEnabled := _fbInverter.xActive,
|
||||
@@ -321,14 +327,12 @@ _fbModule1(
|
||||
rBalancingTargetVoltage := rSmallestSegmentVoltage);
|
||||
|
||||
|
||||
|
||||
|
||||
// ===============================
|
||||
// Module 2
|
||||
// ===============================
|
||||
|
||||
_fbModule2(
|
||||
xEnable := _xEnable,
|
||||
uiFirstUnitIndex := uiStringNumber * 12 + 4,
|
||||
rCurrent := stHMIInterface.rCurrent,
|
||||
xStartBalancing := _xStartBalancing,
|
||||
xInverterEnabled := _fbInverter.xActive,
|
||||
@@ -343,13 +347,12 @@ _fbModule2(
|
||||
rBalancingTargetVoltage := rSmallestSegmentVoltage);
|
||||
|
||||
|
||||
|
||||
|
||||
// ===============================
|
||||
// Module 3
|
||||
// ===============================
|
||||
_fbModule3(
|
||||
xEnable := _xEnable,
|
||||
uiFirstUnitIndex := uiStringNumber * 12 + 8,
|
||||
rCurrent := stHMIInterface.rCurrent,
|
||||
xStartBalancing := _xStartBalancing,
|
||||
xInverterEnabled := _fbInverter.xActive,
|
||||
@@ -364,10 +367,18 @@ _fbModule3(
|
||||
rBalancingTargetVoltage := rSmallestSegmentVoltage);
|
||||
|
||||
|
||||
// ===============================
|
||||
// Handle component safety interlocks ok
|
||||
// ===============================
|
||||
xSafetyIntlksComponentsOk := _fbModule1.xSafetyIntlksOk AND _fbModule2.xSafetyIntlksOk AND _fbModule3.xSafetyIntlksOk;
|
||||
|
||||
// ===============================
|
||||
// Handle modules error state
|
||||
// ===============================
|
||||
_xModuleError := _fbModule1.xError OR _fbModule2.xError OR _fbModule3.xError;
|
||||
_xModuleError := _fbModule1.xError OR _fbModule2.xError OR _fbModule3.xError OR (NOT xSafetyIntlksComponentsOk);
|
||||
IF _xModuleError THEN
|
||||
xError := TRUE;
|
||||
END_IF
|
||||
|
||||
// ===============================
|
||||
// Handle modules warning state
|
||||
@@ -388,7 +399,7 @@ _xAllModulesInShutdownDischargeMode := _fbModule1.xInShutdownDischargeMode AND _
|
||||
// ===============================
|
||||
// Handle safety interlock alarm
|
||||
// ===============================
|
||||
IF NOT xSafetyIntlksOk AND NOT _fbSafetyInterlocksNotOkAlarm.bRaised THEN
|
||||
IF (NOT xSafetyIntlksOk) AND NOT _fbSafetyInterlocksNotOkAlarm.bRaised THEN
|
||||
_fbSafetyInterlocksNotOkAlarm.Raise(0);
|
||||
END_IF
|
||||
|
||||
@@ -553,7 +564,7 @@ END_IF
|
||||
CASE _iState OF
|
||||
0: // Idle
|
||||
// Start in normal mode
|
||||
IF xEnable AND (NOT xStartBalancing) AND xAllModulesInAutoMode AND xRepairSwitchOk THEN
|
||||
IF xEnable AND (NOT xStartBalancing) AND xAllModulesInAutoMode AND xRepairSwitchOk AND (NOT _xModuleError) THEN
|
||||
_xEnable := TRUE;
|
||||
//eStatus := E_COMPONENT_STATUS.STARTING;
|
||||
IF xInSafetyCheckMode THEN
|
||||
@@ -564,7 +575,7 @@ CASE _iState OF
|
||||
END_IF
|
||||
|
||||
// Start in balancing mode
|
||||
IF (NOT xEnable) AND xStartBalancing AND xAllModulesInAutoMode THEN
|
||||
IF (NOT xEnable) AND xStartBalancing AND xAllModulesInAutoMode AND (NOT _xModuleError) THEN
|
||||
_xStartBalancing := TRUE;
|
||||
_xReleaseLimitErrorsInternal := FALSE;
|
||||
//eStatus := E_COMPONENT_STATUS.STARTING;
|
||||
@@ -611,7 +622,7 @@ CASE _iState OF
|
||||
_iState := 0;
|
||||
END_IF
|
||||
|
||||
IF xError THEN
|
||||
IF _xModuleError THEN
|
||||
_xEnable := FALSE;
|
||||
_iState := 1000;
|
||||
END_IF
|
||||
@@ -651,6 +662,11 @@ CASE _iState OF
|
||||
_iState := 1000;
|
||||
END_IF
|
||||
|
||||
IF _xModuleError THEN
|
||||
_xEnable := FALSE;
|
||||
_iState := 1000;
|
||||
END_IF
|
||||
|
||||
20: // Check if DC relais closed and safety is ok
|
||||
IF NOT xDCCBOpen THEN
|
||||
_tonErrorDCCBNotClosed.IN := FALSE;
|
||||
@@ -680,6 +696,11 @@ CASE _iState OF
|
||||
_iState := 40;
|
||||
END_IF
|
||||
|
||||
IF _xModuleError THEN
|
||||
_xEnable := FALSE;
|
||||
_iState := 1000;
|
||||
END_IF
|
||||
|
||||
21: // Wait for inverter to be ready
|
||||
_tonInverterStartupTimeout(IN := TRUE);
|
||||
IF _fbInverter.xActive AND (NOT _fbInverter.xError) THEN
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<POU Name="FB_Unit" Id="{e9bb815b-eb46-4920-800d-910484e58b22}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Unit
|
||||
VAR_INPUT
|
||||
@@ -48,6 +48,13 @@ VAR_INPUT
|
||||
// Inverter enabled status
|
||||
xInverterEnabled : BOOL;
|
||||
END_VAR
|
||||
VAR_IN_OUT
|
||||
// Modbus warning register
|
||||
stModbusWarnings : U_UNIT_WARNING_REGISTER;
|
||||
|
||||
// Modbus error register
|
||||
stModbusErrors : U_UNIT_ERROR_REGISTER;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
// Unit state
|
||||
//eUnitState : E_COMPONENT_STATUS := E_COMPONENT_STATUS.OFF;
|
||||
@@ -315,9 +322,11 @@ _fbPosolytValveTankOutlet(
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPosolytValveTankOutlet.xError THEN
|
||||
stModbusErrors.stBitmap.bValvePos := 1;
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// Set safety interlock flag if fb has safety interlocks active
|
||||
IF NOT stHMIInterface.stNS12.stInterlock.xSafetyINTLKOk THEN
|
||||
xSafetyIntlksOk := FALSE;
|
||||
@@ -346,6 +355,7 @@ _fbNegolytValveTankOutlet(
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbNegolytValveTankOutlet.xError THEN
|
||||
stModbusErrors.stBitmap.bValveNeg := 1;
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
@@ -385,6 +395,7 @@ _fbPosolytPumpInlet(
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPosolytPumpInlet.xError THEN
|
||||
stModbusErrors.stBitmap.bPumpPos := 1;
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
@@ -429,6 +440,7 @@ _fbNegolytPumpInlet(
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbNegolytPumpInlet.xError THEN
|
||||
stModbusErrors.stBitmap.bPumpNeg := 1;
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
@@ -461,6 +473,26 @@ _fbPressurePosolytSegmentInlet(
|
||||
_rFilteredPressPosolytInlet := _rFilteredPressPosolytInlet * 0.9 + stHMIInterface.stP11.rValue * 0.1;
|
||||
stHMIInterface.stP11.rValue := _rFilteredPressPosolytInlet;
|
||||
|
||||
// Set modbus error register bits
|
||||
IF _fbPressurePosolytSegmentInlet.xErrorLow THEN
|
||||
stModbusErrors.stBitmap.bPInPosLow := 1;
|
||||
END_IF
|
||||
IF _fbPressurePosolytSegmentInlet.xErrorHigh THEN
|
||||
stModbusErrors.stBitmap.bPInPosHigh := 1;
|
||||
END_IF
|
||||
IF _fbPressurePosolytSegmentInlet.xError THEN
|
||||
stModbusErrors.stBitmap.bPInPosError := 1;
|
||||
END_IF
|
||||
|
||||
// Set modbus warning register bits
|
||||
IF _fbPressurePosolytSegmentInlet.xWarningLow THEN
|
||||
stModbusWarnings.stBitmap.bPInPosLow := 1;
|
||||
END_IF
|
||||
IF _fbPressurePosolytSegmentInlet.xWarningHigh THEN
|
||||
stModbusWarnings.stBitmap.bPInPosHigh := 1;
|
||||
END_IF
|
||||
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressurePosolytSegmentInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -489,6 +521,25 @@ _fbPressureNegolytSegmentInlet(
|
||||
_rFilteredPressNegolytInlet := _rFilteredPressNegolytInlet * 0.9 + stHMIInterface.stP21.rValue * 0.1;
|
||||
stHMIInterface.stP21.rValue := _rFilteredPressNegolytInlet;
|
||||
|
||||
// Set modbus error register bits
|
||||
IF _fbPressureNegolytSegmentInlet.xErrorLow THEN
|
||||
stModbusErrors.stBitmap.bPInNegLow := 1;
|
||||
END_IF
|
||||
IF _fbPressureNegolytSegmentInlet.xErrorHigh THEN
|
||||
stModbusErrors.stBitmap.bPInNegHigh := 1;
|
||||
END_IF
|
||||
IF _fbPressureNegolytSegmentInlet.xError THEN
|
||||
stModbusErrors.stBitmap.bPInNegError := 1;
|
||||
END_IF
|
||||
|
||||
// Set modbus warning register bits
|
||||
IF _fbPressureNegolytSegmentInlet.xWarningLow THEN
|
||||
stModbusWarnings.stBitmap.bPInNegLow := 1;
|
||||
END_IF
|
||||
IF _fbPressureNegolytSegmentInlet.xWarningHigh THEN
|
||||
stModbusWarnings.stBitmap.bPInNegHigh := 1;
|
||||
END_IF
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressureNegolytSegmentInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -517,6 +568,25 @@ _fbPressurePosolytTankInlet(
|
||||
_rFilteredPressPosolytTank := _rFilteredPressPosolytTank * 0.9 + stHMIInterface.stP12.rValue * 0.1;
|
||||
stHMIInterface.stP12.rValue := _rFilteredPressPosolytTank;
|
||||
|
||||
// Set modbus error register bits
|
||||
IF _fbPressurePosolytTankInlet.xErrorLow THEN
|
||||
stModbusErrors.stBitmap.bPTankPosLow := 1;
|
||||
END_IF
|
||||
IF _fbPressurePosolytTankInlet.xErrorHigh THEN
|
||||
stModbusErrors.stBitmap.bPTankPosHigh := 1;
|
||||
END_IF
|
||||
IF _fbPressurePosolytTankInlet.xError THEN
|
||||
stModbusErrors.stBitmap.bPTankPosError := 1;
|
||||
END_IF
|
||||
|
||||
// Set modbus warning register bits
|
||||
IF _fbPressurePosolytTankInlet.xWarningLow THEN
|
||||
stModbusWarnings.stBitmap.bPTankPosLow := 1;
|
||||
END_IF
|
||||
IF _fbPressurePosolytTankInlet.xWarningHigh THEN
|
||||
stModbusWarnings.stBitmap.bPTankPosHigh := 1;
|
||||
END_IF
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressurePosolytTankInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -545,6 +615,25 @@ _fbPressureNegolytTankInlet(
|
||||
_rFilteredPressNegolytTank := _rFilteredPressNegolytTank * 0.9 + stHMIInterface.stP22.rValue * 0.1;
|
||||
stHMIInterface.stP22.rValue := _rFilteredPressNegolytTank;
|
||||
|
||||
// Set modbus error register bits
|
||||
IF _fbPressureNegolytTankInlet.xErrorLow THEN
|
||||
stModbusErrors.stBitmap.bPTankNegLow := 1;
|
||||
END_IF
|
||||
IF _fbPressureNegolytTankInlet.xErrorHigh THEN
|
||||
stModbusErrors.stBitmap.bPTankNegHigh := 1;
|
||||
END_IF
|
||||
IF _fbPressureNegolytTankInlet.xError THEN
|
||||
stModbusErrors.stBitmap.bPTankNegError := 1;
|
||||
END_IF
|
||||
|
||||
// Set modbus warning register bits
|
||||
IF _fbPressureNegolytTankInlet.xWarningLow THEN
|
||||
stModbusWarnings.stBitmap.bPTankNegLow := 1;
|
||||
END_IF
|
||||
IF _fbPressureNegolytTankInlet.xWarningHigh THEN
|
||||
stModbusWarnings.stBitmap.bPTankNegHigh := 1;
|
||||
END_IF
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressureNegolytTankInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -569,6 +658,25 @@ _fbTempSensorPosolyt(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface=> stHMIInterface.stT11);
|
||||
|
||||
// Set modbus error register bits
|
||||
IF _fbTempSensorPosolyt.xErrorLow THEN
|
||||
stModbusErrors.stBitmap.bTPosLow := 1;
|
||||
END_IF
|
||||
IF _fbTempSensorPosolyt.xErrorHigh THEN
|
||||
stModbusErrors.stBitmap.bTPosHigh := 1;
|
||||
END_IF
|
||||
IF _fbTempSensorPosolyt.xError THEN
|
||||
stModbusErrors.stBitmap.bTPosError := 1;
|
||||
END_IF
|
||||
|
||||
// Set modbus warning register bits
|
||||
IF _fbTempSensorPosolyt.xWarningLow THEN
|
||||
stModbusWarnings.stBitmap.bTPosLow := 1;
|
||||
END_IF
|
||||
IF _fbTempSensorPosolyt.xWarningHigh THEN
|
||||
stModbusWarnings.stBitmap.bTPosHigh := 1;
|
||||
END_IF
|
||||
|
||||
IF _fbTempSensorPosolyt.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
@@ -591,6 +699,25 @@ _fbTempSensorNegolyt(
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface=> stHMIInterface.stT21);
|
||||
|
||||
// Set modbus error register bits
|
||||
IF _fbTempSensorNegolyt.xErrorLow THEN
|
||||
stModbusErrors.stBitmap.bTNegLow := 1;
|
||||
END_IF
|
||||
IF _fbTempSensorNegolyt.xErrorHigh THEN
|
||||
stModbusErrors.stBitmap.bTNegHigh := 1;
|
||||
END_IF
|
||||
IF _fbTempSensorNegolyt.xError THEN
|
||||
stModbusErrors.stBitmap.bTNegError := 1;
|
||||
END_IF
|
||||
|
||||
// Set modbus warning register bits
|
||||
IF _fbTempSensorNegolyt.xWarningLow THEN
|
||||
stModbusWarnings.stBitmap.bTNegLow := 1;
|
||||
END_IF
|
||||
IF _fbTempSensorNegolyt.xWarningHigh THEN
|
||||
stModbusWarnings.stBitmap.bTNegHigh := 1;
|
||||
END_IF
|
||||
|
||||
IF _fbTempSensorNegolyt.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
@@ -614,6 +741,25 @@ _fbVoltageSegment(
|
||||
stHMIInterface=> stHMIInterface.stE31,
|
||||
rScaledValue => rCurrentVoltage);
|
||||
|
||||
// Set modbus error register bits
|
||||
IF _fbVoltageSegment.xErrorLow THEN
|
||||
stModbusErrors.stBitmap.bVLow := 1;
|
||||
END_IF
|
||||
IF _fbVoltageSegment.xErrorHigh THEN
|
||||
stModbusErrors.stBitmap.bVHigh := 1;
|
||||
END_IF
|
||||
IF _fbVoltageSegment.xError THEN
|
||||
stModbusErrors.stBitmap.bVError := 1;
|
||||
END_IF
|
||||
|
||||
// Set modbus warning register bits
|
||||
IF _fbVoltageSegment.xWarningLow THEN
|
||||
stModbusWarnings.stBitmap.bVLow := 1;
|
||||
END_IF
|
||||
IF _fbVoltageSegment.xWarningHigh THEN
|
||||
stModbusWarnings.stBitmap.bVHigh := 1;
|
||||
END_IF
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbVoltageSegment.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
@@ -704,6 +850,18 @@ StateMachine();
|
||||
xError := _xErrorActive;
|
||||
xWarning := _xWarningActive;
|
||||
|
||||
IF (NOT xSafetyIntlksOk) THEN
|
||||
stModbusErrors.stBitmap.bSafetyIntlk := 1;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Reset modbus error register with alarm confirmation
|
||||
// ===============================
|
||||
IF xConfirmAlarms THEN
|
||||
stModbusErrors.dwRegister := 0;
|
||||
stModbusWarnings.dwRegister := 0;
|
||||
END_IF
|
||||
|
||||
// ===============================
|
||||
// Handle general error message
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<POU Name="MAIN" Id="{bbd7302c-91ce-4697-9f4b-743f57ca5819}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[PROGRAM MAIN
|
||||
VAR
|
||||
@@ -122,8 +122,6 @@ VAR
|
||||
_xAllComponentsToManualMode : BOOL;
|
||||
|
||||
// DEBUG
|
||||
_xRestart : BOOL;
|
||||
|
||||
_ModbusDebugTest : ST_MODBUS_REG_11;
|
||||
|
||||
_fbStringReadyTimeout : TON;
|
||||
@@ -158,21 +156,7 @@ VAR
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><;
|
||||
|
||||
|
||||
// Call string 2
|
||||
_afbStrings[1](
|
||||
xEnable := _xEnableString,
|
||||
uiStringNumber := 1,
|
||||
xErrorShutdown := _xErrorShutdown,
|
||||
xStartBalancing := _xStartBalancing,
|
||||
sInverterIP := GVL_CONFIG.sInverterIpString2,
|
||||
@@ -342,6 +345,16 @@ IF _afbStrings[1].xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
// Handle string 1 modbus error and warning
|
||||
GVL_MODBUS.stBMSErrorReg.wStringErrorActive.1 := _afbStrings[1].xError;
|
||||
GVL_MODBUS.stBMSErrorReg.wStringWarningActive.1 := _afbStrings[1].xWarning;
|
||||
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bDCSwitchS2 := _afbStrings[1].xRepairSwitchOk;
|
||||
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bSafetyIntlkString2 := (NOT _afbStrings[1].xSafetyIntlksOk);
|
||||
|
||||
// Copy general error to modbus error register
|
||||
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bError := _xErrorActive;
|
||||
|
||||
|
||||
// ===============================
|
||||
// Get global string status information
|
||||
// ===============================
|
||||
@@ -616,6 +629,9 @@ IF _xStringsInAutoMode AND _fbNoAutomaticModeAlarm.bRaised THEN
|
||||
_fbNoAutomaticModeAlarm.Clear(0, TRUE);
|
||||
END_IF
|
||||
|
||||
// Copy auto mode warning message to modbus register
|
||||
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bNotAllInAuto := (NOT _xStringsInAutoMode);
|
||||
|
||||
// Reset automatic buttons
|
||||
IF GVL_SCADA.stAutomaticModeHMI.stStartAutoButton.xRequest THEN
|
||||
GVL_SCADA.stAutomaticModeHMI.stStartAutoButton.xRequest := FALSE;
|
||||
@@ -626,6 +642,8 @@ END_IF
|
||||
|
||||
// Reset alarm confirmation
|
||||
IF _xConfirmAlarms OR _rtHardwareResetButton.Q THEN
|
||||
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.wRegister := 0;
|
||||
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.wRegister := 0;
|
||||
_xConfirmAlarms := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<POU Name="FB_PowerSupplySunspec" Id="{a826dd09-442c-45c5-8ae3-9b71f293003c}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_PowerSupplySunspec
|
||||
VAR_INPUT
|
||||
@@ -27,6 +27,9 @@ VAR
|
||||
// Current state
|
||||
_iState : INT := 0;
|
||||
|
||||
// Internal power command
|
||||
_rPowerInternal : REAL;
|
||||
|
||||
// FB for reading Modbus holding registers
|
||||
_fbReadRegister : FB_MBReadRegs;
|
||||
|
||||
@@ -67,9 +70,6 @@ VAR
|
||||
// Current state of the inverters internal statemachine
|
||||
_uiInverterState : UINT;
|
||||
|
||||
// Last written power to the inverter
|
||||
_rOldPower : REAL;
|
||||
|
||||
// Value to enable or dissable the Power limiting feature
|
||||
_uiMaxLimEn : UINT;
|
||||
|
||||
@@ -88,9 +88,15 @@ VAR
|
||||
// Time for polling for current dc values and check for inverter error
|
||||
_timPollingDelay : TIME := T#500MS;
|
||||
|
||||
// Time for setting the current power
|
||||
_timSetPowerDelay : TIME := T#250MS;
|
||||
|
||||
// Timer for polling of current values
|
||||
_tonPollingTimer : TON;
|
||||
|
||||
// Timer for setting the inverter power
|
||||
_tonSetPowerTimer : TON;
|
||||
|
||||
// Current DC values (DCA, DCA_SF, DCV, DCV_SF, DCW, DCW_SF) in word array for efficient modbus reading
|
||||
_awCurrentDCValues : ARRAY[0..5] OF WORD;
|
||||
|
||||
@@ -227,6 +233,7 @@ CASE _iState OF
|
||||
// If enable and INTLK Ok
|
||||
IF xEnable THEN
|
||||
_iState := 10;
|
||||
_rPowerInternal := 0.0;
|
||||
_tonPollingTimer(IN := FALSE, PT := _timPollingDelay);
|
||||
ELSE
|
||||
_tonPollingTimer(IN := TRUE, PT := _timPollingDelay);
|
||||
@@ -598,7 +605,7 @@ CASE _iState OF
|
||||
_rWMax := LREAL_TO_REAL(_uiWMax * EXPT(10,_iWMaxSF));
|
||||
|
||||
// Calculate power to write to register
|
||||
_iWMaxLimPct := LREAL_TO_INT((rPower*100)/(_rWMax * EXPT(10,_iWMaxLimPctSF)));
|
||||
_iWMaxLimPct := LREAL_TO_INT((_rPowerInternal*100)/(_rWMax * EXPT(10,_iWMaxLimPctSF)));
|
||||
ELSE
|
||||
xError := TRUE;
|
||||
// Goto error state
|
||||
@@ -629,7 +636,6 @@ CASE _iState OF
|
||||
// And there is no error, then continue
|
||||
IF NOT _fbWriteRegister.bError THEN
|
||||
_iState := 50;
|
||||
_rOldPower := rPower;
|
||||
_uiMaxLimEn := 1;
|
||||
_uiLastSetPowerLimitErrorCounter := _uiSetPowerLimitErrorCounter;
|
||||
_uiSetPowerLimitErrorCounter := 0;
|
||||
@@ -734,8 +740,8 @@ CASE _iState OF
|
||||
IF NOT _fbWriteRegister.bBusy THEN
|
||||
// And there is no error, then continue
|
||||
IF NOT _fbWriteRegister.bError THEN
|
||||
_iState := 51;
|
||||
_uiPCSSetOperation := 4;
|
||||
_iState := 60; // 51
|
||||
_uiPCSSetOperation := 1; // 4
|
||||
ELSE
|
||||
xError := TRUE;
|
||||
// Goto error state
|
||||
@@ -764,10 +770,11 @@ CASE _iState OF
|
||||
// If writing modbus register is done
|
||||
IF NOT _fbWriteRegister.bBusy THEN
|
||||
// And there is no error, then continue
|
||||
IF NOT _fbWriteRegister.bError THEN
|
||||
_uiPCSSetOperation := 1;
|
||||
IF (NOT _fbWriteRegister.bError) THEN
|
||||
//_uiPCSSetOperation := 1;
|
||||
_iState := 60;
|
||||
ELSE
|
||||
_uiPCSSetOperation := 1;
|
||||
// Goto error state
|
||||
_iState := 1000;
|
||||
END_IF
|
||||
@@ -806,20 +813,26 @@ CASE _iState OF
|
||||
|
||||
65: // Wait for polling timer
|
||||
_tonPollingTimer(IN := TRUE, PT := _timPollingDelay);
|
||||
_tonSetPowerTimer(IN := TRUE, PT := _timSetPowerDelay);
|
||||
IF _tonPollingTimer.Q THEN
|
||||
_tonPollingTimer(IN := FALSE);
|
||||
_iState := 70;
|
||||
ELSIF (ABS(rPower - _rOldPower) > 0.1) THEN
|
||||
//_tonPollingTimer(IN := FALSE);
|
||||
ELSIF (ABS(rPower - _rPowerInternal) > 0.1) AND _tonSetPowerTimer.Q AND xEnable THEN
|
||||
_tonSetPowerTimer(IN := FALSE);
|
||||
_rPowerInternal := rPower;
|
||||
|
||||
// Calculate power to write to register
|
||||
_iWMaxLimPct := LREAL_TO_INT((_rPowerInternal*100)/(_rWMax * EXPT(10,_iWMaxLimPctSF)));
|
||||
|
||||
// If power has been changed, goto set power limit mode
|
||||
_iState := 40;
|
||||
// Calculate power to write to register
|
||||
_iWMaxLimPct := LREAL_TO_INT((rPower*100)/(_rWMax * EXPT(10,_iWMaxLimPctSF)));
|
||||
END_IF
|
||||
|
||||
// check if inverter should shut down
|
||||
IF NOT xEnable THEN
|
||||
IF (NOT xEnable) THEN
|
||||
_uiPCSSetOperation := 3;
|
||||
_rPowerInternal := 0.0;
|
||||
_iWMaxLimPct := 0;
|
||||
// Goto shutdown sequence
|
||||
_iState := 200;
|
||||
END_IF
|
||||
@@ -1024,7 +1037,8 @@ CASE _iState OF
|
||||
_xInverterHBCounterIncremented := FALSE;
|
||||
END_IF
|
||||
|
||||
_iState := 65;
|
||||
// _iState := 65;
|
||||
_iState := 93;
|
||||
ELSE
|
||||
xError := TRUE;
|
||||
// Goto error state
|
||||
@@ -1034,8 +1048,75 @@ CASE _iState OF
|
||||
_fbReadRegister(bExecute := FALSE);
|
||||
END_IF
|
||||
|
||||
93: // Send current power demand
|
||||
_iErrorInState := _iState;
|
||||
_fbWriteRegister(
|
||||
sIPAddr:= sInverterIPAddr,
|
||||
nTCPPort:= 502,
|
||||
nUnitID:= 16#FF, // 16#FF for Modbus TCP
|
||||
nQuantity:= 1,
|
||||
nMBAddr:= W_MAX_LIM_PCT_REGISTER,
|
||||
cbLength:= SIZEOF(_iWMaxLimPct),
|
||||
pSrcAddr:= ADR(_iWMaxLimPct),
|
||||
bExecute:= TRUE,
|
||||
tTimeout:= T#5S,
|
||||
bBusy=> ,
|
||||
bError=> ,
|
||||
nErrId=> );
|
||||
|
||||
200: // Shutdown sequence
|
||||
// If writing modbus register is done
|
||||
IF NOT _fbWriteRegister.bBusy THEN
|
||||
// And there is no error, then continue
|
||||
IF NOT _fbWriteRegister.bError THEN
|
||||
_iState := 65;
|
||||
_uiMaxLimEn := 1;
|
||||
_uiLastSetPowerLimitErrorCounter := _uiSetPowerLimitErrorCounter;
|
||||
_uiSetPowerLimitErrorCounter := 0;
|
||||
// Calculate reactive power setting
|
||||
//_iMaxPowerVar := LREAL_TO_INT((rReactivePower*100)/(_iMaxPowerVar * EXPT(10,_iVarPctSF)));
|
||||
ELSE
|
||||
_uiSetPowerLimitErrorCounter := _uiSetPowerLimitErrorCounter + 1;
|
||||
IF _uiSetPowerLimitErrorCounter > 5 THEN
|
||||
// Goto error state
|
||||
_iState := 1000;
|
||||
ELSE
|
||||
_iState := 41;
|
||||
END_IF
|
||||
END_IF
|
||||
_fbWriteRegister(bExecute := FALSE);
|
||||
END_IF
|
||||
|
||||
|
||||
200: // Shutdown send zero power command
|
||||
_iErrorInState := _iState;
|
||||
_fbWriteRegister(
|
||||
sIPAddr:= sInverterIPAddr,
|
||||
nTCPPort:= 502,
|
||||
nUnitID:= 16#FF, // 16#FF for Modbus TCP
|
||||
nQuantity:= 1,
|
||||
nMBAddr:= W_MAX_LIM_PCT_REGISTER,
|
||||
cbLength:= SIZEOF(_iWMaxLimPct),
|
||||
pSrcAddr:= ADR(_iWMaxLimPct),
|
||||
bExecute:= TRUE,
|
||||
tTimeout:= T#5S,
|
||||
bBusy=> ,
|
||||
bError=> ,
|
||||
nErrId=> );
|
||||
|
||||
// If writing modbus register is done
|
||||
IF NOT _fbWriteRegister.bBusy THEN
|
||||
// And there is no error, then continue
|
||||
IF NOT _fbWriteRegister.bError THEN
|
||||
_iState := 201;
|
||||
_uiPCSSetOperation := 3;
|
||||
ELSE
|
||||
// Goto error state
|
||||
_iState := 1000;
|
||||
END_IF
|
||||
_fbWriteRegister(bExecute := FALSE);
|
||||
END_IF
|
||||
|
||||
201: // Shutdown sequence
|
||||
_iErrorInState := _iState;
|
||||
_fbWriteRegister(
|
||||
sIPAddr:= sInverterIPAddr,
|
||||
|
||||
216
Uniper.tsproj
216
Uniper.tsproj
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0"?>
|
||||
<TcSmProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12">
|
||||
<TcSmProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.15">
|
||||
<DataTypes>
|
||||
<DataType>
|
||||
<Name GUID="{2438F91B-E188-4ED7-8594-54354F9ED6A4}" Namespace="Safety" TcBaseType="true">FSOE_6</Name>
|
||||
@@ -269,7 +269,7 @@
|
||||
</System>
|
||||
<Plc>
|
||||
<Project GUID="{9AE64910-5EB2-4866-93FD-EFE059C38C36}" Name="PLC" PrjFilePath="PLC\PLC.plcproj" TmcFilePath="PLC\PLC.tmc" ReloadTmc="true" AmsPort="851" FileArchiveSettings="#x000e" CopyTmcToTarget="true" CopyTpyToTarget="false" SymbolicMapping="true">
|
||||
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{A93E0B35-31B3-621B-91F7-8267E02F5B8B}" TmcPath="PLC\PLC.tmc">
|
||||
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{3270BB88-6285-1427-AFE9-B1C8C7F0C387}" TmcPath="PLC\PLC.tmc">
|
||||
<Name>PLC Instance</Name>
|
||||
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
|
||||
<Vars VarGrpType="2" AreaNo="1">
|
||||
@@ -278,6 +278,19 @@
|
||||
<Name>MAIN._xShowAckEmergencyStop</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN.xSafetyRun</Name>
|
||||
<Comment><![CDATA[ Safety]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN.xSafetyErrAck</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._xShowErrorOnButton</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[0].xCloseDCCB</Name>
|
||||
<Comment><![CDATA[ Signal to close dc circuit breaker]]></Comment>
|
||||
@@ -1282,19 +1295,6 @@
|
||||
<Comment><![CDATA[ Motor speed setpoint]]></Comment>
|
||||
<Type>INT</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN.xSafetyRun</Name>
|
||||
<Comment><![CDATA[ Safety]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN.xSafetyErrAck</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._xShowErrorOnButton</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
</Vars>
|
||||
<Vars VarGrpType="1">
|
||||
<Name>PlcTask Inputs</Name>
|
||||
@@ -1303,8 +1303,29 @@
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[0].xSafetyIntlksOk</Name>
|
||||
<Comment><![CDATA[ All safetyinterlocks from safety plc are ok]]></Comment>
|
||||
<Name>MAIN.xSafetyResterTaster</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._xHarwareResetButton</Name>
|
||||
<Comment><![CDATA[ Hardware reset button]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._uiEtherCATState</Name>
|
||||
<Comment><![CDATA[ String EtherCAT state]]></Comment>
|
||||
<Type>UINT</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._fbSafety.xVoltagesInRange</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._fbSafety.xPressureInRange</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._fbSafety.xTemperaturesInRange</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
@@ -1312,11 +1333,6 @@
|
||||
<Comment><![CDATA[ Safety communication error]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[0].xRepairSwitchOk</Name>
|
||||
<Comment><![CDATA[ Repair switch closed]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[0].xECStateSCS</Name>
|
||||
<Type>UINT</Type>
|
||||
@@ -1329,6 +1345,16 @@
|
||||
<Name>MAIN._afbStrings[0].xIsoErrorL2</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[0].xRepairSwitchOk</Name>
|
||||
<Comment><![CDATA[ Repair switch closed]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[0].xSafetyIntlksOk</Name>
|
||||
<Comment><![CDATA[ All safetyinterlocks from safety plc are ok]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[0].xDCCBOpen</Name>
|
||||
<Comment><![CDATA[ Signal that dc circuit breakers are closed]]></Comment>
|
||||
@@ -4091,21 +4117,11 @@
|
||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[1].xSafetyIntlksOk</Name>
|
||||
<Comment><![CDATA[ All safetyinterlocks from safety plc are ok]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[1].xSafetyComError</Name>
|
||||
<Comment><![CDATA[ Safety communication error]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[1].xRepairSwitchOk</Name>
|
||||
<Comment><![CDATA[ Repair switch closed]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[1].xECStateSCS</Name>
|
||||
<Type>UINT</Type>
|
||||
@@ -4118,6 +4134,16 @@
|
||||
<Name>MAIN._afbStrings[1].xIsoErrorL2</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[1].xRepairSwitchOk</Name>
|
||||
<Comment><![CDATA[ Repair switch closed]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[1].xSafetyIntlksOk</Name>
|
||||
<Comment><![CDATA[ All safetyinterlocks from safety plc are ok]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._afbStrings[1].xDCCBOpen</Name>
|
||||
<Comment><![CDATA[ Signal that dc circuit breakers are closed]]></Comment>
|
||||
@@ -6880,32 +6906,6 @@
|
||||
EL30xx also sets this if an underrange or overrange error is present]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN.xSafetyResterTaster</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._xHarwareResetButton</Name>
|
||||
<Comment><![CDATA[ Hardware reset button]]></Comment>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._uiEtherCATState</Name>
|
||||
<Comment><![CDATA[ String EtherCAT state]]></Comment>
|
||||
<Type>UINT</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._fbSafety.xVoltagesInRange</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._fbSafety.xPressureInRange</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
<Var>
|
||||
<Name>MAIN._fbSafety.xTemperaturesInRange</Name>
|
||||
<Type>BOOL</Type>
|
||||
</Var>
|
||||
</Vars>
|
||||
<Contexts>
|
||||
<Context>
|
||||
@@ -7444,7 +7444,7 @@
|
||||
<ModuleIdent>17827710</ModuleIdent>
|
||||
<Module Id="#x03090001" Type="FSOE" Class="1918">
|
||||
<Name>Module 1 (FSOE)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>020000007e07100100002c000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6656</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -7456,7 +7456,7 @@
|
||||
<ModuleIdent>691</ModuleIdent>
|
||||
<Module Id="#x03090002" Type="FSLOGIC" Class="FSLOGIC">
|
||||
<Name>Module 2 (FSLOGIC)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>02000000b3020000000004000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>7167</PdoIndex>
|
||||
<PdoIndex>6143</PdoIndex>
|
||||
@@ -8401,7 +8401,7 @@ Bit1: Value bigger/equal Limit2]]></Comment>
|
||||
<ModuleIdent>201</ModuleIdent>
|
||||
<Module Id="#x03090007" Type="FSOUT" Class="FSOUT">
|
||||
<Name>Module 2 (FSOUT)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>02000000c9000000000004000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6142</PdoIndex>
|
||||
</Module>
|
||||
@@ -8411,7 +8411,7 @@ Bit1: Value bigger/equal Limit2]]></Comment>
|
||||
<ModuleIdent>1950</ModuleIdent>
|
||||
<Module Id="#x03090008" Type="DEVICEIO" Class="DEVICEIO">
|
||||
<Name>Module 3 (DEVICEIO)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>020000009e070000000004000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>7166</PdoIndex>
|
||||
</Module>
|
||||
@@ -8421,7 +8421,7 @@ Bit1: Value bigger/equal Limit2]]></Comment>
|
||||
<ModuleIdent>691</ModuleIdent>
|
||||
<Module Id="#x03090009" Type="FSLOGIC" Class="FSLOGIC">
|
||||
<Name>Module 4 (FSLOGIC)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>02000000b3020000000004000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>7167</PdoIndex>
|
||||
<PdoIndex>6143</PdoIndex>
|
||||
@@ -9411,7 +9411,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090006" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -9686,7 +9686,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309000a" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -9961,7 +9961,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309000b" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -10236,7 +10236,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309000c" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -10511,7 +10511,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309000d" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -14018,7 +14018,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x0309000e" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -14201,7 +14201,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x0309000f" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -15191,7 +15191,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090010" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -15466,7 +15466,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090011" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -15741,7 +15741,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090012" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -16016,7 +16016,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090013" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -16291,7 +16291,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090014" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -19798,7 +19798,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090015" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -19981,7 +19981,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090016" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -20971,7 +20971,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090017" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -21246,7 +21246,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090018" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -21521,7 +21521,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309001e" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -21796,7 +21796,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309001f" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -22071,7 +22071,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090020" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -25578,7 +25578,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090021" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -25761,7 +25761,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090022" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -26612,7 +26612,7 @@ Bit1: Value bigger/equal Limit2]]></Comment>
|
||||
<ModuleIdent>201</ModuleIdent>
|
||||
<Module Id="#x0309001b" Type="FSOUT" Class="FSOUT">
|
||||
<Name>Module 2 (FSOUT)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>02000000c9000000000004000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6142</PdoIndex>
|
||||
</Module>
|
||||
@@ -26622,7 +26622,7 @@ Bit1: Value bigger/equal Limit2]]></Comment>
|
||||
<ModuleIdent>1950</ModuleIdent>
|
||||
<Module Id="#x0309001c" Type="DEVICEIO" Class="DEVICEIO">
|
||||
<Name>Module 3 (DEVICEIO)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>020000009e070000000004000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>7166</PdoIndex>
|
||||
</Module>
|
||||
@@ -26632,7 +26632,7 @@ Bit1: Value bigger/equal Limit2]]></Comment>
|
||||
<ModuleIdent>691</ModuleIdent>
|
||||
<Module Id="#x0309001d" Type="FSLOGIC" Class="FSLOGIC">
|
||||
<Name>Module 4 (FSLOGIC)</Name>
|
||||
<ImageId>518</ImageId>
|
||||
<ImageId>548</ImageId>
|
||||
<ModuleData>02000000b3020000000004000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>7167</PdoIndex>
|
||||
<PdoIndex>6143</PdoIndex>
|
||||
@@ -27621,7 +27621,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090023" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -27893,7 +27893,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090024" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -28165,7 +28165,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090025" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -28437,7 +28437,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090026" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -28709,7 +28709,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090027" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -32214,7 +32214,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090028" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -32395,7 +32395,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090029" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -33382,7 +33382,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309002a" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -33654,7 +33654,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309002b" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -33926,7 +33926,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309002c" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -34198,7 +34198,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309002d" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -34470,7 +34470,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x0309002e" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -37975,7 +37975,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x0309002f" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -38156,7 +38156,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090030" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -39143,7 +39143,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090031" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -39415,7 +39415,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090032" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -39687,7 +39687,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090033" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -39959,7 +39959,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090034" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -40231,7 +40231,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3124</ModuleIdent>
|
||||
<Module Id="#x03090035" Type="TwinSAFE Single Channel" Class="">
|
||||
<Name>Module 1 (TwinSAFE Single Channel)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>02000000340c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6664</PdoIndex>
|
||||
<PdoIndex>5632</PdoIndex>
|
||||
@@ -43736,7 +43736,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090036" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
@@ -43917,7 +43917,7 @@ Bit1: Value smaller than Limit2]]></Comment>
|
||||
<ModuleIdent>3214</ModuleIdent>
|
||||
<Module Id="#x03090037" Type="EL3214-0090" Class="">
|
||||
<Name>Module 1 (EL3214-0090)</Name>
|
||||
<ImageId>524</ImageId>
|
||||
<ImageId>554</ImageId>
|
||||
<ModuleData>020000008e0c0000000014000000000000000000000000000000000000000000</ModuleData>
|
||||
<PdoIndex>6660</PdoIndex>
|
||||
<PdoIndex>5636</PdoIndex>
|
||||
|
||||
@@ -26,6 +26,30 @@
|
||||
<EndAddress>12004</EndAddress>
|
||||
<VarName>GVL_MODBUS.stModbusEMSComm.stModbusReg12</VarName>
|
||||
</MappingInfo>
|
||||
|
||||
<!-- 13.000 Registers -->
|
||||
<MappingInfo>
|
||||
<AdsPort>851</AdsPort>
|
||||
<StartAddress>13000</StartAddress>
|
||||
<EndAddress>13004</EndAddress>
|
||||
<VarName>GVL_MODBUS.stBMSErrorReg</VarName>
|
||||
</MappingInfo>
|
||||
|
||||
<!-- 14.000 Registers -->
|
||||
<MappingInfo>
|
||||
<AdsPort>851</AdsPort>
|
||||
<StartAddress>14000</StartAddress>
|
||||
<EndAddress>14047</EndAddress>
|
||||
<VarName>GVL_MODBUS.awWarningsUnitsActive</VarName>
|
||||
</MappingInfo>
|
||||
|
||||
<!-- 15.000 Registers -->
|
||||
<MappingInfo>
|
||||
<AdsPort>851</AdsPort>
|
||||
<StartAddress>15000</StartAddress>
|
||||
<EndAddress>15047</EndAddress>
|
||||
<VarName>GVL_MODBUS.awErrorsUnitsActive</VarName>
|
||||
</MappingInfo>
|
||||
</OutputRegisters>
|
||||
</Mapping>
|
||||
</Configuration>
|
||||
|
||||
Reference in New Issue
Block a user