SLC-5/04 Julian Date Generator Implementation Guide — figure 1

Guide de mise en œuvre du générateur de date julienne SLC-5/04

Implémentez un générateur de date julienne dans un SLC-5/04 pour une sortie ASCII destinée aux imprimantes d’étiquettes. Logique à relais détaillée, étape pa...

La famille SLC-5/04, qui comprend des processeurs tels que le 1747-L542, ne fournit pas d’instruction intégrée pour le numéro de jour julien (JDN). Le conditionnement, le codage des lots et les imprimantes d’étiquettes nécessitent fréquemment une valeur de jour de l’année ou une chaîne compacte au format AAAAJJJ. La logique doit donc être construite à partir d’opérations mathématiques ordinaires et d’opérations sur des tables de données. Ce guide présente une approche facile à maintenir utilisant des expressions CPT, une table cumulative des jours par mois, la gestion des années bissextiles et la conversion ASCII pour les données destinées à l’imprimante, tout en signalant les limites des calculs sur seize bits qui piègent de nombreuses premières implémentations.

Guide d’implémentation du générateur de date julienne SLC-5/04 — figure 1 Les processeurs SLC-5/04 calculent le jour de l’année et les codes de type julien en logique à relais à l’aide de CPT, de fichiers d’entiers et de valeurs RTC correctement identifiées.

Les documents sources indiquent parfois des mots du fichier d’état dans la zone S:50–S:52 pour l’année, le mois et le jour, tandis que d’autres documentations mettent l’accent sur la zone plus large de l’horloge temps réel autour de S:37, selon le processeur et le contexte du firmware. Traitez les mots sources RTC avec précaution : vérifiez la cartographie exacte du fichier d’état correspondant au catalogue et à la série installés avant de figer les alias des variables. Une fois les champs calendaires validés, l’algorithme lui-même est portable entre les projets SLC-5/04.

Organisation de la table de données

Une organisation claire des entiers facilite la lecture de la routine pour le prochain technicien. Un schéma courant utilise les registres N7 comme suit : N7:0 année, N7:1 mois, N7:2 jour du mois, N7:3 résultat du jour de l’année, N7:4 indicateur d’année bissextile et N7:5 zone de préparation pour les résultats CPT intermédiaires. Stockez les décalages cumulés des jours par mois dans une table d’entiers fixe — par exemple N10:1 à N10:12 contenant 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 pour une base non bissextile jusqu’à novembre, la gestion de février étant appliquée via l’indicateur bissextile plutôt que par la modification de la table pendant l’exécution. Adaptez la table exacte à votre préférence d’indexation à partir de zéro, mais documentez-la à proximité des lignes.

Exemple d’approche pour le jour de l’année (conceptuel)
Bissextile = (A divisible par 4), avec les règles des siècles si nécessaire
JourDeLAnnee = Jour + Cumul[Mois] + (Bissextile ET Mois>2)
Chaîne AAAAJJJ via ASC / formatage de type AIF pour les imprimantes

Pour de nombreuses usines, le jour de l’année (DOY) au format AAAAJJJ suffit et évite la complexité complète du JDN astronomique. Les numéros de jour julien complets couvrant plusieurs siècles nécessitent une gestion plus rigoureuse des entiers ; les opérations CPT du SLC débordent avec des entiers de 16 bits si les produits intermédiaires ne sont pas stockés par étapes. Préférez calculer le DOY sur 16 bits, puis concaténer l’année et le DOY complété par des zéros dans un fichier ASCII destiné à l’imprimante plutôt que de forcer le résultat dans un entier unique trop grand.

Année bissextile et structure CPT

La logique des années bissextiles doit respecter les règles du calendrier civil utilisées par votre système qualité. Au minimum, les années divisibles par quatre sont bissextiles ; si la durée de vie de votre produit couvre des changements de siècle, appliquez les exceptions grégoriennes complètes (les années séculaires ne sont bissextiles que si elles sont divisibles par 400). Affectez la valeur un à N7:4 lorsque l’année est bissextile. Lors de l’ajout du décalage mensuel cumulé, ajoutez un jour supplémentaire uniquement si l’indicateur bissextile est activé et si le mois est postérieur à février. Effectuez cette addition dans une CPT dédiée plutôt que d’enfouir des conditions imbriquées dans une expression illisible.

