Relinked everything with HAL and Execute pattern
- Switched to BaseConponents V2.0
This commit is contained in:
@@ -12,17 +12,13 @@ VAR_OUTPUT
|
||||
xVacuumEnabled : BOOL;
|
||||
END_VAR
|
||||
VAR_IN_OUT
|
||||
stIO : ST_Aligner_IO;
|
||||
stHMIInterface : ST_HMI_Aligner;
|
||||
END_VAR
|
||||
VAR
|
||||
_fbValveVacuum : FB_Valve('Vacuum');
|
||||
_stValveVacuumConfig : ST_ValveConfig;
|
||||
|
||||
xVacuumOk AT %I* : BOOL;
|
||||
|
||||
diXOffset AT %I* : DINT;
|
||||
diYOffset AT %I* : DINT;
|
||||
|
||||
_fbXAxis : FB_AxisPTP;
|
||||
_fbYAxis : FB_AxisPTP;
|
||||
|
||||
@@ -40,7 +36,8 @@ END_VAR
|
||||
lrAcceleration:= 0,
|
||||
lrDecelleration:= 0,
|
||||
lrJerk:= 0,
|
||||
xConfirmAlarms:= xConfirmAlarms);
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stIO := stIO.stAxisX);
|
||||
|
||||
_fbYAxis(
|
||||
xInvertCalibrationCam:= FALSE,
|
||||
@@ -51,7 +48,8 @@ _fbYAxis(
|
||||
lrAcceleration:= 0,
|
||||
lrDecelleration:= 0,
|
||||
lrJerk:= 0,
|
||||
xConfirmAlarms:= xConfirmAlarms);
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stIO := stIO.stAxisY);
|
||||
|
||||
_fbValveVacuum(
|
||||
xAutomaticOpen:= xEnableVacuum,
|
||||
@@ -59,7 +57,8 @@ _fbValveVacuum(
|
||||
stValveConfig:= _stValveVacuumConfig,
|
||||
xReleaseManualMode:= _xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stVacuumValve);
|
||||
stHMIInterface:= stHMIInterface.stVacuumValve,
|
||||
stIO := stIO.stValveVacuum);
|
||||
|
||||
|
||||
// =============================
|
||||
@@ -70,7 +69,7 @@ SUPER^(stPackMLHMIInterface := stHMIInterface.stStationCmds);
|
||||
_rtExecute(CLK:= xExecute, Q=> _xStartAlign);
|
||||
|
||||
// Handle enable disable vacuum command
|
||||
xVacuumEnabled := xVacuumOk;]]></ST>
|
||||
xVacuumEnabled := stIO.i_xVacuumOk;]]></ST>
|
||||
</Implementation>
|
||||
<Method Name="FB_init" Id="{5048e086-25a4-4fbb-bf29-7a016bcf2277}">
|
||||
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
||||
@@ -114,23 +113,64 @@ VAR_INST
|
||||
|
||||
_uiRuns : UINT;
|
||||
_tonWait : TON;
|
||||
|
||||
_xAxisXMoved : BOOL;
|
||||
_xAxisYMoved : BOOL;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[CASE _iSSM OF
|
||||
// Start first alignment
|
||||
// Calculate delta to move
|
||||
0:
|
||||
_deltaX := DINT_TO_REAL(diXOffset) * -0.001;
|
||||
_deltaY := ((DINT_TO_REAL(diYOffset) * 0.001) - 37.5) * -1;
|
||||
// Middle of camera is X = 0 AND Y = 37.5
|
||||
_deltaX := DINT_TO_REAL(stIO.i_diXOffset) * -0.001;
|
||||
_deltaY := ((DINT_TO_REAL(stIO.i_diYOffset) * 0.001) - 37.5) * -1;
|
||||
|
||||
IF (ABS(_deltaX) < 10.0) AND (ABS(_deltaY) < 10.0) AND (NOT _fbXAxis.xError) AND (NOT _fbYAxis.xError) THEN
|
||||
_fbXAxis.M_MoveRel(lrRelDist := _deltaX);
|
||||
_fbYAxis.M_MoveRel(lrRelDist := _deltaY);
|
||||
_xAxisXMoved := FALSE;
|
||||
_xAxisYMoved := FALSE;
|
||||
_iSSM := 10;
|
||||
END_IF
|
||||
|
||||
// Start axis movement
|
||||
5:
|
||||
// Start X-Axis movement
|
||||
IF (NOT _xAxisXMoved) THEN
|
||||
CASE _fbXAxis.M_MoveRel(lrRelDist := _deltaX) OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisXMoved := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
// Start Y-Axis movement
|
||||
IF (NOT _xAxisYMoved) THEN
|
||||
CASE _fbYAxis.M_MoveRel(lrRelDist := _deltaY) OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisYMoved := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
// Wait for all axes to be started
|
||||
IF _xAxisXMoved AND _xAxisYMoved THEN
|
||||
_iSSM := 10;
|
||||
END_IF
|
||||
|
||||
// Wait for axis movements to be done
|
||||
10:
|
||||
IF (NOT _fbXAxis.xBusy) AND (NOT _fbYAxis.xBusy) THEN
|
||||
IF _fbXAxis.xDone AND _fbYAxis.xDone THEN
|
||||
_uiRuns := _uiRuns + 1;
|
||||
|
||||
// Do alignment twice because of backlash in aligner station
|
||||
@@ -141,7 +181,7 @@ END_VAR]]></Declaration>
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
// Wait 1 second to stabelise reading
|
||||
// Wait some time to stabelize reading
|
||||
20:
|
||||
_tonWait(IN := TRUE, PT := T#2S);
|
||||
IF _tonWait.Q THEN
|
||||
@@ -157,44 +197,132 @@ END_CASE]]></ST>
|
||||
</Method>
|
||||
<Method Name="M_Resetting" Id="{015c2bf3-1e45-46dd-93fe-a1f154bfd906}">
|
||||
<Declaration><![CDATA[METHOD PROTECTED M_Resetting
|
||||
VAR
|
||||
_xFailed : BOOL;
|
||||
VAR_INST
|
||||
_xAxisXEnabled : BOOL;
|
||||
_xAxisYEnabled : BOOL;
|
||||
|
||||
_xAxisXHomed : BOOL;
|
||||
_xAxisYHomed : BOOL;
|
||||
|
||||
_xAxisXMoved : BOOL;
|
||||
_xAxisYMoved : BOOL;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[CASE _iSSM OF
|
||||
// Reset axis flags
|
||||
0:
|
||||
// Enable axes
|
||||
_fbXAxis.xEnable := TRUE;
|
||||
_fbYAxis.xEnable := TRUE;
|
||||
_xAxisXEnabled := FALSE;
|
||||
_xAxisYEnabled := FALSE;
|
||||
_xAxisXHomed := FALSE;
|
||||
_xAxisYHomed := FALSE;
|
||||
_xAxisXMoved := FALSE;
|
||||
_xAxisYMoved := FALSE;
|
||||
|
||||
IF _fbXAxis.xEnabled AND _fbYAxis.xEnabled THEN
|
||||
IF (NOT _fbXAxis.xHomed) THEN
|
||||
IF (NOT _fbXAxis.M_Homing(lrHomingPosition := BC.Tc2_MC2.DEFAULT_HOME_POSITION)) THEN
|
||||
_xFailed := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
IF (NOT _fbYAxis.xHomed) THEN
|
||||
IF (NOT _fbYAxis.M_Homing(lrHomingPosition := BC.Tc2_MC2.DEFAULT_HOME_POSITION)) THEN
|
||||
_xFailed := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
_iSSM := 5;
|
||||
|
||||
IF (NOT _xFailed) THEN
|
||||
_iSSM := 10;
|
||||
ELSE
|
||||
M_CmdAbort();
|
||||
END_IF
|
||||
|
||||
// Enable axes
|
||||
5:
|
||||
// Enable X-Axis
|
||||
IF (NOT _xAxisXEnabled) THEN
|
||||
CASE _fbXAxis.M_Enable() OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisXEnabled := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
10:
|
||||
// Home axes
|
||||
// Enable Y-Axis
|
||||
IF (NOT _xAxisYEnabled) THEN
|
||||
CASE _fbYAxis.M_Enable() OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisYEnabled := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
// Check if both could be enabled
|
||||
IF _xAxisXEnabled AND _xAxisYEnabled THEN
|
||||
_iSSM := 10;
|
||||
END_IF
|
||||
|
||||
|
||||
// Wait for axes to be enabled
|
||||
6:
|
||||
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 := 10;
|
||||
END_IF
|
||||
|
||||
IF _fbXAxis.xError OR _fbYAxis.xError THEN
|
||||
M_CmdAbort();
|
||||
END_IF
|
||||
|
||||
// Check axis homed state
|
||||
7:
|
||||
IF _fbXAxis.xHomed THEN
|
||||
_xAxisXHomed := TRUE;
|
||||
END_IF
|
||||
|
||||
IF _fbYAxis.xHomed THEN
|
||||
_xAxisYHomed := TRUE;
|
||||
END_IF
|
||||
|
||||
_iSSM := 10;
|
||||
|
||||
// Check if both axes are homed
|
||||
10:
|
||||
// Home X-Axis
|
||||
IF (NOT _xAxisXHomed) AND (NOT _fbXAxis.xHomed) THEN
|
||||
CASE _fbXAxis.M_Homing() OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisXHomed := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
// Home Y-Axis
|
||||
IF (NOT _xAxisYHomed) AND (NOT _fbYAxis.xHomed) THEN
|
||||
CASE _fbYAxis.M_Homing() OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisYHomed := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
IF _xAxisYHomed AND _xAxisYHomed THEN
|
||||
// Goto wait for homing state
|
||||
_iSSM := 15;
|
||||
ELSIF _fbXAxis.xHomed AND _fbYAxis.xHomed THEN
|
||||
// Goto move to 0 state
|
||||
_iSSM := 20;
|
||||
END_IF
|
||||
|
||||
// Wait for homing to be done
|
||||
15:
|
||||
IF (_fbXAxis.xDone OR _fbXAxis.xHomed) AND (_fbYAxis.xDone OR _fbYAxis.xHomed) THEN
|
||||
_iSSM := 20;
|
||||
END_IF
|
||||
|
||||
@@ -202,7 +330,44 @@ END_VAR]]></Declaration>
|
||||
M_CmdAbort();
|
||||
END_IF
|
||||
|
||||
// Start moving to position 0,0
|
||||
20:
|
||||
// Enable X-Axis
|
||||
IF (NOT _xAxisXMoved) THEN
|
||||
CASE _fbXAxis.M_MoveAbs(lrTargetPos := 0.0) OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisXMoved := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
// Enable Y-Axis
|
||||
IF (NOT _xAxisYMoved) THEN
|
||||
CASE _fbYAxis.M_MoveAbs(lrTargetPos := 0.0) OF
|
||||
E_CmdResult.ACCEPTED:
|
||||
_xAxisYMoved := TRUE;
|
||||
|
||||
E_CmdResult.BUSY:
|
||||
;
|
||||
|
||||
E_CmdResult.REJECTED,
|
||||
E_CmdResult.ERROR:
|
||||
M_CmdAbort();
|
||||
END_CASE
|
||||
END_IF
|
||||
|
||||
// Check if both could be enabled
|
||||
IF _xAxisXMoved AND _xAxisYMoved THEN
|
||||
_iSSM := 25;
|
||||
END_IF
|
||||
|
||||
25:
|
||||
// Move to 0 position
|
||||
IF _fbXAxis.xDone AND _fbYAxis.xDone THEN
|
||||
M_StateComplete();
|
||||
|
||||
Reference in New Issue
Block a user