Zurück zum Blog

SLC 5/04-Tagescode des Jahres für Etikettendrucker

Erstellen Sie in einer SLC 5/04 einen validierten Produktionscode im Format JJJJTTT. Dieser Leitfaden unterscheidet zwischen dem Ordinaltag und der Julianischen Tageszahl und behandelt das Auslesen...

Viele Verpackungsanlagen fordern von einer SLC 5/04, ein „Julianisches Datum“ für einen Etikettendrucker zu erzeugen. In den meisten Fällen ist der erforderliche Wert jedoch keine astronomische Julianische Tageszahl. Es handelt sich um einen fortlaufenden Tag, auch Tag des Jahres genannt: Der 1. Januar ist 001 und der 31. Dezember ist 365 oder 366. Diese Unterscheidung sollte in die Schnittstellenspezifikation aufgenommen werden, bevor die Kontaktplanlogik erstellt wird.

Ein Code wie 2026243 bedeutet normalerweise das Jahr 2026 gefolgt vom 243. Tag des Jahres. Er eignet sich für die Chargenverfolgung, weil er eine feste Länge hat und innerhalb eines Jahres automatisch chronologisch sortiert wird. Er enthält keine Angaben zur Tageszeit, Zeitzone, Produktionsschicht oder zu einer weltweit eindeutigen Charge. Wenn die Rückverfolgbarkeit dies erfordert, müssen diese Felder separat verwaltet werden.

SLC-5/04-Kontaktroutine zur Berechnung eines Codes für den fortlaufenden Tag aus Kalenderfeldern

Definieren Sie den angeforderten Code als Jahr plus dreistelligen fortlaufenden Tag, bevor Sie eine Speicherung als Ganzzahl oder Zeichenfolge wählen.

Prüfen Sie zuerst die Quelle der Steuerungsuhr

Übernehmen Sie Statusdateiadressen nicht aus einem anderen Projekt, ohne den installierten Prozessor, die Serie, die Firmware und die offizielle Referenz der Datentabelle zu prüfen. Die SLC-Statusdatei enthält Uhrzeitinformationen, aber die genauen Wörter und das Aktualisierungsverhalten müssen für die Zielsteuerung überprüft werden. Falsche Aliasnamen können plausible Werte liefern, bis ein Monats- oder Jahreswechsel den Fehler sichtbar macht.

Kopieren Sie Jahr, Monat und Tag als zusammenhängende Stichprobe in Arbeitsregister. Wenn die Werte über Mitternacht hinweg gelesen werden, kann die Routine den Monat von gestern mit dem Tag von heute kombinieren. Eine Möglichkeit besteht darin, zweimal eine Stichprobe zu nehmen und die Daten nur zu akzeptieren, wenn beide Sätze übereinstimmen. Eine andere Möglichkeit ist, das Produktionsdatum während eines festgelegten ruhigen Zeitraums nach Mitternacht zu aktualisieren.

Die Steuerungsuhr muss ebenfalls gewartet werden. Eine korrekte Formel kann keine leere Batterie, eine falsche Uhrzeit oder eine unbefugte Änderung beheben. Lösen Sie einen Alarm aus, wenn das Datum außerhalb eines zulässigen Bereichs liegt, und dokumentieren Sie, wer die Uhr nach Wartungsarbeiten einstellen darf.

Verwenden Sie eine übersichtliche Methode mit Monatsverschiebungen

Der fortlaufende Tag entspricht dem Tag des Monats plus der Anzahl aller Tage in den vorangegangenen Monaten. Speichern Sie die kumulierten Verschiebungen für Nicht-Schaltjahre in einer Ganzzahldatei: Januar 0, Februar 31, März 59, April 90, Mai 120, Juni 151, Juli 181, August 212, September 243, Oktober 273, November 304 und Dezember 334.

Validieren Sie den Monat, bevor Sie diese Datei indizieren. Ein Nullwert, ein negativer Wert oder ein Wert über 12 darf nicht auf ein unbeabsichtigtes Register verweisen. Validieren Sie außerdem den Tag anhand des ausgewählten Monats. Die Steuerung sollte ein Bit für „Datum ungültig“ setzen, den Druck sperren und die abgewiesenen Felder anzeigen, anstatt einen plausiblen, aber falschen Chargencode zu erzeugen.

Berechnen Sie nach dem Abrufen der Verschiebung den fortlaufenden Tag als Verschiebung plus Tag des Monats. Addieren Sie eins, wenn es sich um ein Schaltjahr handelt und der Monat nach Februar liegt. Halten Sie Zwischenwerte in separaten Registern sichtbar. Ein kompakter Ausdruck spart möglicherweise eine Zeile, erschwert jedoch die Online-Fehlersuche.

Implementieren Sie die gregorianische Schaltjahrregel

Die übliche Prüfung „durch vier teilbar“ ist für Jahrhundertjahre unvollständig. Nach der gregorianischen Regel ist ein Jahr ein Schaltjahr, wenn es durch vier teilbar ist. Jahre, die durch 100 teilbar sind, sind jedoch keine Schaltjahre, es sei denn, sie sind auch durch 400 teilbar. Daher war 2000 ein Schaltjahr, 2100 wird keines sein und 2400 wird eines sein.

Das NIST erklärt, dass der gregorianische Kalender in jedem 400-Jahre-Zyklus drei Schaltjahre auslässt. Diese Regel ist eine Implementierung wert, weil wiederverwendeter Code oft länger eingesetzt wird als erwartet. Siehe die Erklärung des NIST zu Schaltjahren.