Copiez l’année, le mois et le jour depuis les mots sources RTC vérifiés vers les registres de travail N7 dans une tâche périodique lente ou lors d’un premier cycle, puis à chaque changement de jour. Ne lisez pas les mots RTC dans chaque ligne à exécution libre si le formatage ASC en aval est coûteux ; une actualisation une fois par minute suffit généralement pour le codage des dates.

Guide d’implémentation du générateur de date julienne SLC-5/04 — figure 2 Les chaînes DOY complétées par des zéros alimentent les imprimantes d’étiquettes de manière plus fiable que les entiers bruts lorsque la longueur du code-barres doit rester fixe.

Formatage ASCII pour les imprimantes d’étiquettes

La plupart des imprimantes industrielles attendent une chaîne de longueur fixe. Une fois le DOY calculé dans N7:3, utilisez les instructions de fichier ASCII pour créer une chaîne telle que AAAAJJJ, avec des zéros en tête du champ du jour. Vérifiez la longueur avant de déclencher la poignée de communication d’impression. Si le protocole de l’imprimante nécessite des séparateurs ou des préfixes propres à l’usine, construisez-les dans le même tampon de chaîne plutôt que de compter sur l’imprimante pour compléter le format.

  1. Confirmez la cartographie des mots RTC pour le firmware spécifique du 1747-L542 (ou du SLC-5/04 installé).
  2. Créez les variables de travail N7 et la table mensuelle cumulative dans un fichier d’entiers.
  3. Écrivez la logique CPT de l’année bissextile et une CPT du DOY qui additionne le jour, le cumul et l’ajustement bissextile.
  4. Formatez AAAAJJJ via ASC et testez avec des dates calendaires connues, notamment le 28 février et le 1er mars des années bissextiles et non bissextiles.
  5. Protégez-vous contre les dépassements de capacité sur 16 bits si une routine tente de calculer des produits JDN complets sur plusieurs siècles ; effectuez les calculs par étapes ou déplacez-les hors du SLC.

Contrôles d’impression pour les années bissextiles et le remplissage par zéros

Les dates de vérification doivent inclure le 29/02/2024, le 01/03/2024, le 28/02/2025 et les transitions de fin d’année du 31/12. Comparez le DOY du PLC à celui d’un calendrier indépendant. Les pièges courants incluent la confiance accordée aux mauvaises adresses du fichier d’état, l’oubli de l’ajustement bissextile de février, l’impression de valeurs DOY non complétées par des zéros qui décalent les champs du code-barres et le dépassement de capacité des résultats intermédiaires CPT lorsqu’une personne étend ultérieurement la routine vers un JDN complet. Conservez dans la logique à relais des commentaires citant les mots sources RTC réellement utilisés sur cette machine.

Lorsque le code de date fait partie d’une cellule de conditionnement plus vaste, stockez le générateur dans un fichier réutilisable et standardisez l’organisation des entiers entre les lignes. Les processeurs de rechange et la documentation de ces systèmes PLC SLC-500 doivent inclure la routine de codage de date afin qu’un remplacement de processeur ne rétablisse pas silencieusement une ancienne implémentation incorrecte du calendrier.

À propos de l’auteur

Mark Townsend | Ingénieur principal en automatisation – systèmes Allen-Bradley

Mark Townsend est ingénieur principal en automatisation et possède plus de 18 ans d’expérience sur les plateformes Allen-Bradley, notamment ControlLogix, CompactLogix et les anciens SLC-500. Son travail quotidien porte sur la logique RSLogix / Studio 5000 et la mise en service des IHM FactoryTalk View sur des parcs vieillissants et hétérogènes.

