Schleife in S5 programmieren

housi83

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Ich habe eine Frage zu einem S5 Programm. Ich möchte in einem FB alle 100ms einen Wert in einen DB abspeichern. Dafür habe ich mir mit Hilfe eines Sprunges eine Schleife gebastelt, die so funktionieren soll wie der LOOP Befehl in der S7.
Bei jedem Durchlauf der Schleife wird die Adresse im DB erhöht, so das ich später auf alle Werte zugreifen kann, und den Mittelwert daraus berechnen kann.
Nun meine eigentliche Frage: Wird das so funktionieren? Die Maschine ist in Betrieb und wird für die Umprogrammierung nur kurz gestopppt. Möchte also nicht für lange Stillstand verantwortlich sein.
Die nächste Frage ist, wenn ich die Schleife jetzt z.B. 30 mal durchlaufen lasse, sind das 3 Sekunden. Wird der gesamt Rest des Programmes nicht mehr abgearbeitet??? Wie kann ich das Problem anders lösen?

Vielen Dank schonmal für eure Hilfe

housi
 
Das wird so nicht gehen. Die SPS geht in Stop, wegen Zykluszeitüberschreitung, alles steht! Schleifen sind mit Vorsicht zu genießen.
Du könntest z.Bsp. einen Timer nehmen, ihn auf 100ms stellen und damit eine Flanke erzeugen, welche dann für den einmaligen Durchlauf deines selbstgeschriebenen Speicherprogramms sorgt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo und Danke für die schnelle Antwort.

Dann habe ich nur das Problem, wie ich die Adresse im DB festlege. Diese soll sich ja nach jedem speichern erhöhen. Oder hab ich da jetzt irgendwie ein Brett vorm Kopf?

Noch eine Frage: Wenn die CPU direkt in Stop gehen würde, wofür gibt es dann z.B. in der S7 den LOOP Befehl. Da müsste die S7 doch dann auch in Stop gehen. Oder wird dieser Befehl doch anders verarbeitet?

Dankeschön
 
Wie lang ist denn die Zykluszeit der SPS im Moment, wie genau müssen die 100ms sein?
 
Also ich denke so +-10ms wären schon akzeptabel.

Die aktuelle Zykluszeit liegt laut Aussage meines Kolegen bei 8ms.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo und Danke für die schnelle Antwort.

Dann habe ich nur das Problem, wie ich die Adresse im DB festlege. Diese soll sich ja nach jedem speichern erhöhen. Oder hab ich da jetzt irgendwie ein Brett vorm Kopf?

Noch eine Frage: Wenn die CPU direkt in Stop gehen würde, wofür gibt es dann z.B. in der S7 den LOOP Befehl. Da müsste die S7 doch dann auch in Stop gehen. Oder wird dieser Befehl doch anders verarbeitet?

Dankeschön

Man kann schon Loop anwenden, aber man muß das mit Augenmaß tun.
3 Sekunden sind tödlich für eine SPS, stell dir vor da fährt ein Motor auf seinen Endschalter und die SPS hängt gerade in einer Loop.

S5, langer her ..., da gibt es den Bearbeitebefehl. Das ist eigenlich sogar einfacher als bei der S7.

..

Ah, gefunden, guckst du mal hier: http://www.sps-forum.de/showthread.php?t=1236&highlight=Bearbeitebefehl

Besser gleich das: http://www.sps-forum.de/showpost.php?p=6199&postcount=2
 
Also LOOP nur wenn die Zeit wesentlich kürzer ist, und wo die Zykluszeit nicht so kritisch ist.

Alles klar, dann werde ich mal versuchen über einen Timer alle 100ms in meinen Umrechnungs und Speicherbaustein zu springen, und dann dort jedesmal wie im Beispiel gezeigt die Adresse erhöhen.

Vielen Dank!
 
Also LOOP nur wenn die Zeit wesentlich kürzer ist, und wo die Zykluszeit nicht so kritisch ist.

Alles klar, dann werde ich mal versuchen über einen Timer alle 100ms in meinen Umrechnungs und Speicherbaustein zu springen, und dann dort jedesmal wie im Beispiel gezeigt die Adresse erhöhen.