Erstellen Sie die Prüfung anhand expliziter Restvergleiche, die vom installierten Befehlssatz unterstützt werden. Kommentieren Sie jeden Zweig. Vermeiden Sie einen Ausdruck, den künftige Techniker online nicht überprüfen können. Wenn die Werksspezifikation absichtlich eine einfachere Regel verwendet, dokumentieren Sie deren gültigen Datumsbereich.

Halten Sie die Ganzzahlarithmetik innerhalb des Wertebereichs

Der fortlaufende Tag passt in eine vorzeichenbehaftete 16-Bit-Ganzzahl. Ein kombinierter Zahlenwert wie YYYYDDD jedoch nicht. Beispielsweise überschreitet 2026243 den Wert 32.767. Versuchen Sie nicht, den vollständigen Etikettencode in einem normalen SLC-Ganzzahlregister zu speichern.

Halten Sie Jahr und fortlaufenden Tag als separate Ganzzahlen und erstellen Sie anschließend eine Zeichenfolge. So vermeiden Sie einen Überlauf und erhalten führende Nullen. Wenn der Drucker separate Felder akzeptiert, übertragen Sie diese separat. Falls tatsächlich eine astronomische Julianische Tageszahl erforderlich ist, verwenden Sie einen separat geprüften Algorithmus und eine entsprechende Datenrepräsentation; benennen Sie diese Routine für fortlaufende Tage nicht um.

Formatieren Sie eine Druckerzeichenfolge mit fester Breite

Die Produktionszeichenfolge sollte immer vier Jahresziffern und drei Ziffern für den fortlaufenden Tag enthalten. Aus Tag 7 muss 007 werden. Erstellen Sie das Ergebnis in einem ASCII- oder Zeichenkettenpuffer mit den vom Prozessor und Projekt unterstützten Anweisungen. Prüfen Sie vor dem Drucktrigger die Länge des Zielbereichs und überschreiben Sie den gesamten Puffer, damit keine Zeichen einer älteren Meldung verbleiben.

Von einer SLC 5/04 erzeugter Etikettencode mit fester Breite im Format YYYYDDD

Die Formatierung mit fester Breite erhält führende Nullen und sorgt für eine einheitliche Ausrichtung der Barcodefelder.

Verwenden Sie für die Kommunikation mit dem Drucker einen Anfrage-Bestätigungs-Handshake. Fixieren Sie die fertige Datumszeichenfolge, sobald die Anfrage ausgegeben wird. Eine frei laufende Datumsroutine darf den Puffer nicht ändern, solange eine Meldung aktiv ist. Erfassen Sie Erfolg, Zeitüberschreitung und Druckerablehnung als separate Zustände.

Validieren Sie Grenzfälle, nicht nur normale Daten

Testen Sie den 1. Januar, den 28. Februar, den 29. Februar in einem Schaltjahr, den 1. März in Schaltjahren und Nicht-Schaltjahren, den 31. Dezember sowie den Jahreswechsel. Beziehen Sie 2099-12-31, 2100-02-28 und 2100-03-01 ein, wenn der Code weiter betrieben oder künftig kopiert werden könnte. Vergleichen Sie die Ergebnisse mit einem unabhängigen Kalender.

Provozieren Sie absichtlich fehlerhafte Daten: Monat 0, Monat 13, Tag 0, den 31. April und den 29. Februar in einem Nicht-Schaltjahr. Bestätigen Sie, dass die Routine den Druck verweigert. Schalten Sie den Prozessor in der Nähe eines Datumswechsels aus und wieder ein und überprüfen Sie Uhr, Arbeitsregister, Verhalten beim ersten Zyklus und den Drucker-Handshake.

Integrieren Sie den Code in die Chargenverwaltung

Die Datumsroutine sollte einen validierten Wert bereitstellen, aber die Verpackungssequenz entscheidet, wann er Bestandteil einer Charge wird. Eine Charge, die vor Mitternacht beginnt, benötigt möglicherweise auch nach dem Kalenderwechsel weiterhin ihr ursprüngliches Produktionsdatum. Erfassen Sie den freigegebenen Wert beim Chargenstart und behalten Sie ihn bis zum Abschluss der Charge bei.

Speichern Sie die dokumentierte Routine zusammen mit den Migrationsunterlagen der SPS- und PAC-Systeme des Werks. Fügen Sie die genauen Uhrquellenwörter hinzu, die auf dieser Maschine verwendet werden. Halten Sie den aktiven Datumscode und den Validierungsstatus über die Ebene HMI und industrielle Computertechnik sichtbar.

Aus Sicht der Verfahrenstechnik

Die wichtigste Verbesserung ist begriffliche Klarheit. Bezeichnen Sie den Wert als fortlaufenden Tag oder Tag-des-Jahres-Code, validieren Sie Uhr- und Kalenderfelder, verwenden Sie die vollständige gregorianische Regel, halten Sie die Arithmetik innerhalb des Wertebereichs und fixieren Sie während der Übertragung eine Zeichenfolge mit fester Breite. Diese Entscheidungen verhindern unbemerkte Fehler bei der Rückverfolgbarkeit, die möglicherweise erst an einem Schalttag, am Jahreswechsel oder beim Austausch der Steuerung auftreten.

Einen Kommentar hinterlassen

Bitte beachten Sie, dass Kommentare genehmigt werden müssen, bevor sie veröffentlicht werden.