Started to change to HAL architecture

This commit is contained in:
2026-03-18 22:49:19 +01:00
parent fe28ade0fe
commit b515ca8588
19 changed files with 6425 additions and 1340 deletions

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_MediaCabinet_IO" Id="{4cd66bd0-a52a-4f12-b907-78c31a0ae205}">
<Declaration><![CDATA[TYPE ST_MediaCabinet_IO :
STRUCT
// (1) Acetic acid 99%
stTank1AceticAcidHighIO : ST_Tank_IO;
// (2) Sulfuric acid
stTank2SulfuricAcidIO : ST_Tank_IO;
// (3) Nitric acid 65% mixing
stTank3NitricAcidIO : ST_Tank_IO;
// (4) Acetic acid 10%
stTank4AceticAcidLowIO : ST_Tank_IO;
// (5) Hydrofluoric acid 40%
stTank5HydrofluoricAcidIO : ST_Tank_IO;
// (6) Sulfuric acid mixing
stTank6SulfuricAcidMixingIO : ST_Tank_IO;
// (7) Hydrofluoric acid 40% for mixing
stTank7HydrofluoricAcidMixingIO : ST_Tank_IO;
// (8) SEF
stTank8SEFIO : ST_Tank_IO;
// (9) Filmetch
stTank9FilmetchIO : ST_Tank_IO;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_Tank_IO" Id="{dfa73416-0b16-4c4f-94ca-fabd1404e589}">
<Declaration><![CDATA[TYPE ST_Tank_IO :
STRUCT
i_xOverfull AT %I* : BOOL;
i_xFull AT %I* : BOOL;
i_xEmpty AT %I* : BOOL;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -3,6 +3,8 @@
<DUT Name="ST_HMI_MediaCabinet" Id="{531277fd-be49-4a36-8089-70f1b95b2250}">
<Declaration><![CDATA[TYPE ST_HMI_MediaCabinet :
STRUCT
stStationCmds : ST_HMI_PackML;
// (1) Acetic acid 99%
stTankAceticAcidHigh : ST_HMI_Tank;

View File

@@ -195,7 +195,8 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Copy requested state into internal buffer
<ST><![CDATA[{warning disable C0371}
// Copy requested state into internal buffer
_wStateReq := wState;
// Send pump state change request

View File

@@ -1,9 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<POU Name="FB_MediaCabinet" Id="{9de34b64-23ba-4fef-b086-9297bbd06f24}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_MediaCabinet
<Declaration><![CDATA[FUNCTION_BLOCK FB_MediaCabinet EXTENDS FB_PackMLGeneric
VAR_INPUT
xReleaseManualMode : BOOL;
xReleaseErrors : BOOL;
xConfirmAlarms : BOOL;
END_VAR
@@ -60,55 +59,55 @@ END_VAR
<Implementation>
<ST><![CDATA[_fbTankAceticAcidHigh(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankAceticAcidHigh);
_fbTankSulfuricAcid(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankSulfuricAcid);
_fbTankNitricAcid(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankNitricAcid);
_fbTankAceticAcidLow(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankAceticAcidLow);
_fbTankHydrofluoricAcid(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankHydrofluoricAcid);
_fbTankSulfuricAcidMixing(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankSulfuricAcidMixing);
_fbTankHydrofluoricAcidMixing(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankHydrofluoricAcidMixing);
_fbTankSEF(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankSEF);
_fbTankFilmetch(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stTankFilmetch);
@@ -116,7 +115,7 @@ _fbTankFilmetch(
_fbValveFilmetchOut(
xReleaseErrors:= xReleaseErrors,
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stValveFilmetch);
@@ -128,7 +127,8 @@ _fbLeviPump9(
rSpeedSP:= 2000,
fbModbusMaster:= _fbMBMaster);
]]></ST>
// Call isa88 base state machine
SUPER^(stPackMLHMIInterface := stHMIInterface.stStationCmds);]]></ST>
</Implementation>
<Method Name="FB_Init" Id="{860f10c9-69ca-4ad7-9edc-00af754d0af0}">
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.

View File

@@ -145,7 +145,8 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Start emptying tank
<ST><![CDATA[{warning disable C0371}
// Start emptying tank
IF stHMIInterface.stEmptyButton.xRequest THEN
stHMIInterface.stEmptyButton.xRequest := FALSE;
IF stHMIInterface.stEmptyButton.xRelease THEN
@@ -168,7 +169,8 @@ VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Overfull sensor is NC
<ST><![CDATA[{warning disable C0371}
// Overfull sensor is NC
stHMIInterface.xOverfull := (NOT i_xOverfull);
stHMIInterface.xFull := i_xFull;
stHMIInterface.xEmpty := (NOT i_xEmpty);