Fix broken branch thus a crash, commiting old changes

This commit is contained in:
Kristina Jurisic
2021-06-15 11:05:53 +02:00
parent b0e9ee51bc
commit 75e8a301f8
8 changed files with 111 additions and 375 deletions
+58
View File
@@ -4,6 +4,59 @@
<Instance Id="#x08502040" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcPath="tc_project_app\tc_project_app.tmc">
<Name>tc_project_app Instance</Name>
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
<Vars VarGrpType="1">
<Name>PlcTask Inputs</Name>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd</Name>
<Comment><![CDATA[Status of Limit Switch Fwd]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd</Name>
<Comment><![CDATA[Status of Limit Switch Bwd]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bSolenoidExtendStatus</Name>
<Comment><![CDATA[Status of solenoid valve to Extend]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bSolenoideRetractStatus</Name>
<Comment><![CDATA[Status of of solenoid valve to Retract]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bPermit</Name>
<Comment><![CDATA[Status of permit signal for the movement]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bPressureExtendStatus</Name>
<Comment><![CDATA[Monitor of air pressure for cyclinder extraction]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bPressureRetractStatus</Name>
<Comment><![CDATA[Monitor of air pressure for cylinder retraction]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.nAirPressureStatus</Name>
<Comment><![CDATA[Monitor of input air pressure for pneumatic valve]]></Comment>
<Type>REAL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bExtendCylinderManual</Name>
<Comment><![CDATA[Status of push button input to extend cylinder]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisInputs.bRetractCylinderManual</Name>
<Comment><![CDATA[Status of push button input to retract the cylinder]]></Comment>
<Type>BOOL</Type>
</Var>
</Vars>
<Vars VarGrpType="2" AreaNo="1">
<Name>PlcTask Outputs</Name>
<Var>
@@ -11,6 +64,11 @@
<Comment><![CDATA[Outputs: Power for Limit switches and Home Sensors (every 4th output)]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>Pneumatic_Axis.fbPneumaticAxis.stPneumaticAxisStruct.stPneumaticAxisControl.bValveOn</Name>
<Comment><![CDATA[Output for solenoid valve]]></Comment>
<Type>BOOL</Type>
</Var>
</Vars>
<Contexts>
<Context>
@@ -9,6 +9,7 @@ END_VAR
VAR_GLOBAL CONSTANT
nAXIS_NUM : UINT:=0;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>
@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="Application_Template" Id="{4bdeebc0-15d8-4790-97d0-e9c4239d121c}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM Application_Template
VAR
//Define all necessary variables for your application
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[//Program any specific code or safety code for an specific application when it involves multiple axes
//Eg. Collision avoidance, interlocks, sequencing, etc.]]></ST>
</Implementation>
<LineIds Name="Application_Template">
<LineId Id="5" Count="0" />
<LineId Id="10" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
@@ -1,305 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="FB_PNEUMATIC_AXIS" Id="{74b90e1e-7e39-4d6d-a9f3-f7a29858f68b}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_PNEUMATIC_AXIS
VAR
stPneumaticAxisStruct: ST_PneumaticAxisStruct;
ePneumaticAxisState: E_PneumaticMode;
ePneumaticAxisErrors: E_PneumaticAxisErrors;
fbTimerExtend: TON; //Timing the extraction of the cylinder
fbTimerRetract: TON; //Timing the retraction of the cylinder
fbTimerExtendManual: TON; //Timing the extraction of the cylinder
fbTimerRetractManual: TON; //Timing the retraction of the cylinder
fbTimerStartMoving: TON; //Timing the start of moving after the command hs been given
bStateChange: BOOL := FALSE; //State of the cylinder changed from extend to retract and vice versa
nTimeToExtract: INT; //allowed time for the cylider to extract in seconds
nTimeToRetract: INT; //allowed time for the cylinder to retract in seconds
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[//Single solenoid valve control
//Starting the extraction movement and extraction timing
//LimitBwd is activated and cylinder is not extracted
CASE ePneumaticAxisState OF
E_PneumaticMode.SINGLE_SOLENOID_PLC:
Single_Solenoid_PLC();
E_PneumaticMode.SINGLE_SOLENOID_MANUAL:
Single_Solenoid_Manual();
E_PneumaticMode.ERROR:
Single_Solenoid_Error();
E_PneumaticMode.RESET:
Reset();
END_CASE ]]></ST>
</Implementation>
<Action Name="Reset" Id="{68a6c9d7-8606-401b-9168-ec931e79f0f6}">
<Implementation>
<ST><![CDATA[ stPneumaticAxisStruct.stPneumaticAxisControl.bStartExtend := FALSE;
stPneumaticAxisStruct.stPneumaticAxisInputs.bExtendCylinderManual := FALSE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving := FALSE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving := FALSE;
fbTimerExtend.IN := FALSE;
fbTimerRetract.IN := FALSE;
fbTimerExtendManual.IN := FALSE;
fbTimerRetractManual.IN := FALSE;
fbTimerStartMoving.IN := FALSE;]]></ST>
</Implementation>
</Action>
<Action Name="Single_Solenoid_Error" Id="{f8e38dc6-971b-478e-a924-9eec8537d2f1}">
<Implementation>
<ST><![CDATA[CASE ePneumaticAxisErrors OF
E_PneumaticAxisErrors.NO_ERROR:
stPneumaticAxisStruct.stPneumaticAxisStatus.bErrorStatus := FALSE;
E_PneumaticAxisErrors.EXTRACT_TIMED_OUT:
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'ERROR: COMMAND TIMED OUT';
stPneumaticAxisStruct.stPneumaticAxisStatus.bErrorStatus := TRUE;
E_PneumaticAxisErrors.RETRACT_TIMED_OUT:
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'ERROR: COMMAND TIMED OUT';
stPneumaticAxisStruct.stPneumaticAxisStatus.bErrorStatus := TRUE;
E_PneumaticAxisErrors.NOT_MOVING_EXTRACT:
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'ERROR: CYLINDER NOT MOVING';
stPneumaticAxisStruct.stPneumaticAxisStatus.bErrorStatus := TRUE;
E_PneumaticAxisErrors.NOT_MOVING_RETRACT:
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'ERROR: CYLINDER NOT MOVING';
stPneumaticAxisStruct.stPneumaticAxisStatus.bErrorStatus := TRUE;
END_CASE
]]></ST>
</Implementation>
</Action>
<Action Name="Single_Solenoid_Manual" Id="{e31de170-18f1-4f95-8712-ce861e79ff7b}">
<Implementation>
<ST><![CDATA[//Manual control of single solenoid pneumatic actuator
//Enter allowed times for extraction and retraction of pneumatic cylinder in seconds
fbTimerExtendManual.PT := INT_TO_TIME(nTimeToExtract * 1000);
fbTimerRetractManual.PT := INT_TO_TIME(nTimeToRetract * 1000);
//Extend cylinder
IF stPneumaticAxisStruct.stPneumaticAxisInputs.bExtendCylinderManual AND NOT stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd THEN
stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving := TRUE;
fbTimerExtendManual (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving);
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving, PT := T#10S);
IF fbTimerStartMoving.Q AND stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.NOT_MOVING_EXTRACT;
END_IF
IF fbTimerExtendManual.Q THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.EXTRACT_TIMED_OUT;
END_IF
END_IF
//Extraction of the cylinder finished, reset timer
IF stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd THEN
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'EXTRACTED';
bStateChange := TRUE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving := FALSE;
fbTimerExtendManual (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving);
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving, PT := T#10S);
END_IF
//Starting the retraction movement and extraction timing
IF stPneumaticAxisStruct.stPneumaticAxisInputs.bRetractCylinderManual AND NOT stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd AND bStateChange THEN
stPneumaticAxisStruct.stPneumaticAxisInputs.bExtendCylinderManual := FALSE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving := TRUE;
fbTimerRetractManual (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving);
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving, PT := T#10S);
IF fbTimerStartMoving.Q AND stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.NOT_MOVING_RETRACT;
END_IF
IF fbTimerRetractManual.Q THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.RETRACT_TIMED_OUT;
END_IF
END_IF
//Retraction of the cylinder finished, reset timer
IF stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd THEN
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'RETRACTED';
bStateChange := FALSE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving := FALSE;
fbTimerRetractManual (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving);
stPneumaticAxisStruct.stPneumaticAxisInputs.bRetractCylinderManual := FALSE;
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving, PT := T#10S);
END_IF
]]></ST>
</Implementation>
</Action>
<Action Name="Single_Solenoid_PLC" Id="{a75a03ea-ec30-403c-91eb-96684f17a503}">
<Implementation>
<ST><![CDATA[//Permit to move cylinder is true
//Enter allowed times for extraction and retraction of pneumatic cylinder in seconds
stPneumaticAxisStruct.stPneumaticAxisInputs.bPermit := TRUE;
fbTimerExtend.PT := INT_TO_TIME(nTimeToExtract * 1000);
fbTimerRetract.PT := INT_TO_TIME(nTimeToRetract * 1000);
//Starting the extraction movement
IF (stPneumaticAxisStruct.stPneumaticAxisControl.bStartExtend AND stPneumaticAxisStruct.stPneumaticAxisInputs.bPermit) AND NOT stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd THEN
stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving := TRUE;
fbTimerExtend (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving);
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving, PT := T#10S);
IF fbTimerStartMoving.Q AND stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.NOT_MOVING_EXTRACT;
END_IF
IF fbTimerExtend.Q THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.EXTRACT_TIMED_OUT;
END_IF
END_IF
// Extraction of the cylinder finished, reset timer
IF stPneumaticAxisStruct.stPneumaticAxisControl.bStartExtend AND stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd AND NOT stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd THEN
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'EXTRACTED';
stPneumaticAxisStruct.stPneumaticAxisStatus.bExtractedStatus := TRUE;
bStateChange := TRUE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving := FALSE;
fbTimerExtend (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving);
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bExtendMoving, PT := T#10S);
END_IF
//Starting the retraction movement and retraction timing
IF NOT stPneumaticAxisStruct.stPneumaticAxisControl.bStartExtend AND NOT stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd AND bStateChange THEN
stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving := TRUE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bExtractedStatus := FALSE;
fbTimerRetract (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving);
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving, PT := T#10S);
IF fbTimerStartMoving.Q AND stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.NOT_MOVING_RETRACT;
END_IF
IF fbTimerRetract.Q THEN
ePneumaticAxisState := E_PneumaticMode.ERROR;
ePneumaticAxisErrors := E_PneumaticAxisErrors.RETRACT_TIMED_OUT;
END_IF
END_IF
// Retraction of the cylinder finished, reset timer
IF NOT stPneumaticAxisStruct.stPneumaticAxisControl.bStartExtend AND stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd THEN
stPneumaticAxisStruct.stPneumaticAxisStatus.sStatus := 'RETRACTED';
stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractedStatus := TRUE;
bStateChange := FALSE;
stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving := FALSE;
fbTimerRetract (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving);
fbTimerStartMoving (IN := stPneumaticAxisStruct.stPneumaticAxisStatus.bRetractMoving, PT := T#10S);
END_IF
]]></ST>
</Implementation>
</Action>
<LineIds Name="FB_PNEUMATIC_AXIS">
<LineId Id="58" Count="0" />
<LineId Id="18" Count="1" />
<LineId Id="138" Count="0" />
<LineId Id="135" Count="0" />
<LineId Id="144" Count="0" />
<LineId Id="231" Count="0" />
<LineId Id="145" Count="0" />
<LineId Id="59" Count="0" />
<LineId Id="232" Count="0" />
<LineId Id="169" Count="2" />
<LineId Id="200" Count="1" />
<LineId Id="209" Count="0" />
<LineId Id="9" Count="0" />
</LineIds>
<LineIds Name="FB_PNEUMATIC_AXIS.Reset">
<LineId Id="2" Count="1" />
<LineId Id="9" Count="0" />
<LineId Id="8" Count="0" />
<LineId Id="4" Count="2" />
<LineId Id="1" Count="0" />
<LineId Id="7" Count="0" />
</LineIds>
<LineIds Name="FB_PNEUMATIC_AXIS.Single_Solenoid_Error">
<LineId Id="2" Count="0" />
<LineId Id="13" Count="1" />
<LineId Id="16" Count="0" />
<LineId Id="15" Count="0" />
<LineId Id="3" Count="0" />
<LineId Id="5" Count="3" />
<LineId Id="11" Count="1" />
<LineId Id="17" Count="4" />
<LineId Id="23" Count="1" />
<LineId Id="22" Count="0" />
<LineId Id="10" Count="0" />
<LineId Id="4" Count="0" />
<LineId Id="1" Count="0" />
</LineIds>
<LineIds Name="FB_PNEUMATIC_AXIS.Single_Solenoid_Manual">
<LineId Id="2" Count="0" />
<LineId Id="43" Count="0" />
<LineId Id="39" Count="1" />
<LineId Id="38" Count="0" />
<LineId Id="41" Count="0" />
<LineId Id="3" Count="3" />
<LineId Id="45" Count="2" />
<LineId Id="44" Count="0" />
<LineId Id="56" Count="0" />
<LineId Id="48" Count="0" />
<LineId Id="7" Count="1" />
<LineId Id="57" Count="0" />
<LineId Id="9" Count="8" />
<LineId Id="49" Count="0" />
<LineId Id="18" Count="6" />
<LineId Id="51" Count="3" />
<LineId Id="58" Count="0" />
<LineId Id="50" Count="0" />
<LineId Id="25" Count="1" />
<LineId Id="59" Count="0" />
<LineId Id="27" Count="9" />
<LineId Id="55" Count="0" />
<LineId Id="37" Count="0" />
<LineId Id="1" Count="0" />
</LineIds>
<LineIds Name="FB_PNEUMATIC_AXIS.Single_Solenoid_PLC">
<LineId Id="47" Count="1" />
<LineId Id="42" Count="2" />
<LineId Id="46" Count="0" />
<LineId Id="45" Count="0" />
<LineId Id="2" Count="1" />
<LineId Id="5" Count="0" />
<LineId Id="49" Count="0" />
<LineId Id="53" Count="0" />
<LineId Id="50" Count="1" />
<LineId Id="63" Count="0" />
<LineId Id="62" Count="0" />
<LineId Id="52" Count="0" />
<LineId Id="6" Count="1" />
<LineId Id="61" Count="0" />
<LineId Id="8" Count="0" />
<LineId Id="1" Count="0" />
<LineId Id="11" Count="0" />
<LineId Id="13" Count="5" />
<LineId Id="20" Count="0" />
<LineId Id="54" Count="0" />
<LineId Id="21" Count="4" />
<LineId Id="27" Count="1" />
<LineId Id="56" Count="3" />
<LineId Id="64" Count="0" />
<LineId Id="55" Count="0" />
<LineId Id="29" Count="1" />
<LineId Id="65" Count="0" />
<LineId Id="31" Count="8" />
<LineId Id="41" Count="0" />
<LineId Id="60" Count="0" />
<LineId Id="12" Count="0" />
<LineId Id="9" Count="1" />
</LineIds>
</POU>
</TcPlcObject>
@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.5">
<POU Name="Pneumatic_Axis" Id="{c5a87a8f-b672-49f9-9218-441b3e670d3f}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM Pneumatic_Axis
VAR
fbPneumaticAxis : FB_PNEUMATIC_AXIS;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[fbPneumaticAxis();
]]></ST>
</Implementation>
<LineIds Name="Pneumatic_Axis">
<LineId Id="14" Count="0" />
<LineId Id="5" Count="0" />
<LineId Id="8" Count="0" />
<LineId Id="7" Count="0" />
</LineIds>
</POU>
</TcPlcObject>
@@ -24,9 +24,9 @@ Its assumed that the cylinder is retracted and the bLimitBackward is activate
Set stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd := TRUE
To start extraction: stPneumaticAxisStruct.stPneumaticAxisControl.bStartExtend := TRUE;
This will activate the timing of the command, with fbTimerStartMoving.
This will activate the timing of the command, with fbTimerStartMoving.
Set stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd := FALSE, to simulate cylider moving
If the stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd is not deactivated in given time (it's set to 10s by default), its assumed that the cylinder has not moved and this will cause it to go to the error state.
If the stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd is not deactivated in given time (it's set to 10s by default), its assumed that the cylinder has not moved and this will cause it to go to the error state.
If the end position is not reached within time defined in nTimeToExtract, the system will show error.
Set stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd := TRUE (to simulate finishing of extraction)
@@ -34,14 +34,14 @@ To reset errors, change state to E_PneumaticMode.RESET.
To move cylinder backwards: stPneumaticAxisStruct.stPneumaticAxisControl.bStartRetract := TRUE;
Set stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitFwd := FALSE;
The cylinder is retracted when stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd := TRUE (you have to make it TRUE manually to simulate the finish of the moving).
The cylinder is retracted when stPneumaticAxisStruct.stPneumaticAxisInputs.bLimitBwd := TRUE (you have to make it TRUE manually to simulate the finish of the moving).
If this doesnt happen in specified time, in nTimeToRetract, state machine goes into error state.
To reset errors, change state to E_PneumaticMode.RESET.
For E_PneumaticMode.SINGLE_SOLENOID_MANUAL:
Same prinicples apply, control is done with two signals:
Same prinicples apply, control is done with two signals:
stPneumaticAxisStruct.stPneumaticAxisInputs.bExtendCylinderManual := TRUE to extract cylinder
stPneumaticAxisStruct.stPneumaticAxisInputs.bRetractCylinderManual := TRUE to retract cylinder
+47 -24
View File
@@ -13,8 +13,9 @@
<Implicit_KindOfTask>{f52f0efe-1be1-4600-94a9-9aa59fdf8e4e}</Implicit_KindOfTask>
<Implicit_Jitter_Distribution>{26d08e27-a705-49a9-95de-a3a0b6ea049c}</Implicit_Jitter_Distribution>
<LibraryReferences>{577f21c4-8eb2-4f2c-a24e-4c3f62ca96d2}</LibraryReferences>
<AutoUpdateVisuProfile>true</AutoUpdateVisuProfile>
<Released>false</Released>
<CompilerVersion>
</CompilerVersion>
</PropertyGroup>
<ItemGroup>
<Compile Include="GlobalTextList.TcGTLO">
@@ -27,10 +28,7 @@
<Compile Include="PlcTask.TcTTO">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\Application Specific\Applications\FB_PNEUMATIC_AXIS.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\Application Specific\Applications\Pneumatic_Axis.TcPOU">
<Compile Include="POUs\Application Specific\Applications\Pneumatics_Template.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="POUs\Application Specific\Axes\Axis_Template.TcPOU">
@@ -123,6 +121,12 @@
<Compile Include="tc_mca_std_lib\POUs\Motion\Homing\FB_Homing.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="tc_mca_std_lib\POUs\Pneumatics\FB_PneumaticAxis.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="tc_mca_std_lib\POUs\Pneumatics\Pneumatic_Axis.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="tc_mca_std_lib\VISUs\languageSupport.TcTLO">
<SubType>Code</SubType>
</Compile>
@@ -144,6 +148,7 @@
<Folder Include="POUs\Application Specific\Applications" />
<Folder Include="POUs\Application Specific\Axes" />
<Folder Include="tc_mca_std_lib\POUs\Motion\Homing" />
<Folder Include="tc_mca_std_lib\POUs\Pneumatics" />
<Folder Include="tc_mca_std_lib\VISUs" />
<Folder Include="tc_mca_std_lib" />
<Folder Include="tc_mca_std_lib\DUTs" />
@@ -255,21 +260,23 @@
<o xml:space="preserve" t="OptionKey">
<v n="Name">"&lt;ProjectRoot&gt;"</v>
<d n="SubKeys" t="Hashtable" ckt="String" cvt="OptionKey">
<v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v>
<v>{535658C0-5AF5-460d-99A4-BFFB984A829A}</v>
<o>
<v n="Name">"{192FAD59-8248-4824-A8DE-9177C94C195A}"</v>
<v n="Name">"{535658C0-5AF5-460d-99A4-BFFB984A829A}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String">
<v>VersionConstraint</v>
<o t="NewestVersionConstraintToSave" />
<v>EnableBreakpointLogging</v>
<v>false</v>
</d>
</o>
<v>{8F99A816-E488-41E4-9FA3-846536012284}</v>
<o>
<v n="Name">"{8F99A816-E488-41E4-9FA3-846536012284}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
<v>{246001F4-279D-43AC-B241-948EB31120E1}</v>
<o>
<v n="Name">"{246001F4-279D-43AC-B241-948EB31120E1}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String" cvt="Boolean">
<v>UnicodeStrings</v>
<v>False</v>
</d>
</o>
<v>{29BD8D0C-3586-4548-BB48-497B9A01693F}</v>
<o>
<v n="Name">"{29BD8D0C-3586-4548-BB48-497B9A01693F}"</v>
@@ -283,25 +290,40 @@
</d>
<d n="Values" t="Hashtable" />
</o>
<v>{8F99A816-E488-41E4-9FA3-846536012284}</v>
<o>
<v n="Name">"{8F99A816-E488-41E4-9FA3-846536012284}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
<v>{40450F57-0AA3-4216-96F3-5444ECB29763}</v>
<o>
<v n="Name">"{40450F57-0AA3-4216-96F3-5444ECB29763}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String">
<v>ActiveVisuExtensions_0</v>
<v>"IR0whWr8bwdyBwAA2CM5uwAAAAC4AQAAabXwRAAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsANgBkADQAMgBlADkAMQA4AC0AZQA2AGEANQAtADQAYgAyAGMALQA5ADEANwBiAC0AZQAwADcAMwAxAGIANwA2ADYAYgAxAGYAfQADDkMAbwBtAHAAYQBuAHkABDBCAGUAYwBrAGgAbwBmAGYAIABBAHUAdABvAG0AYQB0AGkAbwBuACAARwBtAGIASAAFDlYAZQByAHMAaQBvAG4ABg4xAC4AMAAuADMALgAwAAcMQQBjAHQAaQB2AGUACAhiAG8AbwBsAAkITgBhAG0AZQAKJFYAaQBzAHUARQBsAGUAbQBFAHYAZQBuAHQAVABhAGIAbABlAAsWUAByAG8AZgBpAGwAZQBEAGEAdABhAAxMewAxADYAZQA1ADUAYgA2ADAALQA3ADAANAAzAC0ANABhADYAMwAtAGIANgA1AGIALQA2ADEANAA3ADEAMwA4ADcAOABkADQAMgB9AA0STABpAGIAcgBhAHIAaQBlAHMADkx7ADMAYgBmAGQANQA0ADUAOQAtAGIAMAA3AGYALQA0AGQANgBlAC0AYQBlADEAYQAtAGEAOAAzADMANQA2AGEANQA1ADEANAAyAH0AD0x7ADkAYwA5ADUAOAA5ADYAOAAtADIAYwA4ADUALQA0ADEAYgBiAC0AOAA4ADcAMQAtADgAOQA1AGYAZgAxAGYAZQBkAGUAMQBhAH0AEAZpAG4AdAARClUAcwBhAGcAZQASClQAaQB0AGwAZQATDFMAeQBzAHQAZQBtABQSVgBpAHMAdQBFAGwAZQBtAHMAFRhWAGkAcwB1AEUAbABlAG0AQgBhAHMAZQAWFFYAaQBzAHUASQBuAHAAdQB0AHMAFyZEAGUAdgBQAGwAYQBjAGUAaABvAGwAZABlAHIAcwBVAHMAZQBkABgiUABsAHUAZwBpAG4AQwBvAG4AcwB0AHIAYQBpAG4AdABzABlMewA0ADMAZAA1ADIAYgBjAGUALQA5ADQAMgBjAC0ANAA0AGQANwAtADkAZQA5ADQALQAxAGIAZgBkAGYAMwAxADAAZQA2ADMAYwB9ABocQQB0AEwAZQBhAHMAdABWAGUAcgBzAGkAbwBuABsUUABsAHUAZwBpAG4ARwB1AGkAZAAcFlMAeQBzAHQAZQBtAC4ARwB1AGkAZAAdSGEAZgBjAGQANQA0ADQANgAtADQAOQAxADQALQA0AGYAZQA3AC0AYgBiADcAOAAtADkAYgBmAGYAZQBiADcAMABmAGQAMQA3AB4UVQBwAGQAYQB0AGUASQBuAGYAbwAfTHsAYgAwADMAMwA2ADYAYQA4AC0AYgA1AGMAMAAtADQAYgA5AGEALQBhADAAMABlAC0AZQBiADgANgAwADEAMQAxADAANABjADMAfQAgDlUAcABkAGEAdABlAHMAIUx7ADEAOAA2ADgAZgBmAGMAOQAtAGUANABmAGMALQA0ADUAMwAyAC0AYQBjADAANgAtADEAZQAzADkAYgBiADUANQA3AGIANgA5AH0AIkx7AGEANQBiAGQANAA4AGMAMwAtADAAZAAxADcALQA0ADEAYgA1AC0AYgAxADYANAAtADUAZgBjADYAYQBkADIAYgA5ADYAYgA3AH0AIxZPAGIAagBlAGMAdABzAFQAeQBwAGUAJFRVAHAAZABhAHQAZQBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAEYAbwByAEMAbwBuAHYAZQByAHQAaQBiAGwAZQBMAGkAYgByAGEAcgBpAGUAcwAlEEwAaQBiAFQAaQB0AGwAZQAmFEwAaQBiAEMAbwBtAHAAYQBuAHkAJx5VAHAAZABhAHQAZQBQAHIAbwB2AGkAZABlAHIAcwAoOFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ASABhAHMAaAB0AGEAYgBsAGUAKRJ2AGkAcwB1AGUAbABlAG0AcwAqDHMAeQBzAHQAZQBtACtINgBjAGIAMQBjAGQAZQAxAC0AZAA1AGQAYwAtADQAYQAzAGIALQA5ADAANQA0AC0AMgAxAGYAYQA3ADUANgBhADMAZgBhADQALChJAG4AdABlAHIAZgBhAGMAZQBWAGUAcgBzAGkAbwBuAEkAbgBmAG8ALUx7AGMANgAxADEAZQA0ADAAMAAtADcAZgBiADkALQA0AGMAMwA1AC0AYgA5AGEAYwAtADQAZQAzADEANABiADUAOQA5ADYANAAzAH0ALhhNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAvGE0AaQBuAG8AcgBWAGUAcgBzAGkAbwBuADAMTABlAGcAYQBjAHkAMTBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAFYAZQByAHMAaQBvAG4ASQBuAGYAbwAyMEwAbwBhAGQATABpAGIAcgBhAHIAaQBlAHMASQBuAHQAbwBQAHIAbwBqAGUAYwB0ADMaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaBtADAS0E0AUBLQbQBwitAdAJAS0K0AsMGgfQDQ4aAUUNDwTQAA8aBEUFEAQBAAAAAAAAAAMAAAAAAAAA0BEQrQIAAADQEgEtCtADAS0T0AAPGgRFBRAEAwAAAAUAAAANAAAAFAAAANAREK0BAAAA0BIBLRTQAwEtE9AADxoERQUQBAMAAAAFAAAADQAAABQAAADQERCtBAAAANASAS0V0AMBLRPQAA8aBEUFEAQDAAAABQAAAA0AAAAAAAAA0BEQrQQAAADQEgEtFtADAS0T0BcIrQFFGBkB0AAZGgJFGhAEAwAAAAUAAAANAAAAAAAAANAbHC0d0B4fGgJFICEC0AAiGgVFBRAEAwAAAAMAAAAAAAAACgAAANAjEK0AAAAA0AkBLSTQJQEtFNAmAS0T0AAiGgVFBRAEAwAAAAMAAAAAAAAACgAAANAjEK0BAAAA0AkBLSTQJQEtFNAmAS0TmicoAUUAAQLQAAEtKdAAAS0q0AAcLSvQLC0aA9AuEK0BAAAA0C8QrRcAAADQMAitANAxLRoD0C4QrQIAAADQLxCtAwAAANAwCK0A0DIIrQDQMwitAA=="</v>
<v>ActiveVisuExtensionsLength</v>
<v>1</v>
<v>ActiveVisuExtensions_0</v>
<v>"IR0whWr8bwdyBwAA2CM5uwAAAAC4AQAAabXwRAAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsANgBkADQAMgBlADkAMQA4AC0AZQA2AGEANQAtADQAYgAyAGMALQA5ADEANwBiAC0AZQAwADcAMwAxAGIANwA2ADYAYgAxAGYAfQADDkMAbwBtAHAAYQBuAHkABDBCAGUAYwBrAGgAbwBmAGYAIABBAHUAdABvAG0AYQB0AGkAbwBuACAARwBtAGIASAAFDlYAZQByAHMAaQBvAG4ABg4xAC4AMAAuADMALgAwAAcMQQBjAHQAaQB2AGUACAhiAG8AbwBsAAkITgBhAG0AZQAKJFYAaQBzAHUARQBsAGUAbQBFAHYAZQBuAHQAVABhAGIAbABlAAsWUAByAG8AZgBpAGwAZQBEAGEAdABhAAxMewAxADYAZQA1ADUAYgA2ADAALQA3ADAANAAzAC0ANABhADYAMwAtAGIANgA1AGIALQA2ADEANAA3ADEAMwA4ADcAOABkADQAMgB9AA0STABpAGIAcgBhAHIAaQBlAHMADkx7ADMAYgBmAGQANQA0ADUAOQAtAGIAMAA3AGYALQA0AGQANgBlAC0AYQBlADEAYQAtAGEAOAAzADMANQA2AGEANQA1ADEANAAyAH0AD0x7ADkAYwA5ADUAOAA5ADYAOAAtADIAYwA4ADUALQA0ADEAYgBiAC0AOAA4ADcAMQAtADgAOQA1AGYAZgAxAGYAZQBkAGUAMQBhAH0AEAZpAG4AdAARClUAcwBhAGcAZQASClQAaQB0AGwAZQATDFMAeQBzAHQAZQBtABQSVgBpAHMAdQBFAGwAZQBtAHMAFRhWAGkAcwB1AEUAbABlAG0AQgBhAHMAZQAWFFYAaQBzAHUASQBuAHAAdQB0AHMAFyZEAGUAdgBQAGwAYQBjAGUAaABvAGwAZABlAHIAcwBVAHMAZQBkABgiUABsAHUAZwBpAG4AQwBvAG4AcwB0AHIAYQBpAG4AdABzABlMewA0ADMAZAA1ADIAYgBjAGUALQA5ADQAMgBjAC0ANAA0AGQANwAtADkAZQA5ADQALQAxAGIAZgBkAGYAMwAxADAAZQA2ADMAYwB9ABocQQB0AEwAZQBhAHMAdABWAGUAcgBzAGkAbwBuABsUUABsAHUAZwBpAG4ARwB1AGkAZAAcFlMAeQBzAHQAZQBtAC4ARwB1AGkAZAAdSGEAZgBjAGQANQA0ADQANgAtADQAOQAxADQALQA0AGYAZQA3AC0AYgBiADcAOAAtADkAYgBmAGYAZQBiADcAMABmAGQAMQA3AB4UVQBwAGQAYQB0AGUASQBuAGYAbwAfTHsAYgAwADMAMwA2ADYAYQA4AC0AYgA1AGMAMAAtADQAYgA5AGEALQBhADAAMABlAC0AZQBiADgANgAwADEAMQAxADAANABjADMAfQAgDlUAcABkAGEAdABlAHMAIUx7ADEAOAA2ADgAZgBmAGMAOQAtAGUANABmAGMALQA0ADUAMwAyAC0AYQBjADAANgAtADEAZQAzADkAYgBiADUANQA3AGIANgA5AH0AIkx7AGEANQBiAGQANAA4AGMAMwAtADAAZAAxADcALQA0ADEAYgA1AC0AYgAxADYANAAtADUAZgBjADYAYQBkADIAYgA5ADYAYgA3AH0AIxZPAGIAagBlAGMAdABzAFQAeQBwAGUAJFRVAHAAZABhAHQAZQBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAEYAbwByAEMAbwBuAHYAZQByAHQAaQBiAGwAZQBMAGkAYgByAGEAcgBpAGUAcwAlEEwAaQBiAFQAaQB0AGwAZQAmFEwAaQBiAEMAbwBtAHAAYQBuAHkAJx5VAHAAZABhAHQAZQBQAHIAbwB2AGkAZABlAHIAcwAoOFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ASABhAHMAaAB0AGEAYgBsAGUAKRJ2AGkAcwB1AGUAbABlAG0AcwAqDHMAeQBzAHQAZQBtACtINgBjAGIAMQBjAGQAZQAxAC0AZAA1AGQAYwAtADQAYQAzAGIALQA5ADAANQA0AC0AMgAxAGYAYQA3ADUANgBhADMAZgBhADQALChJAG4AdABlAHIAZgBhAGMAZQBWAGUAcgBzAGkAbwBuAEkAbgBmAG8ALUx7AGMANgAxADEAZQA0ADAAMAAtADcAZgBiADkALQA0AGMAMwA1AC0AYgA5AGEAYwAtADQAZQAzADEANABiADUAOQA5ADYANAAzAH0ALhhNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAvGE0AaQBuAG8AcgBWAGUAcgBzAGkAbwBuADAMTABlAGcAYQBjAHkAMTBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAFYAZQByAHMAaQBvAG4ASQBuAGYAbwAyMEwAbwBhAGQATABpAGIAcgBhAHIAaQBlAHMASQBuAHQAbwBQAHIAbwBqAGUAYwB0ADMaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaBtADAS0E0AUBLQbQBwitAdAJAS0K0AsMGgfQDQ4aAUUNDwTQAA8aBEUFEAQBAAAAAAAAAAMAAAAAAAAA0BEQrQIAAADQEgEtCtADAS0T0AAPGgRFBRAEAwAAAAUAAAANAAAAFAAAANAREK0BAAAA0BIBLRTQAwEtE9AADxoERQUQBAMAAAAFAAAADQAAABQAAADQERCtBAAAANASAS0V0AMBLRPQAA8aBEUFEAQDAAAABQAAAA0AAAAAAAAA0BEQrQQAAADQEgEtFtADAS0T0BcIrQFFGBkB0AAZGgJFGhAEAwAAAAUAAAANAAAAAAAAANAbHC0d0B4fGgJFICEC0AAiGgVFBRAEAwAAAAMAAAAAAAAACgAAANAjEK0AAAAA0AkBLSTQJQEtFNAmAS0T0AAiGgVFBRAEAwAAAAMAAAAAAAAACgAAANAjEK0BAAAA0AkBLSTQJQEtFNAmAS0TmicoAUUAAQLQAAEtKdAAAS0q0AAcLSvQLC0aA9AuEK0BAAAA0C8QrRcAAADQMAitANAxLRoD0C4QrQIAAADQLxCtAwAAANAwCK0A0DIIrQDQMwitAA=="</v>
<v>ActiveVisuProfile</v>
<v>"IR0whWr8bwfwBwAAiD2qpQAAAABVAgAA37x72QAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDBUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgA0AC4ANwAFFlAAcgBvAGYAaQBsAGUARABhAHQAYQAGTHsAMQA2AGUANQA1AGIANgAwAC0ANwAwADQAMwAtADQAYQA2ADMALQBiADYANQBiAC0ANgAxADQANwAxADMAOAA3ADgAZAA0ADIAfQAHEkwAaQBiAHIAYQByAGkAZQBzAAhMewAzAGIAZgBkADUANAA1ADkALQBiADAANwBmAC0ANABkADYAZQAtAGEAZQAxAGEALQBhADgAMwAzADUANgBhADUANQAxADQAMgB9AAlMewA5AGMAOQA1ADgAOQA2ADgALQAyAGMAOAA1AC0ANAAxAGIAYgAtADgAOAA3ADEALQA4ADkANQBmAGYAMQBmAGUAZABlADEAYQB9AAoOVgBlAHIAcwBpAG8AbgALBmkAbgB0AAwKVQBzAGEAZwBlAA0KVABpAHQAbABlAA4aVgBpAHMAdQBFAGwAZQBtAE0AZQB0AGUAcgAPDkMAbwBtAHAAYQBuAHkAEAxTAHkAcwB0AGUAbQARElYAaQBzAHUARQBsAGUAbQBzABIwVgBpAHMAdQBFAGwAZQBtAHMAUwBwAGUAYwBpAGEAbABDAG8AbgB0AHIAbwBsAHMAEyhWAGkAcwB1AEUAbABlAG0AcwBXAGkAbgBDAG8AbgB0AHIAbwBsAHMAFCRWAGkAcwB1AEUAbABlAG0AVABlAHgAdABFAGQAaQB0AG8AcgAVIlYAaQBzAHUATgBhAHQAaQB2AGUAQwBvAG4AdAByAG8AbAAWFHYAaQBzAHUAaQBuAHAAdQB0AHMAFwxzAHkAcwB0AGUAbQAYGFYAaQBzAHUARQBsAGUAbQBCAGEAcwBlABkmRABlAHYAUABsAGEAYwBlAGgAbwBsAGQAZQByAHMAVQBzAGUAZAAaCGIAbwBvAGwAGyJQAGwAdQBnAGkAbgBDAG8AbgBzAHQAcgBhAGkAbgB0AHMAHEx7ADQAMwBkADUAMgBiAGMAZQAtADkANAAyAGMALQA0ADQAZAA3AC0AOQBlADkANAAtADEAYgBmAGQAZgAzADEAMABlADYAMwBjAH0AHRxBAHQATABlAGEAcwB0AFYAZQByAHMAaQBvAG4AHhRQAGwAdQBnAGkAbgBHAHUAaQBkAB8WUwB5AHMAdABlAG0ALgBHAHUAaQBkACBIYQBmAGMAZAA1ADQANAA2AC0ANAA5ADEANAAtADQAZgBlADcALQBiAGIANwA4AC0AOQBiAGYAZgBlAGIANwAwAGYAZAAxADcAIRRVAHAAZABhAHQAZQBJAG4AZgBvACJMewBiADAAMwAzADYANgBhADgALQBiADUAYwAwAC0ANABiADkAYQAtAGEAMAAwAGUALQBlAGIAOAA2ADAAMQAxADEAMAA0AGMAMwB9ACMOVQBwAGQAYQB0AGUAcwAkTHsAMQA4ADYAOABmAGYAYwA5AC0AZQA0AGYAYwAtADQANQAzADIALQBhAGMAMAA2AC0AMQBlADMAOQBiAGIANQA1ADcAYgA2ADkAfQAlTHsAYQA1AGIAZAA0ADgAYwAzAC0AMABkADEANwAtADQAMQBiADUALQBiADEANgA0AC0ANQBmAGMANgBhAGQAMgBiADkANgBiADcAfQAmFk8AYgBqAGUAYwB0AHMAVAB5AHAAZQAnVFUAcABkAGEAdABlAEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwARgBvAHIAQwBvAG4AdgBlAHIAdABpAGIAbABlAEwAaQBiAHIAYQByAGkAZQBzACgQTABpAGIAVABpAHQAbABlACkUTABpAGIAQwBvAG0AcABhAG4AeQAqHlUAcABkAGEAdABlAFAAcgBvAHYAaQBkAGUAcgBzACs4UwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBIAGEAcwBoAHQAYQBiAGwAZQAsEnYAaQBzAHUAZQBsAGUAbQBzAC1INgBjAGIAMQBjAGQAZQAxAC0AZAA1AGQAYwAtADQAYQAzAGIALQA5ADAANQA0AC0AMgAxAGYAYQA3ADUANgBhADMAZgBhADQALihJAG4AdABlAHIAZgBhAGMAZQBWAGUAcgBzAGkAbwBuAEkAbgBmAG8AL0x7AGMANgAxADEAZQA0ADAAMAAtADcAZgBiADkALQA0AGMAMwA1AC0AYgA5AGEAYwAtADQAZQAzADEANABiADUAOQA5ADYANAAzAH0AMBhNAGEAagBvAHIAVgBlAHIAcwBpAG8AbgAxGE0AaQBuAG8AcgBWAGUAcgBzAGkAbwBuADIMTABlAGcAYQBjAHkAMzBMAGEAbgBnAHUAYQBnAGUATQBvAGQAZQBsAFYAZQByAHMAaQBvAG4ASQBuAGYAbwA0MEwAbwBhAGQATABpAGIAcgBhAHIAaQBlAHMASQBuAHQAbwBQAHIAbwBqAGUAYwB0ADUaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaA9ADAS0E0AUGGgfQBwgaAUUHCQjQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtDtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60BAAAA0A0BLRHQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0S0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAUAAAA0AwLrQIAAADQDQEtE9APAS0Q0AAJGgRFCgsEAwAAAAUAAAANAAAAAAAAANAMC60CAAAA0A0BLRTQDwEtENAACRoERQoLBAMAAAAFAAAADQAAAAAAAADQDAutAgAAANANAS0V0A8BLRDQAAkaBEUKCwQDAAAABQAAAA0AAAAAAAAA0AwLrQIAAADQDQEtFtAPAS0X0AAJGgRFCgsEAwAAAAUAAAANAAAAKAAAANAMC60EAAAA0A0BLRjQDwEtENAZGq0BRRscAdAAHBoCRR0LBAMAAAAFAAAADQAAAAAAAADQHh8tINAhIhoCRSMkAtAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAAAAANADAS0n0CgBLRHQKQEtENAAJRoFRQoLBAMAAAADAAAAAAAAAAoAAADQJgutAQAAANADAS0n0CgBLRHQKQEtEJoqKwFFAAEC0AABLSzQAAEtF9AAHy0t0C4vGgPQMAutAQAAANAxC60XAAAA0DIarQDQMy8aA9AwC60CAAAA0DELrQMAAADQMhqtANA0Gq0A0DUarQA="</v>
</d>
</o>
<v>{192FAD59-8248-4824-A8DE-9177C94C195A}</v>
<o>
<v n="Name">"{192FAD59-8248-4824-A8DE-9177C94C195A}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
<v>{F66C7017-BDD8-4114-926C-81D6D687E35F}</v>
<o>
<v n="Name">"{F66C7017-BDD8-4114-926C-81D6D687E35F}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" />
</o>
<v>{246001F4-279D-43AC-B241-948EB31120E1}</v>
<o>
<v n="Name">"{246001F4-279D-43AC-B241-948EB31120E1}"</v>
<d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String" cvt="Boolean">
<v>UnicodeStrings</v>
<v>False</v>
</d>
</o>
</d>
<d n="Values" t="Hashtable" />
</o>
@@ -310,6 +332,7 @@
<Type n="Boolean">System.Boolean</Type>
<Type n="Hashtable">System.Collections.Hashtable</Type>
<Type n="Int32">System.Int32</Type>
<Type n="NewestVersionConstraintToSave">{af9bafe2-ba31-4b15-a2b9-48a0f2cd09fb}</Type>
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
<Type n="String">System.String</Type>
</TypeList>