Added hot and cold plates
- Started spinner chuck io's
This commit is contained in:
@@ -1,25 +1,146 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1">
|
||||
<POU Name="FB_Etcher" Id="{e75b6d70-36db-4c78-b78d-a594609441d1}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Etcher
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Etcher EXTENDS FB_PackMLGeneric
|
||||
VAR_INPUT
|
||||
xOpenDoor : BOOL;
|
||||
xOpenChuckClamp : BOOL;
|
||||
xEjectChuck : BOOL;
|
||||
xConfirmAlarms : BOOL;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
xChuckClampOpen : BOOL;
|
||||
END_VAR
|
||||
VAR
|
||||
_xOpenDoor AT %Q* : BOOL;
|
||||
_xCloseDoor AT %Q* : BOOL;
|
||||
_fbValveDoor : FB_Valve('Door');
|
||||
_stValveDoorCfg : ST_ValveConfig := (
|
||||
xHasClosedFeedback := TRUE,
|
||||
xHasOpenFeedback := TRUE,
|
||||
timTimeoutOpen := T#5S,
|
||||
timTimeoutClose := T#5S);
|
||||
_stDoorHMIInterface : ST_HMI_VALVE_DATA;
|
||||
|
||||
_fbClampingLeft : FB_Valve('Clamping left');
|
||||
_stValveClampingLeftCfg : ST_ValveConfig := (
|
||||
xHasClosedFeedback := TRUE,
|
||||
xHasOpenFeedback := TRUE,
|
||||
timTimeoutOpen := T#5S,
|
||||
timTimeoutClose := T#5S);
|
||||
_stClampingLeftHMIInterface : ST_HMI_VALVE_DATA;
|
||||
|
||||
_fbClampingRight : FB_Valve('Clamping right');
|
||||
_stValveClampingRightCfg : ST_ValveConfig := (
|
||||
xHasClosedFeedback := TRUE,
|
||||
xHasOpenFeedback := TRUE,
|
||||
timTimeoutOpen := T#5S,
|
||||
timTimeoutClose := T#5S);
|
||||
_stClampingRightHMIInterface : ST_HMI_VALVE_DATA;
|
||||
|
||||
_fbClampingFront : FB_Valve('Clamping front');
|
||||
_stValveClampingFrontCfg : ST_ValveConfig := (
|
||||
xHasClosedFeedback := TRUE,
|
||||
xHasOpenFeedback := TRUE,
|
||||
timTimeoutOpen := T#5S,
|
||||
timTimeoutClose := T#5S);
|
||||
_stClampingFrontHMIInterface : ST_HMI_VALVE_DATA;
|
||||
|
||||
_fbClampingBack : FB_Valve('Clamping back');
|
||||
_stValveClampingBackCfg : ST_ValveConfig := (
|
||||
xHasClosedFeedback := TRUE,
|
||||
xHasOpenFeedback := TRUE,
|
||||
timTimeoutOpen := T#5S,
|
||||
timTimeoutClose := T#5S);
|
||||
_stClampingBackHMIInterface : ST_HMI_VALVE_DATA;
|
||||
|
||||
_rtEjectChuckCmd : R_TRIG;
|
||||
_tpEjectChuck : TP;
|
||||
|
||||
// =======
|
||||
// Sensors
|
||||
// =======
|
||||
|
||||
// Spinner vibration sensor
|
||||
_xVibrationSensor AT %I* : BOOL;
|
||||
|
||||
// =========
|
||||
// Actuators
|
||||
// =========
|
||||
|
||||
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[IF xOpenDoor THEN
|
||||
_xOpenDoor := TRUE;
|
||||
_xCloseDoor := FALSE;
|
||||
<ST><![CDATA[// Main door
|
||||
_fbValveDoor(
|
||||
xAutomaticOpen:= xOpenDoor,
|
||||
xReleaseErrors:= TRUE,
|
||||
stValveConfig:= _stValveDoorCfg,
|
||||
xReleaseManualMode:= FALSE,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= _stDoorHMIInterface);
|
||||
|
||||
// Chuck
|
||||
_rtEjectChuckCmd(CLK := xEjectChuck);
|
||||
IF _rtEjectChuckCmd.Q THEN
|
||||
_tpEjectChuck(IN := TRUE, PT := T#500MS);
|
||||
ELSE
|
||||
_xOpenDoor := FALSE;
|
||||
_xCloseDoor := TRUE;
|
||||
END_IF]]></ST>
|
||||
_tpEjectChuck(IN := FALSE);
|
||||
END_IF
|
||||
|
||||
_fbClampingLeft(
|
||||
xAutomaticOpen:= xOpenChuckClamp,
|
||||
xReleaseErrors:= TRUE,
|
||||
stValveConfig:= _stValveClampingLeftCfg,
|
||||
xReleaseManualMode:= FALSE,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= _stClampingLeftHMIInterface);
|
||||
|
||||
_fbClampingRight(
|
||||
xAutomaticOpen:= xOpenChuckClamp,
|
||||
xReleaseErrors:= TRUE,
|
||||
stValveConfig:= _stValveClampingRightCfg,
|
||||
xReleaseManualMode:= FALSE,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= _stClampingRightHMIInterface);
|
||||
|
||||
_fbClampingFront(
|
||||
xAutomaticOpen:= _tpEjectChuck.Q,
|
||||
xReleaseErrors:= TRUE,
|
||||
stValveConfig:= _stValveClampingFrontCfg,
|
||||
xReleaseManualMode:= FALSE,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= _stClampingFrontHMIInterface);
|
||||
|
||||
_fbClampingBack(
|
||||
xAutomaticOpen:= _tpEjectChuck.Q,
|
||||
xReleaseErrors:= TRUE,
|
||||
stValveConfig:= _stValveClampingBackCfg,
|
||||
xReleaseManualMode:= FALSE,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= _stClampingBackHMIInterface);
|
||||
|
||||
// Call base sm
|
||||
SUPER^();]]></ST>
|
||||
</Implementation>
|
||||
<Method Name="FB_Init" Id="{afcda70c-3e52-4a32-9ca9-670a6b854f24}">
|
||||
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
||||
//The return value is not evaluated. For a specific influence, you can also declare the
|
||||
//methods explicitly and provide additional code there with the standard initialization
|
||||
//code. You can evaluate the return value.
|
||||
METHOD FB_Init: BOOL
|
||||
VAR_INPUT
|
||||
bInitRetains: BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold)
|
||||
bInCopyCode: BOOL; // TRUE: the instance will be copied to the copy code afterward (online change)
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[_stSMConfig.xStoppingDisabled := TRUE;
|
||||
|
||||
_stSMConfig.xCompletingDisabled := TRUE;
|
||||
_stSMConfig.xCompletedDisabled := TRUE;
|
||||
|
||||
_stSMConfig.xAbortingDisabled := TRUE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
Reference in New Issue
Block a user