TIA Zeitüberwachung

kuti

Level-1
Beiträge
354
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

arbeite mit dem TIA V12 und einer S7-1200. Es geht um ein Zufahren eines Regelschiebers.

Wenn er INNERHALB einer Stunde drei mal zufahren muss, dafür habe ich einen Zähler, dann soll die Zufahrbewegung gestoppt werden. Das heißt, wenn der CTD-Zähler 3 runtergezählt hat, wird er true. Diesen Zähler( Bool) nehme ich dafür, um das Zufahren zu stoppen. Die Entriegelung bzw. das Laden des Zählers mache ich mit einer Schaltfläche im TP, damit das Zufahren wird erlaubt ist.

Wenn er innerhalb einer Stunde weniger als drei mal zugefahren wurde, dann soll nach einer Stunde diese Stunde wieder von neu beginnen.

Mein Problem ist jetzt diese Stunde irgendwie so steuern, wie oben beschrieben. Das heißt, wenn der Regelschieber weniger als drei mal zugefahren wurde, soll die Stunde und auch der Zähler wieder vom Anfang starten. Ich hoffe ihr könnt irgendwie verstehen, was ich meine.

Gruß
 
Naja, ganz pragmatisch würde ich hergehen:
Alle 20 Minuten und Zähler < 3 dann Zähler +1 (UP)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde mir einen multiinstanzfähigen FB erstellen, den ich dann jeweils für die einzelnen Schieber benutzen kann.

Darin einen Zähler, der mit jeder Anforderung von 0 bis 2 weiterzählt und dann wieder von vorn beginnt.
Je nach Zählerstand wird einer von 3 Nachlauf-Timern gestartet.
Laufen noch alle 3 Timer, gab es in der letzten Stunde bereits 3 Anforderungen und die Freigabe wird verwehrt.

Das Ganze sieht dann (ungetestet) in etwa so aus:
 

Anhänge

  • kuti 11.jpg
    kuti 11.jpg
    35,2 KB · Aufrufe: 48
  • kuti 8.jpg
    kuti 8.jpg
    17,4 KB · Aufrufe: 52
  • kuti 9.jpg
    kuti 9.jpg
    24,3 KB · Aufrufe: 49
  • kuti 10.jpg
    kuti 10.jpg
    20,8 KB · Aufrufe: 43
Vielen Dank für eure Hilfe. Wirklich ein super Forum. Ich werde das ganze mal testen und hoffe, dass es klappt. Aber ich denke das sieht sehr schlüssig aus.
 
So, ich habe das mal getestet. Es müssen noch ein paar Erweiterungen durchgeführt werden, denn wenn der Regelschieber drei mal zugefahren wurde, so werden die Q's der Timer alle true und die Freigabe wird verwehrt. Das Blöde an der Sache ist, dass die Q's solange true bleiben, wie die Zeit läuft. Es muss aber die Möglichkeit gegeben werden, dass das Personal diese Q' wieder quittieren bzw. damit man sie auch vor Ablauf der Stunde auf false setzen kann, damit der Regelschieber wieder seine Freigabe erhält.
 
[klugscheissmodus]

Tja, da sieht man wieder mal wie wichtig es ist, eine vollständige, widerspruchsfreie und verständliche Aufgabenstellung zu formulieren, bevor man anfängt irgendwas zu programmieren.
Liegt diese Aufgabenbeschreibung vor, dann ist die Umsetzung in einen Programmcode in der Regel ein Klacks...

Harald
 
Dann erweiter halt, ein wenig denken wird ja wohl nicht zu viel verlangt sein!

Gesendet von meinem GT-I9505 mit Tapatalk 4
 
Müsste nur wissen, wie man die Q' s der TOFs wieder rücksetzt, bevor die Zeit abgelaufen bzw. während die Zeit läuft.
 
Müsste nur wissen, wie man die Q' s der TOFs wieder rücksetzt, bevor die Zeit abgelaufen bzw. während die Zeit läuft.
Es gibt hier nur eine wirkliche Möglichkeit, der Eingang PT muss kurzzeitig mal T#0ms sein.

P.S. Unter anderem aus dem Grund verwende ich in der Regel keine TOFs/TPs sondern quasi ausschließlich TONs, das aber nur am Rande.
 
Ich überlege gerade, ob das Programm von hucki so meinen Anforderungen entspricht, denn ich hatte ja, gesagt, dass die Überwachung innerhalb einer Stunde erfolgen soll. Aber hier läuft jede Zeit für sich. Z.B. fährt der Reg zu, dann startet die erste Zeit. Nach einer halben Stunde fährt dieser wieder zu, dann läuft diese Zeit um eine halbe Stunde versetzt zu der ersten Zeit. Ich glaube das passt so nicht. Am besten wäre es wenn alle Zeiten gleichzeitig laufen,oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du sagtest 3 mal innerhalb einer Stunde, und nicht 3 mal von 10-11 Uhr.
Insofern startet die Stunde bei der ersten Bewegung, insofern schon mal imho korrekt, wobei ich jetzt das Programm von Hucki nicht wirklich kontrolliert oder ernsthaft versucht hätte dieses nachzuvollziehen.

