Eine von acht Neststationen

Legende

ST = Station

HP = Home Position

WP = Work Position

P   = Pressure (Druck)

MV = Magnetventil

PLC = SPS

BLK = Block

VC = Vertikalzylinder

HC = Horizontalzylinder

SIM = Simulation

WPC = WST Werkstückträger

Imp. = Impuls

RST = Rund-Schalt-Tisch

FB0 :  Simulation Program explained

 

Im Anlauf OB der CPU ist der Merker <FirstCycle> zurück gesetzt. Unmittelbar danach wird zuerst im OB1 zyklisch der FB0 aufgerufen und erst dann das Anwenderprogramm. Der Merker <FirstCycle> wird am Ende der Bearbeitung des OB1 wieder auf 1 gesetzt. Die CPU Simulation übernimmt die S7-PLCSIM Steuerung.

 

Netzwerk 1: Signals set to 1 or 0 while PLC run-up time

      U     "M00 ST PLC FirstCycle"          FALSE during first PLC-Cycle

      SPB   m000

      =     "E00 ST 400V CB ok"              Power 3xAC400V ok

      =     "E00 ST ELCB ok"                 Earth Leakage Circuit Breaker 3xAC400V ok

      =     "E00 ST MICO 2 ok"               24V DC MICO 2 ok

      =     "E00 ST 24L2+ ok"                Enable voltage DC24 L2+ ok

      =     "E00 ST MCB SINA ok"             Motor circuit breaker SINAMICS ok

      =     "E00 ST CB RIT ok"               Rotary Indexing Table circuit breaker ok

      =     "E00 ST CB Scann ok"             Datalogic Hand-Held-Scanner ok

      =     "E00 ST FedBak Band"             1= Feedback circuit belt conveyor off

      =     "E00 ST EStp1 CH1"               Emergency stop 1 cabinet

      =     "E00 ST Dor11 cls"               Protection door 1-1 closed

      =     "A01 RdHed Power"                Reading head power on

      =     "LNZ".X_AXIS.CTL_word.BrkOpn        W1: Bit00 Open the Brake

      R     "LNZ".X_AXIS.STS_word.DrvInTarget   W1: Bit10 Drive in Target

      Einschaltverhalten des Lesekopfes starten

      L     W#16#F0                          Reading head read bits set to 1

      T     E01 EB RdHd                      for wire break test

      L     S5T#2S                           wait 2 sec. before test begin

      SV    T00 ST RnUp SV                   Start PLC run-up time

 

      UN    T00 ST RnUp SV                   Start pulse PLC run-up time

      SV    T00 ST RnUp SV                   Start pulse PLC run-up time

      BEA                                    Wait till PLC run-up done

m000: U     T00 ST RnUp SV                   Start pulse PLC run-up done

      BEB

      =     "RdMaPLC".P101.STS.PrvsWP_ok     Workpiece previous assembly 1=OK 0=nOK

      =     "RdMaPLC".F102.STS.PrvsWP_ok     Workpiece previous assembly 1=OK 0=nOK

 

Am Ende des Simulationsprogramms ruft FB0 die Instanz FBs die, die Auswertung der steigenden und fallenden Ausgänge der Aktoren bearbeiten. Jede Instanz FB bearbeitet zyklisch 32 Aktoren *) siehe NW 7

 

