Last changes before SAT

This commit is contained in:
Matthias Heisig
2025-10-14 16:19:19 +02:00
parent eaaa2371e8
commit 2d65d0b3db
28 changed files with 630 additions and 352 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TargetSystemConfig Crc="1520857350" Version="1.5"> <TargetSystemConfig Crc="199280436" Version="1.5">
<TargetSystemType>HSafetyPLC</TargetSystemType> <TargetSystemType>HSafetyPLC</TargetSystemType>
<TargetSystemSubType>EL6910</TargetSystemSubType> <TargetSystemSubType>EL6910</TargetSystemSubType>
<IsExternalDevice>false</IsExternalDevice> <IsExternalDevice>false</IsExternalDevice>
@@ -19,7 +19,4 @@
<TakeOverSafetyAliasDeviceNamesInProcessImage>true</TakeOverSafetyAliasDeviceNamesInProcessImage> <TakeOverSafetyAliasDeviceNamesInProcessImage>true</TakeOverSafetyAliasDeviceNamesInProcessImage>
<TakeOverStandardAliasDeviceNamesInProcessImage>true</TakeOverStandardAliasDeviceNamesInProcessImage> <TakeOverStandardAliasDeviceNamesInProcessImage>true</TakeOverStandardAliasDeviceNamesInProcessImage>
<BackupRestore Needed="0" Activated="false" RestoreUserAdministration="false" /> <BackupRestore Needed="0" Activated="false" RestoreUserAdministration="false" />
<Customizing>
<Group Id="b38a6b49-94be-48df-a0af-960770d67d03" Value="3" />
</Customizing>
</TargetSystemConfig> </TargetSystemConfig>

View File

@@ -13,7 +13,8 @@ TYPE E_BMS_CONTROL_MODE :
BALANCING := 6, BALANCING := 6,
CYCLING := 7, CYCLING := 7,
PRECHARGE := 8, PRECHARGE := 8,
DH := 9 DH := 9,
SEMI_AUTO := 10
); );
END_TYPE END_TYPE
]]></Declaration> ]]></Declaration>

View File

