Relinked everything with HAL and Execute pattern

- Switched to BaseConponents V2.0
This commit is contained in:
2026-03-19 19:40:01 +01:00
parent b515ca8588
commit eb2317ad91
25 changed files with 3558 additions and 2721 deletions

View File

@@ -41,13 +41,13 @@
</Io>
</Project>
<Mappings>
<MappingInfo Identifier="{00000000-2001-0850-0020-500840000403}" Id="#x02030080"/>
<MappingInfo Identifier="{00000000-2001-0850-0020-500840000403}" Id="#x02030050"/>
<MappingInfo Identifier="{00000000-2001-0850-0020-500851000403}" Id="#x02030040"/>
<MappingInfo Identifier="{00000000-2001-0850-0020-500890000403}" Id="#x02030060"/>
<MappingInfo Identifier="{00000000-2001-0850-0020-5008B0000403}" Id="#x02030050"/>
<MappingInfo Identifier="{00000000-2001-0850-0020-500890000403}" Id="#x02030070"/>
<MappingInfo Identifier="{00000000-2001-0850-0020-5008B0000403}" Id="#x02030060"/>
<MappingInfo Identifier="{00000000-0010-0304-3000-040310000403}" Id="#x02030010"/>
<MappingInfo Identifier="{00000000-0020-0304-3000-040322000403}" Id="#x02030030"/>
<MappingInfo Identifier="{05000010-2001-0850-3000-040300205008}" Id="#x02030070" Watchdog="10000000040000000400000004000000"/>
<MappingInfo Identifier="{05000010-2001-0850-3000-040300205008}" Id="#x02030080" Watchdog="10000000040000000400000004000000"/>
<MappingInfo Identifier="{03040050-0050-0304-5000-040350000403}" Id="#x02030020" Watchdog="04000000040000000400000004000000"/>
</Mappings>
</TcSmProject>

View File

