Torna al blog

Codici del giorno dell’anno SLC 5/04 per stampanti di etichette

Crea un codice di produzione YYYYDDD validato in un SLC 5/04. Questa guida distingue il giorno ordinale dal numero del giorno giuliano e tratta il campionamento dell’orologio, gli anni bisestili, l...

Molti stabilimenti di confezionamento chiedono a un SLC 5/04 di creare una “data giuliana” per una stampante di etichette. Nella maggior parte dei casi, il valore richiesto non è un numero del giorno giuliano astronomico. È un giorno ordinale, detto anche giorno dell’anno: il 1° gennaio è 001 e il 31 dicembre è 365 o 366. Questa distinzione dovrebbe essere riportata nella specifica dell’interfaccia prima di creare la logica ladder.

Un codice come 2026243 di solito indica l’anno 2026 seguito dal giorno ordinale 243. È utile per la tracciabilità dei lotti perché ha una lunghezza fissa e viene ordinato naturalmente all’interno di un anno. Non identifica l’ora del giorno, il fuso orario, il turno di produzione o un lotto globalmente univoco. Quando la tracciabilità lo richiede, questi campi devono essere gestiti separatamente.

Routine ladder dell’SLC 5/04 che calcola un codice di giorno ordinale dai campi del calendario

Definire il codice richiesto come anno più giorno ordinale a tre cifre prima di scegliere la memorizzazione come intero o stringa.

Verificare prima la sorgente dell’orologio del controllore

Non copiare gli indirizzi dei file di stato da un altro progetto senza verificare il processore, la serie, il firmware e il riferimento ufficiale alla tabella dati installati. Il file di stato SLC contiene informazioni sull’orologio, ma le parole esatte e il comportamento di aggiornamento devono essere verificati per il controllore interessato. Alias errati possono produrre valori plausibili finché il passaggio di mese o di anno non rivela l’errore.

Copiare anno, mese e giorno nei registri di lavoro come un’unica lettura coerente. Se i valori vengono letti a cavallo della mezzanotte, la routine può combinare il mese di ieri con il giorno di oggi. Un approccio consiste nel campionare due volte e accettare i dati solo quando entrambi gli insiemi coincidono. Un altro consiste nell’aggiornare la data di produzione durante un intervallo di quiete definito dopo la mezzanotte.

Anche l’orologio del controllore deve essere mantenuto. Una formula corretta non può riparare una batteria scarica, un orologio errato o una regolazione non autorizzata. Generare un allarme quando la data è al di fuori dell’intervallo approvato e documentare chi è autorizzato a impostare l’orologio dopo la manutenzione.

Utilizzare un metodo chiaro basato sugli offset dei mesi

Il giorno ordinale è uguale al giorno del mese più il numero di giorni di tutti i mesi precedenti. Memorizzare in un file di interi gli offset cumulativi per gli anni non bisestili: gennaio 0, febbraio 31, marzo 59, aprile 90, maggio 120, giugno 151, luglio 181, agosto 212, settembre 243, ottobre 273, novembre 304 e dicembre 334.

Convalidare il mese prima di indicizzare quel file. Un valore zero, negativo o superiore a 12 non deve indirizzare un registro non previsto. Convalidare anche il giorno rispetto al mese selezionato. Il controllore dovrebbe impostare un bit di data non valida, impedire la stampa e visualizzare i campi rifiutati invece di creare un codice lotto plausibile ma falso.

Dopo aver recuperato l’offset, calcolare il giorno ordinale come offset più giorno del mese. Aggiungere uno quando l’anno è bisestile e il mese è successivo a febbraio. Mantenere visibili i valori intermedi in registri separati. Un’espressione compatta può risparmiare un rung, ma rende più difficile la ricerca dei guasti online.

Implementare la regola gregoriana per gli anni bisestili

Il comune test della “divisibilità per quattro” è incompleto per gli anni secolari. Secondo la regola gregoriana, un anno è bisestile quando è divisibile per quattro, ad eccezione degli anni divisibili per 100, che non sono bisestili a meno che non siano divisibili anche per 400. Pertanto il 2000 è stato bisestile, il 2100 non lo sarà e il 2400 lo sarà.