Netzwerk 2: Actuators 1..32 block 1 (Imp 1.25Hz)

      Bistabil Ventil

      U     "A01 VC210 HP"                   Vertical unit up

      =     "SIM".BLK1.use_of.Act8_OutPut    Actuator out-put

      U     "SIM".BLK1.use_of.Act8_ON        Work position TRUE (on)

      =     "E01 VC210 HP"                   Vertical unit is up

 

      U     "A01 VC210 WP"                   Vertical unit down (Bistabil)

      =     "SIM".BLK1.use_of.Act9_OutPut    Actuator out-put

      U     "SIM".BLK1.use_of.Act9_ON        Work position TRUE (on)

      =     "E01 VC210 WP"                   Vertical unit is down

      Monostabil Ventil Ruhestellung offen

      U     "A00 V100 WP"                    Open air relief valve (n.o)

      =     "SIM".BLK1.use_of.Act10_OutPut   Actuator out-put

      U     "SIM".BLK1.use_of.Act10_ON       Work position TRUE (on)

      =     "E00 V100 WP"                    Air relief valve is opened

      U     "SIM".BLK1.use_of.Act10_OFF      Home position TRUE (off)

      =     "E00 V100 HP"                    Air relief valve is closed

      Monostabil Ventil Ruhestellung geschlossen

      UN    "A00 V101 WP"                    Open intake valve (n.c)

      =     "SIM".BLK1.use_of.Act11_OutPut   Actuator out-put

      U     "SIM".BLK1.use_of.Act11_ON       Work position TRUE (on)

      =     "E00 V101 WP"                    Intake valve is opened

      U     "SIM".BLK1.use_of.Act11_OFF      Home position TRUE (off)

      =     "E00 V101 HP"                    Air relief valve is closed

      DSM Rückmeldung der Spannung verzögert aus

      U     "A00 ST 24L4+ on"                Enable voltage DC24 L4+

      =     "SIM".BLK1.use_of.Act16_OutPut   Actuator out-put

      S     "E00 ST FedBak DSM"              DSM feedback circuit

      U     "SIM".BLK1.use_of.Act16_OFF      Work position TRUE (off)

      R     "E00 ST FedBak DSM"              DSM feedback circuit

      WST kommt in Stopper Position an

      UN    "A01 Z201 WP"                    open stopper

      U     "A00 ST Band CR"                 WPC-Belt drive coupling relay on

      =     "SIM".BLK1.use_of.Act19_OutPut   Actuator out-put

      U     "SIM".BLK1.use_of.Act19_ON       Work position TRUE (on)

      S     "E01 Z201 WPC at StpPos"         WPC at stopper position

      Lesekopf liest WST in Stopper Position

      U     "E01 Z201 WPC at StpPos"         WPC at stopper position

      =     "E02 Z201 ID Strobe"             Read head strobe

      WST verlässt Stopper Position

      U     "A01 Z201 WP"                    open stopper

      U     "A00 ST Band CR"                 WPC-Belt drive coupling relay on

      =     "SIM".BLK1.use_of.Act20_OutPut   Actuator out-put

      U     "SIM".BLK1.use_of.Act20_ON       Work position TRUE (on)

      R     "E01 Z201 WPC at Stp"            WPC at stopper position

      WST kommt in Pre-Stopper Position an

      U     "A01 Z200 WP"                    open pre-stopper

      U     "A00 ST Band CR"                 WPC-Belt drive coupling relay on

      =     "SIM".BLK1.use_of.Act21_OutPut   Actuator out-put

      U     "SIM".BLK1.use_of.Act21_ON       Work position TRUE (on)

      =     "E01 Z200 WPC at PrStp"          WPC at pre-stopper position

      Rundschalttisch in stopp Position

      U     "SIM".BLK1.use_of.Act32_ON       Work position TRUE (on)

      R     "SIM".BLK1.use_of.Act32          Actuator out-put

      S     "E02 RIT inPos"                  Rotary indexing table in position

      U     "A02 RIT Start"                  Rotary indexing table Start

      S     "SIM".BLK1.use_of.Act32_ON       Actuator out-put

      Rundschalttisch verlässt Stoppposition

      U     "SIM".BLK1.use_of.Act32_OFF      Home position TRUE (off)

      U     "A02 RIT Start"                  Rotary indexing table Start

      R     "E02 RIT inPos"                  Rotary indexing table in Position

      Lesekopf liest Rundschalttisch Position

      U     "E02 RIT inPos"                  Rotary indexing table in Position

      =     "E02 RIT ID Strobe"              Read head strobe

      :

      :     weitere S7-Programm

 

 

 

