Kódy dne v roce SLC 5/04 pro štítkové tiskárny
Vytvořte ověřený výrobní kód YYYYDDD v řídicím systému SLC 5/04. Tato příručka rozlišuje pořadový den od juliánského dne a zabývá se načítáním času, přestupnými roky, přetečením, formátováním a pot...
Mnoho balicích závodů požaduje, aby SLC 5/04 vytvářel pro tiskárnu etiket „juliánské datum“. Ve většině případů požadovaná hodnota není astronomické juliánské číslo dne. Jde o pořadový den, nazývaný také den v roce: 1. leden je 001 a 31. prosinec je 365 nebo 366. Tento rozdíl by měl být zapsán do specifikace rozhraní ještě před vytvořením logiky v jazyce ladder.
Kód jako 2026243 obvykle znamená rok 2026 následovaný pořadovým dnem 243. Je užitečný pro sledování šarží, protože má pevnou délku a v rámci roku se přirozeně řadí. Neurčuje denní dobu, časové pásmo, výrobní směnu ani globálně jedinečnou šarži. Pokud je pro dohledatelnost potřebujete, musí být tato pole spravována samostatně.

Před volbou celočíselného nebo řetězcového uložení definujte požadovaný kód jako rok plus třímístný pořadový den.
Nejprve ověřte zdroj hodin řídicí jednotky
Nekopírujte adresy stavových souborů z jiného projektu bez ověření nainstalovaného procesoru, série, firmwaru a oficiální reference datové tabulky. Stavový soubor SLC obsahuje informace o hodinách, ale přesná slova a způsob aktualizace musí být ověřeny pro cílovou řídicí jednotku. Nesprávné aliasy mohou vytvářet zdánlivě správné hodnoty, dokud přechod na nový měsíc nebo rok neodhalí chybu.
Zkopírujte rok, měsíc a den do pracovních registrů jako jeden konzistentní vzorek. Pokud jsou hodnoty načteny během půlnoci, může rutina spojit včerejší měsíc s dnešním dnem. Jedním přístupem je načíst vzorek dvakrát a data přijmout pouze tehdy, když se obě sady shodují. Jinou možností je aktualizovat výrobní datum během definovaného klidového intervalu po půlnoci.
Hodiny řídicí jednotky musí být také udržovány. Správný vzorec neopraví vybitou baterii, nesprávně nastavené hodiny ani neoprávněnou úpravu. Pokud je datum mimo schválený rozsah, vyvolejte alarm a zdokumentujte, kdo smí po údržbě nastavit hodiny.
Použijte přehlednou metodu měsíčních offsetů
Pořadový den se rovná dni v měsíci plus počtu dnů ve všech předchozích měsících. Uložte nekumulativní přestupné offsety do celočíselného souboru: leden 0, únor 31, březen 59, duben 90, květen 120, červen 151, červenec 181, srpen 212, září 243, říjen 273, listopad 304 a prosinec 334.
Před indexováním tohoto souboru ověřte měsíc. Nulová, záporná nebo hodnota vyšší než 12 nesmí adresovat nezamýšlený registr. Ověřte také den podle zvoleného měsíce. Řídicí jednotka by měla nastavit bit neplatného data, zablokovat tisk a zobrazit odmítnuté hodnoty místo vytvoření zdánlivě správného, ale falešného kódu šarže.
Po načtení offsetu vypočítejte pořadový den jako offset plus den v měsíci. Pokud je rok přestupný a měsíc následuje po únoru, přičtěte jedničku. Mezivýsledky ponechte viditelné v samostatných registrech. Kompaktní výraz může ušetřit jeden rung, ale ztíží online odstraňování problémů.
Implementujte pravidlo gregoriánského kalendáře pro přestupné roky
Běžný test „dělitelné čtyřmi“ je pro stoletá léta neúplný. Podle gregoriánského pravidla je rok přestupný, pokud je dělitelný čtyřmi, avšak roky dělitelné 100 nejsou přestupné, pokud nejsou zároveň dělitelné 400. Rok 2000 tedy byl přestupný, rok 2100 přestupný nebude a rok 2400 bude.
NIST vysvětluje, že gregoriánský kalendář v každém 400letém cyklu vynechává tři přestupné roky. Toto pravidlo se vyplatí implementovat, protože znovupoužitelný kód často přežije očekávanou dobu. Viz vysvětlení přestupných roků od NIST.
Vytvořte test pomocí explicitního porovnání zbytků podporovaného instrukční sadou nainstalované jednotky. Každou větev okomentujte. Vyhněte se výrazu, který budoucí technici nedokážou ověřit online. Pokud specifikace závodu záměrně používá jednodušší pravidlo, zdokumentujte jeho platný rozsah dat.
Udržujte celočíselnou aritmetiku v rozsahu
Pořadový den se vejde do 16bitového celého čísla se znaménkem. Kombinovaná číselná hodnota jako YYYYDDD se do něj nevejde. Například 2026243 překračuje hodnotu 32 767. Nepokoušejte se celý kód etikety uložit do běžného celočíselného registru SLC.
Rok a pořadový den uchovávejte jako samostatná celá čísla a poté sestavte řetězec. Tím se vyhnete přetečení a zachováte úvodní nuly. Pokud tiskárna přijímá samostatná pole, přenášejte je odděleně. Pokud je skutečně vyžadováno astronomické juliánské číslo dne, použijte samostatně prověřený algoritmus a reprezentaci dat; tuto rutinu pro pořadový den nepřejmenovávejte.
Formátujte řetězec pro tiskárnu s pevnou šířkou
Výrobní řetězec by měl vždy obsahovat čtyři číslice roku a tři číslice pořadového dne. Den 7 musí být zapsán jako 007. Výsledek sestavte v ASCII nebo řetězcové vyrovnávací paměti pomocí instrukcí podporovaných procesorem a projektem. Před spuštěním tisku ověřte délku cílového pole a přepište celou vyrovnávací paměť, aby v ní nezůstaly znaky ze starší zprávy.

