Bugfixes in TrayFeeder and Aligner

Aligner
=======
- Fixed Aligner during resetting with library update to 1.3.4
- Added Vacuum valve to HMI

Etcher
======
- Added Vacuum valve to HMI

TrayFeeder
==========
- Fixed a bug in protocoll parsing
- Added automatic reconnect tries to protocoll handler
- Added buttons to hmi interface for tray feeding and unloading
This commit is contained in:
2026-03-13 14:51:58 +01:00
parent f7bb4f2920
commit 4e923aa101
11 changed files with 1356 additions and 1210 deletions

View File

@@ -5,7 +5,8 @@
VAR_INPUT
xEnableVacuum : BOOL;
xExecute : BOOL;
xReleaseManualMode : BOOL;
xReleaseAlarms : BOOL;
xConfirmAlarms : BOOL;
END_VAR
VAR_OUTPUT
@@ -15,8 +16,9 @@ VAR_IN_OUT
stHMIInterface : ST_HMI_Aligner;
END_VAR
VAR
xActivateVacuum AT %Q* : BOOL := FALSE;
xDeactivateVacuum AT %Q* : BOOL := TRUE;
_fbValveVacuum : FB_Valve('Vacuum');
_stValveVacuumConfig : ST_ValveConfig;
xVacuumOk AT %I* : BOOL;
diXOffset AT %I* : DINT;
@@ -52,6 +54,14 @@ _fbYAxis(
lrJerk:= 0,
xConfirmAlarms:= xConfirmAlarms);
_fbValveVacuum(
xAutomaticOpen:= xEnableVacuum,
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stValveVacuumConfig,
xReleaseManualMode:= xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stVacuumValve);
// =============================
// Call isa88 base state machine
@@ -61,8 +71,6 @@ SUPER^(stPackMLHMIInterface := stHMIInterface.stStationCmds);
_rtExecute(CLK:= xExecute, Q=> _xStartAlign);
// Handle enable disable vacuum command
xActivateVacuum := xEnableVacuum;
xDeactivateVacuum := (NOT xEnableVacuum);
xVacuumEnabled := xVacuumOk;]]></ST>
</Implementation>
<Method Name="FB_init" Id="{5048e086-25a4-4fbb-bf29-7a016bcf2277}">
@@ -81,7 +89,11 @@ END_VAR
_stSMConfig.xStartingDisabled := TRUE;
_stSMConfig.xHeldDisabled := TRUE;
_stSMConfig.xSuspededDisabled := TRUE;
_stSMConfig.xCompletedDisabled := FALSE;]]></ST>
_stSMConfig.xCompletedDisabled := FALSE;
// Valve config
_stValveVacuumConfig.xHasOpenFeedback := FALSE;
_stValveVacuumConfig.xHasClosedFeedback := FALSE;]]></ST>
</Implementation>
</Method>
<Method Name="M_Clearing" Id="{0b5b5108-3886-40a3-876f-a3460b5d5089}">
@@ -146,7 +158,9 @@ END_CASE]]></ST>
</Method>
<Method Name="M_Resetting" Id="{015c2bf3-1e45-46dd-93fe-a1f154bfd906}">
<Declaration><![CDATA[METHOD PROTECTED M_Resetting
]]></Declaration>
VAR
_xFailed : BOOL;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[CASE _iSSM OF
0:
@@ -156,29 +170,48 @@ END_CASE]]></ST>
IF _fbXAxis.xEnabled AND _fbYAxis.xEnabled THEN
IF (NOT _fbXAxis.xHomed) THEN
_fbXAxis.M_Homing(lrHomingPosition := BC.Tc2_MC2.DEFAULT_HOME_POSITION);
IF (NOT _fbXAxis.M_Homing(lrHomingPosition := BC.Tc2_MC2.DEFAULT_HOME_POSITION)) THEN
_xFailed := TRUE;
END_IF
END_IF
IF (NOT _fbYAxis.xHomed) THEN
_fbYAxis.M_Homing(lrHomingPosition := BC.Tc2_MC2.DEFAULT_HOME_POSITION);
IF (NOT _fbYAxis.M_Homing(lrHomingPosition := BC.Tc2_MC2.DEFAULT_HOME_POSITION)) THEN
_xFailed := TRUE;
END_IF
END_IF
_iSSM := 10;
IF (NOT _xFailed) THEN
_iSSM := 10;
ELSE
M_CmdAbort();
END_IF
END_IF
10:
// Home axes
IF (NOT _fbXAxis.xBusy) AND (NOT _fbYAxis.xBusy) THEN
_fbXAxis.M_MoveAbs(0.0);
_fbYAxis.M_MoveAbs(0.0);
IF _fbXAxis.xDone AND _fbYAxis.xDone THEN
IF (NOT _fbXAxis.M_MoveAbs(0.0)) OR (NOT _fbYAxis.M_MoveAbs(0.0)) THEN
M_CmdAbort();
END_IF
_iSSM := 20;
END_IF
IF _fbXAxis.xError OR _fbYAxis.xError THEN
M_CmdAbort();
END_IF
20:
// Move to 0 position
IF (NOT _fbXAxis.xBusy) AND (NOT _fbYAxis.xBusy) THEN
IF _fbXAxis.xDone AND _fbYAxis.xDone THEN
M_StateComplete();
END_IF
IF _fbXAxis.xError OR _fbYAxis.xError THEN
M_CmdAbort();
END_IF
END_CASE]]></ST>
</Implementation>
</Method>