Initial
This commit is contained in:
245
PLC/8 Media/POUs/MEDIA_MAIN_FB.TcPOU
Normal file
245
PLC/8 Media/POUs/MEDIA_MAIN_FB.TcPOU
Normal file
@@ -0,0 +1,245 @@
|
||||
<?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>
|
||||
Reference in New Issue
Block a user