Datum und Uhrzeit
Zeitliche Logik
Meistern Sie die Uhr Ihrer PLC. Von präzisen Ereignis-Zeitstempeln bis hin zu komplexen Zeitberechnungen und Formatkonvertierungen, kontrollieren Sie jede Millisekunde.
Warum Zeit in einer PLC verwalten?
Zeitmanagement ist entscheidend für die industrielle Automatisierung. Es ermöglicht die präzise Protokollierung von Produktionsereignissen, das Auslösen geplanter Wartungsaufgaben, die Berechnung von Maschinenzykluszeiten und die Synchronisierung verteilter Systeme über NTP-Protokolle.
Moderne Siemens PLCs bieten fortschrittliche Datentypen wie DTL (Date and Time Long), die direkten Zugriff auf einzelne Komponenten (Jahr, Monat, Tag, Stunde) ohne komplexe Bitmanipulation ermöglichen, was die Programmierung im Vergleich zu älteren DT-Formaten erheblich vereinfacht.
Zeit lesen
Zugriff auf System- und Lokaluhren
T_CONV — Systemzeit-Extraktion
T_CONVWas es tut
Extrahiert spezifische Komponenten aus einem Datum/Zeit-Wert oder konvertiert zwischen Formaten. Es ist essenziell, um lesbare Stunden/Minuten aus einem rohen Zeitstempel zu erhalten.
Wann man es verwendet
Wenn Sie nur die Uhrzeit auf einem HMI aus einem vollständigen DATE_AND_TIME-Tag anzeigen müssen.
Profi-Tipps
Verwenden Sie T_CONV, um eine TOD (Time_Of_Day) in einen String für einfaches Logging zu konvertieren.
Stellen Sie sicher, dass Eingangs- und Ausgangstypen kompatibel sind, um Überlauffehler zu vermeiden.
In SCL wird diese Anweisung oft implizit durch einfache Zuweisungen behandelt.
RD_SYS_T — Systemzeit lesen
RD_SYS_TWas es tut
Liest die aktuelle Systemzeit der CPU (UTC). Im Gegensatz zu RD_LOC_T enthält sie keine Sommerzeit- oder Zeitzonen-Offsets.
Wann man es verwendet
Ideal für internes Logging, bei dem eine kontinuierliche, nicht springende Zeitreferenz erforderlich ist (vermeidet Probleme bei Sommerzeitumstellungen).
Profi-Tipps
Verwenden Sie immer UTC für die Speicherung in Datenbanken, um globale Konsistenz zu gewährleisten.
Der RET_VAL-Ausgang liefert Statusinformationen (z. B. ob die Uhr synchronisiert ist).
Kombinieren Sie es mit RD_LOC_T, wenn Sie sowohl die 'technische' als auch die 'menschliche' Zeit anzeigen müssen.
Arithmetik
Berechnungen an Zeitdauern und Zeitstempeln
T_ADD — Zeit addieren
T_ADDWas es tut
Addiert eine Dauer (Time oder LTime) zu einem bestimmten Datum/Zeit-Punkt. Es verarbeitet Überläufe von Minuten, Stunden und Tagen korrekt.
Wann man es verwendet
Berechnung einer Ablaufzeit oder eines geplanten Neustartpunkts (z. B. aktuelle Zeit + 24 Stunden).
Profi-Tipps
Sehr nützlich für die Implementierung benutzerdefinierter Watchdogs mit dynamischen Laufzeiten.
Verwenden Sie LTime-Typen für Nanosekunden-Präzision auf S7-1500 CPUs.
Wenn das Ergebnis das maximale Datum (Jahr 2262) überschreitet, setzt die CPU einen Fehlerstatus.
T_DIFF — Zeitdifferenz
T_DIFFWas es tut
Berechnet die Differenz zwischen zwei Zeitstempeln und gibt das Ergebnis als Dauer (Time oder LTime) zurück.
Wann man es verwendet
Messung der exakten Dauer eines Prozessschritts oder Berechnung der Uptime einer Maschine.
Profi-Tipps
Perfekt für OEE-Berechnungen (Overall Equipment Effectiveness).
Subtrahieren eines größeren Datums von einem kleineren gibt einen negativen Time-Wert zurück.
Auf S7-1200/1500 verwenden Sie DTL-Tags für einen einfacheren Zugriff auf die Differenzkomponenten.
Konvertierung
Formatänderungen und String-Verarbeitung
T_CONV — DT zu DTL Konvertierung
T_CONVWas es tut
Konvertiert klassische DATE_AND_TIME (8 Bytes) in das moderne DTL-Format oder umgekehrt.
Wann man es verwendet
Bei der Schnittstellenbildung von Legacy-Code oder Kommunikationsbausteinen mit neuer S7-1500 optimierter Logik.
Profi-Tipps
Bevorzugen Sie DTL für alle neuen Projekte, um die BCD-Komplexität (Binary Coded Decimal) zu vermeiden.
Die Konvertierung in DTL ermöglicht es Ihnen, 'MyTag.MONTH' direkt in Ihrem Code zu schreiben.
Seien Sie vorsichtig mit der Millisekunden-Präzision, die in einigen Formaten abgeschnitten werden kann.
DT_TO_STRING — Zeit serialisieren
DT_TO_STRWas es tut
Konvertiert einen Datum/Zeit-Wert in ein lesbares String-Format. STRING_TO_DT führt die Umkehrung durch.
Wann man es verwendet
Senden von Zeitstempeln an eine CSV-Datei auf einer Speicherkarte oder Kommunikation mit einer Web-API.
Profi-Tipps
Der Ausgangs-String folgt dem ISO 8601 Format (YYYY-MM-DD-HH:MM:SS.ms).
Verwenden Sie STRING_TO_DT, um Daten zu parsen, die von einer externen SQL-Datenbank empfangen wurden.
Beachten Sie, dass String-Operationen CPU-intensiver sind; verwenden Sie sie sparsam in schnellen Schleifen.
DATE_AND_TIME vs DTL
Die richtige Zeitstruktur wählen
| Merkmal | DATE_AND_TIME (Legacy) | DTL (Modern) |
|---|---|---|
| Größe | 8 Bytes | 12 Bytes |
| Kodierung | BCD (Komplex zu lesen) | Ganzzahlen (Direkt lesbar) |
| Komponentenzugriff | Erfordert Bitmaskierung | Strukturell (Tag.Month) |
| Bereich | 1990 bis 2089 | 1970 bis 2262 |
| S7-1200/1500 Unterstützung | Nur Kompatibilität | Nativ & Empfohlen |
| Präzision | 10 ms | 1 Nanosekunde |
Häufig gestellte Fragen
Was ist der Unterschied zwischen Systemzeit und Lokalzeit?
Die Systemzeit (RD_SYS_T) ist immer UTC und bietet eine stabile Referenz. Die Lokalzeit (RD_LOC_T) passt sich an Ihre spezifische Zeitzone und die in den CPU-Eigenschaften konfigurierten Sommerzeitregeln (DST) an.
Wie synchronisiert man die PLC-Uhr mit einem Server?
Aktivieren Sie NTP (Network Time Protocol) in der CPU-Hardwarekonfiguration. Geben Sie die IP Ihres Zeitservers an, und die PLC wird ihre interne Uhr automatisch anpassen.
Warum zeigt mein DATE_AND_TIME seltsame Werte in Hex an?
Legacy DT verwendet BCD-Kodierung. Ein Wert von 25 in Dezimal wird als 16#25 in BCD gespeichert. Verwenden Sie immer Konvertierungsanweisungen oder DTL, um Werte korrekt zu lesen.
Kann ich die Differenz zwischen zwei DTL-Tags direkt berechnen?
In SCL können Sie einfach den '-'-Operator zwischen zwei DTL-Tags verwenden. TIA Portal wird automatisch die T_DIFF-Anweisung für Sie aufrufen.