Codes de jour de l’année SLC 5/04 pour imprimantes d’étiquettes
Créez un code de production YYYYDDD validé dans un SLC 5/04. Ce guide distingue le jour ordinal du nombre de jours juliens et traite de l’échantillonnage de l’horloge, des années bissextiles, des d...
De nombreuses usines de conditionnement demandent à un SLC 5/04 de créer une « date julienne » pour une imprimante d’étiquettes. Dans la plupart des cas, la valeur requise n’est pas un numéro de jour julien astronomique. Il s’agit d’un jour ordinal, également appelé jour de l’année : le 1er janvier correspond à 001, et le 31 décembre à 365 ou 366. Cette distinction doit être inscrite dans la spécification de l’interface avant de créer la logique à relais.
Un code tel que 2026243 signifie généralement l’année 2026 suivie du jour ordinal 243. Il est utile pour le suivi des lots, car sa longueur est fixe et son tri est naturel au sein d’une même année. Il n’identifie ni l’heure, ni le fuseau horaire, ni l’équipe de production, ni un lot globalement unique. Ces champs doivent être gérés séparément lorsque la traçabilité l’exige.

Définissez le code demandé comme l’année suivie d’un jour ordinal à trois chiffres avant de choisir un stockage entier ou chaîne.
Vérifiez d’abord la source de l’horloge du contrôleur
Ne copiez pas les adresses du fichier d’état d’un autre projet sans vérifier le processeur installé, la série, le micrologiciel et la référence officielle de la table de données. Le fichier d’état du SLC contient les informations d’horloge, mais les mots exacts et leur comportement de mise à jour doivent être vérifiés pour le contrôleur cible. Des alias incorrects peuvent produire des valeurs plausibles jusqu’à ce qu’un changement de mois ou d’année révèle l’erreur.
Copiez l’année, le mois et le jour dans des registres de travail à partir d’un même échantillon cohérent. Si les valeurs sont lues autour de minuit, la routine peut combiner le mois d’hier avec le jour d’aujourd’hui. Une approche consiste à effectuer deux échantillonnages et à n’accepter les données que lorsque les deux ensembles correspondent. Une autre consiste à mettre à jour la date de production pendant un intervalle calme défini après minuit.
L’horloge du contrôleur doit également être entretenue. Une formule correcte ne peut pas réparer une batterie déchargée, une horloge incorrecte ou un réglage non autorisé. Déclenchez une alarme lorsque la date est en dehors d’une plage approuvée et documentez les personnes autorisées à régler l’horloge après une maintenance.
Utilisez une méthode claire avec décalage mensuel
Le jour ordinal correspond au jour du mois plus le nombre total de jours des mois précédents. Stockez les décalages cumulatifs hors année bissextile dans un fichier d’entiers : janvier 0, février 31, mars 59, avril 90, mai 120, juin 151, juillet 181, août 212, septembre 243, octobre 273, novembre 304 et décembre 334.
Validez le mois avant d’indexer ce fichier. Une valeur nulle, négative ou supérieure à 12 ne doit pas adresser un registre imprévu. Validez également le jour par rapport au mois sélectionné. Le contrôleur doit activer un bit de date invalide, empêcher l’impression et afficher les champs rejetés au lieu de créer un code de lot plausible, mais faux.
Après avoir récupéré le décalage, calculez le jour ordinal en additionnant le décalage et le jour du mois. Ajoutez un lorsque l’année est bissextile et que le mois est postérieur à février. Gardez les valeurs intermédiaires visibles dans des registres distincts. Une expression compacte peut économiser un barreau, mais rend le dépannage en ligne plus difficile.
Implémentez la règle grégorienne des années bissextiles
Le test courant « divisible par quatre » est incomplet pour les années séculaires. Selon la règle grégorienne, une année est bissextile lorsqu’elle est divisible par quatre, sauf si elle est divisible par 100, à moins qu’elle ne soit également divisible par 400. Ainsi, 2000 était bissextile, 2100 ne le sera pas et 2400 le sera.
Le NIST explique que le calendrier grégorien supprime trois années bissextiles par cycle de 400 ans. Cette règle mérite d’être implémentée, car du code réutilisable reste souvent en service plus longtemps que prévu. Consultez l’explication du NIST sur les années bissextiles.
Construisez le test à partir de comparaisons explicites des restes, prises en charge par le jeu d’instructions installé. Commentez chaque branche. Évitez une expression que les futurs techniciens ne pourront pas vérifier en ligne. Si la spécification de l’usine utilise délibérément une règle plus simple, documentez sa plage de dates de validité.
Maintenez l’arithmétique entière dans les limites
Le jour ordinal tient dans un entier signé de 16 bits. Une valeur numérique combinée telle que YYYYDDD ne tient pas dans cette plage. Par exemple, 2026243 dépasse 32 767. N’essayez pas de stocker le code complet de l’étiquette dans un registre entier SLC standard.
Conservez l’année et le jour ordinal comme des entiers distincts, puis créez une chaîne. Cela évite le dépassement de capacité et préserve les zéros en tête. Si l’imprimante accepte des champs séparés, transmettez-les séparément. Si un numéro de jour julien astronomique est réellement requis, utilisez un algorithme et une représentation des données examinés séparément ; ne renommez pas cette routine de jour ordinal.
Formatez une chaîne d’imprimante à largeur fixe
La chaîne de production doit toujours contenir quatre chiffres pour l’année et trois chiffres pour le jour ordinal. Le jour 7 doit devenir 007. Créez le résultat dans une mémoire tampon ASCII ou chaîne à l’aide des instructions prises en charge par le processeur et le projet. Vérifiez la longueur de destination avant le déclenchement de l’impression et réécrivez toute la mémoire tampon afin qu’aucun caractère d’un ancien message ne subsiste.

