Step 7 Uhrzeit bei Störung aufzeichnen

bone

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

Ich habe jetzt schon ein wenig danach gesucht aber irgendwie nicht das richtige gefunden.

Ich werde mal mein Problem bzw. meine Idee hier erläutern und ich denke für einige wird es eine leichte Sache sein.

Ich will an einer Filteranlage mit Hilfe der S7-Steuerung einen Fehler aufzeichnen, wann er genau passiert. Dazu würde ich ganz gern die Uhrzeit aufzeichnen, wenn der Fehlerfall eintritt. Der Fehlerfall ist in diesem Fall ein sogenannter Maihak, der ein 0-Signal gibt, falls der Schacht zu voll mit Staub ist.

Jetzt hätte ich ganz gern das wenn der Eingang auf 0 geht, die aktuelle Uhrzeit in einen DB gespeichert wird und das jedes mal falls dies passiert.

Mit Servicelab ist das ganze nicht wirklich ein Problem, jedoch kann ich derzeit nicht meinen Laptop an der Anlage stehen lassen (steht auf den Dach im freien) und meistens passiert das am späten Abend.

Hat da jemand eine Idee? Sowas habe ich bisher noch nie Programmiert. Kenne mich also dementsprechen mit dem SFC1 nicht wirklich aus.

Vielen Dank im vorraus!

Gruß
Thorsten
 
DB erstellen, jede Menge Variablen mit dem Format Date and Time untereinander anordnen ( Oder Array of [DT] erstellen)

SCL-Programm wäre am einfachsten. - FIFO

Bei einer Störung den SFC1 Flankengesteuert aufrufen.

SFC1 ließt die Uhrzeit und schreibt sie dir dorthin, wo du möchtest - DSTBLK.
dieses Ziel zuerst auf den ersten Eintrag im DB zeigen. (Bspl: DB-Stoerung.Stoerungszeit[1] )
danach auf den [2] usw...

(Oder die Uhrzeit aus dem OB1-Lokaldaten nehmen )
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
lies dich dazu ggf. mal hier ein : http://www.sps-forum.de/faq/8887-pointer-zeiger-fifo-lifo.html
Darüber hinaus solltest du dich damit auseinander setzen, wie man mit dem von dir schon genannten Baustein die Systemzeit aus der SPS in eine bestimmte Variable bekommt.
Vielleicht auch dazu mal die Foren-Suche bemühen.

Wie willst du es umsetzen ?
AWL oder vielleicht SCL (das wäre erheblich eleganter zu machen).

Gruß
Larry
 
Hallo zusammen,

also das mit dem Flankengesteuerten SFC1 ist für mich wohl eher das richtige. Ich möchte das halt nur 2-3Tage mitschreiben lassen, anschliessend nehm ich das eh wieder raus. Und von dem Pointer, hatte ich im Forum auch schon was drüber gelesen, kenn ich mich leider genauso wenig aus wie mit dem SCL Programm. Umsetzen dann in AWL.

Gruß
Thorsten
 
Quick and Dirty Methode:

- DB mit sagen wir mal 25 "Datenwörtern" Format Date and Time anlegen, der Datenbaustein hat dann 200 Byte Länge ( 8 Byte je Date and Time)
- Mit SFC1 Flankengesteuert die aktuelle Zeit in das letzte Datenword dieses DB schreiben.
- anschließend mit Blockmove den gesammten DB-Inhalt um ein Datenwort nach oben schieben...

also in etwa so: (bei 25 "Datenwörtern" Format Date and Time)
Anfangsadresse -> P# DBxx.DBX8.0 Byte 192
Zieladresse -> P# DBxx.DBX0.0 Byte 192

im vorletzten "Datenword" also dem 24ten (oder besser Datenblock) steht dann die letzte Störungszeit
im 23ten dann die vorletze Störunszeit usw. usw. Im ersten Datenblock (also DBB0 bis DBB7) steht dann der älteste Eintrag...
man erhält so eine Art Schieberegister... (nur das es halt "rückwertz" arbeitet)

Ich hoffe habs verständlich ausgedrückt....
ist zwar nicht die "feine" Art, da aber nur "temporär" benötigt... kann man sich so den ganzen Aufwand mit indirekte Adressierung und Pointern und FIFO und sonstwas sparen
 
Zuletzt bearbeitet:
Zurück
Oben