کدهای روزِ سال SLC 5/04 برای چاپگرهای برچسب
یک کد تولید YYYYDDD معتبر را در SLC 5/04 بسازید. این راهنما روز ترتیبی را از عدد روز ژولیوسی جدا میکند و نمونهبرداری از ساعت، سالهای کبیسه، سرریز، قالببندی و دستدهی با چاپگر را پوشش میدهد.
بسیاری از کارخانههای بستهبندی از یک SLC 5/04 میخواهند برای چاپگر برچسب «تاریخ ژولیوسی» ایجاد کند. در بیشتر موارد، مقدار موردنیاز «شماره روز ژولیوسی» نجومی نیست، بلکه یک روز ترتیبی است که به آن روز سال نیز گفته میشود: اول ژانویه 001 است و 31 دسامبر 365 یا 366. این تفاوت باید پیش از ایجاد منطق نردبانی، در مشخصات رابط ثبت شود.
کدی مانند 2026243 معمولاً به معنای سال 2026 بهعلاوه روز ترتیبی 243 است. این کد برای ردیابی محموله مفید است، زیرا طول ثابتی دارد و در طول یک سال بهصورت طبیعی مرتب میشود. اما زمان روز، منطقه زمانی، شیفت تولید یا یک محموله یکتای جهانی را مشخص نمیکند. هر زمان که ردیابی کامل لازم باشد، این فیلدها باید جداگانه مدیریت شوند.

پیش از انتخاب ذخیرهسازی عدد صحیح یا رشتهای، کد درخواستی را بهصورت سال بهعلاوه روز ترتیبی سهرقمی تعریف کنید.
ابتدا منبع ساعت کنترلر را بررسی کنید
آدرسهای فایل وضعیت را بدون بررسی پردازنده نصبشده، سری، میانافزار و مرجع رسمی جدول داده از پروژهای دیگر کپی نکنید. فایل وضعیت SLC اطلاعات ساعت را در خود دارد، اما کلمات دقیق و رفتار بهروزرسانی باید برای کنترلر هدف تأیید شوند. نامهای مستعار نادرست ممکن است مقادیر معقولی تولید کنند تا زمانی که تغییر ماه یا سال، اشتباه را آشکار کند.
سال، ماه و روز را بهعنوان یک نمونه منسجم در ثباتهای کاری کپی کنید. اگر مقادیر در نیمهشب خوانده شوند، ممکن است روال، ماه دیروز را با روز امروز ترکیب کند. یک روش این است که دو بار نمونهبرداری کنید و فقط زمانی داده را بپذیرید که هر دو مجموعه یکسان باشند. روش دیگر، بهروزرسانی تاریخ تولید در یک بازه آرام و تعریفشده پس از نیمهشب است.
ساعت کنترلر نیز باید نگهداری شود. یک فرمول صحیح نمیتواند باتری تمامشده، ساعت نادرست یا تنظیم غیرمجاز را اصلاح کند. اگر تاریخ خارج از محدوده تأییدشده بود، هشدار دهید و مشخص کنید پس از تعمیر چه کسی مجاز به تنظیم ساعت است.
از روش روشنِ آفست ماه استفاده کنید
روز ترتیبی برابر است با روز ماه بهعلاوه مجموع روزهای ماههای پیشین. آفستهای تجمعیِ غیرکبیسه را در یک فایل عدد صحیح ذخیره کنید: ژانویه 0، فوریه 31، مارس 59، آوریل 90، مه 120، ژوئن 151، ژوئیه 181، اوت 212، سپتامبر 243، اکتبر 273، نوامبر 304 و دسامبر 334.
پیش از اندیسگذاری آن فایل، ماه را اعتبارسنجی کنید. مقدار صفر، منفی یا بزرگتر از 12 نباید به ثباتی ناخواسته اشاره کند. روز را نیز بر اساس ماه انتخابشده اعتبارسنجی کنید. کنترلر باید بیت نامعتبر بودن تاریخ را فعال کند، چاپ را متوقف سازد و فیلدهای ردشده را نمایش دهد، نه اینکه کدی ظاهراً معقول اما نادرست برای محموله ایجاد کند.
پس از دریافت آفست، روز ترتیبی را بهصورت آفست بهعلاوه روز ماه محاسبه کنید. اگر سال کبیسه است و ماه بعد از فوریه قرار دارد، یک واحد اضافه کنید. مقادیر میانی را در ثباتهای جداگانه قابل مشاهده نگه دارید. یک عبارت فشرده ممکن است یک ردیف را حذف کند، اما عیبیابی آنلاین را دشوارتر میکند.
قانون سال کبیسه گریگوری را پیادهسازی کنید
آزمون رایج «تقسیمپذیری بر چهار» برای سالهای قرنی کامل نیست. طبق قانون گریگوری، سالی کبیسه است که بر چهار بخشپذیر باشد؛ با این استثنا که سالهای بخشپذیر بر 100 کبیسه نیستند، مگر اینکه بر 400 نیز بخشپذیر باشند. بنابراین سال 2000 کبیسه بود، سال 2100 کبیسه نخواهد بود و سال 2400 کبیسه خواهد بود.
مؤسسه ملی استاندارد و فناوری توضیح میدهد که تقویم گریگوری در هر چرخه 400ساله، سه سال کبیسه را حذف میکند. پیادهسازی این قانون ارزشمند است، زیرا کدهای قابل استفاده مجدد اغلب بیشتر از انتظار دوام میآورند. به توضیح سال کبیسه NIST مراجعه کنید.
آزمون را با مقایسههای صریح باقیمانده، مطابق دستورهای پشتیبانیشده توسط مجموعه دستورهای نصبشده، بسازید. هر شاخه را توضیحگذاری کنید. از عبارتی که تکنسینهای آینده نتوانند آن را بهصورت آنلاین بررسی کنند، پرهیز کنید. اگر مشخصات کارخانه عمداً از قاعدهای سادهتر استفاده میکند، محدوده تاریخ معتبر آن را مستند کنید.
محاسبات عدد صحیح را در محدوده نگه دارید
روز ترتیبی در یک عدد صحیح علامتدار 16بیتی جا میشود، اما یک مقدار عددی ترکیبی مانند YYYYDDD اینطور نیست. برای مثال، 2026243 از 32,767 بیشتر است. کد کامل برچسب را در یک ثبات عدد صحیح معمولی SLC قرار ندهید.
سال و روز ترتیبی را بهصورت دو عدد صحیح جداگانه نگه دارید و سپس یک رشته بسازید. این کار از سرریز جلوگیری میکند و صفرهای ابتدایی را حفظ میکند. اگر چاپگر فیلدهای جداگانه را میپذیرد، آنها را جداگانه ارسال کنید. اگر واقعاً به شماره روز ژولیوسی نجومی نیاز است، از الگوریتم و نمایش دادهای استفاده کنید که جداگانه بازبینی شده باشد؛ نام این روال روز ترتیبی را تغییر ندهید.
رشته چاپگر با طول ثابت ایجاد کنید
رشته تولید باید همیشه شامل چهار رقم سال و سه رقم روز ترتیبی باشد. روز 7 باید به 007 تبدیل شود. نتیجه را با استفاده از دستورهای پشتیبانیشده توسط پردازنده و پروژه، در یک بافر ASCII یا رشتهای بسازید. پیش از تحریک چاپ، طول مقصد را تأیید کنید و کل بافر را بازنویسی کنید تا نویسههای پیام قبلی باقی نمانند.