Vielen Dank!

Das wäre, meiner Meinung nach, der richtige Weg! :p
 
So ein Loop gehört nicht in eine SPS ...

Hallo,

housi83 schrieb:
Ich möchte in einem FB alle 100ms einen Wert in einen DB abspeichern. Dafür habe ich mir mit Hilfe eines Sprunges eine Schleife gebastelt, die so funktionieren soll wie der LOOP Befehl in der S7.

Ein LOOP über 3 sec. ist hier der der vollkommen falsche Ansatz. Auch die gute, alte S5 hat Weckalarme im 100ms Raster, man muss halt nur den Zeiger auf den zuletzt beschriebenen Datenbereich retten ...

Gruß

Question_mark
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die Zeit einigermassen genau sein soll, geht das NUR mit OB 13 & Co.
Ein Timer im Programm hätte immer eine "Unschärfe" in der Höhe der Zykluszeit!
Zu beachten ist beim Aufruf der Alarme (=Interrupt), wo dieser aufgerufen wird! Normalerweise wird (wenn ich mich richtig erinnere) nur an Bausteingrenzen in den OB gesprungen.
Wie generell bei Interrupts muss man aufpassen, was man in diesem OB macht, damit das restliche Programm hinterher richtig weitergeht.
Z.B. beim Laden von Werten in den Akku oder "Schmiermerkern"

Adressierung:
Es gab und gibt in S5 die indirekte Bearbeitung (die m.E. teilweise besser ist als die in S7):

Du schreibst in den OB:

L MB1 Das wäre der Wert, den Du in den DB schreiben willst
B MB 2 Im MB2 muss die Nummer des Datenwortes stehen (ist also der Zähler)
T DW 0 Hiermit wird der Wert aus MB 1 in das Datenwort geschrieben, dessen Nummer in MB 2 steht


Dann den Zähler, also MB 2 erhoehen

L MB 2
L KF +1
+F
T MB 2

Oder so ähnlich! Gaaaanz genau weiss ich's nicht mehr! Sorry!
 
Zuletzt bearbeitet:
Hier ist einmal ein Programmbeispiel für einen Ringspeicher in STEP 5:

Code:
OB 1                                 F:RINGSPST.S5D                  LAE=34   
                                                                     Blatt   1
Netzwerk 1
0000      :                                  ********************************
0001      :                                  Ringspeicher
0002      :                                  ********************************
0003      :
0004      :                                  ================================
0005      :                                  Taktgeber 5 Sekunden
0006      :                                  ================================
0007      :
0008      :UN  M   10.0                      Taktgeber 5 Sekunden
0009      :L   KT 005.2                      5 * 1 Sekunde
000B      :SE  T   10
000C      :
000D      :U   T   10
000E      :=   M   10.0                      Taktgeber 5 Sekunden
000F      :
0010      :***
 
Netzwerk 2
0011      :                                  ================================
0012      :                                  Ringspeicher
0013      :                                  ================================
0014      :
0015      :U   M   10.0                      Taktgeber 5 Sekunden
0016      :SPB FB  10                        Ringspeicher
0017 Name :SPEICHER
0018 DB   :    DB  10
0019 LAEN :    KF +10
001A WERT :    MW 100
001B      :
001C      :BE

Code:
FB 10                                F:RINGSPST.S5D                  LAE=60   
                                                                     Blatt   1
Netzwerk 1
Name :SPEICHER
Bez  :DB        E/A/D/B/T/Z: B
Bez  :LAEN      E/A/D/B/T/Z: D  KM/KH/KY/KC/KF/KT/KZ/KG: KF
Bez  :WERT      E/A/D/B/T/Z: E  BI/BY/W/D: W
 
