Added hot and cold plates
- Started spinner chuck io's
This commit is contained in:
@@ -7,6 +7,8 @@ VAR
|
|||||||
_fbHVTester : FB_HVTester;
|
_fbHVTester : FB_HVTester;
|
||||||
_fbEtcher1 : FB_Etcher;
|
_fbEtcher1 : FB_Etcher;
|
||||||
_fbEtcher2 : FB_Etcher;
|
_fbEtcher2 : FB_Etcher;
|
||||||
|
_fbTrayFeederInput : FB_TrayFeeder(sIPAddr := '192.168.1.10', udiPort := 5000);
|
||||||
|
_fbHeatCoolPlates : FB_HeatCoolPlates;
|
||||||
|
|
||||||
_xConfirmAlarms : BOOL;
|
_xConfirmAlarms : BOOL;
|
||||||
|
|
||||||
@@ -16,11 +18,18 @@ VAR
|
|||||||
|
|
||||||
_stRobotJobParams : ST_KukaRobot_JobParams;
|
_stRobotJobParams : ST_KukaRobot_JobParams;
|
||||||
|
|
||||||
|
_stCamResult AT %I* : ST_TrayFeederCamPosData;
|
||||||
|
|
||||||
|
_rtStopRobotFromSafety : R_TRIG;
|
||||||
|
|
||||||
|
|
||||||
// DEBUG commands
|
// DEBUG commands
|
||||||
_xClear : BOOL;
|
_xClear : BOOL;
|
||||||
_xReset : BOOL;
|
_xReset : BOOL;
|
||||||
_xStart : BOOL;
|
_xStart : BOOL;
|
||||||
|
_xHold : BOOL;
|
||||||
|
_xUnhold : BOOL;
|
||||||
|
_xStop : BOOL;
|
||||||
|
|
||||||
_xStartTrigger : BOOL;
|
_xStartTrigger : BOOL;
|
||||||
_tofTriggerTime : TOF := (PT := T#1S);
|
_tofTriggerTime : TOF := (PT := T#1S);
|
||||||
@@ -30,19 +39,37 @@ END_VAR
|
|||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF _xClear THEN
|
<ST><![CDATA[IF _xClear THEN
|
||||||
_xClear := FALSE;
|
_xClear := FALSE;
|
||||||
_stRobotCmd.eCntrlCmd := E_PackMLCmd.CLEAR;
|
_fbRobot.M_Clear();
|
||||||
_stRobotCmd.xCmdChangeRequest := TRUE;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xReset THEN
|
IF _xReset THEN
|
||||||
_xReset := FALSE;
|
_xReset := FALSE;
|
||||||
_stRobotCmd.eCntrlCmd := E_PackMLCmd.RESET;
|
_fbRobot.M_Reset();
|
||||||
_stRobotCmd.xCmdChangeRequest := TRUE;
|
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
IF _xStart THEN
|
IF _xStart THEN
|
||||||
_xStart := FALSE;
|
_xStart := FALSE;
|
||||||
_stRobotCmd.eCntrlCmd := E_PackMLCmd.START;
|
_fbRobot.M_Start();
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _xHold THEN
|
||||||
|
_xHold := FALSE;
|
||||||
|
_fbRobot.M_Hold();
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _xUnhold THEN
|
||||||
|
_xUnhold := FALSE;
|
||||||
|
_fbRobot.M_Unhold();
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _xStop THEN
|
||||||
|
_xStop := FALSE;
|
||||||
|
_fbRobot.M_Stop();
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
_rtStopRobotFromSafety(CLK := PRG_Safety.xStopRobot);
|
||||||
|
IF _rtStopRobotFromSafety.Q THEN
|
||||||
|
_stRobotCmd.eCntrlCmd := E_PackMLCmd.STOP;
|
||||||
_stRobotCmd.xCmdChangeRequest := TRUE;
|
_stRobotCmd.xCmdChangeRequest := TRUE;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
@@ -62,12 +89,22 @@ END_IF
|
|||||||
|
|
||||||
_fbHVTester(xOpenChambers:= GVL_SCADA.xOpenAllChambers);
|
_fbHVTester(xOpenChambers:= GVL_SCADA.xOpenAllChambers);
|
||||||
|
|
||||||
_fbEtcher1(xOpenDoor:= GVL_SCADA.xOpenAllChambers);
|
_fbEtcher1(xOpenDoor:= GVL_SCADA.xOpenAllChambers, xConfirmAlarms := GVL_SCADA.xErrAck);
|
||||||
_fbEtcher2(xOpenDoor:= GVL_SCADA.xOpenAllChambers);
|
_fbEtcher2(xOpenDoor:= GVL_SCADA.xOpenAllChambers, xConfirmAlarms := GVL_SCADA.xErrAck);
|
||||||
|
|
||||||
|
// _fbTrayFeederInput(
|
||||||
|
// stCommand:= ,
|
||||||
|
// xConfirmAlarms := GVL_SCADA.xErrAck,
|
||||||
|
// stStatus=> GVL_SCADA.stTrayFeederInputState,
|
||||||
|
// stAdmin=> GVL_SCADA.stTRayFeederInputAdmin);
|
||||||
|
|
||||||
|
_fbHeatCoolPlates(xConfirmAlarms:= GVL_SCADA.xErrAck);
|
||||||
|
|
||||||
|
|
||||||
// Call safety program
|
// Call safety program
|
||||||
PRG_Safety(xConfirmAlarms := GVL_SCADA.xErrAck);
|
PRG_Safety(
|
||||||
|
xConfirmAlarms := GVL_SCADA.xErrAck,
|
||||||
|
xRobotStopped := (_stRobotStatus.eStateCurrent <> E_PackMLState.EXECUTE));
|
||||||
|
|
||||||
// =====
|
// =====
|
||||||
// DEBUG
|
// DEBUG
|
||||||
|
|||||||
@@ -4,9 +4,15 @@
|
|||||||
<Declaration><![CDATA[PROGRAM PRG_Safety
|
<Declaration><![CDATA[PROGRAM PRG_Safety
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xConfirmAlarms : BOOL;
|
xConfirmAlarms : BOOL;
|
||||||
|
xRobotStopped : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
xStopRobot : BOOL := FALSE;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_xRun AT %Q* : BOOL;
|
_xRun AT %Q* : BOOL;
|
||||||
|
_xEStopOk AT %I* : BOOL;
|
||||||
|
|
||||||
|
|
||||||
_xRequestOpenDoor AT %I* : BOOL;
|
_xRequestOpenDoor AT %I* : BOOL;
|
||||||
_rtrigDoorUnlock : R_TRIG;
|
_rtrigDoorUnlock : R_TRIG;
|
||||||
@@ -22,8 +28,9 @@ END_VAR
|
|||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_xRun := NOT _xComStartup;
|
<ST><![CDATA[_xRun := NOT _xComStartup;
|
||||||
|
|
||||||
_rtrigDoorUnlock(CLK := _xRequestOpenDoor);
|
_rtrigDoorUnlock(CLK := _xRequestOpenDoor AND xRobotStopped);
|
||||||
IF _rtrigDoorUnlock.Q THEN
|
IF _rtrigDoorUnlock.Q THEN
|
||||||
|
xStopRobot := (NOT xStopRobot);
|
||||||
_xLockDoor := (NOT _xLockDoor);
|
_xLockDoor := (NOT _xLockDoor);
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
|||||||
13
PLC/00_Main/ST_PosData.TcDUT
Normal file
13
PLC/00_Main/ST_PosData.TcDUT
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_PosData" Id="{a239aa72-8733-4bd3-94a0-6f6589ef2443}">
|
||||||
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
TYPE ST_PosData :
|
||||||
|
STRUCT
|
||||||
|
wPosX : INT;
|
||||||
|
wPosY : INT;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
13
PLC/00_Main/ST_TrayFeederCamPosData.TcDUT
Normal file
13
PLC/00_Main/ST_TrayFeederCamPosData.TcDUT
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_TrayFeederCamPosData" Id="{b23e235e-7a29-4216-a7f3-ec637f9c5927}">
|
||||||
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
TYPE ST_TrayFeederCamPosData :
|
||||||
|
STRUCT
|
||||||
|
byNumberOf : BYTE;
|
||||||
|
astPosData : ARRAY[0..7] OF ST_PosData;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -1,25 +1,146 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<POU Name="FB_Etcher" Id="{e75b6d70-36db-4c78-b78d-a594609441d1}" SpecialFunc="None">
|
<POU Name="FB_Etcher" Id="{e75b6d70-36db-4c78-b78d-a594609441d1}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Etcher
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_Etcher EXTENDS FB_PackMLGeneric
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xOpenDoor : BOOL;
|
xOpenDoor : BOOL;
|
||||||
|
xOpenChuckClamp : BOOL;
|
||||||
|
xEjectChuck : BOOL;
|
||||||
|
xConfirmAlarms : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
|
xChuckClampOpen : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_xOpenDoor AT %Q* : BOOL;
|
_fbValveDoor : FB_Valve('Door');
|
||||||
_xCloseDoor AT %Q* : BOOL;
|
_stValveDoorCfg : ST_ValveConfig := (
|
||||||
|
xHasClosedFeedback := TRUE,
|
||||||
|
xHasOpenFeedback := TRUE,
|
||||||
|
timTimeoutOpen := T#5S,
|
||||||
|
timTimeoutClose := T#5S);
|
||||||
|
_stDoorHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
|
||||||
|
_fbClampingLeft : FB_Valve('Clamping left');
|
||||||
|
_stValveClampingLeftCfg : ST_ValveConfig := (
|
||||||
|
xHasClosedFeedback := TRUE,
|
||||||
|
xHasOpenFeedback := TRUE,
|
||||||
|
timTimeoutOpen := T#5S,
|
||||||
|
timTimeoutClose := T#5S);
|
||||||
|
_stClampingLeftHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
|
||||||
|
_fbClampingRight : FB_Valve('Clamping right');
|
||||||
|
_stValveClampingRightCfg : ST_ValveConfig := (
|
||||||
|
xHasClosedFeedback := TRUE,
|
||||||
|
xHasOpenFeedback := TRUE,
|
||||||
|
timTimeoutOpen := T#5S,
|
||||||
|
timTimeoutClose := T#5S);
|
||||||
|
_stClampingRightHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
|
||||||
|
_fbClampingFront : FB_Valve('Clamping front');
|
||||||
|
_stValveClampingFrontCfg : ST_ValveConfig := (
|
||||||
|
xHasClosedFeedback := TRUE,
|
||||||
|
xHasOpenFeedback := TRUE,
|
||||||
|
timTimeoutOpen := T#5S,
|
||||||
|
timTimeoutClose := T#5S);
|
||||||
|
_stClampingFrontHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
|
||||||
|
_fbClampingBack : FB_Valve('Clamping back');
|
||||||
|
_stValveClampingBackCfg : ST_ValveConfig := (
|
||||||
|
xHasClosedFeedback := TRUE,
|
||||||
|
xHasOpenFeedback := TRUE,
|
||||||
|
timTimeoutOpen := T#5S,
|
||||||
|
timTimeoutClose := T#5S);
|
||||||
|
_stClampingBackHMIInterface : ST_HMI_VALVE_DATA;
|
||||||
|
|
||||||
|
_rtEjectChuckCmd : R_TRIG;
|
||||||
|
_tpEjectChuck : TP;
|
||||||
|
|
||||||
|
// =======
|
||||||
|
// Sensors
|
||||||
|
// =======
|
||||||
|
|
||||||
|
// Spinner vibration sensor
|
||||||
|
_xVibrationSensor AT %I* : BOOL;
|
||||||
|
|
||||||
|
// =========
|
||||||
|
// Actuators
|
||||||
|
// =========
|
||||||
|
|
||||||
|
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[IF xOpenDoor THEN
|
<ST><![CDATA[// Main door
|
||||||
_xOpenDoor := TRUE;
|
_fbValveDoor(
|
||||||
_xCloseDoor := FALSE;
|
xAutomaticOpen:= xOpenDoor,
|
||||||
|
xReleaseErrors:= TRUE,
|
||||||
|
stValveConfig:= _stValveDoorCfg,
|
||||||
|
xReleaseManualMode:= FALSE,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
stHMIInterface:= _stDoorHMIInterface);
|
||||||
|
|
||||||
|
// Chuck
|
||||||
|
_rtEjectChuckCmd(CLK := xEjectChuck);
|
||||||
|
IF _rtEjectChuckCmd.Q THEN
|
||||||
|
_tpEjectChuck(IN := TRUE, PT := T#500MS);
|
||||||
ELSE
|
ELSE
|
||||||
_xOpenDoor := FALSE;
|
_tpEjectChuck(IN := FALSE);
|
||||||
_xCloseDoor := TRUE;
|
END_IF
|
||||||
END_IF]]></ST>
|
|
||||||
|
_fbClampingLeft(
|
||||||
|
xAutomaticOpen:= xOpenChuckClamp,
|
||||||
|
xReleaseErrors:= TRUE,
|
||||||
|
stValveConfig:= _stValveClampingLeftCfg,
|
||||||
|
xReleaseManualMode:= FALSE,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
stHMIInterface:= _stClampingLeftHMIInterface);
|
||||||
|
|
||||||
|
_fbClampingRight(
|
||||||
|
xAutomaticOpen:= xOpenChuckClamp,
|
||||||
|
xReleaseErrors:= TRUE,
|
||||||
|
stValveConfig:= _stValveClampingRightCfg,
|
||||||
|
xReleaseManualMode:= FALSE,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
stHMIInterface:= _stClampingRightHMIInterface);
|
||||||
|
|
||||||
|
_fbClampingFront(
|
||||||
|
xAutomaticOpen:= _tpEjectChuck.Q,
|
||||||
|
xReleaseErrors:= TRUE,
|
||||||
|
stValveConfig:= _stValveClampingFrontCfg,
|
||||||
|
xReleaseManualMode:= FALSE,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
stHMIInterface:= _stClampingFrontHMIInterface);
|
||||||
|
|
||||||
|
_fbClampingBack(
|
||||||
|
xAutomaticOpen:= _tpEjectChuck.Q,
|
||||||
|
xReleaseErrors:= TRUE,
|
||||||
|
stValveConfig:= _stValveClampingBackCfg,
|
||||||
|
xReleaseManualMode:= FALSE,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
stHMIInterface:= _stClampingBackHMIInterface);
|
||||||
|
|
||||||
|
// Call base sm
|
||||||
|
SUPER^();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
|
<Method Name="FB_Init" Id="{afcda70c-3e52-4a32-9ca9-670a6b854f24}">
|
||||||
|
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
||||||
|
//The return value is not evaluated. For a specific influence, you can also declare the
|
||||||
|
//methods explicitly and provide additional code there with the standard initialization
|
||||||
|
//code. You can evaluate the return value.
|
||||||
|
METHOD FB_Init: BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
bInitRetains: BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold)
|
||||||
|
bInCopyCode: BOOL; // TRUE: the instance will be copied to the copy code afterward (online change)
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[_stSMConfig.xStoppingDisabled := TRUE;
|
||||||
|
|
||||||
|
_stSMConfig.xCompletingDisabled := TRUE;
|
||||||
|
_stSMConfig.xCompletedDisabled := TRUE;
|
||||||
|
|
||||||
|
_stSMConfig.xAbortingDisabled := TRUE;]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
</POU>
|
</POU>
|
||||||
</TcPlcObject>
|
</TcPlcObject>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<POU Name="FB_HVTester" Id="{63fd7fbb-2896-492c-ad94-827a20571a58}" SpecialFunc="None">
|
<POU Name="FB_HVTester" Id="{63fd7fbb-2896-492c-ad94-827a20571a58}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_HVTester
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_HVTester EXTENDS FB_PackMLGeneric
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
xOpenChambers : BOOL;
|
xOpenChambers : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -35,7 +35,10 @@ ELSE
|
|||||||
|
|
||||||
_xCloseDoor1 := TRUE;
|
_xCloseDoor1 := TRUE;
|
||||||
_xCloseDoor2 := TRUE;
|
_xCloseDoor2 := TRUE;
|
||||||
END_IF]]></ST>
|
END_IF
|
||||||
|
|
||||||
|
// Call base sm
|
||||||
|
SUPER^();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</POU>
|
</POU>
|
||||||
</TcPlcObject>
|
</TcPlcObject>
|
||||||
147
PLC/01_Stationen/HeatCoolPlates/FB_CoolPlate.TcPOU
Normal file
147
PLC/01_Stationen/HeatCoolPlates/FB_CoolPlate.TcPOU
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_CoolPlate" Id="{629e3316-5d72-4e23-a03a-af14d37e58d6}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_CoolPlate
|
||||||
|
VAR_INPUT
|
||||||
|
rTempSetpoint : REAL := 25.0;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
// Card inputs
|
||||||
|
_stStatus AT %I* : ST_SerialStatus;
|
||||||
|
_byDataIn AT %I* : ARRAY[0..21] OF BYTE;
|
||||||
|
|
||||||
|
// Card outputs
|
||||||
|
_stCtrl AT %Q* : ST_SerialCrl;
|
||||||
|
_byDataOut AT %Q* : ARRAY[0..21] OF BYTE;
|
||||||
|
|
||||||
|
// Internal temp setpoint
|
||||||
|
_rTempSetpoint : REAL;
|
||||||
|
|
||||||
|
// Send trigger
|
||||||
|
_xSend : BOOL;
|
||||||
|
|
||||||
|
// Send temp test
|
||||||
|
_xTempTest : BOOL;
|
||||||
|
|
||||||
|
// Init trigger
|
||||||
|
_xInit : BOOL;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// Clamp temperature settings
|
||||||
|
_rTempSetpoint := rTempSetpoint;
|
||||||
|
|
||||||
|
IF _rTempSetpoint > 60.0 THEN
|
||||||
|
_rTempSetpoint := 60.0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _rTempSetpoint < 10.0 THEN
|
||||||
|
_rTempSetpoint := 10.0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Init card on first run
|
||||||
|
IF _xInit THEN
|
||||||
|
_xInit := FALSE;
|
||||||
|
_stCtrl.bInitRequest := 1;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _stStatus.bInitAccepted THEN
|
||||||
|
_stCtrl.bInitRequest := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Send
|
||||||
|
IF _xSend THEN
|
||||||
|
_xSend := FALSE;
|
||||||
|
_stCtrl.bTransmitRequest := 1;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _stStatus.bTransmitAccepted THEN
|
||||||
|
_stCtrl.bTransmitRequest := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Debug test
|
||||||
|
IF _xTempTest THEN
|
||||||
|
_xTempTest := FALSE;
|
||||||
|
M_SetTemp(rTemp := _rTempSetpoint);
|
||||||
|
_xSend := TRUE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
<Method Name="M_CalcChecksum" Id="{dc2c8dbc-8315-4281-befa-84b7f4e74dc9}">
|
||||||
|
<Declaration><![CDATA[METHOD M_CalcChecksum
|
||||||
|
VAR_INPUT
|
||||||
|
uiStartIndex : UINT;
|
||||||
|
uiEndIndex : UINT;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
byHigh : BYTE;
|
||||||
|
byLow : BYTE;
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
_dwChecksum : DWORD;
|
||||||
|
_uiCounter : UINT;
|
||||||
|
|
||||||
|
_byHigh : BYTE;
|
||||||
|
_byLow : BYTE;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// Calculate sum
|
||||||
|
FOR _uiCounter := uiStartIndex TO uiEndIndex DO
|
||||||
|
_dwChecksum := _dwChecksum + _byDataOut[_uiCounter];
|
||||||
|
END_FOR
|
||||||
|
|
||||||
|
// Use lower bytes
|
||||||
|
_byHigh := SHR(_dwChecksum.%B0 AND 16#F0, 4);
|
||||||
|
_byLow := _dwChecksum.%B0 AND 16#0F;
|
||||||
|
|
||||||
|
// Add offset
|
||||||
|
_byHigh := _byHigh + 16#30;
|
||||||
|
_byLow := _byLow + 16#30;
|
||||||
|
|
||||||
|
byHigh := _byHigh;
|
||||||
|
byLow := _byLow;]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_SetTemp" Id="{e9f6069c-f4a0-47e4-9ef0-4fbbec8764d9}">
|
||||||
|
<Declaration><![CDATA[METHOD M_SetTemp
|
||||||
|
VAR_INPUT
|
||||||
|
rTemp : REAL;
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
_dwTemp : DWORD;
|
||||||
|
_sTemp : STRING(4);
|
||||||
|
|
||||||
|
_byHigh : BYTE;
|
||||||
|
_byLow : BYTE;
|
||||||
|
_sHexString : STRING(4);
|
||||||
|
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// Convert temperature
|
||||||
|
_dwTemp := REAL_TO_DWORD(rTemp * 10)*10;
|
||||||
|
_sTemp := DWORD_TO_STRING(_dwTemp);
|
||||||
|
|
||||||
|
_byDataOut[0] := 16#02; // STX
|
||||||
|
_byDataOut[1] := 16#31; // Command code
|
||||||
|
_byDataOut[2] := _sTemp[0];
|
||||||
|
_byDataOut[3] := _sTemp[1];
|
||||||
|
_byDataOut[4] := _sTemp[2];
|
||||||
|
_byDataOut[5] := _sTemp[3];
|
||||||
|
_byDataOut[6] := 16#03; // ETX
|
||||||
|
|
||||||
|
M_CalcChecksum(
|
||||||
|
uiStartIndex:= 1,
|
||||||
|
uiEndIndex:= 5,
|
||||||
|
byHigh=> _byDataOut[7],
|
||||||
|
byLow=> _byDataOut[8]);
|
||||||
|
|
||||||
|
_byDataOut[9] := 16#0D; // <CR>
|
||||||
|
|
||||||
|
_stCtrl.byOutputLength := 10;]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
31
PLC/01_Stationen/HeatCoolPlates/FB_HeatCoolPlates.TcPOU
Normal file
31
PLC/01_Stationen/HeatCoolPlates/FB_HeatCoolPlates.TcPOU
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_HeatCoolPlates" Id="{a2be063c-19d7-4ca2-8121-529d61cc7bc2}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_HeatCoolPlates
|
||||||
|
VAR_INPUT
|
||||||
|
xConfirmAlarms : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
_fbHeatingPlate : FB_HotPlate;
|
||||||
|
|
||||||
|
_xEnableHotplate : BOOL;
|
||||||
|
_rTargetTemp : REAL := 30.0;
|
||||||
|
|
||||||
|
// Cool plate
|
||||||
|
_fbCoolPlate : FB_CoolPlate;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[_fbHeatingPlate(
|
||||||
|
xEnable:= _xEnableHotplate,
|
||||||
|
rTargetTemp:= _rTargetTemp,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
uiNextFreeSlot=> ,
|
||||||
|
uiNextReadySlot=> );
|
||||||
|
|
||||||
|
_fbCoolPlate();]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
72
PLC/01_Stationen/HeatCoolPlates/FB_HotPlate.TcPOU
Normal file
72
PLC/01_Stationen/HeatCoolPlates/FB_HotPlate.TcPOU
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_HotPlate" Id="{317a2373-f886-4e32-b683-81b726d00aac}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_HotPlate
|
||||||
|
VAR_INPUT
|
||||||
|
xEnable : BOOL;
|
||||||
|
rTargetTemp : REAL;
|
||||||
|
rDeadBand : REAL := 5.0;
|
||||||
|
|
||||||
|
xConfirmAlarms : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
uiNextFreeSlot : UINT;
|
||||||
|
uiNextReadySlot : UINT;
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
_xEnableHotplate AT %Q* : BOOL;
|
||||||
|
|
||||||
|
_axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
|
||||||
|
_tonSlotTimer : ARRAY[0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF TON;
|
||||||
|
|
||||||
|
// Temp sensor
|
||||||
|
_fbTempSensor : FB_AnalogInput('Temp sensor');
|
||||||
|
_stTempSensorConfig : ST_ANALOG_IO_CONFIG := (sUnit := '°C', rPVMin := -200, rPVMax := 850, iAIMin := -2000, iAIMax := 8500);
|
||||||
|
_stTempSEnsorEWConfig : ST_ANALOG_EW_CONFIG := (
|
||||||
|
stLevels := (
|
||||||
|
rErrorMin := -2000,
|
||||||
|
rErrorMax := 8500,
|
||||||
|
rWarningMin := -1000,
|
||||||
|
rWarningMax := 7500),
|
||||||
|
stDelays := (
|
||||||
|
timErrorHighOn := T#1S,
|
||||||
|
timErrorLowOn := T#1S,
|
||||||
|
timWarningHighOn := T#1S,
|
||||||
|
timWarningLowOn := T#1S,
|
||||||
|
timHardwareSignalLevelOff := T#1S));
|
||||||
|
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// Call sensor fbs
|
||||||
|
_fbTempSensor(
|
||||||
|
stAnalogIOConfig:= _stTempSensorConfig,
|
||||||
|
stAnalogEWConfig:= _stTempSEnsorEWConfig,
|
||||||
|
xReleaseErrors:= TRUE,
|
||||||
|
xReleaseLimitErrors:= FALSE,
|
||||||
|
xReleaseHardwareErrors:= TRUE,
|
||||||
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
|
stHMIInterface=> );
|
||||||
|
|
||||||
|
|
||||||
|
// Control temperature with two point controller
|
||||||
|
IF _fbTempSensor.rScaledValue < (rTargetTemp - rDeadBand) THEN
|
||||||
|
_xEnableHotplate := TRUE;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _fbTempSensor.rScaledValue >= (rTargetTemp) THEN
|
||||||
|
_xEnableHotplate := FALSE;
|
||||||
|
END_IF
|
||||||
|
]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
<Method Name="M_AddItem" Id="{9707459a-6558-487c-b730-c9dc92d598ed}">
|
||||||
|
<Declaration><![CDATA[METHOD M_AddItem
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
9
PLC/01_Stationen/HeatCoolPlates/GVL_HeatCoolConfig.TcGVL
Normal file
9
PLC/01_Stationen/HeatCoolPlates/GVL_HeatCoolConfig.TcGVL
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<GVL Name="GVL_HeatCoolConfig" Id="{865917de-a2fa-49b0-b682-05395fd01971}">
|
||||||
|
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||||
|
VAR_GLOBAL CONSTANT
|
||||||
|
HEAT_COOL_PLATES_NUM_SLOTS : UINT := 9;
|
||||||
|
END_VAR]]></Declaration>
|
||||||
|
</GVL>
|
||||||
|
</TcPlcObject>
|
||||||
16
PLC/01_Stationen/HeatCoolPlates/ST_SerialCrl.TcDUT
Normal file
16
PLC/01_Stationen/HeatCoolPlates/ST_SerialCrl.TcDUT
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_SerialCrl" Id="{02e99166-5c76-4fb3-84cc-719c63e20136}">
|
||||||
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
TYPE ST_SerialCrl :
|
||||||
|
STRUCT
|
||||||
|
bTransmitRequest : BIT;
|
||||||
|
bReceiveAccepted : BIT;
|
||||||
|
bInitRequest : BIT;
|
||||||
|
bSendContinues : BIT;
|
||||||
|
byOutputLength : BYTE;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
19
PLC/01_Stationen/HeatCoolPlates/ST_SerialStatus.TcDUT
Normal file
19
PLC/01_Stationen/HeatCoolPlates/ST_SerialStatus.TcDUT
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_SerialStatus" Id="{e37399e0-7acb-4d91-826f-26258cabab1c}">
|
||||||
|
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||||
|
TYPE ST_SerialStatus :
|
||||||
|
STRUCT
|
||||||
|
bTransmitAccepted : BIT;
|
||||||
|
bReceiveRequested : BIT;
|
||||||
|
bInitAccepted : BIT;
|
||||||
|
bBufferFull : BIT;
|
||||||
|
bParityError : BIT;
|
||||||
|
bFramingError : BIT;
|
||||||
|
bOverrunError : BIT;
|
||||||
|
byInputLength : BYTE;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -140,9 +140,9 @@ SUPER^();
|
|||||||
_uCtrl.stCtrl.bNotDisableAxes := 1;
|
_uCtrl.stCtrl.bNotDisableAxes := 1;
|
||||||
|
|
||||||
// Disable move if in T2 for safety reasons
|
// Disable move if in T2 for safety reasons
|
||||||
IF _uState.stState.bT2 THEN
|
// IF _uState.stState.bT2 THEN
|
||||||
_uCtrl.stCtrl.bEnableMove := 0;
|
// _uCtrl.stCtrl.bEnableMove := 0;
|
||||||
END_IF
|
// END_IF
|
||||||
|
|
||||||
|
|
||||||
// ============================
|
// ============================
|
||||||
@@ -179,7 +179,7 @@ _stSMConfig.xAbortingDisabled := TRUE;]]></ST>
|
|||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Aborted" Id="{0c0c17ce-5c1c-4640-9d39-f25b22309d5d}">
|
<Method Name="M_Aborted" Id="{0c0c17ce-5c1c-4640-9d39-f25b22309d5d}">
|
||||||
<Declaration><![CDATA[METHOD M_Aborted
|
<Declaration><![CDATA[METHOD PROTECTED M_Aborted
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Reset all relevant robot control signals
|
<ST><![CDATA[// Reset all relevant robot control signals
|
||||||
@@ -196,7 +196,7 @@ _uJobs.stJobs.wFinishedJobNrFromPlc := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
|
|||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Clearing" Id="{e6152288-8c7d-4b38-bfbc-4f861d76ccc5}">
|
<Method Name="M_Clearing" Id="{e6152288-8c7d-4b38-bfbc-4f861d76ccc5}">
|
||||||
<Declaration><![CDATA[METHOD M_Clearing
|
<Declaration><![CDATA[METHOD PROTECTED M_Clearing
|
||||||
VAR_INST
|
VAR_INST
|
||||||
_tonWait : TON;
|
_tonWait : TON;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
@@ -214,7 +214,7 @@ END_IF
|
|||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Execute" Id="{bc86876c-a8db-4285-b95c-7c6858a2ca66}">
|
<Method Name="M_Execute" Id="{bc86876c-a8db-4285-b95c-7c6858a2ca66}">
|
||||||
<Declaration><![CDATA[METHOD M_Execute
|
<Declaration><![CDATA[METHOD PROTECTED M_Execute
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Wait for robot to be done
|
<ST><![CDATA[// Wait for robot to be done
|
||||||
@@ -224,28 +224,33 @@ END_IF]]></ST>
|
|||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Held" Id="{22ddbad0-0b66-427e-a2aa-f177f8adbc94}">
|
<Method Name="M_Held" Id="{22ddbad0-0b66-427e-a2aa-f177f8adbc94}">
|
||||||
<Declaration><![CDATA[METHOD M_Held
|
<Declaration><![CDATA[METHOD PROTECTED M_Held
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Holding" Id="{ff8c2c8e-1fe0-4c63-ad7b-790d72bd9217}">
|
<Method Name="M_Holding" Id="{ff8c2c8e-1fe0-4c63-ad7b-790d72bd9217}">
|
||||||
<Declaration><![CDATA[METHOD M_Holding
|
<Declaration><![CDATA[METHOD PROTECTED M_Holding
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[_uCtrl.stCtrl.bEnableMove := 0;
|
||||||
|
|
||||||
|
IF _uState.stState.bRobStopped THEN
|
||||||
|
M_StateComplete();
|
||||||
|
END_IF
|
||||||
|
]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Idle" Id="{025437ab-beb0-4ad6-bdc3-468dec599ff4}">
|
<Method Name="M_Idle" Id="{025437ab-beb0-4ad6-bdc3-468dec599ff4}">
|
||||||
<Declaration><![CDATA[METHOD M_Idle
|
<Declaration><![CDATA[METHOD PROTECTED M_Idle
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_stJobParams := stJobParams;]]></ST>
|
<ST><![CDATA[_stJobParams := stJobParams;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Resetting" Id="{dfe4d36a-80aa-4364-bfd8-6ddd41636d59}">
|
<Method Name="M_Resetting" Id="{dfe4d36a-80aa-4364-bfd8-6ddd41636d59}">
|
||||||
<Declaration><![CDATA[METHOD M_Resetting
|
<Declaration><![CDATA[METHOD PROTECTED M_Resetting
|
||||||
VAR_INST
|
VAR_INST
|
||||||
_tonTimeout : TON;
|
_tonTimeout : TON;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
@@ -253,7 +258,26 @@ END_VAR]]></Declaration>
|
|||||||
<ST><![CDATA[_tonTimeout(PT := T#10S);
|
<ST><![CDATA[_tonTimeout(PT := T#10S);
|
||||||
|
|
||||||
CASE _iSSM OF
|
CASE _iSSM OF
|
||||||
|
// Check if com interface is ok
|
||||||
0:
|
0:
|
||||||
|
_uCtrl.stCtrl.bEnableMove := 1;
|
||||||
|
_uCtrl.stCtrl.bConfMess := 1;
|
||||||
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
|
IF _uState.stState.bIOActConf THEN
|
||||||
|
_uCtrl.stCtrl.bConfMess := 0;
|
||||||
|
_iSSM := 10;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Timeout io_Act_conf ready
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_uCtrl.stCtrl.bConfMess := 0;
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Enable axes
|
||||||
|
10:
|
||||||
_uCtrl.stCtrl.bEnableAxes := 1;
|
_uCtrl.stCtrl.bEnableAxes := 1;
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
@@ -261,7 +285,7 @@ CASE _iSSM OF
|
|||||||
IF _uState.stState.bPeriRdy THEN
|
IF _uState.stState.bPeriRdy THEN
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
_uCtrl.stCtrl.bEnableAxes := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_iSSM := 10;
|
_iSSM := 20;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Timeout drives ready
|
// Timeout drives ready
|
||||||
@@ -272,16 +296,16 @@ CASE _iSSM OF
|
|||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
10:
|
// Reset move stop
|
||||||
|
20:
|
||||||
_uCtrl.stCtrl.bConfMess := 1;
|
_uCtrl.stCtrl.bConfMess := 1;
|
||||||
|
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
// Wait for errors to be reset
|
// Wait for errors to be reset
|
||||||
IF (NOT _uState.stState.bStopMess) THEN
|
IF (NOT _uState.stState.bStopMess) THEN
|
||||||
_uCtrl.stCtrl.bConfMess := 0;
|
_uCtrl.stCtrl.bConfMess := 0;
|
||||||
_tonTimeout(IN := FALSE);
|
_tonTimeout(IN := FALSE);
|
||||||
_iSSM := 20;
|
_iSSM := 30;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Timeout reset errors
|
// Timeout reset errors
|
||||||
@@ -291,10 +315,9 @@ CASE _iSSM OF
|
|||||||
_eCmd := E_PackMLCmd.ABORT;
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
20:
|
// Start program
|
||||||
// Start main program
|
30:
|
||||||
_uCtrl.stCtrl.bExtStart := 1;
|
_uCtrl.stCtrl.bExtStart := 1;
|
||||||
|
|
||||||
_tonTimeout.IN := TRUE;
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
IF _tonTimeout.Q THEN
|
IF _tonTimeout.Q THEN
|
||||||
@@ -312,7 +335,7 @@ END_CASE]]></ST>
|
|||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Starting" Id="{011f85d8-1225-4288-876f-918df6e4f235}">
|
<Method Name="M_Starting" Id="{011f85d8-1225-4288-876f-918df6e4f235}">
|
||||||
<Declaration><![CDATA[METHOD M_Starting
|
<Declaration><![CDATA[METHOD PROTECTED M_Starting
|
||||||
VAR_INST
|
VAR_INST
|
||||||
_tonTimeout : TON;
|
_tonTimeout : TON;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
@@ -413,10 +436,10 @@ END_CASE
|
|||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Stopped" Id="{50813767-4bd7-4147-b5dc-1bbd18ae1555}">
|
<Method Name="M_Stopped" Id="{50813767-4bd7-4147-b5dc-1bbd18ae1555}">
|
||||||
<Declaration><![CDATA[METHOD M_Stopped
|
<Declaration><![CDATA[METHOD PROTECTED M_Stopped
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_uCtrl.stCtrl.bConfMess := 0;
|
<ST><![CDATA[// _uCtrl.stCtrl.bConfMess := 0;
|
||||||
_uCtrl.stCtrl.bEnableAxes := 0;
|
_uCtrl.stCtrl.bEnableAxes := 0;
|
||||||
_uCtrl.stCtrl.bNotDisableAxes := 1;
|
_uCtrl.stCtrl.bNotDisableAxes := 1;
|
||||||
_uCtrl.stCtrl.bExtStart := 0;
|
_uCtrl.stCtrl.bExtStart := 0;
|
||||||
@@ -426,28 +449,89 @@ _ePlcJob := E_KukaRobot_JobNumerPLC.NO_JOB;]]></ST>
|
|||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Suspended" Id="{c2db015c-1cd0-491a-8ce6-6c0bffba7631}">
|
<Method Name="M_Suspended" Id="{c2db015c-1cd0-491a-8ce6-6c0bffba7631}">
|
||||||
<Declaration><![CDATA[METHOD M_Suspended
|
<Declaration><![CDATA[METHOD PROTECTED M_Suspended
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Suspending" Id="{5b0e5227-d5bb-40c6-a1b8-8e81b852b9b9}">
|
<Method Name="M_Suspending" Id="{5b0e5227-d5bb-40c6-a1b8-8e81b852b9b9}">
|
||||||
<Declaration><![CDATA[METHOD M_Suspending
|
<Declaration><![CDATA[METHOD PROTECTED M_Suspending
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Unholding" Id="{786f4949-9630-4ace-9e30-65bea4e87cb2}">
|
<Method Name="M_Unholding" Id="{786f4949-9630-4ace-9e30-65bea4e87cb2}">
|
||||||
<Declaration><![CDATA[METHOD M_Unholding
|
<Declaration><![CDATA[METHOD PROTECTED M_Unholding
|
||||||
]]></Declaration>
|
VAR_INST
|
||||||
|
_tonTimeout : TON;
|
||||||
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[_tonTimeout(PT := T#10S);
|
||||||
|
|
||||||
|
CASE _iSSM OF
|
||||||
|
0:
|
||||||
|
_uCtrl.stCtrl.bEnableMove := 1;
|
||||||
|
_uCtrl.stCtrl.bEnableAxes := 1;
|
||||||
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
|
// Wait for drives to be ready
|
||||||
|
IF _uState.stState.bPeriRdy THEN
|
||||||
|
_uCtrl.stCtrl.bEnableAxes := 0;
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
_iSSM := 10;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Timeout drives ready
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_uCtrl.stCtrl.bEnableAxes := 0;
|
||||||
|
_fbAlarmDrivesEnableTimeout.xRelease := TRUE;
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
10:
|
||||||
|
_uCtrl.stCtrl.bConfMess := 1;
|
||||||
|
|
||||||
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
|
// Wait for errors to be reset
|
||||||
|
IF (NOT _uState.stState.bStopMess) THEN
|
||||||
|
_uCtrl.stCtrl.bConfMess := 0;
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
_iSSM := 20;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Timeout reset errors
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_fbAlarmRobotErrorResetTimeout.xRelease := TRUE;
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
20:
|
||||||
|
// Start main program
|
||||||
|
_uCtrl.stCtrl.bExtStart := 1;
|
||||||
|
|
||||||
|
_tonTimeout.IN := TRUE;
|
||||||
|
|
||||||
|
IF _tonTimeout.Q THEN
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF _uState.stState.bProAct THEN
|
||||||
|
_uCtrl.stCtrl.bExtStart := 0;
|
||||||
|
_tonTimeout(IN := FALSE);
|
||||||
|
M_StateComplete();
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Unsuspending" Id="{d7ce33fd-cd94-44f1-9289-25a3ab3829eb}">
|
<Method Name="M_Unsuspending" Id="{d7ce33fd-cd94-44f1-9289-25a3ab3829eb}">
|
||||||
<Declaration><![CDATA[METHOD M_Unsuspending
|
<Declaration><![CDATA[METHOD PROTECTED M_Unsuspending
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
|
|||||||
376
PLC/01_Stationen/TrayFeeder/FB_TFProtocol.TcPOU
Normal file
376
PLC/01_Stationen/TrayFeeder/FB_TFProtocol.TcPOU
Normal file
@@ -0,0 +1,376 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_TFProtocol" Id="{f0c44f0b-70b8-45d0-8720-9bd7e08b6aa6}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_TFProtocol
|
||||||
|
VAR_INPUT
|
||||||
|
sIpAddr : STRING;
|
||||||
|
udiPort : UDINT;
|
||||||
|
|
||||||
|
xConfirmAlarms : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
xConnected : BOOL;
|
||||||
|
|
||||||
|
xNewResponseReady : BOOL;
|
||||||
|
xBusy : BOOL;
|
||||||
|
xError : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
// Connection settings
|
||||||
|
_fbTcpConnection : FB_ClientServerConnection;
|
||||||
|
_sIpAddr : STRING;
|
||||||
|
_udiPort : UDINT;
|
||||||
|
_hSocket : T_HSOCKET;
|
||||||
|
_xConnect : BOOL := TRUE;
|
||||||
|
_xConnected : BOOL;
|
||||||
|
|
||||||
|
// Socket send
|
||||||
|
_fbSocketSend : FB_SocketSend;
|
||||||
|
_timSendTimeout : TIME := T#5S;
|
||||||
|
|
||||||
|
// Socket receive
|
||||||
|
_fbSocketReceive : FB_SocketReceive;
|
||||||
|
_timReceiveTimeout : TIME := T#5S;
|
||||||
|
_abReceivedBuffer : ARRAY[0..100] OF BYTE;
|
||||||
|
_sReceivedResponse : STRING;
|
||||||
|
_udiCounterReceive : UDINT;
|
||||||
|
_udiReceivedBytes : UDINT;
|
||||||
|
_timPollingTime : TIME := T#50MS;
|
||||||
|
_tonPollTimer : TON;
|
||||||
|
_xEnableReceiveTimeout : BOOL;
|
||||||
|
_timReceiveTimeoutTime : TIME := T#500MS;
|
||||||
|
_tonReceiveTimeout : TON;
|
||||||
|
_uiLastReceivedResponseId : UINT := 0;
|
||||||
|
|
||||||
|
// Receive state machine
|
||||||
|
_iStateReceive : INT;
|
||||||
|
|
||||||
|
// Command data
|
||||||
|
_uiCmdId : UINT := 1;
|
||||||
|
_sCmd : STRING(255);
|
||||||
|
_sAck : STRING(255);
|
||||||
|
|
||||||
|
// Main state machine
|
||||||
|
_iState : INT := 0;
|
||||||
|
_diCounter : DINT;
|
||||||
|
_xSendCmd : BOOL;
|
||||||
|
_uiRetries : UINT;
|
||||||
|
_xCmdReceived : BOOL;
|
||||||
|
_iPlaceCmdSeperator : INT;
|
||||||
|
_sTmp : STRING;
|
||||||
|
_xReceivedResponseOk : BOOL;
|
||||||
|
_uiReceivedCommandId : UINT;
|
||||||
|
|
||||||
|
// Buffer before output
|
||||||
|
_xBusy : BOOL;
|
||||||
|
_xError : BOOL;
|
||||||
|
END_VAR
|
||||||
|
VAR CONSTANT
|
||||||
|
MAX_RETRIES : UINT := 3;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// Call client server connection fb
|
||||||
|
_fbTcpConnection(
|
||||||
|
sSrvNetID:= '',
|
||||||
|
nMode:= ,
|
||||||
|
sRemoteHost:= sIpAddr,
|
||||||
|
nRemotePort:= udiPort,
|
||||||
|
bEnable:= _xConnect,
|
||||||
|
tReconnect:= T#2S,
|
||||||
|
bBusy=> ,
|
||||||
|
bError=> ,
|
||||||
|
nErrId=> ,
|
||||||
|
hSocket=> _hSocket,
|
||||||
|
eState=> );
|
||||||
|
|
||||||
|
// Get connected state
|
||||||
|
_xConnected := (_fbTcpConnection.eState = E_SocketConnectionState.eSOCKET_CONNECTED);
|
||||||
|
|
||||||
|
// Receive timeout after sending a command
|
||||||
|
_tonReceiveTimeout(IN := _xEnableReceiveTimeout, PT := _timReceiveTimeoutTime);
|
||||||
|
|
||||||
|
// Receive state machine
|
||||||
|
CASE _iStateReceive OF
|
||||||
|
// Main socket not connected
|
||||||
|
0:
|
||||||
|
IF _xConnected THEN
|
||||||
|
_iStateReceive := 10;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Call receive
|
||||||
|
10:
|
||||||
|
_fbSocketReceive(
|
||||||
|
sSrvNetId:= '',
|
||||||
|
hSocket:= _hSocket,
|
||||||
|
cbLen:= SIZEOF(_abReceivedBuffer) - _udiReceivedBytes,
|
||||||
|
pDest:= ADR(_abReceivedBuffer) + _udiReceivedBytes,
|
||||||
|
bExecute:= TRUE,
|
||||||
|
tTimeout:= _timReceiveTimeout,
|
||||||
|
bBusy=> ,
|
||||||
|
bError=> ,
|
||||||
|
nErrId=> ,
|
||||||
|
nRecBytes=> );
|
||||||
|
|
||||||
|
IF (NOT _fbSocketReceive.bBusy) AND (NOT _fbSocketReceive.bError) THEN
|
||||||
|
_fbSocketReceive(bExecute := FALSE);
|
||||||
|
IF _fbSocketReceive.nRecBytes > 0 THEN
|
||||||
|
_udiReceivedBytes := _udiReceivedBytes + _fbSocketReceive.nRecBytes;
|
||||||
|
_iStateReceive := 20;
|
||||||
|
ELSE
|
||||||
|
_iStateReceive := 15;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// If we have an error, check if we are connected
|
||||||
|
IF _fbSocketReceive.bError THEN
|
||||||
|
_fbSocketReceive(bExecute := FALSE);
|
||||||
|
_iStateReceive := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Wait some time before rechecking
|
||||||
|
15:
|
||||||
|
_tonPollTimer(IN := TRUE, PT := _timPollingTime);
|
||||||
|
|
||||||
|
IF _tonPollTimer.Q THEN
|
||||||
|
_tonPollTimer(IN := FALSE);
|
||||||
|
_iStateReceive := 10;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Check if we are still connected
|
||||||
|
IF (NOT _xConnected) THEN
|
||||||
|
_tonPollTimer(IN := FALSE);
|
||||||
|
_sReceivedResponse := '';
|
||||||
|
_iStateReceive := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Check received data
|
||||||
|
20:
|
||||||
|
// Check if received command is complete
|
||||||
|
MEMCPY(destAddr := ADR(_sReceivedResponse), srcAddr := ADR(_abReceivedBuffer), n := _udiReceivedBytes);
|
||||||
|
_udiReceivedBytes := 0;
|
||||||
|
//_xCmdReceived := TRUE;
|
||||||
|
|
||||||
|
// Go back to polling wait state
|
||||||
|
_iStateReceive := 15;
|
||||||
|
END_CASE
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
// Check if we received a response without sending a command
|
||||||
|
// IF _xCmdReceived THEN
|
||||||
|
// _iState := 50;
|
||||||
|
// 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(_sReceivedResponse[0]) <> UINT_TO_STRING(_uiCmdId)) THEN
|
||||||
|
// Wrong command id received
|
||||||
|
_iState := 90;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// For for response indicator
|
||||||
|
IF _sReceivedResponse[1] <> F_ToASC('<') THEN
|
||||||
|
// Wrong response indicator
|
||||||
|
_iState := 90;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Check for correct cmd
|
||||||
|
_xReceivedResponseOk := TRUE;
|
||||||
|
FOR _diCounter := 2 TO (LEN(_sReceivedResponse) - 1) DO
|
||||||
|
IF _sReceivedResponse[_diCounter] = F_ToASC(':') THEN
|
||||||
|
EXIT;
|
||||||
|
ELSIF _sReceivedResponse[_diCounter] <> _sCmd[_diCounter] THEN
|
||||||
|
_xReceivedResponseOk := FALSE;
|
||||||
|
EXIT;
|
||||||
|
END_IF
|
||||||
|
END_FOR
|
||||||
|
|
||||||
|
IF _xReceivedResponseOk THEN
|
||||||
|
_iState := 10;
|
||||||
|
ELSE
|
||||||
|
_iState := 90;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
50:
|
||||||
|
// Get command id
|
||||||
|
_uiReceivedCommandId := STRING_TO_UINT(TO_STRING(_sReceivedResponse[0]));
|
||||||
|
|
||||||
|
// Check if it is a new command
|
||||||
|
IF (_uiReceivedCommandId <> _uiLastReceivedResponseId) OR (_uiReceivedCommandId = 0) THEN
|
||||||
|
_uiLastReceivedResponseId := _uiReceivedCommandId;
|
||||||
|
xNewResponseReady := TRUE;
|
||||||
|
|
||||||
|
// Send acknowledgement
|
||||||
|
_iState := 60;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Prepare ack response
|
||||||
|
60:
|
||||||
|
_sAck := CONCAT(UINT_TO_STRING(_uiLastReceivedResponseId), '<');
|
||||||
|
|
||||||
|
FOR _diCounter := 2 TO (LEN(_sReceivedResponse) - 1) DO
|
||||||
|
IF _sReceivedResponse[_diCounter] <> F_ToASC(':') THEN
|
||||||
|
_sAck[_diCounter] := _sReceivedResponse[_diCounter];
|
||||||
|
ELSE
|
||||||
|
_sAck[_diCounter] := F_ToASC('\0');
|
||||||
|
EXIT;
|
||||||
|
END_IF
|
||||||
|
END_FOR
|
||||||
|
|
||||||
|
_iState := 70;
|
||||||
|
|
||||||
|
// 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;
|
||||||
|
_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;
|
||||||
|
_iState := 0;
|
||||||
|
END_IF
|
||||||
|
END_CASE
|
||||||
|
|
||||||
|
// Copy output buffers to outputs
|
||||||
|
xConnected := _xConnected;
|
||||||
|
xBusy := _xBusy;
|
||||||
|
xError := _xError;]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
<Method Name="M_GetResponse" Id="{48f8719d-7ed0-4fb1-824a-0bf475fcfc2c}">
|
||||||
|
<Declaration><![CDATA[METHOD M_GetResponse : STRING
|
||||||
|
VAR
|
||||||
|
_sTmp : STRING(255);
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[xNewResponseReady := FALSE;
|
||||||
|
MEMCPY(destAddr := ADR(_sTmp), ADR(_sReceivedResponse) + 2, n := INT_TO_UDINT(LEN(_sReceivedResponse) - 2));
|
||||||
|
M_GetResponse := _sTmp;]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_SendCmd" Id="{d00a8c1a-c183-4659-9c9e-be5b30566b7c}">
|
||||||
|
<Declaration><![CDATA[METHOD M_SendCmd : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
sCmd : STRING(80);
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[// Check if we are already sending a command
|
||||||
|
IF _xBusy OR _xError THEN
|
||||||
|
M_SendCmd := FALSE;
|
||||||
|
RETURN;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Increment command id
|
||||||
|
_uiCmdId := _uiCmdId + 1;
|
||||||
|
|
||||||
|
// Overflows at 9 and is reset to 1
|
||||||
|
IF _uiCmdId > 9 THEN
|
||||||
|
_uiCmdId := 1;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Create command with id
|
||||||
|
_sCmd := CONCAT(UINT_TO_STRING(_uiCmdId), '>');
|
||||||
|
_sCmd := CONCAT(_sCmd, sCmd);
|
||||||
|
|
||||||
|
// start sendind command state machine
|
||||||
|
_xSendCmd := TRUE;
|
||||||
|
|
||||||
|
M_SendCmd := TRUE;]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -1,38 +1,44 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<POU Name="FB_TrayFeeder" Id="{e2e3e993-37de-42b1-80e1-7dba99a66e94}" SpecialFunc="None">
|
<POU Name="FB_TrayFeeder" Id="{e2e3e993-37de-42b1-80e1-7dba99a66e94}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FINAL FB_TrayFeeder EXTENDS FB_Isa88_SM
|
<Declaration><![CDATA[FUNCTION_BLOCK FINAL FB_TrayFeeder EXTENDS FB_PackMLGeneric
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
|
xConfirmAlarms : BOOL;
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR_OUTPUT
|
VAR_OUTPUT
|
||||||
END_VAR
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
_fbTcpConnection : FB_ClientServerConnection;
|
|
||||||
_sIpAddr : STRING;
|
_sIpAddr : STRING;
|
||||||
_udiPort : UDINT;
|
_udiPort : UDINT;
|
||||||
|
|
||||||
|
_fbProtocolHandler : FB_TFProtocol;
|
||||||
|
|
||||||
|
_xTest : BOOL;
|
||||||
|
_xSendResult : BOOL;
|
||||||
|
_sCmd : STRING := 'STAT-FEED:';
|
||||||
END_VAR
|
END_VAR
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Call client server connection fb
|
<ST><![CDATA[// IPs
|
||||||
_fbTcpConnection(
|
// 192.168.1.10
|
||||||
sSrvNetID:= '',
|
// 192.168.1.11
|
||||||
nMode:= ,
|
_fbProtocolHandler(
|
||||||
sRemoteHost:= _sIpAddr,
|
sIpAddr:= _sIpAddr,
|
||||||
nRemotePort:= ,
|
udiPort:= _udiPort,
|
||||||
bEnable:= ,
|
xConfirmAlarms:= xConfirmAlarms,
|
||||||
tReconnect:= ,
|
xConnected=> ,
|
||||||
bBusy=> ,
|
xNewResponseReady=> ,
|
||||||
bError=> ,
|
xBusy=> ,
|
||||||
nErrId=> ,
|
xError=> );
|
||||||
hSocket=> ,
|
|
||||||
eState=> );
|
IF _xTest THEN
|
||||||
|
_xTest := FALSE;
|
||||||
|
|
||||||
|
_xSendResult := _fbProtocolHandler.M_SendCmd(sCmd := _sCmd);
|
||||||
|
END_IF
|
||||||
|
|
||||||
// Call isa88 base state machine
|
// Call isa88 base state machine
|
||||||
SUPER^();
|
SUPER^();]]></ST>
|
||||||
|
|
||||||
// IPs
|
|
||||||
// 192.168.1.10
|
|
||||||
// 192.168.1.11]]></ST>
|
|
||||||
</Implementation>
|
</Implementation>
|
||||||
<Method Name="FB_init" Id="{6c7048d9-3836-4289-b5f3-f8878267494f}">
|
<Method Name="FB_init" Id="{6c7048d9-3836-4289-b5f3-f8878267494f}">
|
||||||
<Declaration><![CDATA[//FB_Init ist immer implizit verfügbar und wird primär für die Initialisierung verwendet.
|
<Declaration><![CDATA[//FB_Init ist immer implizit verfügbar und wird primär für die Initialisierung verwendet.
|
||||||
@@ -48,8 +54,17 @@ sIPAddr : STRING;
|
|||||||
udiPort : UDINT;
|
udiPort : UDINT;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[_sIpAddr := sIPAddr;
|
<ST><![CDATA[// Save connection settings
|
||||||
_udiPort := udiPort;]]></ST>
|
_sIpAddr := sIPAddr;
|
||||||
|
_udiPort := udiPort;
|
||||||
|
|
||||||
|
// Config state machine
|
||||||
|
_stSMConfig.xStoppingDisabled := TRUE;
|
||||||
|
|
||||||
|
_stSMConfig.xCompletingDisabled := TRUE;
|
||||||
|
_stSMConfig.xCompletedDisabled := TRUE;
|
||||||
|
|
||||||
|
_stSMConfig.xAbortingDisabled := TRUE;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
</POU>
|
</POU>
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ VAR_GLOBAL
|
|||||||
xErrAck : BOOL;
|
xErrAck : BOOL;
|
||||||
|
|
||||||
xOpenAllChambers : BOOL;
|
xOpenAllChambers : BOOL;
|
||||||
|
|
||||||
|
// Unit states
|
||||||
|
stTrayFeederInputState : ST_PMLs;
|
||||||
|
stTRayFeederInputAdmin : ST_PMLa;
|
||||||
END_VAR]]></Declaration>
|
END_VAR]]></Declaration>
|
||||||
</GVL>
|
</GVL>
|
||||||
</TcPlcObject>
|
</TcPlcObject>
|
||||||
82
PLC/LibraryCandidates/FB_PI.TcPOU
Normal file
82
PLC/LibraryCandidates/FB_PI.TcPOU
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<POU Name="FB_PI" Id="{d504557e-7fd7-4784-a00a-5d7d1bed0c95}" SpecialFunc="None">
|
||||||
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_PI
|
||||||
|
VAR_INPUT
|
||||||
|
rSP : REAL;
|
||||||
|
rPV : REAL;
|
||||||
|
rKp : REAL;
|
||||||
|
rTn : REAL;
|
||||||
|
|
||||||
|
xEnable : BOOL;
|
||||||
|
xSaturatedUpper : BOOL := FALSE;
|
||||||
|
xSaturatedLower : BOOL := FALSE;
|
||||||
|
END_VAR
|
||||||
|
VAR_OUTPUT
|
||||||
|
rMV : REAL;
|
||||||
|
END_VAR
|
||||||
|
VAR
|
||||||
|
|
||||||
|
_rError : REAL := 0.0;
|
||||||
|
_rIntegral : REAL := 0.0;
|
||||||
|
_rProportinal : REAL := 0.0;
|
||||||
|
|
||||||
|
_rDeltaIntegral : REAL := 0.0;
|
||||||
|
|
||||||
|
_fbGetCurTaskIdx : GETCURTASKINDEX;
|
||||||
|
_rT : REAL;
|
||||||
|
|
||||||
|
_xFirstCylce : BOOL := TRUE;
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF _xFirstCylce THEN
|
||||||
|
_xFirstCylce := FALSE;
|
||||||
|
|
||||||
|
// Get current task time
|
||||||
|
_fbGetCurTaskIdx();
|
||||||
|
_rT := LREAL_TO_REAL(UDINT_TO_LREAL(TwinCAT_SystemInfoVarList._TASKInfo[_fbGetCurTaskIdx.index].CycleTime) * 10E-5);
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
|
||||||
|
IF xEnable THEN
|
||||||
|
_rError := rSP - rPV;
|
||||||
|
ELSE
|
||||||
|
_rError := 0.0;
|
||||||
|
_rIntegral := 0.0;
|
||||||
|
rMV := 0.0;
|
||||||
|
RETURN;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Calculate proportinal part
|
||||||
|
_rProportinal := rKp * _rError;
|
||||||
|
|
||||||
|
// Calculate controller output
|
||||||
|
rMV := _rProportinal + _rIntegral;
|
||||||
|
|
||||||
|
// Calculate integral for this step
|
||||||
|
IF rTn <> 0 THEN
|
||||||
|
_rDeltaIntegral := (rKp * _rT / rTn) * _rError;
|
||||||
|
ELSE
|
||||||
|
_rDeltaIntegral := 0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Only add new integral part if we are going away from the upper or lower bound
|
||||||
|
IF (xSaturatedUpper AND (_rDeltaIntegral > 0.0)) THEN
|
||||||
|
_rDeltaIntegral := 0.0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF (xSaturatedLower AND (_rDeltaIntegral < 0.0)) THEN
|
||||||
|
_rDeltaIntegral := 0.0;
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
// Calculate integral part
|
||||||
|
_rIntegral := _rIntegral + _rDeltaIntegral;
|
||||||
|
|
||||||
|
// Reset integral with deactivated integral time
|
||||||
|
IF (rTn = 0.0) AND (_rIntegral <> 0) THEN
|
||||||
|
_rIntegral := 0.0;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</POU>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TcPlcObject Version="1.1.0.1">
|
||||||
|
<DUT Name="ST_PackMLGenericHMIInterface" Id="{54cdd4b1-e09e-436e-9737-cc31548609eb}">
|
||||||
|
<Declaration><![CDATA[TYPE ST_PackMLGenericHMIInterface :
|
||||||
|
STRUCT
|
||||||
|
stBtnAbort : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnClear : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnHold : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnReset : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnStart : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnStop : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnSuspend : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnUnhold : ST_HMI_CONTROL_BUTTON;
|
||||||
|
stBtnUnsuspend : ST_HMI_CONTROL_BUTTON;
|
||||||
|
|
||||||
|
eCurrentMode : E_PackMLUnitMode;
|
||||||
|
eCurrentState : E_PackMLState;
|
||||||
|
END_STRUCT
|
||||||
|
END_TYPE
|
||||||
|
]]></Declaration>
|
||||||
|
</DUT>
|
||||||
|
</TcPlcObject>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TcPlcObject Version="1.1.0.1">
|
<TcPlcObject Version="1.1.0.1">
|
||||||
<POU Name="FB_PackMLGeneric" Id="{f562a10e-01bc-407d-9fc0-2837d13c10b1}" SpecialFunc="None">
|
<POU Name="FB_PackMLGeneric" Id="{f562a10e-01bc-407d-9fc0-2837d13c10b1}" SpecialFunc="None">
|
||||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_PackMLGeneric IMPLEMENTS I_UnitState
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_PackMLGeneric
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
stCommand : ST_PMLc;
|
stCommand : ST_PMLc;
|
||||||
END_VAR
|
END_VAR
|
||||||
@@ -12,6 +12,9 @@ VAR_OUTPUT
|
|||||||
// Admin data
|
// Admin data
|
||||||
stAdmin : ST_PMLa;
|
stAdmin : ST_PMLa;
|
||||||
END_VAR
|
END_VAR
|
||||||
|
VAR_IN_OUT
|
||||||
|
//stHMIInterface : ST_PackMLGenericHMIInterface;
|
||||||
|
END_VAR
|
||||||
VAR
|
VAR
|
||||||
// State machine handler
|
// State machine handler
|
||||||
_fbStateMachine : FB_PackMLStateMachine;
|
_fbStateMachine : FB_PackMLStateMachine;
|
||||||
@@ -143,85 +146,161 @@ CASE stStatus.eStateCurrent OF
|
|||||||
;
|
;
|
||||||
END_CASE]]></ST>
|
END_CASE]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
<Method Name="M_Aborted" Id="{db1a684f-e4e1-4d89-a3aa-9b9dfde0508c}">
|
<Folder Name="Commands" Id="{11740802-7551-418d-83f3-5b2d5c93c299}" />
|
||||||
<Declaration><![CDATA[METHOD M_Aborted
|
<Folder Name="States" Id="{2cf25144-1e5c-4db8-ba57-9d98461c53ce}" />
|
||||||
|
<Action Name="A_HandleHMIOutput" Id="{73c47dbe-0382-4e83-8c9e-e4744dd66394}">
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Action>
|
||||||
|
<Method Name="M_Abort" Id="{a8ac7d94-0639-4bcc-b083-994135ce6951}" FolderPath="Commands\">
|
||||||
|
<Declaration><![CDATA[METHOD M_Abort : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF (stStatus.eStateCurrent <> E_PackMLState.ABORTED) AND (stStatus.eStateCurrent <> E_PackMLState.ABORTING) THEN
|
||||||
|
_eCmd := E_PackMLCmd.ABORT;
|
||||||
|
M_Abort := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Abort := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Aborted" Id="{db1a684f-e4e1-4d89-a3aa-9b9dfde0508c}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Aborted
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Aborting" Id="{928ad614-a3a7-4c6c-b1bc-55ae54e4c95f}">
|
<Method Name="M_Aborting" Id="{928ad614-a3a7-4c6c-b1bc-55ae54e4c95f}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Aborting
|
<Declaration><![CDATA[METHOD PROTECTED M_Aborting
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Clearing" Id="{1716cf1b-94c6-4995-8b3f-c7ebcf5727d3}">
|
<Method Name="M_Clear" Id="{1ae1174f-acb8-4f8a-bc73-ec233f6637b2}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Clearing
|
<Declaration><![CDATA[METHOD M_Clear : BOOL
|
||||||
|
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.ABORTED THEN
|
||||||
|
_eCmd := E_PackMLCmd.CLEAR;
|
||||||
|
M_Clear := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Clear := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Clearing" Id="{1716cf1b-94c6-4995-8b3f-c7ebcf5727d3}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Clearing
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Complete" Id="{33df5dea-d83b-48e1-8898-d7c8e1f031bd}">
|
<Method Name="M_Complete" Id="{33df5dea-d83b-48e1-8898-d7c8e1f031bd}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Complete
|
<Declaration><![CDATA[METHOD PROTECTED M_Complete
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Completing" Id="{341608cb-1218-481f-929c-cb79602c11ab}">
|
<Method Name="M_Completing" Id="{341608cb-1218-481f-929c-cb79602c11ab}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Completing
|
<Declaration><![CDATA[METHOD PROTECTED M_Completing
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Execute" Id="{2a469169-0eb2-43c9-be21-48909285ee44}">
|
<Method Name="M_Execute" Id="{2a469169-0eb2-43c9-be21-48909285ee44}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Execute
|
<Declaration><![CDATA[METHOD PROTECTED M_Execute
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Held" Id="{05b040b0-b1b9-4afd-81d0-88fc1f1a7f9b}">
|
<Method Name="M_Held" Id="{05b040b0-b1b9-4afd-81d0-88fc1f1a7f9b}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Held
|
<Declaration><![CDATA[METHOD PROTECTED M_Held
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Holding" Id="{519b03b3-2409-4b45-818f-535b3e16b22e}">
|
<Method Name="M_Hold" Id="{63908543-c84a-46a6-803b-0cd0a69ee040}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Holding
|
<Declaration><![CDATA[METHOD M_Hold : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.EXECUTE) OR (stStatus.eStateCurrent = E_PackMLState.SUSPENDED) THEN
|
||||||
|
_eCmd := E_PackMLCmd.HOLD;
|
||||||
|
M_Hold := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Hold := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Holding" Id="{519b03b3-2409-4b45-818f-535b3e16b22e}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Holding
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Idle" Id="{aa784f5c-7adf-4c9f-a414-65b10afd2772}">
|
<Method Name="M_Idle" Id="{aa784f5c-7adf-4c9f-a414-65b10afd2772}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Idle
|
<Declaration><![CDATA[METHOD PROTECTED M_Idle
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Resetting" Id="{4050ed6f-edbe-4c3e-ac42-919a37a47ea9}">
|
<Method Name="M_Reset" Id="{9acdfbad-6477-4a07-aac5-b9a102467964}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Resetting
|
<Declaration><![CDATA[METHOD M_Reset : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.STOPPED THEN
|
||||||
|
_eCmd := E_PackMLCmd.RESET;
|
||||||
|
M_Reset := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Reset := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Resetting" Id="{4050ed6f-edbe-4c3e-ac42-919a37a47ea9}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Resetting
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Starting" Id="{0059e7f6-5f2a-40e4-9d9b-652f221495a9}">
|
<Method Name="M_Start" Id="{86eb6432-588a-4480-b09e-72e5733dc716}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Starting
|
<Declaration><![CDATA[METHOD M_Start : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.IDLE THEN
|
||||||
|
_eCmd := E_PackMLCmd.RESET;
|
||||||
|
M_Start := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Start := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Starting" Id="{0059e7f6-5f2a-40e4-9d9b-652f221495a9}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Starting
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_StateComplete" Id="{0cf3625e-8009-4108-a9f4-d98c991f9930}">
|
<Method Name="M_StateComplete" Id="{0cf3625e-8009-4108-a9f4-d98c991f9930}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_StateComplete
|
<Declaration><![CDATA[METHOD PROTECTED M_StateComplete
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[// Reset state state machine
|
<ST><![CDATA[// Reset state state machine
|
||||||
@@ -231,43 +310,104 @@ _iSSM := 0;
|
|||||||
_fbStateMachine.M_StateComplete();]]></ST>
|
_fbStateMachine.M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Stopped" Id="{9f8a09cf-f3be-4d60-b5e4-cd9572fae88c}">
|
<Method Name="M_Stop" Id="{8beef0bf-5aa2-4644-ae54-6acbcdaacef4}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Stopped
|
<Declaration><![CDATA[METHOD M_Stop : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF (stStatus.eStateCurrent <> E_PackMLState.ABORTED)
|
||||||
|
AND (stStatus.eStateCurrent <> E_PackMLState.ABORTING)
|
||||||
|
AND (stStatus.eStateCurrent <> E_PackMLState.CLEARING)
|
||||||
|
AND (stStatus.eStateCurrent <> E_PackMLState.STOPPING)
|
||||||
|
AND (stStatus.eStateCurrent <> E_PackMLState.STOPPED)
|
||||||
|
THEN
|
||||||
|
_eCmd := E_PackMLCmd.STOP;
|
||||||
|
M_Stop := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Stop := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Stopped" Id="{9f8a09cf-f3be-4d60-b5e4-cd9572fae88c}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Stopped
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Stopping" Id="{193565ef-cf20-428c-b726-e7c1b61375c5}">
|
<Method Name="M_Stopping" Id="{193565ef-cf20-428c-b726-e7c1b61375c5}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Stopping
|
<Declaration><![CDATA[METHOD PROTECTED M_Stopping
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Suspended" Id="{222c3ad7-f7d5-4773-8e98-863345472053}">
|
<Method Name="M_Suspend" Id="{a69941cd-31ee-44b4-9c8b-a7c774e40447}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Suspended
|
<Declaration><![CDATA[METHOD M_Suspend : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF stStatus.eStateCurrent = E_PackMLState.EXECUTE THEN
|
||||||
|
_eCmd := E_PackMLCmd.SUSPEND;
|
||||||
|
M_Suspend := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Suspend := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Suspended" Id="{222c3ad7-f7d5-4773-8e98-863345472053}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Suspended
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[]]></ST>
|
<ST><![CDATA[]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Suspending" Id="{0f5d52e2-2a54-4ea9-a0c4-7f08229c4f21}">
|
<Method Name="M_Suspending" Id="{0f5d52e2-2a54-4ea9-a0c4-7f08229c4f21}" FolderPath="States\">
|
||||||
<Declaration><![CDATA[METHOD M_Suspending
|
<Declaration><![CDATA[METHOD PROTECTED M_Suspending
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Unholding" Id="{662dd054-329b-4e57-ba77-486f92af795a}">
|
<Method Name="M_Unhold" Id="{6af8dbfd-0422-459a-b99f-09e9246d2621}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Unholding
|
<Declaration><![CDATA[METHOD M_Unhold : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.HELD) THEN
|
||||||
|
_eCmd := E_PackMLCmd.UNSUSPEND;
|
||||||
|
M_Unhold := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Unhold := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Unholding" Id="{662dd054-329b-4e57-ba77-486f92af795a}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Unholding
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
<Method Name="M_Unsuspending" Id="{80fb11c4-916a-4f8f-9cf9-b9a2d51524a1}">
|
<Method Name="M_Unsuspend" Id="{ff6f4f4b-4bc6-47f7-a257-a2bcea2d6ae3}" FolderPath="Commands\">
|
||||||
<Declaration><![CDATA[METHOD M_Unsuspending
|
<Declaration><![CDATA[METHOD M_Unsuspend : BOOL
|
||||||
|
VAR_INPUT
|
||||||
|
END_VAR
|
||||||
|
]]></Declaration>
|
||||||
|
<Implementation>
|
||||||
|
<ST><![CDATA[IF (stStatus.eStateCurrent = E_PackMLState.SUSPENDED) THEN
|
||||||
|
_eCmd := E_PackMLCmd.UNSUSPEND;
|
||||||
|
M_Unsuspend := TRUE;
|
||||||
|
ELSE
|
||||||
|
M_Unsuspend := FALSE;
|
||||||
|
END_IF]]></ST>
|
||||||
|
</Implementation>
|
||||||
|
</Method>
|
||||||
|
<Method Name="M_Unsuspending" Id="{80fb11c4-916a-4f8f-9cf9-b9a2d51524a1}" FolderPath="States\">
|
||||||
|
<Declaration><![CDATA[METHOD PROTECTED M_Unsuspending
|
||||||
]]></Declaration>
|
]]></Declaration>
|
||||||
<Implementation>
|
<Implementation>
|
||||||
<ST><![CDATA[M_StateComplete();]]></ST>
|
<ST><![CDATA[M_StateComplete();]]></ST>
|
||||||
|
|||||||
@@ -27,9 +27,34 @@
|
|||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
<ExcludeFromBuild>false</ExcludeFromBuild>
|
<ExcludeFromBuild>false</ExcludeFromBuild>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="00_Main\ST_PosData.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="00_Main\ST_TrayFeederCamPosData.TcDUT">
|
||||||
|
<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\HeatCoolPlates\FB_CoolPlate.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\HeatCoolPlates\FB_HeatCoolPlates.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\HeatCoolPlates\FB_HotPlate.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\HeatCoolPlates\GVL_HeatCoolConfig.TcGVL">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
<LinkAlways>true</LinkAlways>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\HeatCoolPlates\ST_SerialCrl.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\HeatCoolPlates\ST_SerialStatus.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="01_Stationen\HVTester\FB_HVTester.TcPOU">
|
<Compile Include="01_Stationen\HVTester\FB_HVTester.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -66,6 +91,9 @@
|
|||||||
<Compile Include="01_Stationen\Kuka_Robot\ST_KukaRobot_UnitFeedbacks.TcDUT">
|
<Compile Include="01_Stationen\Kuka_Robot\ST_KukaRobot_UnitFeedbacks.TcDUT">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="01_Stationen\TrayFeeder\FB_TFProtocol.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="01_Stationen\TrayFeeder\FB_TrayFeeder.TcPOU">
|
<Compile Include="01_Stationen\TrayFeeder\FB_TrayFeeder.TcPOU">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -73,6 +101,9 @@
|
|||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
<LinkAlways>true</LinkAlways>
|
<LinkAlways>true</LinkAlways>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="LibraryCandidates\FB_PI.TcPOU">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="LibraryCandidates\PackML\DUTs\E_PackMLCmd.TcDUT">
|
<Compile Include="LibraryCandidates\PackML\DUTs\E_PackMLCmd.TcDUT">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -112,6 +143,9 @@
|
|||||||
<Compile Include="LibraryCandidates\PackML\DUTs\PackTags\ST_PMLs.TcDUT">
|
<Compile Include="LibraryCandidates\PackML\DUTs\PackTags\ST_PMLs.TcDUT">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="LibraryCandidates\PackML\DUTs\ST_PackMLGenericHMIInterface.TcDUT">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="LibraryCandidates\PackML\DUTs\ST_PackMLStateMachineConfig.TcDUT">
|
<Compile Include="LibraryCandidates\PackML\DUTs\ST_PackMLStateMachineConfig.TcDUT">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -150,6 +184,7 @@
|
|||||||
<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\TrayFeeder" />
|
<Folder Include="01_Stationen\TrayFeeder" />
|
||||||
<Folder Include="01_Stationen" />
|
<Folder Include="01_Stationen" />
|
||||||
<Folder Include="00_Main" />
|
<Folder Include="00_Main" />
|
||||||
@@ -221,6 +256,10 @@
|
|||||||
<DefaultResolution>Tc2_TcpIp, * (Beckhoff Automation GmbH)</DefaultResolution>
|
<DefaultResolution>Tc2_TcpIp, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||||
<Namespace>Tc2_TcpIp</Namespace>
|
<Namespace>Tc2_TcpIp</Namespace>
|
||||||
</PlaceholderReference>
|
</PlaceholderReference>
|
||||||
|
<PlaceholderReference Include="Tc2_Utilities">
|
||||||
|
<DefaultResolution>Tc2_Utilities, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||||
|
<Namespace>Tc2_Utilities</Namespace>
|
||||||
|
</PlaceholderReference>
|
||||||
<PlaceholderReference Include="Tc3_Module">
|
<PlaceholderReference Include="Tc3_Module">
|
||||||
<DefaultResolution>Tc3_Module, * (Beckhoff Automation GmbH)</DefaultResolution>
|
<DefaultResolution>Tc3_Module, * (Beckhoff Automation GmbH)</DefaultResolution>
|
||||||
<Namespace>Tc3_Module</Namespace>
|
<Namespace>Tc3_Module</Namespace>
|
||||||
|
|||||||
93
PLC/PLC.tmc
93
PLC/PLC.tmc
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TargetSystemConfig Crc="3821398253" Version="1.5">
|
<TargetSystemConfig Crc="1407690307" Version="1.5">
|
||||||
<TargetSystemType>HSafetyPLC</TargetSystemType>
|
<TargetSystemType>HSafetyPLC</TargetSystemType>
|
||||||
<TargetSystemSubType>EL1918</TargetSystemSubType>
|
<TargetSystemSubType>EL1918</TargetSystemSubType>
|
||||||
<IsExternalDevice>false</IsExternalDevice>
|
<IsExternalDevice>false</IsExternalDevice>
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<TargetSystemObjectName>PC_K01_KL02 (EL1918)</TargetSystemObjectName>
|
<TargetSystemObjectName>PC_K01_KL02 (EL1918)</TargetSystemObjectName>
|
||||||
<SoftwareVersion>02 (V01.08) </SoftwareVersion>
|
<SoftwareVersion>02 (V01.08) </SoftwareVersion>
|
||||||
<SerialNumber>3885647</SerialNumber>
|
<SerialNumber>3885647</SerialNumber>
|
||||||
<ProjectCRC>32969</ProjectCRC>
|
<ProjectCRC>21996</ProjectCRC>
|
||||||
<MapProjectCRC>false</MapProjectCRC>
|
<MapProjectCRC>false</MapProjectCRC>
|
||||||
<MapSerialNumber>false</MapSerialNumber>
|
<MapSerialNumber>false</MapSerialNumber>
|
||||||
<VersionNumber>1</VersionNumber>
|
<VersionNumber>1</VersionNumber>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project Crc="2889350834" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
<Project Crc="1261477591" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
@@ -62,7 +62,6 @@
|
|||||||
<None Include="TwinSafeGroup1\Alias Devices\PC_K01_KL01 %28EL1918%29.sds" />
|
<None Include="TwinSafeGroup1\Alias Devices\PC_K01_KL01 %28EL1918%29.sds" />
|
||||||
<None Include="TwinSafeGroup1\Alias Devices\Other_Err.sds" />
|
<None Include="TwinSafeGroup1\Alias Devices\Other_Err.sds" />
|
||||||
<None Include="TwinSafeGroup1\Alias Devices\RobotMain - Module 2 %28Safety Data Bitf %288 Byte%29%29.sds" />
|
<None Include="TwinSafeGroup1\Alias Devices\RobotMain - Module 2 %28Safety Data Bitf %288 Byte%29%29.sds" />
|
||||||
<None Include="TwinSafeGroup1\Alias Devices\RunStop.sds" />
|
|
||||||
<None Include="TwinSafeGroup1\Alias Devices\SafetyChuck - Module 1 %28Safety Process Data, 2 axis%29.sds" />
|
<None Include="TwinSafeGroup1\Alias Devices\SafetyChuck - Module 1 %28Safety Process Data, 2 axis%29.sds" />
|
||||||
<None Include="TwinSafeGroup1\Alias Devices\MainDoorLock.sds" />
|
<None Include="TwinSafeGroup1\Alias Devices\MainDoorLock.sds" />
|
||||||
<None Include="TwinSafeGroup1\Alias Devices\NIO_DOOR_LOCK.sds" />
|
<None Include="TwinSafeGroup1\Alias Devices\NIO_DOOR_LOCK.sds" />
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<SafetyDeviceDesc Crc="852270779" FileFormatVersion="1.9">
|
|
||||||
<AliasDeviceType>
|
|
||||||
<Type>1</Type>
|
|
||||||
<SubType>1</SubType>
|
|
||||||
<VendorId>0</VendorId>
|
|
||||||
</AliasDeviceType>
|
|
||||||
<SDSID>9</SDSID>
|
|
||||||
<StandardAliasDevice>
|
|
||||||
<LinkingMode>Manual</LinkingMode>
|
|
||||||
<IO>
|
|
||||||
<Name>In</Name>
|
|
||||||
<BitOffsMessage>0</BitOffsMessage>
|
|
||||||
<DataType>BIT</DataType>
|
|
||||||
<BitSize>1</BitSize>
|
|
||||||
</IO>
|
|
||||||
</StandardAliasDevice>
|
|
||||||
</SafetyDeviceDesc>
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<safetyApplication Crc="1147292257" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="d197abde-1e46-4da1-af49-0c5e8acb0bf2" name="" mapState="false" mapDiag="false" groupOrderId="0" passificationAllowed="false" temporaryDeactivationAllowed="false" permamentDeactivationAllowed="false" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
|
<safetyApplication Crc="1919680748" xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.5.0.0" Id="d197abde-1e46-4da1-af49-0c5e8acb0bf2" name="" mapState="false" mapDiag="false" groupOrderId="0" passificationAllowed="false" temporaryDeactivationAllowed="false" permamentDeactivationAllowed="false" xmlid="0" analogFBOutputReplacementValues="Zero" verifyAnalogFBInputsIfStart="false" userFbId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/dsltools/SafetyApplicationLanguage">
|
||||||
<networks>
|
<networks>
|
||||||
<safetyApplicationHasNetworks Id="980a2a23-c4cd-4476-8c84-c716c4cfd6d9">
|
<safetyApplicationHasNetworks Id="980a2a23-c4cd-4476-8c84-c716c4cfd6d9">
|
||||||
<Network Id="cf310e0f-e61c-4ed8-80c0-d6a8048dade1" name="Network8" networkName="Network8" intId="72" networkOrderId="0">
|
<Network Id="cf310e0f-e61c-4ed8-80c0-d6a8048dade1" name="Network8" networkName="Network8" intId="72" networkOrderId="0">
|
||||||
@@ -1628,203 +1628,209 @@
|
|||||||
<variableHasTargetUsages Id="840fffbf-5d08-4a38-b61d-12d88de0c3da">
|
<variableHasTargetUsages Id="840fffbf-5d08-4a38-b61d-12d88de0c3da">
|
||||||
<variableUsages Id="00efd576-263d-4965-a7bf-2dda38098f5f">
|
<variableUsages Id="00efd576-263d-4965-a7bf-2dda38098f5f">
|
||||||
<usages>
|
<usages>
|
||||||
<variableUsagesHasUsages Id="96cd6e17-8b20-4ca3-8d5a-8428dd0dead5">
|
<variableUsagesHasUsages Id="8e45f512-c00c-42ca-9be2-736f3fb2e540">
|
||||||
<fbPortUsage Id="02e5b441-b599-45a8-9805-adda341c3f34">
|
<fbPortUsage Id="c7335687-eb12-46ed-a086-9b0323543e30">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="538b741a-c660-48c4-aed2-ae8c57ec2112">
|
<fbPortUsageReferencesFunctionBlockPort Id="af75820c-45eb-4068-866c-04be78916465">
|
||||||
<inPortMoniker name="//Network3/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network3/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="1604a1fe-d17f-4672-9f41-74b79f249b37">
|
<variableUsagesHasUsages Id="c68c2110-4da7-463a-a00c-db06e5497515">
|
||||||
<fbPortUsage Id="1ea18004-d7bb-4a16-85fc-30e17204c03d">
|
<fbPortUsage Id="4db16818-258f-4b39-b01f-093ecb8dfaa2">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="a4fb47dd-4bbf-424f-84c6-2057d5464142">
|
<fbPortUsageReferencesFunctionBlockPort Id="4865d82c-8a4b-4794-9a47-350b552c38a1">
|
||||||
<inPortMoniker name="//Network4/FBAnd1/AndIn1" />
|
<inPortMoniker name="//Network4/FBAnd1/AndIn1" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="a071a223-8b55-4205-98d7-0199f61c06fa">
|
<variableUsagesHasUsages Id="c56a9613-f513-43b4-a431-6e59ba05e5a2">
|
||||||
<fbPortUsage Id="ae47662c-0791-407e-8351-57481dab37c9">
|
<fbPortUsage Id="b3684c55-ecbd-4e7a-9428-7c4f6e08f40e">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="a9aab7d0-8aa6-4362-ae3b-2983cd58506f">
|
<fbPortUsageReferencesFunctionBlockPort Id="e40d3295-9ea8-4ab7-8050-306e226644bf">
|
||||||
<inPortMoniker name="//Network6/FBEstop1/EStopIn1" />
|
<inPortMoniker name="//Network6/FBEstop1/EStopIn1" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="c23a6eff-3841-402b-9bef-cd816265906e">
|
<variableUsagesHasUsages Id="938e0b1c-485c-4a02-a925-46fe06b4d8fa">
|
||||||
<fbPortUsage Id="d9898fd8-82a4-4ba0-ac38-03a88b33d638">
|
<fbPortUsage Id="ac569780-d85c-4ac2-9fc6-897221a1162b">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="051e370d-804b-43b3-a60f-c3c4a8e56e12">
|
<fbPortUsageReferencesFunctionBlockPort Id="2599d4f5-27b0-47f3-85e2-0e7c60f6938f">
|
||||||
<inPortMoniker name="//Network7/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network7/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="3af0bd47-223d-48e7-9c8b-e106508538ce">
|
<variableUsagesHasUsages Id="bf3a4e63-bc82-4c45-99d7-20a3e30fc59e">
|
||||||
<fbPortUsage Id="2e4dac08-57d8-4535-b31f-8d1183aac733">
|
<fbPortUsage Id="ace7af9f-acb3-44ee-9d8e-af5520613cf0">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="32448f4b-a390-4cd3-a28b-c96eecaed789">
|
<fbPortUsageReferencesFunctionBlockPort Id="779e6254-5bd6-4f8d-af24-7f3bd923d20d">
|
||||||
<inPortMoniker name="//Network9/FBAnd1/AndIn1" />
|
<inPortMoniker name="//Network9/FBAnd1/AndIn1" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="19bfdb69-c682-4454-857b-6ff1adbc3c67">
|
<variableUsagesHasUsages Id="1bf2fe86-8a6e-46b0-b697-771ec132423c">
|
||||||
<fbPortUsage Id="308bb9a1-3284-4028-a17c-ae346be6d552">
|
<fbPortUsage Id="a52b9094-926e-48e3-b406-7325dff9b7e5">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="4ab71dc4-fb06-474d-91e7-d338b25067ba">
|
<fbPortUsageReferencesFunctionBlockPort Id="561823c0-8581-47a2-84b8-c7288e114ef6">
|
||||||
<inPortMoniker name="//Network10/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network10/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="a637f2b5-7bd8-443e-a303-748fb0f1118a">
|
<variableUsagesHasUsages Id="747674ab-e58f-49f1-92b3-14b8cce1dad0">
|
||||||
<fbPortUsage Id="ec02f4ab-2b29-44f8-9bf7-cd39944c2541">
|
<fbPortUsage Id="39f125c7-19ff-4247-a34a-4c995e165e2f">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="5e5fce8b-4e08-4ea7-a991-7f8ada653ca7">
|
<fbPortUsageReferencesFunctionBlockPort Id="b04c3d29-6e49-4cc4-b70f-5bd772513ea1">
|
||||||
<inPortMoniker name="//Network11/FBAnd1/AndIn1" />
|
<inPortMoniker name="//Network11/FBAnd1/AndIn1" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="758a727c-0ced-49dd-a8fc-4346a224c6c5">
|
<variableUsagesHasUsages Id="cee3146a-3d96-46d6-b628-252f9539b6bc">
|
||||||
<fbPortUsage Id="1c9b566a-d447-4a0a-8460-6321356eabaa">
|
<fbPortUsage Id="92053933-be56-4914-bcd9-5ab6136e9707">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="08852d63-ff2a-4383-be63-015dd07b5701">
|
<fbPortUsageReferencesFunctionBlockPort Id="f77fbac9-5590-484e-ba28-3739468c74f7">
|
||||||
<inPortMoniker name="//Network12/FBAnd1/AndIn1" />
|
<inPortMoniker name="//Network12/FBAnd1/AndIn1" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="1c421845-bfda-4ea7-b633-703a4e725bdd">
|
<variableUsagesHasUsages Id="c0786058-5f31-4543-bff5-1eb8750c8f1d">
|
||||||
<fbPortUsage Id="3f89b5d6-4db2-4031-9aac-88b50145e5e6">
|
<fbPortUsage Id="5df5bdac-985d-4fe6-a45d-d10aaae6c853">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="d9d9d149-4a68-47c2-9349-02f3da17ba4f">
|
<fbPortUsageReferencesFunctionBlockPort Id="9c626936-6fc2-4457-9d49-4606bbe835b6">
|
||||||
<inPortMoniker name="//Network13/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network13/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="37129f06-8836-4e17-9884-72a667ce470c">
|
<variableUsagesHasUsages Id="39afded6-b358-490b-bc17-c2765af6c9af">
|
||||||
<fbPortUsage Id="02ac23e6-f099-4bba-93e5-e097b3883b96">
|
<fbPortUsage Id="21cb1970-cae7-401a-a7bd-e7b32d674a2b">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="a7edb3d2-e936-4a0d-a9a5-142e6722cd4d">
|
<fbPortUsageReferencesFunctionBlockPort Id="4cad8f59-9741-409b-9d4a-5d6d93338db3">
|
||||||
<inPortMoniker name="//Network14/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network14/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="fc7c4f69-cb4d-4539-adeb-513e051dc61e">
|
<variableUsagesHasUsages Id="4c038ae2-f12a-47ca-bca6-95acf431db35">
|
||||||
<fbPortUsage Id="1d7c3c31-5da3-4fb9-841e-17a0717ddad0">
|
<fbPortUsage Id="4ff09a82-4e47-4ce5-b9fe-cfabf3403df6">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="bd269440-4928-4da5-ac66-f7bf9b5eb1f2">
|
<fbPortUsageReferencesFunctionBlockPort Id="b839afec-d7d1-442b-a56a-544f3a3a1235">
|
||||||
<inPortMoniker name="//Network15/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network15/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="93e70b66-3adb-4a20-8093-e67d8fea6c4e">
|
<variableUsagesHasUsages Id="8a319aef-5e9f-4e92-831c-b71116c2bfbb">
|
||||||
<fbPortUsage Id="fff2fa06-99c4-4a68-95e5-c12c708bd7ef">
|
<fbPortUsage Id="80d026d1-dd97-4adb-9b13-0e533d8815eb">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="09600f31-2705-4e89-bf85-2bd23e06c154">
|
<fbPortUsageReferencesFunctionBlockPort Id="21870431-cfa0-4ec5-9f11-536d2cf0d482">
|
||||||
<inPortMoniker name="//Network16/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network16/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="fd840994-81e8-4520-ab79-f7af0b021ef9">
|
<variableUsagesHasUsages Id="03b472ac-8eeb-496d-9a6a-3c40df4c8fe0">
|
||||||
<fbPortUsage Id="48d3845e-5e49-4438-98e2-b13d5dfcf4d9">
|
<fbPortUsage Id="0828a104-51bd-4e42-8833-ca8de938e40f">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="97a40c99-a504-43a5-870d-314258c8d9b5">
|
<fbPortUsageReferencesFunctionBlockPort Id="fc1f78bc-bb79-4942-a5a4-b386a225ec46">
|
||||||
<inPortMoniker name="//Network17/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network17/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="0f26aee7-2d83-4aeb-9411-95d6b0dd55c7">
|
<variableUsagesHasUsages Id="af1daa17-21fe-40c5-ac63-e3b824c26e34">
|
||||||
<fbPortUsage Id="4a587277-1ce6-44d1-b1a3-e2178ccef721">
|
<fbPortUsage Id="ee8f8686-1d4d-41c4-83b7-a0e5f3fc1371">
|
||||||
<functionBlockPort>
|
<functionBlockPort>
|
||||||
<fbPortUsageReferencesFunctionBlockPort Id="1c52195f-5bc5-4998-b866-03f68200215b">
|
<fbPortUsageReferencesFunctionBlockPort Id="4b8d112f-db90-4519-b234-7c4db901616d">
|
||||||
<inPortMoniker name="//Network19/FBAnd1/AndIn2" />
|
<inPortMoniker name="//Network19/FBAnd1/AndIn2" />
|
||||||
</fbPortUsageReferencesFunctionBlockPort>
|
</fbPortUsageReferencesFunctionBlockPort>
|
||||||
</functionBlockPort>
|
</functionBlockPort>
|
||||||
</fbPortUsage>
|
</fbPortUsage>
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="0261abfc-7f5a-4100-b42d-9fdb926b4c4d">
|
<variableUsagesHasUsages Id="4df7b182-4f18-47bd-bffa-f57a78385366">
|
||||||
<aliasDeviceIoUsage Id="672b2fe7-3259-43d4-ac85-ca4ce7d31a34" sdsId="172" channelId="1" functionId="1879113985" />
|
<aliasDeviceIoUsage Id="04f705f1-6c64-4f9f-88a8-c7c33cb16c35" sdsId="172" channelId="1" functionId="1879113985" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="8fa40bba-9275-4a09-8a85-e5bf14023061">
|
<variableUsagesHasUsages Id="4a1139e4-1d60-45a3-b321-9625bedd23d5">
|
||||||
<aliasDeviceIoUsage Id="6c67b7d4-7a13-4710-8f7d-8becc9e2a9a9" sdsId="172" channelId="2" functionId="1879114241" />
|
<aliasDeviceIoUsage Id="89617f70-b0f8-4f19-b664-0215bda03899" sdsId="172" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="09c26912-bc0d-45b4-8c30-10371adad25b">
|
<variableUsagesHasUsages Id="bf45a47c-beca-43e4-989c-fb127c5ef188">
|
||||||
<aliasDeviceIoUsage Id="58213c6e-acdd-4449-aed1-b98cb22bb7f6" sdsId="172" channelId="3" functionId="1879114497" />
|
<aliasDeviceIoUsage Id="ef305099-a716-493c-b366-93486ed0c6b8" sdsId="172" channelId="3" functionId="1879114497" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="8ae03375-53ea-4364-aab6-006811f031fb">
|
<variableUsagesHasUsages Id="75302293-b84d-4c4a-928b-a08bba18c944">
|
||||||
<aliasDeviceIoUsage Id="d35d4be3-427a-49fc-944c-86ee7b58b3b4" sdsId="195" channelId="2" functionId="1879114241" />
|
<aliasDeviceIoUsage Id="10df16fc-79a0-4bc7-844d-59dbfd228725" sdsId="195" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="1aacbdfa-de0f-448b-8d0b-f33b9e1b84aa">
|
<variableUsagesHasUsages Id="dcb0d2a8-d85a-4362-bb66-dbbc74cc33c7">
|
||||||
<aliasDeviceIoUsage Id="6f98022e-638d-4dc9-918c-73b4694b3486" sdsId="195" channelId="3" functionId="1879114497" />
|
<aliasDeviceIoUsage Id="2c90e22a-300f-4ade-9485-45de39c4271e" sdsId="195" channelId="3" functionId="1879114497" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="52a80131-8267-46a5-a6e1-e4ef3c394e45">
|
<variableUsagesHasUsages Id="ab75cbd4-6e87-4642-97e8-a2b866be98bc">
|
||||||
<aliasDeviceIoUsage Id="1dcdf94e-7032-4c97-b671-fc3a88dfde54" sdsId="195" channelId="4" functionId="1879114753" />
|
<aliasDeviceIoUsage Id="64de6329-1093-46a4-b402-ad7a5f86cb9f" sdsId="195" channelId="4" functionId="1879114753" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="a77be452-603e-4078-b0a9-24dfc5172c16">
|
<variableUsagesHasUsages Id="fec2863a-237c-40bf-8f3a-f99a2525aac9">
|
||||||
<aliasDeviceIoUsage Id="f01bf2e1-db1e-4a37-b576-94282e41adea" sdsId="183" channelId="1" functionId="1879113985" />
|
<aliasDeviceIoUsage Id="9d6fa6db-b907-4dd7-a0ed-ad189a28fd80" sdsId="183" channelId="1" functionId="1879113985" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="48f954b2-1656-42fe-8035-c1c6a75cec4f">
|
<variableUsagesHasUsages Id="0651686c-09de-4592-b590-3478aee4aa07">
|
||||||
<aliasDeviceIoUsage Id="de5d2c7b-1514-411a-b0c7-31c0fe1c32d3" sdsId="183" channelId="2" functionId="1879114241" />
|
<aliasDeviceIoUsage Id="d35eae4b-f708-4c00-9c8d-dfec7bad2815" sdsId="183" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="5757804c-4647-4ede-8c62-67761e7f52a7">
|
<variableUsagesHasUsages Id="dd700d85-d225-4c6e-a845-2d692d648719">
|
||||||
<aliasDeviceIoUsage Id="3c884124-d7c6-446d-afe4-6390e9f1422a" sdsId="183" channelId="3" functionId="1879114497" />
|
<aliasDeviceIoUsage Id="874fa81b-f023-4b87-b214-297de239174f" sdsId="183" channelId="3" functionId="1879114497" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="c536a657-717c-4b46-9668-0d383476ccf4">
|
<variableUsagesHasUsages Id="031891c2-2512-4f7a-9e33-dec74b6e7113">
|
||||||
<aliasDeviceIoUsage Id="8b1490f6-2d68-4eb6-b2e5-0d126599252c" sdsId="196" channelId="2" functionId="1879114241" />
|
<aliasDeviceIoUsage Id="6bb02821-9e6c-4d49-803f-5c7d8f5e8499" sdsId="196" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="3a9e6ef0-3a0c-4775-84a9-5699359ffb1c">
|
<variableUsagesHasUsages Id="4cd46286-c428-4212-93fe-7df15e8a6c03">
|
||||||
<aliasDeviceIoUsage Id="4d3ee1d3-8edd-4d3d-950a-541d325e9f79" sdsId="196" channelId="3" functionId="1879114497" />
|
<aliasDeviceIoUsage Id="9cf808a6-a52c-4177-9b67-0bc98ef48ab5" sdsId="196" channelId="3" functionId="1879114497" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="1bc75964-cf22-416d-b83a-bbe960d04253">
|
<variableUsagesHasUsages Id="9c841a39-f032-4b2c-b9dd-4473233b873c">
|
||||||
<aliasDeviceIoUsage Id="eff7545c-b40f-4ea0-bb31-4bb58d7fe579" sdsId="196" channelId="4" functionId="1879114753" />
|
<aliasDeviceIoUsage Id="3ed82322-e7d4-4c77-94a0-801fab70efaf" sdsId="196" channelId="4" functionId="1879114753" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="69df6abb-10d6-4668-89ad-9b01671ab075">
|
<variableUsagesHasUsages Id="6320f68b-574c-4f2a-a8b4-2a7211d29bb3">
|
||||||
<aliasDeviceIoUsage Id="81589773-1ef0-4292-8949-a4682bb42b54" sdsId="164" channelId="1" functionId="1879113985" />
|
<aliasDeviceIoUsage Id="49f11b54-a7e5-4951-84be-02471e540c98" sdsId="164" channelId="1" functionId="1879113985" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="3f9ac284-b8e5-4b17-99a8-8c0a9a1ef439">
|
<variableUsagesHasUsages Id="47ebde49-6530-41c5-a876-470a81c5aa5e">
|
||||||
<aliasDeviceIoUsage Id="4c2ae005-0e50-4b01-98f3-ab4d48afeec3" sdsId="164" channelId="2" functionId="1879114241" />
|
<aliasDeviceIoUsage Id="5337c456-4a57-44fe-b78d-a49b43a042ea" sdsId="164" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="9d83b3cf-9022-4cc7-843c-8d919cc8ead1">
|
<variableUsagesHasUsages Id="d9ae5440-b589-4e92-94dc-f6f7d1b69707">
|
||||||
<aliasDeviceIoUsage Id="7109bc36-596b-40cf-8760-16b2e504a7f9" sdsId="197" channelId="2" functionId="1879114241" />
|
<aliasDeviceIoUsage Id="ba342559-cc4c-45e1-bd0f-ba7156f64bd2" sdsId="197" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="f98eb314-7a85-45b0-99a2-86f164764824">
|
<variableUsagesHasUsages Id="bf47cf66-ccc5-4c7d-9964-aabd6466b3e4">
|
||||||
<aliasDeviceIoUsage Id="b1b6abdb-d95c-4cad-982b-b7843760ce2b" sdsId="157" channelId="1" functionId="1131179972" />
|
<aliasDeviceIoUsage Id="cc36c3b4-c364-423d-9978-bff2fabfc24c" sdsId="157" channelId="1" functionId="1131179972" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="290538af-70de-4299-8b10-97fc4bba50e5">
|
<variableUsagesHasUsages Id="a5a6f4f9-ee7e-405e-a5da-bd85eb13635e">
|
||||||
<aliasDeviceIoUsage Id="fbb23e98-99fe-4672-a5d8-b4bdaef85833" sdsId="161" channelId="1" functionId="1879113985" />
|
<aliasDeviceIoUsage Id="525ab9bf-fa84-4ba8-8bcd-ede4a22de9bf" sdsId="155" channelId="1" functionId="1879113985" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="6b3f0bff-5982-4c0f-9a01-c6ef2d736368">
|
<variableUsagesHasUsages Id="02377bcb-afc6-44f9-a3c6-e34d5f0dd337">
|
||||||
<aliasDeviceIoUsage Id="1459c0a4-dc9e-4238-ae14-0aa7ed6fb4e9" sdsId="161" channelId="2" functionId="1879114241" />
|
<aliasDeviceIoUsage Id="3c41d4e1-0f9c-4066-8c09-70769c877835" sdsId="155" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="5595b72e-fe47-4980-b029-5183284ac496">
|
<variableUsagesHasUsages Id="9faefda8-0bae-4d0d-8d9c-902b8e1c1a33">
|
||||||
<aliasDeviceIoUsage Id="dc348f25-bcb0-4a4c-830e-7cd68acd6e04" sdsId="185" channelId="2" functionId="1879179777" />
|
<aliasDeviceIoUsage Id="b07c2ae5-6f1f-47a1-9c8d-c1c3b8963b11" sdsId="161" channelId="1" functionId="1879113985" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="63d4e7ef-704e-478d-a4ce-e8ad7bfd5a12">
|
<variableUsagesHasUsages Id="ba8bc3bf-d3bb-4606-8613-0da9a8288500">
|
||||||
<aliasDeviceIoUsage Id="1f37d907-f800-451c-b77d-fef369a495d9" sdsId="185" channelId="5" functionId="1879180545" />
|
<aliasDeviceIoUsage Id="eacd0814-2157-4d22-ae81-8c8f9b2d2e47" sdsId="161" channelId="2" functionId="1879114241" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="7d50c4df-9fa0-49e1-a06f-bd5ed3ba1f5a">
|
<variableUsagesHasUsages Id="bbfff957-0b01-4c30-88ee-5b626cc4d9bc">
|
||||||
<aliasDeviceIoUsage Id="28d597e1-7ba5-4956-9e67-0af68e649796" sdsId="185" channelId="6" functionId="1879180801" />
|
<aliasDeviceIoUsage Id="61705c82-9d3f-4d05-87b5-c236c79c403a" sdsId="185" channelId="2" functionId="1879179777" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="0913dc38-7c7e-4b6e-9a02-dd09655d8b0c">
|
<variableUsagesHasUsages Id="bfbf10b9-7e4d-4d2c-9924-205129ddce85">
|
||||||
<aliasDeviceIoUsage Id="09385227-d92d-4f0e-9b8a-98333c000156" sdsId="185" channelId="10" functionId="1879181825" />
|
<aliasDeviceIoUsage Id="f4303e49-c5f7-41b3-945e-f654e152b5fe" sdsId="185" channelId="5" functionId="1879180545" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="ce067add-ad98-4a1b-a15e-bebde0ac5ec5">
|
<variableUsagesHasUsages Id="60fffe57-85d2-4675-886b-a40e3335439a">
|
||||||
<aliasDeviceIoUsage Id="e035ff09-36a2-40d2-91b8-671565f60f5b" sdsId="171" channelId="1" functionId="1715470337" />
|
<aliasDeviceIoUsage Id="e70d31a3-0732-40f5-be2f-b49c81b0c790" sdsId="185" channelId="6" functionId="1879180801" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
<variableUsagesHasUsages Id="4fcbf156-7b21-4446-84c7-75939d8909fb">
|
<variableUsagesHasUsages Id="01ac2a5a-23a3-4763-9300-a2ecc319d910">
|
||||||
<aliasDeviceIoUsage Id="23150484-fe13-450a-bde1-64423a717cb4" sdsId="171" channelId="17" functionId="1849688065" />
|
<aliasDeviceIoUsage Id="72e1813f-4ab0-4420-a585-1aa11c9995f5" sdsId="185" channelId="10" functionId="1879181825" />
|
||||||
|
</variableUsagesHasUsages>
|
||||||
|
<variableUsagesHasUsages Id="86d2f510-9a40-4614-8f4b-c592c827e263">
|
||||||
|
<aliasDeviceIoUsage Id="92ba40c0-40c2-42aa-b4fa-457d4eed03aa" sdsId="171" channelId="1" functionId="1715470337" />
|
||||||
|
</variableUsagesHasUsages>
|
||||||
|
<variableUsagesHasUsages Id="f2d19318-6af3-4288-8c99-795d181e3ba9">
|
||||||
|
<aliasDeviceIoUsage Id="743c99fc-f4a0-4f33-a7fa-feaa2a430b98" sdsId="171" channelId="17" functionId="1849688065" />
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
</usages>
|
</usages>
|
||||||
</variableUsages>
|
</variableUsages>
|
||||||
@@ -4486,14 +4492,8 @@
|
|||||||
<variableHasTargetUsages Id="ed5bf127-97e7-4125-b75a-9add883ed4b0">
|
<variableHasTargetUsages Id="ed5bf127-97e7-4125-b75a-9add883ed4b0">
|
||||||
<variableUsages Id="1b241d71-c95a-4e26-9390-a1824554d88f">
|
<variableUsages Id="1b241d71-c95a-4e26-9390-a1824554d88f">
|
||||||
<usages>
|
<usages>
|
||||||
<variableUsagesHasUsages Id="2bd69f3f-b7ad-436a-8670-253e74472c47">
|
<variableUsagesHasUsages Id="5d0b0fc3-2f30-4ae8-aa62-15ed1edfa2d6">
|
||||||
<aliasDeviceIoUsage Id="b97b5572-2553-4020-80f6-0c283f7fb15f" sdsId="197" channelId="1" functionId="1879113985" />
|
<aliasDeviceIoUsage Id="c90624b9-d621-4d02-92d7-4363e20065eb" sdsId="197" channelId="1" functionId="1879113985" />
|
||||||
</variableUsagesHasUsages>
|
|
||||||
<variableUsagesHasUsages Id="26659601-d7c9-43aa-bb42-c5f15e4a51bb">
|
|
||||||
<aliasDeviceIoUsage Id="fe1ec7cc-002f-4ee7-b51e-ae461202bb9b" sdsId="155" channelId="1" functionId="1879113985" />
|
|
||||||
</variableUsagesHasUsages>
|
|
||||||
<variableUsagesHasUsages Id="0caaca75-b4a8-4083-b5dd-f3896e59eea9">
|
|
||||||
<aliasDeviceIoUsage Id="cced0dc1-5cda-4250-8b03-96ce96aec1fb" sdsId="155" channelId="2" functionId="1879114241" />
|
|
||||||
</variableUsagesHasUsages>
|
</variableUsagesHasUsages>
|
||||||
</usages>
|
</usages>
|
||||||
</variableUsages>
|
</variableUsages>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1952
_Config/IO/Device 2 (Profinet Controller)/vs-0001.xti
Normal file
1952
_Config/IO/Device 2 (Profinet Controller)/vs-0001.xti
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
<?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="CNcSafTaskDef" SubType="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="CNcSafTaskDef" SubType="0">
|
||||||
<DataTypes>
|
<DataTypes>
|
||||||
<DataType>
|
<DataType>
|
||||||
<Name GUID="{18071995-0000-0000-0000-000000000035}" TcBaseType="true" HideType="true">UINTARR2</Name>
|
<Name GUID="{18071995-0000-0000-0000-000000000035}" TcBaseType="true" HideType="true">UINTARR2</Name>
|
||||||
@@ -1440,7 +1440,7 @@ External Setpoint Generation:
|
|||||||
<SvbTask Priority="8" CycleTime="100000" AmsPort="511">
|
<SvbTask Priority="8" CycleTime="100000" AmsPort="511">
|
||||||
<Name>NC-Task 1 SVB</Name>
|
<Name>NC-Task 1 SVB</Name>
|
||||||
</SvbTask>
|
</SvbTask>
|
||||||
<Axis Id="1" CreateSymbols="true" AxisType="1" SimulationMode="true">
|
<Axis Id="1" CreateSymbols="true" AxisType="1">
|
||||||
<Name>Etcher1Chuck</Name>
|
<Name>Etcher1Chuck</Name>
|
||||||
<AxisPara>
|
<AxisPara>
|
||||||
<General UnitName="°" UnitFlags="#x00000004"/>
|
<General UnitName="°" UnitFlags="#x00000004"/>
|
||||||
@@ -1729,7 +1729,7 @@ External Setpoint Generation:
|
|||||||
</Var>
|
</Var>
|
||||||
</Vars>
|
</Vars>
|
||||||
</Axis>
|
</Axis>
|
||||||
<Axis Id="2" CreateSymbols="true" AxisType="1" SimulationMode="true" GroupId="3">
|
<Axis Id="2" CreateSymbols="true" AxisType="1" GroupId="3">
|
||||||
<Name>Etcher2Chuck</Name>
|
<Name>Etcher2Chuck</Name>
|
||||||
<AxisPara>
|
<AxisPara>
|
||||||
<General UnitName="°" UnitFlags="#x00000004"/>
|
<General UnitName="°" UnitFlags="#x00000004"/>
|
||||||
@@ -2450,13 +2450,12 @@ External Setpoint Generation:
|
|||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="AT 1^Drive status word" Size="8" OffsB="8"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="AT 1^Drive status word" Size="8" OffsB="8"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState2" VarB="AT 1^Drive status word" Size="8"/>
|
<Link VarA="Drive^Inputs^In^nState2" VarB="AT 1^Drive status word" Size="8"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^WcState" Size="1"/>
|
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
||||||
<Link VarA="Drive^Outputs^Out^nCtrl1" VarB="MDT 1^Master control word" Size="8" OffsB="8"/>
|
<Link VarA="Drive^Outputs^Out^nCtrl1" VarB="MDT 1^Master control word" Size="8" OffsB="8"/>
|
||||||
<Link VarA="Drive^Outputs^Out^nDataOut1" VarB="MDT 1^Position command value"/>
|
<Link VarA="Drive^Outputs^Out^nDataOut1" VarB="MDT 1^Position command value"/>
|
||||||
<Link VarA="Enc^Inputs^In^nDataIn1" VarB="AT 1^Position feedback 1 value"/>
|
<Link VarA="Enc^Inputs^In^nDataIn1" VarB="AT 1^Position feedback 1 value"/>
|
||||||
<Link VarA="Enc^Inputs^In^nDcInputTime" VarB="InfoData^DcInputShift"/>
|
<Link VarA="Enc^Inputs^In^nDcInputTime" VarB="InfoData^DcInputShift"/>
|
||||||
<Link VarA="Enc^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
<Link VarA="Enc^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
||||||
<Link VarA="Enc^Inputs^In^nState4" VarB="WcState^WcState" Size="1"/>
|
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
<OwnerA Name="Axes^Etcher2BSR">
|
<OwnerA Name="Axes^Etcher2BSR">
|
||||||
@@ -2483,13 +2482,12 @@ External Setpoint Generation:
|
|||||||
<Link VarA="Drive^Inputs^In^nState1" VarB="AT 2^Drive status word" Size="8" OffsB="8"/>
|
<Link VarA="Drive^Inputs^In^nState1" VarB="AT 2^Drive status word" Size="8" OffsB="8"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState2" VarB="AT 2^Drive status word" Size="8"/>
|
<Link VarA="Drive^Inputs^In^nState2" VarB="AT 2^Drive status word" Size="8"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
||||||
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^WcState" Size="1"/>
|
<Link VarA="Drive^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
||||||
<Link VarA="Drive^Outputs^Out^nCtrl1" VarB="MDT 2^Master control word" Size="8" OffsB="8"/>
|
<Link VarA="Drive^Outputs^Out^nCtrl1" VarB="MDT 2^Master control word" Size="8" OffsB="8"/>
|
||||||
<Link VarA="Drive^Outputs^Out^nDataOut1" VarB="MDT 2^Position command value"/>
|
<Link VarA="Drive^Outputs^Out^nDataOut1" VarB="MDT 2^Position command value"/>
|
||||||
<Link VarA="Enc^Inputs^In^nDataIn1" VarB="AT 2^Position feedback 1 value"/>
|
<Link VarA="Enc^Inputs^In^nDataIn1" VarB="AT 2^Position feedback 1 value"/>
|
||||||
<Link VarA="Enc^Inputs^In^nDcInputTime" VarB="InfoData^DcInputShift"/>
|
<Link VarA="Enc^Inputs^In^nDcInputTime" VarB="InfoData^DcInputShift"/>
|
||||||
<Link VarA="Enc^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
<Link VarA="Enc^Inputs^In^nState4" VarB="WcState^InputToggle" Size="1" OffsA="1"/>
|
||||||
<Link VarA="Enc^Inputs^In^nState4" VarB="WcState^WcState" Size="1"/>
|
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
</Mappings>
|
</Mappings>
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" XtvPath="PLC\PLC Instance.xtv" TmcPath="PLC\PLC.tmc">
|
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" XtvPath="PLC\PLC Instance.xtv" TmcPath="PLC\PLC.tmc">
|
||||||
<Name>__FILENAME__</Name>
|
<Name>__FILENAME__</Name>
|
||||||
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
|
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
|
||||||
|
<UnrestoredVarLinks ImportTime="2026-02-01T12:34:23">
|
||||||
|
<OwnerA Name="OutputSrc" Prefix="TIPC^PLC^PLC Instance" Type="2">
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
|
||||||
|
<Link VarA="PRG_Main._fbEtcher2._xCloseDoor" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[1]" Size="1" RestoreInfo="ANotFound"/>
|
||||||
|
<Link VarA="PRG_Main._fbEtcher2._xOpenDoor" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[0]" Size="1" RestoreInfo="ANotFound"/>
|
||||||
|
</OwnerB>
|
||||||
|
</OwnerA>
|
||||||
|
</UnrestoredVarLinks>
|
||||||
<Contexts>
|
<Contexts>
|
||||||
<Context>
|
<Context>
|
||||||
<Id>0</Id>
|
<Id>0</Id>
|
||||||
@@ -26,6 +34,60 @@
|
|||||||
<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)^HP (EK1100)^Term 47 (EL2004)">
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate._xEnableHotplate" VarB="Channel 1^HotplateControl" Size="1"/>
|
||||||
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 48 (EL3202)">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbHeatingPlate._fbTempSensor.iAnalogValue" VarB="RTD Inputs Channel 1^HOTPLATE_CurrentTemp"/>
|
||||||
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 49 (EL6021)">
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[0]" VarB="COM TxPDO-Map Inputs^Data In 0"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[10]" VarB="COM TxPDO-Map Inputs^Data In 10"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[11]" VarB="COM TxPDO-Map Inputs^Data In 11"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[12]" VarB="COM TxPDO-Map Inputs^Data In 12"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[13]" VarB="COM TxPDO-Map Inputs^Data In 13"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[14]" VarB="COM TxPDO-Map Inputs^Data In 14"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[15]" VarB="COM TxPDO-Map Inputs^Data In 15"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[16]" VarB="COM TxPDO-Map Inputs^Data In 16"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[17]" VarB="COM TxPDO-Map Inputs^Data In 17"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[18]" VarB="COM TxPDO-Map Inputs^Data In 18"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[19]" VarB="COM TxPDO-Map Inputs^Data In 19"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[1]" VarB="COM TxPDO-Map Inputs^Data In 1"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[20]" VarB="COM TxPDO-Map Inputs^Data In 20"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[21]" VarB="COM TxPDO-Map Inputs^Data In 21"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[2]" VarB="COM TxPDO-Map Inputs^Data In 2"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[3]" VarB="COM TxPDO-Map Inputs^Data In 3"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[4]" VarB="COM TxPDO-Map Inputs^Data In 4"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[5]" VarB="COM TxPDO-Map Inputs^Data In 5"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[6]" VarB="COM TxPDO-Map Inputs^Data In 6"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[7]" VarB="COM TxPDO-Map Inputs^Data In 7"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[8]" VarB="COM TxPDO-Map Inputs^Data In 8"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataIn[9]" VarB="COM TxPDO-Map Inputs^Data In 9"/>
|
||||||
|
<Link VarA="PlcTask Inputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._stStatus" VarB="COM TxPDO-Map Inputs^Status"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[0]" VarB="COM RxPDO-Map Outputs^Data Out 0"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[10]" VarB="COM RxPDO-Map Outputs^Data Out 10"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[11]" VarB="COM RxPDO-Map Outputs^Data Out 11"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[12]" VarB="COM RxPDO-Map Outputs^Data Out 12"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[13]" VarB="COM RxPDO-Map Outputs^Data Out 13"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[14]" VarB="COM RxPDO-Map Outputs^Data Out 14"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[15]" VarB="COM RxPDO-Map Outputs^Data Out 15"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[16]" VarB="COM RxPDO-Map Outputs^Data Out 16"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[17]" VarB="COM RxPDO-Map Outputs^Data Out 17"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[18]" VarB="COM RxPDO-Map Outputs^Data Out 18"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[19]" VarB="COM RxPDO-Map Outputs^Data Out 19"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[1]" VarB="COM RxPDO-Map Outputs^Data Out 1"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[20]" VarB="COM RxPDO-Map Outputs^Data Out 20"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[21]" VarB="COM RxPDO-Map Outputs^Data Out 21"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[2]" VarB="COM RxPDO-Map Outputs^Data Out 2"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[3]" VarB="COM RxPDO-Map Outputs^Data Out 3"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[4]" VarB="COM RxPDO-Map Outputs^Data Out 4"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[5]" VarB="COM RxPDO-Map Outputs^Data Out 5"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[6]" VarB="COM RxPDO-Map Outputs^Data Out 6"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[7]" VarB="COM RxPDO-Map Outputs^Data Out 7"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[8]" VarB="COM RxPDO-Map Outputs^Data Out 8"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._byDataOut[9]" VarB="COM RxPDO-Map Outputs^Data Out 9"/>
|
||||||
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHeatCoolPlates._fbCoolPlate._stCtrl" VarB="COM RxPDO-Map Outputs^Ctrl"/>
|
||||||
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL07 (EL2008)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL07 (EL2008)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseChamber1" VarB="Channel 6^HV Hot_CloseChamber" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseChamber1" VarB="Channel 6^HV Hot_CloseChamber" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseChamber2" VarB="Channel 3^HV Cold_CloseChamber" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTester._xCloseChamber2" VarB="Channel 3^HV Cold_CloseChamber" Size="1"/>
|
||||||
@@ -35,19 +97,44 @@
|
|||||||
<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)^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)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._xCloseDoor" VarB="Byte 0^Output[1]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbClampingBack.xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._xOpenDoor" VarB="Byte 0^Output[0]" 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.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
|
||||||
|
</OwnerB>
|
||||||
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_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._fbClampingBack.xOpenFeedback" VarB="Channel 7^Clamping fixture back opened" 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._fbClampingFront.xOpenFeedback" VarB="Channel 5^Clamping fixture in front opened" 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._fbClampingLeft.xOpenFeedback" VarB="Channel 1^Clamping fixture left opened" 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._fbClampingRight.xOpenFeedback" VarB="Channel 3^Clamping fixture right opened" Size="1"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_QM01 (EX260-SEC1)">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_QM01 (EX260-SEC1)">
|
||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._xCloseDoor" 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._xOpenDoor" VarB="Byte 0^Output[0]" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" 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"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Safety._xErrorAck" VarB="StandardOutputs^Standard In Var 212" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Safety._xErrorAck" VarB="StandardOutputs^Standard In Var 212" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Safety._xLockDoor" VarB="StandardOutputs^Standard In Var 192" Size="1"/>
|
<Link VarA="PlcTask Outputs^PRG_Safety._xLockDoor" VarB="StandardOutputs^Standard In Var 192" Size="1"/>
|
||||||
<Link VarA="PlcTask Outputs^PRG_Safety._xRun" VarB="StandardOutputs^Standard In Var 9" Size="1"/>
|
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^RobotMain">
|
<OwnerB Name="TIID^Device 1 (EtherCAT)^RobotMain">
|
||||||
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._abMirrorToolsAndPositions" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 4 (Greifer/Drehteller/Positionen)"/>
|
<Link VarA="PlcTask Inputs^PRG_Main._fbRobot._abMirrorToolsAndPositions" VarB="Module 3 (Default IO)^Std. In (64 Bytes)^Input DWORD 4 (Greifer/Drehteller/Positionen)"/>
|
||||||
@@ -68,6 +155,7 @@
|
|||||||
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._uJobs" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 1 (JobNr/PLCJobNr)"/>
|
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot._uJobs" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 1 (JobNr/PLCJobNr)"/>
|
||||||
</OwnerB>
|
</OwnerB>
|
||||||
<OwnerB Name="TIID^Device 2 (Profinet Controller)^vs-0001">
|
<OwnerB Name="TIID^Device 2 (Profinet Controller)^vs-0001">
|
||||||
|
<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>
|
||||||
</OwnerA>
|
</OwnerA>
|
||||||
|
|||||||
Reference in New Issue
Block a user