This commit is contained in:
2026-01-08 11:08:17 +01:00
commit fe882dc444
311 changed files with 511562 additions and 0 deletions

View 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>