@@ -9,7 +9,8 @@ TYPE E_STRING_OPERATING_MODE :
AUTOMATIC := 0, AUTOMATIC := 0,
SAFETY_CHECK := 1, SAFETY_CHECK := 1,
PRECHARGE := 2, PRECHARGE := 2,
BALANCING := 3 BALANCING := 3,
SEMI_AUTO := 4
); );
END_TYPE END_TYPE
]]></Declaration> ]]></Declaration>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<DUT Name="ST_SEMI_AUTO_MODULE_ENABLE" Id="{0a50ad4d-d929-43a2-84d3-8240a20f96f0}">
<Declaration><![CDATA[TYPE ST_SEMI_AUTO_MODULE_ENABLE :
STRUCT
// Manual enable unit 1
xSemiAutoEnableUnit1 : BOOL;
// Manual enable unit 2
xSemiAutoEnableUnit2 : BOOL;
// Manual enable unit 3
xSemiAutoEnableUnit3 : BOOL;
// Manual enable unit 4
xSemiAutoEnableUnit4 : BOOL;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<DUT Name="ST_SEMI_AUTO_STRING_ENABLE" Id="{a3d678f9-e2d7-4e4a-b890-810149befa04}">
<Declaration><![CDATA[TYPE ST_SEMI_AUTO_STRING_ENABLE :
STRUCT
// Modul 1
stSemiAutoModul1 : ST_SEMI_AUTO_MODULE_ENABLE;
// Modul 2
stSemiAutoModul2 : ST_SEMI_AUTO_MODULE_ENABLE;
// Modul 3
stSemiAutoModul3 : ST_SEMI_AUTO_MODULE_ENABLE;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?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">
<DUT Name="ST_UNIT_HMI_INTERFACE" Id="{a46d51f7-c17c-44e4-be59-edb877b3b5dc}"> <DUT Name="ST_UNIT_HMI_INTERFACE" Id="{a46d51f7-c17c-44e4-be59-edb877b3b5dc}">
<Declaration><![CDATA[TYPE ST_UNIT_HMI_INTERFACE : <Declaration><![CDATA[TYPE ST_UNIT_HMI_INTERFACE :
STRUCT STRUCT
@@ -65,6 +65,11 @@ STRUCT
eStatus : E_COMPONENT_STATUS; eStatus : E_COMPONENT_STATUS;
// Semi auto enable
// ====================================
stButtonSemiAutoEnable : ST_HMI_CONTROL_BUTTON;
stButtonSemiAutoDisable : ST_HMI_CONTROL_BUTTON;
// Aknowledge all alarms button // Aknowledge all alarms button
// =================================== // ===================================
//stButtonAckAlarms : ST_HMI_CONTROL_BUTTON; //stButtonAckAlarms : ST_HMI_CONTROL_BUTTON;

View File

@@ -13,15 +13,21 @@ VAR_GLOBAL
stAckAlarmsButton : ST_HMI_CONTROL_BUTTON := (xRelease := TRUE); stAckAlarmsButton : ST_HMI_CONTROL_BUTTON := (xRelease := TRUE);
// HMI interface to control the battery throught the HMI // HMI interface to control the battery throught the HMI
{attribute 'OPC.UA.DA' := '1'}
stAutomaticModeHMI : ST_AUTO_HMI_INTERFACE; stAutomaticModeHMI : ST_AUTO_HMI_INTERFACE;
// Requested control mode by HMI // Requested control mode by HMI
{attribute 'OPC.UA.DA' := '1'}
eRequestedControlMode : E_BMS_CONTROL_MODE; eRequestedControlMode : E_BMS_CONTROL_MODE;
// Current control mode // Current control mode
{attribute 'OPC.UA.DA' := '1'}
{attribute 'OPC.UA.DA.Access' := '1'}
eCurrentControlMode : E_BMS_CONTROL_MODE; eCurrentControlMode : E_BMS_CONTROL_MODE;
// Can change current control mode // Can change current control mode
{attribute 'OPC.UA.DA' := '1'}
{attribute 'OPC.UA.DA.Access' := '1'}
xCanChangeControlMode : BOOL; xCanChangeControlMode : BOOL;
// Current battery power // Current battery power

View File

@@ -113,6 +113,12 @@
<Compile Include="DUTs\Modbus\ST_EMS_MODBUS_INTERFACE.TcDUT"> <Compile Include="DUTs\Modbus\ST_EMS_MODBUS_INTERFACE.TcDUT">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="DUTs\SEMI_AUTO\ST_SEMI_AUTO_MODULE_ENABLE.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="DUTs\SEMI_AUTO\ST_SEMI_AUTO_STRING_ENABLE.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="DUTs\ST_AUTO_HMI_INTERFACE.TcDUT"> <Compile Include="DUTs\ST_AUTO_HMI_INTERFACE.TcDUT">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
@@ -225,6 +231,7 @@
<Folder Include="DUTs\Modbus" /> <Folder Include="DUTs\Modbus" />
<Folder Include="DUTs\Modbus\HoldingRegisters" /> <Folder Include="DUTs\Modbus\HoldingRegisters" />
<Folder Include="DUTs\Modbus\ErrorWarningRegisters" /> <Folder Include="DUTs\Modbus\ErrorWarningRegisters" />
<Folder Include="DUTs\SEMI_AUTO" />
<Folder Include="GVLs" /> <Folder Include="GVLs" />
<Folder Include="POUs\Utility" /> <Folder Include="POUs\Utility" />
<Folder Include="POUs\Sunspec" /> <Folder Include="POUs\Sunspec" />
@@ -286,8 +293,8 @@
<ProjectExtensions> <ProjectExtensions>
<PlcProjectOptions> <PlcProjectOptions>
<XmlArchive> <XmlArchive>
<Data> <Data>
<o xml:space="preserve" t="OptionKey"> <o xml:space="preserve" t="OptionKey">
<v n="Name">"&lt;ProjectRoot&gt;"</v> <v n="Name">"&lt;ProjectRoot&gt;"</v>
<d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey"> <d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey">
<v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v> <v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v>
@@ -2669,16 +2676,16 @@
</d> </d>
<d n="Values" t="Hashtable" /> <d n="Values" t="Hashtable" />
</o> </o>
</Data> </Data>
<TypeList> <TypeList>
<Type n="Boolean">System.Boolean</Type> <Type n="Boolean">System.Boolean</Type>
<Type n="Hashtable">System.Collections.Hashtable</Type> <Type n="Hashtable">System.Collections.Hashtable</Type>
<Type n="Int32">System.Int32</Type> <Type n="Int32">System.Int32</Type>
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type> <Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
<Type n="String">System.String</Type> <Type n="String">System.String</Type>
<Type n="UInt32">System.UInt32</Type> <Type n="UInt32">System.UInt32</Type>
</TypeList> </TypeList>
</XmlArchive> </XmlArchive>
</PlcProjectOptions> </PlcProjectOptions>
</ProjectExtensions> </ProjectExtensions>
</Project> </Project>

File diff suppressed because one or more lines are too long

View File

@@ -11,13 +11,12 @@ VAR_INPUT
refuStringErrorsModbus : REFERENCE TO U_BMS_ERROR_REGISTER; refuStringErrorsModbus : REFERENCE TO U_BMS_ERROR_REGISTER;
END_VAR END_VAR
VAR_OUTPUT VAR_OUTPUT
xErrorLatched : BOOL;
END_VAR END_VAR
VAR VAR
_latchedVoltages : BOOL; _latchedVoltages : BOOL;
_latchedPressures : BOOL; _latchedPressures : BOOL;
_latechedTemperatures : BOOL; _latchedTemperatures : BOOL;
_xErrorLatched : BOOL;
END_VAR END_VAR
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -25,25 +24,25 @@ END_VAR
xReset := FALSE; xReset := FALSE;
_latchedVoltages := FALSE; _latchedVoltages := FALSE;
_latchedPressures := FALSE; _latchedPressures := FALSE;
_latechedTemperatures := FALSE; _latchedTemperatures := FALSE;
_xErrorLatched := FALSE; xErrorLatched := FALSE;
END_IF END_IF
IF (NOT xVoltagesInRange) AND NOT _xErrorLatched THEN IF (NOT xVoltagesInRange) AND NOT xErrorLatched THEN
_latchedVoltages := TRUE; _latchedVoltages := TRUE;
_xErrorLatched := TRUE; xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorVoltage := 1; refuStringErrorsModbus.stBitmap.bSafetyErrorVoltage := 1;
END_IF END_IF
IF (NOT xPressureInRange) AND NOT _xErrorLatched THEN IF (NOT xPressureInRange) AND NOT xErrorLatched THEN
_latchedPressures := TRUE; _latchedPressures := TRUE;
_xErrorLatched := TRUE; xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorPressure := 1; refuStringErrorsModbus.stBitmap.bSafetyErrorPressure := 1;
END_IF END_IF
IF (NOT xTemperaturesInRange) AND NOT _xErrorLatched THEN IF (NOT xTemperaturesInRange) AND NOT xErrorLatched THEN
_latechedTemperatures := TRUE; _latchedTemperatures := TRUE;
_xErrorLatched := TRUE; xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorTemperature := 1; refuStringErrorsModbus.stBitmap.bSafetyErrorTemperature := 1;
END_IF]]></ST> END_IF]]></ST>
</Implementation> </Implementation>

View File

@@ -69,7 +69,11 @@ VAR_OUTPUT
// Safety communication error // Safety communication error
{attribute 'analysis' := '-33'} {attribute 'analysis' := '-33'}
xSafetyComError AT %I* : BOOL; xSafetyComError : BOOL;
xLocalComError AT %I* : BOOL;
xTempComError AT %I* : BOOL;
xPressureComError AT %I* : BOOL;
xVoltageComError AT %I* : BOOL;
// All safetyinterlocks from safety plc are ok // All safetyinterlocks from safety plc are ok
xSafetyIntlksOk AT %I* : BOOL; xSafetyIntlksOk AT %I* : BOOL;
@@ -253,6 +257,8 @@ xAllModulesInAutoMode := TRUE;
_fbSafetyResetImpulseGen(); _fbSafetyResetImpulseGen();
xSafetyComError := xLocalComError OR xTempComError OR xPressureComError OR xVoltageComError;
// =============================== // ===============================
// DC current measurement // DC current measurement
// =============================== // ===============================

View File

@@ -226,6 +226,10 @@ VAR
// Pumps ready // Pumps ready
_xPumpsReady : BOOL; _xPumpsReady : BOOL;
_xSemiAutoEnabled : BOOL;
_xEnableInternal : BOOL;
// Indicate if it ise the first cycle // Indicate if it ise the first cycle
xFirstCycle : BOOL := TRUE; xFirstCycle : BOOL := TRUE;
END_VAR END_VAR
@@ -263,6 +267,8 @@ END_VAR
xFirstCycle := FALSE; xFirstCycle := FALSE;
END_IF END_IF
_xEnableInternal := xEnable OR _xSemiAutoEnabled;
// Manual mode trigger // Manual mode trigger
_tonManualMode(IN := (xAllToManualMode AND xReleaseManualMode), PT := T#10S); _tonManualMode(IN := (xAllToManualMode AND xReleaseManualMode), PT := T#10S);
@@ -283,6 +289,33 @@ IF _rtrigSwitchToAutoMode.Q THEN
_fbNegolytPumpInlet.ReqAutomaticMode(); _fbNegolytPumpInlet.ReqAutomaticMode();
END_IF END_IF
// Check semi auto mode buttons
IF stHMIInterface.stButtonSemiAutoEnable.xRequest AND (eStringOperatingMode = E_STRING_OPERATING_MODE.SEMI_AUTO) THEN
stHMIInterface.stButtonSemiAutoEnable.xRequest := FALSE;
_xSemiAutoEnabled := TRUE;
END_IF
IF stHMIInterface.stButtonSemiAutoDisable.xRequest THEN
stHMIInterface.stButtonSemiAutoDisable.xRequest := FALSE;
_xSemiAutoEnabled := FALSE;
END_IF
IF (eStringOperatingMode <> E_STRING_OPERATING_MODE.SEMI_AUTO) AND _xSemiAutoEnabled THEN
_xSemiAutoEnabled := FALSE;
END_IF
stHMIInterface.stButtonSemiAutoEnable.xRelease := (eStringOperatingMode = E_STRING_OPERATING_MODE.SEMI_AUTO) AND (NOT _xSemiAutoEnabled);
stHMIInterface.stButtonSemiAutoDisable.xRelease := (eStringOperatingMode = E_STRING_OPERATING_MODE.SEMI_AUTO) AND _xSemiAutoEnabled;
IF _xSemiAutoEnabled THEN
stHMIInterface.stButtonSemiAutoEnable.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
stHMIInterface.stButtonSemiAutoDisable.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
ELSE
stHMIInterface.stButtonSemiAutoEnable.eFeedback := E_HMI_BUTTON_FEEDBACK.NONE;
stHMIInterface.stButtonSemiAutoDisable.eFeedback := E_HMI_BUTTON_FEEDBACK.ACTIVE;
END_IF
// Reset MCB logic // Reset MCB logic
_tofResetMCB(IN := xConfirmAlarms); _tofResetMCB(IN := xConfirmAlarms);
xResetMCB := _tofResetMCB.Q; xResetMCB := _tofResetMCB.Q;
@@ -945,7 +978,7 @@ _fbNegolytPumpInlet.Name := CONCAT(_sName, ' - Negolyt segment inlet');]]></ST>
CASE _iState OF CASE _iState OF
0: // Off 0: // Off
// Start in enable // Start in enable
IF xEnable AND (NOT xStartBalancing) AND _xAllComponentsInAutomatic AND (NOT _xErrorActive) THEN IF _xEnableInternal AND (NOT xStartBalancing) AND _xAllComponentsInAutomatic AND (NOT _xErrorActive) THEN
_xReleaseManualMode := FALSE; _xReleaseManualMode := FALSE;
_timUnitStartupWaitTime := GVL_CONFIG.timUnitStartupTime; _timUnitStartupWaitTime := GVL_CONFIG.timUnitStartupTime;
_iState := 10; _iState := 10;
@@ -954,7 +987,7 @@ CASE _iState OF
END_IF END_IF
// Start in balancing mode // Start in balancing mode
IF (NOT xEnable) AND xStartBalancing AND _xAllComponentsInAutomatic AND (NOT _xErrorActive) THEN IF (NOT _xEnableInternal) AND xStartBalancing AND _xAllComponentsInAutomatic AND (NOT _xErrorActive) THEN
_xReleaseManualMode := FALSE; _xReleaseManualMode := FALSE;
xBalancingDone := FALSE; xBalancingDone := FALSE;
_timUnitStartupWaitTime := GVL_CONFIG.timUnitBalancingStartupTime; _timUnitStartupWaitTime := GVL_CONFIG.timUnitBalancingStartupTime;
@@ -987,7 +1020,7 @@ CASE _iState OF
END_IF END_IF
// If enable signal is lost // If enable signal is lost
IF ((NOT xEnable) AND (NOT xStartBalancing)) THEN IF ((NOT _xEnableInternal) AND (NOT xStartBalancing)) THEN
stHMIInterface.eStatus := E_COMPONENT_STATUS.SHUTDOWN; stHMIInterface.eStatus := E_COMPONENT_STATUS.SHUTDOWN;
_iState := 40; _iState := 40;
END_IF END_IF
@@ -998,7 +1031,7 @@ CASE _iState OF
_iState := 1000; _iState := 1000;
END_IF END_IF
IF (NOT xEnable) AND NOT xStartBalancing THEN IF (NOT _xEnableInternal) AND NOT xStartBalancing THEN
_iState := 51; _iState := 51;
END_IF END_IF
@@ -1006,18 +1039,18 @@ CASE _iState OF
_tonStartupCheck(In := TRUE, PT := _timUnitStartupWaitTime); _tonStartupCheck(In := TRUE, PT := _timUnitStartupWaitTime);
// After some time, check if all values are ok // After some time, check if all values are ok
IF _tonStartupCheck.Q THEN IF _tonStartupCheck.Q THEN // OR ((_fbVoltageSegment.rScaledValue > 70.0) AND (NOT xStartBalancing))
_tonStartupCheck(In := FALSE); _tonStartupCheck(In := FALSE);
IF xEnable AND (NOT xStartBalancing) THEN IF _xEnableInternal AND (NOT xStartBalancing) THEN
_iState := 31; _iState := 31;
ELSIF (NOT xEnable) AND xStartBalancing THEN ELSIF (NOT _xEnableInternal) AND xStartBalancing THEN
xReady := TRUE; xReady := TRUE;
_iState := 69; _iState := 69;
END_IF END_IF
END_IF END_IF
// If enable signal is lost, goto shutdown // If enable signal is lost, goto shutdown
IF (NOT xEnable) AND (NOT xStartBalancing) THEN IF (NOT _xEnableInternal) AND (NOT xStartBalancing) THEN
stHMIInterface.eStatus := E_COMPONENT_STATUS.SHUTDOWN; stHMIInterface.eStatus := E_COMPONENT_STATUS.SHUTDOWN;
_iState := 40; _iState := 40;
END_IF END_IF
@@ -1065,7 +1098,7 @@ CASE _iState OF
END_IF END_IF
// Continue on normal startup path // Continue on normal startup path
IF xEnable THEN IF _xEnableInternal THEN
stHMIInterface.eStatus := E_COMPONENT_STATUS.ON; stHMIInterface.eStatus := E_COMPONENT_STATUS.ON;
_iState := 35; _iState := 35;
END_IF END_IF
@@ -1080,7 +1113,7 @@ CASE _iState OF
END_IF END_IF
// If enable signal is lost, goto shutdown // If enable signal is lost, goto shutdown
IF (NOT xEnable) THEN IF (NOT _xEnableInternal) THEN
_iState := 40; _iState := 40;
END_IF END_IF
@@ -1088,7 +1121,7 @@ CASE _iState OF
_rSetpointNegolytPumpInlet := GVL_CONFIG.rPumpNegolytOnPower; _rSetpointNegolytPumpInlet := GVL_CONFIG.rPumpNegolytOnPower;
_rSetpointPosolytPumpInlet := GVL_CONFIG.rPumpPosolytOnPower; _rSetpointPosolytPumpInlet := GVL_CONFIG.rPumpPosolytOnPower;
IF (NOT xEnable) THEN IF (NOT _xEnableInternal) THEN
stHMIInterface.eStatus := E_COMPONENT_STATUS.SHUTDOWN; stHMIInterface.eStatus := E_COMPONENT_STATUS.SHUTDOWN;
_iState := 40; _iState := 40;
END_IF END_IF
@@ -1099,10 +1132,13 @@ CASE _iState OF
END_IF END_IF
40: // Close all valves 40: // Close all valves
_fbNegolytValveTankOutlet.ReqAutomaticClose();
_fbPosolytValveTankOutlet.ReqAutomaticClose();
xReady := FALSE; xReady := FALSE;
_iState := 45; IF (NOT _fbNegolytValveTankOutlet.xError) AND (NOT _fbPosolytValveTankOutlet.xError) THEN
_fbNegolytValveTankOutlet.ReqAutomaticClose();
_fbPosolytValveTankOutlet.ReqAutomaticClose();
_iState := 45;
END_IF
45: // Wait for valves to be closed 45: // Wait for valves to be closed
IF _fbNegolytValveTankOutlet.IsClosed AND _fbPosolytValveTankOutlet.IsClosed THEN IF _fbNegolytValveTankOutlet.IsClosed AND _fbPosolytValveTankOutlet.IsClosed THEN
@@ -1123,7 +1159,7 @@ CASE _iState OF
END_IF END_IF
// Check for restart condition // Check for restart condition
IF xEnable AND (NOT _xErrorActive) THEN IF _xEnableInternal AND (NOT _xErrorActive) THEN
_iState := 0; _iState := 0;
END_IF END_IF
@@ -1140,7 +1176,7 @@ CASE _iState OF
END_IF END_IF
// Check for restart condition // Check for restart condition
IF (xEnable OR xStartBalancing) AND (NOT _xErrorActive) THEN IF (_xEnableInternal OR xStartBalancing) AND (NOT _xErrorActive) THEN
xShutdownDischargeAllowed := FALSE; xShutdownDischargeAllowed := FALSE;
xInShutdownDischargeMode := FALSE; xInShutdownDischargeMode := FALSE;
_iState := 0; _iState := 0;
@@ -1161,7 +1197,7 @@ CASE _iState OF
END_IF END_IF
// Check for restart condition // Check for restart condition
IF xEnable AND (NOT _xErrorActive) THEN IF _xEnableInternal AND (NOT _xErrorActive) THEN
xShutdownDischargeAllowed := FALSE; xShutdownDischargeAllowed := FALSE;
xInShutdownDischargeMode := FALSE; xInShutdownDischargeMode := FALSE;
_iState := 0; _iState := 0;
@@ -1194,7 +1230,7 @@ CASE _iState OF
END_IF END_IF
// Check for restart condition // Check for restart condition
IF xEnable AND (NOT _xErrorActive) THEN IF _xEnableInternal AND (NOT _xErrorActive) THEN
stHMIInterface.eStatus := E_COMPONENT_STATUS.OFF; stHMIInterface.eStatus := E_COMPONENT_STATUS.OFF;
_iState := 0; _iState := 0;
END_IF END_IF
@@ -1277,11 +1313,11 @@ CASE _iState OF
END_IF END_IF
// Check for restart condition // Check for restart condition
IF (NOT xEnable) AND xError THEN IF (NOT _xEnableInternal) AND xError THEN
xError := FALSE; xError := FALSE;
END_IF END_IF
IF (NOT xError) AND (xEnable OR xStartBalancing) THEN IF (NOT xError) AND (_xEnableInternal OR xStartBalancing) THEN
_iState := 0; _iState := 0;
END_IF END_IF
@@ -1306,7 +1342,7 @@ CASE _iState OF
1001: // Alarm active 1001: // Alarm active
// Only allow reset when enable is deactivated to avoid an // Only allow reset when enable is deactivated to avoid an
// automatic restart of the unit // automatic restart of the unit
IF (NOT _xErrorActive) AND (NOT xEnable) AND (NOT xStartBalancing) AND _xPumpsReady AND xConfirmAlarms THEN IF (NOT _xErrorActive) AND (NOT _xEnableInternal) AND (NOT xStartBalancing) AND _xPumpsReady AND xConfirmAlarms THEN
xError := FALSE; xError := FALSE;
IF (_fbVoltageSegment.rScaledValue >= GVL_CONFIG.rPumpshutoffThreshold) THEN IF (_fbVoltageSegment.rScaledValue >= GVL_CONFIG.rPumpshutoffThreshold) THEN
_iState := 1002; _iState := 1002;

View File

@@ -172,12 +172,15 @@ VAR
_arPowerString : ARRAY[0..(GVL_CONFIG.uiNumberOfStrings-1)] OF REAL; _arPowerString : ARRAY[0..(GVL_CONFIG.uiNumberOfStrings-1)] OF REAL;
// Temperature sensor SCS String 1 // Temperature sensor SCS String 1
{attribute 'OPC.UA.DA' := '0'}
_fbTempCabinetSCSString1 : FB_AnalogInput('String 1 - SCS - T1_Cabinet'); _fbTempCabinetSCSString1 : FB_AnalogInput('String 1 - SCS - T1_Cabinet');
// Temperature sensor SCS String 1 // Temperature sensor SCS String 1
{attribute 'OPC.UA.DA' := '0'}
_fbTempCabinetSCSString2 : FB_AnalogInput('String 2 - SCS - T1_Cabinet'); _fbTempCabinetSCSString2 : FB_AnalogInput('String 2 - SCS - T1_Cabinet');
// Temperature sensor BMS cabinet // Temperature sensor BMS cabinet
{attribute 'OPC.UA.DA' := '0'}
_fbTempCabinetBMS : FB_AnalogInput('BMS - T1_Cabinet'); _fbTempCabinetBMS : FB_AnalogInput('BMS - T1_Cabinet');
_ui : UINT := 0; _ui : UINT := 0;
@@ -234,6 +237,10 @@ END_VAR
_xFirstCycle := FALSE; _xFirstCycle := FALSE;
_xGetPowerMeterData := TRUE; _xGetPowerMeterData := TRUE;
_fbPIControl.FB_Init(FALSE, FALSE);
_fbPT1CVAntiAliasFilter.FB_Init(false, false);
_fbBatteryFullMessage.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.BatteryFull, 0); _fbBatteryFullMessage.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.BatteryFull, 0);
_fbBatteryEmptyMessage.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.BatteryEmpty, 0); _fbBatteryEmptyMessage.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.BatteryEmpty, 0);
@@ -978,6 +985,13 @@ CASE _eBMSControlMode OF
END_IF END_IF
SM_AUTO(); SM_AUTO();
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := REAL_TO_DINT(_rAutoPowerRequest); GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := REAL_TO_DINT(_rAutoPowerRequest);
E_BMS_CONTROL_MODE.SEMI_AUTO:
_eStringOpMode := E_STRING_OPERATING_MODE.SEMI_AUTO;
IF (GVL_SCADA.eRequestedControlMode <> E_BMS_CONTROL_MODE.SEMI_AUTO) THEN
_eBMSControlMode := GVL_SCADA.eRequestedControlMode;
END_IF
END_CASE END_CASE
GVL_SCADA.xCanChangeControlMode := _xCanChangeMode; GVL_SCADA.xCanChangeControlMode := _xCanChangeMode;
@@ -1013,7 +1027,7 @@ GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bError := _xErrorActive OR _xE
// Call safety fb // Call safety fb
_fbSafety(refuStringErrorsModbus := GVL_MODBUS.stBMSErrorReg.wBMSErrorActive); _fbSafety(refuStringErrorsModbus := GVL_MODBUS.stBMSErrorReg.wBMSErrorActive, xReset := _xConfirmAlarms);
// Check if all modules are in auto mode // Check if all modules are in auto mode
IF _xStringsInAutoMode AND _fbNoAutomaticModeAlarm.bRaised THEN IF _xStringsInAutoMode AND _fbNoAutomaticModeAlarm.bRaised THEN
@@ -1347,8 +1361,8 @@ _fbTowerLight(
END_IF END_IF
45: // Wait for shutdown of string to be done 45: // Wait for shutdown of string to be done
_xCanChangeMode := TRUE;
IF (NOT _xStringsInSchutdownDischargeMode) AND _xStringsOff THEN IF (NOT _xStringsInSchutdownDischargeMode) AND _xStringsOff THEN
_xCanChangeMode := TRUE;
GVL_MODBUS.stModbusEMSComm.stModbusReg11.eBatteryStatus := E_BATTERY_STATUS.OFF; GVL_MODBUS.stModbusEMSComm.stModbusReg11.eBatteryStatus := E_BATTERY_STATUS.OFF;
GVL_MODBUS.stModbusEMSComm.stModbusReg11.eChargeStatus := E_CHARGE_STATUS.UNDEFINED; GVL_MODBUS.stModbusEMSComm.stModbusReg11.eChargeStatus := E_CHARGE_STATUS.UNDEFINED;
GVL_SCADA.eCycleStatus := E_CYCLE_STATUS.OFF; GVL_SCADA.eCycleStatus := E_CYCLE_STATUS.OFF;

View File

@@ -716,7 +716,7 @@ CASE _iStateCyclicData OF
_iStateCyclicData := 61; _iStateCyclicData := 61;
// If there was no error and the converter has no error continue // If there was no error and the converter has no error continue
IF (NOT _fbReadACValues.bError) THEN IF (NOT _fbReadACValues.bError) THEN
stCurrentValues.rActACCurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[0]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4]))); stCurrentValues.rActACCurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[0]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4])))*0.33333333;
stCurrentValues.rActtACPhaseACurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[1]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4]))); stCurrentValues.rActtACPhaseACurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[1]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4])));
stCurrentValues.rActtACPhaseBCurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[2]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4]))); stCurrentValues.rActtACPhaseBCurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[2]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4])));
stCurrentValues.rActtACPhaseCCurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[3]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4]))); stCurrentValues.rActtACPhaseCCurrent := LREAL_TO_REAL(WORD_TO_INT(_awCurrentACValues[3]) * EXPT(10,WORD_TO_INT(_awCurrentACValues[4])));

