First bigger step to automation
- Aligned X and Y NC Axis with aligner camera coordination system - Added robot plc jobs and feedback - Began Meca500 robot interface - Changed hotplate control to slow PWM - PackML statemachine now starts in aborted state - Fixed StateML start method
This commit is contained in:
@@ -47,6 +47,7 @@
|
|||||||
<MappingInfo Identifier="{00000000-2001-0850-0020-500851000403}" Id="#x02030030"/>
|
<MappingInfo Identifier="{00000000-2001-0850-0020-500851000403}" Id="#x02030030"/>
|
||||||
<MappingInfo Identifier="{00000000-0010-0304-3000-040310000403}" Id="#x02030010"/>
|
<MappingInfo Identifier="{00000000-0010-0304-3000-040310000403}" Id="#x02030010"/>
|
||||||
<MappingInfo Identifier="{00000000-0020-0304-3000-040322000403}" Id="#x02030040"/>
|
<MappingInfo Identifier="{00000000-0020-0304-3000-040322000403}" Id="#x02030040"/>
|
||||||
|
<MappingInfo Identifier="{05000010-2001-0850-3000-040300205008}" Id="#x02030060" Watchdog="10000000040000000400000004000000"/>
|
||||||
<MappingInfo Identifier="{03040050-0050-0304-5000-040350000403}" Id="#x02030020" Watchdog="04000000040000000400000004000000"/>
|
<MappingInfo Identifier="{03040050-0050-0304-5000-040350000403}" Id="#x02030020" Watchdog="04000000040000000400000004000000"/>
|
||||||
</Mappings>
|
</Mappings>
|
||||||
</TcSmProject>
|
</TcSmProject>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ VAR
|
|||||||
_fbEtcher2 : FB_Etcher;
|
_fbEtcher2 : FB_Etcher;
|
||||||
_fbTrayFeederInput : FB_TrayFeeder(sIPAddr := '192.168.1.10', udiPort := 5000);
|
_fbTrayFeederInput : FB_TrayFeeder(sIPAddr := '192.168.1.10', udiPort := 5000);
|
||||||
_fbHeatCoolPlates : FB_HeatCoolPlates;
|
_fbHeatCoolPlates : FB_HeatCoolPlates;
|
||||||
|
_fbAligner : FB_Aligner;
|
||||||
|
|
||||||
_xConfirmAlarms : BOOL;
|
_xConfirmAlarms : BOOL;
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ VAR
|
|||||||
_stRobotAdmin : ST_PMLa;
|
_stRobotAdmin : ST_PMLa;
|
||||||
|
|
||||||
_stRobotJobParams : ST_KukaRobot_JobParams;
|
_stRobotJobParams : ST_KukaRobot_JobParams;
|
||||||
|
_stUnitFeedbacks : ST_KukaRobot_UnitFeedbacks;
|
||||||
|
|
||||||
_stCamResult AT %I* : ST_TrayFeederCamPosData;
|
_stCamResult AT %I* : ST_TrayFeederCamPosData;
|
||||||
|
|
||||||
@@ -31,9 +33,13 @@ VAR
|
|||||||
_xUnhold : BOOL;
|
_xUnhold : BOOL;
|
||||||
_xStop : BOOL;
|
_xStop : BOOL;
|
||||||
|
|
||||||
|
_xStartCycle : BOOL;
|
||||||
|
|
||||||
_xStartTrigger : BOOL;
|
_xStartTrigger : BOOL;
|
||||||
_tofTriggerTime : TOF := (PT := T#1S);
|
_tofTriggerTime : TOF := (PT := T#1S);
|
||||||
_xTriggerCamera AT %Q* : BOOL;
|
_xTriggerCamera AT %Q* : BOOL;
|
||||||
|
|
||||||
|
_iState : INT;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
@@ -73,11 +79,15 @@ IF _rtStopRobotFromSafety.Q THEN
|
|||||||
_stRobotCmd.xCmdChangeRequest := TRUE;
|
_stRobotCmd.xCmdChangeRequest := TRUE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
_stUnitFeedbacks.xDoorEtcher1Open := _fbEtcher1.xDoorOpen;
|
||||||
|
_stUnitFeedbacks.xDoorEtcher2Open := _fbEtcher2.xDoorOpen;
|
||||||
|
|
||||||
_fbRobot(
|
_fbRobot(
|
||||||
stCommand:= _stRobotCmd,
|
stCommand:= _stRobotCmd,
|
||||||
stJobParams := _stRobotJobParams,
|
stJobParams := _stRobotJobParams,
|
||||||
|
stUnitFeedbacks := _stUnitFeedbacks,
|
||||||
xReleaseAlarms:= TRUE,
|
xReleaseAlarms:= TRUE,
|
||||||
xConfirmAlarms:= _xConfirmAlarms,
|
xConfirmAlarms:= GVL_SCADA.xErrAck,
|
||||||
stStatus => _stRobotStatus,
|
stStatus => _stRobotStatus,
|
||||||
stAdmin => _stRobotAdmin,
|
stAdmin => _stRobotAdmin,
|
||||||
xReady=> ,
|
xReady=> ,
|
||||||
@@ -89,23 +99,84 @@ END_IF
|
|||||||
|
|
||||||
_fbHVTester(xOpenChambers:= GVL_SCADA.xOpenAllChambers);
|
_fbHVTester(xOpenChambers:= GVL_SCADA.xOpenAllChambers);
|
||||||
|
|
||||||
_fbEtcher1(xOpenDoor:= GVL_SCADA.xOpenAllChambers, xConfirmAlarms := GVL_SCADA.xErrAck);
|
_fbEtcher1(
|
||||||
_fbEtcher2(xOpenDoor:= GVL_SCADA.xOpenAllChambers, xConfirmAlarms := GVL_SCADA.xErrAck);
|
xOpenDoor:= GVL_SCADA.xOpenAllChambers,
|
||||||
|
xOpenChuckClamp := GVL_SCADA.xOpenChuckClampEtcher1,
|
||||||
|
xConfirmAlarms := GVL_SCADA.xErrAck);
|
||||||
|
|
||||||
// _fbTrayFeederInput(
|
_fbEtcher2(
|
||||||
// stCommand:= ,
|
xOpenDoor:= GVL_SCADA.xOpenAllChambers,
|
||||||
// xConfirmAlarms := GVL_SCADA.xErrAck,
|
xOpenChuckClamp := GVL_SCADA.xOpenChuckClampEtcher2,
|
||||||
// stStatus=> GVL_SCADA.stTrayFeederInputState,
|
xConfirmAlarms := GVL_SCADA.xErrAck);
|
||||||
// stAdmin=> GVL_SCADA.stTRayFeederInputAdmin);
|
|
||||||
|
_fbTrayFeederInput(
|
||||||
|
stCommand:= ,
|
||||||
|
xConfirmAlarms := GVL_SCADA.xErrAck,
|
||||||
|
stStatus=> GVL_SCADA.stTrayFeederInputState,
|
||||||
|
stAdmin=> GVL_SCADA.stTRayFeederInputAdmin);
|
||||||
|
|
||||||
_fbHeatCoolPlates(xConfirmAlarms:= GVL_SCADA.xErrAck);
|
_fbHeatCoolPlates(xConfirmAlarms:= GVL_SCADA.xErrAck);
|
||||||
|
|
||||||
|
_fbAligner(stCommand:= , stStatus=> , stAdmin=> , xConfirmAlarms:= GVL_SCADA.xErrAck);
|
||||||
|
|
||||||
|
|
||||||
// Call safety program
|
// Call safety program
|
||||||
PRG_Safety(
|
PRG_Safety(
|
||||||
xConfirmAlarms := GVL_SCADA.xErrAck,
|
xConfirmAlarms := GVL_SCADA.xErrAck,
|
||||||
xRobotStopped := (_stRobotStatus.eStateCurrent <> E_PackMLState.EXECUTE));
|
xRobotStopped := (_stRobotStatus.eStateCurrent <> E_PackMLState.EXECUTE));
|
||||||
|
|
||||||
|
// Handle robot cmds
|
||||||
|
M_HandleRobotCmd();
|
||||||
|
|
||||||
|
// Main state machine
|
||||||
|
CASE _iState OF
|
||||||
|
0: // Idle
|
||||||
|
IF _xStartCycle THEN
|
||||||
|
_xStartCycle := FALSE;
|
||||||
|
|
||||||
|
// Only start with robot in idle
|
||||||
|
IF _stRobotStatus.eStateCurrent = E_PackMLState.IDLE THEN
|
||||||
|
_iState := 10;
|
||||||
|
END_IF
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Grab from position 1
|
||||||
|
10:
|
||||||
|
// Prepare robot command
|
||||||
|
_stRobotJobParams.eJob := E_KukaRobot_JobNumberRobot.GET_FROM_INPUT;
|
||||||
|
_stRobotJobParams.rPosX := 88.0;
|
||||||
|
_stRobotJobParams.rPosY := 79.0;
|
||||||
|
_stRobotJobParams.byGripperSide := 3;
|
||||||
|
|
||||||
|
_stRobotCmd.eCntrlCmd := E_PackMLCmd.START;
|
||||||
|
_stRobotCmd.xCmdChangeRequest := TRUE;
|
||||||
|
|
||||||
|
_iState := 20;
|
||||||
|
|
||||||
|
// Wait for Robot to be done
|
||||||
|
20:
|
||||||
|
IF (_stRobotStatus.eStateCurrent = E_PackMLState.IDLE) THEN
|
||||||
|
_iState := 30;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Job aborted
|
||||||
|
IF (_stRobotStatus.eStateCurrent = E_PackMLState.ABORTED) OR (_stRobotStatus.eStateCurrent = E_PackMLState.STOPPED) THEN
|
||||||
|
_iState := 900;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Put part onto aligner
|
||||||
|
30:
|
||||||
|
_stRobotJobParams.eJob := E_KukaRobot_JobNumberRobot.PUT_INTO_ALIGNER;
|
||||||
|
|
||||||
|
_stRobotCmd.eCntrlCmd := E_PackMLCmd.START;
|
||||||
|
_stRobotCmd.xCmdChangeRequest := TRUE;
|
||||||
|
|
||||||
|
_iState := 40;
|
||||||
|
|
||||||
|
// Align blank
|
||||||
|
40:
|
||||||
|
END_CASE
|
||||||
|
|
||||||
// =====
|
// =====
|
||||||
// DEBUG
|
// DEBUG
|
||||||
// =====
|
// =====
|
||||||
@@ -123,5 +194,131 @@ IF _xConfirmAlarms THEN
|
|||||||
_xConfirmAlarms := FALSE;
|
_xConfirmAlarms := FALSE;
|
||||||
END_IF]]></ST>
|
END_IF]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
|
<Method Name="M_HandleRobotCmd" Id="{14934aaa-b667-4ddb-915d-1d84e8eb799d}">
|
||||||
|
<Declaration><![CDATA[METHOD PRIVATE M_HandleRobotCmd
|
||||||
|
VAR_INST
|
||||||
|
_iState : INT;
|
||||||
|
_tonTimeout : TON;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// Handle robot commands to plc
|
||||||
|
CASE _iState OF
|
||||||
|
// Wait for command
|
||||||
|
0:
|
||||||
|
_fbRobot.xAckPLCCmd := FALSE;
|
||||||
|
|
||||||
|
IF _fbRobot.xNewCmdRequested THEN
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
_fbRobot.xAckPLCCmd := FALSE;
|
||||||
|
_fbRobot.xPLCJobFailed := FALSE;
|
||||||
|
_iState := 10;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Do command
|
||||||
|
10:
|
||||||
|
CASE _fbRobot.eCmdFromRobot OF
|
||||||
|
E_KukaRobot_JobNumerPLC.ENABLE_VACUUM_ALIGNER:
|
||||||
|
_fbAligner.xEnableVacuum := TRUE;
|
||||||
|
|
||||||
|
// Check for timeout
|
||||||
|
_tonTimeout(IN := TRUE, PT := T#10S);
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_fbRobot.xPLCJobFailed := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _fbAligner.xVacuumEnabled THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
E_KukaRobot_JobNumerPLC.DISABLE_VACUUM_ALIGNER:
|
||||||
|
_fbAligner.xEnableVacuum := FALSE;
|
||||||
|
|
||||||
|
// Check for timeout
|
||||||
|
_tonTimeout(IN := TRUE, PT := T#10S);
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_fbRobot.xPLCJobFailed := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF (NOT _fbAligner.xVacuumEnabled) THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
E_KukaRobot_JobNumerPLC.ENABLE_VACUUM_ETCHER1:
|
||||||
|
_fbEtcher1.xEnableVacuum := TRUE;
|
||||||
|
|
||||||
|
// Check for timeout
|
||||||
|
_tonTimeout(IN := TRUE, PT := T#20S);
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_fbRobot.xPLCJobFailed := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _fbEtcher1.xVacuumEnabled THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
E_KukaRobot_JobNumerPLC.DISABLE_VACUUM_ETCHER1:
|
||||||
|
_fbEtcher1.xEnableVacuum := FALSE;
|
||||||
|
|
||||||
|
// Check for timeout
|
||||||
|
_tonTimeout(IN := TRUE, PT := T#20S);
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_fbRobot.xPLCJobFailed := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF (NOT _fbEtcher1.xVacuumEnabled) THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
E_KukaRobot_JobNumerPLC.ENABLE_VACUUM_ETCHER2:
|
||||||
|
_fbEtcher2.xEnableVacuum := TRUE;
|
||||||
|
|
||||||
|
// Check for timeout
|
||||||
|
_tonTimeout(IN := TRUE, PT := T#20S);
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_fbRobot.xPLCJobFailed := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _fbEtcher2.xVacuumEnabled THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
E_KukaRobot_JobNumerPLC.DISABLE_VACUUM_ETCHER2:
|
||||||
|
_fbEtcher2.xEnableVacuum := FALSE;
|
||||||
|
|
||||||
|
// Check for timeout
|
||||||
|
_tonTimeout(IN := TRUE, PT := T#20S);
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_fbRobot.xPLCJobFailed := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF (NOT _fbEtcher2.xVacuumEnabled) THEN
|
||||||
|
_fbRobot.xAckPLCCmd := TRUE;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
_iState := 90;
|
||||||
|
END_CASE
|
||||||
|
END_CASE]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
</POU>
|
</POU>
|
||||||
</TcPlcObject>
|
</TcPlcObject>
|
||||||
87
PLC/01_Stationen/Aligner/FB_Aligner.TcPOU
Normal file
87
PLC/01_Stationen/Aligner/FB_Aligner.TcPOU
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_Aligner" Id="{5be6cab7-2294-48e5-869c-33773329143e}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_Aligner EXTENDS FB_PackMLGeneric
|
||||||
|
VAR_INPUT
|
||||||
|
xEnableVacuum : BOOL;
|
||||||
|
xAlign : BOOL;
|
||||||
|
|
||||||
|
xConfirmAlarms : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
xVacuumEnabled : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
_fbXAxis : FB_AxisPTP;
|
||||||
|
_fbYAxis : FB_AxisPTP;
|
||||||
|
|
||||||
|
_xEnableVacuum AT %Q* : BOOL := FALSE;
|
||||||
|
_xDisableVacuum AT %Q* : BOOL := TRUE;
|
||||||
|
_xVacuumOk AT %I* : BOOL;
|
||||||
|
|
||||||
|
_udiXOffset AT %I* : UDINT;
|
||||||
|
_udiYOffset AT %I* : UDINT;
|
||||||
|
|
||||||
|
_rXPosToGo : REAL;
|
||||||
|
_rYPosToGo : REAL;
|
||||||
|
|
||||||
|
_iState : INT := 0;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[_fbXAxis(
|
||||||
|
xEnable:= TRUE,
|
||||||
|
xInvertCalibrationCam:= FALSE,
|
||||||
|
xEnablePositive:= TRUE,
|
||||||
|
xEnableNegative:= TRUE,
|
||||||
|
rOverride:= 100.0,
|
||||||
|
lrVelocity:= 2.5,
|
||||||
|
lrAcceleration:= 0,
|
||||||
|
lrDecelleration:= 0,
|
||||||
|
lrJerk:= 0,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
xEnabled=> ,
|
||||||
|
xHomed=> ,
|
||||||
|
lrActPosition=> ,
|
||||||
|
xIsStopped=> ,
|
||||||
|
xBusy=> ,
|
||||||
|
xError=> );
|
||||||
|
|
||||||
|
_fbYAxis(
|
||||||
|
xEnable:= TRUE,
|
||||||
|
xInvertCalibrationCam:= FALSE,
|
||||||
|
xEnablePositive:= TRUE,
|
||||||
|
xEnableNegative:= TRUE,
|
||||||
|
rOverride:= 100.0,
|
||||||
|
lrVelocity:= 2.5,
|
||||||
|
lrAcceleration:= 0,
|
||||||
|
lrDecelleration:= 0,
|
||||||
|
lrJerk:= 0,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
xEnabled=> ,
|
||||||
|
xHomed=> ,
|
||||||
|
lrActPosition=> ,
|
||||||
|
xIsStopped=> ,
|
||||||
|
xBusy=> ,
|
||||||
|
xError=> );
|
||||||
|
|
||||||
|
// Drei mal ausführen damit die Position genau ist
|
||||||
|
IF xAlign THEN
|
||||||
|
xAlign := FALSE;
|
||||||
|
|
||||||
|
_rXPosToGo := UDINT_TO_REAL(_udiXOffset) * -0.001;
|
||||||
|
_rYPosToGo := ((UDINT_TO_REAL(_udiYOffset) * 0.001) - 37.5) * -1;
|
||||||
|
|
||||||
|
IF (ABS(_rXPosToGo) < 10.0) AND (ABS(_rYPosToGo) < 10.0) AND (NOT _fbXAxis.xError) AND (NOT _fbYAxis.xError) THEN
|
||||||
|
_fbXAxis.M_MoveRel(lrRelDist := _rXPosToGo);
|
||||||
|
_fbYAxis.M_MoveRel(lrRelDist := _rYPosToGo);
|
||||||
|
END_IF
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Handle enable disable vacuum command
|
||||||
|
_xEnableVacuum := xEnableVacuum;
|
||||||
|
_xDisableVacuum := (NOT xEnableVacuum);
|
||||||
|
xVacuumEnabled := _xVacuumOk;]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -4,12 +4,17 @@
|
|||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Etcher EXTENDS FB_PackMLGeneric
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_Etcher EXTENDS FB_PackMLGeneric
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xOpenDoor : BOOL;
|
xOpenDoor : BOOL;
|
||||||
|
xEnableVacuum : BOOL;
|
||||||
xOpenChuckClamp : BOOL;
|
xOpenChuckClamp : BOOL;
|
||||||
xEjectChuck : BOOL;
|
xEjectChuck : BOOL;
|
||||||
|
xReleaseManualMode : BOOL;
|
||||||
xConfirmAlarms : BOOL;
|
xConfirmAlarms : BOOL;
|
||||||
|
stHMIInterface : ST_Etcher_HMIInterface;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
|
xDoorOpen : BOOL;
|
||||||
xChuckClampOpen : BOOL;
|
xChuckClampOpen : BOOL;
|
||||||
|
xVacuumEnabled : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_fbValveDoor : FB_Valve('Door');
|
_fbValveDoor : FB_Valve('Door');
|
||||||
@@ -18,39 +23,39 @@ VAR
|
|||||||
xHasOpenFeedback := TRUE,
|
xHasOpenFeedback := TRUE,
|
||||||
timTimeoutOpen := T#5S,
|
timTimeoutOpen := T#5S,
|
||||||
timTimeoutClose := T#5S);
|
timTimeoutClose := T#5S);
|
||||||
_stDoorHMIInterface : ST_HMI_VALVE_DATA;
|
|
||||||
|
|
||||||
_fbClampingLeft : FB_Valve('Clamping left');
|
|
||||||
_stValveClampingLeftCfg : ST_ValveConfig := (
|
_fbUnlockLeft : FB_Valve('Clamping left');
|
||||||
|
_stValveUnlockLeftCfg : ST_ValveConfig := (
|
||||||
xHasClosedFeedback := TRUE,
|
xHasClosedFeedback := TRUE,
|
||||||
xHasOpenFeedback := TRUE,
|
xHasOpenFeedback := TRUE,
|
||||||
timTimeoutOpen := T#5S,
|
timTimeoutOpen := T#5S,
|
||||||
timTimeoutClose := T#5S);
|
timTimeoutClose := T#5S);
|
||||||
_stClampingLeftHMIInterface : ST_HMI_VALVE_DATA;
|
|
||||||
|
|
||||||
_fbClampingRight : FB_Valve('Clamping right');
|
|
||||||
_stValveClampingRightCfg : ST_ValveConfig := (
|
_fbUnlockRight : FB_Valve('Clamping right');
|
||||||
|
_stValveUnlockRightCfg : ST_ValveConfig := (
|
||||||
xHasClosedFeedback := TRUE,
|
xHasClosedFeedback := TRUE,
|
||||||
xHasOpenFeedback := TRUE,
|
xHasOpenFeedback := TRUE,
|
||||||
timTimeoutOpen := T#5S,
|
timTimeoutOpen := T#5S,
|
||||||
timTimeoutClose := T#5S);
|
timTimeoutClose := T#5S);
|
||||||
_stClampingRightHMIInterface : ST_HMI_VALVE_DATA;
|
|
||||||
|
|
||||||
_fbClampingFront : FB_Valve('Clamping front');
|
|
||||||
|
_fbEjectFront : FB_Valve('Clamping front');
|
||||||
_stValveClampingFrontCfg : ST_ValveConfig := (
|
_stValveClampingFrontCfg : ST_ValveConfig := (
|
||||||
xHasClosedFeedback := TRUE,
|
xHasClosedFeedback := TRUE,
|
||||||
xHasOpenFeedback := TRUE,
|
xHasOpenFeedback := TRUE,
|
||||||
timTimeoutOpen := T#5S,
|
timTimeoutOpen := T#5S,
|
||||||
timTimeoutClose := T#5S);
|
timTimeoutClose := T#5S);
|
||||||
_stClampingFrontHMIInterface : ST_HMI_VALVE_DATA;
|
|
||||||
|
|
||||||
_fbClampingBack : FB_Valve('Clamping back');
|
|
||||||
_stValveClampingBackCfg : ST_ValveConfig := (
|
_fbEjectBack : FB_Valve('Clamping back');
|
||||||
|
_stValveEjectBackCfg : ST_ValveConfig := (
|
||||||
xHasClosedFeedback := TRUE,
|
xHasClosedFeedback := TRUE,
|
||||||
xHasOpenFeedback := TRUE,
|
xHasOpenFeedback := TRUE,
|
||||||
timTimeoutOpen := T#5S,
|
timTimeoutOpen := T#5S,
|
||||||
timTimeoutClose := T#5S);
|
timTimeoutClose := T#5S);
|
||||||
_stClampingBackHMIInterface : ST_HMI_VALVE_DATA;
|
|
||||||
|
|
||||||
_rtEjectChuckCmd : R_TRIG;
|
_rtEjectChuckCmd : R_TRIG;
|
||||||
_tpEjectChuck : TP;
|
_tpEjectChuck : TP;
|
||||||
@@ -59,6 +64,8 @@ VAR
|
|||||||
// Sensors
|
// Sensors
|
||||||
// =======
|
// =======
|
||||||
|
|
||||||
|
_xVacuumOk AT %I* : BOOL;
|
||||||
|
|
||||||
// Spinner vibration sensor
|
// Spinner vibration sensor
|
||||||
_xVibrationSensor AT %I* : BOOL;
|
_xVibrationSensor AT %I* : BOOL;
|
||||||
|
|
||||||
@@ -66,7 +73,7 @@ VAR
|
|||||||
// Actuators
|
// Actuators
|
||||||
// =========
|
// =========
|
||||||
|
|
||||||
|
_xDisableVacuum AT %Q* : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
@@ -77,7 +84,9 @@ _fbValveDoor(
|
|||||||
stValveConfig:= _stValveDoorCfg,
|
stValveConfig:= _stValveDoorCfg,
|
||||||
xReleaseManualMode:= FALSE,
|
xReleaseManualMode:= FALSE,
|
||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
stHMIInterface:= _stDoorHMIInterface);
|
stHMIInterface:= stHMIInterface.stDoorHMIInterface);
|
||||||
|
|
||||||
|
xDoorOpen := _fbValveDoor.IsOpen;
|
||||||
|
|
||||||
// Chuck
|
// Chuck
|
||||||
_rtEjectChuckCmd(CLK := xEjectChuck);
|
_rtEjectChuckCmd(CLK := xEjectChuck);
|
||||||
@@ -87,40 +96,45 @@ ELSE
|
|||||||
_tpEjectChuck(IN := FALSE);
|
_tpEjectChuck(IN := FALSE);
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
_fbClampingLeft(
|
_fbUnlockLeft(
|
||||||
xAutomaticOpen:= xOpenChuckClamp,
|
xAutomaticOpen:= xOpenChuckClamp,
|
||||||
xReleaseErrors:= TRUE,
|
xReleaseErrors:= TRUE,
|
||||||
stValveConfig:= _stValveClampingLeftCfg,
|
stValveConfig:= _stValveUnlockLeftCfg,
|
||||||
xReleaseManualMode:= FALSE,
|
xReleaseManualMode:= xReleaseManualMode,
|
||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
stHMIInterface:= _stClampingLeftHMIInterface);
|
stHMIInterface:= stHMIInterface.stUnlockLeftHMIInterface);
|
||||||
|
|
||||||
_fbClampingRight(
|
_fbUnlockRight(
|
||||||
xAutomaticOpen:= xOpenChuckClamp,
|
xAutomaticOpen:= xOpenChuckClamp,
|
||||||
xReleaseErrors:= TRUE,
|
xReleaseErrors:= TRUE,
|
||||||
stValveConfig:= _stValveClampingRightCfg,
|
stValveConfig:= _stValveUnlockRightCfg,
|
||||||
xReleaseManualMode:= FALSE,
|
xReleaseManualMode:= xReleaseManualMode,
|
||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
stHMIInterface:= _stClampingRightHMIInterface);
|
stHMIInterface:= stHMIInterface.stUnlockRightHMIInterface);
|
||||||
|
|
||||||
_fbClampingFront(
|
_fbEjectFront(
|
||||||
xAutomaticOpen:= _tpEjectChuck.Q,
|
xAutomaticOpen:= _tpEjectChuck.Q,
|
||||||
xReleaseErrors:= TRUE,
|
xReleaseErrors:= TRUE,
|
||||||
stValveConfig:= _stValveClampingFrontCfg,
|
stValveConfig:= _stValveClampingFrontCfg,
|
||||||
xReleaseManualMode:= FALSE,
|
xReleaseManualMode:= xReleaseManualMode,
|
||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
stHMIInterface:= _stClampingFrontHMIInterface);
|
stHMIInterface:= stHMIInterface.stEjectFrontHMIInterface);
|
||||||
|
|
||||||
_fbClampingBack(
|
_fbEjectBack(
|
||||||
xAutomaticOpen:= _tpEjectChuck.Q,
|
xAutomaticOpen:= _tpEjectChuck.Q,
|
||||||
xReleaseErrors:= TRUE,
|
xReleaseErrors:= TRUE,
|
||||||
stValveConfig:= _stValveClampingBackCfg,
|
stValveConfig:= _stValveEjectBackCfg,
|
||||||
xReleaseManualMode:= FALSE,
|
xReleaseManualMode:= xReleaseManualMode,
|
||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
stHMIInterface:= _stClampingBackHMIInterface);
|
stHMIInterface:= stHMIInterface.stEjectBackHMIInterface);
|
||||||
|
|
||||||
|
_xDisableVacuum := (NOT xEnableVacuum);
|
||||||
|
|
||||||
// Call base sm
|
// Call base sm
|
||||||
SUPER^();]]></ST>
|
SUPER^();
|
||||||
|
|
||||||
|
// Copy internal signals to output
|
||||||
|
xVacuumEnabled := _xVacuumOk;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
<Method Name="FB_Init" Id="{afcda70c-3e52-4a32-9ca9-670a6b854f24}">
|
<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.
|
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_Etcher_HMIInterface" Id="{b42cab98-5a22-4703-a464-a4d1f5cdc177}">
|
||||||
|
<Declaration><![CDATA[TYPE ST_Etcher_HMIInterface :
|
||||||
|
STRUCT
|
||||||
|
stDoorHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
stUnlockLeftHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
stUnlockRightHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
stEjectFrontHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
stEjectBackHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_Meca_JointSet" Id="{11c9caa0-793d-42a4-a6d6-9b5ea59d2923}">
|
||||||
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
TYPE ST_Meca_JointSet :
|
||||||
|
STRUCT
|
||||||
|
rSubIndex001 : REAL;
|
||||||
|
rSubIndex002 : REAL;
|
||||||
|
rSubIndex003 : REAL;
|
||||||
|
rSubIndex004 : REAL;
|
||||||
|
rSubIndex005 : REAL;
|
||||||
|
rSubIndex006 : REAL;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_Meca_MotionStatus" Id="{5e335d40-97f1-424a-b3e3-1b2de304decf}">
|
||||||
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
TYPE ST_Meca_MotionStatus :
|
||||||
|
STRUCT
|
||||||
|
uiReachedCheckPointId : UINT;
|
||||||
|
uiDiscardedCheckpointId : UINT;
|
||||||
|
uiMoveID : UINT;
|
||||||
|
uiFIFOSpace : UINT;
|
||||||
|
bPaused : BIT;
|
||||||
|
bEOB : BIT;
|
||||||
|
bEOM : BIT;
|
||||||
|
bFIFOCleared : BIT;
|
||||||
|
PStop2 : BIT;
|
||||||
|
bExcessiveTorque : BIT;
|
||||||
|
uiOfflineProgramID : UINT;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_Meca_RobotStatus" Id="{2543bfc1-49aa-4184-94d9-b32f02498fcc}">
|
||||||
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
TYPE ST_Meca_RobotStatus :
|
||||||
|
STRUCT
|
||||||
|
bBusy : BIT;
|
||||||
|
bActivated : BIT;
|
||||||
|
bHomed : BIT;
|
||||||
|
bSimActivated : BIT;
|
||||||
|
bBrakesEngaged : BIT;
|
||||||
|
bRecoveryMode : BIT;
|
||||||
|
bEStop : BIT;
|
||||||
|
bCollisionStatus : BIT;
|
||||||
|
bWorkZoneStatus : BIT;
|
||||||
|
uiError : UINT;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
16
PLC/01_Stationen/Etcher/Mecademics/FB_Mecademics.TcPOU
Normal file
16
PLC/01_Stationen/Etcher/Mecademics/FB_Mecademics.TcPOU
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_Mecademics" Id="{c81cf0ae-3f01-4427-918b-0d3e1c93ae01}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_Mecademics
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -35,6 +35,12 @@ VAR
|
|||||||
timWarningLowOn := T#1S,
|
timWarningLowOn := T#1S,
|
||||||
timHardwareSignalLevelOff := T#1S));
|
timHardwareSignalLevelOff := T#1S));
|
||||||
|
|
||||||
|
_fbPITempControl : FB_PI;
|
||||||
|
_xSaturatedUpper : BOOL;
|
||||||
|
_xSaturatedLower : BOOL;
|
||||||
|
_rMV : REAL;
|
||||||
|
_fbPulsOut : TP;
|
||||||
|
_fbPWMOut : FB_PWM;
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
@@ -48,15 +54,43 @@ _fbTempSensor(
|
|||||||
xConfirmAlarms:= xConfirmAlarms,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
stHMIInterface=> );
|
stHMIInterface=> );
|
||||||
|
|
||||||
|
_fbPITempControl(
|
||||||
|
rSP:= rTargetTemp,
|
||||||
|
rPV:= _fbTempSensor.rScaledValue,
|
||||||
|
rKp:= 2,
|
||||||
|
rTn:= 0,
|
||||||
|
xEnable:= xEnable,
|
||||||
|
xSaturatedUpper:= _xSaturatedUpper,
|
||||||
|
xSaturatedLower:= _xSaturatedLower,
|
||||||
|
rMV=> _rMV);
|
||||||
|
|
||||||
|
IF _rMV >= 100.0 THEN
|
||||||
|
_rMV := 100.0;
|
||||||
|
_xSaturatedUpper := TRUE;
|
||||||
|
ELSE
|
||||||
|
_xSaturatedUpper := FALSE;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _rMV <=0 THEN
|
||||||
|
_rMV := 0.0;
|
||||||
|
_xSaturatedLower := TRUE;
|
||||||
|
ELSE
|
||||||
|
_xSaturatedLower := FALSE;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
_fbPWMOut(
|
||||||
|
rPWM:= _rMV,
|
||||||
|
timPeriod:= T#10S,
|
||||||
|
xOutput=> _xEnableHotplate);
|
||||||
|
|
||||||
// Control temperature with two point controller
|
// Control temperature with two point controller
|
||||||
IF _fbTempSensor.rScaledValue < (rTargetTemp - rDeadBand) THEN
|
// IF _fbTempSensor.rScaledValue < (rTargetTemp - rDeadBand) THEN
|
||||||
_xEnableHotplate := TRUE;
|
// _xEnableHotplate := TRUE;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
IF _fbTempSensor.rScaledValue >= (rTargetTemp) THEN
|
// IF _fbTempSensor.rScaledValue >= (rTargetTemp) THEN
|
||||||
_xEnableHotplate := FALSE;
|
// _xEnableHotplate := FALSE;
|
||||||
END_IF
|
// END_IF
|
||||||
]]></ST>
|
]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
<Method Name="M_AddItem" Id="{9707459a-6558-487c-b730-c9dc92d598ed}">
|
<Method Name="M_AddItem" Id="{9707459a-6558-487c-b730-c9dc92d598ed}">
|
||||||
|
|||||||
35
PLC/01_Stationen/HeatCoolPlates/FB_PWM.TcPOU
Normal file
35
PLC/01_Stationen/HeatCoolPlates/FB_PWM.TcPOU
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_PWM" Id="{39ea0d97-8eb7-44fa-b55f-8461b6c6c8ae}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_PWM
|
||||||
|
VAR_INPUT
|
||||||
|
rPWM : REAL;
|
||||||
|
timPeriod : TIME;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
xOutput : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
_tonTimer : TON;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[_tonTimer(IN := TRUE, PT := timPeriod);
|
||||||
|
IF _tonTimer.Q THEN
|
||||||
|
_tonTimer(IN := FALSE);
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF rPWM = 0.0 THEN
|
||||||
|
xOutput := FALSE;
|
||||||
|
ELSIF rPWM >= 100.0 THEN
|
||||||
|
xOutput := TRUE;
|
||||||
|
ELSE
|
||||||
|
IF (1.0 - (TIME_TO_REAL(_tonTimer.ET) / TIME_TO_REAL(timPeriod))) <= (rPWM * 0.01) THEN
|
||||||
|
xOutput := TRUE;
|
||||||
|
ELSE
|
||||||
|
xOutput := FALSE;
|
||||||
|
END_IF
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -15,15 +15,17 @@ TYPE E_KukaRobot_JobNumerPLC :
|
|||||||
|
|
||||||
// Etcher 1 station
|
// Etcher 1 station
|
||||||
ENABLE_VACUUM_ETCHER1 := 20,
|
ENABLE_VACUUM_ETCHER1 := 20,
|
||||||
DISABLE_VACUUM_ETHER1 := 22,
|
DISABLE_VACUUM_ETCHER1 := 22,
|
||||||
UNLOCK_CHUCK_ETCHER1 := 60,
|
UNLOCK_CHUCK_ETCHER1 := 60,
|
||||||
LOCK_CHUCK_ETCHER1 := 62,
|
LOCK_CHUCK_ETCHER1 := 62,
|
||||||
|
|
||||||
// Ether 2 station
|
// Ether 2 station
|
||||||
ENABLE_VACUUM_ETCHER2 := 21,
|
ENABLE_VACUUM_ETCHER2 := 21,
|
||||||
DISABLE_VACUUM_ETCHER2 := 23,
|
DISABLE_VACUUM_ETCHER2 := 23,
|
||||||
UNLOCK_CHUCK_ETHCER2 := 61,
|
UNLOCK_CHUCK_ETCHER2 := 61,
|
||||||
LOCK_CHUCK_ETCHER2 := 63
|
LOCK_CHUCK_ETCHER2 := 63,
|
||||||
|
|
||||||
|
JOB_FAILED := 99
|
||||||
) WORD := NO_JOB;
|
) WORD := NO_JOB;
|
||||||
END_TYPE
|
END_TYPE
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
|
|||||||
@@ -10,10 +10,16 @@ VAR_INPUT
|
|||||||
// like if a door is open and such things
|
// like if a door is open and such things
|
||||||
stUnitFeedbacks : ST_KukaRobot_UnitFeedbacks;
|
stUnitFeedbacks : ST_KukaRobot_UnitFeedbacks;
|
||||||
|
|
||||||
|
xAckPLCCmd : BOOL;
|
||||||
|
xPLCJobFailed : BOOL;
|
||||||
|
|
||||||
xReleaseAlarms : BOOL;
|
xReleaseAlarms : BOOL;
|
||||||
xConfirmAlarms : BOOL;
|
xConfirmAlarms : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
|
eCmdFromRobot : E_KukaRobot_JobNumerPLC;
|
||||||
|
xNewCmdRequested : BOOL;
|
||||||
|
|
||||||
xReady : BOOL;
|
xReady : BOOL;
|
||||||
xError : BOOL;
|
xError : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -43,7 +49,7 @@ VAR
|
|||||||
_uState AT %I* : U_KukaRobot_State;
|
_uState AT %I* : U_KukaRobot_State;
|
||||||
_dwErrorBits AT %I* : DWORD;
|
_dwErrorBits AT %I* : DWORD;
|
||||||
_awJobStatesFromRobot AT %I* : ARRAY[0..1] OF WORD;
|
_awJobStatesFromRobot AT %I* : ARRAY[0..1] OF WORD;
|
||||||
_dwJobForPLC AT %I* : DWORD;
|
_eJobForPLC AT %I* : E_KukaRobot_JobNumerPLC;
|
||||||
|
|
||||||
_abMirrorToolsAndPositions AT %I* : ARRAY[0..3] OF BYTE;
|
_abMirrorToolsAndPositions AT %I* : ARRAY[0..3] OF BYTE;
|
||||||
|
|
||||||
@@ -58,6 +64,8 @@ VAR
|
|||||||
|
|
||||||
_ePlcJob :E_KukaRobot_JobNumerPLC;
|
_ePlcJob :E_KukaRobot_JobNumerPLC;
|
||||||
|
|
||||||
|
_iState : INT;
|
||||||
|
|
||||||
_xRobotReady : BOOL;
|
_xRobotReady : BOOL;
|
||||||
|
|
||||||
_xError : BOOL;
|
_xError : BOOL;
|
||||||
@@ -97,7 +105,7 @@ _fbAlarmEStopActive(
|
|||||||
timOffDelay:= T#0S);
|
timOffDelay:= T#0S);
|
||||||
|
|
||||||
_fbAlarmOperatorSafetyNotOk(
|
_fbAlarmOperatorSafetyNotOk(
|
||||||
xActive:= (NOT _uState.stState.bUserSAF),
|
xActive:= (NOT _uState.stState.bUserSAF) AND (_uState.stState.bExt),
|
||||||
xRelease:= TRUE,
|
xRelease:= TRUE,
|
||||||
xAcknowledge:= xConfirmAlarms,
|
xAcknowledge:= xConfirmAlarms,
|
||||||
timOnDelay:= T#0S,
|
timOnDelay:= T#0S,
|
||||||
@@ -149,7 +157,12 @@ _uCtrl.stCtrl.bNotDisableAxes := 1;
|
|||||||
// Write unit feedbacks outputs
|
// Write unit feedbacks outputs
|
||||||
// ============================
|
// ============================
|
||||||
|
|
||||||
|
_uCtrl.stCtrl.bDoorEtcher1Open := stUnitFeedbacks.xDoorEtcher1Open;
|
||||||
|
_uCtrl.stCtrl.bDoorEtcher2Open := stUnitFeedbacks.xDoorEtcher2Open;
|
||||||
|
_uCtrl.stCtrl.bDoorHVTestHotOpen := stUnitFeedbacks.xDoorHVTestHotOpen;
|
||||||
|
_uCtrl.stCtrl.bDoorHVTestColdOpen := stUnitFeedbacks.xDoorHVTestColdOpen;
|
||||||
|
|
||||||
|
M_HandlePLCJobs();
|
||||||
|
|
||||||
|
|
||||||
// =================
|
// =================
|
||||||
@@ -217,9 +230,69 @@ END_IF
|
|||||||
<Declaration><![CDATA[METHOD PROTECTED M_Execute
|
<Declaration><![CDATA[METHOD PROTECTED M_Execute
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Wait for robot to be done
|
<ST><![CDATA[CASE stJobParams.eJob OF
|
||||||
IF _awJobStatesFromRobot[0] = 0 THEN
|
E_KukaRobot_JobNumberRobot.WARMUP:
|
||||||
|
CASE _iSSM OF
|
||||||
|
0: // Wait for program to end
|
||||||
|
IF _awJobStatesFromRobot[0] = 0 THEN
|
||||||
|
IF _asiMotorTemps1To4[3] < 40 THEN
|
||||||
|
_iSSM := 10;
|
||||||
|
ELSE
|
||||||
_eCmd := E_PackMLCmd.COMPLETE;
|
_eCmd := E_PackMLCmd.COMPLETE;
|
||||||
|
END_IF
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
10: // Write robot number 0
|
||||||
|
_uJobs.stJobs.wJobNrForRobot := stJobParams.eJob;
|
||||||
|
IF _awJobStatesFromRobot[0] = _uJobs.stJobs.wJobNrForRobot THEN
|
||||||
|
_uJobs.stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
|
_iSSM := 0;
|
||||||
|
END_IF
|
||||||
|
END_CASE
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
// Wait for robot to be done
|
||||||
|
IF _awJobStatesFromRobot[0] = 0 THEN
|
||||||
|
_uJobs.stJobs.wJobNrForRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
|
_eCmd := E_PackMLCmd.COMPLETE;
|
||||||
|
END_IF
|
||||||
|
END_CASE
|
||||||
|
|
||||||
|
]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_HandlePLCJobs" Id="{4e3710b4-697b-42e8-86b1-31b19b3023db}">
|
||||||
|
<Declaration><![CDATA[METHOD M_HandlePLCJobs
|
||||||
|
VAR_INST
|
||||||
|
_rtrigNewJob : R_TRIG;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[_rtrigNewJob(CLK := (_eJobForPLC <> E_KukaRobot_JobNumberRobot.NO_JOB));
|
||||||
|
|
||||||
|
IF _rtrigNewJob.Q THEN
|
||||||
|
eCmdFromRobot := _eJobForPLC;
|
||||||
|
xNewCmdRequested := TRUE;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF xNewCmdRequested AND xAckPLCCmd THEN
|
||||||
|
xNewCmdRequested := FALSE;
|
||||||
|
|
||||||
|
IF (NOT xPLCJobFailed) THEN
|
||||||
|
_uJobs.stJobs.wFinishedJobNrFromPlc := _eJobForPLC;
|
||||||
|
ELSE
|
||||||
|
_uJobs.stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.JOB_FAILED;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
eCmdFromRobot := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Reset plc job done
|
||||||
|
IF (_eJobForPLC = E_KukaRobot_JobNumberRobot.NO_JOB)
|
||||||
|
AND (_uJobs.stJobs.wFinishedJobNrFromPlc <> E_KukaRobot_JobNumberRobot.NO_JOB)
|
||||||
|
AND (NOT xPLCJobFailed)
|
||||||
|
THEN
|
||||||
|
_uJobs.stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumberRobot.NO_JOB;
|
||||||
END_IF]]></ST>
|
END_IF]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
@@ -343,15 +416,20 @@ END_VAR]]></Declaration>
|
|||||||
<ST><![CDATA[CASE _iSSM OF
|
<ST><![CDATA[CASE _iSSM OF
|
||||||
// Check job parameters
|
// Check job parameters
|
||||||
0:
|
0:
|
||||||
IF (_stJobParams.byGripperNumber < 0) OR (_stJobParams.byGripperNumber > 3) // Wrong gripper number
|
IF (_stJobParams.byGripperNumber < 0) OR (_stJobParams.byGripperNumber > 4) // Wrong gripper number
|
||||||
OR (_stJobParams.byChuckNumber < 1) OR (_stJobParams.byChuckNumber > 6) // Wrong chuck number
|
//OR (_stJobParams.byChuckNumber < 1) OR (_stJobParams.byChuckNumber > 6) // Wrong chuck number
|
||||||
OR (_stJobParams.byGripperSide < 1) OR (_stJobParams.byGripperSide > 2) // Wrong gripper side
|
OR (_stJobParams.byGripperSide < 1) OR (_stJobParams.byGripperSide > 6) // Wrong gripper side
|
||||||
THEN
|
THEN
|
||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
ELSE
|
ELSE
|
||||||
_iSSM := 10;
|
_iSSM := 10;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
// BLOCKIERE GREIFER TAUSCH, DA AKTUELL KABEL DEFEKT !!!!!
|
||||||
|
IF _stJobParams.eJob = E_KukaRobot_JobNumberRobot.CHANGE_GRIPPER THEN
|
||||||
|
_eCmd := E_PackMLCmd.ABORT;;
|
||||||
|
END_IF
|
||||||
|
|
||||||
// Transfer job data to robot
|
// Transfer job data to robot
|
||||||
10:
|
10:
|
||||||
// Pos x in um
|
// Pos x in um
|
||||||
@@ -364,16 +442,7 @@ END_VAR]]></Declaration>
|
|||||||
_diThickness := REAL_TO_DINT(_stJobParams.rThickness * 1000);
|
_diThickness := REAL_TO_DINT(_stJobParams.rThickness * 1000);
|
||||||
|
|
||||||
// Gripper side
|
// Gripper side
|
||||||
IF _stJobParams.byGripperSide = 1 THEN
|
_uCtrl.stCtrl.byGripperSide := _stJobParams.byGripperSide;
|
||||||
_uCtrl.stCtrl.bGripperSide1 := 1;
|
|
||||||
_uCtrl.stCtrl.bGripperSide2 := 0;
|
|
||||||
ELSIF _stJobParams.byGripperSide = 2 THEN
|
|
||||||
_uCtrl.stCtrl.bGripperSide1 := 0;
|
|
||||||
_uCtrl.stCtrl.bGripperSide2 := 1;
|
|
||||||
ELSE
|
|
||||||
_uCtrl.stCtrl.bGripperSide1 := 0;
|
|
||||||
_uCtrl.stCtrl.bGripperSide2 := 0;
|
|
||||||
END_IF
|
|
||||||
|
|
||||||
// Scan QR code
|
// Scan QR code
|
||||||
IF stJobParams.xScanQRCode THEN
|
IF stJobParams.xScanQRCode THEN
|
||||||
|
|||||||
@@ -38,15 +38,18 @@ STRUCT
|
|||||||
bDummy8 : BIT;
|
bDummy8 : BIT;
|
||||||
bDummy9 : BIT;
|
bDummy9 : BIT;
|
||||||
|
|
||||||
bGripperSide1 : BIT;
|
|
||||||
bGripperSide2 : BIT;
|
|
||||||
|
|
||||||
bDummy10 : BIT;
|
bDummy10 : BIT;
|
||||||
|
bDummy11 : BIT;
|
||||||
|
|
||||||
|
bDummy12 : BIT;
|
||||||
|
|
||||||
bDoorEtcher1Open : BIT;
|
bDoorEtcher1Open : BIT;
|
||||||
bDoorEtcher2Open : BIT;
|
bDoorEtcher2Open : BIT;
|
||||||
bDoorHVTestHotOpen : BIT;
|
bDoorHVTestHotOpen : BIT;
|
||||||
bDoorHVTestColdOpen : BIT;
|
bDoorHVTestColdOpen : BIT;
|
||||||
|
bDummy13: BIT;
|
||||||
|
|
||||||
|
byGripperSide : BYTE;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
END_TYPE
|
END_TYPE
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
|
|||||||
@@ -7,31 +7,31 @@ STRUCT
|
|||||||
eJob : E_KukaRobot_JobNumberRobot;
|
eJob : E_KukaRobot_JobNumberRobot;
|
||||||
|
|
||||||
// Position in x in mm
|
// Position in x in mm
|
||||||
rPosX : REAL;
|
rPosX : REAL := 78;
|
||||||
|
|
||||||
// Position in y in mm
|
// Position in y in mm
|
||||||
rPosY : REAL;
|
rPosY : REAL := 88;
|
||||||
|
|
||||||
// Substrate thickness in mm
|
// Substrate thickness in mm
|
||||||
rThickness : REAL;
|
rThickness : REAL := 2.7;
|
||||||
|
|
||||||
// Gripper side (1 or 2)
|
// Gripper side (1 or 2)
|
||||||
byGripperSide : BYTE;
|
byGripperSide : BYTE := 3;
|
||||||
|
|
||||||
// Scan QR Code during pickup from loading station
|
// Scan QR Code during pickup from loading station
|
||||||
xScanQRCode : BOOL;
|
xScanQRCode : BOOL;
|
||||||
|
|
||||||
// Position on hotplate (1-9)
|
// Position on hotplate (1-9)
|
||||||
byPlaceOnHotplate : BYTE;
|
byPlaceOnHotplate : BYTE := 1;
|
||||||
|
|
||||||
// Position on coolplate (1-9)
|
// Position on coolplate (1-9)
|
||||||
byPlaceOnCoolPlate : BYTE;
|
byPlaceOnCoolPlate : BYTE := 1;
|
||||||
|
|
||||||
// Gripper tool number (0-3)
|
// Gripper tool number (0-3)
|
||||||
byGripperNumber : BYTE;
|
byGripperNumber : BYTE := 2;
|
||||||
|
|
||||||
// Chuck for etcher to load (1-6)
|
// Chuck for etcher to load (1-6)
|
||||||
byChuckNumber : BYTE;
|
byChuckNumber : BYTE := 1;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
END_TYPE
|
END_TYPE
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
<DUT Name="ST_KukaRobot_UnitFeedbacks" Id="{d247890a-fdb7-498e-85a5-2423833e65fc}">
|
<DUT Name="ST_KukaRobot_UnitFeedbacks" Id="{d247890a-fdb7-498e-85a5-2423833e65fc}">
|
||||||
<Declaration><![CDATA[TYPE ST_KukaRobot_UnitFeedbacks :
|
<Declaration><![CDATA[TYPE ST_KukaRobot_UnitFeedbacks :
|
||||||
STRUCT
|
STRUCT
|
||||||
xDoorEthcher1Open : BOOL;
|
xDoorEtcher1Open : BOOL;
|
||||||
xDoorEther2Open : BOOL;
|
xDoorEtcher2Open : BOOL;
|
||||||
xDoorHVTestHotOpen : BOOL;
|
xDoorHVTestHotOpen : BOOL;
|
||||||
xDoorHVTestColdOpen : BOOL;
|
xDoorHVTestColdOpen : BOOL;
|
||||||
END_STRUCT
|
END_STRUCT
|
||||||
|
|||||||
@@ -32,13 +32,14 @@ VAR
|
|||||||
_fbSocketReceive : FB_SocketReceive;
|
_fbSocketReceive : FB_SocketReceive;
|
||||||
_timReceiveTimeout : TIME := T#5S;
|
_timReceiveTimeout : TIME := T#5S;
|
||||||
_abReceivedBuffer : ARRAY[0..100] OF BYTE;
|
_abReceivedBuffer : ARRAY[0..100] OF BYTE;
|
||||||
_sReceivedResponse : STRING;
|
_asReceivedResponse : ARRAY[0..9] OF STRING;
|
||||||
|
_uiBufferPos : UINT;
|
||||||
_udiCounterReceive : UDINT;
|
_udiCounterReceive : UDINT;
|
||||||
_udiReceivedBytes : UDINT;
|
_udiReceivedBytes : UDINT;
|
||||||
_timPollingTime : TIME := T#50MS;
|
_timPollingTime : TIME := T#1S;
|
||||||
_tonPollTimer : TON;
|
_tonPollTimer : TON;
|
||||||
_xEnableReceiveTimeout : BOOL;
|
_xEnableReceiveTimeout : BOOL;
|
||||||
_timReceiveTimeoutTime : TIME := T#500MS;
|
_timReceiveTimeoutTime : TIME := T#5S;
|
||||||
_tonReceiveTimeout : TON;
|
_tonReceiveTimeout : TON;
|
||||||
_uiLastReceivedResponseId : UINT := 0;
|
_uiLastReceivedResponseId : UINT := 0;
|
||||||
|
|
||||||
@@ -141,194 +142,369 @@ CASE _iStateReceive OF
|
|||||||
// Check if we are still connected
|
// Check if we are still connected
|
||||||
IF (NOT _xConnected) THEN
|
IF (NOT _xConnected) THEN
|
||||||
_tonPollTimer(IN := FALSE);
|
_tonPollTimer(IN := FALSE);
|
||||||
_sReceivedResponse := '';
|
//_asReceivedResponse[] := '';
|
||||||
_iStateReceive := 0;
|
_iStateReceive := 0;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Check received data
|
// Check received data
|
||||||
20:
|
20:
|
||||||
// Check if received command is complete
|
// Check if received command is complete
|
||||||
MEMCPY(destAddr := ADR(_sReceivedResponse), srcAddr := ADR(_abReceivedBuffer), n := _udiReceivedBytes);
|
MEMCPY(destAddr := ADR(_asReceivedResponse[_uiBufferPos]), srcAddr := ADR(_abReceivedBuffer), n := _udiReceivedBytes);
|
||||||
|
_uiBufferPos := _uiBufferPos + 1;
|
||||||
|
IF _uiBufferPos > 9 THEN
|
||||||
|
_uiBufferPos := 0;
|
||||||
|
END_IF
|
||||||
_udiReceivedBytes := 0;
|
_udiReceivedBytes := 0;
|
||||||
//_xCmdReceived := TRUE;
|
_xCmdReceived := TRUE;
|
||||||
|
|
||||||
// Go back to polling wait state
|
// Go back to polling wait state
|
||||||
_iStateReceive := 15;
|
_iStateReceive := 15;
|
||||||
END_CASE
|
END_CASE
|
||||||
|
|
||||||
CASE _iState OF
|
// CASE _iState OF
|
||||||
// Wait for active connection to tray feeder
|
// // Wait for active connection to tray feeder
|
||||||
0:
|
// 0:
|
||||||
IF _xConnected THEN
|
// IF _xConnected THEN
|
||||||
_iState := 10;
|
// _iState := 10;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// Connected and idle
|
// // Connected and idle
|
||||||
10:
|
// 10:
|
||||||
// Got to disconnected state if connection is lost
|
// // Got to disconnected state if connection is lost
|
||||||
IF (NOT _xConnected) THEN
|
// IF (NOT _xConnected) THEN
|
||||||
_iState := 0;
|
// _iState := 0;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
IF _xSendCmd THEN
|
// IF _xSendCmd THEN
|
||||||
_xSendCmd := FALSE;
|
// _xSendCmd := FALSE;
|
||||||
_xBusy := TRUE;
|
// _xBusy := TRUE;
|
||||||
_iState := 20;
|
// _iState := 20;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// Check if we received a response without sending a command
|
// // Check if we received a response without sending a command
|
||||||
// IF _xCmdReceived THEN
|
// IF _xCmdReceived THEN
|
||||||
|
// _xCmdReceived := FALSE;
|
||||||
// _iState := 50;
|
// _iState := 50;
|
||||||
// END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// Send command
|
// // Send command
|
||||||
20:
|
// 20:
|
||||||
_fbSocketSend(
|
// _fbSocketSend(
|
||||||
sSrvNetId:= '',
|
// sSrvNetId:= '',
|
||||||
hSocket:= _hSocket,
|
// hSocket:= _hSocket,
|
||||||
cbLen:= SIZEOF(_sCmd),
|
// cbLen:= SIZEOF(_sCmd),
|
||||||
pSrc:= ADR(_sCmd),
|
// pSrc:= ADR(_sCmd),
|
||||||
bExecute:= TRUE,
|
// bExecute:= TRUE,
|
||||||
tTimeout:= _timSendTimeout,
|
// tTimeout:= _timSendTimeout,
|
||||||
bBusy=> ,
|
// bBusy=> ,
|
||||||
bError=> ,
|
// bError=> ,
|
||||||
nErrId=> );
|
// nErrId=> );
|
||||||
|
//
|
||||||
IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
||||||
_fbSocketSend(bExecute := FALSE);
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
//_xEnableReceiveTimeout := TRUE;
|
// _xEnableReceiveTimeout := TRUE;
|
||||||
//_iState := 30;
|
// _iState := 30;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
IF _fbSocketSend.bError THEN
|
// IF _fbSocketSend.bError THEN
|
||||||
_fbSocketSend(bExecute := FALSE);
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
_iState := 90;
|
// _iState := 90;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// Wait for response
|
// // Wait for response
|
||||||
30:
|
// 30:
|
||||||
// Received a response
|
// // Received a response
|
||||||
IF _xCmdReceived THEN
|
// IF _xCmdReceived THEN
|
||||||
_xCmdReceived := FALSE;
|
// _xCmdReceived := FALSE;
|
||||||
_xEnableReceiveTimeout := FALSE;
|
// _xEnableReceiveTimeout := FALSE;
|
||||||
_uiRetries := 0;
|
// _uiRetries := 0;
|
||||||
_iState := 40;
|
// _iState := 40;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// Didnt receive command ack in time
|
// // Didnt receive command ack in time
|
||||||
// So resend the command if max retries are not reached
|
// // So resend the command if max retries are not reached
|
||||||
IF _tonReceiveTimeout.Q THEN
|
// IF _tonReceiveTimeout.Q THEN
|
||||||
_xEnableReceiveTimeout := FALSE;
|
// _xEnableReceiveTimeout := FALSE;
|
||||||
_uiRetries := _uiRetries + 1;
|
// _uiRetries := _uiRetries + 1;
|
||||||
|
//
|
||||||
// Check if we reached the max number of retries
|
// // Check if we reached the max number of retries
|
||||||
IF _uiRetries > MAX_RETRIES THEN
|
// IF _uiRetries > MAX_RETRIES THEN
|
||||||
_iState := 90;
|
// _iState := 90;
|
||||||
ELSE
|
// ELSE
|
||||||
// Retry by sendind command again
|
// // Retry by sendind command again
|
||||||
_iState := 20;
|
// _iState := 20;
|
||||||
END_IF
|
// END_IF
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// Check response
|
// // Check response
|
||||||
40:
|
// 40:
|
||||||
// Check for cmd id
|
// // Check for cmd id
|
||||||
IF (TO_STRING(_sReceivedResponse[0]) <> UINT_TO_STRING(_uiCmdId)) THEN
|
// IF (TO_STRING(_sReceivedResponse[0]) <> UINT_TO_STRING(_uiCmdId)) THEN
|
||||||
// Wrong command id received
|
// // Wrong command id received
|
||||||
_iState := 90;
|
// _iState := 900;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// For for response indicator
|
// // For for response indicator
|
||||||
IF _sReceivedResponse[1] <> F_ToASC('<') THEN
|
// IF _sReceivedResponse[1] <> F_ToASC('<') THEN
|
||||||
// Wrong response indicator
|
// // Wrong response indicator
|
||||||
_iState := 90;
|
// _iState := 901;
|
||||||
END_IF
|
// END_IF
|
||||||
|
//
|
||||||
// Check for correct cmd
|
// // Check for correct cmd
|
||||||
_xReceivedResponseOk := TRUE;
|
// _xReceivedResponseOk := TRUE;
|
||||||
FOR _diCounter := 2 TO (LEN(_sReceivedResponse) - 1) DO
|
// FOR _diCounter := 2 TO 10 DO
|
||||||
IF _sReceivedResponse[_diCounter] = F_ToASC(':') THEN
|
// IF _sReceivedResponse[_diCounter] <> _sCmd[_diCounter] THEN
|
||||||
EXIT;
|
// _xReceivedResponseOk := FALSE;
|
||||||
ELSIF _sReceivedResponse[_diCounter] <> _sCmd[_diCounter] THEN
|
// EXIT;
|
||||||
_xReceivedResponseOk := FALSE;
|
// END_IF
|
||||||
EXIT;
|
// END_FOR
|
||||||
END_IF
|
//
|
||||||
END_FOR
|
// IF _xReceivedResponseOk THEN
|
||||||
|
// _xBusy := FALSE;
|
||||||
IF _xReceivedResponseOk THEN
|
// _iState := 10;
|
||||||
_iState := 10;
|
// ELSE
|
||||||
ELSE
|
// _iState := 902;
|
||||||
_iState := 90;
|
// END_IF
|
||||||
END_IF
|
//
|
||||||
|
// 50:
|
||||||
50:
|
// // Get command id
|
||||||
// Get command id
|
// _uiReceivedCommandId := _sReceivedResponse[0] - 16#30;
|
||||||
_uiReceivedCommandId := STRING_TO_UINT(TO_STRING(_sReceivedResponse[0]));
|
//
|
||||||
|
// // Check if it is a new command
|
||||||
// Check if it is a new command
|
// IF (_uiReceivedCommandId <> _uiLastReceivedResponseId) OR (_uiReceivedCommandId = 0) THEN
|
||||||
IF (_uiReceivedCommandId <> _uiLastReceivedResponseId) OR (_uiReceivedCommandId = 0) THEN
|
// _uiLastReceivedResponseId := _uiReceivedCommandId;
|
||||||
_uiLastReceivedResponseId := _uiReceivedCommandId;
|
// xNewResponseReady := FALSE;
|
||||||
xNewResponseReady := TRUE;
|
//
|
||||||
|
// // Send acknowledgement
|
||||||
// Send acknowledgement
|
// _iState := 60;
|
||||||
_iState := 60;
|
// END_IF
|
||||||
END_IF
|
//
|
||||||
|
// // Prepare ack response
|
||||||
// Prepare ack response
|
// 60:
|
||||||
60:
|
// FOR _diCounter := 0 TO 10 DO
|
||||||
_sAck := CONCAT(UINT_TO_STRING(_uiLastReceivedResponseId), '<');
|
// _sAck[_diCounter] := _sReceivedResponse[_diCounter];
|
||||||
|
// END_FOR
|
||||||
FOR _diCounter := 2 TO (LEN(_sReceivedResponse) - 1) DO
|
// _sAck[11] := 0;
|
||||||
IF _sReceivedResponse[_diCounter] <> F_ToASC(':') THEN
|
//
|
||||||
_sAck[_diCounter] := _sReceivedResponse[_diCounter];
|
// IF _sReceivedResponse[1] = F_ToAsc('>') THEN
|
||||||
ELSE
|
// _iState := 70;
|
||||||
_sAck[_diCounter] := F_ToASC('\0');
|
// ELSE
|
||||||
EXIT;
|
// _iState := 10;
|
||||||
END_IF
|
// END_IF
|
||||||
END_FOR
|
//
|
||||||
|
//
|
||||||
_iState := 70;
|
// // Send ack response
|
||||||
|
// 70:
|
||||||
// Send ack response
|
// _fbSocketSend(
|
||||||
70:
|
// sSrvNetId:= '',
|
||||||
_fbSocketSend(
|
// hSocket:= _hSocket,
|
||||||
sSrvNetId:= '',
|
// cbLen:= SIZEOF(_sAck),
|
||||||
hSocket:= _hSocket,
|
// pSrc:= ADR(_sAck),
|
||||||
cbLen:= SIZEOF(_sAck),
|
// bExecute:= TRUE,
|
||||||
pSrc:= ADR(_sAck),
|
// tTimeout:= _timSendTimeout,
|
||||||
bExecute:= TRUE,
|
// bBusy=> ,
|
||||||
tTimeout:= _timSendTimeout,
|
// bError=> ,
|
||||||
bBusy=> ,
|
// nErrId=> );
|
||||||
bError=> ,
|
//
|
||||||
nErrId=> );
|
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
||||||
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
// _xEnableReceiveTimeout := TRUE;
|
||||||
_fbSocketSend(bExecute := FALSE);
|
// _xBusy := FALSE;
|
||||||
_xEnableReceiveTimeout := TRUE;
|
// _iState := 10;
|
||||||
_iState := 10;
|
// END_IF
|
||||||
END_IF
|
//
|
||||||
|
// IF _fbSocketSend.bError THEN
|
||||||
IF _fbSocketSend.bError THEN
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
_fbSocketSend(bExecute := FALSE);
|
// _iState := 90;
|
||||||
_iState := 90;
|
// END_IF
|
||||||
END_IF
|
//
|
||||||
|
// // Error
|
||||||
// Error
|
// 90:
|
||||||
90:
|
// _xError := TRUE;
|
||||||
_xError := TRUE;
|
// _xBusy := FALSE;
|
||||||
_xBusy := FALSE;
|
//
|
||||||
|
// IF xConfirmAlarms THEN
|
||||||
IF xConfirmAlarms THEN
|
// _xError := FALSE;
|
||||||
_xError := FALSE;
|
// _uiRetries := 0;
|
||||||
_iState := 0;
|
// _iState := 0;
|
||||||
END_IF
|
// END_IF
|
||||||
END_CASE
|
// END_CASE
|
||||||
|
|
||||||
// Copy output buffers to outputs
|
// Copy output buffers to outputs
|
||||||
xConnected := _xConnected;
|
xConnected := _xConnected;
|
||||||
xBusy := _xBusy;
|
xBusy := _xBusy;
|
||||||
xError := _xError;]]></ST>
|
xError := _xError;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
|
<Method Name="M_Debug" Id="{24e700f8-310e-46c8-98c0-8a10312afeda}">
|
||||||
|
<Declaration><![CDATA[METHOD M_Debug
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// CASE _iState OF
|
||||||
|
// // Wait for active connection to tray feeder
|
||||||
|
// 0:
|
||||||
|
// IF _xConnected THEN
|
||||||
|
// _iState := 10;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Connected and idle
|
||||||
|
// 10:
|
||||||
|
// // Got to disconnected state if connection is lost
|
||||||
|
// IF (NOT _xConnected) THEN
|
||||||
|
// _iState := 0;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// IF _xSendCmd THEN
|
||||||
|
// _xSendCmd := FALSE;
|
||||||
|
// _xBusy := TRUE;
|
||||||
|
// _iState := 20;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Send command
|
||||||
|
// 20:
|
||||||
|
// _fbSocketSend(
|
||||||
|
// sSrvNetId:= '',
|
||||||
|
// hSocket:= _hSocket,
|
||||||
|
// cbLen:= SIZEOF(_sCmd),
|
||||||
|
// pSrc:= ADR(_sCmd),
|
||||||
|
// bExecute:= TRUE,
|
||||||
|
// tTimeout:= _timSendTimeout,
|
||||||
|
// bBusy=> ,
|
||||||
|
// bError=> ,
|
||||||
|
// nErrId=> );
|
||||||
|
//
|
||||||
|
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
||||||
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
|
// _xEnableReceiveTimeout := TRUE;
|
||||||
|
// _iState := 30;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// IF _fbSocketSend.bError THEN
|
||||||
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
|
// _iState := 90;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Wait for response
|
||||||
|
// 30:
|
||||||
|
// // Received a response
|
||||||
|
// IF _xCmdReceived THEN
|
||||||
|
// _xCmdReceived := FALSE;
|
||||||
|
// _xEnableReceiveTimeout := FALSE;
|
||||||
|
// _uiRetries := 0;
|
||||||
|
// _iState := 40;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Didnt receive command ack in time
|
||||||
|
// // So resend the command if max retries are not reached
|
||||||
|
// IF _tonReceiveTimeout.Q THEN
|
||||||
|
// _xEnableReceiveTimeout := FALSE;
|
||||||
|
// _uiRetries := _uiRetries + 1;
|
||||||
|
//
|
||||||
|
// // Check if we reached the max number of retries
|
||||||
|
// IF _uiRetries > MAX_RETRIES THEN
|
||||||
|
// _iState := 90;
|
||||||
|
// ELSE
|
||||||
|
// // Retry by sendind command again
|
||||||
|
// _iState := 20;
|
||||||
|
// END_IF
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Check response
|
||||||
|
// 40:
|
||||||
|
// // Check for cmd id
|
||||||
|
// IF (TO_STRING(_asReceivedResponse[0]) <> UINT_TO_STRING(_uiCmdId)) THEN
|
||||||
|
// // Wrong command id received
|
||||||
|
// _iState := 900;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // For for response indicator
|
||||||
|
// IF _asReceivedResponse[1] <> F_ToASC('<') THEN
|
||||||
|
// // Wrong response indicator
|
||||||
|
// _iState := 901;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Check for correct cmd
|
||||||
|
// _xReceivedResponseOk := TRUE;
|
||||||
|
// FOR _diCounter := 2 TO 10 DO
|
||||||
|
// IF _asReceivedResponse[_diCounter] <> _sCmd[_diCounter] THEN
|
||||||
|
// _xReceivedResponseOk := FALSE;
|
||||||
|
// EXIT;
|
||||||
|
// END_IF
|
||||||
|
// END_FOR
|
||||||
|
//
|
||||||
|
// IF _xReceivedResponseOk THEN
|
||||||
|
// _xBusy := FALSE;
|
||||||
|
// _iState := 10;
|
||||||
|
// ELSE
|
||||||
|
// _iState := 902;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// 50:
|
||||||
|
// // Get command id
|
||||||
|
// _uiReceivedCommandId := _asReceivedResponse[0] - 16#30;
|
||||||
|
//
|
||||||
|
// // Check if it is a new command
|
||||||
|
// IF (_uiReceivedCommandId <> _uiLastReceivedResponseId) OR (_uiReceivedCommandId = 0) THEN
|
||||||
|
// _uiLastReceivedResponseId := _uiReceivedCommandId;
|
||||||
|
// xNewResponseReady := FALSE;
|
||||||
|
//
|
||||||
|
// // Send acknowledgement
|
||||||
|
// _iState := 60;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Prepare ack response
|
||||||
|
// 60:
|
||||||
|
// FOR _diCounter := 0 TO 10 DO
|
||||||
|
// _sAck[_diCounter] := _asReceivedResponse[_diCounter];
|
||||||
|
// END_FOR
|
||||||
|
// _sAck[11] := 0;
|
||||||
|
//
|
||||||
|
// IF _asReceivedResponse[1] = F_ToAsc('>') THEN
|
||||||
|
// _iState := 70;
|
||||||
|
// ELSE
|
||||||
|
// _iState := 10;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// // Send ack response
|
||||||
|
// 70:
|
||||||
|
// _fbSocketSend(
|
||||||
|
// sSrvNetId:= '',
|
||||||
|
// hSocket:= _hSocket,
|
||||||
|
// cbLen:= SIZEOF(_sAck),
|
||||||
|
// pSrc:= ADR(_sAck),
|
||||||
|
// bExecute:= TRUE,
|
||||||
|
// tTimeout:= _timSendTimeout,
|
||||||
|
// bBusy=> ,
|
||||||
|
// bError=> ,
|
||||||
|
// nErrId=> );
|
||||||
|
//
|
||||||
|
// IF (NOT _fbSocketSend.bBusy) AND (NOT _fbSocketSend.bError) THEN
|
||||||
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
|
// _xEnableReceiveTimeout := TRUE;
|
||||||
|
// _xBusy := FALSE;
|
||||||
|
// _iState := 10;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// IF _fbSocketSend.bError THEN
|
||||||
|
// _fbSocketSend(bExecute := FALSE);
|
||||||
|
// _iState := 90;
|
||||||
|
// END_IF
|
||||||
|
//
|
||||||
|
// // Error
|
||||||
|
// 90:
|
||||||
|
// _xError := TRUE;
|
||||||
|
// _xBusy := FALSE;
|
||||||
|
//
|
||||||
|
// IF xConfirmAlarms THEN
|
||||||
|
// _xError := FALSE;
|
||||||
|
// _uiRetries := 0;
|
||||||
|
// _iState := 0;
|
||||||
|
// END_IF
|
||||||
|
// END_CASE]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
<Method Name="M_GetResponse" Id="{48f8719d-7ed0-4fb1-824a-0bf475fcfc2c}">
|
<Method Name="M_GetResponse" Id="{48f8719d-7ed0-4fb1-824a-0bf475fcfc2c}">
|
||||||
<Declaration><![CDATA[METHOD M_GetResponse : STRING
|
<Declaration><![CDATA[METHOD M_GetResponse : STRING
|
||||||
VAR
|
VAR
|
||||||
@@ -337,7 +513,7 @@ END_VAR
|
|||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[xNewResponseReady := FALSE;
|
<ST><![CDATA[xNewResponseReady := FALSE;
|
||||||
MEMCPY(destAddr := ADR(_sTmp), ADR(_sReceivedResponse) + 2, n := INT_TO_UDINT(LEN(_sReceivedResponse) - 2));
|
//MEMCPY(destAddr := ADR(_sTmp), ADR(_asReceivedResponse) + 2, n := INT_TO_UDINT(LEN(_asReceivedResponse) - 2));
|
||||||
M_GetResponse := _sTmp;]]></ST>
|
M_GetResponse := _sTmp;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ VAR
|
|||||||
|
|
||||||
_xTest : BOOL;
|
_xTest : BOOL;
|
||||||
_xSendResult : BOOL;
|
_xSendResult : BOOL;
|
||||||
_sCmd : STRING := 'STAT-FEED:';
|
_sCmd : STRING := 'STAT-FEED';
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ VAR_GLOBAL
|
|||||||
|
|
||||||
xOpenAllChambers : BOOL;
|
xOpenAllChambers : BOOL;
|
||||||
|
|
||||||
|
xOpenChuckClampEtcher1 : BOOL;
|
||||||
|
xOpenChuckClampEtcher2 : BOOL;
|
||||||
|
|
||||||
// Unit states
|
// Unit states
|
||||||
stTrayFeederInputState : ST_PMLs;
|
stTrayFeederInputState : ST_PMLs;
|
||||||
stTRayFeederInputAdmin : ST_PMLa;
|
stTRayFeederInputAdmin : ST_PMLa;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ TYPE E_PackMLState :
|
|||||||
RESETTING := 15,
|
RESETTING := 15,
|
||||||
COMPLETING := 16,
|
COMPLETING := 16,
|
||||||
COMPLETED := 17
|
COMPLETED := 17
|
||||||
) DINT := STOPPED;
|
) DINT := ABORTED;
|
||||||
END_TYPE
|
END_TYPE
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
</DUT>
|
</DUT>
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ END_VAR
|
|||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.IDLE THEN
|
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.IDLE THEN
|
||||||
_eCmd := E_PackMLCmd.RESET;
|
_eCmd := E_PackMLCmd.START;
|
||||||
M_Start := TRUE;
|
M_Start := TRUE;
|
||||||
ELSE
|
ELSE
|
||||||
M_Start := FALSE;
|
M_Start := FALSE;
|
||||||
|
|||||||
@@ -33,9 +33,27 @@
|
|||||||
<Compile Include="00_Main\ST_TrayFeederCamPosData.TcDUT">
|
<Compile Include="00_Main\ST_TrayFeederCamPosData.TcDUT">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\Aligner\FB_Aligner.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="01_Stationen\Etcher\FB_Etcher.TcPOU">
|
<Compile Include="01_Stationen\Etcher\FB_Etcher.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\Etcher\Mecademics\DUTs\ST_Etcher_HMIInterface.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\Etcher\Mecademics\DUTs\ST_Meca_JointSet.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\Etcher\Mecademics\DUTs\ST_Meca_MotionStatus.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\Etcher\Mecademics\DUTs\ST_Meca_RobotStatus.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\Etcher\Mecademics\FB_Mecademics.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="01_Stationen\HeatCoolPlates\FB_CoolPlate.TcPOU">
|
<Compile Include="01_Stationen\HeatCoolPlates\FB_CoolPlate.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -45,6 +63,9 @@
|
|||||||
<Compile Include="01_Stationen\HeatCoolPlates\FB_HotPlate.TcPOU">
|
<Compile Include="01_Stationen\HeatCoolPlates\FB_HotPlate.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\HeatCoolPlates\FB_PWM.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="01_Stationen\HeatCoolPlates\GVL_HeatCoolConfig.TcGVL">
|
<Compile Include="01_Stationen\HeatCoolPlates\GVL_HeatCoolConfig.TcGVL">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
<LinkAlways>true</LinkAlways>
|
<LinkAlways>true</LinkAlways>
|
||||||
@@ -179,12 +200,15 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="01_Stationen\Etcher\Mecademics" />
|
||||||
|
<Folder Include="01_Stationen\Etcher\Mecademics\DUTs" />
|
||||||
<Folder Include="01_Stationen\Kuka_Robot" />
|
<Folder Include="01_Stationen\Kuka_Robot" />
|
||||||
<Folder Include="01_Stationen\Kuka_Robot\InterfaceStructs" />
|
<Folder Include="01_Stationen\Kuka_Robot\InterfaceStructs" />
|
||||||
<Folder Include="01_Stationen\Kuka_Robot\InterfaceUnions" />
|
<Folder Include="01_Stationen\Kuka_Robot\InterfaceUnions" />
|
||||||
<Folder Include="01_Stationen\HVTester" />
|
<Folder Include="01_Stationen\HVTester" />
|
||||||
<Folder Include="01_Stationen\Etcher" />
|
<Folder Include="01_Stationen\Etcher" />
|
||||||
<Folder Include="01_Stationen\HeatCoolPlates" />
|
<Folder Include="01_Stationen\HeatCoolPlates" />
|
||||||
|
<Folder Include="01_Stationen\Aligner" />
|
||||||
<Folder Include="01_Stationen\TrayFeeder" />
|
<Folder Include="01_Stationen\TrayFeeder" />
|
||||||
<Folder Include="01_Stationen" />
|
<Folder Include="01_Stationen" />
|
||||||
<Folder Include="00_Main" />
|
<Folder Include="00_Main" />
|
||||||
|
|||||||
202
PLC/PLC.tmc
202
PLC/PLC.tmc
File diff suppressed because one or more lines are too long
@@ -26305,42 +26305,42 @@ Bit 8 - 15 : reserved]]></Comment>
|
|||||||
<SyncMan>001001000000010004000000010001000100001000010000</SyncMan>
|
<SyncMan>001001000000010004000000010001000100001000010000</SyncMan>
|
||||||
<Fmmu>0000000000000000001000010100000002000000000000000000000000000000</Fmmu>
|
<Fmmu>0000000000000000001000010100000002000000000000000000000000000000</Fmmu>
|
||||||
<Pdo Name="Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture left opened" Index="#x6000" Sub="#x01">
|
<Entry Name="Clamping fixture unlock left retracted" Index="#x6000" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 2" Index="#x1a01" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 2" Index="#x1a01" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture left closed" Index="#x6010" Sub="#x01">
|
<Entry Name="Clamping fixture unlock left extended" Index="#x6010" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 3" Index="#x1a02" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 3" Index="#x1a02" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture right opened" Index="#x6020" Sub="#x01">
|
<Entry Name="Clamping fixture unlock right retracted" Index="#x6020" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 4" Index="#x1a03" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 4" Index="#x1a03" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture right closed" Index="#x6030" Sub="#x01">
|
<Entry Name="Clamping fixture unlock right extended" Index="#x6030" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 5" Index="#x1a04" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 5" Index="#x1a04" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture in front opened" Index="#x6040" Sub="#x01">
|
<Entry Name="Clamping fixture ejector front retracted" Index="#x6040" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 6" Index="#x1a05" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 6" Index="#x1a05" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture in front closed" Index="#x6050" Sub="#x01">
|
<Entry Name="Clamping fixture ejector front extended" Index="#x6050" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 7" Index="#x1a06" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 7" Index="#x1a06" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture back opened" Index="#x6060" Sub="#x01">
|
<Entry Name="Clamping fixture ejector back retracted" Index="#x6060" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 8" Index="#x1a07" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 8" Index="#x1a07" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture back closed" Index="#x6070" Sub="#x01">
|
<Entry Name="Clamping fixture ejector back extended" Index="#x6070" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
@@ -32104,42 +32104,42 @@ Bit 8 - 15 : reserved]]></Comment>
|
|||||||
<SyncMan>001001000000010004000000010001000100001000010000</SyncMan>
|
<SyncMan>001001000000010004000000010001000100001000010000</SyncMan>
|
||||||
<Fmmu>0000000000000000001000010100000002000000000000000000000000000000</Fmmu>
|
<Fmmu>0000000000000000001000010100000002000000000000000000000000000000</Fmmu>
|
||||||
<Pdo Name="Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture left opened" Index="#x6000" Sub="#x01">
|
<Entry Name="Clamping fixture unlock left retracted" Index="#x6000" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 2" Index="#x1a01" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 2" Index="#x1a01" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture left closed" Index="#x6010" Sub="#x01">
|
<Entry Name="Clamping fixture unlock left extended" Index="#x6010" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 3" Index="#x1a02" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 3" Index="#x1a02" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture right opened" Index="#x6020" Sub="#x01">
|
<Entry Name="Clamping fixture unlock right retracted" Index="#x6020" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 4" Index="#x1a03" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 4" Index="#x1a03" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture right closed" Index="#x6030" Sub="#x01">
|
<Entry Name="Clamping fixture unlock right extended" Index="#x6030" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 5" Index="#x1a04" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 5" Index="#x1a04" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture in front opened" Index="#x6040" Sub="#x01">
|
<Entry Name="Clamping fixture ejector front retracted" Index="#x6040" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 6" Index="#x1a05" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 6" Index="#x1a05" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture in front closed" Index="#x6050" Sub="#x01">
|
<Entry Name="Clamping fixture ejector front extended" Index="#x6050" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 7" Index="#x1a06" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 7" Index="#x1a06" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture back opened" Index="#x6060" Sub="#x01">
|
<Entry Name="Clamping fixture ejector back retracted" Index="#x6060" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
<Pdo Name="Channel 8" Index="#x1a07" Flags="#x0011" SyncMan="0">
|
<Pdo Name="Channel 8" Index="#x1a07" Flags="#x0011" SyncMan="0">
|
||||||
<Entry Name="Clamping fixture back closed" Index="#x6070" Sub="#x01">
|
<Entry Name="Clamping fixture ejector back extended" Index="#x6070" Sub="#x01">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Pdo>
|
</Pdo>
|
||||||
@@ -32225,10 +32225,10 @@ Bit 8 - 15 : reserved]]></Comment>
|
|||||||
<Entry Name="Channel 1" Index="#x7000" Sub="#x02" Flags="#x00001000">
|
<Entry Name="Channel 1" Index="#x7000" Sub="#x02" Flags="#x00001000">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
<Entry Name="Channel 2" Index="#x7000" Sub="#x03" Flags="#x00001000">
|
<Entry Name="Aligner enable vacuum" Index="#x7000" Sub="#x03" Flags="#x00001000">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
<Entry Name="Channel 3" Index="#x7000" Sub="#x04" Flags="#x00001000">
|
<Entry Name="Aligner disable vacuum" Index="#x7000" Sub="#x04" Flags="#x00001000">
|
||||||
<Type>BIT</Type>
|
<Type>BIT</Type>
|
||||||
</Entry>
|
</Entry>
|
||||||
<Entry Name="Channel 4" Index="#x7000" Sub="#x05" Flags="#x00001000">
|
<Entry Name="Channel 4" Index="#x7000" Sub="#x05" Flags="#x00001000">
|
||||||
@@ -34991,7 +34991,7 @@ Bit 8 - 15 : reserved]]></Comment>
|
|||||||
<ModuleIdent>640</ModuleIdent>
|
<ModuleIdent>640</ModuleIdent>
|
||||||
<Module Id="#x03090055" Type="Sync Inputs" Class="">
|
<Module Id="#x03090055" Type="Sync Inputs" Class="">
|
||||||
<Name>Module 1 (Sync Inputs)</Name>
|
<Name>Module 1 (Sync Inputs)</Name>
|
||||||
<ImageId>564</ImageId>
|
<ImageId>565</ImageId>
|
||||||
<ModuleData>c860000080020000000004000000000000000000000000000000000000000000</ModuleData>
|
<ModuleData>c860000080020000000004000000000000000000000000000000000000000000</ModuleData>
|
||||||
<PdoIndex>6657</PdoIndex>
|
<PdoIndex>6657</PdoIndex>
|
||||||
</Module>
|
</Module>
|
||||||
@@ -35020,7 +35020,7 @@ Bit 8 - 15 : reserved]]></Comment>
|
|||||||
<ModuleIdent>519</ModuleIdent>
|
<ModuleIdent>519</ModuleIdent>
|
||||||
<Module Id="#x0309000d" Type="Default IO" Class="">
|
<Module Id="#x0309000d" Type="Default IO" Class="">
|
||||||
<Name>Module 3 (Default IO)</Name>
|
<Name>Module 3 (Default IO)</Name>
|
||||||
<ImageId>564</ImageId>
|
<ImageId>565</ImageId>
|
||||||
<ModuleData>c860000004020000000004000000000000000000000000000000000000000000</ModuleData>
|
<ModuleData>c860000004020000000004000000000000000000000000000000000000000000</ModuleData>
|
||||||
<PdoIndex>6676</PdoIndex>
|
<PdoIndex>6676</PdoIndex>
|
||||||
<PdoIndex>5652</PdoIndex>
|
<PdoIndex>5652</PdoIndex>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20" ClassName="CDevDpRamDef" SubType="121">
|
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20" ClassName="CDevDpRamDef" SubType="121">
|
||||||
<Device Id="11" Disabled="true" DevType="121">
|
<Device Id="11" DevType="121">
|
||||||
<Name>__FILENAME__</Name>
|
<Name>__FILENAME__</Name>
|
||||||
<AddressInfo>
|
<AddressInfo>
|
||||||
<Pci>
|
<Pci>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.19" ClassName="CDevEtherCATDef" SubType="111">
|
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20" ClassName="CDevEtherCATDef" SubType="111">
|
||||||
<DataTypes>
|
<DataTypes>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
|
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
|
||||||
<BitSize>7</BitSize>
|
<BitSize>7</BitSize>
|
||||||
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
||||||
<ArrayInfo>
|
<ArrayInfo>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.19" ClassName="CDevEtherCATDef" SubType="111">
|
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.20" ClassName="CDevEtherCATDef" SubType="111">
|
||||||
<DataTypes>
|
<DataTypes>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
|
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
|
||||||
<BitSize>7</BitSize>
|
<BitSize>7</BitSize>
|
||||||
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
|
||||||
<ArrayInfo>
|
<ArrayInfo>
|
||||||
|
|||||||
@@ -1449,7 +1449,7 @@ External Setpoint Generation:
|
|||||||
<OtherSettings AllowMotionCmdToSlave="true"/>
|
<OtherSettings AllowMotionCmdToSlave="true"/>
|
||||||
</AxisPara>
|
</AxisPara>
|
||||||
<Encoder Name="Enc" EncType="8">
|
<Encoder Name="Enc" EncType="8">
|
||||||
<EncPara ScaleFactorNumerator="360" ScaleFactorDenominator="1048576" Offset="28.5" MaxCount="#xffffffff" ReferenceSystem="4">
|
<EncPara ScaleFactorNumerator="360" ScaleFactorDenominator="1048576" Offset="28.5" MaxCount="#xffffffff" ReferenceSystem="1">
|
||||||
<FilterTime TVelo="0.2"/>
|
<FilterTime TVelo="0.2"/>
|
||||||
</EncPara>
|
</EncPara>
|
||||||
<Vars VarGrpType="1">
|
<Vars VarGrpType="1">
|
||||||
@@ -1509,7 +1509,7 @@ External Setpoint Generation:
|
|||||||
</Vars>
|
</Vars>
|
||||||
</Encoder>
|
</Encoder>
|
||||||
<Drive Name="Drive" DrvType="9">
|
<Drive Name="Drive" DrvType="9">
|
||||||
<DrvPara MaxCount="#xffffffff" DriveControlDWord="#x00000100">
|
<DrvPara MaxCount="#xffffffff" DriveControlDWord="#x00030100">
|
||||||
<Analog VeloReferenz="35031.3336914063" VeloScale="1.02400649589962" TorqueSetpointScale="10" ScaleFactorActTorque="0.1"/>
|
<Analog VeloReferenz="35031.3336914063" VeloScale="1.02400649589962" TorqueSetpointScale="10" ScaleFactorActTorque="0.1"/>
|
||||||
<TimeComp TaskDelayCycles="1"/>
|
<TimeComp TaskDelayCycles="1"/>
|
||||||
</DrvPara>
|
</DrvPara>
|
||||||
@@ -1798,7 +1798,7 @@ External Setpoint Generation:
|
|||||||
</Vars>
|
</Vars>
|
||||||
</Encoder>
|
</Encoder>
|
||||||
<Drive Name="Drive" DrvType="9">
|
<Drive Name="Drive" DrvType="9">
|
||||||
<DrvPara MaxCount="#xffffffff" DriveControlDWord="#x00000100">
|
<DrvPara MaxCount="#xffffffff" DriveControlDWord="#x00030100">
|
||||||
<Analog VeloReferenz="35031.3336914063" VeloScale="1.02400649589962" TorqueSetpointScale="10" ScaleFactorActTorque="0.1"/>
|
<Analog VeloReferenz="35031.3336914063" VeloScale="1.02400649589962" TorqueSetpointScale="10" ScaleFactorActTorque="0.1"/>
|
||||||
<TimeComp TaskDelayCycles="1"/>
|
<TimeComp TaskDelayCycles="1"/>
|
||||||
</DrvPara>
|
</DrvPara>
|
||||||
@@ -2018,16 +2018,16 @@ External Setpoint Generation:
|
|||||||
</Var>
|
</Var>
|
||||||
</Vars>
|
</Vars>
|
||||||
</Axis>
|
</Axis>
|
||||||
<Axis Id="5" CreateSymbols="true" AxisType="1" SimulationMode="true">
|
<Axis Id="5" CreateSymbols="true" AxisType="1">
|
||||||
<Name>AlignerXAxis</Name>
|
<Name>AlignerXAxis</Name>
|
||||||
<AxisPara>
|
<AxisPara>
|
||||||
<Dynamic Acceleration="15" Deceleration="15" Jerk="45"/>
|
<Dynamic AccelerationMaximum="2000" DecelerationMaximum="2000" Acceleration="2" Deceleration="2" Jerk="2"/>
|
||||||
<Velo RefSearch="5" RefSync="0.5" SlowManual="1" FastManual="5" Fast="12.834" Maximum="10"/>
|
<Velo RefSearch="1.5" RefSync="0.5" SlowManual="1" FastManual="5" Fast="12.834" Maximum="5"/>
|
||||||
<OtherSettings AllowMotionCmdToSlave="true"/>
|
<OtherSettings AllowMotionCmdToSlave="true"/>
|
||||||
</AxisPara>
|
</AxisPara>
|
||||||
<Encoder Name="Enc" EncType="4">
|
<Encoder Name="Enc" EncType="4">
|
||||||
<EncPara ScaleFactorNumerator="1" ScaleFactorDenominator="12800" MaxCount="#xffffffff">
|
<EncPara ScaleFactorNumerator="1" ScaleFactorDenominator="12800" MaxCount="#xffffffff">
|
||||||
<Inc RefSearchInverse="true" RefSyncInverse="false" RefPosition="-14.2" RefMode="1" RefSoftSyncMask="#x0000ffff" HomingSensorSource="2"/>
|
<Inc RefSearchInverse="true" RefSyncInverse="false" RefPosition="-34.47" RefMode="1" RefSoftSyncMask="#x0000ffff" HomingSensorSource="2"/>
|
||||||
</EncPara>
|
</EncPara>
|
||||||
<Vars VarGrpType="1">
|
<Vars VarGrpType="1">
|
||||||
<Name>Inputs</Name>
|
<Name>Inputs</Name>
|
||||||
@@ -2177,16 +2177,16 @@ External Setpoint Generation:
|
|||||||
</Var>
|
</Var>
|
||||||
</Vars>
|
</Vars>
|
||||||
</Axis>
|
</Axis>
|
||||||
<Axis Id="6" CreateSymbols="true" AxisType="1" SimulationMode="true">
|
<Axis Id="6" CreateSymbols="true" AxisType="1">
|
||||||
<Name>AlignerYAxis</Name>
|
<Name>AlignerYAxis</Name>
|
||||||
<AxisPara>
|
<AxisPara>
|
||||||
<Dynamic Acceleration="15" Deceleration="15" Jerk="45"/>
|
<Dynamic AccelerationMaximum="2000" DecelerationMaximum="2000" Acceleration="1.99999914163127" Deceleration="1.99999914163127" Jerk="22.4999806867077"/>
|
||||||
<Velo RefSearch="5" RefSync="0.5" SlowManual="1" FastManual="5" Fast="12.834" Maximum="10"/>
|
<Velo RefSearch="1.5" RefSync="0.5" SlowManual="1" FastManual="5" Fast="12.834" Maximum="5"/>
|
||||||
<OtherSettings AllowMotionCmdToSlave="true"/>
|
<OtherSettings AllowMotionCmdToSlave="true"/>
|
||||||
</AxisPara>
|
</AxisPara>
|
||||||
<Encoder Name="Enc" EncType="4">
|
<Encoder Name="Enc" EncType="4">
|
||||||
<EncPara ScaleFactorNumerator="1" ScaleFactorDenominator="12800" MaxCount="#xffffffff">
|
<EncPara ScaleFactorNumerator="1" ScaleFactorDenominator="12800" MaxCount="#xffffffff">
|
||||||
<Inc RefSearchInverse="true" RefSyncInverse="false" RefPosition="-34.46" RefMode="1" RefSoftSyncMask="#x0000ffff" HomingSensorSource="2"/>
|
<Inc RefSearchInverse="true" RefSyncInverse="false" RefPosition="-11.67" RefMode="1" RefSoftSyncMask="#x0000ffff" HomingSensorSource="2"/>
|
||||||
</EncPara>
|
</EncPara>
|
||||||
<Vars VarGrpType="1">
|
<Vars VarGrpType="1">
|
||||||
<Name>Inputs</Name>
|
<Name>Inputs</Name>
|
||||||
@@ -2339,7 +2339,7 @@ External Setpoint Generation:
|
|||||||
</NC>
|
</NC>
|
||||||
<Mappings>
|
<Mappings>
|
||||||
<OwnerA Name="Axes^AlignerXAxis">
|
<OwnerA Name="Axes^AlignerXAxis">
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL07 (EL7037)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL08 (EL7037)">
|
||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Error" Size="1" OffsA="3"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Error" Size="1" OffsA="3"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Motor stall" Size="1" OffsA="7"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Motor stall" Size="1" OffsA="7"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Moving negative" Size="1" OffsA="5"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Moving negative" Size="1" OffsA="5"/>
|
||||||
@@ -2383,7 +2383,7 @@ External Setpoint Generation:
|
|||||||
</OwnerB>
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
<OwnerA Name="Axes^AlignerYAxis">
|
<OwnerA Name="Axes^AlignerYAxis">
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL08 (EL7037)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL07 (EL7037)">
|
||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Error" Size="1" OffsA="3"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Error" Size="1" OffsA="3"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Motor stall" Size="1" OffsA="7"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Motor stall" Size="1" OffsA="7"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Moving negative" Size="1" OffsA="5"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="STM Status^Status^Moving negative" Size="1" OffsA="5"/>
|
||||||
|
|||||||
@@ -11,6 +11,14 @@
|
|||||||
</OwnerB>
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
</UnrestoredVarLinks>
|
</UnrestoredVarLinks>
|
||||||
|
<UnrestoredVarLinks ImportTime="2026-02-04T18:53:56">
|
||||||
|
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
||||||
|
<Link VarA="PRG_Main._fbAligner._rXOffset" TypeA="REAL" InOutA="0" GuidA="{18071995-0000-0000-0000-00000000000D}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7" RestoreInfo="ANotFound"/>
|
||||||
|
<Link VarA="PRG_Main._fbAligner._rYOffset" TypeA="REAL" InOutA="0" GuidA="{18071995-0000-0000-0000-00000000000D}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8" RestoreInfo="ANotFound"/>
|
||||||
|
</OwnerB>
|
||||||
|
</OwnerA>
|
||||||
|
</UnrestoredVarLinks>
|
||||||
<Contexts>
|
<Contexts>
|
||||||
<Context>
|
<Context>
|
||||||
<Id>0</Id>
|
<Id>0</Id>
|
||||||
@@ -28,12 +36,20 @@
|
|||||||
</Instance>
|
</Instance>
|
||||||
<Mappings>
|
<Mappings>
|
||||||
<OwnerA>
|
<OwnerA>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._udiXOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._udiYOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8"/>
|
||||||
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 44 (EX260-SEC1)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 44 (EX260-SEC1)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseDoor1" VarB="Byte 0^Output[3]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseDoor1" VarB="Byte 0^Output[3]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseDoor2" VarB="Byte 0^Output[1]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseDoor2" VarB="Byte 0^Output[1]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenDoor1" VarB="Byte 0^Output[2]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenDoor1" VarB="Byte 0^Output[2]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenDoor2" VarB="Byte 0^Output[0]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xOpenDoor2" VarB="Byte 0^Output[0]" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 7 (EX600-SEC#)">
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._xDisableVacuum" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner disable vacuum" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._xEnableVacuum" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner enable vacuum" Size="1"/>
|
||||||
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 47 (EL2004)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 47 (EL2004)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate._xEnableHotplate" VarB="Channel 1^HotplateControl" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate._xEnableHotplate" VarB="Channel 1^HotplateControl" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
@@ -97,39 +113,64 @@
|
|||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL02 (EL1018)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL02 (EL1018)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Safety._xRequestOpenDoor" VarB="Channel 4^MainDoorUnlock" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Safety._xRequestOpenDoor" VarB="Channel 4^MainDoorUnlock" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL04 (EL1018)">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._xVacuumOk" VarB="Channel 7^Input" Size="1"/>
|
||||||
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A1 (EP1018-0001)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A1 (EP1018-0001)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
|
||||||
</OwnerB>
|
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingBack.xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingBack.xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingFront.xCloseValve" VarB="Byte 0^Output[5]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingFront.xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingLeft.xCloseValve" VarB="Byte 1^Output[1]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingLeft.xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingRight.xCloseValve" VarB="Byte 1^Output[3]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
|
||||||
</OwnerB>
|
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A1 (EP1018-0001)">
|
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A2 (EP1018-0001)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A2 (EP1018-0001)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingBack.xCloseFeedback" VarB="Channel 8^Clamping fixture back closed" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingBack.xOpenFeedback" VarB="Channel 7^Clamping fixture back opened" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectBack.xOpenFeedback" VarB="Channel 8^Clamping fixture ejector back extended" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingFront.xCloseFeedback" VarB="Channel 6^Clamping fixture in front closed" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectFront.xCloseFeedback" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingFront.xOpenFeedback" VarB="Channel 5^Clamping fixture in front opened" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectFront.xOpenFeedback" VarB="Channel 6^Clamping fixture ejector front extended" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingLeft.xCloseFeedback" VarB="Channel 2^Clamping fixture left closed" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockLeft.xCloseFeedback" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingLeft.xOpenFeedback" VarB="Channel 1^Clamping fixture left opened" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockLeft.xOpenFeedback" VarB="Channel 2^Clamping fixture unlock left extended" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingRight.xCloseFeedback" VarB="Channel 4^Clamping fixture right closed" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockRight.xCloseFeedback" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbClampingRight.xOpenFeedback" VarB="Channel 3^Clamping fixture right opened" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockRight.xOpenFeedback" VarB="Channel 4^Clamping fixture unlock right extended" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_QM01 (EX260-SEC1)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectBack.xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectBack.xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectFront.xCloseValve" VarB="Byte 0^Output[5]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectFront.xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockLeft.xCloseValve" VarB="Byte 1^Output[1]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockLeft.xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockRight.xCloseValve" VarB="Byte 1^Output[3]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._xDisableVacuum" VarB="Byte 0^Output[2]" Size="1"/>
|
||||||
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A1 (EP1018-0001)">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
|
||||||
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A2 (EP1018-0001)">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectBack.xOpenFeedback" VarB="Channel 8^Clamping fixture ejector back extended" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectFront.xCloseFeedback" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectFront.xOpenFeedback" VarB="Channel 6^Clamping fixture ejector front extended" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockLeft.xCloseFeedback" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockLeft.xOpenFeedback" VarB="Channel 2^Clamping fixture unlock left extended" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockRight.xCloseFeedback" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockRight.xOpenFeedback" VarB="Channel 4^Clamping fixture unlock right extended" Size="1"/>
|
||||||
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_QM01 (EX260-SEC1)">
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectBack.xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectBack.xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectFront.xCloseValve" VarB="Byte 0^Output[5]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectFront.xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockLeft.xCloseValve" VarB="Byte 1^Output[1]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockLeft.xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockRight.xCloseValve" VarB="Byte 1^Output[3]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._xDisableVacuum" VarB="Byte 0^Output[2]" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^PC_K01_KL01 (EK1100)^PC_K01_KL02 (EL1918)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^PC_K01_KL01 (EK1100)^PC_K01_KL02 (EL1918)">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Safety._xComStartup" VarB="StandardInputs^Standard Out Var 12" Size="1"/>
|
<Link VarA="PlcTask Inputs^PRG_Safety._xComStartup" VarB="StandardInputs^Standard Out Var 12" Size="1"/>
|
||||||
@@ -145,7 +186,7 @@
|
|||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._diMirrorOffsetPosY" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 6 (Offset Y)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._diMirrorOffsetPosY" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 6 (Offset Y)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._diMirrorThickness" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 7 (Thickness)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._diMirrorThickness" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 7 (Thickness)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._dwErrorBits" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 1 (Errorbits)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._dwErrorBits" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 1 (Errorbits)"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._dwJobForPLC" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 3 (JobForPLC)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._eJobForPLC" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 3 (JobForPLC)" Size="16"/>
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._uState" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 0 (Status)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._uState" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 0 (Status)"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._abToolsAndPositions" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 2 (Greifer/Drehteller/Positionen)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._abToolsAndPositions" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 2 (Greifer/Drehteller/Positionen)"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._diOffsetPosX" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 3 (Offset X)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._diOffsetPosX" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 3 (Offset X)"/>
|
||||||
@@ -158,6 +199,14 @@
|
|||||||
<Link VarA="PlcTask Inputs^PRG_Main._stCamResult" VarB="API^Term 4 (Result Data 128Byte)^Subterm 6 (Result Data 128Byte)^Inputs^Result Data" Size="264" OffsB="224"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._stCamResult" VarB="API^Term 4 (Result Data 128Byte)^Subterm 6 (Result Data 128Byte)^Inputs^Result Data" Size="264" OffsB="224"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._xTriggerCamera" VarB="API^Term 10 (Control)^Subterm 12 (Control)^Outputs^Control Register[0]^Trigger" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._xTriggerCamera" VarB="API^Term 10 (Control)^Subterm 12 (Control)^Outputs^Control Register[0]^Trigger" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
|
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerXAxis">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._fbXAxis._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._fbXAxis._fbAxis.PlcToNc" VarB="Inputs^FromPlc"/>
|
||||||
|
</OwnerB>
|
||||||
|
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerYAxis">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._fbYAxis._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._fbYAxis._fbAxis.PlcToNc" VarB="Inputs^FromPlc"/>
|
||||||
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
</Mappings>
|
</Mappings>
|
||||||
</TcSmItem>
|
</TcSmItem>
|
||||||
|
|||||||
Reference in New Issue
Block a user