Powrót do blogu

Kody dnia roku SLC 5/04 dla drukarek etykiet

Zbuduj zweryfikowany kod produkcyjny YYYYDDD w sterowniku SLC 5/04. Ten przewodnik rozróżnia dzień porządkowy od liczby dnia juliańskiego oraz omawia odczyt zegara, lata przestępne, przepełnienie, ...

Wiele zakładów pakujących zleca sterownikowi SLC 5/04 utworzenie „daty juliańskiej” dla drukarki etykiet. W większości przypadków wymagana wartość nie jest astronomicznym numerem dnia juliańskiego. Jest to dzień porządkowy, nazywany również dniem roku: 1 stycznia to 001, a 31 grudnia to 365 lub 366. To rozróżnienie należy zapisać w specyfikacji interfejsu przed utworzeniem logiki drabinkowej.

Kod taki jak 2026243 zwykle oznacza rok 2026, po którym następuje dzień porządkowy 243. Jest przydatny do śledzenia partii, ponieważ ma stałą długość i naturalnie sortuje się w obrębie roku. Nie określa pory dnia, strefy czasowej, zmiany produkcyjnej ani globalnie unikatowej partii. Jeśli identyfikowalność tego wymaga, tymi polami należy zarządzać osobno.

Procedura drabinkowa SLC 5/04 obliczająca kod dnia porządkowego na podstawie pól kalendarza

Przed wyborem przechowywania w postaci liczby całkowitej lub ciągu znaków zdefiniuj żądany kod jako rok plus trzycyfrowy dzień porządkowy.

Najpierw zweryfikuj źródło zegara sterownika

Nie kopiuj adresów pliku statusowego z innego projektu bez sprawdzenia zainstalowanego procesora, serii, wersji oprogramowania układowego i oficjalnej dokumentacji tabeli danych. Plik statusowy SLC zawiera informacje o zegarze, ale dokładne słowa i sposób aktualizacji należy zweryfikować dla docelowego sterownika. Nieprawidłowe aliasy mogą generować wiarygodne wartości do momentu, gdy zmiana miesiąca lub roku ujawni błąd.

Kopiuj rok, miesiąc i dzień do rejestrów roboczych jako jeden spójny odczyt. Jeśli wartości są odczytywane o północy, procedura może połączyć wczorajszy miesiąc z dzisiejszym dniem. Jednym ze sposobów jest wykonanie dwóch odczytów i zaakceptowanie danych dopiero wtedy, gdy oba zestawy są identyczne. Innym jest aktualizowanie daty produkcji w określonym, spokojnym przedziale czasu po północy.

Zegar sterownika również musi być utrzymywany. Prawidłowy wzór nie naprawi rozładowanej baterii, nieprawidłowego zegara ani nieautoryzowanej korekty. Generuj alarm, gdy data wykracza poza zatwierdzony zakres, i dokumentuj, kto może ustawiać zegar po konserwacji.

Stosuj przejrzystą metodę przesunięć miesięcznych

Dzień porządkowy jest równy dniowi miesiąca powiększonemu o liczbę wszystkich dni w poprzednich miesiącach. Przechowuj skumulowane przesunięcia dla lat nieprzestępnych w pliku liczb całkowitych: styczeń 0, luty 31, marzec 59, kwiecień 90, maj 120, czerwiec 151, lipiec 181, sierpień 212, wrzesień 243, październik 273, listopad 304, grudzień 334.

Przed indeksowaniem tego pliku zweryfikuj miesiąc. Wartość zero, ujemna lub większa od 12 nie może adresować niezamierzonego rejestru. Zweryfikuj również dzień względem wybranego miesiąca. Sterownik powinien ustawić bit nieprawidłowej daty, zablokować drukowanie i wyświetlić odrzucone pola zamiast tworzyć wiarygodny, lecz fałszywy kod partii.

Po pobraniu przesunięcia oblicz dzień porządkowy jako sumę przesunięcia i dnia miesiąca. Dodaj jeden, gdy rok jest przestępny, a miesiąc przypada po lutym. Przechowuj wartości pośrednie w osobnych, widocznych rejestrach. Zwięzłe wyrażenie może oszczędzić jeden szczebel, ale utrudnia diagnostykę online.

Zaimplementuj gregoriańską regułę lat przestępnych

Popularny test „podzielności przez cztery” jest niepełny w przypadku lat kończących stulecie. Zgodnie z regułą gregoriańską rok jest przestępny, gdy dzieli się przez cztery, z wyjątkiem lat podzielnych przez 100, które nie są przestępne, chyba że dzielą się również przez 400. Dlatego rok 2000 był przestępny, 2100 nie będzie, a 2400 będzie.

NIST wyjaśnia, że kalendarz gregoriański eliminuje trzy lata przestępne w każdym cyklu 400-letnim. Warto zaimplementować tę regułę, ponieważ kod wielokrotnego użytku często działa dłużej, niż oczekiwano. Zobacz wyjaśnienie NIST dotyczące lat przestępnych.