View File

@@ -18,7 +18,7 @@ END_VAR
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[// Calculate output <ST><![CDATA[// Calculate output
rOutput := _rOutputLast + (rInput - _rOutputLast) * (_rT / (TIME_TO_LREAL(timT) + _rT)); rOutput := LREAL_TO_REAL(_rOutputLast + (rInput - _rOutputLast) * (_rT / (TIME_TO_LREAL(timT) + _rT)));
// Save last output // Save last output
_rOutputLast := rOutput;]]></ST> _rOutputLast := rOutput;]]></ST>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<GlobalVariables Crc="655258231" Id="17efef27-d62c-44cc-bcda-53295e47e322" FileFormatVersion="1.0"> <GlobalVariables Crc="3022364722" Id="17efef27-d62c-44cc-bcda-53295e47e322" FileFormatVersion="1.0">
<Variable Id="db26e311-170d-4aa0-aea3-8a474820d8d7"> <Variable Id="db26e311-170d-4aa0-aea3-8a474820d8d7">
<Name>VoltageMod1Unit1</Name> <Name>VoltageMod1Unit1</Name>
<SourceUsages> <SourceUsages>
@@ -1365,15 +1365,60 @@
</GroupPortUsage> </GroupPortUsage>
</TargetUsages> </TargetUsages>
</Variable> </Variable>
<Variable Id="3115e09c-4ff6-4e7c-ac08-59104c519b35"> <Variable Id="65afe06a-ede2-4734-85ef-6cff01bdcbdb">
<Name>xComErrorActive</Name> <Name>xComErrorPressure</Name>
<SourceUsages> <SourceUsages>
<GroupPortUsage Id="e710c609-d9b8-42ca-bbd8-3c66bb3aca41"> <GroupPortUsage Id="d65bedf7-c881-4c07-ba13-368a18de4eaa">
<ModelElementId>e6b9f2f2-2ca1-4a06-901f-6d75cf7ed2bb</ModelElementId>
</GroupPortUsage>
</SourceUsages>
<TargetUsages>
<AliasDeviceIoUsage Id="7d9d2e62-73f2-4cc2-a23a-2164c52c56c5">
<SdsId>66</SdsId>
<ChannelId>1</ChannelId>
<FunctionId>1131179972</FunctionId>
</AliasDeviceIoUsage>
</TargetUsages>
</Variable>
<Variable Id="419bfaee-8148-436e-8214-0e8104210bb3">
<Name>xComErrorVoltage</Name>
<SourceUsages>
<GroupPortUsage Id="546adc87-bb03-48a1-9bd4-7dfb2f6170d9">
<ModelElementId>8727fc5d-68ba-4b19-883b-349f4970425b</ModelElementId>
</GroupPortUsage>
</SourceUsages>
<TargetUsages>
<AliasDeviceIoUsage Id="bf5478d2-e9f3-4f79-bb37-c277a7463bc1">
<SdsId>65</SdsId>
<ChannelId>1</ChannelId>
<FunctionId>1131179972</FunctionId>
</AliasDeviceIoUsage>
</TargetUsages>
</Variable>
<Variable Id="41006e6b-d1f4-407f-bff6-f805de3fac8c">
<Name>xComErrorTemp</Name>
<SourceUsages>
<GroupPortUsage Id="8339c898-074a-484e-b550-1568e8f48f62">
<ModelElementId>9621641d-5940-4627-b710-506f133cae40</ModelElementId>
</GroupPortUsage>
</SourceUsages>
<TargetUsages>
<AliasDeviceIoUsage Id="44e0a173-c570-41d6-9bf3-8afa0cada326">
<SdsId>67</SdsId>
<ChannelId>1</ChannelId>
<FunctionId>1131179972</FunctionId>
</AliasDeviceIoUsage>
</TargetUsages>
</Variable>
<Variable Id="fa38521f-2902-4d54-a2f8-7133beeb04fc">
<Name>xComErrorLocal</Name>
<SourceUsages>
<GroupPortUsage Id="940a6ddc-2978-43be-932d-8a0beb82e9ca">
<ModelElementId>f703e9ac-2db4-4249-8f1d-d186cc82a1e8</ModelElementId> <ModelElementId>f703e9ac-2db4-4249-8f1d-d186cc82a1e8</ModelElementId>
</GroupPortUsage> </GroupPortUsage>
</SourceUsages> </SourceUsages>
<TargetUsages> <TargetUsages>
<AliasDeviceIoUsage Id="5dbaf730-6faa-4db6-9c40-5c98034dec08"> <AliasDeviceIoUsage Id="e31dc4b8-d5eb-41e6-a29f-128682653965">
<SdsId>64</SdsId> <SdsId>64</SdsId>
<ChannelId>1</ChannelId> <ChannelId>1</ChannelId>
<FunctionId>1131179972</FunctionId> <FunctionId>1131179972</FunctionId>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1336198714" FileFormatVersion="1.9">
<AliasDeviceType>
<Type>1</Type>
<SubType>2</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>66</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>Out</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="928446250" FileFormatVersion="1.9">
<AliasDeviceType>
<Type>1</Type>
<SubType>2</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>67</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>Out</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="3333592330" FileFormatVersion="1.9">
<AliasDeviceType>
<Type>1</Type>
<SubType>2</SubType>
<VendorId>0</VendorId>
</AliasDeviceType>
<SDSID>65</SDSID>
<StandardAliasDevice>
<LinkingMode>Manual</LinkingMode>
<IO>
<Name>Out</Name>
<BitOffsMessage>0</BitOffsMessage>
<DataType>BIT</DataType>
<BitSize>1</BitSize>
</IO>
</StandardAliasDevice>
</SafetyDeviceDesc>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<safetyApplication Crc="3609515033" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="30895aa4-60ed-464f-bf62-57093e34a5cd" name="" mapState="false" mapDiag="false" groupOrderId="3" passificationAllowed="false" temporaryDeactivationAllowed="false" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage"> <safetyApplication Crc="3397446562" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="30895aa4-60ed-464f-bf62-57093e34a5cd" name="" mapState="false" mapDiag="false" groupOrderId="3" passificationAllowed="false" temporaryDeactivationAllowed="false" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
<networks> <networks>
<safetyApplicationHasNetworks Id="fa7b61b3-cd09-4aad-852c-cf1694f2b916"> <safetyApplicationHasNetworks Id="fa7b61b3-cd09-4aad-852c-cf1694f2b916">
<Network Id="2f7a1aef-e34f-4166-a453-da506dfacac0" name="Network4" networkName="DC_CB_Allowed_Check" intId="4" networkOrderId="1"> <Network Id="2f7a1aef-e34f-4166-a453-da506dfacac0" name="Network4" networkName="DC_CB_Allowed_Check" intId="4" networkOrderId="1">
@@ -471,8 +471,8 @@
<safetyApplicationHasTwinSAFEGroupAliasPort Id="6548e606-f7ab-47c2-8544-e8a7cdb84718"> <safetyApplicationHasTwinSAFEGroupAliasPort Id="6548e606-f7ab-47c2-8544-e8a7cdb84718">
<twinSAFEGroupAliasPort Id="f703e9ac-2db4-4249-8f1d-d186cc82a1e8" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0"> <twinSAFEGroupAliasPort Id="f703e9ac-2db4-4249-8f1d-d186cc82a1e8" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0">
<groupPortGlobalVariableReferences> <groupPortGlobalVariableReferences>
<twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences Id="aeaab5cd-df84-4b6c-99f0-0735972b5c4f"> <twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences Id="9b858219-6530-4985-86d4-460e7f8f1cb1">
<groupPortGlobalVariableReference Id="4b3093b5-c5b0-4cf5-8ec1-a29405eeae70" variableId="3115e09c-4ff6-4e7c-ac08-59104c519b35" lastKnownPath="GVL1.xComErrorActive" /> <groupPortGlobalVariableReference Id="fe995b5c-8053-430a-9089-4a3e895c025a" variableId="fa38521f-2902-4d54-a2f8-7133beeb04fc" lastKnownPath="GVL1.xComErrorLocal" />
</twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences> </twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences>
</groupPortGlobalVariableReferences> </groupPortGlobalVariableReferences>
</twinSAFEGroupAliasPort> </twinSAFEGroupAliasPort>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<safetyApplicationLanguageDiagram Crc="71004029" dslVersion="1.5.0.0" Id="b1b6b4f5-2a37-4725-94da-4b4e0499132e" absoluteBounds="0, 0, 28.875, 23.125" name="TwinSAFE"> <safetyApplicationLanguageDiagram Crc="2095529333" dslVersion="1.5.0.0" Id="b1b6b4f5-2a37-4725-94da-4b4e0499132e" absoluteBounds="0, 0, 28.875, 23.25" name="TwinSAFE">
<safetyApplicationMoniker name="/" /> <safetyApplicationMoniker name="/" />
<nestedChildShapes> <nestedChildShapes>
<networkSwimLane Id="cdd3abf9-920f-4dee-bac6-a51b58482f55" absoluteBounds="0, 0, 28.875, 4.25"> <networkSwimLane Id="cdd3abf9-920f-4dee-bac6-a51b58482f55" absoluteBounds="0, 0, 28.875, 4.25">
@@ -405,7 +405,7 @@
</wiredLinkConnector> </wiredLinkConnector>
</nestedChildShapes> </nestedChildShapes>
</networkSwimLane> </networkSwimLane>
<networkSwimLane Id="dcf3aa39-df87-4286-ac6f-ffcaf0d36425" absoluteBounds="0, 19.075, 28.875, 4"> <networkSwimLane Id="dcf3aa39-df87-4286-ac6f-ffcaf0d36425" absoluteBounds="0, 19.075, 28.875, 4.125">
<networkMoniker name="//Network6" /> <networkMoniker name="//Network6" />
<nestedChildShapes> <nestedChildShapes>
<fBDecoupleShape Id="4bced9c0-49d5-4e34-8c51-e502c612ee6d" absoluteBounds="1.75, 19.575, 2.75, 3.25"> <fBDecoupleShape Id="4bced9c0-49d5-4e34-8c51-e502c612ee6d" absoluteBounds="1.75, 19.575, 2.75, 3.25">

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<safetyApplication Crc="3282242418" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="530dd5e0-70c2-408e-8aef-31b019560f77" name="" mapState="false" mapDiag="false" groupOrderId="1" passificationAllowed="false" temporaryDeactivationAllowed="true" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage"> <safetyApplication Crc="261570922" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="530dd5e0-70c2-408e-8aef-31b019560f77" name="" mapState="false" mapDiag="false" groupOrderId="1" passificationAllowed="false" temporaryDeactivationAllowed="true" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
<networks> <networks>
<safetyApplicationHasNetworks Id="ae4ed36b-495f-4f3b-80e4-fd631e01e116"> <safetyApplicationHasNetworks Id="ae4ed36b-495f-4f3b-80e4-fd631e01e116">
<Network Id="1a003e92-2cb1-4b08-9b91-1e7de60eb570" name="Network1" networkName="Network1" intId="1" networkOrderId="0"> <Network Id="1a003e92-2cb1-4b08-9b91-1e7de60eb570" name="Network1" networkName="Network1" intId="1" networkOrderId="0">
@@ -692,7 +692,13 @@
<twinSAFEGroupAliasPort Id="1aaa08f1-2d6d-4c6b-9c55-a3ec9c92559e" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" /> <twinSAFEGroupAliasPort Id="1aaa08f1-2d6d-4c6b-9c55-a3ec9c92559e" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort> </safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="df40833d-74f8-49aa-a053-0a45d992641a"> <safetyApplicationHasTwinSAFEGroupAliasPort Id="df40833d-74f8-49aa-a053-0a45d992641a">
<twinSAFEGroupAliasPort Id="e6b9f2f2-2ca1-4a06-901f-6d75cf7ed2bb" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0" /> <twinSAFEGroupAliasPort Id="e6b9f2f2-2ca1-4a06-901f-6d75cf7ed2bb" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0">
<groupPortGlobalVariableReferences>
<twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences Id="05fa43f3-e00d-4695-871d-7d0a632dc871">
<groupPortGlobalVariableReference Id="fff88d31-63ff-41bf-9c80-0d5cad79b635" variableId="65afe06a-ede2-4734-85ef-6cff01bdcbdb" lastKnownPath="GVL1.xComErrorPressure" />
</twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences>
</groupPortGlobalVariableReferences>
</twinSAFEGroupAliasPort>
</safetyApplicationHasTwinSAFEGroupAliasPort> </safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="9dd1305d-2e3d-4a2d-8bd2-be443273e924"> <safetyApplicationHasTwinSAFEGroupAliasPort Id="9dd1305d-2e3d-4a2d-8bd2-be443273e924">
<twinSAFEGroupAliasPort Id="951a23a4-e7e4-45aa-9b65-580f6aeb8a31" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" /> <twinSAFEGroupAliasPort Id="951a23a4-e7e4-45aa-9b65-580f6aeb8a31" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project Crc="837982561" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <Project Crc="3639840008" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
@@ -27,7 +27,7 @@
<TextBox /> <TextBox />
<AddMultiSettingDocuments>False</AddMultiSettingDocuments> <AddMultiSettingDocuments>False</AddMultiSettingDocuments>
<AddHashValueTablePages>False</AddHashValueTablePages> <AddHashValueTablePages>False</AddHashValueTablePages>
<NextSdsId>65</NextSdsId> <NextSdsId>68</NextSdsId>
<SortMode>2</SortMode> <SortMode>2</SortMode>
<Name>StringSafetyPLC</Name> <Name>StringSafetyPLC</Name>
</PropertyGroup> </PropertyGroup>
@@ -46,8 +46,11 @@
<None Include="LocalSafety\Alias Devices\GlobalSlaveEStopInterface.sds" /> <None Include="LocalSafety\Alias Devices\GlobalSlaveEStopInterface.sds" />
<None Include="LocalSafety\Alias Devices\PLCCloseDCCB.sds" /> <None Include="LocalSafety\Alias Devices\PLCCloseDCCB.sds" />
<None Include="LocalSafety\Alias Devices\PLCResetLocalMon.sds" /> <None Include="LocalSafety\Alias Devices\PLCResetLocalMon.sds" />
<None Include="LocalSafety\Alias Devices\PressureComError.sds" />
<None Include="LocalSafety\Alias Devices\Run.sds" /> <None Include="LocalSafety\Alias Devices\Run.sds" />
<None Include="LocalSafety\Alias Devices\SafetyComError.sds" /> <None Include="LocalSafety\Alias Devices\LocalComError.sds" />
<None Include="LocalSafety\Alias Devices\TempComError.sds" />
<None Include="LocalSafety\Alias Devices\VoltageComError.sds" />
<None Include="LocalSafety\Alias Devices\xAllParamsOK.sds" /> <None Include="LocalSafety\Alias Devices\xAllParamsOK.sds" />
<None Include="LocalSafety\LocalSafety.sal" /> <None Include="LocalSafety\LocalSafety.sal" />
<None Include="LocalSafety\LocalSafety.sal.diagram"> <None Include="LocalSafety\LocalSafety.sal.diagram">

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TargetSystemConfig Crc="2694010443" Version="1.5"> <TargetSystemConfig Crc="4277523326" Version="1.5">
<TargetSystemType>HSafetyPLC</TargetSystemType> <TargetSystemType>HSafetyPLC</TargetSystemType>
<TargetSystemSubType>EL2912</TargetSystemSubType> <TargetSystemSubType>EL2912</TargetSystemSubType>
<IsExternalDevice>false</IsExternalDevice> <IsExternalDevice>false</IsExternalDevice>
@@ -7,7 +7,7 @@
<TargetSystemObjectName>=STRNG01-15K1 (EL2912)</TargetSystemObjectName> <TargetSystemObjectName>=STRNG01-15K1 (EL2912)</TargetSystemObjectName>
<SoftwareVersion>01 (V01.04) </SoftwareVersion> <SoftwareVersion>01 (V01.04) </SoftwareVersion>
<SerialNumber>4210722</SerialNumber> <SerialNumber>4210722</SerialNumber>
<ProjectCRC>31493</ProjectCRC> <ProjectCRC>15279</ProjectCRC>
<MapProjectCRC>false</MapProjectCRC> <MapProjectCRC>false</MapProjectCRC>
<MapSerialNumber>false</MapSerialNumber> <MapSerialNumber>false</MapSerialNumber>
<VersionNumber>1</VersionNumber> <VersionNumber>1</VersionNumber>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<safetyApplication Crc="2261407596" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="ff73f95d-f766-4a11-ae64-a777e602935b" name="" mapState="false" mapDiag="false" groupOrderId="2" passificationAllowed="false" temporaryDeactivationAllowed="true" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage"> <safetyApplication Crc="1729799439" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="ff73f95d-f766-4a11-ae64-a777e602935b" name="" mapState="false" mapDiag="false" groupOrderId="2" passificationAllowed="false" temporaryDeactivationAllowed="true" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
<networks> <networks>
<safetyApplicationHasNetworks Id="45bf57f5-e212-45c3-b2ae-b56f389355ac"> <safetyApplicationHasNetworks Id="45bf57f5-e212-45c3-b2ae-b56f389355ac">
<Network Id="26c2246b-bba3-4c4b-ab9b-0ae03bc71b34" name="Network1" networkName="Network1" intId="1" networkOrderId="0"> <Network Id="26c2246b-bba3-4c4b-ab9b-0ae03bc71b34" name="Network1" networkName="Network1" intId="1" networkOrderId="0">
@@ -367,7 +367,13 @@
<twinSAFEGroupAliasPort Id="09d77dc5-7d9f-4f8e-96cd-310fd638de9f" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" /> <twinSAFEGroupAliasPort Id="09d77dc5-7d9f-4f8e-96cd-310fd638de9f" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort> </safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="121d7b42-d414-4547-a1aa-983467c39a7e"> <safetyApplicationHasTwinSAFEGroupAliasPort Id="121d7b42-d414-4547-a1aa-983467c39a7e">
<twinSAFEGroupAliasPort Id="9621641d-5940-4627-b710-506f133cae40" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0" /> <twinSAFEGroupAliasPort Id="9621641d-5940-4627-b710-506f133cae40" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0">
<groupPortGlobalVariableReferences>
<twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences Id="902cc505-699a-4ac3-a141-c761ffb8793a">
<groupPortGlobalVariableReference Id="ab7be3d1-2a02-4bc9-af6f-3648c097afc2" variableId="41006e6b-d1f4-407f-bff6-f805de3fac8c" lastKnownPath="GVL1.xComErrorTemp" />
</twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences>
</groupPortGlobalVariableReferences>
</twinSAFEGroupAliasPort>
</safetyApplicationHasTwinSAFEGroupAliasPort> </safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="42d6b867-8068-4972-acea-8bf23fc1b8c0"> <safetyApplicationHasTwinSAFEGroupAliasPort Id="42d6b867-8068-4972-acea-8bf23fc1b8c0">
<twinSAFEGroupAliasPort Id="b51b8516-33ad-4a78-9faa-08096803180b" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" /> <twinSAFEGroupAliasPort Id="b51b8516-33ad-4a78-9faa-08096803180b" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<safetyApplication Crc="4179604175" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="87605930-f4c2-4c12-816d-f0103cb2103d" name="" mapState="false" mapDiag="false" groupOrderId="0" passificationAllowed="false" temporaryDeactivationAllowed="true" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage"> <safetyApplication Crc="3705949482" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="87605930-f4c2-4c12-816d-f0103cb2103d" name="" mapState="false" mapDiag="false" groupOrderId="0" passificationAllowed="false" temporaryDeactivationAllowed="true" permamentDeactivationAllowed="true" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
<networks> <networks>
<safetyApplicationHasNetworks Id="441dd36d-89fa-47c9-80b9-44936b1aca22"> <safetyApplicationHasNetworks Id="441dd36d-89fa-47c9-80b9-44936b1aca22">
<Network Id="7e322be9-60c8-4483-9173-14be8a768464" name="Network1" networkName="Network1" intId="1" networkOrderId="0"> <Network Id="7e322be9-60c8-4483-9173-14be8a768464" name="Network1" networkName="Network1" intId="1" networkOrderId="0">
@@ -337,7 +337,13 @@
<twinSAFEGroupAliasPort Id="7cdf2b31-b4f2-45d3-bc67-ff20e10cec0d" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" /> <twinSAFEGroupAliasPort Id="7cdf2b31-b4f2-45d3-bc67-ff20e10cec0d" name="FbErr" sdsId="0" channelId="0" portName="FbErr" functionId="0" />
</safetyApplicationHasTwinSAFEGroupAliasPort> </safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="66f10272-fb0a-4b50-8de1-c84490195990"> <safetyApplicationHasTwinSAFEGroupAliasPort Id="66f10272-fb0a-4b50-8de1-c84490195990">
<twinSAFEGroupAliasPort Id="8727fc5d-68ba-4b19-883b-349f4970425b" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0" /> <twinSAFEGroupAliasPort Id="8727fc5d-68ba-4b19-883b-349f4970425b" name="ComErr" sdsId="0" channelId="0" portName="ComErr" functionId="0">
<groupPortGlobalVariableReferences>
<twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences Id="777ba647-a263-439a-90bb-def82e831ebc">
<groupPortGlobalVariableReference Id="7694c42e-749a-44fe-b858-9f827baf89a3" variableId="419bfaee-8148-436e-8214-0e8104210bb3" lastKnownPath="GVL1.xComErrorVoltage" />
</twinSAFEGroupAliasPortHasGroupPortGlobalVariableReferences>
</groupPortGlobalVariableReferences>
</twinSAFEGroupAliasPort>
</safetyApplicationHasTwinSAFEGroupAliasPort> </safetyApplicationHasTwinSAFEGroupAliasPort>
<safetyApplicationHasTwinSAFEGroupAliasPort Id="041f57c6-21d4-40c8-9169-dcacfabe6844"> <safetyApplicationHasTwinSAFEGroupAliasPort Id="041f57c6-21d4-40c8-9169-dcacfabe6844">
<twinSAFEGroupAliasPort Id="23cd6dc5-be4d-4d01-9fb0-00096f04b436" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" /> <twinSAFEGroupAliasPort Id="23cd6dc5-be4d-4d01-9fb0-00096f04b436" name="OutErr" sdsId="0" channelId="0" portName="OutErr" functionId="0" />