Netzwerk 4: Actuators 65..96 block 3 (Imp 0.625Hz)

      Simulation von XYZ-Achsen

      L     "DI SINAMICS 120S_X".DRIVE_OUTPUT.WR_PZD.MDIPos

      T     #Stat_TrgtPos.X

      L     "DI SINAMICS 120S_Y".DRIVE_OUTPUT.WR_PZD.MDIPos

      T     #Stat_TrgtPos.Y

      L     "DI SINAMICS 120S_Z".DRIVE_OUTPUT.WR_PZD.MDIPos

      T     #Stat_TrgtPos.Z

      CALL  "SIM_CRNT_POS"

       Start     :=#Start

       TrgtPos   :=#Stat_TrgtPos

       Precision :=100                          100 = 0,1 mm

       CrntPos   :=#Stat_CrntPos

      L     #Stat_CrntPos.X

      T     "DI SINAMICS 120S_X".DRIVE_INPUT.RD_PZD.XistP

      L     #Stat_CrntPos.Y

      T     "DI SINAMICS 120S_Y".DRIVE_INPUT.RD_PZD.XistP

      L     #Stat_CrntPos.Z

      T     "DI SINAMICS 120S_Z".DRIVE_INPUT.RD_PZD.XistP

 

      Rücksetzen des <DrvInTarget> Bits

      O     "USER".X_AXIS.USR_In.GoToHomePos    x-axis go to home pos.

      O     "USER".X_AXIS.USR_In.GoToAsmblyPos  x-axis go to RIT pos.

      O     "USER".X_AXIS.USR_In.GoToNokPos     x-axis go to nOK pos.

      O     "USER".X_AXIS.USR_In.GoToPicUpPos   x-axis go to pick-up pos.

      U     "LNZ".X_AXIS.In.enable_axis         HMI axis enable

      R     "LNZ".X_AXIS.STS_word.DrvInTarget   W1: Bit10 Drive in Target

      =     "LNZ".X_AXIS.STS_word.Mot_on        W1: Bit2 Drive in Operation

      =     "SIM".BLK3.use_of.Act13_OutPut      Actuator out-put

      Setzen des <DrvInTarget> Bits

      U     "SIM".BLK3.use_of.Act13_ON          Work position TRUE (on)     

      S     "LNZ".X_AXIS.STS_word.DrvInTarget   W1: Bit10 Drive in Target

      Inkrementieren/Dekrementiere des Achse-Istwerts

      U     "HMI KEY".AM204.X_AXIS.F1_JogPls    Jog direction plus

      U     "HMI KEY".AM204.X_AXIS.Enbl_WrkPos  Enable work position

      O

      U     "USER".X_AXIS.USR_In.GoToAsmblyPos  Assembly position

     U     "M00 ST OM HOME POS                 Request home position complete machine

      SPBN  x001

      L     "LNZ".X_AXIS.STS_word.CrntPos       W3+4: Motor current position (10.000=1mm)

      L     L#1

      +D   

      T     "LNZ".X_AXIS.STS_word.CrntPos       W3+4: Motor current position (10.000=1mm)

x001: O     "USER".X_AXIS.USR_In.GoToNokPos     Not ok position (rejection position)

      O     "USER".X_AXIS.USR_In.GoToPicUpPos   Pick-up position

      U     "M01 Enabled"                       Module enabled

      O

      U     "HMI KEY".AM204.X_AXIS.F2_JogMns    Jog direction minus

      U     "HMI KEY".AM204.X_AXIS.Enbl_HomPos  Enable home position

      SPBN  x002

      L     "LNZ".X_AXIS.STS_word.CrntPos       W3+4: Motor current position (10.000=1mm)

      L     L#1

      -D

      U     <0

      SPB   x002   

      T     "LNZ".X_AXIS.STS_word.CrntPos       W3+4: Motor current position (10.000=1mm)

 

