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

@@ -16,6 +16,7 @@ VAR_OUTPUT
xVacuumEnabled : BOOL;
END_VAR
VAR_IN_OUT
stIO : ST_Etcher_IO;
stHMIInterface : ST_HMI_Etcher;
END_VAR
VAR
@@ -92,7 +93,6 @@ VAR
// Debug
_iState : INT;
_xEnableSpinner : BOOL;
_lrSpinnerVelo : LREAL := 36.0;
_xAllCompRetracted : BOOL;
_xChuckRemoved : BOOL;
@@ -106,7 +106,8 @@ _fbValveDoor(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveDoorCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveDoor,
stHMIInterface:= stHMIInterface.stDoorValve);
@@ -126,7 +127,8 @@ _fbValveVacuum(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveVacuumConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveVacuum,
stHMIInterface:= stHMIInterface.stVacuumValve);
_fbUnlockLeft(
@@ -134,7 +136,8 @@ _fbUnlockLeft(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveUnlockLeftCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveUnlockLeft,
stHMIInterface:= stHMIInterface.stChuckUnlockLeft);
_fbUnlockRight(
@@ -142,7 +145,8 @@ _fbUnlockRight(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveUnlockRightCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveUnlockRight,
stHMIInterface:= stHMIInterface.stChuckUnlockRight);
_fbEjectFront(
@@ -150,7 +154,8 @@ _fbEjectFront(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveClampingFrontCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveEjectFront,
stHMIInterface:= stHMIInterface.stChuckEjectFront);
_fbEjectBack(
@@ -158,18 +163,19 @@ _fbEjectBack(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveEjectBackCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveEjectBack,
stHMIInterface:= stHMIInterface.stChuckEjectBack);
_xAllCompRetracted := _fbUnlockLeft.IsClosed AND _fbUnlockRight.IsClosed AND _fbEjectFront.IsClosed AND _fbEjectBack.IsClosed;
_fbSpinner(
xEnable:= _xEnableSpinner,
xEnablePositive:= _xEnableSpinner AND _xAllCompRetracted,
xEnableNegative:= _xEnableSpinner AND _xAllCompRetracted,
xEnablePositive:= _xAllCompRetracted,
xEnableNegative:= _xAllCompRetracted,
rOverride:= 100.0,
lrVelocity:= _lrSpinnerVelo,
xConfirmAlarms:= xConfirmAlarms);
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stAxisSpinner);
_fbRobot(stPackMLHMIInterface := stHMIInterface.stMecaCmds);
@@ -177,7 +183,8 @@ _fbValveEnableFilmetch(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms := xConfirmAlarms,
xConfirmAlarms := xConfirmAlarms,
stIO := stIO.stValveFilmetch,
stHMIInterface:= stHMIInterface.stValveFilmetch);
// Call base sm
@@ -200,15 +207,41 @@ CASE _iState OF
// Enable spinner
5:
_xEnableSpinner := TRUE;
IF _fbSpinner.xEnabled THEN
_iState := 6;
CASE _fbSpinner.M_Enable() OF
E_CmdResult.ACCEPTED:
_iState := 6;
E_CmdResult.BUSY:
;
E_CmdResult.REJECTED,
E_CmdResult.ERROR:
_iState := 900;
END_CASE
// Wait for spinner to be enabled
6:
IF _fbSpinner.xDone THEN
_iState := 7;
END_IF
IF _fbSpinner.xError THEN
_iState := 900;
END_IF
// Start moving to zero position
6:
_fbSpinner.M_MoveModulo(lrTargetPos := 0.0, eMoveDirection := BC.MC_Direction.MC_Shortest_Way);
_iState := 11;
7:
CASE _fbSpinner.M_MoveModulo(lrTargetPos := 0.0, eMoveDirection := BC.MC_Direction.MC_Shortest_Way) OF
E_CmdResult.ACCEPTED:
_iState := 11;
E_CmdResult.BUSY:
;
E_CmdResult.REJECTED,
E_CmdResult.ERROR:
_iState := 900;
END_CASE
// Move to zero position
11:
@@ -222,17 +255,34 @@ CASE _iState OF
// Disable axis
12:
_xEnableSpinner := FALSE;
IF (NOT _fbSpinner.xEnabled) THEN
_iState := 13;
CASE _fbSpinner.M_Disable() OF
E_CmdResult.ACCEPTED:
_iState := 13;
E_CmdResult.BUSY:
;
E_CmdResult.REJECTED,
E_CmdResult.ERROR:
_iState := 900;
END_CASE
// Wait for spinner to be disabled
13:
IF _fbSpinner.xDone THEN
_iState := 14;
END_IF
IF _fbSpinner.xError THEN
_iState := 900;
END_IF
// Release clamping
13:
14:
_xOpenChuckClamp := TRUE;
IF _fbUnlockLeft.IsOpen AND _fbUnlockRight.IsOpen THEN
_iState := 14;
_iState := 15;
END_IF
IF _fbUnlockLeft.xError OR _fbUnlockRight.xError THEN
@@ -240,22 +290,10 @@ CASE _iState OF
END_IF
// Eject the cuck
14:
15:
_xEjectChuck := TRUE;
IF _fbEjectFront.IsOpen AND _fbEjectBack.IsOpen THEN
_iState := 15;
END_IF
IF _fbEjectFront.xError OR _fbEjectBack.xError THEN
_iState := 900;
END_IF
// Retract ejectors
15:
_xEjectChuck := FALSE;
IF _fbEjectFront.IsClosed AND _fbEjectBack.IsClosed THEN
_iState := 16;
END_IF
@@ -263,15 +301,27 @@ CASE _iState OF
_iState := 900;
END_IF
// Wait for Chuck to be remove
// Retract ejectors
16:
IF _xChuckRemoved THEN
_xChuckRemoved := FALSE;
_xEjectChuck := FALSE;
IF _fbEjectFront.IsClosed AND _fbEjectBack.IsClosed THEN
_iState := 17;
END_IF
// Retract release pins
IF _fbEjectFront.xError OR _fbEjectBack.xError THEN
_iState := 900;
END_IF
// Wait for Chuck to be remove
17:
IF _xChuckRemoved THEN
_xChuckRemoved := FALSE;
_iState := 18;
END_IF
// Retract release pins
18:
_xOpenChuckClamp := FALSE;
IF _fbUnlockLeft.IsClosed AND _fbUnlockRight.IsClosed THEN