NIST spiega che il calendario gregoriano elimina tre anni bisestili ogni ciclo di 400 anni. Vale la pena implementare questa regola perché il codice riutilizzabile spesso rimane in servizio più a lungo del previsto. Consultare la spiegazione di NIST sugli anni bisestili.

Costruire il test utilizzando confronti espliciti dei resti, supportati dal set di istruzioni installato. Commentare ogni ramo. Evitare un’espressione che i tecnici futuri non possano verificare online. Se la specifica dello stabilimento utilizza deliberatamente una regola più semplice, documentarne l’intervallo di validità.

Mantenere l’aritmetica degli interi entro i limiti

Il giorno ordinale rientra in un intero con segno a 16 bit. Un valore numerico combinato come YYYYDDD non vi rientra. Ad esempio, 2026243 supera 32.767. Non forzare il codice completo dell’etichetta in un normale registro intero SLC.

Mantenere anno e giorno ordinale come interi separati, quindi creare una stringa. In questo modo si evitano overflow e si conservano gli zeri iniziali. Se la stampante accetta campi separati, trasmetterli separatamente. Se è realmente richiesto un numero del giorno giuliano astronomico, utilizzare un algoritmo e una rappresentazione dei dati sottoposti a revisione separata; non rinominare questa routine del giorno ordinale.

Formattare una stringa per la stampante a larghezza fissa

La stringa di produzione deve contenere sempre quattro cifre per l’anno e tre cifre per il giorno ordinale. Il giorno 7 deve diventare 007. Creare il risultato in un buffer ASCII o di stringa utilizzando istruzioni supportate dal processore e dal progetto. Confermare la lunghezza della destinazione prima del trigger di stampa e sovrascrivere l’intero buffer, in modo che non rimangano caratteri di un messaggio precedente.

Codice per etichetta YYYYDDD a larghezza fissa generato da un SLC 5/04

La formattazione a larghezza fissa conserva gli zeri iniziali e mantiene allineati i campi del codice a barre.

Utilizzare un handshake di richiesta e conferma con la stampante. Congelare la stringa della data completata quando viene emessa la richiesta. Non permettere che una routine della data a esecuzione continua modifichi il buffer mentre un messaggio è attivo. Registrare come stati separati l’esito positivo, il timeout e il rifiuto della stampante.

Convalidare i limiti, non solo le date normali

Testare il 1° gennaio, il 28 febbraio, il 29 febbraio in un anno bisestile, il 1° marzo negli anni bisestili e comuni, il 31 dicembre e il passaggio al nuovo anno. Includere il 31/12/2099, il 28/02/2100 e il 01/03/2100 se il codice potrebbe rimanere in servizio o essere riutilizzato. Confrontare i risultati con un calendario indipendente.

Provocare deliberatamente dati errati: mese 0, mese 13, giorno 0, 31 aprile e 29 febbraio in un anno comune. Confermare che la routine rifiuti la stampa. Spegnere e riaccendere il processore vicino a un passaggio di data e verificare l’orologio, i registri di lavoro, il comportamento al primo ciclo e l’handshake con la stampante.

Integrare il codice con la gestione del lotto

La routine della data dovrebbe fornire un valore convalidato, ma è la sequenza di confezionamento a decidere quando questo diventa parte di un lotto. Un lotto che inizia prima della mezzanotte potrebbe dover mantenere la data di produzione originale dopo il cambio di calendario. Acquisire il valore approvato all’avvio del lotto e conservarlo fino alla chiusura del lotto.

Archiviare la routine documentata insieme ai record di migrazione dei sistemi PLC e PAC dello stabilimento. Includere le parole esatte della sorgente dell’orologio utilizzate su quella macchina. Mantenere visibili il codice della data attivo e lo stato di convalida attraverso il livello HMI e informatica industriale.

Prospettiva ingegneristica

Il miglioramento principale è la chiarezza concettuale. Definire il valore come giorno ordinale o giorno dell’anno, convalidare l’orologio e i campi del calendario, utilizzare la regola gregoriana completa, mantenere l’aritmetica entro i limiti e congelare una stringa a larghezza fissa durante la trasmissione. Queste decisioni prevengono errori silenziosi di tracciabilità che possono comparire solo in un giorno bisestile, al cambio dell’anno o durante la sostituzione del controllore.

Lascia un commento

Si prega di notare che, prima di essere pubblicati, i commenti devono essere approvati.