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

Ръководство за внедряване на генератор на юлианска дата за SLC-5/04

Имплементирайте генератор на юлианска дата в SLC-5/04 за ASCII изход към принтери за етикети. Стъпкова стълбова логика с инструкции Compute.

Семейството SLC-5/04, включително процесори като 1747-L542, не предоставя вградена инструкция за юлианския пореден номер на деня (JDN). Опаковането, кодирането на партиди и принтерите за етикети често изискват стойност за деня от годината или компактен низ YYYYDDD, затова логиката трябва да бъде изградена с обикновени математически операции и операции с таблици от данни. Това ръководство представя лесен за поддръжка подход с изрази CPT, кумулативна таблица с дните по месеци, обработка на високосни години и ASCII преобразуване за данни към принтера, като същевременно обръща внимание на ограниченията на шестнадесетбитовата аритметика, които създават проблеми при много от първите реализации.

Ръководство за реализация на генератор на юлианска дата за SLC-5/04 — фигура 1 Процесорите SLC-5/04 изчисляват деня от годината и кодове в юлиански стил в стълбовидна логика чрез CPT, целочислени файлове и внимателно проверени стойности от RTC.

В някои изходни материали се посочват думи от статусния файл в областта S:50–S:52 за годината, месеца и деня, докато друга документация набляга на по-широката област на часовника за реално време около S:37 в зависимост от процесора и контекста на фърмуера. Отнасяйте се внимателно към изходните думи на RTC: проверете точната карта на статусния файл за инсталирания каталог и серия, преди да фиксирате псевдонимите на таговете. След като календарните полета са потвърдени, самият алгоритъм е преносим между проектите със SLC-5/04.

Подредба на таблицата с данни

Добре подредената целочислена структура улеснява разчитането на рутината от следващия техник. Типичният модел използва регистрите N7 по следния начин: N7:0 година, N7:1 месец, N7:2 ден от месеца, N7:3 резултат за деня от годината, N7:4 флаг за високосна година и N7:5 буфер за междинни резултати от CPT. Съхранявайте кумулативните отмествания на дните за месеците във фиксирана целочислена таблица — например N10:1 до N10:12, съдържащи 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 за невисокосна базова година до ноември, като обработката на февруари се извършва чрез флага за високосна година, а не чрез редактиране на таблицата по време на работа. Настройте точната таблица според предпочитаното от вас индексиране, но го опишете непосредствено до стъпалата.

Примерен подход за DOY (концептуален)
Leap = (Y се дели на 4) с необходимите правила за вековете
DOY = Day + Cumulative[Month] + (Leap AND Month>2)
Низ YYYYDDD чрез форматиране в стил ASC / AIF за принтери

За много фабрики денят от годината (DOY) във формат YYYYDDD е достатъчен и избягва пълната астрономическа сложност на JDN. Пълните юлиански поредни номера на дни, обхващащи векове, изискват по-внимателна работа с целите числа; операциите CPT на SLC с шестнадесетбитови цели числа препълват, ако междинните произведения не се изчисляват поетапно. За предпочитане изчислявайте DOY в шестнадесетбитово пространство, след което свързвайте годината и DOY с водещи нули в ASCII файл за принтера, вместо да налагате всичко в едно прекалено голямо цяло число.

Високосна година и структура на CPT

Логиката за високосната година трябва да следва правилата на гражданския календар, използвани във вашата система за качество. Като минимум годините, които се делят на четири, са високосни; ако жизненият цикъл на продукта включва граници между векове, приложете пълните григориански изключения — годините на векове са високосни само ако се делят на 400. Задайте N7:4 на единица, когато годината е високосна. При добавяне на кумулативното отместване за месеца добавяйте един допълнителен ден само ако флагът за високосна година е зададен и месецът е след февруари. Извършвайте това добавяне в отделна CPT инструкция, вместо да скривате вложени условия в нечетим израз.

Копирайте годината, месеца и деня от потвърдените изходни думи на RTC в работните регистри N7 чрез бавна периодична задача или при първо сканиране плюс дневен фронт. Не четете думите на RTC при всяко свободно изпълнявано стъпало, ако последващото ASCII форматиране е ресурсоемко; обновяване веднъж в минута обикновено е достатъчно за кодиране на датата.

Ръководство за реализация на генератор на юлианска дата за SLC-5/04 — фигура 2 Низовете DOY с водещи нули подават данните към принтерите за етикети по-надеждно от необработените цели числа, когато дължината на баркода трябва да остане фиксирана.

ASCII форматиране за принтери за етикети