Guide de mise en œuvre du générateur de date julienne SLC-5/04

Implémentez un générateur de date julienne dans un SLC-5/04 pour une sortie ASCII destinée aux imprimantes d’étiquettes. Logique à relais détaillée, étape par étape, avec des instructions de calcul.

La famille SLC-5/04, qui comprend des processeurs tels que le 1747-L542, ne fournit pas d’instruction intégrée pour le numéro de jour julien (JDN). Le conditionnement, le codage des lots et les imprimantes d’étiquettes nécessitent fréquemment une valeur de jour de l’année ou une chaîne compacte au format AAAAJJJ. La logique doit donc être construite à partir d’opérations mathématiques ordinaires et d’opérations sur des tables de données. Ce guide présente une approche facile à maintenir utilisant des expressions CPT, une table cumulative des jours par mois, la gestion des années bissextiles et la conversion ASCII pour les données destinées à l’imprimante, tout en signalant les limites des calculs sur seize bits qui piègent de nombreuses premières implémentations.

Guide d’implémentation du générateur de date julienne SLC-5/04 — figure 1 Les processeurs SLC-5/04 calculent le jour de l’année et les codes de type julien en logique à relais à l’aide de CPT, de fichiers d’entiers et de valeurs RTC correctement identifiées.

Les documents sources indiquent parfois des mots du fichier d’état dans la zone S:50–S:52 pour l’année, le mois et le jour, tandis que d’autres documentations mettent l’accent sur la zone plus large de l’horloge temps réel autour de S:37, selon le processeur et le contexte du firmware. Traitez les mots sources RTC avec précaution : vérifiez la cartographie exacte du fichier d’état correspondant au catalogue et à la série installés avant de figer les alias des variables. Une fois les champs calendaires validés, l’algorithme lui-même est portable entre les projets SLC-5/04.

Organisation de la table de données

Une organisation claire des entiers facilite la lecture de la routine pour le prochain technicien. Un schéma courant utilise les registres N7 comme suit : N7:0 année, N7:1 mois, N7:2 jour du mois, N7:3 résultat du jour de l’année, N7:4 indicateur d’année bissextile et N7:5 zone de préparation pour les résultats CPT intermédiaires. Stockez les décalages cumulés des jours par mois dans une table d’entiers fixe — par exemple N10:1 à N10:12 contenant 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 pour une base non bissextile jusqu’à novembre, la gestion de février étant appliquée via l’indicateur bissextile plutôt que par la modification de la table pendant l’exécution. Adaptez la table exacte à votre préférence d’indexation à partir de zéro, mais documentez-la à proximité des lignes.

Exemple d’approche pour le jour de l’année (conceptuel)
Bissextile = (A divisible par 4), avec les règles des siècles si nécessaire
JourDeLAnnee = Jour + Cumul[Mois] + (Bissextile ET Mois>2)
Chaîne AAAAJJJ via ASC / formatage de type AIF pour les imprimantes

Pour de nombreuses usines, le jour de l’année (DOY) au format AAAAJJJ suffit et évite la complexité complète du JDN astronomique. Les numéros de jour julien complets couvrant plusieurs siècles nécessitent une gestion plus rigoureuse des entiers ; les opérations CPT du SLC débordent avec des entiers de 16 bits si les produits intermédiaires ne sont pas stockés par étapes. Préférez calculer le DOY sur 16 bits, puis concaténer l’année et le DOY complété par des zéros dans un fichier ASCII destiné à l’imprimante plutôt que de forcer le résultat dans un entier unique trop grand.

Année bissextile et structure CPT

La logique des années bissextiles doit respecter les règles du calendrier civil utilisées par votre système qualité. Au minimum, les années divisibles par quatre sont bissextiles ; si la durée de vie de votre produit couvre des changements de siècle, appliquez les exceptions grégoriennes complètes (les années séculaires ne sont bissextiles que si elles sont divisibles par 400). Affectez la valeur un à N7:4 lorsque l’année est bissextile. Lors de l’ajout du décalage mensuel cumulé, ajoutez un jour supplémentaire uniquement si l’indicateur bissextile est activé et si le mois est postérieur à février. Effectuez cette addition dans une CPT dédiée plutôt que d’enfouir des conditions imbriquées dans une expression illisible.