000E      :                                  ================================
000F      :                                  Ringspeicher
0010      :                                  ================================
0011      :
0012      :B   =DB                           Ringspeicher
0013      :
0014      :L   DW   0                        Ringspeicher Index
0015      :L   KF +1                         Ringspeicher Index Wert 1
0017      :<F
0018      :SPB =M01
0019      :L   DW   0                        Ringspeicher Index
001A      :LW  =LAEN                         Ringspeicher Index Wert Laenge
001B      :>F
001C      :SPB =M01
001D      :SPA =M02
001E M01  :L   KF +1                         Ringspeicher Index Wert 1
0020      :T   DW   0                        Ringspeicher Index
0021 M02  :
0022      :
0023      :L   =WERT                         Wert
0024      :B   DW   0                        Ringspeicher Index
0025      :T   DW   0                        Ringspeicher
0026      :
0027      :
0028      :L   DW   0                        Ringspeicher Index
0029      :LW  =LAEN                         Ringspeicher Index Wert Laenge
002A      :<F
002B      :SPB =M03
002C      :SPA =M04
002D M03  :L   DW   0                        Ringspeicher Index
002E      :I        1                        + 1
002F      :T   DW   0                        Ringspeicher Index
0030      :SPA =M05
0031 M04  :L   KF +1                         Ringspeicher Index Wert 1
0033      :T   DW   0                        Ringspeicher Index
0034 M05  :
0035      :
0036      :BE

Code:
DB10    F:RINGSPST.S5D                             LAE=16  /4                
                                                                     Blatt   1
     0:     KF = +00000;                    Ringspeicher Index
     1:     KF = +00000;                    Ringspeicher Wert 1
     2:     KF = +00000;                    Ringspeicher Wert 2
     3:     KF = +00000;                    Ringspeicher Wert 3
     4:     KF = +00000;                    Ringspeicher Wert 4
     5:     KF = +00000;                    Ringspeicher Wert 5
     6:     KF = +00000;                    Ringspeicher Wert 6
     7:     KF = +00000;                    Ringspeicher Wert 7
     8:     KF = +00000;                    Ringspeicher Wert 8
     9:     KF = +00000;                    Ringspeicher Wert 9
    10:     KF = +00000;                    Ringspeicher Wert 10
    11:

Code:
BB 10                                F:RINGSPST.S5D                  Blatt   1
 
          Operanden:        Formate:                                            
 
          T    10           KT                                                  
 
          MW  100           KF                                                  
 
          DB   10                                                               
 
          DW    0           KF                                                  
          DW    1           KF                                                  
          DW    2           KF                                                  
          DW    3           KF                                                  
          DW    4           KF                                                  
          DW    5           KF                                                  
          DW    6           KF                                                  
          DW    7           KF                                                  
          DW    8           KF                                                  
          DW    9           KF                                                  
          DW   10           KF

Gruß Kai
 

Anhänge

  • STEP 5.pdf
    6,5 KB · Aufrufe: 23
  • STEP 5.zip
    1,6 KB · Aufrufe: 14
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier ist noch einmal ein neues Programmbeispiel für einen Ringspeicher in STEP 5:

Code:
OB 1                               F:RINGSPST.S5D                    LAE=35   
                                                                     Blatt   1
Netzwerk 1
0000      :                                  ********************************
0001      :                                  Ringspeicher
0002      :                                  ********************************
0003      :
0004      :                                  ================================
0005      :                                  Taktgeber 5 Sekunden
0006      :                                  ================================
0007      :
0008      :UN  M   10.0                      Taktgeber 5 Sekunden
0009      :L   KT 005.2                      5 * 1 Sekunde
000B      :SE  T   10
000C      :
000D      :U   T   10
000E      :=   M   10.0                      Taktgeber 5 Sekunden
000F      :
0010      :***
 
Netzwerk 2
0011      :                                  ================================
0012      :                                  Ringspeicher
0013      :                                  ================================
0014      :
0015      :U   M   10.0                      Taktgeber 5 Sekunden
0016      :SPB FB  10                        Ringspeicher
0017 Name :SPEICHER
0018 RSDB :    DB  10                        Ringspeicher Datenbaustein
0019 RSDL :    KF +10                        Ringspeicher Datenlaenge
001A DSDB :    DB 100                        Datenspeicher Datenbaustein
001B DSDW :    DW   0                        Datenspeicher Datenwert 1
001C      :
001D      :BE

Code:
FB 10                              F:RINGSPST.S5D                    LAE=71   
                                                                     Blatt   1
