754 lines
33 KiB
XML
754 lines
33 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.13">
|
|
<POU Name="SPINNER_IO_FB" Id="{13e3c288-3e17-4db8-b75e-474c215ba022}" SpecialFunc="None">
|
|
<Declaration><![CDATA[FUNCTION_BLOCK SPINNER_IO_FB EXTENDS SPINNER_IO_STANDARD_FB
|
|
VAR
|
|
ChuckEject : ARRAY[1..2] OF PneumaticCylinder_FB;
|
|
ChuckUnLock : ARRAY[1..2] OF PneumaticCylinder_FB;
|
|
ModbusMaster : ModbusMaster_FB;
|
|
FlowSensor : ARRAY[1..NumberOfFlowSensor] OF LeviSensor_FB;
|
|
RobotRinse : MotorRinse_FB;
|
|
ChuckRinse : MotorRinse_FB;
|
|
RobotDoorLock : Lock_FB;
|
|
|
|
|
|
|
|
TestGetCenter : BOOL;
|
|
TargetCenter : INT;
|
|
END_VAR
|
|
VAR_INPUT
|
|
StrahlSensor : StrahlSensor_FB;
|
|
|
|
bOutPuddleNozzleHF AT %Q* : BOOL;
|
|
bOutPuddleNozzleSF1 AT %Q* : BOOL;
|
|
bOutPuddleNozzleSF2 AT %Q* : BOOL;
|
|
bOutPuddleNozzleSEF1 AT %Q* : BOOL;
|
|
bOutPuddleNozzleSF3 AT %Q* : BOOL;
|
|
bOutPuddleNozzleFilmEtchings AT %Q* : BOOL;
|
|
bOutPuddleNozzleSEF2 AT %Q* : BOOL;
|
|
bOutPuddleNozzleC2H4O2 AT %Q* : BOOL;
|
|
bOutPuddleNozzleDIWHot AT %Q* : BOOL;
|
|
bOutStaticNozzleC2H4O2 AT %Q* : BOOL;
|
|
bOutStaticNozzleDIWHot AT %Q* : BOOL;
|
|
bOutBSR AT %Q* : BOOL;
|
|
bOutPotRinse AT %Q* : BOOL;
|
|
bOutMeasuringChamberRinseDIW AT %Q* : BOOL;
|
|
bOutSprayGun AT %Q* : BOOL;
|
|
bOutSwitchSF1_SEF1 AT %Q* : BOOL;
|
|
bOutSwitchSF3_FilmEtchings AT %Q* : BOOL;
|
|
bOutSwitchC2H4O2_DIW AT %Q* : BOOL;
|
|
|
|
bOutChuckChangeOn : BOOL;
|
|
bOutChuckChangeOff : BOOL;
|
|
|
|
bOutMeasuringChamberRinseN2 AT %Q* : BOOL;
|
|
|
|
// KUKA : Spinner_KUKA_FB;
|
|
|
|
bOutStartCenter : BOOL;
|
|
|
|
|
|
sTest : sPoint;
|
|
sResult : sPoint;
|
|
|
|
|
|
|
|
|
|
|
|
END_VAR
|
|
VAR_OUTPUT
|
|
bInExhaustOk AT %I* : BOOL;
|
|
bInLeakage AT %I* : ARRAY[1..NumberOfLeakageSensor] OF BOOL;
|
|
bInFuseBlook AT %I* : BOOL;
|
|
|
|
MediaOk : BOOL := TRUE;
|
|
// bInStartRecipe AT %I* : BOOL;
|
|
bInStartRecipeTrigger : BOOL;
|
|
bOutMediaEnable : BOOL;
|
|
|
|
bInChuckAvailable AT %I* : ARRAY[1..3] OF BOOL;
|
|
bInChuckCoding AT %I* : ARRAY[1..3] OF BOOL;
|
|
|
|
rInCenterSensor AT %I* : REAL;
|
|
|
|
Point : INT := 1;
|
|
END_VAR
|
|
|
|
VAR CONSTANT
|
|
NumberOfLeakageSensor : INT := 4;
|
|
NumberOfFlowSensor : BYTE := 9;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[MediaCheck();
|
|
StandardMain();
|
|
ModbusMaster();
|
|
RobotDoorLock();
|
|
RobotRinse();
|
|
ChuckRinse();
|
|
StrahlSensor();
|
|
|
|
FOR i := 1 TO NumberOfFlowSensor DO
|
|
FlowSensor[i]();
|
|
END_FOR
|
|
|
|
IF bOutChuckChangeOn OR bOutChuckChangeOff THEN
|
|
IF ChuckChange(bOutChuckChangeOn) THEN
|
|
bOutChuckChangeOn := FALSE;
|
|
bOutChuckChangeOff := FALSE;
|
|
END_IF
|
|
END_IF
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOn].Disable := bOutChuckChangeOff OR NOT Chuck.bOutReady;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOff].Disable := bOutChuckChangeOn OR NOT Chuck.bOutReady;
|
|
|
|
FOR i := 1 TO 2 DO
|
|
ChuckEject[i]();
|
|
ChuckUnLock[i]();
|
|
END_FOR
|
|
|
|
iMediaArray[eSpinnerMedienNamen.ChuckEjectExtend1].Disable := FALSE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckEjectExtend2].Disable := FALSE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckUnlockExtend1].Disable := FALSE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckUnlockExtend2].Disable := FALSE;
|
|
|
|
|
|
IF ABS(Chuck.rOutCurrentModuloPosition - Config.Chuck.HomePosition) > Chuck.rInTolerance THEN
|
|
iMediaArray[eSpinnerMedienNamen.ChuckEjectExtend1].Disable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckEjectExtend2].Disable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckUnlockExtend1].Disable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckUnlockExtend2].Disable := TRUE;
|
|
END_IF
|
|
|
|
|
|
iMediaArray[eSpinnerMedienNamen.ChuckVacuumOff].Disable := Chuck.rOutCurrentVelocity > 100;
|
|
|
|
|
|
(*IF CMD[RobotStation] = GetCMD AND ROBOT_MAIN.TargetStation = iStation AND ROBOT_MAIN.RobotControl.bInPartOnSucker[ROBOT_MAIN.TargetPuddle] THEN
|
|
ChuckVacuum.Down(TRUE);
|
|
END_IF
|
|
|
|
IF CMD[RobotStation] = PutCMD AND ROBOT_MAIN.TargetStation = iStation AND NOT ROBOT_MAIN.RobotControl.bInPartOnSucker[ROBOT_MAIN.TargetPuddle] THEN
|
|
ChuckVacuum.Up(TRUE);
|
|
END_IF*)
|
|
IF ROBOT_MAIN.TargetStation = iStation THEN
|
|
CASE CMD[RobotStation] OF
|
|
GetCMD:
|
|
IF ROBOT_MAIN.RobotControl.bInPartOnSucker[ROBOT_MAIN.TargetPuddle] THEN
|
|
ChuckVacuum.Down(TRUE);
|
|
END_IF
|
|
PutCMD:
|
|
IF NOT ROBOT_MAIN.RobotControl.bInPartOnSucker[ROBOT_MAIN.TargetPuddle] THEN
|
|
ChuckVacuum.Up(TRUE);
|
|
END_IF
|
|
ChangeCMD:
|
|
IF SpinnerVacOff THEN
|
|
ChuckVacuum.Down(TRUE);
|
|
END_IF
|
|
|
|
IF SpinnerVacOn THEN
|
|
ChuckVacuum.Up(TRUE);
|
|
END_IF
|
|
END_CASE
|
|
END_IF
|
|
IF iStationStatus.Soll.Stop THEN
|
|
ChuckChange(FALSE);
|
|
END_IF
|
|
|
|
//IF iStation = FirstSpinner THEN
|
|
//sResult := GetOffset(sTest);
|
|
//END_IF
|
|
|
|
|
|
(*IF TestGetCenter THEN
|
|
IF GetCenter(0, TargetCenter, SEL(TargetCenter = 1, 0,5)) THEN
|
|
TestGetCenter := FALSE;
|
|
END_IF
|
|
END_IF*)]]></ST>
|
|
</Implementation>
|
|
<Method Name="ChuckChange" Id="{e561f27d-eb90-479f-be06-2897961050e1}">
|
|
<Declaration><![CDATA[METHOD ChuckChange : BOOL;
|
|
VAR_INPUT
|
|
Change : BOOL;
|
|
END_VAR
|
|
VAR_INST
|
|
Step : INT;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[IF iStationStatus.Soll.Stop THEN
|
|
Step := 0;
|
|
bOutChuckChangeOn := FALSE;
|
|
bOutChuckChangeOff := FALSE;
|
|
RETURN;
|
|
END_IF
|
|
|
|
CASE Step OF
|
|
0:
|
|
IF NOT Change THEN
|
|
IF ChuckEject[1].bInDown AND ChuckEject[2].bInDown AND ChuckUnLock[1].bInDown AND ChuckUnLock[2].bInDown THEN
|
|
ChuckChange := TRUE;
|
|
ELSE
|
|
Step := Step +1;
|
|
END_IF
|
|
ELSE
|
|
Step := Step +1;
|
|
END_IF
|
|
1:
|
|
IF ChuckEject[1].Down() AND ChuckEject[2].Down() AND ChuckUnLock[1].Down() AND ChuckUnLock[2].Down() THEN
|
|
Step := 10;
|
|
END_IF
|
|
10:
|
|
IF Change THEN
|
|
Step := 20;
|
|
ELSE
|
|
Step := 0;
|
|
Chuck.bInEnable := FALSE;
|
|
ChuckChange := TRUE;
|
|
END_IF
|
|
20:
|
|
Chuck.bOutReady := FALSE;
|
|
Chuck.bInEnable := FALSE;
|
|
Chuck.bInInit := TRUE;
|
|
Step := Step +1;
|
|
21:
|
|
IF Chuck.bOutReady THEN
|
|
Chuck.rInTargetPosition := Config.Chuck.HomePosition;
|
|
Chuck.rInTargetVelocity := Config.Chuck.HomeSpeed;
|
|
Chuck.rInTargetAcceleration := Config.Chuck.HomeAcceleration;
|
|
Chuck.bInStartModuloPosition := TRUE;
|
|
Chuck.bOutReady := FALSE;
|
|
Step := Step +1;
|
|
END_IF
|
|
22:
|
|
IF Chuck.bOutReady THEN
|
|
Step := 30;
|
|
END_IF
|
|
30:
|
|
IF ChuckUnLock[1].Up() AND ChuckUnLock[2].Up() THEN
|
|
Step := Step +1;
|
|
END_IF
|
|
31:
|
|
IF ChuckEject[1].Up() AND ChuckEject[2].Up() THEN
|
|
Step := Step +1;
|
|
END_IF
|
|
32:
|
|
IF ChuckEject[1].Down() AND ChuckEject[2].Down() THEN
|
|
Step := 40;
|
|
END_IF
|
|
40:
|
|
IF ChuckVacuum.Down() THEN
|
|
Step := 50;
|
|
END_IF
|
|
50:
|
|
ChuckChange := TRUE;
|
|
Step := 0;
|
|
END_CASE]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="ChuckChange_Robot" Id="{cfbc8cef-e83c-43f2-a5bd-202ee79f134d}">
|
|
<Declaration><![CDATA[METHOD ChuckChange_Robot : BOOL
|
|
VAR_INPUT
|
|
TargetChuck : USINT;
|
|
Stop : BOOL:= FALSE;
|
|
END_VAR
|
|
VAR
|
|
i : INT;
|
|
|
|
END_VAR
|
|
VAR_INST
|
|
Step : INT;
|
|
CheckChuck : INT;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[IF Stop THEN
|
|
Step := 0;
|
|
RETURN;
|
|
END_IF
|
|
|
|
IF iStationStatus.Error THEN
|
|
RETURN;
|
|
END_IF
|
|
|
|
CASE Step OF
|
|
0:
|
|
IF NOT iStationStatus.Ist.InitDone THEN
|
|
iStationStatus.ErrorIndex := AlarmSend(iStation:=iStationStatus.iStation,MsgId := Spinner_ErrorNr.eNotInitialized,TRUE, eReportType.Error, sAvailableResponse.Cancel, FALSE);
|
|
iStationStatus.Error := TRUE;
|
|
RETURN;
|
|
END_IF
|
|
|
|
IF NOT KUKA.bInPrimaryHomePosition THEN
|
|
iStationStatus.ErrorIndex := AlarmSend(iStation:=iStationStatus.iStation,MsgId := Spinner_ErrorNr.eRobotNotInHomePosition,TRUE, eReportType.Error, sAvailableResponse.Cancel, FALSE);
|
|
iStationStatus.Error := TRUE;
|
|
RETURN;
|
|
END_IF
|
|
|
|
CheckChuck := 0;
|
|
FOR i := 1 TO 3 DO
|
|
IF NOT bInChuckAvailable[i] THEN
|
|
CheckChuck := CheckChuck +1;
|
|
END_IF
|
|
END_FOR
|
|
|
|
IF CheckChuck > 1 THEN
|
|
iStationStatus.ErrorIndex := AlarmSend(iStation:=iStationStatus.iStation,MsgId := Spinner_ErrorNr.eChuckChangeChuckMissing,TRUE, eReportType.Error, sAvailableResponse.Cancel, FALSE);
|
|
iStationStatus.Error := TRUE;
|
|
RETURN;
|
|
END_IF
|
|
|
|
CheckChuck := 0;
|
|
FOR i := 1 TO 3 DO
|
|
IF NOT bInChuckCoding[i] THEN
|
|
CheckChuck := CheckChuck +1;
|
|
END_IF
|
|
END_FOR
|
|
|
|
IF CheckChuck > 1 THEN
|
|
iStationStatus.ErrorIndex := AlarmSend(iStation:=iStationStatus.iStation,MsgId := Spinner_ErrorNr.eChuckChangeChuckMissing,TRUE, eReportType.Error, sAvailableResponse.Cancel, FALSE);
|
|
iStationStatus.Error := TRUE;
|
|
RETURN;
|
|
END_IF
|
|
|
|
Step := 10;
|
|
10:
|
|
IF bInChuckAvailable[TargetChuck] THEN
|
|
Step := 20;
|
|
ELSE
|
|
ChuckChange_Robot := TRUE;
|
|
Step := 0;
|
|
END_IF
|
|
20:
|
|
IF iStationStatus.Ist.PrepOut THEN
|
|
Step := 30;
|
|
ELSE
|
|
Step := Step +1;
|
|
END_IF
|
|
21:
|
|
iCMD := PrepOutCMD;
|
|
Step := Step +1;
|
|
22:
|
|
IF NOT iStationStatus.Ist.Busy THEN
|
|
Step := 20;
|
|
END_IF
|
|
30:
|
|
IF ChuckChange(TRUE) THEN
|
|
Step := 40;
|
|
END_IF
|
|
40:
|
|
;
|
|
END_CASE]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="Initialization" Id="{f9023fdc-2cd4-473f-9304-f8e0cb150e83}">
|
|
<Declaration><![CDATA[METHOD Initialization : BOOL
|
|
VAR_INPUT
|
|
iStation : INT;
|
|
END_VAR
|
|
VAR
|
|
ServiceNameOn : ARRAY[0..NumberOfLanguages] OF T_MaxString;
|
|
ServiceNameOff : ARRAY[0..NumberOfLanguages] OF T_MaxString;
|
|
|
|
i : BYTE;
|
|
|
|
LanguagesString : ARRAY[0..NumberOfLanguages] OF T_MaxString;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[InitializationStandard(iStation);
|
|
|
|
|
|
StrahlSensor.NoComErrorIndex := SPINNER_ErrorNr.eBeamSensorNoCommunication;
|
|
StrahlSensor.Initialization(iStation, eSpinnerMedienNamen.BeamSensor);
|
|
|
|
LanguagesString[0] := 'Robot$NDoor Lock';
|
|
LanguagesString[1] := 'Robot$NDoor Lock';
|
|
RobotDoorLock.Initialization(
|
|
iStation,
|
|
eSpinnerMedienNamen.DoorLock2,
|
|
SPINNER_ErrorNr.eDoor2Close,
|
|
SPINNER_ErrorNr.eDoor2LockTimeOut,
|
|
LanguagesString
|
|
);
|
|
|
|
|
|
ServiceNameOn[0] := 'Chuck Eject 1$NExtend';
|
|
ServiceNameOn[1] := 'Chuck Eject 1$NExtend';
|
|
|
|
ServiceNameOff[0] := 'Chuck Eject 1$NRetract';
|
|
ServiceNameOff[1] := 'Chuck Eject 1$NRetract';
|
|
|
|
ChuckEject[1].Initialization(
|
|
iStation,
|
|
eSpinnerMedienNamen.ChuckEjectExtend1,
|
|
eSpinnerMedienNamen.ChuckEjectRetract1,
|
|
SPINNER_ErrorNr.ChuckEject1ExtendTimeout,
|
|
ServiceNameOn,
|
|
ServiceNameOff
|
|
);
|
|
|
|
ServiceNameOn[0] := 'Chuck Eject 2$NExtend';
|
|
ServiceNameOn[1] := 'Chuck Eject 2$NExtend';
|
|
|
|
ServiceNameOff[0] := 'Chuck Eject 2$NRetract';
|
|
ServiceNameOff[1] := 'Chuck Eject 2$NRetract';
|
|
|
|
ChuckEject[2].Initialization(
|
|
iStation,
|
|
eSpinnerMedienNamen.ChuckEjectExtend2,
|
|
eSpinnerMedienNamen.ChuckEjectRetract2,
|
|
SPINNER_ErrorNr.ChuckEject2ExtendTimeout,
|
|
ServiceNameOn,
|
|
ServiceNameOff
|
|
);
|
|
|
|
ServiceNameOn[0] := 'Chuck Unlock 1$NExtend';
|
|
ServiceNameOn[1] := 'Chuck Unlock 1$NExtend';
|
|
|
|
ServiceNameOff[0] := 'Chuck Unlock 1$NRetract';
|
|
ServiceNameOff[1] := 'Chuck Unlock 1$NRetract';
|
|
|
|
ChuckUnLock[1].Initialization(
|
|
iStation,
|
|
eSpinnerMedienNamen.ChuckUnlockExtend1,
|
|
eSpinnerMedienNamen.ChuckUnlockRetract1,
|
|
SPINNER_ErrorNr.ChuckUnlock1ExtendTimeout,
|
|
ServiceNameOn,
|
|
ServiceNameOff
|
|
);
|
|
|
|
ServiceNameOn[0] := 'Chuck Unlock 2$NExtend';
|
|
ServiceNameOn[1] := 'Chuck Unlock 2$NExtend';
|
|
|
|
ServiceNameOff[0] := 'Chuck Unlock 2$NRetract';
|
|
ServiceNameOff[1] := 'Chuck Unlock 2$NRetract';
|
|
|
|
ChuckUnLock[2].Initialization(
|
|
iStation,
|
|
eSpinnerMedienNamen.ChuckUnlockExtend2,
|
|
eSpinnerMedienNamen.ChuckUnlockRetract2,
|
|
SPINNER_ErrorNr.ChuckUnlock2ExtendTimeout,
|
|
ServiceNameOn,
|
|
ServiceNameOff
|
|
);
|
|
|
|
|
|
{region "Puddle Nozzle HF"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].ServiceName[0] := 'Puddle Nozzle$NHF';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].ServiceName[1] := 'Puddledüse$NHF';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].RecipeName[0] := 'Puddle Nozzle$NHF';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].RecipeName[1] := 'Puddledüse$NHF';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].bReferenceControl REF= bOutPuddleNozzleHF;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].bReferencePrepareMedia REF= LeviPump[5].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].bReferenceTankState REF= LeviPump[5].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].rReferenceFlow REF= FlowSensor[9].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleHF].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleHF].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit9;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleHF].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit9;
|
|
{endregion}
|
|
|
|
|
|
{region "Puddle Nozzle SF1 (0,4)"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].ServiceName[0] := 'Puddle Nozzle$NSF1 (0,4)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].ServiceName[1] := 'Puddledüse$NSF1 (0,4)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].RecipeName[0] := 'Puddle Nozzle$NSF1';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].RecipeName[1] := 'Puddledüse$NSF1';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].bReferenceControl REF= bOutPuddleNozzleSF1;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].bReferencePrepareMedia REF= LeviPump[2].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].bReferenceTankState REF= LeviPump[2].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].rReferenceFlow REF= FlowSensor[1].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSF1].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSF1].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF1].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit;
|
|
{endregion}
|
|
|
|
|
|
{region "Puddle Nozzle SF2 (0,1)"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].ServiceName[0] := 'Puddle Nozzle$NSF2 (0,1)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].ServiceName[1] := 'Puddledüse$NSF2 (0,1)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].RecipeName[0] := 'Puddle Nozzle$NSF2';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].RecipeName[1] := 'Puddledüse$NSF2';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].bReferenceControl REF= bOutPuddleNozzleSF2;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].bReferenceResetControl REF= bOutPuddleNozzleSEF1;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].bReferencePrepareMedia REF= LeviPump[2].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].bReferenceTankState REF= LeviPump[2].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].rReferenceFlow REF= FlowSensor[3].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSF2].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSF2].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit3;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF2].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit3;
|
|
{endregion}
|
|
|
|
|
|
{region "Puddle Nozzle SF2 (0,1)"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].ServiceName[0] := 'Puddle Nozzle$NSEF1 (0,1)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].ServiceName[1] := 'Puddledüse$NSEF1 (0,1)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].RecipeName[0] := 'Puddle Nozzle$NSEF1';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].RecipeName[1] := 'Puddledüse$NSEF1';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].bReferenceControl REF= bOutPuddleNozzleSEF1;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].bReferenceResetControl REF= bOutPuddleNozzleSF2;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].bReferencePrepareMedia REF= LeviPump[8].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].bReferenceTankState REF= LeviPump[8].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].rReferenceFlow REF= FlowSensor[5].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSEF1].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSEF1].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit5;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF1].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit5;
|
|
{endregion}
|
|
|
|
|
|
{region "Puddle Nozzle SF3 (0,2)"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].ServiceName[0] := 'Puddle Nozzle$NSF3 (0,2)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].ServiceName[1] := 'Puddledüse$NSF3 (0,2)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].RecipeName[0] := 'Puddle Nozzle$NSF3';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].RecipeName[1] := 'Puddledüse$NSF3';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].bReferenceControl REF= bOutPuddleNozzleSF3;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].bReferenceResetControl REF= bOutPuddleNozzleFilmEtchings;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].bReferencePrepareMedia REF= LeviPump[2].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].bReferenceTankState REF= LeviPump[2].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].rReferenceFlow REF= FlowSensor[2].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSF3].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSF3].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit2;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSF3].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit2;
|
|
{endregion}
|
|
|
|
|
|
{region "Puddle Nozzle SF3 (0,2)"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].ServiceName[0] := 'Puddle Nozzle$NFilm Etchings (0,2)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].ServiceName[1] := 'Puddledüse$NFilmätze (0,2)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].RecipeName[0] := 'Puddle Nozzle$NFilm Etchings';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].RecipeName[1] := 'Puddledüse$NFilmätze';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].bReferenceControl REF= bOutPuddleNozzleFilmEtchings;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].bReferenceResetControl REF= bOutPuddleNozzleSF3;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].bReferencePrepareMedia REF= LeviPump[9].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].bReferenceTankState REF= LeviPump[9].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].rReferenceFlow REF= FlowSensor[8].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit8;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleFilmEtchings].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit8;
|
|
{endregion}
|
|
|
|
{region "Puddle Nozzle SEF2 (0,3)"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].ServiceName[0] := 'Puddle Nozzle$NSEF2 (0,3)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].ServiceName[1] := 'Puddledüse$NSEF2 (0,3)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].RecipeName[0] := 'Puddle Nozzle$NSEF2';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].RecipeName[1] := 'Puddledüse$NSEF2';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].bReferenceControl REF= bOutPuddleNozzleSEF2;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].bReferencePrepareMedia REF= LeviPump[8].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].bReferenceTankState REF= LeviPump[8].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].rReferenceFlow REF= FlowSensor[4].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSEF2].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleSEF2].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit4;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleSEF2].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit4;
|
|
{endregion}
|
|
|
|
|
|
|
|
{region "Puddle Nozzle C2H4O2 (1,0)"}
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].ServiceName[0] := 'Puddle Nozzle$NC2H4O2 (1,0)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].ServiceName[1] := 'Puddledüse$NC2H4O2 (1,0)';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].RecipeName[0] := 'Puddle Nozzle$NC2H4O2';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].RecipeName[1] := 'Puddledüse$NC2H4O2';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].bReferenceControl REF= bOutPuddleNozzleC2H4O2;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].bReferenceResetControl REF= bOutPuddleNozzleDIWHot;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].bReferencePrepareMedia REF= LeviPump[4].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].bReferenceTankState REF= LeviPump[4].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].rReferenceFlow REF= FlowSensor[6].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleC2H4O2].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.PuddleNozzleC2H4O2].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit6;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleC2H4O2].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit6;
|
|
{endregion}
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleDIWHot].ServiceName[0] := 'Puddle Nozzle$NTemp. DIW';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleDIWHot].ServiceName[1] := 'Puddledüse$NTemp. DIW';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleDIWHot].RecipeName[0] := 'Puddle Nozzle$NTemp. DIW';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleDIWHot].RecipeName[1] := 'Puddledüse$NTemp. DIW';
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleDIWHot].bReferenceControl REF= bOutPuddleNozzleDIWHot;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleDIWHot].bReferenceResetControl REF= bOutPuddleNozzleC2H4O2;
|
|
iMediaArray[eSpinnerMedienNamen.PuddleNozzleDIWHot].bReferenceTankState REF= MediaOk;
|
|
|
|
|
|
{region "Static Nozzle C2H4O2"}
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].ServiceName[0] := 'Static Nozzle$NC2H4O2';
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].ServiceName[1] := 'Statische düse$NC2H4O2';
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].RecipeName[0] := 'Static Nozzle$NC2H4O2';
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].RecipeName[1] := 'Puddledüse$NC2H4O2';
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].bReferenceControl REF= bOutStaticNozzleC2H4O2;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].bReferencePrepareMedia REF= LeviPump[4].bInPrepareSystem;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].bReferenceTankState REF= LeviPump[4].bOutSystemReadyForFlow;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].InputFlowAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].rReferenceFlow REF= FlowSensor[7].rOutCurrentFlow;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].InRangeCheckFlow := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].FlowLimit REF= Config.FlowCheck[eSpinnerMedienNamen.StaticNozzleC2H4O2].rLimit;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].FlowTol REF= Config.FlowCheck[eSpinnerMedienNamen.StaticNozzleC2H4O2].rTol;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].ErrorIndex_Underrange := SPINNER_ErrorNr.wFlowUnderLimit7;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleC2H4O2].ErrorIndex_Overrange := SPINNER_ErrorNr.wFlowOverLimit7;
|
|
{endregion}
|
|
|
|
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleDIWHot].ServiceName[0] := 'Static Nozzle$NTemp. DIW';
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleDIWHot].ServiceName[1] := 'Statische düse$NTemp. DIW';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleDIWHot].RecipeName[0] := 'Static Nozzle$NTemp. DIW';
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleDIWHot].RecipeName[1] := 'Puddledüse$NTemp. DIW';
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleDIWHot].bReferenceControl REF= bOutStaticNozzleDIWHot;
|
|
iMediaArray[eSpinnerMedienNamen.StaticNozzleDIWHot].bReferenceTankState REF= MediaOk;
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.BSR].ServiceName[0] := 'BSR$NDIW';
|
|
iMediaArray[eSpinnerMedienNamen.BSR].ServiceName[1] := 'BSR$NDIW';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.BSR].RecipeName[0] := 'BSR$NDIW';
|
|
iMediaArray[eSpinnerMedienNamen.BSR].RecipeName[1] := 'BSR$NDIW';
|
|
iMediaArray[eSpinnerMedienNamen.BSR].bReferenceControl REF= bOutBSR;
|
|
iMediaArray[eSpinnerMedienNamen.BSR].bReferenceTankState REF= MediaReady;
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.PotRinse].ServiceName[0] := 'Pot Rinse';
|
|
iMediaArray[eSpinnerMedienNamen.PotRinse].ServiceName[1] := 'Topfspülung';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.PotRinse].RecipeName[0] := 'Pot Rinse';
|
|
iMediaArray[eSpinnerMedienNamen.PotRinse].RecipeName[1] := 'Topfspülung';
|
|
iMediaArray[eSpinnerMedienNamen.PotRinse].bReferenceControl REF= bOutPotRinse;
|
|
iMediaArray[eSpinnerMedienNamen.PotRinse].bReferenceTankState REF= MediaOk;
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseDIW].ServiceName[0] := 'Proccess Chamber$NRinseDIW';
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseDIW].ServiceName[1] := 'Prozesskammerspülung$NDIW';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseDIW].RecipeName[0] := 'Proccess Chamber$NRinseDIW';
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseDIW].RecipeName[1] := 'Prozesskammerspülung$NDIW';
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseDIW].bReferenceControl REF= bOutMeasuringChamberRinseDIW;
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseDIW].bReferenceTankState REF= MediaOk;
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.SprayGun].ServiceName[0] := 'Spray Gun';
|
|
iMediaArray[eSpinnerMedienNamen.SprayGun].ServiceName[1] := 'Sprühpistole';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.SprayGun].bReferenceControl REF= bOutSprayGun;
|
|
iMediaArray[eSpinnerMedienNamen.SprayGun].bReferenceTankState REF= MediaOk;
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF1_SEF1].ServiceName[0] := 'Switch$NSF2/SEF1';
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF1_SEF1].ServiceName[1] := 'Umaschalten$NSF1/SEF1';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF1_SEF1].bReferenceControl REF= bOutSwitchSF1_SEF1;
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF1_SEF1].bReferenceTankState REF= MediaOk;
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF3_FilmEtchings].ServiceName[0] := 'Switch$NSF3/Film Etchings';
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF3_FilmEtchings].ServiceName[1] := 'Umaschalten$NSF3/Filmätze';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF3_FilmEtchings].bReferenceControl REF= bOutSwitchSF3_FilmEtchings;
|
|
iMediaArray[eSpinnerMedienNamen.SwitchSF3_FilmEtchings].bReferenceTankState REF= MediaOk;
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.SwitchC2H4O2_DIW].ServiceName[0] := 'Switch$NC2H4O2/DIW Temp.';
|
|
iMediaArray[eSpinnerMedienNamen.SwitchC2H4O2_DIW].ServiceName[1] := 'Umaschalten$NC2H4O2/DIW Temp.';
|
|
|
|
iMediaArray[eSpinnerMedienNamen.SwitchC2H4O2_DIW].bReferenceControl REF= bOutSwitchC2H4O2_DIW;
|
|
iMediaArray[eSpinnerMedienNamen.SwitchC2H4O2_DIW].bReferenceTankState REF= MediaOk;
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOn].ServiceName[0] := 'Chuck Change$NOn';
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOn].ServiceName[1] := 'Chuck Change$Nein';
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOn].InputAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOn].bReferenceControl REF= bOutChuckChangeOn;
|
|
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOff].ServiceName[0] := 'Chuck Change$NOff';
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOff].ServiceName[1] := 'Chuck Change$Naus';
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOff].InputAvailable := TRUE;
|
|
iMediaArray[eSpinnerMedienNamen.ChuckChangeOff].bReferenceControl REF= bOutChuckChangeOff;
|
|
|
|
////
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseN2].ServiceName[0] := 'Measuring Chamber$NRinse N2';
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseN2].ServiceName[1] := 'Messkammerspülung$NN2';
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseN2].bReferenceControl REF= bOutMeasuringChamberRinseN2;
|
|
iMediaArray[eSpinnerMedienNamen.MeasuringChamberRinseN2].bReferenceTankState REF= MediaReady;
|
|
|
|
|
|
|
|
|
|
|
|
ModbusMaster.iStation := iStation;
|
|
FOR i := 1 TO NumberOfFlowSensor DO
|
|
FlowSensor[i].MB REF= ModbusMaster;
|
|
FlowSensor[i].Initialization(iStation ,i);
|
|
END_FOR
|
|
|
|
|
|
RobotRinse.Initialization(iStation, eSpinnerMedienNamen.RobotRinsing, 0, FALSE);
|
|
iMediaArray[eSpinnerMedienNamen.RobotRinsing].ServiceName[0] := 'Robot Rinse$NN2';
|
|
iMediaArray[eSpinnerMedienNamen.RobotRinsing].ServiceName[1] := 'Roboterspülung$NN2';
|
|
RobotRinse.TimeOffDelay REF= Config.N2MotorTimer;
|
|
|
|
ChuckRinse.Initialization(iStation, eSpinnerMedienNamen.ChuckRinsing, 0, FALSE);
|
|
iMediaArray[eSpinnerMedienNamen.ChuckRinsing].ServiceName[0] := 'Chuck Rinse$NN2';
|
|
iMediaArray[eSpinnerMedienNamen.ChuckRinsing].ServiceName[1] := 'Chuckspülung$NN2';
|
|
ChuckRinse.TimeOffDelay REF= Config.N2MotorTimer;]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Action Name="MediaCheck" Id="{c0188b29-db69-4c08-8ccb-be256dcc53c8}">
|
|
<Implementation>
|
|
<ST><![CDATA[//DelayTimer(IN := TRUE, PT := T#5S);
|
|
// IF NOT DelayTimer.Q THEN
|
|
// RETURN;
|
|
// END_IF
|
|
|
|
//AlarmSend(iStationStatus.iStation, SPINNER_ErrorNr.wWasteTank, FALSE, eReportType.Warning, sAvailableResponse.NoResponse, bInWasteTankOK);
|
|
AlarmSend(iStation, SPINNER_ErrorNr.eExhaust, FALSE, eReportType.Warning, sAvailableResponse.NoResponse, bInExhaustOk);
|
|
|
|
FOR i := 1 TO NumberOfLeakageSensor DO
|
|
AlarmSend(iStation, SPINNER_ErrorNr.eLeakage + i -1, FALSE, eReportType.Warning, sAvailableResponse.NoResponse, bInLeakage[i]);
|
|
END_FOR
|
|
|
|
AlarmSend(iStation, SPINNER_ErrorNr.eFuse, FALSE, eReportType.Warning, sAvailableResponse.NoResponse, bInFuseBlook);
|
|
//AlarmSend(iStationStatus.iStation, SPINNER_ErrorNr.eLeakage, FALSE, eReportType.Warning, sAvailableResponse.NoResponse, bInLeakage);
|
|
|
|
//AlarmSend(iStationStatus.iStation, SPINNER_ErrorNr.wWindowOpened, FALSE, eReportType.Error, sAvailableResponse.NoResponse, bInWindow1ClosedCh1 AND bInWindow1ClosedCh2);
|
|
//AlarmSend(iStationStatus.iStation, SPINNER_ErrorNr.wWindowOpened+1, FALSE, eReportType.Error, sAvailableResponse.NoResponse, bInWindow2ClosedCh1 AND bInWindow2ClosedCh2);
|
|
|
|
|
|
//AlarmSend(iStationStatus.iStation, SPINNER_ErrorNr.wTank1, FALSE, eReportType.Warning, sAvailableResponse.NoResponse, InTankOk[1]);
|
|
|
|
|
|
FOR i := 1 TO 32 DO
|
|
IF CMD[GeneralStation] <> eStationCMD.StartCMD THEN
|
|
iMediaArray[i].bReferenceTankState := TRUE;
|
|
END_IF
|
|
|
|
AlarmSend(iStationStatus.iStation, SPINNER_ErrorNr.FlowMediaNotReady + i-1, FALSE, eReportType.Warning, sAvailableResponse.NoResponse, iMediaArray[i].bReferenceTankState OR NOT iMediaArray[i].MediaUsedInFlow);
|
|
END_FOR]]></ST>
|
|
</Implementation>
|
|
</Action>
|
|
</POU>
|
|
</TcPlcObject> |