245 lines
7.2 KiB
XML
245 lines
7.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.13">
|
|
<POU Name="MEDIA_MAIN_FB" Id="{c28cbc9e-e87c-4ffe-951e-c8ecddc3b3bb}" SpecialFunc="None">
|
|
<Declaration><![CDATA[FUNCTION_BLOCK MEDIA_MAIN_FB EXTENDS Station_GENERAL_MAIN_FB IMPLEMENTS I_STATION_CMD_CALL
|
|
VAR_INPUT
|
|
IO : MEDIA_IO_FB;
|
|
END_VAR
|
|
VAR_OUTPUT
|
|
END_VAR
|
|
VAR
|
|
Config : sMediaConfig;
|
|
ConfigOld : sMediaConfig;
|
|
i : INT;
|
|
|
|
PumpTimer : TON;
|
|
bAutoEnter : BOOL;
|
|
END_VAR
|
|
]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[]]></ST>
|
|
</Implementation>
|
|
<Method Name="FB_Init" Id="{231267af-e423-4fde-b02d-c8b89e8056d1}">
|
|
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
|
//The return value is not evaluated. For a specific influence, you can also declare the
|
|
//methods explicitly and provide additional code there with the standard initialization
|
|
//code. You can evaluate the return value.
|
|
METHOD FB_Init: BOOL
|
|
VAR_INPUT
|
|
bInitRetains: BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold)
|
|
bInCopyCode: BOOL; // TRUE: the instance will be copied to the copy code afterward (online change)
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[_VisuName := 'MEDIA';]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="INIT" Id="{3fbb1f09-149e-4f88-af9d-73251343ea7a}">
|
|
<Declaration><![CDATA[METHOD INIT : BOOL
|
|
VAR
|
|
i : int;
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[CASE _Step OF
|
|
0:
|
|
FOR i := 1 TO 3 DO
|
|
IF NOT IO.DoorLock[i].Lock() THEN
|
|
RETURN;
|
|
END_IF
|
|
END_FOR
|
|
_Step := 10;
|
|
10:
|
|
FOR i := 1 TO vJulaboM DO
|
|
Julabo[i].rInTargetTemperature := 21;
|
|
Julabo[i].bInEnable := TRUE;
|
|
END_FOR
|
|
INIT := TRUE;
|
|
_Step := 0;
|
|
END_CASE
|
|
|
|
]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="Initialization" Id="{330e0fdb-1091-4299-89b4-04cd520e3af1}">
|
|
<Declaration><![CDATA[METHOD Initialization : BOOL
|
|
VAR_INPUT
|
|
iStation : INT;
|
|
END_VAR
|
|
VAR
|
|
END_VAR]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[InitializationExt(iStation);
|
|
|
|
iStationStatus.NoStopServiceExit := TRUE;
|
|
iStationStatus.NoAutoStart := TRUE;
|
|
iStationStatus.NoOperationMode := TRUE;
|
|
|
|
ConfigManagement.Initialization(ADR(Config), ADR(ConfigOld), SIZEOF(Config), 'sMediaConfig', 'MEDIA');
|
|
ConfigPlausibility REF= Config.ConfigPlausibility;
|
|
|
|
iStationStatus.StationName := 'Media';
|
|
iStationStatus.ErrorList := 'MEDIA_ErrorNr';
|
|
|
|
IO.Initialization(iStation);
|
|
IO.Config REF= Config;
|
|
|
|
Safety_PRG.vMediaSafetyAvailable := TRUE;
|
|
|
|
|
|
Julabo[1].NAME := 'Julabo DIW';
|
|
Julabo[2].NAME := 'Julabo SEF';
|
|
Julabo[3].NAME := 'Julabo SF';
|
|
|
|
FOR i := 1 TO vJulaboM DO
|
|
Julabo[i].ControlIndex_Enable := eMediaMedienNamen.Julabo1On + i - 1;
|
|
Julabo[i].ErrorIndex_NoConnection := Media_ErrorNr.eJulaboCommunicationError+i-1;
|
|
Julabo[i].ErrorIndex_System := Media_ErrorNr.eJulaboSystemError+i-1;
|
|
Julabo[i].ErrorIndex_OutOfRange := Media_ErrorNr.eJulaboTempNotInRange+i-1;
|
|
Julabo[i].rInMinTemperature := 20;
|
|
Julabo[i].rInMaxTemperature := 80;
|
|
|
|
Julabo[i].Initialization(
|
|
iStation,
|
|
JulaboIPAddress[i]
|
|
);
|
|
END_FOR
|
|
|
|
|
|
LeviModbusMaster[1].iStation := iStation;
|
|
LeviModbusMaster[2].iStation := iStation;
|
|
LeviModbusMaster[3].iStation := iStation;
|
|
|
|
FOR i := 1 TO LeviNumberOfPump DO
|
|
CASE i OF
|
|
8,9:
|
|
LeviPump[i].vMixTank := TRUE;
|
|
ELSE
|
|
LeviPump[i].vAutoFill := TRUE;
|
|
END_CASE
|
|
|
|
LeviPump[i].Config REF= Config.PumpConfig[i];
|
|
|
|
LeviPump[i].EmptyErrorIndex := MEDIA_ErrorNr.eTankEmpty +i;
|
|
LeviPump[i].OverFullErrorIndex := MEDIA_ErrorNr.eTankOverFull +i;
|
|
|
|
LeviPump[i].Initialization(
|
|
iStation := iStation,
|
|
UnitID := INT_TO_BYTE(i),
|
|
eMediaMedienNamen.TankValve+i-1,
|
|
eMediaMedienNamen.TankFeed+i-1,
|
|
eMediaMedienNamen.TankDrain+i-1,
|
|
eMediaMedienNamen.TankRecirculation+i-1,
|
|
eMediaMedienNamen.TankDIW+i-1,
|
|
eMediaMedienNamen.TankClean+i-1,
|
|
MEDIA_ErrorNr.eFillTimeout + i
|
|
);
|
|
END_FOR
|
|
|
|
LeviPump[1].MB REF= LeviModbusMaster[1];
|
|
LeviPump[4].MB REF= LeviModbusMaster[1];
|
|
LeviPump[9].MB REF= LeviModbusMaster[1];
|
|
|
|
LeviPump[7].MB REF= LeviModbusMaster[2];
|
|
LeviPump[3].MB REF= LeviModbusMaster[2];
|
|
LeviPump[8].MB REF= LeviModbusMaster[2];
|
|
|
|
LeviPump[5].MB REF= LeviModbusMaster[3];
|
|
LeviPump[6].MB REF= LeviModbusMaster[3];
|
|
LeviPump[2].MB REF= LeviModbusMaster[3];
|
|
|
|
LeviPump[1].MediaName := 'Tank System 1 C2H4O2(99%)';
|
|
LeviPump[2].MediaName := 'Tank System 2 SF';
|
|
LeviPump[2].vTankRecirculation := TRUE;
|
|
LeviPump[3].MediaName := 'Tank System 3 HNO2(65%)';
|
|
LeviPump[4].MediaName := 'Tank System 4 C2H4O2(10%)';
|
|
LeviPump[5].MediaName := 'Tank System 5 HF(40%)';
|
|
LeviPump[6].MediaName := 'Tank System 6 SF';
|
|
LeviPump[7].MediaName := 'Tank System 7 HF(40%)';
|
|
LeviPump[8].MediaName := 'Tank System 8 (1+6) SEF';
|
|
LeviPump[8].vTankRecirculation := TRUE;
|
|
LeviPump[9].MediaName := 'Tank System 9 (3+7) FILMÄTZEN';
|
|
LeviPump[9].vTankRecirculation := TRUE;
|
|
|
|
Levi2PumpMixSystem[1].System REF= LeviPump[9];
|
|
Levi2PumpMixSystem[1].Pump1 REF= LeviPump[3];
|
|
Levi2PumpMixSystem[1].Pump2 REF= LeviPump[7];
|
|
|
|
Levi2PumpMixSystem[1].iStation := iStation;
|
|
Levi2PumpMixSystem[1].TargetFlow REF= Config.MixTargetFlow[1];
|
|
Levi2PumpMixSystem[1].TargetRatio REF= Config.MixRatio[1];
|
|
Levi2PumpMixSystem[1].TargetVolume REF= Config.MixTargetVolume[1];
|
|
|
|
Levi2PumpMixSystem[2].System REF= LeviPump[8];
|
|
Levi2PumpMixSystem[2].Pump1 REF= LeviPump[1];
|
|
Levi2PumpMixSystem[2].Pump2 REF= LeviPump[6];
|
|
|
|
Levi2PumpMixSystem[2].iStation := iStation;
|
|
Levi2PumpMixSystem[2].TargetFlow REF= Config.MixTargetFlow[2];
|
|
Levi2PumpMixSystem[2].TargetRatio REF= Config.MixRatio[2];
|
|
Levi2PumpMixSystem[2].TargetVolume REF= Config.MixTargetVolume[2];
|
|
|
|
HV_SCHUSTER.Initialization(
|
|
iStation := FirstHV,
|
|
IPAdress := '192.168.1.203',
|
|
Port := 7
|
|
);
|
|
HV_SCHUSTER.NoComErrorIndex := HV_ErrorNr.eNoCommunication;
|
|
|
|
|
|
|
|
iMediaArray[eMediaMedienNamen.AutoEnter].ServiceName[0] := _VisuName;
|
|
iMediaArray[eMediaMedienNamen.AutoEnter].ServiceName[1] := _VisuName;
|
|
iMediaArray[eMediaMedienNamen.AutoEnter].bReferenceControl REF= bAutoEnter;
|
|
iMediaArray[eMediaMedienNamen.AutoEnter].NoErrorInput := TRUE;
|
|
iMediaArray[eMediaMedienNamen.AutoEnter].InputAvailable := TRUE;]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="MAIN" Id="{2d83faa9-aac5-46d5-a5bf-b7d022b2d36d}">
|
|
<Declaration><![CDATA[METHOD MAIN : BOOL
|
|
VAR_INPUT
|
|
END_VAR
|
|
]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[VisuElems.CURRENTLANGUAGE := Config.Language;
|
|
IF Config.Language = 'de' THEN
|
|
Language := 1;
|
|
ELSE
|
|
Language := 0;
|
|
END_IF
|
|
|
|
HV_SCHUSTER();
|
|
|
|
IO();
|
|
|
|
FOR i := 1 TO LeviNumberOfModbusMaster DO
|
|
LeviModbusMaster[i]();
|
|
END_FOR
|
|
|
|
FOR i := 1 TO LeviNumberOfPump DO
|
|
LeviPump[i]();
|
|
END_FOR
|
|
|
|
FOR i := 1 TO 2 DO
|
|
Levi2PumpMixSystem[i]();
|
|
END_FOR
|
|
|
|
FOR i := 1 TO vJulaboM DO
|
|
Julabo[i]();
|
|
END_FOR
|
|
|
|
IF bAutoEnter THEN
|
|
bAutoEnter := FALSE;
|
|
StationCMD.AutomaticEnter(iStation);
|
|
END_IF
|
|
|
|
iMediaArray[eMediaMedienNamen.AutoEnter].Input := iStationStatus.Ist.InitDone;]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
<Method Name="TurnOffAllMedia" Id="{d0aafb18-3800-45a2-b07a-8042f0a67795}">
|
|
<Declaration><![CDATA[METHOD TurnOffAllMedia : BOOL
|
|
]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[;]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
</POU>
|
|
</TcPlcObject> |