Abgelaufene Zeit Programmieren

AlexeyZ

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

Ich möchte eine abgelaufene Zeit, ähnlich wie bei einer Stoppuhr, ausgeben. (Programmierung mit TIA V16)

Die Zeit wird an getriggert von einer Funktion und soll wieder zurückgesetzt werden können durch eine andere Bedingung.
Es soll Remanent sein. Das heißt auch wenn die Anlage aus war soll die Differenz Zeit angezeigt werden (bzw. gespeichert und weiter rechnen) - Vom Start Trigger bis heute.

Die abgelaufene Zeit sollte schon bis Jahre zählen können.... sagen wir min 3 Jahre. (Jahr/Monate/Stunden/Minuten)
(Wobei auch 1Jahr und 1 Monat gerne in 13 Monate ausgegeben werden kann)

Meine Idee war ich lese mit RD_LOC_T die Systemzeit aus. Wenn der Trigger kommt schreibe ich diese Zeit in DTL in einen DB (Remanent).
In einen anderen DB schreibe ich immer die IST Zeit.
Aber wenn ich jetzt "Day Trigger - Day IST" . " Minute Trigger - Minute Trigger" usw. subtrahiere klappt das ja nicht...
Wie kann ich das anderes machen.

gruß

Alexey
 
Ich würde in einem Weckalarm OB einen Zähler mit jedem Aufruf inkrementieren (oder die Ausführungszeit des OB aufaddieren). Mit ein bisschen Mathematik kannst du dir das dann im Hauptprogramm für das HMI aufbereiten.
 
Ja, wenn die Maschine aus ist soll weiter gezählt werden.

Es geht dabei darum: Dass ein Anlagenteil sterilisiert wird. Und ich möchte anzeigen wann die letzte Sterilisation der Anlage war und wird erst zurück gesetzt wenn die Sterilisation wieder läuft. Bis dahin soll die Zeit immer laufen. Auch wenn die Anlage abgeschaltet war.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei dem T_DIFF kann ich nur die Differenz von DTL to Time berechnen. Ich bräuchte DTL to DTL.
Auch wenn ich nur Differenz von Tag zu Tag; Minute zu Minute usw bilden würde. Würde das auch nicht gehen weil er USint nicht annimmt.

(Falls es garnicht gehen sollte, kann ich auch den Startrigger und Rücksetzten auf einen DB schreiben und die gleiche Funktion von meiner IT programmieren lassen, da meine Daten der Sterilisation der Anlage sowieso auf den Servern landen und dort mit einer externen Software weiterverarbeitet werden zur Datenanalyse. Aber mich würde es trotzdem Interessen wie das geht, das müsste doch möglich sein?)
 
Du kannst aber DTL - DTL -> LTime machen.
Für eine Anzeige auf dem HMI kannst du mit DIV und MOD z.B. von LTime zu Tagen und Stunden umrechnen.
 
Nun, das Ergebnis einer Datumsdifferenz ist ja relativ und muss daher eine (relative) Zeit sein und kann kein absolutes Datum/Zeit (DTL) sein. DTL ist ja ein absoluter Zeitpunkt mit Angabe von Datum und Zeit. Das würde bei einer Differenz keinen Sinn machen. Aber wie @TheLevel schrieb, kannst du dir die Zeitdifferenz dann frei in ein einfach lesbares Format umrechnen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meine Idee war ich lese mit RD_LOC_T die Systemzeit aus. Wenn der Trigger kommt schreibe ich diese Zeit in DTL in einen DB (Remanent).
Wenn Du eine Zeitpunkt-Differenz ermitteln willst, dann solltest Du RD_SYS_T nehmen, damit Uhrzeitsprünge durch Normal-/Sommerzeit (und Änderung von Zeitzonen) nicht die Berechnung beeinflussen.
RD_LOC_T kannst Du nehmen für die Anzeige, wann das letzte Ereignis war. Alternativ: Immer RD_SYS_T nehmen und abspeichern und für die Anzeige des Zeitpunkts den Zeitstempel in Lokalzeit umrechnen.

Harald
 
Zurück
Oben