Повечето индустриални принтери очакват низ с фиксирана ширина. След като DOY бъде изчислен в N7:3, използвайте ASCII инструкции за файлове, за да изградите низ като YYYYDDD с водещи нули в полето за деня. Проверете дължината, преди да задействате ръкостискането за печат. Ако протоколът на принтера изисква разделители или специфични за предприятието префикси, изградете ги в същия буфер за низ, вместо да разчитате принтерът да добави нулите.

  1. Потвърдете картографирането на думите на RTC за конкретния фърмуер на 1747-L542 (или на инсталирания SLC-5/04).
  2. Създайте работните тагове N7 и кумулативната таблица на месеците в целочислен файл.
  3. Напишете CPT логика за високосна година и CPT за DOY, което събира деня + кумулативната стойност + корекцията за високосна година.
  4. Форматирайте YYYYDDD чрез ASC и тествайте с известни календарни дати, включително 28 февруари и 1 март през високосни и невисокосни години.
  5. Защитете се от шестнадесетбитово препълване, ако някоя рутина се опитва да изчислява пълни многовековни JDN произведения; разделете изчисленията на етапи или преместете тази операция извън SLC.

Проверки за високосна година и принтер с водещи нули

Датите за проверка трябва да включват 2024-02-29, 2024-03-01, 2025-02-28 и преходите в края на годината 12-31. Сравнете DOY от PLC с независим календар. Типичните проблеми включват доверяване на грешни адреси в статусния файл, пропускане на корекцията за високосна година през февруари, отпечатване на DOY без водещи нули, което измества полетата на баркода, и препълване на междинни стойности в CPT, когато някой по-късно разшири рутината към пълен JDN. Оставяйте коментари в стълбовидната логика, които посочват действително използваните изходни думи на RTC за съответната машина.

Когато кодът за дата е част от по-голяма опаковъчна клетка, съхранявайте генератора като файл за повторна употреба и стандартизирайте целочислените структури между линиите. Резервните процесори и документацията за тези PLC системи SLC-500 трябва да включват рутината за кодиране на датата, така че смяната на процесор да не възстанови незабелязано по-стара и неправилна календарна реализация.

За автора

Марк Таунсенд | Старши инженер по автоматизация – системи Allen-Bradley

Марк Таунсенд е старши инженер по автоматизация с повече от 18 години опит с платформите Allen-Bradley, включително ControlLogix, CompactLogix и наследените SLC-500. Ежедневната му работа включва логика в RSLogix / Studio 5000 и въвеждане в експлоатация на HMI системи FactoryTalk View при остарели и смесени паркове от оборудване.

Ръководство за внедряване на генератор на юлианска дата за SLC-5/04

Имплементирайте генератор на юлианска дата в SLC-5/04 за ASCII изход към принтери за етикети. Стъпкова стълбова логика с инструкции Compute.

Семейството SLC-5/04, включително процесори като 1747-L542, не предоставя вградена инструкция за юлианския пореден номер на деня (JDN). Опаковането, кодирането на партиди и принтерите за етикети често изискват стойност за деня от годината или компактен низ YYYYDDD, затова логиката трябва да бъде изградена с обикновени математически операции и операции с таблици от данни. Това ръководство представя лесен за поддръжка подход с изрази CPT, кумулативна таблица с дните по месеци, обработка на високосни години и ASCII преобразуване за данни към принтера, като същевременно обръща внимание на ограниченията на шестнадесетбитовата аритметика, които създават проблеми при много от първите реализации.

Ръководство за реализация на генератор на юлианска дата за SLC-5/04 — фигура 1 Процесорите SLC-5/04 изчисляват деня от годината и кодове в юлиански стил в стълбовидна логика чрез CPT, целочислени файлове и внимателно проверени стойности от RTC.

В някои изходни материали се посочват думи от статусния файл в областта S:50–S:52 за годината, месеца и деня, докато друга документация набляга на по-широката област на часовника за реално време около S:37 в зависимост от процесора и контекста на фърмуера. Отнасяйте се внимателно към изходните думи на RTC: проверете точната карта на статусния файл за инсталирания каталог и серия, преди да фиксирате псевдонимите на таговете. След като календарните полета са потвърдени, самият алгоритъм е преносим между проектите със SLC-5/04.

Подредба на таблицата с данни

Добре подредената целочислена структура улеснява разчитането на рутината от следващия техник. Типичният модел използва регистрите N7 по следния начин: N7:0 година, N7:1 месец, N7:2 ден от месеца, N7:3 резултат за деня от годината, N7:4 флаг за високосна година и N7:5 буфер за междинни резултати от CPT. Съхранявайте кумулативните отмествания на дните за месеците във фиксирана целочислена таблица — например N10:1 до N10:12, съдържащи 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 за невисокосна базова година до ноември, като обработката на февруари се извършва чрез флага за високосна година, а не чрез редактиране на таблицата по време на работа. Настройте точната таблица според предпочитаното от вас индексиране, но го опишете непосредствено до стъпалата.