x002: U     "LNZ".X_AXIS.CTL_word.BrkOpn        W1: Bit0 Open the Brake

      =     "SIM".BLK3.use_of.Act15_OutPut   Actuator out-put

      U     "SIM".BLK3.use_of.Act15_ON       Work position TRUE (on)

      =     "LNZ".X_AXIS.STS_word.BrkOpnd    W1: Bit1 Brake is opened

      SPA   b001

      :

      :     witere S7-Programm wird hier nicht bearbeitet

 

Der Instanz FB #BLK beinhaltet nur 35 AWL-Anweisungen - keinen LOOP-Befehl. Außer 5 Sprung-Anweisungen besteht der FB aus Doppelword-Anweisungen, welche die neben stehende Funktionsprinzip realisieren - entspricht 32 Aktoren. Da das Simulationsprogramm FB0 häufig lang sein kann, wurde an so einen Baustein gedacht, der die CPU-Simulationssoftware (S7-PLCSIM) entlastet. Es sollen daher nur die #BLKs freigeschaltet werden, die tatsächlich im FB0 beansprucht sind. Hier bis 96 Aktoren. Siehe #BLK3

 

Netzwerk 7: Actuators 1..32 block 1

b001: CALL  #BLK1

       SEC_IMP  :="M00 Imp 1.25Hz"

       ACT_ONOFF:=DB1299.DBD30

       ACT_WP_DI:=DB1299.DBD34

       ACT_HP_DI:=DB1299.DBD38

       REG_DW1  :=#BLK1.use_of.Register.reg_dbd1

       REG_DW2  :=#BLK1.use_of.Register.reg_dbd2

       REG_DW3  :=#BLK1.use_of.Register.reg_dbd3

       HLP_DW1  :=#BLK1.use_of.Register.hlp_dbd1

 

 

 

Netzwerk 8: Actuators 33..64 block 2

      CALL  #BLK2

       SEC_IMP  :="M00 Imp 2Hz"

       ACT_ONOFF:=DB1299.DBD96

       ACT_WP_DI:=DB1299.DBD100

       ACT_HP_DI:=DB1299.DBD104

       REG_DW1  :=#BLK2.use_of.Register.reg_dbd1

       REG_DW2  :=#BLK2.use_of.Register.reg_dbd2

       REG_DW3  :=#BLK2.use_of.Register.reg_dbd3

       HLP_DW1  :=#BLK2.use_of.Register.hlp_dbd1

 

 

 

Netzwerk 9: Actuators 65..96 block 3

      CALL  #BLK3

       SEC_IMP  :="M00 Imp 0.625Hz"

       ACT_ONOFF:=DB1299.DBD162

       ACT_WP_DI:=DB1299.DBD166

       ACT_HP_DI:=DB1299.DBD170

       REG_DW1  :=#BLK3.use_of.Register.reg_dbd1

       REG_DW2  :=#BLK3.use_of.Register.reg_dbd2

       REG_DW3  :=#BLK3.use_of.Register.reg_dbd3

       HLP_DW1  :=#BLK3.use_of.Register.hlp_dbd1

      BEA

 

 

 

Netzwerk 10: Actuators 97..128 block 4

      CALL  #BLK4

       SEC_IMP  :="M00 Imp 1Hz"

       ACT_ONOFF:=DB1299.DBD228

       ACT_WP_DI:=DB1299.DBD232

       ACT_HP_DI:=DB1299.DBD236

       REG_DW1  :=#BLK4.use_of.Register.reg_dbd1

       REG_DW2  :=#BLK4.use_of.Register.reg_dbd2

       REG_DW3  :=#BLK4.use_of.Register.reg_dbd3

       HLP_DW1  :=#BLK4.use_of.Register.hlp_dbd1

 

NW 1: Erster SPS-Zyklus

Setzen die Datenausgänge des Lesekopfes auf 1. Dies dient zur Drahtbruchkontrolle und müssen innerhalb 2 Sek auf HIGH sein sonst wird eine Störung generiert.

NW 2: Ventile und Magnetventile

Bistabile Ventile: 5 Wege, 2 oder 3 Stellungen (5/3 oder 5/2 Ventile)