قالببندی با طول ثابت، صفرهای ابتدایی را حفظ میکند و فیلدهای بارکد را همتراز نگه میدارد.
با چاپگر از دستدهی درخواست و تأیید استفاده کنید. هنگام صدور درخواست، رشته تاریخ تکمیلشده را ثابت نگه دارید. اجازه ندهید روال تاریخِ در حال اجرای آزاد، هنگام فعال بودن پیام بافر را تغییر دهد. موفقیت، پایان مهلت و رد چاپگر را بهعنوان وضعیتهای جداگانه ثبت کنید.
مرزها را اعتبارسنجی کنید، نه فقط تاریخهای عادی را
اول ژانویه، 28 فوریه، 29 فوریه در سال کبیسه، اول مارس در سالهای کبیسه و عادی، 31 دسامبر و انتقال به سال جدید را آزمایش کنید. اگر ممکن است کد در سرویس باقی بماند یا در آینده کپی شود، 2099-12-31، 2100-02-28 و 2100-03-01 را نیز آزمایش کنید. نتایج را با یک تقویم مستقل مقایسه کنید.
دادههای نادرست را عمداً آزمایش کنید: ماه 0، ماه 13، روز 0، 31 آوریل و 29 فوریه در سال عادی. تأیید کنید که روال از چاپ جلوگیری میکند. پردازنده را نزدیک انتقال تاریخ خاموش و روشن کنید و ساعت، ثباتهای کاری، رفتار اسکن نخست و دستدهی چاپگر را بررسی کنید.
کد را با مالکیت محموله یکپارچه کنید
روال تاریخ باید یک مقدار معتبر ارائه دهد، اما توالی بستهبندی تعیین میکند که این مقدار چه زمانی بخشی از یک محموله شود. ممکن است محمولهای که پیش از نیمهشب آغاز شده است، پس از تغییر تقویم همچنان به تاریخ تولید اولیه خود نیاز داشته باشد. مقدار تأییدشده را هنگام آغاز محموله ثبت کنید و تا بستهشدن محموله نگه دارید.
روال مستندشده را همراه با سوابق مهاجرت کارخانه برای سیستمهای PLC و PAC ذخیره کنید. کلمات دقیق منبع ساعت مورد استفاده در آن ماشین را درج کنید. کد تاریخ فعال و وضعیت اعتبارسنجی را از طریق لایه HMI و رایانش صنعتی قابل مشاهده نگه دارید.
دیدگاه مهندسی
بهبود اصلی، شفافیت مفهومی است. این مقدار را روز ترتیبی یا کد روز سال بنامید، فیلدهای ساعت و تقویم را اعتبارسنجی کنید، قانون کامل گریگوری را به کار ببرید، محاسبات را در محدوده نگه دارید و رشتهای با طول ثابت را هنگام انتقال ثابت کنید. این تصمیمها از خطاهای پنهان ردیابی جلوگیری میکنند؛ خطاهایی که ممکن است تنها در یک روز کبیسه، مرز سال یا تعویض کنترلر ظاهر شوند.