Примерен подход за DOY (концептуален)
Leap = (Y се дели на 4) с необходимите правила за вековете
DOY = Day + Cumulative[Month] + (Leap AND Month>2)
Низ YYYYDDD чрез форматиране в стил ASC / AIF за принтери

За много фабрики денят от годината (DOY) във формат YYYYDDD е достатъчен и избягва пълната астрономическа сложност на JDN. Пълните юлиански поредни номера на дни, обхващащи векове, изискват по-внимателна работа с целите числа; операциите CPT на SLC с шестнадесетбитови цели числа препълват, ако междинните произведения не се изчисляват поетапно. За предпочитане изчислявайте DOY в шестнадесетбитово пространство, след което свързвайте годината и DOY с водещи нули в ASCII файл за принтера, вместо да налагате всичко в едно прекалено голямо цяло число.

Високосна година и структура на CPT

Логиката за високосната година трябва да следва правилата на гражданския календар, използвани във вашата система за качество. Като минимум годините, които се делят на четири, са високосни; ако жизненият цикъл на продукта включва граници между векове, приложете пълните григориански изключения — годините на векове са високосни само ако се делят на 400. Задайте N7:4 на единица, когато годината е високосна. При добавяне на кумулативното отместване за месеца добавяйте един допълнителен ден само ако флагът за високосна година е зададен и месецът е след февруари. Извършвайте това добавяне в отделна CPT инструкция, вместо да скривате вложени условия в нечетим израз.

Копирайте годината, месеца и деня от потвърдените изходни думи на RTC в работните регистри N7 чрез бавна периодична задача или при първо сканиране плюс дневен фронт. Не четете думите на RTC при всяко свободно изпълнявано стъпало, ако последващото ASCII форматиране е ресурсоемко; обновяване веднъж в минута обикновено е достатъчно за кодиране на датата.

Ръководство за реализация на генератор на юлианска дата за SLC-5/04 — фигура 2 Низовете DOY с водещи нули подават данните към принтерите за етикети по-надеждно от необработените цели числа, когато дължината на баркода трябва да остане фиксирана.

ASCII форматиране за принтери за етикети

Повечето индустриални принтери очакват низ с фиксирана ширина. След като DOY бъде изчислен в N7:3, използвайте ASCII инструкции за файлове, за да изградите низ като YYYYDDD с водещи нули в полето за деня. Проверете дължината, преди да задействате ръкостискането за печат. Ако протоколът на принтера изисква разделители или специфични за предприятието префикси, изградете ги в същия буфер за низ, вместо да разчитате принтерът да добави нулите.

  1. Потвърдете картографирането на думите на RTC за конкретния фърмуер на 1747-L542 (или на инсталирания SLC-5/04).
  2. Създайте работните тагове N7 и кумулативната таблица на месеците в целочислен файл.
  3. Напишете CPT логика за високосна година и CPT за DOY, което събира деня + кумулативната стойност + корекцията за високосна година.
  4. Форматирайте YYYYDDD чрез ASC и тествайте с известни календарни дати, включително 28 февруари и 1 март през високосни и невисокосни години.
  5. Защитете се от шестнадесетбитово препълване, ако някоя рутина се опитва да изчислява пълни многовековни JDN произведения; разделете изчисленията на етапи или преместете тази операция извън SLC.

Проверки за високосна година и принтер с водещи нули

Датите за проверка трябва да включват 2024-02-29, 2024-03-01, 2025-02-28 и преходите в края на годината 12-31. Сравнете DOY от PLC с независим календар. Типичните проблеми включват доверяване на грешни адреси в статусния файл, пропускане на корекцията за високосна година през февруари, отпечатване на DOY без водещи нули, което измества полетата на баркода, и препълване на междинни стойности в CPT, когато някой по-късно разшири рутината към пълен JDN. Оставяйте коментари в стълбовидната логика, които посочват действително използваните изходни думи на RTC за съответната машина.

Когато кодът за дата е част от по-голяма опаковъчна клетка, съхранявайте генератора като файл за повторна употреба и стандартизирайте целочислените структури между линиите. Резервните процесори и документацията за тези PLC системи SLC-500 трябва да включват рутината за кодиране на датата, така че смяната на процесор да не възстанови незабелязано по-стара и неправилна календарна реализация.

За автора

Марк Таунсенд | Старши инженер по автоматизация – системи Allen-Bradley

Марк Таунсенд е старши инженер по автоматизация с повече от 18 години опит с платформите Allen-Bradley, включително ControlLogix, CompactLogix и наследените SLC-500. Ежедневната му работа включва логика в RSLogix / Studio 5000 и въвеждане в експлоатация на HMI системи FactoryTalk View при остарели и смесени паркове от оборудване.

Оставяне на коментар

Имайте предвид, че коментарите трябва да бъдат одобрени, преди да се публикуват.