@@ -19,6 +19,7 @@ VAR
_fbHVTesterHot : FB_HVTester;
_fbHVTesterCold : FB_HVTester;
_fbMediaCabinet : FB_MediaCabinet;
_fbNOK : FB_NOK;
_fbModbusMaster : FB_ModbusMaster;
_fbFlowSensor : FB_Levi_LFC6IO;
@@ -83,15 +84,24 @@ IF _stRobotCmd.xCmdChangeRequest THEN
_stRobotCmd.xCmdChangeRequest := FALSE;
END_IF
_fbHVTesterHot(xOpenChambers:= GVL_SCADA.xOpenAllChambers, stHMIInterface := GVL_SCADA.stMachine.stHVTesterHot);
_fbHVTesterHot(
xConfirmAlarms := GVL_SCADA.stMachine.stConfirmAlarmsBtn.xRequest,
xOpenChambers:= GVL_SCADA.xOpenAllChambers,
stIO := GVL_IO.stHVTesterWarm,
stHMIInterface := GVL_SCADA.stMachine.stHVTesterHot);
_fbHVTesterCold(xOpenChambers:= GVL_SCADA.xOpenAllChambers, stHMIInterface := GVL_SCADA.stMachine.stHVTesterCold);
_fbHVTesterCold(
xConfirmAlarms := GVL_SCADA.stMachine.stConfirmAlarmsBtn.xRequest,
xOpenChambers:= GVL_SCADA.xOpenAllChambers,
stIO := GVL_IO.stHVTesterCold,
stHMIInterface := GVL_SCADA.stMachine.stHVTesterCold);
_fbEtcher1(
xOpenDoor:= GVL_SCADA.xOpenAllChambers,
xOpenChuckClamp := GVL_SCADA.xOpenChuckClampEtcher1,
xReleaseAlarms := _xReleaseAlarms,
xConfirmAlarms := GVL_SCADA.stMachine.stConfirmAlarmsBtn.xRequest,
stIO := GVL_IO.stEtcher1,
stHMIInterface := GVL_SCADA.stMachine.stEtcher1);
_fbEtcher2(
@@ -99,6 +109,7 @@ _fbEtcher2(
xOpenChuckClamp := GVL_SCADA.xOpenChuckClampEtcher2,
xReleaseAlarms := _xReleaseAlarms,
xConfirmAlarms := GVL_SCADA.stMachine.stConfirmAlarmsBtn.xRequest,
stIO := GVL_IO.stEtcher2,
stHMIInterface := GVL_SCADA.stMachine.stEtcher2);
_fbTrayFeederInput(
@@ -120,17 +131,29 @@ _fbTrayFeederOutput(
// stAdmin=> GVL_SCADA.stTRayFeederInputAdmin,
// stHMIInterface := GVL_SCADA.stMachine.stTrayFeederOut);
_fbHotplate(stHMIInterface := GVL_SCADA.stMachine.stHotplate);
_fbHotplate(
stIO := GVL_IO.stHotplate,
stHMIInterface := GVL_SCADA.stMachine.stHotplate);
_fbCoolplate(stHMIInterface := GVL_SCADA.stMachine.stCoolplate);
_fbCoolplate(
stIO := GVL_IO.stCoolplate,
stHMIInterface := GVL_SCADA.stMachine.stCoolplate);
_fbAligner(stCommand:= , stStatus=> , stAdmin=> , xConfirmAlarms:= GVL_SCADA.stMachine.stConfirmAlarmsBtn.xRequest, stHMIInterface := GVL_SCADA.stMachine.stAligner);
_fbAligner(
xConfirmAlarms:= GVL_SCADA.stMachine.stConfirmAlarmsBtn.xRequest,
stIO := GVL_IO.stAligner,
stHMIInterface := GVL_SCADA.stMachine.stAligner);
_fbMediaCabinet(
xReleaseErrors := _xReleaseAlarms,
xConfirmAlarms := GVL_SCADA.stMachine.stConfirmAlarmsBtn.xRequest,
stIO := GVL_IO.stMediaCabinet,
stHMIInterface := GVL_SCADA.stMachine.stMediaCabinet);
_fbNOK(
stIO:= GVL_IO.stNOK,
stHMIInterface:= GVL_SCADA.stMachine.stNOK);
// Call safety program
PRG_Safety(

View File

@@ -3,6 +3,10 @@
<DUT Name="ST_Aligner_IO" Id="{2573b629-32bc-4e57-b75e-bbc93eacf509}">
<Declaration><![CDATA[TYPE ST_Aligner_IO :
STRUCT
stAxisX : ST_AxisPTP_IO;
stAxisY : ST_AxisPTP_IO;
stValveVacuum : ST_Valve_IO;
i_xVacuumOk AT %I* : BOOL;
i_diXOffset AT %I* : DINT;

View File

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

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_Coolplate_IO" Id="{6e5914f9-2f5a-48bf-9a44-dda258457318}">
<Declaration><![CDATA[TYPE ST_Coolplate_IO :
STRUCT
// Card inputs
i_stStatus AT %I* : ST_SerialStatus;
i_abyDataIn AT %I* : ARRAY[0..21] OF BYTE;
stTempSensor : ST_AnalogInput_IO;
// Card outputs
o_stCtrl AT %Q* : ST_SerialCrl;
o_abyDataOut AT %Q* : ARRAY[0..21] OF BYTE;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -8,17 +8,10 @@ END_VAR
VAR_OUTPUT
END_VAR
VAR_IN_OUT
stIO : ST_Coolplate_IO;
stHMIInterface : ST_HMI_Coolplate;
END_VAR
VAR
// Card inputs
stStatus AT %I* : ST_SerialStatus;
abyDataIn AT %I* : ARRAY[0..21] OF BYTE;
// Card outputs
stCtrl AT %Q* : ST_SerialCrl;
abyDataOut AT %Q* : ARRAY[0..21] OF BYTE;
_fbTempSensor : FB_AnalogInput('');
// Internal temp setpoint
@@ -47,21 +40,21 @@ END_IF
// Init card on first run
IF _xInit THEN
_xInit := FALSE;
stCtrl.bInitRequest := 1;
stIO.o_stCtrl.bInitRequest := 1;
END_IF
IF stStatus.bInitAccepted THEN
stCtrl.bInitRequest := 0;
IF stIO.i_stStatus.bInitAccepted THEN
stIO.o_stCtrl.bInitRequest := 0;
END_IF
// Send
IF _xSend THEN
_xSend := FALSE;
stCtrl.bTransmitRequest := 1;
stIO.o_stCtrl.bTransmitRequest := 1;
END_IF
IF stStatus.bTransmitAccepted THEN
stCtrl.bTransmitRequest := 0;
IF stIO.i_stStatus.bTransmitAccepted THEN
stIO.o_stCtrl.bTransmitRequest := 0;
END_IF
IF stHMIInterface.stSetSetpointBtn.xRequest THEN
@@ -99,7 +92,7 @@ END_IF
// Calculate sum
{analysis -81}
FOR _uiCounter := uiStartIndex TO uiEndIndex DO
_dwChecksum := _dwChecksum + abyDataOut[_uiCounter];
_dwChecksum := _dwChecksum + stIO.o_abyDataOut[_uiCounter];
END_FOR
{analysis +81}
@@ -130,23 +123,23 @@ END_VAR
_dwTemp := REAL_TO_DWORD(rTemp * 10 )*10;
_sTemp := DWORD_TO_STRING(_dwTemp);
abyDataOut[0] := 16#02; // STX
abyDataOut[1] := 16#31; // Command code
abyDataOut[2] := _sTemp[0];
abyDataOut[3] := _sTemp[1];
abyDataOut[4] := _sTemp[2];
abyDataOut[5] := _sTemp[3];
abyDataOut[6] := 16#03; // ETX
stIO.o_abyDataOut[0] := 16#02; // STX
stIO.o_abyDataOut[1] := 16#31; // Command code
stIO.o_abyDataOut[2] := _sTemp[0];
stIO.o_abyDataOut[3] := _sTemp[1];
stIO.o_abyDataOut[4] := _sTemp[2];
stIO.o_abyDataOut[5] := _sTemp[3];
stIO.o_abyDataOut[6] := 16#03; // ETX
M_CalcChecksum(
uiStartIndex:= 1,
uiEndIndex:= 5,
byHigh=> abyDataOut[7],
byLow=> abyDataOut[8]);
byHigh=> stIO.o_abyDataOut[7],
byLow=> stIO.o_abyDataOut[8]);
abyDataOut[9] := 16#0D; // <CR>
stIO.o_abyDataOut[9] := 16#0D; // <CR>
stCtrl.byOutputLength := 10;]]></ST>
stIO.o_stCtrl.byOutputLength := 10;]]></ST>
</Implementation>
</Method>
</POU>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_Etcher_IO" Id="{64179608-1e4c-4f28-bd46-cef8b5e3e1d0}">
<Declaration><![CDATA[TYPE ST_Etcher_IO :
STRUCT
stAxisSpinner : ST_AxisPTP_IO;
stValveDoor : ST_Valve_IO;
stValveVacuum : ST_Valve_IO;
stValveUnlockLeft : ST_Valve_IO;
stValveUnlockRight : ST_Valve_IO;
stValveEjectFront : ST_Valve_IO;
stValveEjectBack : ST_Valve_IO;
stValveFilmetch : ST_Valve_IO;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -16,6 +16,7 @@ VAR_OUTPUT
xVacuumEnabled : BOOL;
END_VAR
VAR_IN_OUT
stIO : ST_Etcher_IO;
stHMIInterface : ST_HMI_Etcher;
END_VAR
VAR
@@ -92,7 +93,6 @@ VAR
// Debug
_iState : INT;
_xEnableSpinner : BOOL;
_lrSpinnerVelo : LREAL := 36.0;
_xAllCompRetracted : BOOL;
_xChuckRemoved : BOOL;
@@ -107,6 +107,7 @@ _fbValveDoor(
stValveConfig:= _stValveDoorCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveDoor,
stHMIInterface:= stHMIInterface.stDoorValve);
@@ -127,6 +128,7 @@ _fbValveVacuum(
stValveConfig:= _stValveVacuumConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveVacuum,
stHMIInterface:= stHMIInterface.stVacuumValve);
_fbUnlockLeft(
@@ -135,6 +137,7 @@ _fbUnlockLeft(
stValveConfig:= _stValveUnlockLeftCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveUnlockLeft,
stHMIInterface:= stHMIInterface.stChuckUnlockLeft);
_fbUnlockRight(
@@ -143,6 +146,7 @@ _fbUnlockRight(
stValveConfig:= _stValveUnlockRightCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveUnlockRight,
stHMIInterface:= stHMIInterface.stChuckUnlockRight);
_fbEjectFront(
@@ -151,6 +155,7 @@ _fbEjectFront(
stValveConfig:= _stValveClampingFrontCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveEjectFront,
stHMIInterface:= stHMIInterface.stChuckEjectFront);
_fbEjectBack(
@@ -159,17 +164,18 @@ _fbEjectBack(
stValveConfig:= _stValveEjectBackCfg,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveEjectBack,
stHMIInterface:= stHMIInterface.stChuckEjectBack);
_xAllCompRetracted := _fbUnlockLeft.IsClosed AND _fbUnlockRight.IsClosed AND _fbEjectFront.IsClosed AND _fbEjectBack.IsClosed;
_fbSpinner(
xEnable:= _xEnableSpinner,
xEnablePositive:= _xEnableSpinner AND _xAllCompRetracted,
xEnableNegative:= _xEnableSpinner AND _xAllCompRetracted,
xEnablePositive:= _xAllCompRetracted,
xEnableNegative:= _xAllCompRetracted,
rOverride:= 100.0,
lrVelocity:= _lrSpinnerVelo,
xConfirmAlarms:= xConfirmAlarms);
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stAxisSpinner);
_fbRobot(stPackMLHMIInterface := stHMIInterface.stMecaCmds);
@@ -178,6 +184,7 @@ _fbValveEnableFilmetch(
stValveConfig:= _stValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms := xConfirmAlarms,
stIO := stIO.stValveFilmetch,
stHMIInterface:= stHMIInterface.stValveFilmetch);
// Call base sm
@@ -200,16 +207,42 @@ CASE _iState OF
// Enable spinner
5:
_xEnableSpinner := TRUE;
IF _fbSpinner.xEnabled THEN
CASE _fbSpinner.M_Enable() OF
E_CmdResult.ACCEPTED:
_iState := 6;
E_CmdResult.BUSY:
;
E_CmdResult.REJECTED,
E_CmdResult.ERROR:
_iState := 900;
END_CASE
// Wait for spinner to be enabled
6:
IF _fbSpinner.xDone THEN
_iState := 7;
END_IF
IF _fbSpinner.xError THEN
_iState := 900;
END_IF
// Start moving to zero position
6:
_fbSpinner.M_MoveModulo(lrTargetPos := 0.0, eMoveDirection := BC.MC_Direction.MC_Shortest_Way);
7:
CASE _fbSpinner.M_MoveModulo(lrTargetPos := 0.0, eMoveDirection := BC.MC_Direction.MC_Shortest_Way) OF
E_CmdResult.ACCEPTED:
_iState := 11;
E_CmdResult.BUSY:
;
E_CmdResult.REJECTED,
E_CmdResult.ERROR:
_iState := 900;
END_CASE
// Move to zero position
11:
IF _fbSpinner.xDone THEN
@@ -222,17 +255,34 @@ CASE _iState OF
// Disable axis
12:
_xEnableSpinner := FALSE;
IF (NOT _fbSpinner.xEnabled) THEN
CASE _fbSpinner.M_Disable() OF
E_CmdResult.ACCEPTED:
_iState := 13;
E_CmdResult.BUSY:
;
E_CmdResult.REJECTED,
E_CmdResult.ERROR:
_iState := 900;
END_CASE
// Wait for spinner to be disabled
13:
IF _fbSpinner.xDone THEN
_iState := 14;
END_IF
IF _fbSpinner.xError THEN
_iState := 900;
END_IF
// Release clamping
13:
14:
_xOpenChuckClamp := TRUE;
IF _fbUnlockLeft.IsOpen AND _fbUnlockRight.IsOpen THEN
_iState := 14;
_iState := 15;
END_IF
IF _fbUnlockLeft.xError OR _fbUnlockRight.xError THEN
@@ -240,22 +290,10 @@ CASE _iState OF
END_IF
// Eject the cuck
14:
15:
_xEjectChuck := TRUE;
IF _fbEjectFront.IsOpen AND _fbEjectBack.IsOpen THEN
_iState := 15;
END_IF
IF _fbEjectFront.xError OR _fbEjectBack.xError THEN
_iState := 900;
END_IF
// Retract ejectors
15:
_xEjectChuck := FALSE;
IF _fbEjectFront.IsClosed AND _fbEjectBack.IsClosed THEN
_iState := 16;
END_IF
@@ -263,15 +301,27 @@ CASE _iState OF
_iState := 900;
END_IF
// Wait for Chuck to be remove
// Retract ejectors
16:
IF _xChuckRemoved THEN
_xChuckRemoved := FALSE;
_xEjectChuck := FALSE;
IF _fbEjectFront.IsClosed AND _fbEjectBack.IsClosed THEN
_iState := 17;
END_IF
// Retract release pins
IF _fbEjectFront.xError OR _fbEjectBack.xError THEN
_iState := 900;
END_IF
// Wait for Chuck to be remove
17:
IF _xChuckRemoved THEN
_xChuckRemoved := FALSE;
_iState := 18;
END_IF
// Retract release pins
18:
_xOpenChuckClamp := FALSE;
IF _fbUnlockLeft.IsClosed AND _fbUnlockRight.IsClosed THEN

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_HVTester_IO" Id="{e4332098-37a5-407c-844f-9ed62f4ca4eb}">
<Declaration><![CDATA[TYPE ST_HVTester_IO :
STRUCT
stValveDoor : ST_Valve_IO;
stValveTestChamber : ST_Valve_IO;
stValveReleaseChamber : ST_Valve_IO;
i_xDoorCollisionDetectOk AT %I* : BOOL;
i_xVacuumOk AT %I* : BOOL;
i_xChamberFree AT %I* : BOOL;
i_xChamberNotFree AT %I* : BOOL;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -13,32 +13,46 @@ VAR_OUTPUT
xTestChamberOpen : BOOL;
END_VAR
VAR_IN_OUT
stIO : ST_HVTester_IO;
stHMIInterface : ST_HMI_HVTester;
END_VAR
VAR
_fbDoorValve : FB_Valve('Door');
_stDoorValveConfig : ST_ValveConfig;
_stDoorValveConfig : ST_ValveConfig := (xNormallyOpen := TRUE);
_fbTestChamberValve : FB_Valve('Chamber');
_stTestChamberValveConfig : ST_ValveConfig;
_fbReleaseChamberMovement : FB_Valve('Release Chamber');
_stReleaseValveConfig : ST_ValveConfig;
_xFirstCycle : BOOL := TRUE;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[_fbDoorValve(
<ST><![CDATA[IF _xFirstCycle THEN
_xFirstCycle := FALSE;
stHMIInterface.stDoorValve.stInterlock.asSafetyINTLKName[0] := 'Door collision sensor';
END_IF
_fbDoorValve.wSafetyINTLK.0 := stIO.i_xDoorCollisionDetectOk;
_fbDoorValve(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stDoorValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveDoor,
stHMIInterface:= stHMIInterface.stDoorValve);
_fbTestChamberValve(
xReleaseErrors:= xReleaseAlarms,
stValveConfig:= _stTestChamberValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveTestChamber,
stHMIInterface:= stHMIInterface.stTestChamberValve);
_fbReleaseChamberMovement(
@@ -47,6 +61,7 @@ _fbReleaseChamberMovement(
stValveConfig:= _stReleaseValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveReleaseChamber,
stHMIInterface:= stHMIInterface.stReleaseChamberValve);
// Call base sm
@@ -73,6 +88,10 @@ _stDoorValveConfig.xHasOpenFeedback := TRUE;
_stDoorValveConfig.xHasClosedFeedback := TRUE;
_stDoorValveConfig.timTimeoutOpen := T#10S;
_stDoorValveConfig.timTimeoutClose := T#10S;
_stDoorValveConfig.xNormallyOpen := TRUE;
// First safety interlock is the collision sensor
_fbDoorValve.wSafetyINTLKUsed.0 := 1;
// Test chamber valve config
_stTestChamberValveConfig.xHasOpenFeedback := TRUE;
@@ -81,6 +100,8 @@ _stTestChamberValveConfig.timTimeoutOpen := T#10S;
_stTestChamberValveConfig.timTimeoutClose := T#10S;
_stTestChamberValveConfig.xNormallyOpen := TRUE;
// Open test chamber normally after restart
_fbTestChamberValve.xAutomaticOpen := TRUE;
// Release valve config
_stReleaseValveConfig.xHasOpenFeedback := FALSE;

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_Hotplate_IO" Id="{9ecd375b-67b5-481a-abf5-608608737ea7}">
<Declaration><![CDATA[TYPE ST_Hotplate_IO :
STRUCT
stTempSensor : ST_AnalogInput_IO;
o_xEnableHotplate AT %Q* : BOOL;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -14,11 +14,10 @@ VAR_OUTPUT
uiNextReadySlot : UINT;
END_VAR
VAR_IN_OUT
stIO : ST_Hotplate_IO;
stHMIInterface : ST_HMI_Hotplate;
END_VAR
VAR
xEnableHotplate AT %Q* : BOOL;
// _axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
// _atonSlotTimer : ARRAY[0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF TON;
@@ -67,6 +66,7 @@ _fbTempSensor(
xReleaseLimitErrors:= FALSE,
xReleaseHardwareErrors:= TRUE,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTempSensor,
stHMIInterface=> stHMIInterface.stPV);
// For now get setpoint from HMI interface
@@ -87,7 +87,7 @@ _fbLimit(
_fbPWMOut(
timPeriod:= T#100MS,
xOutput=> xEnableHotplate);
xOutput=> stIO.o_xEnableHotplate);
SUPER^(stPackMLHMIInterface := stHMIInterface.stStationCmds);

View File

@@ -29,6 +29,8 @@ STRUCT
// (9) Filmetch
stTank9FilmetchIO : ST_Tank_IO;
stValveFilmetch : ST_Valve_IO;
END_STRUCT
END_TYPE
]]></Declaration>

View File

@@ -6,6 +6,11 @@ STRUCT
i_xOverfull AT %I* : BOOL;
i_xFull AT %I* : BOOL;
i_xEmpty AT %I* : BOOL;
stValveFilling : ST_Valve_IO;
stValveWater : ST_Valve_IO;
stValveDrain : ST_Valve_IO;
stValvePump : ST_Valve_IO;
END_STRUCT
END_TYPE
]]></Declaration>

View File

@@ -9,6 +9,7 @@ END_VAR
VAR_OUTPUT
END_VAR
VAR_IN_OUT
stIO : ST_MediaCabinet_IO;
stHMIInterface : ST_HMI_MediaCabinet;
END_VAR
VAR
@@ -61,54 +62,63 @@ END_VAR
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank1AceticAcidHighIO,
stHMIInterface:= stHMIInterface.stTankAceticAcidHigh);
_fbTankSulfuricAcid(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank2SulfuricAcidIO,
stHMIInterface:= stHMIInterface.stTankSulfuricAcid);
_fbTankNitricAcid(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank3NitricAcidIO,
stHMIInterface:= stHMIInterface.stTankNitricAcid);
_fbTankAceticAcidLow(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank4AceticAcidLowIO,
stHMIInterface:= stHMIInterface.stTankAceticAcidLow);
_fbTankHydrofluoricAcid(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank5HydrofluoricAcidIO,
stHMIInterface:= stHMIInterface.stTankHydrofluoricAcid);
_fbTankSulfuricAcidMixing(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank6SulfuricAcidMixingIO,
stHMIInterface:= stHMIInterface.stTankSulfuricAcidMixing);
_fbTankHydrofluoricAcidMixing(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank7HydrofluoricAcidMixingIO,
stHMIInterface:= stHMIInterface.stTankHydrofluoricAcidMixing);
_fbTankSEF(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank8SEFIO,
stHMIInterface:= stHMIInterface.stTankSEF);
_fbTankFilmetch(
xReleaseErrors:= xReleaseErrors,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stTank9FilmetchIO,
stHMIInterface:= stHMIInterface.stTankFilmetch);
// Valves
@@ -117,6 +127,7 @@ _fbValveFilmetchOut(
stValveConfig:= _stValveConfig,
xReleaseManualMode:= _xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveFilmetch,
stHMIInterface:= stHMIInterface.stValveFilmetch);
_fbMBMaster();

View File

@@ -15,13 +15,10 @@ VAR_OUTPUT
xError : BOOL;
END_VAR
VAR_IN_OUT
stIO : ST_Tank_IO;
stHMIInterface : ST_HMI_Tank;
END_VAR
VAR
i_xOverfull AT %I* : BOOL;
i_xFull AT %I* : BOOL;
i_xEmpty AT %I* : BOOL;
_fbWaterValve : FB_Valve('Water valve');
_fbFillingValve : FB_Valve('Filling valve');
_fbDrainValve : FB_Valve('Drain Valve');
@@ -50,7 +47,7 @@ END_IF
M_HandleHMIInput();
// Overfull is NC so true if ok
_wFillingValveSafetyIntlk.0 := i_xOverfull;
_wFillingValveSafetyIntlk.0 := stIO.i_xOverfull;
_fbFillingValve(
xReleaseErrors:= xReleaseErrors,
stValveConfig:= _stValveConfig,
@@ -58,6 +55,7 @@ _fbFillingValve(
wSafetyINTLK:= _wFillingValveSafetyIntlk,
wSafetyINTLKUsed:= _wFillingValveSafetyIntlkUsed,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveFilling,
stHMIInterface:= stHMIInterface.stFillingValve);
_fbWaterValve(
@@ -65,6 +63,7 @@ _fbWaterValve(
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveWater,
stHMIInterface:= stHMIInterface.stDrainValve);
_fbDrainValve(
@@ -72,6 +71,7 @@ _fbDrainValve(
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValveDrain,
stHMIInterface:= stHMIInterface.stDrainValve);
_fbPumpValve(
@@ -80,6 +80,7 @@ _fbPumpValve(
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stIO := stIO.stValvePump,
stHMIInterface:= stHMIInterface.stPumpValve);
CASE _iState OF
@@ -99,7 +100,7 @@ CASE _iState OF
10:
_fbDrainValve.xAutomaticOpen := TRUE;
IF (NOT i_xEmpty) THEN
IF (NOT stIO.i_xEmpty) THEN
_fbDrainValve.xAutomaticOpen := FALSE;
_iState := 0;
@@ -119,9 +120,9 @@ END_CASE
M_HandleHMIOutput();
// Copy to output buffer
xOverfull := (NOT i_xOverfull);
xFull := i_xFull;
xEmpty := (NOT i_xEmpty);]]></ST>
xOverfull := (NOT stIO.i_xOverfull);
xFull := stIO.i_xFull;
xEmpty := (NOT stIO.i_xEmpty);]]></ST>
</Implementation>
<Method Name="FB_Init" Id="{9c6d1842-9c2e-4437-b40f-941f77668ffe}">
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
@@ -171,12 +172,12 @@ END_VAR
<Implementation>
<ST><![CDATA[{warning disable C0371}
// Overfull sensor is NC
stHMIInterface.xOverfull := (NOT i_xOverfull);
stHMIInterface.xFull := i_xFull;
stHMIInterface.xEmpty := (NOT i_xEmpty);
stHMIInterface.xOverfull := (NOT stIO.i_xOverfull);
stHMIInterface.xFull := stIO.i_xFull;
stHMIInterface.xEmpty := (NOT stIO.i_xEmpty);
stHMIInterface.stFillButton.xRelease := i_xOverfull AND (NOT i_xFull);
stHMIInterface.stEmptyButton.xRelease := i_xEmpty;
stHMIInterface.stFillButton.xRelease := stIO.i_xOverfull AND (NOT stIO.i_xFull);
stHMIInterface.stEmptyButton.xRelease := stIO.i_xEmpty;
IF _fbWaterValve.IsOpen THEN
stHMIInterface.stFillButton.eFeedback := 1;

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<DUT Name="ST_NOK_IO" Id="{a715e73e-90b1-421f-b226-dcbaf6fa15a4}">
<Declaration><![CDATA[TYPE ST_NOK_IO :
STRUCT
stValveDiag : ST_Valve_IO;
stValveHori : ST_Valve_IO;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -7,13 +7,14 @@ END_VAR
VAR_OUTPUT
END_VAR
VAR_IN_OUT
stIO : ST_NOK_IO;
stHMIInterface : ST_HMI_NOK;
END_VAR
VAR
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
<ST><![CDATA[SUPER^(stPackMLHMIInterface := stHMIInterface.stStationCmds);]]></ST>
</Implementation>
</POU>
</TcPlcObject>

View File

@@ -4,7 +4,15 @@
<Declaration><![CDATA[{attribute 'qualified_only'}
VAR_GLOBAL
// TIID^Device 1 (EtherCAT)^Tank_1_4_9 (EK1100)^M1_KL04 (EL1018)^Channel 5^Tank9NotEmpty
stMediaCabinetIO : ST_MediaCabinet_IO;
stMediaCabinet : ST_MediaCabinet_IO;
stEtcher1 : ST_Etcher_IO;
stEtcher2 : ST_Etcher_IO;
stAligner : ST_Aligner_IO;
stHVTesterCold : ST_HVTester_IO;
stHVTesterWarm : ST_HVTester_IO;
stHotplate : ST_Hotplate_IO;
stCoolplate : ST_Coolplate_IO;
stNOK : ST_NOK_IO;
END_VAR]]></Declaration>
</GVL>
</TcPlcObject>

View File

@@ -46,6 +46,9 @@
<Compile Include="01_Stationen\Aligner\ST_HMI_Aligner.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Coolplate\DUTs\ST_Coolplate_IO.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Coolplate\DUTs\ST_HMI_Coolplate.TcDUT">
<SubType>Code</SubType>
</Compile>
@@ -61,6 +64,9 @@
<Compile Include="01_Stationen\Coolplate\POUs\FB_Coolplate.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Etcher\DUTs\ST_Etcher_IO.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Etcher\FB_Etcher.TcPOU">
<SubType>Code</SubType>
</Compile>
@@ -128,6 +134,9 @@
<Compile Include="01_Stationen\Hotplate\DUTs\ST_HMI_Hotplate.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Hotplate\DUTs\ST_Hotplate_IO.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Hotplate\DUTs\ST_Recipe_Hotplate.TcDUT">
<SubType>Code</SubType>
</Compile>
@@ -140,6 +149,9 @@
<Compile Include="01_Stationen\HVTester\DUTs\ST_HMI_HVTester.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\HVTester\DUTs\ST_HVTester_IO.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\HVTester\DUTs\ST_Recipe_HVTester.TcDUT">
<SubType>Code</SubType>
</Compile>
@@ -221,10 +233,13 @@
<Compile Include="01_Stationen\MediaStation\POUs\FB_Tank.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\NIO\FB_NOK.TcPOU">
<Compile Include="01_Stationen\NOK\DUTs\ST_HMI_NOK.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\NIO\ST_HMI_NOK.TcDUT">
<Compile Include="01_Stationen\NOK\DUTs\ST_NOK_IO.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\NOK\POUs\FB_NOK.TcPOU">
<SubType>Code</SubType>
</Compile>
<Compile Include="01_Stationen\Stammdaten\ST_Tray.TcDUT">
@@ -409,6 +424,7 @@
<Folder Include="01_Stationen\Etcher\Mecademics\DUTs" />
<Folder Include="01_Stationen\Etcher\Mecademics\DUTs\Meca500_Inpus" />
<Folder Include="01_Stationen\Etcher\Mecademics\DUTs\Meca500_Outputs" />
<Folder Include="01_Stationen\Etcher\DUTs" />
<Folder Include="01_Stationen\Hotplate\DUTs" />
<Folder Include="01_Stationen\Hotplate\POUs" />
<Folder Include="01_Stationen\HVTester\DUTs" />
@@ -425,9 +441,11 @@
<Folder Include="01_Stationen\MediaStation\DUTs\HAL" />
<Folder Include="01_Stationen\MediaStation\POUs" />
<Folder Include="01_Stationen\Input" />
<Folder Include="01_Stationen\NOK\DUTs" />
<Folder Include="01_Stationen\NOK\POUs" />
<Folder Include="01_Stationen\Output" />
<Folder Include="01_Stationen\Stammdaten" />
<Folder Include="01_Stationen\NIO" />
<Folder Include="01_Stationen\NOK" />
<Folder Include="01_Stationen\TrayFeeder" />
<Folder Include="01_Stationen" />
<Folder Include="00_Main" />
@@ -535,7 +553,7 @@
</ItemGroup>
<ItemGroup>
<PlaceholderResolution Include="BaseComponents">
<Resolution>BaseComponents, 1.3.4 (Heisig GmbH)</Resolution>
<Resolution>BaseComponents, 2.0.0 (Heisig GmbH)</Resolution>
</PlaceholderResolution>
</ItemGroup>
<ProjectExtensions>
@@ -694,7 +712,7 @@
<Type n="OptionKey">{54dd0eac-a6d8-46f2-8c27-2f43c7e49861}</Type>
<Type n="String">System.String</Type>
</TypeList>
</XmlArchive>
</XmlArchive>
</PlcProjectOptions>
</ProjectExtensions>
</Project>

File diff suppressed because one or more lines are too long

View File

@@ -171,7 +171,7 @@
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000006}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..5] OF BIT</Name>
<Name GUID="{18071995-0000-0000-0000-002000000006}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..5] OF BIT</Name>
<BitSize>6</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
@@ -474,7 +474,7 @@
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-002000000004}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..3] OF BIT</Name>
<Name GUID="{18071995-0000-0000-0000-002000000004}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..3] OF BIT</Name>
<BitSize>4</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
@@ -519,7 +519,7 @@
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-00200000000D}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..12] OF BIT</Name>
<Name GUID="{18071995-0000-0000-0000-00200000000D}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..12] OF BIT</Name>
<BitSize>13</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
@@ -528,7 +528,7 @@
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-00200000000E}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..13] OF BIT</Name>
<Name GUID="{18071995-0000-0000-0000-00200000000E}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..13] OF BIT</Name>
<BitSize>14</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>
@@ -537,7 +537,7 @@
</ArrayInfo>
</DataType>
<DataType>
<Name GUID="{18071995-0000-0000-0000-00200000000F}" IecBaseType="true" BitType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..14] OF BIT</Name>
<Name GUID="{18071995-0000-0000-0000-00200000000F}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..14] OF BIT</Name>
<BitSize>15</BitSize>
<BaseType GUID="{18071995-0000-0000-0000-000000000010}">BIT</BaseType>
<ArrayInfo>

View File

@@ -84,6 +84,276 @@
</OwnerB>
</OwnerA>
</UnrestoredVarLinks>
<UnrestoredVarLinks ImportTime="2026-03-19T14:49:25">
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
<Link VarA="PRG_Main._fbAligner.diXOffset" TypeA="DINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000009}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbAligner.diYOffset" TypeA="DINT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000009}" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 48 (EL3202)">
<Link VarA="PRG_Main._fbCoolplate._fbTempSensor.iAnalogValue" TypeA="INT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000006}" VarB="RTD Inputs Channel 2^CP_CurrentTemp" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate._fbTempSensor.xErrorCard" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="RTD Inputs Channel 2^Status^Error" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate._fbTempSensor.xOverrange" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="RTD Inputs Channel 2^Status^Overrange" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate._fbTempSensor.xUnderrange" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="RTD Inputs Channel 2^Status^Underrange" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHotplate._fbTempSensor.iAnalogValue" TypeA="INT" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000006}" VarB="RTD Inputs Channel 1^HOTPLATE_CurrentTemp" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHotplate._fbTempSensor.xErrorCard" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="RTD Inputs Channel 1^Status^Error" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHotplate._fbTempSensor.xOverrange" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="RTD Inputs Channel 1^Status^Overrange" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHotplate._fbTempSensor.xUnderrange" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="RTD Inputs Channel 1^Status^Underrange" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL05 (EL1018)">
<Link VarA="PRG_Main._fbHVTesterCold._fbDoorValve.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 8^Cold Shutter Closed" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterCold._fbDoorValve.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 7^Cold Shutter Opened" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterCold._fbTestChamberValve.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^Cold Chamber Closed" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterCold._fbTestChamberValve.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 1^Cold Chamber Opend" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL06 (EL1018)">
<Link VarA="PRG_Main._fbHVTesterHot._fbDoorValve.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 8^Hot Shutter Closed" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbDoorValve.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 7^Hot Shutter Opened" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbTestChamberValve.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^Hot Chamber Closed" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbTestChamberValve.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 1^Hot Chamber Opend" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL02 (EL1018)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 5^Tank1NotEmpty" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^Tank1Full" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL06 (EL1918)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank1NotOverFull" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL04 (EL1018)">
<Link VarA="PRG_Main._fbAligner.xVacuumOk" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 7^Input" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A1 (EP1018-0001)">
<Link VarA="PRG_Main._fbEtcher1._fbValveDoor.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^ShutterClosed" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbValveDoor.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^ShutterOpened" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A2 (EP1018-0001)">
<Link VarA="PRG_Main._fbEtcher1._fbEjectBack.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbEjectBack.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 8^Clamping fixture ejector back extended" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbEjectFront.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbEjectFront.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^Clamping fixture ejector front extended" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockLeft.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockLeft.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^Clamping fixture unlock left extended" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockRight.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockRight.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 4^Clamping fixture unlock right extended" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A1 (EP1018-0001)">
<Link VarA="PRG_Main._fbEtcher2._fbValveDoor.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^ShutterClosed" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbValveDoor.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^ShutterOpened" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A2 (EP1018-0001)">
<Link VarA="PRG_Main._fbEtcher2._fbEjectBack.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbEjectBack.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 8^Clamping fixture ejector back extended" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbEjectFront.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbEjectFront.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^Clamping fixture ejector front extended" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockLeft.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockLeft.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^Clamping fixture unlock left extended" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockRight.xCloseFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockRight.xOpenFeedback" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 4^Clamping fixture unlock right extended" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_1_4_9 (EK1100)^M1_KL02 (EL1918)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidLow.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank4NotOverFull" IdB="4545" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankFilmetch.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank9NotOverFull" IdB="4547" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_1_4_9 (EK1100)^M1_KL04 (EL1018)">
<Link VarA="GVL_IO.stMediaCabinet.stTankFilmetchIO.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^Tank9Full" IdB="-485" AutoLink="true" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidLow.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^Tank4NotEmpty" IdB="-482" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidLow.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 4^Tank4Full" IdB="-483" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankFilmetch.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 5^Tank9NotEmpty" IdB="-484" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankFilmetch.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^Tank9Full" IdB="-485" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_5_6_2 (EK1100)^M3_KL02 (EL1918)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank5NotOverFull" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcid.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank2NotOverFull" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank6NotOverFull" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_5_6_2 (EK1100)^M3_KL04 (EL1018)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 1^Tank5NotEmpty" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^Tank5Full" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcid.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 5^Tank2NotEmpty" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcid.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^Tank2Full" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^Tank6NotEmpty" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 4^Tank6Full" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_7_3_8 (EK1100)^M2_KL02 (EL1918)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank7NotOverFull" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankNitricAcid.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank3NotOverFull" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSEF.i_xOverfull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank8NotOverFull" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_7_3_8 (EK1100)^M2_KL04 (EL1018)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 1^Tank7NotEmpty" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^Tank7Full" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankNitricAcid.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^Tank3NotEmpty" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankNitricAcid.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 4^Tank3Full" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSEF.i_xEmpty" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 5^Tank8NotEmpty" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSEF.i_xFull" TypeA="BOOL" InOutA="0" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^Tank8Full" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerXAxis">
<Link VarA="PRG_Main._fbAligner._fbXAxis._fbAxis.NcToPlc" TypeA="MC.NCTOPLC_AXIS_REF" InOutA="0" GuidA="{25521FAA-EA5F-4C7F-8864-BBCCDACD2E98}" VarB="Outputs^ToPlc" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerYAxis">
<Link VarA="PRG_Main._fbAligner._fbYAxis._fbAxis.NcToPlc" TypeA="MC.NCTOPLC_AXIS_REF" InOutA="0" GuidA="{25521FAA-EA5F-4C7F-8864-BBCCDACD2E98}" VarB="Outputs^ToPlc" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^Etcher1Chuck">
<Link VarA="PRG_Main._fbEtcher1._fbSpinner._fbAxis.NcToPlc" TypeA="MC.NCTOPLC_AXIS_REF" InOutA="0" GuidA="{25521FAA-EA5F-4C7F-8864-BBCCDACD2E98}" VarB="Outputs^ToPlc" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^Etcher2Chuck">
<Link VarA="PRG_Main._fbEtcher2._fbSpinner._fbAxis.NcToPlc" TypeA="MC.NCTOPLC_AXIS_REF" InOutA="0" GuidA="{25521FAA-EA5F-4C7F-8864-BBCCDACD2E98}" VarB="Outputs^ToPlc" RestoreInfo="ANotFound"/>
</OwnerB>
</OwnerA>
<OwnerA Name="OutputSrc" Prefix="TIPC^PLC^PLC Instance" Type="2">
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 103 (EX260-SEC1)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidLow._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 2^Output[6]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankFilmetch._fbPumpValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 2^Output[0]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 2^Output[7]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankNitricAcid._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 2^Output[5]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcid._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 2^Output[4]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbValveFilmetchOut.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 2^Output[1]" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 104 (EX260-SEC1)">
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[5]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[4]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankAceticAcidLow._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[2]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankFilmetch._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[5]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankFilmetch._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[3]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[1]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[7]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[1]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankNitricAcid._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[3]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSEF._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[6]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSEF._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[2]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcid._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[4]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing._fbDrainValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[0]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing._fbWaterValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[0]" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 44 (EX260-SEC1)">
<Link VarA="PRG_Main._fbHVTesterCold._fbDoorValve.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[1]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterCold._fbDoorValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[0]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbDoorValve.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[3]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbDoorValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[2]" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 7 (EX600-SEC#)">
<Link VarA="PRG_Main._fbAligner._fbValveVacuum.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner disable vacuum" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbAligner._fbValveVacuum.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner enable vacuum" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 47 (EL2004)">
<Link VarA="PRG_Main._fbHotplate.xEnableHotplate" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 1^HotplateControl" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL07 (EL2008)">
<Link VarA="PRG_Main._fbHVTesterCold._fbReleaseChamberMovement.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 4^HV Cold_Vlave" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterCold._fbTestChamberValve.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 3^HV Cold_CloseChamber" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterCold._fbTestChamberValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 2^HV Cold_OpenChamber" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbReleaseChamberMovement.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 7^HV Hot_Valve" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbTestChamberValve.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 6^HV Hot_CloseChamber" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbHVTesterHot._fbTestChamberValve.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Channel 5^HV Hot_OpenChamber" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
<Link VarA="PRG_Main._fbEtcher1._fbEjectBack.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[7]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbEjectBack.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[6]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbEjectFront.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[5]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbEjectFront.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[4]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockLeft.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[1]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockLeft.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[0]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockRight.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[3]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbUnlockRight.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[2]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbValveDoor.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[1]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbValveDoor.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[0]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher1._fbValveVacuum.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[2]" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM02 (EX260-SEC1)">
<Link VarA="PRG_Main._fbEtcher1._fbValveEnableFilmetch.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[5]" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_QM01 (EX260-SEC1)">
<Link VarA="PRG_Main._fbEtcher2._fbEjectBack.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[7]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbEjectBack.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[6]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbEjectFront.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[5]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbEjectFront.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[4]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockLeft.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[1]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockLeft.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[0]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockRight.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[3]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbUnlockRight.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 1^Output[2]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbValveDoor.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[1]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbValveDoor.xOpenValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[0]" Size="1" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbEtcher2._fbValveVacuum.xCloseValve" TypeA="BOOL" InOutA="1" GuidA="{18071995-0000-0000-0000-000000000030}" VarB="Byte 0^Output[2]" Size="1" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerXAxis">
<Link VarA="PRG_Main._fbAligner._fbXAxis._fbAxis.PlcToNc" TypeA="MC.PLCTONC_AXIS_REF" InOutA="1" GuidA="{96B75FEB-2D84-43BE-A3EC-D9A681F27D52}" VarB="Inputs^FromPlc" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerYAxis">
<Link VarA="PRG_Main._fbAligner._fbYAxis._fbAxis.PlcToNc" TypeA="MC.PLCTONC_AXIS_REF" InOutA="1" GuidA="{96B75FEB-2D84-43BE-A3EC-D9A681F27D52}" VarB="Inputs^FromPlc" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^Etcher1Chuck">
<Link VarA="PRG_Main._fbEtcher1._fbSpinner._fbAxis.PlcToNc" TypeA="MC.PLCTONC_AXIS_REF" InOutA="1" GuidA="{96B75FEB-2D84-43BE-A3EC-D9A681F27D52}" VarB="Inputs^FromPlc" RestoreInfo="ANotFound"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^Etcher2Chuck">
<Link VarA="PRG_Main._fbEtcher2._fbSpinner._fbAxis.PlcToNc" TypeA="MC.PLCTONC_AXIS_REF" InOutA="1" GuidA="{96B75FEB-2D84-43BE-A3EC-D9A681F27D52}" VarB="Inputs^FromPlc" RestoreInfo="ANotFound"/>
</OwnerB>
</OwnerA>
</UnrestoredVarLinks>
<UnrestoredVarLinks ImportTime="2026-03-19T16:17:14">
<OwnerA Name="InputDst" Prefix="TIPC^PLC^PLC Instance" Type="1">
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 49 (EL6021)">
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 0" Size="8" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 1" Size="8" OffsA="8" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 10" Size="8" OffsA="80" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 11" Size="8" OffsA="88" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 12" Size="8" OffsA="96" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 13" Size="8" OffsA="104" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 14" Size="8" OffsA="112" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 15" Size="8" OffsA="120" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 16" Size="8" OffsA="128" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 17" Size="8" OffsA="136" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 18" Size="8" OffsA="144" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 19" Size="8" OffsA="152" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 2" Size="8" OffsA="16" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 20" Size="8" OffsA="160" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 21" Size="8" OffsA="168" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 3" Size="8" OffsA="24" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 4" Size="8" OffsA="32" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 5" Size="8" OffsA="40" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 6" Size="8" OffsA="48" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 7" Size="8" OffsA="56" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 8" Size="8" OffsA="64" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataIn" TypeA="ARRAY [0..21] OF BYTE" InOutA="0" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM TxPDO-Map Inputs^Data In 9" Size="8" OffsA="72" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stStatus^bBufferFull" TypeA="BIT" InOutA="0" ParentTypeA="ST_SerialStatus" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM TxPDO-Map Inputs^Status^Buffer full" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stStatus^bFramingError" TypeA="BIT" InOutA="0" ParentTypeA="ST_SerialStatus" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM TxPDO-Map Inputs^Status^Framing error" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stStatus^bInitAccepted" TypeA="BIT" InOutA="0" ParentTypeA="ST_SerialStatus" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM TxPDO-Map Inputs^Status^Init accepted" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stStatus^bOverrunError" TypeA="BIT" InOutA="0" ParentTypeA="ST_SerialStatus" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM TxPDO-Map Inputs^Status^Overrun error" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stStatus^bParityError" TypeA="BIT" InOutA="0" ParentTypeA="ST_SerialStatus" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM TxPDO-Map Inputs^Status^Parity error" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stStatus^bReceiveRequested" TypeA="BIT" InOutA="0" ParentTypeA="ST_SerialStatus" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM TxPDO-Map Inputs^Status^Receive request" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stStatus^bTransmitAccepted" TypeA="BIT" InOutA="0" ParentTypeA="ST_SerialStatus" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM TxPDO-Map Inputs^Status^Transmit accepted" RestoreInfo="ANotFound"/>
</OwnerB>
</OwnerA>
<OwnerA Name="OutputSrc" Prefix="TIPC^PLC^PLC Instance" Type="2">
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 49 (EL6021)">
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 0" Size="8" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 1" Size="8" OffsA="8" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 10" Size="8" OffsA="80" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 11" Size="8" OffsA="88" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 12" Size="8" OffsA="96" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 13" Size="8" OffsA="104" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 14" Size="8" OffsA="112" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 15" Size="8" OffsA="120" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 16" Size="8" OffsA="128" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 17" Size="8" OffsA="136" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 18" Size="8" OffsA="144" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 19" Size="8" OffsA="152" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 2" Size="8" OffsA="16" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 20" Size="8" OffsA="160" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 21" Size="8" OffsA="168" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 3" Size="8" OffsA="24" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 4" Size="8" OffsA="32" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 5" Size="8" OffsA="40" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 6" Size="8" OffsA="48" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 7" Size="8" OffsA="56" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 8" Size="8" OffsA="64" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.abyDataOut" TypeA="ARRAY [0..21] OF BYTE" InOutA="1" GuidA="{BBFC3C84-2835-602C-793A-4CCF6A40D1E8}" VarB="COM RxPDO-Map Outputs^Data Out 9" Size="8" OffsA="72" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stCtrl^bInitRequest" TypeA="BIT" InOutA="1" ParentTypeA="ST_SerialCrl" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM RxPDO-Map Outputs^Ctrl^Init request" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stCtrl^bReceiveAccepted" TypeA="BIT" InOutA="1" ParentTypeA="ST_SerialCrl" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM RxPDO-Map Outputs^Ctrl^Receive accepted" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stCtrl^bSendContinues" TypeA="BIT" InOutA="1" ParentTypeA="ST_SerialCrl" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM RxPDO-Map Outputs^Ctrl^Send continues" RestoreInfo="ANotFound"/>
<Link VarA="PRG_Main._fbCoolplate.stCtrl^bTransmitRequest" TypeA="BIT" InOutA="1" ParentTypeA="ST_SerialCrl" GuidA="{18071995-0000-0000-0000-000000000010}" VarB="COM RxPDO-Map Outputs^Ctrl^Transmit request" RestoreInfo="ANotFound"/>
</OwnerB>
</OwnerA>
</UnrestoredVarLinks>
<Contexts>
<Context>
<Id>0</Id>
@@ -102,136 +372,137 @@
<Mappings>
<OwnerA>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 103 (EX260-SEC1)">
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidLow._fbWaterValve.xOpenValve" VarB="Byte 2^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankFilmetch._fbPumpValve.xOpenValve" VarB="Byte 2^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid._fbWaterValve.xOpenValve" VarB="Byte 2^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankNitricAcid._fbWaterValve.xOpenValve" VarB="Byte 2^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcid._fbWaterValve.xOpenValve" VarB="Byte 2^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbValveFilmetchOut.xOpenValve" VarB="Byte 2^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank2SulfuricAcidIO.stValveWater.o_xOpenValve" VarB="Byte 2^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank3NitricAcidIO.stValveWater.o_xOpenValve" VarB="Byte 2^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank4AceticAcidLowIO.stValveWater.o_xOpenValve" VarB="Byte 2^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank5HydrofluoricAcidIO.stValveWater.o_xOpenValve" VarB="Byte 2^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank9FilmetchIO.stValvePump.o_xOpenValve" VarB="Byte 2^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stValveFilmetch.o_xOpenValve" VarB="Byte 2^Output[1]" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 104 (EX260-SEC1)">
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh._fbDrainValve.xOpenValve" VarB="Byte 1^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh._fbWaterValve.xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidLow._fbDrainValve.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankFilmetch._fbDrainValve.xOpenValve" VarB="Byte 0^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankFilmetch._fbWaterValve.xOpenValve" VarB="Byte 0^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid._fbDrainValve.xOpenValve" VarB="Byte 1^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing._fbDrainValve.xOpenValve" VarB="Byte 0^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing._fbWaterValve.xOpenValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankNitricAcid._fbDrainValve.xOpenValve" VarB="Byte 1^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSEF._fbDrainValve.xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSEF._fbWaterValve.xOpenValve" VarB="Byte 0^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcid._fbDrainValve.xOpenValve" VarB="Byte 1^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing._fbDrainValve.xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing._fbWaterValve.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank1AceticAcidHighIO.stValveDrain.o_xOpenValve" VarB="Byte 1^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank1AceticAcidHighIO.stValveWater.o_xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank2SulfuricAcidIO.stValveDrain.o_xOpenValve" VarB="Byte 1^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank3NitricAcidIO.stValveDrain.o_xOpenValve" VarB="Byte 1^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank4AceticAcidLowIO.stValveDrain.o_xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank5HydrofluoricAcidIO.stValveDrain.o_xOpenValve" VarB="Byte 1^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank6SulfuricAcidMixingIO.stValveDrain.o_xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank6SulfuricAcidMixingIO.stValveWater.o_xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank7HydrofluoricAcidMixingIO.stValveDrain.o_xOpenValve" VarB="Byte 0^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank7HydrofluoricAcidMixingIO.stValveWater.o_xOpenValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank8SEFIO.stValveDrain.o_xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank8SEFIO.stValveWater.o_xOpenValve" VarB="Byte 0^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank9FilmetchIO.stValveDrain.o_xOpenValve" VarB="Byte 0^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stMediaCabinet.stTank9FilmetchIO.stValveWater.o_xOpenValve" VarB="Byte 0^Output[3]" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner.diXOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner.diYOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8"/>
<Link VarA="PlcTask Inputs^GVL_IO.stAligner.i_diXOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7"/>
<Link VarA="PlcTask Inputs^GVL_IO.stAligner.i_diYOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data8"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 44 (EX260-SEC1)">
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterCold._fbDoorValve.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterCold._fbDoorValve.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterHot._fbDoorValve.xCloseValve" VarB="Byte 0^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterHot._fbDoorValve.xOpenValve" VarB="Byte 0^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterCold.stValveDoor.o_xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterCold.stValveDoor.o_xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterWarm.stValveDoor.o_xCloseValve" VarB="Byte 0^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterWarm.stValveDoor.o_xOpenValve" VarB="Byte 0^Output[2]" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 7 (EX600-SEC#)">
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._fbValveVacuum.xCloseValve" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner disable vacuum" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._fbValveVacuum.xOpenValve" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner enable vacuum" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stAligner.stValveVacuum.o_xCloseValve" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner disable vacuum" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stAligner.stValveVacuum.o_xOpenValve" VarB="Module 1 (EX600-SEC#, 32 Valves)^Valve Outputs^Aligner enable vacuum" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 47 (EL2004)">
<Link VarA="PlcTask Outputs^PRG_Main._fbHotplate.xEnableHotplate" VarB="Channel 1^HotplateControl" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHotplate.o_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._fbCoolplate._fbTempSensor.iAnalogValue" VarB="RTD Inputs Channel 2^CP_CurrentTemp"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate._fbTempSensor.xErrorCard" VarB="RTD Inputs Channel 2^Status^Error" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate._fbTempSensor.xOverrange" VarB="RTD Inputs Channel 2^Status^Overrange" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate._fbTempSensor.xUnderrange" VarB="RTD Inputs Channel 2^Status^Underrange" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHotplate._fbTempSensor.iAnalogValue" VarB="RTD Inputs Channel 1^HOTPLATE_CurrentTemp"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHotplate._fbTempSensor.xErrorCard" VarB="RTD Inputs Channel 1^Status^Error" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHotplate._fbTempSensor.xOverrange" VarB="RTD Inputs Channel 1^Status^Overrange" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHotplate._fbTempSensor.xUnderrange" VarB="RTD Inputs Channel 1^Status^Underrange" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.stTempSensor.i_iAnalogValue" VarB="RTD Inputs Channel 2^CP_CurrentTemp"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.stTempSensor.i_xErrorCard" VarB="RTD Inputs Channel 2^Status^Error" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.stTempSensor.i_xOverrange" VarB="RTD Inputs Channel 2^Status^Overrange" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.stTempSensor.i_xUnderrange" VarB="RTD Inputs Channel 2^Status^Underrange" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHotplate.stTempSensor.i_iAnalogValue" VarB="RTD Inputs Channel 1^HOTPLATE_CurrentTemp"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHotplate.stTempSensor.i_xErrorCard" VarB="RTD Inputs Channel 1^Status^Error" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHotplate.stTempSensor.i_xOverrange" VarB="RTD Inputs Channel 1^Status^Overrange" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHotplate.stTempSensor.i_xUnderrange" VarB="RTD Inputs Channel 1^Status^Underrange" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HP (EK1100)^Term 49 (EL6021)">
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 0" Size="8"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 1" Size="8" OffsA="8"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 10" Size="8" OffsA="80"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 11" Size="8" OffsA="88"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 12" Size="8" OffsA="96"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 13" Size="8" OffsA="104"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 14" Size="8" OffsA="112"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 15" Size="8" OffsA="120"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 16" Size="8" OffsA="128"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 17" Size="8" OffsA="136"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 18" Size="8" OffsA="144"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 19" Size="8" OffsA="152"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 2" Size="8" OffsA="16"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 20" Size="8" OffsA="160"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 21" Size="8" OffsA="168"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 3" Size="8" OffsA="24"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 4" Size="8" OffsA="32"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 5" Size="8" OffsA="40"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 6" Size="8" OffsA="48"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 7" Size="8" OffsA="56"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 8" Size="8" OffsA="64"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 9" Size="8" OffsA="72"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.stStatus^bBufferFull" VarB="COM TxPDO-Map Inputs^Status^Buffer full"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.stStatus^bFramingError" VarB="COM TxPDO-Map Inputs^Status^Framing error"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.stStatus^bInitAccepted" VarB="COM TxPDO-Map Inputs^Status^Init accepted"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.stStatus^bOverrunError" VarB="COM TxPDO-Map Inputs^Status^Overrun error"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.stStatus^bParityError" VarB="COM TxPDO-Map Inputs^Status^Parity error"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.stStatus^bReceiveRequested" VarB="COM TxPDO-Map Inputs^Status^Receive request"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbCoolplate.stStatus^bTransmitAccepted" VarB="COM TxPDO-Map Inputs^Status^Transmit accepted"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 0" Size="8"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 1" Size="8" OffsA="8"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 10" Size="8" OffsA="80"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 11" Size="8" OffsA="88"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 12" Size="8" OffsA="96"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 13" Size="8" OffsA="104"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 14" Size="8" OffsA="112"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 15" Size="8" OffsA="120"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 16" Size="8" OffsA="128"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 17" Size="8" OffsA="136"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 18" Size="8" OffsA="144"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 19" Size="8" OffsA="152"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 2" Size="8" OffsA="16"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 20" Size="8" OffsA="160"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 21" Size="8" OffsA="168"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 3" Size="8" OffsA="24"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 4" Size="8" OffsA="32"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 5" Size="8" OffsA="40"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 6" Size="8" OffsA="48"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 7" Size="8" OffsA="56"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 8" Size="8" OffsA="64"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 9" Size="8" OffsA="72"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.stCtrl^bInitRequest" VarB="COM RxPDO-Map Outputs^Ctrl^Init request"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.stCtrl^bReceiveAccepted" VarB="COM RxPDO-Map Outputs^Ctrl^Receive accepted"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.stCtrl^bSendContinues" VarB="COM RxPDO-Map Outputs^Ctrl^Send continues"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbCoolplate.stCtrl^bTransmitRequest" VarB="COM RxPDO-Map Outputs^Ctrl^Transmit request"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 0" Size="8"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 1" Size="8" OffsA="8"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 10" Size="8" OffsA="80"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 11" Size="8" OffsA="88"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 12" Size="8" OffsA="96"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 13" Size="8" OffsA="104"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 14" Size="8" OffsA="112"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 15" Size="8" OffsA="120"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 16" Size="8" OffsA="128"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 17" Size="8" OffsA="136"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 18" Size="8" OffsA="144"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 19" Size="8" OffsA="152"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 2" Size="8" OffsA="16"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 20" Size="8" OffsA="160"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 21" Size="8" OffsA="168"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 3" Size="8" OffsA="24"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 4" Size="8" OffsA="32"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 5" Size="8" OffsA="40"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 6" Size="8" OffsA="48"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 7" Size="8" OffsA="56"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 8" Size="8" OffsA="64"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_abyDataIn" VarB="COM TxPDO-Map Inputs^Data In 9" Size="8" OffsA="72"/>
<Link VarA="PlcTask Inputs^GVL_IO.stCoolplate.i_stStatus" VarB="COM TxPDO-Map Inputs^Status"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 0" Size="8"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 1" Size="8" OffsA="8"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 10" Size="8" OffsA="80"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 11" Size="8" OffsA="88"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 12" Size="8" OffsA="96"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 13" Size="8" OffsA="104"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 14" Size="8" OffsA="112"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 15" Size="8" OffsA="120"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 16" Size="8" OffsA="128"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 17" Size="8" OffsA="136"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 18" Size="8" OffsA="144"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 19" Size="8" OffsA="152"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 2" Size="8" OffsA="16"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 20" Size="8" OffsA="160"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 21" Size="8" OffsA="168"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 3" Size="8" OffsA="24"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 4" Size="8" OffsA="32"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 5" Size="8" OffsA="40"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 6" Size="8" OffsA="48"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 7" Size="8" OffsA="56"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 8" Size="8" OffsA="64"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_abyDataOut" VarB="COM RxPDO-Map Outputs^Data Out 9" Size="8" OffsA="72"/>
<Link VarA="PlcTask Outputs^GVL_IO.stCoolplate.o_stCtrl" VarB="COM RxPDO-Map Outputs^Ctrl"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL04 (EL1018)">
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.i_xDoorCollisionDetectOk" VarB="Channel 3^Shutter Safety Cold" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.i_xVacuumOk" VarB="Channel 5^Vacuum Substrate Chamber Cold" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.i_xDoorCollisionDetectOk" VarB="Channel 4^Shutter Safety Hot" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.i_xVacuumOk" VarB="Channel 6^Vacuum Substrate Chamber Hot" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL05 (EL1018)">
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterCold._fbDoorValve.xCloseFeedback" VarB="Channel 8^Cold Shutter Closed" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterCold._fbDoorValve.xOpenFeedback" VarB="Channel 7^Cold Shutter Opened" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterCold._fbTestChamberValve.xCloseFeedback" VarB="Channel 2^Cold Chamber Closed" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterCold._fbTestChamberValve.xOpenFeedback" VarB="Channel 1^Cold Chamber Opend" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.stValveDoor.i_xCloseFeedback" VarB="Channel 8^Cold Shutter Closed" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.stValveDoor.i_xOpenFeedback" VarB="Channel 7^Cold Shutter Opened" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.stValveTestChamber.i_xCloseFeedback" VarB="Channel 2^Cold Chamber Closed" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.stValveTestChamber.i_xOpenFeedback" VarB="Channel 1^Cold Chamber Opend" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.i_xChamberFree" VarB="Channel 3^Hot Chamber Robot Free" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.i_xChamberNotFree" VarB="Channel 4^Hot Chamber Robot Not Free" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL06 (EL1018)">
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterHot._fbDoorValve.xCloseFeedback" VarB="Channel 8^Hot Shutter Closed" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterHot._fbDoorValve.xOpenFeedback" VarB="Channel 7^Hot Shutter Opened" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterHot._fbTestChamberValve.xCloseFeedback" VarB="Channel 2^Hot Chamber Closed" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbHVTesterHot._fbTestChamberValve.xOpenFeedback" VarB="Channel 1^Hot Chamber Opend" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.i_xChamberFree" VarB="Channel 3^Cold Chamber Robot Free" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterCold.i_xChamberNotFree" VarB="Channel 4^Cold Chamber Robot Not Free" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.stValveDoor.i_xCloseFeedback" VarB="Channel 8^Hot Shutter Closed" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.stValveDoor.i_xOpenFeedback" VarB="Channel 7^Hot Shutter Opened" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.stValveTestChamber.i_xCloseFeedback" VarB="Channel 2^Hot Chamber Closed" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stHVTesterWarm.stValveTestChamber.i_xOpenFeedback" VarB="Channel 1^Hot Chamber Opend" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^HV_K01_KL01^HV_K01_KL07 (EL2008)">
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterCold._fbReleaseChamberMovement.xOpenValve" VarB="Channel 4^HV Cold_Vlave" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterCold._fbTestChamberValve.xCloseValve" VarB="Channel 3^HV Cold_CloseChamber" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterCold._fbTestChamberValve.xOpenValve" VarB="Channel 2^HV Cold_OpenChamber" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterHot._fbReleaseChamberMovement.xOpenValve" VarB="Channel 7^HV Hot_Valve" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterHot._fbTestChamberValve.xCloseValve" VarB="Channel 6^HV Hot_CloseChamber" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbHVTesterHot._fbTestChamberValve.xOpenValve" VarB="Channel 5^HV Hot_OpenChamber" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterCold.stValveReleaseChamber.o_xOpenValve" VarB="Channel 4^HV Cold_Vlave" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterCold.stValveTestChamber.o_xCloseValve" VarB="Channel 3^HV Cold_CloseChamber" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterCold.stValveTestChamber.o_xOpenValve" VarB="Channel 2^HV Cold_OpenChamber" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterWarm.stValveReleaseChamber.o_xOpenValve" VarB="Channel 7^HV Hot_Valve" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterWarm.stValveTestChamber.o_xCloseValve" VarB="Channel 6^HV Hot_CloseChamber" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stHVTesterWarm.stValveTestChamber.o_xOpenValve" VarB="Channel 5^HV Hot_OpenChamber" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL02 (EL1018)">
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh.i_xEmpty" VarB="Channel 5^Tank1NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh.i_xFull" VarB="Channel 6^Tank1Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank1AceticAcidHighIO.i_xEmpty" VarB="Channel 5^Tank1NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank1AceticAcidHighIO.i_xFull" VarB="Channel 6^Tank1Full" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Safety.xRequestOpenDoor" VarB="Channel 4^MainDoorUnlock" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL04 (EL2008)">
@@ -239,59 +510,59 @@
<Link VarA="PlcTask Outputs^PRG_Safety.xLEDMachineOn" VarB="Channel 1^MachineOn" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K01_KL01 (EK1100)^K01_KL06 (EL1918)">
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank1NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank1AceticAcidHighIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank1NotOverFull" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K12_KL01 (EK1100)^K12_KL04 (EL1018)">
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner.xVacuumOk" VarB="Channel 7^Input" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stAligner.i_xVacuumOk" VarB="Channel 7^Input" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_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"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveDoor.i_xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveDoor.i_xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1.xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_A2 (EP1018-0001)">
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectBack.xOpenFeedback" VarB="Channel 8^Clamping fixture ejector back extended" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectFront.xCloseFeedback" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbEjectFront.xOpenFeedback" VarB="Channel 6^Clamping fixture ejector front extended" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockLeft.xCloseFeedback" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockLeft.xOpenFeedback" VarB="Channel 2^Clamping fixture unlock left extended" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockRight.xCloseFeedback" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbUnlockRight.xOpenFeedback" VarB="Channel 4^Clamping fixture unlock right extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveEjectBack.i_xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveEjectBack.i_xOpenFeedback" VarB="Channel 8^Clamping fixture ejector back extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveEjectFront.i_xCloseFeedback" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveEjectFront.i_xOpenFeedback" VarB="Channel 6^Clamping fixture ejector front extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveUnlockLeft.i_xCloseFeedback" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveUnlockLeft.i_xOpenFeedback" VarB="Channel 2^Clamping fixture unlock left extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveUnlockRight.i_xCloseFeedback" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stValveUnlockRight.i_xOpenFeedback" VarB="Channel 4^Clamping fixture unlock right extended" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_KL01 (EK1100)^K20_KL07 (EL2008)">
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbRobot.xReset" VarB="Channel 2^RobotReset" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM01 (EX260-SEC1)">
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectBack.xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectBack.xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectFront.xCloseValve" VarB="Byte 0^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbEjectFront.xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockLeft.xCloseValve" VarB="Byte 1^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockLeft.xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockRight.xCloseValve" VarB="Byte 1^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveVacuum.xCloseValve" VarB="Byte 0^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveDoor.o_xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveDoor.o_xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveEjectBack.o_xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveEjectBack.o_xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveEjectFront.o_xCloseValve" VarB="Byte 0^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveEjectFront.o_xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveUnlockLeft.o_xCloseValve" VarB="Byte 1^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveUnlockLeft.o_xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveUnlockRight.o_xCloseValve" VarB="Byte 1^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveUnlockRight.o_xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveVacuum.o_xCloseValve" VarB="Byte 0^Output[2]" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K20_QM02 (EX260-SEC1)">
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbValveEnableFilmetch.xOpenValve" VarB="Byte 0^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stValveFilmetch.o_xOpenValve" VarB="Byte 0^Output[5]" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A1 (EP1018-0001)">
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveDoor.i_xCloseFeedback" VarB="Channel 3^ShutterClosed" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveDoor.i_xOpenFeedback" VarB="Channel 2^ShutterOpened" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2.xVacuumOk" VarB="Channel 1^ChuckVacuumOn" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_A2 (EP1018-0001)">
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectBack.xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectBack.xOpenFeedback" VarB="Channel 8^Clamping fixture ejector back extended" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectFront.xCloseFeedback" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbEjectFront.xOpenFeedback" VarB="Channel 6^Clamping fixture ejector front extended" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockLeft.xCloseFeedback" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockLeft.xOpenFeedback" VarB="Channel 2^Clamping fixture unlock left extended" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockRight.xCloseFeedback" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbUnlockRight.xOpenFeedback" VarB="Channel 4^Clamping fixture unlock right extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveEjectBack.i_xCloseFeedback" VarB="Channel 7^Clamping fixture ejector back retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveEjectBack.i_xOpenFeedback" VarB="Channel 8^Clamping fixture ejector back extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveEjectFront.i_xCloseFeedback" VarB="Channel 5^Clamping fixture ejector front retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveEjectFront.i_xOpenFeedback" VarB="Channel 6^Clamping fixture ejector front extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveUnlockLeft.i_xCloseFeedback" VarB="Channel 1^Clamping fixture unlock left retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveUnlockLeft.i_xOpenFeedback" VarB="Channel 2^Clamping fixture unlock left extended" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveUnlockRight.i_xCloseFeedback" VarB="Channel 3^Clamping fixture unlock right retracted" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stValveUnlockRight.i_xOpenFeedback" VarB="Channel 4^Clamping fixture unlock right extended" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_KL01 (EK1100)^K21_KL07 (EL2008) Done">
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbRobot.xReset" VarB="Channel 2^RobotReset" Size="1"/>
@@ -345,17 +616,17 @@
<Link VarA="PlcTask Outputs^PRG_Main._fbModbusMaster._fbMaster.OutData^D" VarB="COM RxPDO-Map Outputs^Data Out 9" Size="8" OffsA="72"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^K21_QM01 (EX260-SEC1)">
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectBack.xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectBack.xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectFront.xCloseValve" VarB="Byte 0^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbEjectFront.xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockLeft.xCloseValve" VarB="Byte 1^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockLeft.xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockRight.xCloseValve" VarB="Byte 1^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbUnlockRight.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveDoor.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbValveVacuum.xCloseValve" VarB="Byte 0^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveDoor.o_xCloseValve" VarB="Byte 0^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveDoor.o_xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveEjectBack.o_xCloseValve" VarB="Byte 0^Output[7]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveEjectBack.o_xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveEjectFront.o_xCloseValve" VarB="Byte 0^Output[5]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveEjectFront.o_xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveUnlockLeft.o_xCloseValve" VarB="Byte 1^Output[1]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveUnlockLeft.o_xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveUnlockRight.o_xCloseValve" VarB="Byte 1^Output[3]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveUnlockRight.o_xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stValveVacuum.o_xCloseValve" VarB="Byte 0^Output[2]" Size="1"/>
</OwnerB>
<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"/>
@@ -380,22 +651,22 @@
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.abyToolsAndPositions" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 2 (Greifer/Drehteller/Positionen)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diOffsetPosX" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 3 (Offset X)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diOffsetPosY" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 4 (Offset Y)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diOffsetXE1" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 6 (Shift X E1)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diOffsetYE1" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 7 (Shift Y E1)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diOffsetZE1" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 8 (Shift Z E1)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.diThickness" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^ Output DWORD 5 (Thickness)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.stCtrl" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 0 (CMDs)"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbRobot.stJobs" VarB="Module 3 (Default IO)^Std. Out (64 Bytes)^Output DWORD 1 (JobNr/PLCJobNr)"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_1_4_9 (EK1100)^M1_KL02 (EL1918)">
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinetIO.stTankFilmetchIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank9NotOverFull" AutoLink="true" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidLow.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank4NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankFilmetch.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank9NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank4AceticAcidLowIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank4NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank9FilmetchIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank9NotOverFull" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_1_4_9 (EK1100)^M1_KL04 (EL1018)">
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinetIO.stTankFilmetchIO.i_xEmpty" VarB="Channel 5^Tank9NotEmpty" AutoLink="true" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinetIO.stTankFilmetchIO.i_xFull" VarB="Channel 6^Tank9Full" AutoLink="true" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidLow.i_xEmpty" VarB="Channel 3^Tank4NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidLow.i_xFull" VarB="Channel 4^Tank4Full" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankFilmetch.i_xEmpty" VarB="Channel 5^Tank9NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankFilmetch.i_xFull" VarB="Channel 6^Tank9Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank4AceticAcidLowIO.i_xEmpty" VarB="Channel 3^Tank4NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank4AceticAcidLowIO.i_xFull" VarB="Channel 4^Tank4Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank9FilmetchIO.i_xEmpty" VarB="Channel 5^Tank9NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank9FilmetchIO.i_xFull" VarB="Channel 6^Tank9Full" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_1_4_9 (EK1100)^M1_KL05 (EL6021)">
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbMBMaster._fbMaster.InData^D" VarB="COM TxPDO-Map Inputs^Data In 0" Size="8"/>
@@ -446,30 +717,30 @@
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbMBMaster._fbMaster.OutData^D" VarB="COM RxPDO-Map Outputs^Data Out 9" Size="8" OffsA="72"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_5_6_2 (EK1100)^M3_KL02 (EL1918)">
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank5NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcid.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank2NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank6NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank2SulfuricAcidIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank2NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank5HydrofluoricAcidIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank5NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank6SulfuricAcidMixingIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank6NotOverFull" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_5_6_2 (EK1100)^M3_KL04 (EL1018)">
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid.i_xEmpty" VarB="Channel 1^Tank5NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid.i_xFull" VarB="Channel 2^Tank5Full" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcid.i_xEmpty" VarB="Channel 5^Tank2NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcid.i_xFull" VarB="Channel 6^Tank2Full" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing.i_xEmpty" VarB="Channel 3^Tank6NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing.i_xFull" VarB="Channel 4^Tank6Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank2SulfuricAcidIO.i_xEmpty" VarB="Channel 5^Tank2NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank2SulfuricAcidIO.i_xFull" VarB="Channel 6^Tank2Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank5HydrofluoricAcidIO.i_xEmpty" VarB="Channel 1^Tank5NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank5HydrofluoricAcidIO.i_xFull" VarB="Channel 2^Tank5Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank6SulfuricAcidMixingIO.i_xEmpty" VarB="Channel 3^Tank6NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank6SulfuricAcidMixingIO.i_xFull" VarB="Channel 4^Tank6Full" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_7_3_8 (EK1100)^M2_KL02 (EL1918)">
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank7NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankNitricAcid.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank3NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSEF.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank8NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank3NitricAcidIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank3NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank7HydrofluoricAcidMixingIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank7NotOverFull" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank8SEFIO.i_xOverfull" VarB="Module 1 (FSOE)^FSoE Inputs^FSOE^Tank8NotOverFull" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 1 (EtherCAT)^Tank_7_3_8 (EK1100)^M2_KL04 (EL1018)">
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing.i_xEmpty" VarB="Channel 1^Tank7NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing.i_xFull" VarB="Channel 2^Tank7Full" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankNitricAcid.i_xEmpty" VarB="Channel 3^Tank3NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankNitricAcid.i_xFull" VarB="Channel 4^Tank3Full" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSEF.i_xEmpty" VarB="Channel 5^Tank8NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^PRG_Main._fbMediaCabinet._fbTankSEF.i_xFull" VarB="Channel 6^Tank8Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank3NitricAcidIO.i_xEmpty" VarB="Channel 3^Tank3NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank3NitricAcidIO.i_xFull" VarB="Channel 4^Tank3Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank7HydrofluoricAcidMixingIO.i_xEmpty" VarB="Channel 1^Tank7NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank7HydrofluoricAcidMixingIO.i_xFull" VarB="Channel 2^Tank7Full" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank8SEFIO.i_xEmpty" VarB="Channel 5^Tank8NotEmpty" Size="1"/>
<Link VarA="PlcTask Inputs^GVL_IO.stMediaCabinet.stTank8SEFIO.i_xFull" VarB="Channel 6^Tank8Full" Size="1"/>
</OwnerB>
<OwnerB Name="TIID^Device 2 (Profinet Controller)^vs-0001">
<Link VarA="PlcTask Outputs^PRG_Main.xTriggerCamera" VarB="API^Term 10 (Control)^Subterm 12 (Control)^Outputs^Control Register[0]^Trigger" Size="1"/>
@@ -673,20 +944,20 @@
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbRobot.stRobotOutputs^udiHostTime" VarB="Host Time^Host Time"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerXAxis">
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._fbXAxis._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._fbXAxis._fbAxis.PlcToNc" VarB="Inputs^FromPlc"/>
<Link VarA="PlcTask Inputs^GVL_IO.stAligner.stAxisX.io_fbAxisRef.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL_IO.stAligner.stAxisX.io_fbAxisRef.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^AlignerYAxis">
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner._fbYAxis._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbAligner._fbYAxis._fbAxis.PlcToNc" VarB="Inputs^FromPlc"/>
<Link VarA="PlcTask Inputs^GVL_IO.stAligner.stAxisY.io_fbAxisRef.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL_IO.stAligner.stAxisY.io_fbAxisRef.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^Etcher1Chuck">
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher1._fbSpinner._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher1._fbSpinner._fbAxis.PlcToNc" VarB="Inputs^FromPlc"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher1.stAxisSpinner.io_fbAxisRef.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher1.stAxisSpinner.io_fbAxisRef.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
<OwnerB Name="TINC^NC-Task 1 SAF^Axes^Etcher2Chuck">
<Link VarA="PlcTask Inputs^PRG_Main._fbEtcher2._fbSpinner._fbAxis.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^PRG_Main._fbEtcher2._fbSpinner._fbAxis.PlcToNc" VarB="Inputs^FromPlc"/>
<Link VarA="PlcTask Inputs^GVL_IO.stEtcher2.stAxisSpinner.io_fbAxisRef.NcToPlc" VarB="Outputs^ToPlc"/>
<Link VarA="PlcTask Outputs^GVL_IO.stEtcher2.stAxisSpinner.io_fbAxisRef.PlcToNc" VarB="Inputs^FromPlc"/>
</OwnerB>
</OwnerA>
</Mappings>

File diff suppressed because it is too large Load Diff