TIA Zeit aufzählen

Petschi

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen allerseits

Ich möchte gerade in meinem Programm eine "Betriebszeit" einbauen. Es ist so dass wenn ich auf den Start-Taster drücke startet die Anlage und da möchte ich dass eine Zeit anfängt zu zählen bis der Ablauf durch einen bestimmte Sensor beendet wird. Diese Zeit will ich auf dem HMI anzeigen lassen und jedes mal dass ich Start drücke wird wieder eine Zeit gezählt und dann in der HMI-Anzeige (Betriebszähler) kumuliert.
Habt ihr eine Idee wie ich das am besten lösen kann?
 
Kommt drauf an wie genau du das willst. Aber z.B. Sekundengenau könntest du dir drei Variablen anlegen vom Typ DINT.
Die eine Variable ist deine Zählvariable. Da zählst du wenn die Bedingung erfüllt ist (Betriebsflag) pro Sekunde 1 hoch.
die zweite Variable ist dein Betriebsstundenzähler. Da addierst du die Zählvariable hinzu wenn eine Negative Flanke vom Betriebsflag kommt.
und die Dritte Variable ist deine Anzeigevariable, das ist einfach Variable 1 und Variable 2 addiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also das ganze möchte ich nur in Sekunden und in Minuten anzeigen lassen. Mit einem Reset Taster kann ich diese Zeit zurücksetzen so dass es wieder von null anfängt. Aber wie kann ich genau die Zeit zählen/programmieren? Bin ein unerfahrener SPS Programmierer.
 
Habe ein wenig recherchiert und ich könnte die systemzeit nehmen read_system_time und diese dann mit der differenz ausrechnen. Habt ihr ein Beispiel dazu so dass ich es mir vorstellen kann?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, mit der Funktion "RD_SYS_T" solltest du so was hinkriegen. Mit einem Bit den Wert einmalig auslesen und in einen Zwischenspeicher speichern, und danach immer die gespeicherte Zeit von der aktuellen Zeit abziehen. Die Differenz ist deine aktuelle Betriebszeit.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Iiih. Das ist ja mit nem Taktmerker und nem DINT. So hab ich auch manchmal ungenaue Timer realisiert wenn ich zu wenig Timer hatte. :p
(Nix gegen Lichis schönen Baustein! :ROFLMAO:)

Rein aus Interesse. Warum sollte das ungenau sein? Und wie ungenau ist das konkret?
Ich finde Betriebsstundenzähler mit einem Sekundentakt (und Flanke) sind doch genau, solange der Takt gleichmässig kommt.
 
Rein aus Interesse. Warum sollte das ungenau sein? Und wie ungenau ist das konkret?
Ich finde Betriebsstundenzähler mit einem Sekundentakt (und Flanke) sind doch genau, solange der Takt gleichmässig kommt.

"Ungenau" im Sinno von Genauigkeit nur auf 1 Sekunde. Ich kenn das von S7-300er CPUs oder älter wo die Anzahl an S5 Timer noch begrenzter war als heute (ausserdem verwendet man heute ja vor allem IEC Timer). Für Funktionen wo eine höhere Zeitgenauigkeit gebraucht wurde wurden die S5Timer eingesetzt, für Sachen die nicht genau sein mussten (wie ein Timeout) wurden Taktmerker-Zähler verwendet. Dadurch konnte man wertvolle S5Timer einsparen.

Von daher meine Bezeichnung "ungenau". Ein Betriebsstundenzähler mit Taktmerker-Zähler ist natürlich immer noch genau genug. ^^
 
Ungenau ist diese Taktmerker-Sekundenzählung nur, wenn man damit im SPS-Programm Zeitmessungen machen will (was man normalerweise besser mit S5-Timern oder IEC-Timern macht). Wenn man einen auf der Sekundenzählung basierenden Timer verwendet, dann kann der z.B. bei Sollzeit 10 s zufällig schon nach 10,000 s abgelaufen sein oder auch erst nach 10,999 s (fast eine Sekunde später).

Beim Betriebsstundenzähler summieren sich diese Ungenauigkeiten nur bei Start und Stop des Betriebsmittels, was aller meistens genau genug ist.
Will man es noch genauer, dann kann man die vergangene Zykluszeit addieren.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Joah, wie gesagt. Alles was genau sein musste wurde mit S5Timern gemacht, alles was nicht wirklich auf die Sekunde genau sein musste wurde mit Taktmerker und Zähler gemacht. Funktioniert, man spart sich nen Timer und es tut nicht weh wenn das Timeout erst 1 Sekunde später kommt.
 
Es kommt halt darauf an, was man messen will....
Für BetriebsSTUNDEN ist ein Timer, der sekundengenau zählt und vielleicht pro Start-Stopp-Zyklus ein paar 1/100s Abweichung hat mehr als ausreichend genau.
Wenn ich einen Vorgang steuern will, der genau 0,9s dauern soll, braucht es halt andere Mittel.
Ich persönlich verwende das auch so, habe aber den Taktmerker eliminiert, indem ich den Baustein einfach in einem 1s-OB aufrufe und jeweils eine Sekunde addiere, wenn die Laufbedingung erfüllt ist.
 
Also das ganze möchte ich nur in Sekunden und in Minuten anzeigen lassen. Mit einem Reset Taster kann ich diese Zeit zurücksetzen so dass es wieder von null anfängt. Aber wie kann ich genau die Zeit zählen/programmieren? Bin ein unerfahrener SPS Programmierer.

Daraus habe ich mal abgeleitet, dass der TE gut mit der Genauigkeit von 1s leben kann. Die Lösung ist fertig und auch für einen unerfahrenen Programmierer nachvollziehbar.
 
Zurück
Oben