Implementierungsleitfaden für den Julianischen-Datums-Generator SLC-5/04
Implementieren Sie einen Generator für Julianische Daten in SLC-5/04 zur ASCII-Ausgabe an Etikettendrucker. Schrittweise Kontaktplanlogik mit Berechnungsanwe...
Die SLC-5/04-Familie, einschließlich Prozessoren wie dem 1747-L542, stellt keine integrierte Anweisung für die Julianische Tageszahl (JDN) bereit. Verpackungsanlagen, Chargencodierung und Etikettendrucker benötigen häufig einen Tag-des-Jahres-Wert oder eine kompakte Zeichenfolge im Format JJJJDDD. Daher muss die Logik aus gewöhnlichen mathematischen und Datentabellen-Operationen aufgebaut werden. Dieser Leitfaden beschreibt einen wartbaren Ansatz mit CPT-Ausdrücken, einer kumulativen Monatstage-Tabelle, Schaltjahrbehandlung und ASCII-Konvertierung für Druckertelegramme. Dabei werden auch die Grenzen der 16-Bit-Arithmetik erläutert, an denen viele erste Implementierungen scheitern.
SLC-5/04-Prozessoren berechnen den Tag des Jahres und Codes nach Julianischer Art im Kontaktplan mithilfe von CPT, Integer-Dateien und sorgfältig ausgewählten RTC-Werten.
Quellmaterial verweist mitunter auf Statusdateiwörter im Bereich S:50–S:52 für Jahr, Monat und Tag, während andere Dokumentationen abhängig von Prozessor- und Firmwarekontext den umfassenderen Echtzeituhrbereich um S:37 hervorheben. Behandeln Sie RTC-Quellwörter mit Sorgfalt: Überprüfen Sie die genaue Statusdateizuordnung für die installierte Artikelnummer und Serie, bevor Sie Alias-Tags festlegen. Sobald die Kalenderfelder verifiziert sind, ist der Algorithmus über verschiedene SLC-5/04-Projekte hinweg portierbar.
Aufbau der Datentabelle
Eine übersichtliche Integer-Struktur sorgt dafür, dass die Routine für den nächsten Techniker lesbar bleibt. Ein typisches Schema verwendet N7-Register wie folgt: N7:0 Jahr, N7:1 Monat, N7:2 Tag des Monats, N7:3 Ergebnis für den Tag des Jahres, N7:4 Schaltjahr-Flag und N7:5 Zwischenspeicher für Zwischenergebnisse von CPT. Speichern Sie die kumulativen Tagesoffsets der Monate in einer festen Integer-Tabelle, beispielsweise in N10:1 bis N10:12 mit den Werten 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 für eine Nicht-Schaltjahr-Basis bis einschließlich November. Die Berücksichtigung des Februars erfolgt über das Schaltjahr-Flag und nicht durch eine Laufzeitänderung der Tabelle. Passen Sie die genaue Tabelle an Ihre bevorzugte, bei null beginnende Indizierung an, und dokumentieren Sie diese direkt neben den Kontaktplanzeilen.
Beispiel für einen DOY-Ansatz (konzeptionell)
Schaltjahr = (J durch 4 teilbar) mit Jahrhundertregeln nach Bedarf
DOY = Tag + Kumulativ[Monat] + (Schaltjahr UND Monat>2)
Zeichenfolge JJJJDDD über ASC / AIF-ähnliche Formatierung für Drucker
Für viele Fabriken ist der Tag des Jahres (DOY) im Format JJJJDDD ausreichend und vermeidet die vollständige astronomische JDN-Komplexität. Vollständige Julianische Tageszahlen, die sich über Jahrhunderte erstrecken, erfordern eine sorgfältigere Behandlung größerer Ganzzahlen. CPT-Operationen des SLC mit 16-Bit-Ganzzahlen laufen über, wenn Zwischenprodukte nicht zwischengespeichert werden. Berechnen Sie den DOY vorzugsweise im 16-Bit-Bereich und verketten Sie anschließend das Jahr und den auf drei Stellen mit führenden Nullen aufgefüllten DOY in einer ASCII-Datei für den Drucker, anstatt eine einzelne übergroße Ganzzahl zu erzwingen.
Schaltjahr und CPT-Struktur
Die Schaltjahrlogik muss den Regeln des bürgerlichen Kalenders folgen, die in Ihrem Qualitätssystem verwendet werden. Mindestens gelten durch vier teilbare Jahre als Schaltjahre. Falls der Produktlebenszyklus Jahrhundertgrenzen umfasst, wenden Sie die vollständigen Gregorianischen Ausnahmen an: Jahrhundertjahre sind nur dann Schaltjahre, wenn sie durch 400 teilbar sind. Setzen Sie N7:4 auf eins, wenn das Jahr ein Schaltjahr ist. Addieren Sie beim Hinzufügen des kumulativen Monatsoffsets einen zusätzlichen Tag nur dann, wenn das Schaltjahr-Flag gesetzt und der Monat größer als Februar ist. Führen Sie diese Addition in einem eigenen CPT aus, anstatt verschachtelte Bedingungen in einem unleserlichen Ausdruck zu verbergen.
Kopieren Sie Jahr, Monat und Tag aus den verifizierten RTC-Quellwörtern in die N7-Arbeitsregister, und zwar in einer langsam zyklischen Aufgabe oder bei einem First-Scan- plus täglichem Flankensignal. Lesen Sie die RTC-Wörter nicht in jeder freilaufenden Kontaktplanzeile ein, wenn die nachgelagerte ASC-Formatierung aufwendig ist. Eine Aktualisierung einmal pro Minute reicht für die Datumscodierung in der Regel aus.
Zeichenfolgen mit auf drei Stellen aufgefülltem DOY versorgen Etikettendrucker zuverlässiger als rohe Ganzzahlen, wenn die Barcode-Länge konstant bleiben muss.
ASCII-Formatierung für Etikettendrucker
Die meisten Industriedrucker erwarten eine Zeichenfolge mit fester Breite. Nachdem der DOY in N7:3 berechnet wurde, verwenden Sie ASCII-Dateianweisungen, um eine Zeichenfolge wie JJJJDDD mit führenden Nullen im Tagesfeld zu erstellen. Prüfen Sie die Länge, bevor Sie den Druck-Handshake auslösen. Wenn das Druckerprotokoll Trennzeichen oder anlagenspezifische Präfixe benötigt, erstellen Sie diese im selben Zeichenpuffer, anstatt darauf zu vertrauen, dass der Drucker die Auffüllung übernimmt.
- Bestätigen Sie die RTC-Wortzuordnung für die spezifische Firmware des 1747-L542 (oder des installierten SLC-5/04).
- Erstellen Sie die N7-Arbeitstags und die kumulative Monatstabelle in einer Integer-Datei.
- Schreiben Sie die CPT-Logik für Schaltjahre sowie ein DOY-CPT, das Tag + kumulativen Offset + Schaltjahrkorrektur addiert.
- Formatieren Sie JJJJDDD über ASC und testen Sie anhand bekannter Kalenderdaten, einschließlich des 28. Februars und des 1. März in Schalt- und Nicht-Schaltjahren.
- Schützen Sie sich vor einem 16-Bit-Überlauf, falls eine Routine vollständige JDN-Produkte über mehrere Jahrhunderte berechnen soll. Teilen Sie die Berechnung in Zwischenschritte auf oder verlagern Sie sie vom SLC weg.
Prüfungen für Schaltjahre und Druckerauffüllung
Zu den Prüfdaten sollten der 29.02.2024, der 01.03.2024, der 28.02.2025 und der Übergang zum Jahresende am 31.12. gehören. Vergleichen Sie den PLC-DOY mit einem unabhängigen Kalender. Typische Fehler sind das Vertrauen auf falsche Statusdateiadressen, das Vergessen der Schaltjahrkorrektur für den Februar, das Drucken nicht aufgefüllter DOY-Werte, wodurch sich Barcodefelder verschieben, sowie der Überlauf von CPT-Zwischenergebnissen, wenn jemand die Routine später auf eine vollständige JDN-Berechnung erweitert. Halten Sie im Kontaktplan Kommentare fest, die die auf dieser Maschine tatsächlich verwendeten RTC-Quellwörter nennen.
Wenn der Datumscode Teil einer umfassenderen Verpackungszelle ist, speichern Sie den Generator als wiederverwendbare Datei und standardisieren Sie die Integer-Strukturen über alle Linien hinweg. Ersatzprozessoren und Dokumentationen für diese SLC-500-PLC-Systeme sollten die Datumscoderoutine enthalten, damit ein Prozessortausch nicht unbemerkt zu einer älteren, fehlerhaften Kalenderimplementierung zurückkehrt.
Über den Autor
Mark Townsend | Senior-Automatisierungsingenieur – Allen-Bradley-Systeme
Mark Townsend ist ein Senior-Automatisierungsingenieur mit mehr als 18 Jahren Erfahrung mit Allen-Bradley-Plattformen, darunter ControlLogix, CompactLogix und das ältere SLC-500. Zu seiner täglichen Arbeit gehören RSLogix- / Studio-5000-Logik sowie die Inbetriebnahme von FactoryTalk-View-HMIs in alternden und gemischten Anlagenbeständen.