TC3 - Zeitstempel in TE2000 HMI

Ahrens

Level-1
Beiträge
2
Reaktionspunkte
0
Guten Tag Zusammen,

meine Absicht ist es für ein Projekt eine Meldungshistorie zu erstellen. Die Meldungen sollen mit der aktuellen Uhrzeit versehen werden. Die gesamte Historie möchte ich bisher in einem Datagrid anzeigen und habe dafür ein ST Programm, welches mir ein Array of Structure beschreibt.

Bisher habe ich das ganze mit einem NT_GetTime Baustein realisiert, welcher mir die aktuelle Uhrzeit in eine Timestructure steckt. Aus dieser kann ich auch die aktuellen Zeitdaten herrausziehen, jedoch nur gestückelt: also Sekunde, Minute, Stunde, Tag, Monat einzeln. In der Darstellung mit Datagrid wird das ganze dann relativ hässlich und unübersichtlich.

Gibt es da vielleicht eine elegantere Lösung? Eventuell die Uhrzeit irgendwie in nur eine Variable verpackt zu bekommen oder es mit etwas anderem außer nem Datagrid zu versuchen?
 
Ein Möglichkeit ist es mit der Funtkion SYSTEMTIME_TO_DT dies in eine DT-Type zu wandeln.


Es gibt auch noch andere SystemTime_To_...-Funtkionen. Schau dir mal die Tc2_Utilities dazu an.
 
Die andere Möglichkeit, die ich dir nicht vorenthalten will, wäre es dazu den TwinCAT 3 EventLogger. https://download.beckhoff.com/download/document/automation/twincat3/TC3_EventLogger_DE.pdf

Dort sieht dann eine Liste ungefähr so aus,..

-> Jedoch auch noch mit eigenen Spalten, usw. definierten Farben und Funtkionen erweiterbar

Vorteile
  • PLC/HMI kommunzieren selbstständig
  • Handling von Listen läuft im Hintergrund (Einträge mit Teimstemp, Source, usw)
  • Control fürs TwinCAT HMI (TF2xxx) vorhanden
  • Ereignisse mit Zusatztext, Argumenten
  • Srachumschaltung
  • ....
Nachteile
  • Geht nur mit dem TwinCAT HMI (TF2xxx)
  • grössere Einarbeitungszeit
  • grössere Umsetzungszeit
  • ....
 
Besten Dank für die schnelle Antwort Brro87!

Da das ganze nur ein kleines Gimmik für mein Abschlussprojekt sein soll, hab ich es jetzt erstmal mit dem DT Wandler umgesetzt, danke für den Tipp!

Noch eine kleine amateur Frage hinterher.
Bisher sieht meine IF Bedingung für die Meldungshistorie so aus:


((Aktuelle Uhrzeit TIMESTRUCT in DT))

Hier stecke ich mommentan darin fest, eine Lösung zu finden, die Auslösevariable für den Zeitstempel nur bei der jeweiligen Meldung zu setzten. Danach möchte ich direkt wieder die Möglichtkeit haben, einen neuen Zeitstempel für die folgende Meldung zu generieren.

Habe schon diverse Möglichkeiten ausprobiert aber komme auf nichts gescheites.
Bin in Beckhoff ST noch relativ am Anfang.
 
Zuletzt bearbeitet:
Ich verstehe Deine Frage nicht wirklich, wo Dein Problem liegt.
Wir machen das meistens so, dass wir einen Logger Baustein haben. Dieser besitzt z. Bsp.
folgende Methoden:
- LogInfo(MessageText)
- LogWarning(WarningText)
- LogError(ErrorText)

Darin wird dann die Meldung, inkl. Zeitstempel und sonstigen Angaben zusammengebaut und in einen Buffer geschrieben.
 
@Ahrens: Auch ich habe Mühe deine 2. Frage zu verstehen. Ich denke es liegt wohl am Aufruf,..
Aber der von dir gepostete Code-Abschnitt ist nicht vollständig. Irgendwo wir "Zeitstempel" deklariert und irgendwo auch augerufen, doch das sehe ich nirgends. Passiert der Aufruf vor oder nach deinem Code-Auschnitt. -> So ist eien Diagnose/Analyse unmöglich.

Auch weiss ich gerade nicht was du mit "((Aktuelle Uhrzeit TIMESTRUCT in DT))" meinst. Ich seheim Code-Auschnitt nur.AktuelleUhrzeit.
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…