Zbuduj test na podstawie jawnych porównań reszt, obsługiwanych przez zestaw instrukcji zainstalowanego sterownika. Opisz komentarzem każdą gałąź. Unikaj wyrażenia, którego przyszli technicy nie będą mogli zweryfikować online. Jeśli specyfikacja zakładu celowo stosuje prostszą regułę, udokumentuj jej prawidłowy zakres dat.

Utrzymuj działania na liczbach całkowitych w zakresie

Dzień porządkowy mieści się w 16-bitowej liczbie całkowitej ze znakiem. Połączona wartość numeryczna, taka jak YYYYDDD, już się w niej nie mieści. Na przykład 2026243 przekracza wartość 32 767. Nie próbuj umieszczać pełnego kodu etykiety w zwykłym rejestrze liczby całkowitej SLC.

Przechowuj rok i dzień porządkowy jako osobne liczby całkowite, a następnie utwórz ciąg znaków. Pozwala to uniknąć przepełnienia i zachować zera wiodące. Jeśli drukarka przyjmuje osobne pola, przesyłaj je osobno. Jeśli rzeczywiście wymagany jest astronomiczny numer dnia juliańskiego, użyj osobno zweryfikowanego algorytmu i sposobu reprezentacji danych; nie zmieniaj nazwy tej procedury dnia porządkowego.

Formatuj ciąg znaków drukarki o stałej szerokości

Ciąg produkcyjny powinien zawsze zawierać cztery cyfry roku i trzy cyfry dnia porządkowego. Dzień 7 musi zostać zapisany jako 007. Utwórz wynik w buforze ASCII lub buforze ciągu znaków, korzystając z instrukcji obsługiwanych przez sterownik i projekt. Przed wyzwoleniem drukowania sprawdź długość miejsca docelowego i nadpisz cały bufor, aby znaki ze starszego komunikatu nie pozostały.

Kod etykiety YYYYDDD o stałej szerokości wygenerowany przez SLC 5/04

Formatowanie o stałej szerokości zachowuje zera wiodące i utrzymuje wyrównanie pól kodu kreskowego.

Stosuj uzgadniany handshake żądania i potwierdzenia z drukarką. Zamroź gotowy ciąg daty w chwili wystawienia żądania. Nie pozwól, aby procedura swobodnie aktualizująca datę zmieniała bufor, gdy komunikat jest aktywny. Rejestruj powodzenie, przekroczenie limitu czasu i odrzucenie przez drukarkę jako osobne stany.

Sprawdzaj wartości graniczne, nie tylko typowe daty

Przetestuj 1 stycznia, 28 lutego, 29 lutego w roku przestępnym, 1 marca w roku przestępnym i zwykłym, 31 grudnia oraz przejście na nowy rok. Uwzględnij 2099-12-31, 2100-02-28 i 2100-03-01, jeśli kod może pozostać w użyciu lub zostać przeniesiony do kolejnego systemu. Porównaj wyniki z niezależnym kalendarzem.

Celowo wprowadź nieprawidłowe dane: miesiąc 0, miesiąc 13, dzień 0, 31 kwietnia oraz 29 lutego w roku zwykłym. Potwierdź, że procedura odmawia drukowania. Wyłącz i włącz zasilanie procesora w pobliżu zmiany daty i zweryfikuj zegar, rejestry robocze, działanie przy pierwszym skanowaniu oraz handshake z drukarką.

Połącz kod z przypisaniem do partii

Procedura daty powinna dostarczać zweryfikowaną wartość, ale sekwencja pakowania decyduje, kiedy staje się ona częścią partii. Partia rozpoczęta przed północą może wymagać zachowania pierwotnej daty produkcji po zmianie dnia kalendarzowego. Przechwyć zatwierdzoną wartość na początku partii i zachowaj ją do czasu jej zamknięcia.

Przechowuj udokumentowaną procedurę wraz z dokumentacją migracji zakładowych systemów PLC i PAC. Uwzględnij dokładne słowa źródła zegara używane w danej maszynie. Udostępniaj aktywny kod daty i stan weryfikacji za pośrednictwem warstwy HMI i komputerów przemysłowych.

Perspektywa inżynierska

Najważniejszym usprawnieniem jest jasność pojęciowa. Nazywaj tę wartość kodem dnia porządkowego lub dniem roku, weryfikuj zegar i pola kalendarza, stosuj pełną regułę gregoriańską, utrzymuj działania arytmetyczne w zakresie i zamrażaj ciąg znaków o stałej szerokości podczas transmisji. Decyzje te zapobiegają cichym błędom identyfikowalności, które mogą ujawnić się dopiero w dniu przestępnym, na granicy roku lub po wymianie sterownika.

Zostaw komentarz

Pamiętaj, że komentarze muszą zostać zatwierdzone przed ich opublikowaniem.