P.S. Siehe das Posting von PN/DP (Harald)
 
Also nochmal ganz einfach, und mit absoluter Uhrzeit:

Dein Schieber fährt um 10:30 , um 10:59, um 11:10, und um 11:28 zu.
Ist er jetzt 2 mal in einer Stunde gefahren oder 4 mal?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ähh...3mal ? :p Ist ok, habe es gecheckt. Dann ist es so richtig, wie hucki es meinte. Muss nur noch die TOF reseten, dann läuft alles. Danke dir. Und sorry wenn ich dich wieder zur Weißglut gebracht habe :D
 
denn ich hatte ja, gesagt, dass die Überwachung innerhalb einer Stunde erfolgen soll. Aber hier läuft jede Zeit für sich.
Also nochmal ganz einfach, und mit absoluter Uhrzeit:

Dein Schieber fährt um 10:30 , um 10:59, um 11:10, und um 11:28 zu.
Ist er jetzt 2 mal in einer Stunde gefahren oder 4 mal?
Weiteres Beispiel: 10:30, 10:59, 11:40 und 11:50.
Die ersten 3 Anforderungen wären nicht innerhalb einer Stunde. Wenn jetzt komplett zurück gesetzt wird, würde man nach 11:40 wieder von vorne zählen.
Die Anforderungen von 10:59 bis 11:50 sind aber innerhalb einer Stunde! Deshalb muss jede Anforderung ihren eigenen Timer haben.
3 Timer reichen, denn gibt es noch mehr Anforderungen wird einfach der älteste Timer neu gestartet.

PS: Hier kann man sich noch überlegen, ob der Timer mit Beginn der Anforderung gestartet wird (so wie momentan über die Flanke als Timerauslöser) oder erst mit dem Erlöschen der Anforderung. Dann müsste man diese direkt anstatt deren Flanke als Timerauslöser abfragen.



Müsste nur wissen, wie man die Q' s der TOFs wieder rücksetzt, bevor die Zeit abgelaufen bzw. während die Zeit läuft.
Es gibt hier nur eine wirkliche Möglichkeit, der Eingang PT muss kurzzeitig mal T#0ms sein.
Sehe ich anders - einmal in die rechte Anweisungsliste bei den Zeiten rein gesehen und sofort die Anweisung "Zeit zurücksetzen" entdeckt. Ich denke, die macht genau das, was noch gefehlt hat.
Da kann man sich das Rumgewurschtel mit den Zeitvorgaben sicher sparen. Ein kleiner Test sollte da Klarheit bringen.

Man sollte sich nur überlegen, ob man alle Zeiten zurücksetzt oder nur die vom ältesten Timer. Bei letzterer Variante hätte man bei der nächsten Anforderung immer noch eine Überprüfung aktiv, während bei der ersten Variante komplett bei Null begonnen wird.


Außerdem muss bei dem Counter als PV eine 3 stehen und bei den Vergleichen wird mit 1 angefangen.
Ich hab' nicht getestet, aber normalerweise sollte der Zähler von 0 bis 2 zählen. Sind auch 3. Dabei sollte Reset Vorrang vor Weiterzählen haben. Und der Zähler ist nur zur Timerauswahl, mehr nicht.
Funktioniert das so nicht? Oder warum die Änderung?
:confused:



PS: @kuti,

übrigens sollte mein Post nur ein Denkanstoß und nicht der fertige Programmcode sein!
Ich hab' manchmal das Gefühl, das Du einfach fertige Programmteile aus dem Forum nimmst, ohne wirklich zu verstehen, was die machen.
Und das lag lt. Deinen Mails ja nicht wirklich in Deinem Sinn.
Wenn was unklar ist, frag' "Warum machst Du das so und so?" und nicht "Da fehlt was, das macht noch nicht (komplett) das, was ich will!".
Es ist Dein Projekt - das waren richtigerweise Deine eigenen Worte.
;)
 
Zuletzt bearbeitet:
Sehe ich anders - einmal in die rechte Anweisungsliste bei den Zeiten rein gesehen und sofort die Anweisung "Zeit zurücksetzen" entdeckt. Ich denke, die macht genau das, was noch gefehlt hat.
Da kann man sich das Rumgewurschtel mit den Zeitvorgaben sicher sparen. Ein kleiner Test sollte da Klarheit bringen.
Ja, ich gebe zu, das das Thema TIA von mir bisher noch eher stiefmütterlich behandelt wird, von daher kann schon sein, das mir das bisher nicht aufgefallen ist (ich habe aber abgesehen davon in keine Ahnung wieviel Codezeilen über die letzten Jahre noch nie einen Timer rücksetzen müssen).
Funktionell dürfte das letzten Endes identisch sein, schaut halt vielleicht besser aus, man merkt halt, das ich immer noch (zum Glück) eher Step7 verseucht bin.
 
Zurück
Oben