View File

@@ -193,15 +193,6 @@
<BitOffs>136</BitOffs> <BitOffs>136</BitOffs>
</SubItem> </SubItem>
</DataType> </DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000003}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..2] OF BIT</Name>
<BitSize>3</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>3</Elements>
</ArrayInfo>
</DataType>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000002}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..1] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000002}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..1] OF BIT</Name>
<BitSize>2</BitSize> <BitSize>2</BitSize>
@@ -211,6 +202,15 @@
<Elements>2</Elements> <Elements>2</Elements>
</ArrayInfo> </ArrayInfo>
</DataType> </DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000003}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..2] OF BIT</Name>
<BitSize>3</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
<LBound>0</LBound>
<Elements>3</Elements>
</ArrayInfo>
</DataType>
<DataType> <DataType>
<Name GUID="{CFB36F3F-28DF-4B2F-BE05-E9357D2B464E}" PersistentType="true">TestBench</Name> <Name GUID="{CFB36F3F-28DF-4B2F-BE05-E9357D2B464E}" PersistentType="true">TestBench</Name>
<DisplayName TxtId=""><![CDATA[Test Bench events]]></DisplayName> <DisplayName TxtId=""><![CDATA[Test Bench events]]></DisplayName>
@@ -263,7 +263,7 @@
</System> </System>
<Plc> <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"> <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="{9C701697-89D3-568B-2A51-D299CC13321A}" TmcPath="PLC\PLC.tmc"> <Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{7A0A10A8-E570-D90E-3A50-0E33EDF44656}" TmcPath="PLC\PLC.tmc">
<Name>PLC Instance</Name> <Name>PLC Instance</Name>
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID> <CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
<Vars VarGrpType="2" AreaNo="1"> <Vars VarGrpType="2" AreaNo="1">
@@ -1308,6 +1308,18 @@
<Name>MAIN._xEmergencyStopOk</Name> <Name>MAIN._xEmergencyStopOk</Name>
<Type>BOOL</Type> <Type>BOOL</Type>
</Var> </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> <Var>
<Name>MAIN.xNAProtectionOK</Name> <Name>MAIN.xNAProtectionOK</Name>
<Type>BOOL</Type> <Type>BOOL</Type>
@@ -1321,18 +1333,6 @@
<Comment><![CDATA[ Hardware reset button]]></Comment> <Comment><![CDATA[ Hardware reset button]]></Comment>
<Type>BOOL</Type> <Type>BOOL</Type>
</Var> </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> <Var>
<Name>MAIN._uiEtherCATState</Name> <Name>MAIN._uiEtherCATState</Name>
<Comment><![CDATA[ String EtherCAT state]]></Comment> <Comment><![CDATA[ String EtherCAT state]]></Comment>
@@ -1419,8 +1419,19 @@
<Type>BOOL</Type> <Type>BOOL</Type>
</Var> </Var>
<Var> <Var>
<Name>MAIN._afbStrings[0].xSafetyComError</Name> <Name>MAIN._afbStrings[0].xLocalComError</Name>
<Comment><![CDATA[ Safety communication error]]></Comment> <Type>BOOL</Type>
</Var>
<Var>
<Name>MAIN._afbStrings[0].xTempComError</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>MAIN._afbStrings[0].xPressureComError</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>MAIN._afbStrings[0].xVoltageComError</Name>
<Type>BOOL</Type> <Type>BOOL</Type>
</Var> </Var>
<Var> <Var>
@@ -4271,8 +4282,19 @@
<Type>BOOL</Type> <Type>BOOL</Type>
</Var> </Var>
<Var> <Var>
<Name>MAIN._afbStrings[1].xSafetyComError</Name> <Name>MAIN._afbStrings[1].xLocalComError</Name>
<Comment><![CDATA[ Safety communication error]]></Comment> <Type>BOOL</Type>
</Var>
<Var>
<Name>MAIN._afbStrings[1].xTempComError</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>MAIN._afbStrings[1].xPressureComError</Name>
<Type>BOOL</Type>
</Var>
<Var>
<Name>MAIN._afbStrings[1].xVoltageComError</Name>
<Type>BOOL</Type> <Type>BOOL</Type>
</Var> </Var>
<Var> <Var>
@@ -8538,11 +8560,20 @@ Bit1: Value bigger/equal Limit2]]></Comment>
<Entry Name="LocalSafety.xAllParamsOK_61" Index="#x7000" Sub="#x02"> <Entry Name="LocalSafety.xAllParamsOK_61" Index="#x7000" Sub="#x02">
<Type>BIT</Type> <Type>BIT</Type>
</Entry> </Entry>
<Entry Name="LocalSafety.SafetyComError_64" Index="#x7000" Sub="#x03"> <Entry Name="LocalSafety.LocalComError_64" Index="#x7000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="LocalSafety.VoltageComError_65" Index="#x7000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="LocalSafety.PressureComError_66" Index="#x7000" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="LocalSafety.TempComError_67" Index="#x7000" Sub="#x06">
<Type>BIT</Type> <Type>BIT</Type>
</Entry> </Entry>
<Entry> <Entry>
<Type GUID="{18071995-0000-0000-0000-002000000005}">ARRAY [0..4] OF BIT</Type> <Type GUID="{18071995-0000-0000-0000-002000000002}">ARRAY [0..1] OF BIT</Type>
</Entry> </Entry>
</Pdo> </Pdo>
<Pdo Name="StandardOutputs" Index="#x17f0" InOut="1" Flags="#x2011" SyncMan="2"> <Pdo Name="StandardOutputs" Index="#x17f0" InOut="1" Flags="#x2011" SyncMan="2">
@@ -26772,11 +26803,20 @@ Bit1: Value bigger/equal Limit2]]></Comment>
<Entry Name="LocalSafety.xAllParamsOK_61" Index="#x7000" Sub="#x02"> <Entry Name="LocalSafety.xAllParamsOK_61" Index="#x7000" Sub="#x02">
<Type>BIT</Type> <Type>BIT</Type>
</Entry> </Entry>
<Entry Name="LocalSafety.SafetyComError_64" Index="#x7000" Sub="#x03"> <Entry Name="LocalSafety.LocalComError_64" Index="#x7000" Sub="#x03">
<Type>BIT</Type>
</Entry>
<Entry Name="LocalSafety.VoltageComError_65" Index="#x7000" Sub="#x04">
<Type>BIT</Type>
</Entry>
<Entry Name="LocalSafety.PressureComError_66" Index="#x7000" Sub="#x05">
<Type>BIT</Type>
</Entry>
<Entry Name="LocalSafety.TempComError_67" Index="#x7000" Sub="#x06">
<Type>BIT</Type> <Type>BIT</Type>
</Entry> </Entry>
<Entry> <Entry>
<Type GUID="{18071995-0000-0000-0000-002000000005}">ARRAY [0..4] OF BIT</Type> <Type GUID="{18071995-0000-0000-0000-002000000002}">ARRAY [0..1] OF BIT</Type>
</Entry> </Entry>
</Pdo> </Pdo>
<Pdo Name="StandardOutputs" Index="#x17f0" InOut="1" Flags="#x2011" SyncMan="2"> <Pdo Name="StandardOutputs" Index="#x17f0" InOut="1" Flags="#x2011" SyncMan="2">
@@ -44415,8 +44455,11 @@ Bit1: Value smaller than Limit2]]></Comment>
</OwnerB> </OwnerB>
<OwnerB Name="TIID^X103 (EtherCAT)^-41K1 (EK1100)^-48K1 (EK1122)^-10K1 X1 SCS S1 (EK1100)^=STRNG01-15K1 (EL2912)"> <OwnerB Name="TIID^X103 (EtherCAT)^-41K1 (EK1100)^-48K1 (EK1122)^-10K1 X1 SCS S1 (EK1100)^=STRNG01-15K1 (EL2912)">
<Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xDCCBOpen" VarB="StandardInputs^LocalSafety.DCCBOpen_19"/> <Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xDCCBOpen" VarB="StandardInputs^LocalSafety.DCCBOpen_19"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xSafetyComError" VarB="StandardInputs^LocalSafety.SafetyComError_64"/> <Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xLocalComError" VarB="StandardInputs^LocalSafety.LocalComError_64"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xPressureComError" VarB="StandardInputs^LocalSafety.PressureComError_66"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xSafetyIntlksOk" VarB="StandardInputs^LocalSafety.xAllParamsOK_61"/> <Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xSafetyIntlksOk" VarB="StandardInputs^LocalSafety.xAllParamsOK_61"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xTempComError" VarB="StandardInputs^LocalSafety.TempComError_67"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[0].xVoltageComError" VarB="StandardInputs^LocalSafety.VoltageComError_65"/>
<Link VarA="PlcTask Outputs^MAIN._afbStrings[0].xCloseDCCB" VarB="StandardOutputs^LocalSafety.PLCCloseDCCB_17"/> <Link VarA="PlcTask Outputs^MAIN._afbStrings[0].xCloseDCCB" VarB="StandardOutputs^LocalSafety.PLCCloseDCCB_17"/>
<Link VarA="PlcTask Outputs^MAIN._afbStrings[0].xResetSafetyDCCB" VarB="StandardOutputs^LocalSafety.PLCResetLocalMon_6"/> <Link VarA="PlcTask Outputs^MAIN._afbStrings[0].xResetSafetyDCCB" VarB="StandardOutputs^LocalSafety.PLCResetLocalMon_6"/>
<Link VarA="PlcTask Outputs^MAIN.xSafetyErrAck" VarB="StandardOutputs^LocalSafety.ErrAck_63"/> <Link VarA="PlcTask Outputs^MAIN.xSafetyErrAck" VarB="StandardOutputs^LocalSafety.ErrAck_63"/>
@@ -44435,8 +44478,11 @@ Bit1: Value smaller than Limit2]]></Comment>
</OwnerB> </OwnerB>
<OwnerB Name="TIID^X103 (EtherCAT)^-41K1 (EK1100)^-48K1 (EK1122)^-10K1 X1 SCS S2 (EK1100)^=STRNG02-15K1 (EL2912)"> <OwnerB Name="TIID^X103 (EtherCAT)^-41K1 (EK1100)^-48K1 (EK1122)^-10K1 X1 SCS S2 (EK1100)^=STRNG02-15K1 (EL2912)">
<Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xDCCBOpen" VarB="StandardInputs^LocalSafety.DCCBOpen_19"/> <Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xDCCBOpen" VarB="StandardInputs^LocalSafety.DCCBOpen_19"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xSafetyComError" VarB="StandardInputs^LocalSafety.SafetyComError_64"/> <Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xLocalComError" VarB="StandardInputs^LocalSafety.LocalComError_64"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xPressureComError" VarB="StandardInputs^LocalSafety.PressureComError_66"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xSafetyIntlksOk" VarB="StandardInputs^LocalSafety.xAllParamsOK_61"/> <Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xSafetyIntlksOk" VarB="StandardInputs^LocalSafety.xAllParamsOK_61"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xTempComError" VarB="StandardInputs^LocalSafety.TempComError_67"/>
<Link VarA="PlcTask Inputs^MAIN._afbStrings[1].xVoltageComError" VarB="StandardInputs^LocalSafety.VoltageComError_65"/>
<Link VarA="PlcTask Outputs^MAIN._afbStrings[1].xCloseDCCB" VarB="StandardOutputs^LocalSafety.PLCCloseDCCB_17"/> <Link VarA="PlcTask Outputs^MAIN._afbStrings[1].xCloseDCCB" VarB="StandardOutputs^LocalSafety.PLCCloseDCCB_17"/>
<Link VarA="PlcTask Outputs^MAIN._afbStrings[1].xResetSafetyDCCB" VarB="StandardOutputs^LocalSafety.PLCResetLocalMon_6"/> <Link VarA="PlcTask Outputs^MAIN._afbStrings[1].xResetSafetyDCCB" VarB="StandardOutputs^LocalSafety.PLCResetLocalMon_6"/>
<Link VarA="PlcTask Outputs^MAIN.xSafetyErrAck" VarB="StandardOutputs^LocalSafety.ErrAck_63"/> <Link VarA="PlcTask Outputs^MAIN.xSafetyErrAck" VarB="StandardOutputs^LocalSafety.ErrAck_63"/>