Initial
This commit is contained in:
175
PLC/4 HV/POUs/HV_IO_FB.TcPOU
Normal file
175
PLC/4 HV/POUs/HV_IO_FB.TcPOU
Normal file
@@ -0,0 +1,175 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
|
||||
<POU Name="HV_IO_FB" Id="{147a9e62-dc3f-4b6b-8708-0efd1b986735}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK HV_IO_FB EXTENDS Station_GENERAL_IO_FB
|
||||
VAR_INPUT
|
||||
Config : REFERENCE TO sHVConfig;
|
||||
bOutOverpressureN2 AT %Q* : BOOL;
|
||||
bOutExhaust AT %Q* : BOOL;
|
||||
bOutValve AT %Q* : BOOL;
|
||||
|
||||
PressureController : ITV2050_FB;
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Shutter : PneumaticCylinder_FB;
|
||||
Chamber : PneumaticCylinder_FB;
|
||||
ChuckVacuum : PneumaticCylinder_FB;
|
||||
|
||||
|
||||
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
bInOverTemp AT %I* : BOOL;
|
||||
bInPressureCylinderOk AT %I* : BOOL;
|
||||
bInShutterSafety AT %I* : BOOL;
|
||||
InChamberPressure AT %I* : INT;
|
||||
rInChamberPressure : LREAL;
|
||||
bInChamberPressureOk : BOOL;
|
||||
bInChamberNoPressure : BOOL;
|
||||
bInRobotFree AT %I* : BOOL;
|
||||
bInRobotNotFree AT %I* : BOOL;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[MediaCheck();
|
||||
|
||||
IF NOT bInShutterSafety THEN
|
||||
Shutter.Up(TRUE);
|
||||
END_IF
|
||||
//
|
||||
IF NOT Shutter.bInUp OR NOT Chamber.bInUp OR NOT bInRobotFree OR bInRobotNotFree THEN
|
||||
iStationStatus.Ist.PrepIn := FALSE;
|
||||
iStationStatus.Ist.PrepOut := FALSE;
|
||||
END_IF
|
||||
|
||||
Shutter();
|
||||
Chamber();
|
||||
ChuckVacuum();
|
||||
|
||||
iMediaArray[eHVMedienNamen.ChamberClose].Disable := NOT bInPressureCylinderOk OR NOT Shutter.bInDown;
|
||||
iMediaArray[eHVMedienNamen.ChamberOpen].Disable := NOT bInPressureCylinderOk OR NOT Shutter.bInDown;
|
||||
|
||||
IF NOT bInPressureCylinderOk THEN
|
||||
Chamber.bOutUp := FALSE;
|
||||
Chamber.bOutDown := FALSE;
|
||||
END_IF
|
||||
|
||||
IF NOT Shutter.bInDown THEN
|
||||
Chamber.bOutDown := FALSE;
|
||||
END_IF
|
||||
|
||||
iMediaArray[eHVMedienNamen.Valve].Input := bInPressureCylinderOk;
|
||||
|
||||
rInChamberPressure := InChamberPressure;
|
||||
rInChamberPressure := rInChamberPressure / 16#7FFF;
|
||||
rInChamberPressure := rInChamberPressure * 10;
|
||||
|
||||
CASE iStationStatus.StationType OF
|
||||
TypeHVHot:
|
||||
rInChamberPressure := rInChamberPressure -1;
|
||||
END_CASE
|
||||
|
||||
bInChamberPressureOk := ABS(rInChamberPressure - PressureController.rOutTargetPressure) < 0.1;
|
||||
bInChamberNoPressure := rInChamberPressure < 0.02;
|
||||
|
||||
iMediaArray[eHVMedienNamen.OverpressureN2].Input := bInChamberPressureOk;
|
||||
iMediaArray[eHVMedienNamen.Exhaust].Input := bInChamberNoPressure;
|
||||
|
||||
IF NOT Chamber.bInDown THEN
|
||||
bOutOverpressureN2 := FALSE;
|
||||
END_IF
|
||||
//
|
||||
|
||||
//Vacuum
|
||||
ChuckVacuum.bInDown := NOT ChuckVacuum.bInUp;
|
||||
//iMediaArray[eHVMedienNamen.VacuumOn].Input := bInVacuumOk;
|
||||
//iMediaArray[eHVMedienNamen.VacuumOff].Input := NOT bInVacuumOk;
|
||||
//
|
||||
|
||||
PressureController();]]></ST>
|
||||
</Implementation>
|
||||
<Method Name="Initialization" Id="{ee221bc4-5d24-4a1e-9c73-9b3abc1ca4c2}">
|
||||
<Declaration><![CDATA[METHOD Initialization : BOOL
|
||||
VAR_INPUT
|
||||
iStation : INT;
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
ShutterUpServiceName : ARRAY[0..NumberOfLanguages] OF T_MaxString := ['Open$NShutter', 'Shutter$NOffen'];
|
||||
ShutterDownServiceName : ARRAY[0..NumberOfLanguages] OF T_MaxString := ['Close$NShutter', 'Shutter$NSchließen'];
|
||||
|
||||
ChamberUpServiceName : ARRAY[0..NumberOfLanguages] OF T_MaxString := ['Open$NChamber', 'Kammer$NOffen'];
|
||||
ChamberDownServiceName : ARRAY[0..NumberOfLanguages] OF T_MaxString := ['Close$NChamber', 'Kammer$NSchließen'];
|
||||
|
||||
|
||||
ChuckVacuumOnServiceName : ARRAY[0..NumberOfLanguages] OF T_MaxString := ['Auflagevakuum$NEin', 'Auflagevakuum$NEin'];
|
||||
ChuckVacuumOffServiceName : ARRAY[0..NumberOfLanguages] OF T_MaxString := ['Auflagevakuum$NAus', 'Auflagevakuum$NAus'];
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[InitializationExt(iStation);
|
||||
|
||||
Shutter.Initialization(
|
||||
iStation,
|
||||
eHVMedienNamen.ShutterOpen,
|
||||
eHVMedienNamen.ShutterClose,
|
||||
HV_ErrorNr.eTimeoutShutterOpen,
|
||||
ShutterUpServiceName,
|
||||
ShutterDownServiceName
|
||||
);
|
||||
Shutter.TimeOut := T#10S;
|
||||
|
||||
Chamber.Initialization(
|
||||
iStation,
|
||||
eHVMedienNamen.ChamberOpen,
|
||||
eHVMedienNamen.ChamberClose,
|
||||
HV_ErrorNr.eTimeoutChamberOpen,
|
||||
ChamberUpServiceName,
|
||||
ChamberDownServiceName
|
||||
);
|
||||
Chamber.TimeOut := T#10S;
|
||||
|
||||
|
||||
ChuckVacuum.Initialization(
|
||||
iStation,
|
||||
eHVMedienNamen.VacuumOn,
|
||||
eHVMedienNamen.VacuumOff,
|
||||
HV_ErrorNr.eNoWafer,
|
||||
Peripherie_GVL.ServiceNameChuckVacuumOn,
|
||||
Peripherie_GVL.ServiceNameChuckVacuumOff
|
||||
);
|
||||
ChuckVacuum.TimeOut := T#10S;
|
||||
|
||||
iMediaArray[eHVMedienNamen.OverpressureN2].ServiceName[0] := 'Überdruck$NN2';
|
||||
iMediaArray[eHVMedienNamen.OverpressureN2].bReferenceControl REF= bOutOverpressureN2;
|
||||
iMediaArray[eHVMedienNamen.OverpressureN2].bReferenceResetControl REF= bOutExhaust;
|
||||
iMediaArray[eHVMedienNamen.OverpressureN2].InputAvailable := TRUE;
|
||||
|
||||
iMediaArray[eHVMedienNamen.Exhaust].ServiceName[0] := 'Exhaust';
|
||||
iMediaArray[eHVMedienNamen.Exhaust].bReferenceControl REF= bOutExhaust;
|
||||
iMediaArray[eHVMedienNamen.Exhaust].bReferenceResetControl REF= bOutOverpressureN2;
|
||||
iMediaArray[eHVMedienNamen.Exhaust].InputAvailable := TRUE;
|
||||
|
||||
|
||||
iMediaArray[eHVMedienNamen.Valve].ServiceName[0] := 'Ventil';
|
||||
iMediaArray[eHVMedienNamen.Valve].bReferenceControl REF= bOutValve;
|
||||
iMediaArray[eHVMedienNamen.Valve].InputAvailable := TRUE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Action Name="MediaCheck" Id="{a9750f69-cba0-4bdb-9a48-68a3453c159e}">
|
||||
<Implementation>
|
||||
<ST><![CDATA[CASE iStationStatus.StationType OF
|
||||
TypeHVHot:
|
||||
AlarmSend(iStation, HV_ErrorNr.eOverTemp, FALSE, eReportType.Warning, sAvailableResponse.Ok, NOT bInOverTemp);
|
||||
END_CASE
|
||||
|
||||
DelayTimer(IN := TRUE AND InAktorspannung, PT := T#5S);
|
||||
IF NOT DelayTimer.Q THEN
|
||||
RETURN;
|
||||
END_IF
|
||||
|
||||
]]></ST>
|
||||
</Implementation>
|
||||
</Action>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
Reference in New Issue
Block a user