Copiez l’année, le mois et le jour depuis les mots sources RTC vérifiés vers les registres de travail N7 dans une tâche périodique lente ou lors d’un premier cycle, puis à chaque changement de jour. Ne lisez pas les mots RTC dans chaque ligne à exécution libre si le formatage ASC en aval est coûteux ; une actualisation une fois par minute suffit généralement pour le codage des dates.

Guide d’implémentation du générateur de date julienne SLC-5/04 — figure 2 Les chaînes DOY complétées par des zéros alimentent les imprimantes d’étiquettes de manière plus fiable que les entiers bruts lorsque la longueur du code-barres doit rester fixe.

Formatage ASCII pour les imprimantes d’étiquettes

La plupart des imprimantes industrielles attendent une chaîne de longueur fixe. Une fois le DOY calculé dans N7:3, utilisez les instructions de fichier ASCII pour créer une chaîne telle que AAAAJJJ, avec des zéros en tête du champ du jour. Vérifiez la longueur avant de déclencher la poignée de communication d’impression. Si le protocole de l’imprimante nécessite des séparateurs ou des préfixes propres à l’usine, construisez-les dans le même tampon de chaîne plutôt que de compter sur l’imprimante pour compléter le format.

  1. Confirmez la cartographie des mots RTC pour le firmware spécifique du 1747-L542 (ou du SLC-5/04 installé).
  2. Créez les variables de travail N7 et la table mensuelle cumulative dans un fichier d’entiers.
  3. Écrivez la logique CPT de l’année bissextile et une CPT du DOY qui additionne le jour, le cumul et l’ajustement bissextile.
  4. Formatez AAAAJJJ via ASC et testez avec des dates calendaires connues, notamment le 28 février et le 1er mars des années bissextiles et non bissextiles.
  5. Protégez-vous contre les dépassements de capacité sur 16 bits si une routine tente de calculer des produits JDN complets sur plusieurs siècles ; effectuez les calculs par étapes ou déplacez-les hors du SLC.

Contrôles d’impression pour les années bissextiles et le remplissage par zéros

Les dates de vérification doivent inclure le 29/02/2024, le 01/03/2024, le 28/02/2025 et les transitions de fin d’année du 31/12. Comparez le DOY du PLC à celui d’un calendrier indépendant. Les pièges courants incluent la confiance accordée aux mauvaises adresses du fichier d’état, l’oubli de l’ajustement bissextile de février, l’impression de valeurs DOY non complétées par des zéros qui décalent les champs du code-barres et le dépassement de capacité des résultats intermédiaires CPT lorsqu’une personne étend ultérieurement la routine vers un JDN complet. Conservez dans la logique à relais des commentaires citant les mots sources RTC réellement utilisés sur cette machine.

Lorsque le code de date fait partie d’une cellule de conditionnement plus vaste, stockez le générateur dans un fichier réutilisable et standardisez l’organisation des entiers entre les lignes. Les processeurs de rechange et la documentation de ces systèmes PLC SLC-500 doivent inclure la routine de codage de date afin qu’un remplacement de processeur ne rétablisse pas silencieusement une ancienne implémentation incorrecte du calendrier.

À propos de l’auteur

Mark Townsend | Ingénieur principal en automatisation – systèmes Allen-Bradley

Mark Townsend est ingénieur principal en automatisation et possède plus de 18 ans d’expérience sur les plateformes Allen-Bradley, notamment ControlLogix, CompactLogix et les anciens SLC-500. Son travail quotidien porte sur la logique RSLogix / Studio 5000 et la mise en service des IHM FactoryTalk View sur des parcs vieillissants et hétérogènes.

Laisser un commentaire

Veuillez noter que les commentaires doivent être approuvés avant d'être publiés.