Relinked everything with HAL and Execute pattern

- Switched to BaseConponents V2.0
This commit is contained in:
2026-03-19 19:40:01 +01:00
parent b515ca8588
commit eb2317ad91
25 changed files with 3558 additions and 2721 deletions

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_HVTester_IO" Id="{e4332098-37a5-407c-844f-9ed62f4ca4eb}">
<Declaration><![CDATA[TYPE ST_HVTester_IO :
STRUCT
stValveDoor : ST_Valve_IO;
stValveTestChamber : ST_Valve_IO;
stValveReleaseChamber : ST_Valve_IO;
i_xDoorCollisionDetectOk AT %I* : BOOL;
i_xVacuumOk AT %I* : BOOL;
i_xChamberFree AT %I* : BOOL;
i_xChamberNotFree AT %I* : BOOL;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -13,32 +13,46 @@ VAR_OUTPUT
xTestChamberOpen : BOOL;
END_VAR
VAR_IN_OUT
stIO : ST_HVTester_IO;
stHMIInterface : ST_HMI_HVTester;
END_VAR
VAR
_fbDoorValve : FB_Valve('Door');
_stDoorValveConfig : ST_ValveConfig;
_stDoorValveConfig : ST_ValveConfig := (xNormallyOpen := TRUE);
_fbTestChamberValve : FB_Valve('Chamber');
_stTestChamberValveConfig : ST_ValveConfig;
_fbReleaseChamberMovement : FB_Valve('Release Chamber');
_stReleaseValveConfig : ST_ValveConfig;
_xFirstCycle : BOOL := TRUE;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[_fbDoorValve(
<ST><![CDATA[IF _xFirstCycle THEN
_xFirstCycle := FALSE;
stHMIInterface.stDoorValve.stInterlock.asSafetyINTLKName[0] := 'Door collision sensor';
END_IF
_fbDoorValve.wSafetyINTLK.0 := stIO.i_xDoorCollisionDetectOk;
_fbDoorValve(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stDoorValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveDoor,
stHMIInterface:= stHMIInterface.stDoorValve);
_fbTestChamberValve(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stTestChamberValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveTestChamber,
stHMIInterface:= stHMIInterface.stTestChamberValve);
_fbReleaseChamberMovement(
@@ -46,7 +60,8 @@ _fbReleaseChamberMovement(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stReleaseValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveReleaseChamber,
stHMIInterface:= stHMIInterface.stReleaseChamberValve);
// Call base sm
@@ -73,6 +88,10 @@ _stDoorValveConfig.xHasOpenFeedback := TRUE;
_stDoorValveConfig.xHasClosedFeedback := TRUE;
_stDoorValveConfig.timTimeoutOpen := T#10S;
_stDoorValveConfig.timTimeoutClose := T#10S;
_stDoorValveConfig.xNormallyOpen := TRUE;
// First safety interlock is the collision sensor
_fbDoorValve.wSafetyINTLKUsed.0 := 1;
// Test chamber valve config
_stTestChamberValveConfig.xHasOpenFeedback := TRUE;
@@ -81,6 +100,8 @@ _stTestChamberValveConfig.timTimeoutOpen := T#10S;
_stTestChamberValveConfig.timTimeoutClose := T#10S;
_stTestChamberValveConfig.xNormallyOpen := TRUE;
// Open test chamber normally after restart
_fbTestChamberValve.xAutomaticOpen := TRUE;
// Release valve config
_stReleaseValveConfig.xHasOpenFeedback := FALSE;