Netzwerk 1
Name :SPEICHER
Bez  :RSDB      E/A/D/B/T/Z: B
Bez  :RSDL      E/A/D/B/T/Z: D  KM/KH/KY/KC/KF/KT/KZ/KG: KF
Bez  :DSDB      E/A/D/B/T/Z: B
Bez  :DSDW      E/A/D/B/T/Z: E  BI/BY/W/D: W
 
0011      :                                  ================================
0012      :                                  Ringspeicher
0013      :                                  ================================
0014      :
0015      :                                  RSDB Ringspeicher Datenbaustein
0016      :                                  RSDL Ringspeicher Datenlaenge
0017      :                                  DSDB Datenspeicher Datenbaustein
0018      :                                  DSDW Datenspeicher Datenwert
0019      :
001A      :
001B      :B   =RSDB                         Ringspeicher Datenbaustein
001C      :
001D      :L   DW   0                        Ringspeicher Index
001E      :L   KF +1                         Ringspeicher Index Datenwert 1
0020      :<F
0021      :SPB =M01
0022      :L   DW   0                        Ringspeicher Index
0023      :LW  =RSDL                         Ringspeicher Datenlaenge
0024      :>F
0025      :SPB =M01
0026      :SPA =M02
0027 M01  :L   KF +1                         Ringspeicher Index Datenwert 1
0029      :T   DW   0                        Ringspeicher Index
002A M02  :
002B      :
002C      :B   =DSDB                         Datenspeicher Datenbaustein
002D      :L   =DSDW                         Datenspeicher Datenwert
002E      :B   =RSDB                         Ringspeicher Datenbaustein
002F      :B   DW   0                        Ringspeicher Index
0030      :T   DW   0                        Ringspeicher Datenwert
0031      :
0032      :
0033      :L   DW   0                        Ringspeicher Index
0034      :LW  =RSDL                         Ringspeicher Datenlaenge
0035      :<F
0036      :SPB =M03
0037      :SPA =M04
0038 M03  :L   DW   0                        Ringspeicher Index
0039      :I        1                        + 1
003A      :T   DW   0                        Ringspeicher Index
003B      :SPA =M05
003C M04  :L   KF +1                         Ringspeicher Index Datenwert 1
003E      :T   DW   0                        Ringspeicher Index
003F M05  :
0040      :
0041      :BE

Code:
DB10    F:RINGSPST.S5D                               LAE=16  /4                
                                                                     Blatt   1
     0:     KF = +00000;                    Ringspeicher Index
     1:     KF = +00000;                    Ringspeicher Datenwert 1
     2:     KF = +00000;                    Ringspeicher Datenwert 2
     3:     KF = +00000;                    Ringspeicher Datenwert 3
     4:     KF = +00000;                    Ringspeicher Datenwert 4
     5:     KF = +00000;                    Ringspeicher Datenwert 5
     6:     KF = +00000;                    Ringspeicher Datenwert 6
     7:     KF = +00000;                    Ringspeicher Datenwert 7
     8:     KF = +00000;                    Ringspeicher Datenwert 8
     9:     KF = +00000;                    Ringspeicher Datenwert 9
    10:     KF = +00000;                    Ringspeicher Datenwert 10
    11:

Code:
DB100   F:RINGSPST.S5D                               LAE=7   /4                
                                                                     Blatt   1
     0:     KF = +00000;                    Datenspeicher Datenwert 1
     1:     KF = +00000;                    Datenspeicher Datenwert 2
     2:

Code:
BB 10                              F:RINGSPST.S5D                    Blatt   1
 
          Operanden:        Formate:                                            
 
          T    10           KT                                                  
 
          DB  100                                                               
          DW    0           KF                                                  
 
          DB   10                                                               
          DW    0           KF                                                  
          DW    1           KF                                                  
          DW    2           KF                                                  
          DW    3           KF                                                  
          DW    4           KF                                                  
          DW    5           KF                                                  
          DW    6           KF                                                  
          DW    7           KF                                                  
          DW    8           KF                                                  
          DW    9           KF                                                  
          DW   10           KF

Gruß Kai
 

Anhänge

  • STEP 5.pdf
    7,5 KB · Aufrufe: 43
  • STEP 5.zip
    1,7 KB · Aufrufe: 15
Zurück
Oben