Zeit einfrieren

siegener19

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

ich programmiere zurzeit in FUP und wollte fragen, ob jemand vielleicht weiß, wie man eine Zeit bei einer Einschaltverzögerung einfriert, also diese stoppt und bei einer Unterbrechung dann ab der angehaltenen Zeit weitermacht. Die Zeit startet wieder beim Anfangswert, und das soll nicht sein. Ähnliche Beiträge habe ich gelesen, aber leider nichts verstanden-
Ich wäre für Tipps sehr dankbar.

MfG
siegener19
 
Hallo.

Wenn Du schon etwas dazu gefunden hast und die Funktion noch unkar ist, wäre es sehr hilfreich den link hier reinzustellen und ggf. gleich die Fragen dazu zu stellen. Es gibt dafür sogar fertigen Programmcode. Ich glaube Volker hatte da mal was gepostet.
Ansonsten selber schreiben. Wenn Du es nicht so genau brauchst, kannst Du z.B. den festen Taktgeber 100ms nehmen, eine Flankenauswertung machen und damit eine INT-Variable hochzählen. Der nötige Code dafür ist schnell geschrieben.
 
Hallo Tigerente,

hier ist der Link: http://www.esatex.com/SPS-Forum/sho...ick-Zeit-Messen-Anhalten-Weiterlaufen-lassen-..

aber ich glaube das hat mit meiner Aufgabe nichts zu tun. Ich möchte eine Zeit z.B bei 3s stoppen. Dann soll, wenn ich wieder Start drücke, ab 3s weitergezählt werden. Das brauche ich für einen Notaus und einen Stoptaster. Könntest du das bitte vormachen, was du meintest, falls es nicht lange dauert? :oops:
 
aber ich glaube das hat mit meiner Aufgabe nichts zu tun. Ich möchte eine Zeit z.B bei 3s stoppen. Dann soll, wenn ich wieder Start drücke, ab 3s weitergezählt werden. Das brauche ich für einen Notaus und einen Stoptaster. Könntest du das bitte vormachen, was du meintest, falls es nicht lange dauert? :oops:

Also es ist eine Frechheit, dass dir Tigerente1974 nicht die Lösung mit allen Ableitungen und Dokumentation sofort und unverzüglich macht.
Also ich würde da auch schimpfen.
Eine Hausaufgabe kann doch nicht warten.

bike
 
[...] und bei einer Unterbrechung dann ab der angehaltenen Zeit weitermacht. Die Zeit startet wieder beim Anfangswert, und das soll nicht sein.

Für welche Art der Anwendung benötigst du denn sowas? Dass es mit einer normalen Einschaltverzögerung nicht geht ist auch klar, denn das ist auch nicht der Sinn einer Einschaltverzögerung. Und eine Stoppuhr hab ich auf einer SPS noch nie gesehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo nutellahase,

ich kenne solche Anwendungen als Betriebsstundenzähler oder als Erfassung der Laufzeit eines Antriebs, dessen mechanische Bestandteile geschmiert werden müssen. Sind nur 2 Beispiele. Der TE hat eben so etwas für einen anderen Zweck angedacht und braucht dies nur im Sekunden- bzw. Minutenbereich.
 
Hallo nutellahase,

ich kenne solche Anwendungen als Betriebsstundenzähler oder als Erfassung der Laufzeit eines Antriebs, dessen mechanische Bestandteile geschmiert werden müssen. Sind nur 2 Beispiele. Der TE hat eben so etwas für einen anderen Zweck angedacht und braucht dies nur im Sekunden- bzw. Minutenbereich.
Dann wäre es im Falle eines betriebsstundenzählers ja einfacher einen Zähler hochzuzählen solange die Bedingung erfüllt ist. Zwecks Genauigkeit dann in einen weckalarm OB. Daraus kann ich mir dann Sekunden, Minuten, Stunden und Tage berechnen!
 