Formátování s pevnou šířkou zachovává úvodní nuly a udržuje pole čárového kódu zarovnaná.
S tiskárnou použijte handshake s požadavkem a potvrzením. Po vydání požadavku dokončený řetězec data zmrazte. Nedovolte, aby rutina s průběžně aktualizovaným datem změnila vyrovnávací paměť, zatímco je zpráva aktivní. Úspěch, překročení časového limitu a odmítnutí tiskárnou zaznamenávejte jako samostatné stavy.
Ověřujte hraniční případy, nejen běžná data
Otestujte 1. leden, 28. únor, 29. únor v přestupném roce, 1. březen v přestupném i běžném roce, 31. prosinec a přechod do nového roku. Pokud může kód zůstat v provozu nebo být použit v budoucnu, zahrňte také 31. 12. 2099, 28. 2. 2100 a 1. 3. 2100. Výsledky porovnejte s nezávislým kalendářem.
Záměrně vyzkoušejte neplatná data: měsíc 0, měsíc 13, den 0, 31. duben a 29. únor v běžném roce. Ověřte, že rutina odmítne tisk. Proveďte vypnutí a zapnutí procesoru v blízkosti přechodu data a ověřte hodiny, pracovní registry, chování při prvním skenu a handshake s tiskárnou.
Integrujte kód s vlastnictvím šarže
Rutiny data by měla poskytovat ověřenou hodnotu, ale balicí sekvence určuje, kdy se tato hodnota stane součástí šarže. Šarže, která začne před půlnocí, může po změně kalendářního data potřebovat své původní výrobní datum. Schválenou hodnotu zachyťte při zahájení šarže a uchovávejte ji až do jejího uzavření.
Zdokumentovanou rutinu uložte spolu s migračními záznamy závodu pro systémy PLC a PAC. Uveďte přesná slova zdroje hodin použitá na daném stroji. Aktivní kód data a stav ověření zpřístupněte prostřednictvím vrstvy HMI a průmyslové výpočetní techniky.
Inženýrský pohled
Hlavním zlepšením je pojmová jasnost. Hodnotu nazývejte kódem pořadového dne neboli dnem v roce, ověřujte hodiny a kalendářní údaje, používejte úplné gregoriánské pravidlo, udržujte aritmetiku v rozsahu a během přenosu zmrazte řetězec s pevnou šířkou. Tato rozhodnutí předcházejí tichým chybám v dohledatelnosti, které se mohou projevit až v přestupný den, při přechodu roku nebo po výměně řídicí jednotky.