FUNCTION_BLOCK "AMR_TrolleyVersorgung"
TITLE = Arbeitsplätze mit Leertrolleys versorgen
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
//COPYRIGHT by Ingenieurbüro A.Emmert
//Ortsstr.33, D-869925 Fuchstal (Germany)
//Tel.: 0049(0)8243-960629
//
   VAR_OUTPUT 
      Arbeitsplatz : Word;
   END_VAR

   VAR 
      Last_Arbeitsplatz : Word;
   END_VAR

   VAR_TEMP 
      ArbeitsPlatz_zum_Versorgen : Word;
      Freiplätze_Arbeitsplatz : Int;
   END_VAR


BEGIN
NETWORK
TITLE = Initialisierung
      L 0;
      T #ArbeitsPlatz_zum_Versorgen;
      T #Freiplätze_Arbeitsplatz;

NETWORK
TITLE = Arbeitsplatz PS5 mit größtem Bedarf?
      L "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB PS5E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#A500;
      T #ArbeitsPlatz_zum_Versorgen;

PS5E:      NOP 0;

NETWORK
TITLE = Arbeitsplatz PS4 mit größtem Bedarf?
      L "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB PS4E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#A400;
      T #ArbeitsPlatz_zum_Versorgen;

PS4E:      NOP 0;

NETWORK
TITLE = Arbeitsplatz PS3 mit größtem Bedarf?
      L "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB PS3E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#A300;
      T #ArbeitsPlatz_zum_Versorgen;

PS3E:      NOP 0;

NETWORK
TITLE = Arbeitsplatz PS2 mit größtem Bedarf?
      L "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB PS2E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#A200;
      T #ArbeitsPlatz_zum_Versorgen;

PS2E:      NOP 0;

NETWORK
TITLE = Arbeitsplatz PS1 mit größtem Bedarf?
      L "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB PS1E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#A100;
      T #ArbeitsPlatz_zum_Versorgen;

PS1E:      NOP 0;

NETWORK
TITLE = Versorgung von MPS von Schleuse 3481 sichergestellt?
      U "BG3481" ;//Trolley vorhanden
      O "MB3481";//Schleuse noch geöffnet
      SPB Fertig;

NETWORK
TITLE = Arbeitsplatz MPS3 mit größtem Bedarf?
      L "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB MPS3E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#B300;
      T #ArbeitsPlatz_zum_Versorgen;

MPS3E:      NOP 0;

NETWORK
TITLE = Arbeitsplatz MPS2 mit größtem Bedarf?
      L "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB MPS2E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#B200;
      T #ArbeitsPlatz_zum_Versorgen;

MPS2E:      NOP 0;

NETWORK
TITLE = Arbeitsplatz MPS1 mit größtem Bedarf?
      L "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI.Frei_Plätze;//Mehr Freiplätze vorhanden?
      L #Freiplätze_Arbeitsplatz;
      <=I                      ;//Nein !
      SPB MPS1E;

      TAK;
      T #Freiplätze_Arbeitsplatz;

      L 16#B100;
      T #ArbeitsPlatz_zum_Versorgen;

MPS1E:      NOP 0;

NETWORK
TITLE = Arbeitsplatz übergeben
Fertig:      L #ArbeitsPlatz_zum_Versorgen;
      T #Arbeitsplatz;
      T #Last_Arbeitsplatz ;//Letzten Arbeitsplatz speichern (oder erst bei Draussen-FC)

NETWORK
TITLE = Ende
      BE;

END_FUNCTION_BLOCK