Dann wäre es im Falle eines betriebsstundenzählers ja einfacher einen Zähler hochzuzählen solange die Bedingung erfüllt ist. Zwecks Genauigkeit dann in einen weckalarm OB. Daraus kann ich mir dann Sekunden, Minuten, Stunden und Tage berechnen!

Da hast Du Recht. Aber der TE möchte nun mal was Anderes. Und letztendlich ist ein Zeitglied nichts anderes als ein Zähler, welcher eine feste Taktrate hat. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und letztendlich ist ein Zeitglied nichts anderes als ein Zähler, welcher eine feste Taktrate hat. ;)

Stimmt auch. Wir z.B. verwenden nur solche eigenen Timer. Einfach mit der Zykluszeit des verwendeten OBs rechnen und fertig! Im OB1 muss man allerdings aufpassen, bei zu langen Zeiten wird es dann zu ungenau (wegen der Zykluszeit). Auch hatte ich schon mal das Problem, dass bei zu schnellen Zykluszeiten der Timer gar nicht funktionierte. Also rein nur den selbst erstellten Timer im OB1 (wo die Zykluszeit dann unter 1ms liegt). Da dauerte die Verzögerung dann statt 5 Sekunden nur mehr 2-3 Sekunden.

Ich habe mal nachgefragt wieso wir eigentlich eigene Timer, anstatt der IEC Timer verwenden. Laut unseren Programmierer sollen die IEC Timer Probleme bereiten (sie bleiben "hängen"). Angeblich ist das Problem auch bei Siemens bekannt. Kann mir das irgendwer bestätigen?? Am besten ich frag mal den Chefprogrammierer. Der wird mir das besser erklären können. Meine Vermutung liegt darin, dass er sich seinerzeit einen "Universellen Timer" erstellt hat. Sprich er gibt eine Zeit vor, eine Bedingung die die Zeit laufen lässt und dann einen Reset-Eingang. Es gibt dafür drei Ausgänge nämlich einen Everz, Averz und Impuls. Vermutlich benötige ich so weniger Speicherplatz als wenn ich einen Baustein erstelle mit TON,TOF und TP der die gleichen Ein- und Ausgänge bietet. Oder aber die IEC Timer arbeiten intern anders??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Den IEC Baustein musst du ja füttern, am PT Eingang kommt die Sollzeit, wenn
diese den Wert '0' hat läuft der Timer nicht ab. Bei einer Einschaltverzögerung,
den 'TON', bleibt der Ausgang 'Q' auf 'False' obwohl man denken könnte er müsste direkt
durchschalten.
 
@RN: Ok, das wusste ich nicht! Das ist bei unseren Timern dann nicht der Fall! Es wird z.B. eine Zeit im Format Time vorgegeben: T#2s
Diese wird dann intern in statische DINT-Variablen geschoben. Wenn nun die Bedingung erfüllt ist wird über eine pos. Flanke dieser DINT-Wert mit dem Zeitwert initialisiert (dann erfolgt ein Sprung ans Bausteinende). Im nächsten Zyklus wird dann die Zeit subtrahiert. Wir zählen nämlich immer gegen 0 und vergleichen dann auf kleiner gleich 0. Ist diese Bedingung erfüllt dann wird der entsprechende Ausgang gesetzt/rückgesetzt/zugewiesen.

Bei einer Sollwertvorgabe von T#0s müsste dann unser Timer im zweiten Zyklus den entsprechenden Ausgang setzen/rücksetzen/zuweisen.
 
Hallo siegener19,

ich habe mal eine Lösung in FUP erarbeitet. Das Beispiel sollte Dir weiterhelfen.
Den Startwert der Einschaltverzögerung mußt Du im DB1, DW0, angeben. Ich habe mal 100s eingesetzt.
 

Anhänge

  • FC1.pdf
    12,6 KB · Aufrufe: 54
  • DB1.pdf
    6,9 KB · Aufrufe: 23
Zurück
Oben