Le formatage à largeur fixe préserve les zéros en tête et maintient l’alignement des champs du code-barres.
Utilisez une poignée de main de type demande-acquittement avec l’imprimante. Figez la chaîne de date terminée lorsque la demande est émise. Ne laissez pas une routine de date s’exécutant en continu modifier la mémoire tampon pendant qu’un message est actif. Enregistrez la réussite, l’expiration du délai et le rejet par l’imprimante comme des états distincts.
Validez les limites, pas seulement les dates courantes
Testez le 1er janvier, le 28 février, le 29 février d’une année bissextile, le 1er mars des années bissextiles et communes, le 31 décembre et la transition vers la nouvelle année. Incluez le 31/12/2099, le 28/02/2100 et le 01/03/2100 si le code peut rester en service ou être réutilisé. Comparez les résultats avec un calendrier indépendant.
Provoquez délibérément des données incorrectes : mois 0, mois 13, jour 0, 31 avril et 29 février d’une année commune. Vérifiez que la routine refuse d’imprimer. Redémarrez le processeur autour d’un changement de date et vérifiez l’horloge, les registres de travail, le comportement au premier cycle et la poignée de main avec l’imprimante.
Intégrez le code à la gestion des lots
La routine de date doit fournir une valeur validée, mais la séquence de conditionnement détermine le moment où elle devient partie intégrante d’un lot. Un lot qui commence avant minuit peut devoir conserver sa date de production d’origine après le changement de calendrier. Capturez la valeur approuvée au début du lot et conservez-la jusqu’à sa clôture.
Stockez la routine documentée avec les dossiers de migration de l’usine relatifs aux systèmes PLC et PAC. Incluez les mots exacts de la source d’horloge utilisés sur cette machine. Maintenez le code de date actif et l’état de validation visibles via la couche IHM et informatique industrielle.
Perspective d’ingénierie
L’amélioration principale est la clarté conceptuelle. Appelez cette valeur un jour ordinal ou un code de jour de l’année, validez l’horloge et les champs du calendrier, utilisez la règle grégorienne complète, maintenez l’arithmétique dans les limites et figez une chaîne à largeur fixe pendant la transmission. Ces décisions évitent les erreurs de traçabilité silencieuses qui peuvent n’apparaître que lors d’un jour bissextile, d’un changement d’année ou du remplacement d’un contrôleur.