راهنمای پیادهسازی مولد تاریخ ژولینی SLC-5/04
یک تولیدکنندهٔ تاریخ ژولیوسی را در SLC-5/04 برای خروجی ASCII به چاپگرهای برچسب پیادهسازی کنید. منطق نردبانی گامبهگام با دستورهای Compute.
خانواده SLC-5/04، شامل پردازندههایی مانند 1747-L542، دستورالعمل داخلی شماره روز ژولیوسی (JDN) را ارائه نمیدهد. بستهبندی، کدگذاری دستهای و چاپگرهای لیبل اغلب به مقدار روزِ سال یا یک رشته فشرده YYYYDDD نیاز دارند؛ بنابراین منطق باید با استفاده از عملیات ریاضی معمول و عملیات جدول داده ساخته شود. این راهنما رویکردی قابل نگهداری با استفاده از عبارتهای CPT، جدول تجمعی روزهای ماه، مدیریت سال کبیسه و تبدیل ASCII برای دادههای ارسالی به چاپگر ارائه میکند و همزمان به محدودیتهای ریاضی ۱۶ بیتی اشاره میکند که بسیاری از پیادهسازیهای اولیه را دچار مشکل میسازند.
پردازندههای 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
منطق سال کبیسه باید از قواعد تقویم مدنی مورد استفاده در سیستم کیفیت شما پیروی کند. حداقل، سالهایی که بر چهار بخشپذیرند، کبیسه هستند؛ اگر چرخه عمر محصول شما مرزهای قرنی را دربرمیگیرد، استثناهای کامل گاهشماری گریگوری را اعمال کنید؛ سالهای قرنی فقط در صورتی کبیسهاند که بر ۴۰۰ بخشپذیر باشند. وقتی سال کبیسه است، N7:4 را روی یک تنظیم کنید. هنگام افزودن افست تجمعی ماه، فقط اگر پرچم کبیسه فعال باشد و ماه بعد از فوریه باشد، یک روز اضافی اضافه کنید. این جمع را در یک CPT اختصاصی انجام دهید و شرایط تودرتو را داخل عبارتی ناخوانا پنهان نکنید.
سال، ماه و روز را از کلمات منبع RTC تأییدشده به ثباتهای کاری N7 در یک وظیفه دورهای کند یا هنگام اولین اسکن بههمراه یک لبه روزانه کپی کنید. اگر قالببندی ASC در مراحل پاییندستی پرهزینه است، کلمات RTC را در هر رَنگ آزادخوان اجرا نکنید؛ بهروزرسانی یکبار در دقیقه معمولاً برای کدگذاری تاریخ کافی است.
رشتههای DOY با صفرهای ابتدایی، در زمانی که طول بارکد باید ثابت بماند، با اطمینان بیشتری نسبت به اعداد صحیح خام به چاپگرهای لیبل ارسال میشوند.
قالببندی ASCII برای چاپگرهای لیبل
بیشتر چاپگرهای صنعتی یک رشته با طول ثابت را انتظار دارند. پس از محاسبه DOY در N7:3، از دستورالعملهای فایل ASCII برای ساخت رشتهای مانند YYYYDDD با صفرهای ابتدایی در فیلد روز استفاده کنید. پیش از فعالکردن دستدهی چاپ، طول رشته را اعتبارسنجی کنید. اگر پروتکل چاپگر به جداکننده یا پیشوندهای اختصاصی کارخانه نیاز دارد، آنها را در همان بافر رشته بسازید و به پر کردن خودکار چاپگر متکی نباشید.
- نقشه کلمات RTC را برای سفتافزار خاص 1747-L542 (یا SLC-5/04 نصبشده) تأیید کنید.
- تگهای کاری N7 و جدول تجمعی ماه را در یک فایل اعداد صحیح ایجاد کنید.
- منطق CPT سال کبیسه و یک CPT برای DOY بنویسید که روز + مقدار تجمعی + اصلاح کبیسه را جمع کند.
- YYYYDDD را با استفاده از ASC قالببندی کنید و آن را با تاریخهای تقویمی شناختهشده، از جمله 28 فوریه و 1 مارس در سالهای کبیسه و غیرکبیسه، آزمایش کنید.
- اگر روتینی برای محاسبه حاصلضربهای کامل JDN در چندین قرن تلاش میکند، در برابر سرریز ۱۶ بیتی محافظت کنید؛ محاسبات را مرحلهبندی کنید یا آن را خارج از SLC انجام دهید.
بررسیهای سال کبیسه و صفرگذاری چاپگر
تاریخهای تأیید باید شامل انتقالهای 2024-02-29، 2024-03-01، 2025-02-28 و پایان سال 12-31 باشند. DOY PLC را با یک تقویم مستقل مقایسه کنید. خطاهای رایج شامل اعتماد به آدرسهای نادرست فایل وضعیت، فراموشکردن اصلاح کبیسه فوریه، چاپ مقادیر DOY بدون صفرهای ابتدایی که فیلدهای بارکد را جابهجا میکند، و سرریز مقادیر میانی CPT هنگام گسترش بعدی روتین به سمت JDN کامل است. در نردبان توضیحاتی ثبت کنید که به کلمات منبع RTC واقعاً استفادهشده در آن دستگاه ارجاع دهند.
وقتی کد تاریخ بخشی از یک سلول بستهبندی گستردهتر است، مولد را بهعنوان یک فایل قابل استفاده مجدد ذخیره کنید و چیدمان اعداد صحیح را در خطوط مختلف استاندارد کنید. پردازندههای یدکی و مستندات مربوط به این سیستمهای PLC خانواده SLC-500 باید روتین کد تاریخ را نیز شامل شوند تا تعویض پردازنده بهطور نامحسوس به پیادهسازی تقویمی قدیمی و نادرست بازنگردد.
درباره نویسنده
مارک تاونزند | مهندس ارشد اتوماسیون – سیستمهای Allen-Bradley
مارک تاونزند مهندس ارشد اتوماسیون است و بیش از ۱۸ سال با پلتفرمهای Allen-Bradley، از جمله ControlLogix، CompactLogix و SLC-500 قدیمی، کار کرده است. فعالیت روزمره او شامل توسعه منطق RSLogix / Studio 5000 و راهاندازی HMI در FactoryTalk View برای ناوگانهای قدیمی و ترکیبی است.