Added string startup timeout

This commit is contained in:
Matthias Heisig
2024-08-30 13:12:42 +02:00
parent 58e511438e
commit 08d2ffd136
7 changed files with 1009 additions and 844 deletions

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.4024.12"> <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
<GVL Name="GVL_CONFIG" Id="{0773bf51-0237-454d-a970-cfd896054edb}"> <GVL Name="GVL_CONFIG" Id="{0773bf51-0237-454d-a970-cfd896054edb}">
<Declaration><![CDATA[{attribute 'qualified_only'} <Declaration><![CDATA[{attribute 'qualified_only'}
VAR_GLOBAL PERSISTENT VAR_GLOBAL PERSISTENT
@@ -302,6 +302,9 @@ VAR_GLOBAL PERSISTENT
// Unit balancing wait startup time // Unit balancing wait startup time
timUnitBalancingStartupTime : TIME := T#3M; timUnitBalancingStartupTime : TIME := T#3M;
// All modules in string not ready timeout
timStringReadyTimeout : TIME := T#3M;
// Dummy to deactivate functions // Dummy to deactivate functions
xDummy : BOOL := FALSE; xDummy : BOOL := FALSE;

View File

@@ -9,7 +9,7 @@
<WriteProductVersion>true</WriteProductVersion> <WriteProductVersion>true</WriteProductVersion>
<GenerateTpy>false</GenerateTpy> <GenerateTpy>false</GenerateTpy>
<Name>PLC</Name> <Name>PLC</Name>
<ProgramVersion>3.1.4024.0</ProgramVersion> <ProgramVersion>3.1.4026.10</ProgramVersion>
<Application>{afd0b275-de2f-4006-ab0f-6826ccfce7be}</Application> <Application>{afd0b275-de2f-4006-ab0f-6826ccfce7be}</Application>
<TypeSystem>{18a2eab9-0077-4cea-9d3b-9a168bdf0814}</TypeSystem> <TypeSystem>{18a2eab9-0077-4cea-9d3b-9a168bdf0814}</TypeSystem>
<Implicit_Task_Info>{6e35f35d-280b-4da2-9c5b-fc35ab6da425}</Implicit_Task_Info> <Implicit_Task_Info>{6e35f35d-280b-4da2-9c5b-fc35ab6da425}</Implicit_Task_Info>
@@ -163,10 +163,6 @@
<DefaultResolution>Tc2_Standard, * (Beckhoff Automation GmbH)</DefaultResolution> <DefaultResolution>Tc2_Standard, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_Standard</Namespace> <Namespace>Tc2_Standard</Namespace>
</PlaceholderReference> </PlaceholderReference>
<PlaceholderReference Include="Tc2_SUPS">
<DefaultResolution>Tc2_SUPS, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_SUPS</Namespace>
</PlaceholderReference>
<PlaceholderReference Include="Tc2_System"> <PlaceholderReference Include="Tc2_System">
<DefaultResolution>Tc2_System, * (Beckhoff Automation GmbH)</DefaultResolution> <DefaultResolution>Tc2_System, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc2_System</Namespace> <Namespace>Tc2_System</Namespace>

File diff suppressed because one or more lines are too long

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.4024.12"> <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
<POU Name="FB_String" Id="{46501225-f446-4674-bfed-3be64273e576}" SpecialFunc="None"> <POU Name="FB_String" Id="{46501225-f446-4674-bfed-3be64273e576}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_String <Declaration><![CDATA[FUNCTION_BLOCK FB_String
VAR_INPUT VAR_INPUT
@@ -102,9 +102,13 @@ VAR
_fbModule2 : FB_Module(CONCAT(Name,' - Module 2')); _fbModule2 : FB_Module(CONCAT(Name,' - Module 2'));
_fbModule3 : FB_Module(CONCAT(Name,' - Module 3')); _fbModule3 : FB_Module(CONCAT(Name,' - Module 3'));
// Summed status of all module errors
_xModuleError : BOOL;
// All modules are ready // All modules are ready
_xAllModulesReady : BOOL; _xAllModulesReady : BOOL;
// All modules in shutdown discharge mode // All modules in shutdown discharge mode
_xAllModulesInShutdownDischargeMode : BOOL; _xAllModulesInShutdownDischargeMode : BOOL;
@@ -154,7 +158,10 @@ VAR
// Fault timer for inverter startup // Fault timer for inverter startup
_tonInverterStartupTimeout : TON := (PT := T#2M); _tonInverterStartupTimeout : TON := (PT := T#2M);
// Deabug delay timer for inverter shutdown // Fault timer for inverter shutdown
_tonInverterShutdownError : TON := (PT := T#10S);
// Debug delay timer for inverter shutdown
_tonInverterShutdownDelay : TON := (PT := T#10S); _tonInverterShutdownDelay : TON := (PT := T#10S);
// Timer for Safety ok timeout // Timer for Safety ok timeout
@@ -187,15 +194,9 @@ VAR PERSISTENT
END_VAR END_VAR
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[// Reset error flag <ST><![CDATA[// Reset all modules in automatic mode
xError := FALSE;
// Reset all modules in automatic mode
xAllModulesInAutoMode := TRUE; xAllModulesInAutoMode := TRUE;
// Reset safety interlocks flag
//xSafetyIntlksOk := TRUE;
// Reset Safety // Reset Safety
xResetSafetyDCCB := xResetSafety; xResetSafetyDCCB := xResetSafety;
@@ -249,18 +250,6 @@ _fbModule1(
xReleaseManualMode := xReleaseManualMode, xReleaseManualMode := xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms, xConfirmAlarms:= xConfirmAlarms,
rBalancingTargetVoltage := rSmallestSegmentVoltage); rBalancingTargetVoltage := rSmallestSegmentVoltage);
IF _fbModule1.xWarning THEN
xWarning := TRUE;
END_IF
IF _fbModule1.xError THEN
xError := TRUE;
END_IF
IF NOT _fbModule1.xAllUnitsInAutomatic THEN
xAllModulesInAutoMode := FALSE;
END_IF
// =============================== // ===============================
@@ -280,18 +269,6 @@ _fbModule2(
xReleaseManualMode := xReleaseManualMode, xReleaseManualMode := xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms, xConfirmAlarms:= xConfirmAlarms,
rBalancingTargetVoltage := rSmallestSegmentVoltage); rBalancingTargetVoltage := rSmallestSegmentVoltage);
IF _fbModule2.xWarning THEN
xWarning := TRUE;
END_IF
IF _fbModule2.xError THEN
xError := TRUE;
END_IF
IF NOT _fbModule2.xAllUnitsInAutomatic THEN
xAllModulesInAutoMode := FALSE;
END_IF
// =============================== // ===============================
@@ -310,19 +287,21 @@ _fbModule3(
xReleaseManualMode := xReleaseManualMode, xReleaseManualMode := xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms, xConfirmAlarms:= xConfirmAlarms,
rBalancingTargetVoltage := rSmallestSegmentVoltage); rBalancingTargetVoltage := rSmallestSegmentVoltage);
IF _fbModule3.xWarning THEN
xWarning := TRUE;
END_IF
IF _fbModule3.xError THEN // ===============================
xError := TRUE; // Handle modules error state
END_IF // ===============================
_xModuleError := _fbModule1.xError OR _fbModule2.xError OR _fbModule3.xError;
IF NOT _fbModule3.xAllUnitsInAutomatic THEN // ===============================
xAllModulesInAutoMode := FALSE; // Handle modules warning state
END_IF // ===============================
xWarning := _fbModule1.xWarning OR _fbModule2.xWarning OR _fbModule3.xWarning;
// ===============================
// Handle modules in auto mode
// ===============================
xAllModulesInAutoMode := _fbModule1.xAllUnitsInAutomatic AND _fbModule2.xAllUnitsInAutomatic AND _fbModule3.xAllUnitsInAutomatic;
// =============================== // ===============================
// Handle shutdown discharge mode // Handle shutdown discharge mode
@@ -491,7 +470,7 @@ CASE _iState OF
_iState := 0; _iState := 0;
END_IF END_IF
IF xError THEN IF _xModuleError THEN
_xEnable := FALSE; _xEnable := FALSE;
_iState := 1000; _iState := 1000;
END_IF END_IF
@@ -609,7 +588,7 @@ CASE _iState OF
END_IF END_IF
// Shutdown // Shutdown
IF NOT xEnable THEN IF (NOT xEnable) THEN
_xEnable := FALSE; _xEnable := FALSE;
_xReleaseLimitErrorsInternal := FALSE; _xReleaseLimitErrorsInternal := FALSE;
IF GVL_CONFIG.xShutdownDischargeWithInverter THEN IF GVL_CONFIG.xShutdownDischargeWithInverter THEN
@@ -692,10 +671,35 @@ CASE _iState OF
END_IF END_IF
1000: // Error state 1000: // Error state
_xEnable := FALSE;
_xEnableInverter := FALSE;
_rPowerInverterInternal := 0.0;
xError := TRUE;
_xReleaseLimitErrorsInternal := FALSE;
// Reset timer
_tonResetPulseLength(IN := FALSE);
_tonErrorDCCBNotClosed(IN := FALSE);
_iState := 1005;
1005: // Wait for inverter to be off
_tonInverterShutdownError(IN := TRUE);
// If inverter is not shutting down, hard disconnect it
IF (NOT _fbInverter.xActive) OR _tonInverterShutdownError.Q THEN
_tonInverterShutdownError(IN := FALSE);
xCloseDCCB := FALSE;
_iState := 1010;
END_IF
1010: // Error idle state
// Leave error state only if modules are deactivated // Leave error state only if modules are deactivated
IF NOT xEnable THEN IF (NOT xEnable) AND (NOT _xModuleError) THEN
_tonResetPulseLength.IN := FALSE; xError := FALSE;
_tonErrorDCCBNotClosed.IN := FALSE;
_iState := 0; _iState := 0;
END_IF END_IF
END_CASE END_CASE
@@ -799,7 +803,22 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
</Set> </Set>
</Property> </Property>
<LineIds Name="FB_String"> <LineIds Name="FB_String">
<LineId Id="4873" Count="251" /> <LineId Id="4876" Count="1" />
<LineId Id="4881" Count="53" />
<LineId Id="4947" Count="18" />
<LineId Id="4978" Count="17" />
<LineId Id="5966" Count="1" />
<LineId Id="5965" Count="0" />
<LineId Id="5969" Count="0" />
<LineId Id="5968" Count="0" />
<LineId Id="5971" Count="2" />
<LineId Id="5970" Count="0" />
<LineId Id="5008" Count="0" />
<LineId Id="5976" Count="0" />
<LineId Id="5978" Count="1" />
<LineId Id="5977" Count="0" />
<LineId Id="5975" Count="0" />
<LineId Id="5009" Count="115" />
<LineId Id="5776" Count="0" /> <LineId Id="5776" Count="0" />
<LineId Id="5775" Count="0" /> <LineId Id="5775" Count="0" />
<LineId Id="5773" Count="0" /> <LineId Id="5773" Count="0" />
@@ -818,7 +837,29 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="5581" Count="2" /> <LineId Id="5581" Count="2" />
<LineId Id="5585" Count="1" /> <LineId Id="5585" Count="1" />
<LineId Id="5584" Count="0" /> <LineId Id="5584" Count="0" />
<LineId Id="5312" Count="86" /> <LineId Id="5312" Count="51" />
<LineId Id="5985" Count="2" />
<LineId Id="5980" Count="0" />
<LineId Id="5995" Count="1" />
<LineId Id="5990" Count="0" />
<LineId Id="5993" Count="0" />
<LineId Id="5991" Count="1" />
<LineId Id="5994" Count="0" />
<LineId Id="5988" Count="0" />
<LineId Id="5999" Count="1" />
<LineId Id="6009" Count="1" />
<LineId Id="6013" Count="0" />
<LineId Id="6001" Count="0" />
<LineId Id="6008" Count="0" />
<LineId Id="6002" Count="0" />
<LineId Id="6004" Count="0" />
<LineId Id="6003" Count="0" />
<LineId Id="6005" Count="1" />
<LineId Id="5981" Count="0" />
<LineId Id="5989" Count="0" />
<LineId Id="5364" Count="1" />
<LineId Id="5997" Count="0" />
<LineId Id="5368" Count="30" />
<LineId Id="527" Count="0" /> <LineId Id="527" Count="0" />
</LineIds> </LineIds>
<LineIds Name="FB_String.FB_init"> <LineIds Name="FB_String.FB_init">

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.4024.12"> <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
<POU Name="MAIN" Id="{bbd7302c-91ce-4697-9f4b-743f57ca5819}" SpecialFunc="None"> <POU Name="MAIN" Id="{bbd7302c-91ce-4697-9f4b-743f57ca5819}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM MAIN <Declaration><![CDATA[PROGRAM MAIN
VAR VAR
@@ -83,7 +83,7 @@ VAR
_eBMSControlMode : E_BMS_CONTROL_MODE := E_BMS_CONTROL_MODE.AUTO_LOCAL; _eBMSControlMode : E_BMS_CONTROL_MODE := E_BMS_CONTROL_MODE.AUTO_LOCAL;
// UPS // UPS
_fbUPS : FB_S_UPS_BAPI; //_fbUPS : FB_S_UPS_BAPI;
// Safety // Safety
xSafetyRun AT %Q* : BOOL := TRUE; xSafetyRun AT %Q* : BOOL := TRUE;
@@ -129,9 +129,13 @@ VAR
_ModbusDebugTest : ST_MODBUS_REG_11; _ModbusDebugTest : ST_MODBUS_REG_11;
_fbStringReadyTimeout : TON;
_fbModbusRead : FB_MBReadRegs; _fbModbusRead : FB_MBReadRegs;
_iLength : WORD := 49; _iLength : WORD := 49;
bDebugTest : BOOL; bDebugTest : BOOL;
_wDebug1 : WORD;
_wDebug2 : WORD;
END_VAR END_VAR
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -184,7 +188,9 @@ END_IF
// =============================== // ===============================
_wEtherCATState := UINT_TO_WORD(_uiEtherCATState); _wEtherCATState := UINT_TO_WORD(_uiEtherCATState);
_xEtherCatString1Ok := (_wEtherCATState AND 16#8000) = 0; _xEtherCatString1Ok := (_wEtherCATState AND 16#8000) = 0;
_wDebug1 := (_wEtherCATState AND 16#8000);
_xEtherCatString2Ok := (_wEtherCATState AND 16#2000) = 0; _xEtherCatString2Ok := (_wEtherCATState AND 16#2000) = 0;
_wDebug2 := (_wEtherCATState AND 16#2000);
// String 1 on X1 = Port D = 0x8000 // String 1 on X1 = Port D = 0x8000
IF (NOT _xEtherCatString1Ok) AND (NOT _fbEtherCATErrorString1.bRaised) THEN IF (NOT _xEtherCatString1Ok) AND (NOT _fbEtherCATErrorString1.bRaised) THEN
@@ -251,6 +257,7 @@ _rtHardwareResetButton(CLK := _tonHardwareResetButton.Q);
// =============================== // ===============================
// Handle UPS events // Handle UPS events
// =============================== // ===============================
(*
_fbUPS( _fbUPS(
sNetID:= '', sNetID:= '',
iPLCPort:= 851, iPLCPort:= 851,
@@ -260,6 +267,7 @@ _fbUPS(
tRecoverTime:= T#10S, tRecoverTime:= T#10S,
bPowerFailDetect=> , bPowerFailDetect=> ,
eState=> ); eState=> );
*)
IF _xFirstCycle THEN IF _xFirstCycle THEN
@@ -281,7 +289,7 @@ _afbStrings[0](
xInSafetyCheckMode := _xInSafetyCheckMode, xInSafetyCheckMode := _xInSafetyCheckMode,
stHMIInterface:= GVL_SCADA.stHMIInterface[0], stHMIInterface:= GVL_SCADA.stHMIInterface[0],
xEmergencyStopOk:= _xEmergencyStopOk, xEmergencyStopOk:= _xEmergencyStopOk,
xReleaseErrors:= _xReleaseErrors AND _tonStartupDelay.Q AND _xEtherCatString1Ok, xReleaseErrors:= _xReleaseErrors AND _tonStartupDelay.Q AND _xEtherCatString1Ok AND FALSE,
xReleaseLimitErrors:= _xReleaseLimitsErrors AND _tonStartupDelay.Q, xReleaseLimitErrors:= _xReleaseLimitsErrors AND _tonStartupDelay.Q,
xReleaseManualMode := _xReleaseManualMode, xReleaseManualMode := _xReleaseManualMode,
xConfirmAlarms:= _xConfirmAlarms, xConfirmAlarms:= _xConfirmAlarms,
@@ -301,7 +309,7 @@ _afbStrings[1](
xInSafetyCheckMode := _xInSafetyCheckMode, xInSafetyCheckMode := _xInSafetyCheckMode,
stHMIInterface:= GVL_SCADA.stHMIInterface[1], stHMIInterface:= GVL_SCADA.stHMIInterface[1],
xEmergencyStopOk:= _xEmergencyStopOk, xEmergencyStopOk:= _xEmergencyStopOk,
xReleaseErrors:= _xReleaseErrors AND _tonStartupDelay.Q AND _xEtherCatString2Ok, xReleaseErrors:= _xReleaseErrors AND _tonStartupDelay.Q AND _xEtherCatString2Ok AND FALSE,
xReleaseLimitErrors:= _xReleaseLimitsErrors AND _tonStartupDelay.Q AND _xEtherCatString2Ok, xReleaseLimitErrors:= _xReleaseLimitsErrors AND _tonStartupDelay.Q AND _xEtherCatString2Ok,
xReleaseManualMode := _xReleaseManualMode, xReleaseManualMode := _xReleaseManualMode,
xConfirmAlarms:= _xConfirmAlarms, xConfirmAlarms:= _xConfirmAlarms,
@@ -492,18 +500,24 @@ END_IF]]></ST>
END_IF END_IF
10: // Wait for string to be ready 10: // Wait for string to be ready
_fbStringReadyTimeout(IN := TRUE, PT := GVL_CONFIG.timStringReadyTimeout);
IF _afbStrings[_uiDebugCurrentString].xReady AND (NOT _afbStrings[_uiDebugCurrentString].xError) THEN IF _afbStrings[_uiDebugCurrentString].xReady AND (NOT _afbStrings[_uiDebugCurrentString].xError) THEN
_fbStringReadyTimeout(IN := FALSE);
_rPowerInverter := 0.0; _rPowerInverter := 0.0;
_iState := 30; _iState := 30;
END_IF END_IF
IF _afbStrings[_uiDebugCurrentString].xError THEN IF _afbStrings[_uiDebugCurrentString].xError OR _fbStringReadyTimeout.Q THEN
_fbStringReadyTimeout(IN := FALSE);
_xEnableString := FALSE; _xEnableString := FALSE;
GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := 0; GVL_SCADA.stAutomaticModeHMI.diSetpointAutomatic := 0;
_xCanChangeMode := TRUE;
_iState := 45; _iState := 45;
END_IF END_IF
IF (ABS(_rAutoPowerRequest) < DINT_TO_REAL(GVL_CONFIG.diMinimumAbsPowerForEnable)) THEN IF (ABS(_rAutoPowerRequest) < DINT_TO_REAL(GVL_CONFIG.diMinimumAbsPowerForEnable)) THEN
_fbStringReadyTimeout(IN := FALSE);
_xEnableString := FALSE; _xEnableString := FALSE;
_xCanChangeMode := TRUE; _xCanChangeMode := TRUE;
_iState := 45; _iState := 45;
@@ -651,12 +665,12 @@ END_IF]]></ST>
IF (ABS(_rAutoPowerRequest) > DINT_TO_REAL(GVL_CONFIG.diMinimumAbsPowerForEnable)) AND (NOT _afbStrings[_uiDebugCurrentString].xError) AND _afbStrings[_uiDebugCurrentString].xAllModulesInAutoMode THEN IF (ABS(_rAutoPowerRequest) > DINT_TO_REAL(GVL_CONFIG.diMinimumAbsPowerForEnable)) AND (NOT _afbStrings[_uiDebugCurrentString].xError) AND _afbStrings[_uiDebugCurrentString].xAllModulesInAutoMode THEN
_iState := 5; _iState := 5;
END_IF END_IF
// Check for errors // Check for errors
// IF _afbStrings[0].xError OR _fbInverter.xError THEN IF _afbStrings[_uiDebugCurrentString].xError THEN
// _xEnableInverter := FALSE; _iState := 1000;
// _iState := 1000; END_IF
//END_IF
1000: // Error state 1000: // Error state
_xEnableString := FALSE; _xEnableString := FALSE;
@@ -842,7 +856,10 @@ END_CASE]]></ST>
<LineId Id="3444" Count="0" /> <LineId Id="3444" Count="0" />
<LineId Id="3264" Count="3" /> <LineId Id="3264" Count="3" />
<LineId Id="3272" Count="0" /> <LineId Id="3272" Count="0" />
<LineId Id="3298" Count="1" /> <LineId Id="3298" Count="0" />
<LineId Id="3455" Count="0" />
<LineId Id="3299" Count="0" />
<LineId Id="3456" Count="0" />
<LineId Id="3282" Count="0" /> <LineId Id="3282" Count="0" />
<LineId Id="3277" Count="0" /> <LineId Id="3277" Count="0" />
<LineId Id="3268" Count="2" /> <LineId Id="3268" Count="2" />
@@ -864,7 +881,11 @@ END_CASE]]></ST>
<LineId Id="2928" Count="0" /> <LineId Id="2928" Count="0" />
<LineId Id="2927" Count="0" /> <LineId Id="2927" Count="0" />
<LineId Id="2929" Count="1" /> <LineId Id="2929" Count="1" />
<LineId Id="2052" Count="34" /> <LineId Id="2052" Count="20" />
<LineId Id="3453" Count="0" />
<LineId Id="2073" Count="8" />
<LineId Id="3454" Count="0" />
<LineId Id="2082" Count="4" />
<LineId Id="2197" Count="0" /> <LineId Id="2197" Count="0" />
<LineId Id="2087" Count="3" /> <LineId Id="2087" Count="3" />
<LineId Id="2097" Count="2" /> <LineId Id="2097" Count="2" />
@@ -956,15 +977,21 @@ END_CASE]]></ST>
<LineId Id="195" Count="0" /> <LineId Id="195" Count="0" />
<LineId Id="7" Count="5" /> <LineId Id="7" Count="5" />
<LineId Id="242" Count="0" /> <LineId Id="242" Count="0" />
<LineId Id="13" Count="10" /> <LineId Id="13" Count="9" />
<LineId Id="259" Count="1" />
<LineId Id="23" Count="0" />
<LineId Id="263" Count="0" />
<LineId Id="183" Count="0" /> <LineId Id="183" Count="0" />
<LineId Id="182" Count="0" /> <LineId Id="182" Count="0" />
<LineId Id="25" Count="0" /> <LineId Id="25" Count="0" />
<LineId Id="185" Count="1" /> <LineId Id="185" Count="1" />
<LineId Id="264" Count="0" />
<LineId Id="205" Count="0" /> <LineId Id="205" Count="0" />
<LineId Id="214" Count="0" /> <LineId Id="214" Count="0" />
<LineId Id="247" Count="0" />
<LineId Id="187" Count="1" /> <LineId Id="187" Count="1" />
<LineId Id="200" Count="1" /> <LineId Id="200" Count="1" />
<LineId Id="265" Count="0" />
<LineId Id="203" Count="0" /> <LineId Id="203" Count="0" />
<LineId Id="246" Count="0" /> <LineId Id="246" Count="0" />
<LineId Id="204" Count="0" /> <LineId Id="204" Count="0" />
@@ -1001,9 +1028,11 @@ END_CASE]]></ST>
<LineId Id="209" Count="0" /> <LineId Id="209" Count="0" />
<LineId Id="213" Count="0" /> <LineId Id="213" Count="0" />
<LineId Id="210" Count="2" /> <LineId Id="210" Count="2" />
<LineId Id="157" Count="2" /> <LineId Id="253" Count="0" />
<LineId Id="194" Count="0" /> <LineId Id="257" Count="0" />
<LineId Id="160" Count="4" /> <LineId Id="254" Count="2" />
<LineId Id="258" Count="0" />
<LineId Id="162" Count="2" />
<LineId Id="166" Count="13" /> <LineId Id="166" Count="13" />
<LineId Id="198" Count="1" /> <LineId Id="198" Count="1" />
<LineId Id="180" Count="0" /> <LineId Id="180" Count="0" />

View File

@@ -19,68 +19,60 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMV8-A)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMV8-A)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) {24BCEDE3-526F-4D87-A687-3DBA9D107213}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMV8-A)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMV8-A)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) {9AE64910-5EB2-4866-93FD-EFE059C38C36}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMV8-A)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMV8-A)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{2334894D-AAAF-4180-8968-1BD4B960B0F8}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMV8-A)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMV8-A)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
{F47879F5-0CE6-44F4-85FD-D162CFB265B1}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

File diff suppressed because it is too large Load Diff