Diese Ventile benötigen zwei Einschaltsignale. Hier  14 für Work Position und 12 Home Position. Dargestellt ist eine aktive Bewegung in Richtung HP. MV12 ist eingeschaltet 

NW 2: Ventile und Magnetventile

Monostabile Ventile: 5 Wege, 2 Stellungen (5/2 Ventile)

Diese Ventile benötigen ein Einschaltsignal. Die Rückstellung erfolgt sobald das gegensätzliche Signal nicht mehr anliegt. Die gängigsten instabilen Betätigungen sind Feder oder Differentialdruck. Hier 12 für Home Position. Dargestellt ist eine aktive Bewegung in Richtung HP. 

NW 1: Erster SPS-Zyklus

Setzen notwendige Signale um nach CPU-Anlauf Störungen zu meiden.

NW 2: Pre-Stopper und Stopper

Der 1.WST befindet sich gerade in Bewegung. Doch der Durchgang ist gesperrt, da sich ein WST in Stopper Station befindet. Sobald der 2.WST seine Position verlässt gibt der Pre-Stopper den Weg für den 1.WST frei. Ist sein Initiator bedämpft, so sperrt der Pre-Stopper den Durchgang für den nachkommenden WST. Der Durchgang für den 2.WST ist erst nach der Bearbeitung der Station frei. Nach Verlassen seines Initiator sperrt der Stopper den Durchgang für den 1.WST. 

NW 2: Rund-Schalt-Tisch

Der RST ist mit acht Nester ausgestattet. Bei einer Taktung (1/8) des RSTs macht der kleine Kreis eine volle Umdrehung (360°) bis der Initiator InPos erneut bedämpft ist.

NW 4: Achse Istwert-Simulation Jog-Betrieb

Die Istwert-Position ist je nach Bewegungsrichtung in jedem SPS-Zyklus um 1 inkrementiert oder dekrementiert. Ferner, nicht wie im Jog-Betrieb, bewegt sich die Achse solange bis das Bit <DrvInTarget> gesetzt ist. Dies wird erst zurück gesetzt und dann gesetzt.

NW 4: Achse-Bewegung-Simulation "SIM_CRNT_POS"

// Distance between two points

// P1=x1,y1,z1,r1 P2=x2,y2,z2,r2

#tmp_distance := SQRT(SQR(#CrntPos.X - #TrgtPos.X) +

                    SQR(#CrntPos.Y - #TrgtPos.Y) +

                    SQR(#CrntPos.Z - #TrgtPos.Z) +

                    SQR(#CrntPos.R - #TrgtPos.R));

#TrgtReached:=#tmp_distance <= #Precision;

 

// Axis movement simulation

IF #Start AND NOT #TrgtReached THEN

  IF #TrgtPos.X <> #CrntPos.X THEN

   IF #TrgtPos.X < #CrntPos.X THEN

         #CrntPos.X := #CrntPos.X - #Precision;

  ELSE

       #CrntPos.X := #CrntPos.X + #Precision;

     END_IF;

  END_IF;

  IF #TrgtPos.Y <> #CrntPos.Y THEN

     IF #TrgtPos.Y < #CrntPos.Y THEN

        #CrntPos.Y := #CrntPos.Y - #Precision;

  ELSE

         #CrntPos.Y := #CrntPos.Y + #Precision;

    END_IF;

  END_IF;

  IF #TrgtPos.Z <> #CrntPos.Z THEN

     IF #TrgtPos.Z < #CrntPos.Z THEN

      #CrntPos.Z := #CrntPos.Z - #Precision;

  ELSE

         #CrntPos.Z := #CrntPos.Z + #Precision;

     END_IF;

  END_IF;

  IF #TrgtPos.R <> #CrntPos.R THEN

   IF #TrgtPos.R < #CrntPos.R THEN

      #CrntPos.R := #CrntPos.R - #Precision;

     ELSE

       #CrntPos.R := #CrntPos.R + #Precision;

     END_IF;

  END_IF;

END_IF;

 

Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO