Mã ngày trong năm SLC 5/04 cho máy in nhãn
Xây dựng mã sản xuất YYYYDDD đã được xác thực trong SLC 5/04. Hướng dẫn này phân biệt ngày thứ tự trong năm với Số ngày Julius, đồng thời đề cập đến việc lấy mẫu đồng hồ, năm nhuận, tràn số, định d...
Nhiều nhà máy đóng gói yêu cầu SLC 5/04 tạo “ngày Julian” cho máy in nhãn. Trong hầu hết trường hợp, giá trị cần dùng không phải là Số ngày Julian thiên văn. Đó là ngày thứ tự, còn gọi là ngày trong năm: ngày 1 tháng 1 là 001, còn ngày 31 tháng 12 là 365 hoặc 366. Sự khác biệt này cần được ghi rõ trong đặc tả giao diện trước khi tạo logic thang.
Một mã như 2026243 thường có nghĩa là năm 2026 theo sau là ngày thứ tự 243. Mã này hữu ích cho việc theo dõi lô vì có độ dài cố định và được sắp xếp tự nhiên trong cùng một năm. Mã này không xác định thời điểm trong ngày, múi giờ, ca sản xuất hay một lô duy nhất trên toàn cầu. Khi yêu cầu truy xuất nguồn gốc, các trường đó phải được quản lý riêng.

Xác định mã yêu cầu là năm cộng với ngày thứ tự gồm ba chữ số trước khi chọn kiểu lưu trữ số nguyên hay chuỗi.
Trước tiên, hãy xác minh nguồn đồng hồ của bộ điều khiển
Không sao chép địa chỉ tệp trạng thái từ dự án khác mà không kiểm tra bộ xử lý, dòng sản phẩm, phiên bản chương trình cơ sở và tài liệu tham chiếu bảng dữ liệu chính thức đã cài đặt. Tệp trạng thái SLC chứa thông tin đồng hồ, nhưng phải xác minh các word chính xác và cơ chế cập nhật cho bộ điều khiển mục tiêu. Các bí danh không chính xác có thể tạo ra giá trị có vẻ hợp lý cho đến khi thời điểm chuyển tháng hoặc chuyển năm làm lộ ra sai sót.
Hãy sao chép năm, tháng và ngày vào các thanh ghi làm việc như một mẫu dữ liệu nhất quán. Nếu các giá trị được đọc qua thời điểm nửa đêm, routine có thể kết hợp tháng của ngày hôm qua với ngày của hôm nay. Một cách là lấy mẫu hai lần và chỉ chấp nhận dữ liệu khi cả hai bộ đều trùng khớp. Cách khác là cập nhật ngày sản xuất trong một khoảng thời gian yên tĩnh được xác định sau nửa đêm.
Đồng hồ của bộ điều khiển cũng phải được bảo trì. Công thức đúng không thể khắc phục pin hết, đồng hồ sai hoặc việc điều chỉnh trái phép. Hãy phát cảnh báo khi ngày nằm ngoài phạm vi được phê duyệt và ghi rõ ai được phép cài đặt đồng hồ sau khi bảo trì.
Sử dụng phương pháp bù tháng rõ ràng
Ngày thứ tự bằng ngày trong tháng cộng với tổng số ngày của các tháng trước đó. Lưu các giá trị bù tích lũy không nhuận trong một tệp số nguyên: tháng 1 là 0, tháng 2 là 31, tháng 3 là 59, tháng 4 là 90, tháng 5 là 120, tháng 6 là 151, tháng 7 là 181, tháng 8 là 212, tháng 9 là 243, tháng 10 là 273, tháng 11 là 304 và tháng 12 là 334.
Hãy xác thực tháng trước khi lập chỉ mục vào tệp đó. Giá trị bằng không, âm hoặc lớn hơn 12 không được phép truy cập vào một thanh ghi ngoài dự kiến. Đồng thời xác thực ngày theo tháng đã chọn. Bộ điều khiển phải đặt bit ngày không hợp lệ, ngăn in và hiển thị các trường bị từ chối thay vì tạo ra một mã lô có vẻ hợp lý nhưng sai.
Sau khi lấy giá trị bù, hãy tính ngày thứ tự bằng giá trị bù cộng với ngày trong tháng. Cộng thêm một khi năm nhuận và tháng sau tháng 2. Giữ các giá trị trung gian hiển thị trong các thanh ghi riêng biệt. Một biểu thức ngắn gọn có thể giúp tiết kiệm một bậc thang nhưng khiến việc khắc phục sự cố trực tuyến khó hơn.
Triển khai quy tắc năm nhuận Gregorian
Phép kiểm tra phổ biến “chia hết cho bốn” là chưa đầy đủ đối với các năm tròn thế kỷ. Theo quy tắc Gregorian, một năm là năm nhuận khi chia hết cho bốn, ngoại trừ các năm chia hết cho 100 không phải là năm nhuận, trừ khi cũng chia hết cho 400. Vì vậy, năm 2000 là năm nhuận, năm 2100 sẽ không phải, còn năm 2400 sẽ là năm nhuận.
NIST giải thích rằng lịch Gregorian loại bỏ ba năm nhuận trong mỗi chu kỳ 400 năm. Quy tắc này đáng được triển khai vì mã có thể tái sử dụng thường tồn tại lâu hơn dự kiến. Xem giải thích của NIST về năm nhuận.
Hãy xây dựng phép kiểm tra bằng các phép so sánh số dư rõ ràng được bộ lệnh đã cài đặt hỗ trợ. Chú thích từng nhánh. Tránh một biểu thức mà các kỹ thuật viên tương lai không thể xác minh trực tuyến. Nếu đặc tả của nhà máy cố ý sử dụng quy tắc đơn giản hơn, hãy ghi rõ phạm vi ngày hợp lệ.
Giữ phép tính số nguyên trong phạm vi cho phép
Ngày thứ tự nằm trong phạm vi của số nguyên có dấu 16 bit. Một giá trị số kết hợp như YYYYDDD thì không. Ví dụ, 2026243 vượt quá 32.767. Không cố ép toàn bộ mã nhãn vào một thanh ghi số nguyên SLC thông thường.
Giữ năm và ngày thứ tự dưới dạng các số nguyên riêng biệt, sau đó tạo chuỗi. Cách này tránh tràn số và giữ được các số 0 ở đầu. Nếu máy in chấp nhận các trường riêng biệt, hãy truyền chúng riêng. Nếu thực sự cần Số ngày Julian thiên văn, hãy sử dụng một thuật toán và biểu diễn dữ liệu được xem xét riêng; không đổi tên routine ngày thứ tự này.
Định dạng chuỗi máy in có độ rộng cố định
Chuỗi sản xuất luôn phải gồm bốn chữ số của năm và ba chữ số của ngày thứ tự. Ngày thứ 7 phải trở thành 007. Hãy tạo kết quả trong bộ đệm ASCII hoặc chuỗi bằng các lệnh được bộ xử lý và dự án hỗ trợ. Xác nhận độ dài đích trước khi kích hoạt lệnh in và ghi đè toàn bộ bộ đệm để các ký tự từ thông báo cũ không còn sót lại.

Định dạng có độ rộng cố định giữ các số 0 ở đầu và duy trì sự căn chỉnh của các trường mã vạch.
Hãy sử dụng cơ chế bắt tay yêu cầu và xác nhận với máy in. Đóng băng chuỗi ngày hoàn chỉnh khi phát hành yêu cầu. Không để routine ngày chạy tự do thay đổi bộ đệm trong khi một thông báo đang hoạt động. Ghi nhận thành công, hết thời gian chờ và máy in từ chối thành các trạng thái riêng biệt.
Xác thực các điểm biên, không chỉ các ngày thông thường
Hãy kiểm tra ngày 1 tháng 1, ngày 28 tháng 2, ngày 29 tháng 2 trong năm nhuận, ngày 1 tháng 3 trong năm nhuận và năm thường, ngày 31 tháng 12 và thời điểm chuyển sang năm mới. Bao gồm các ngày 31-12-2099, 28-02-2100 và 01-03-2100 nếu mã có thể tiếp tục được sử dụng hoặc sao chép trong tương lai. So sánh kết quả với một lịch độc lập.
Chủ động đưa vào dữ liệu sai: tháng 0, tháng 13, ngày 0, ngày 31 tháng 4 và ngày 29 tháng 2 trong năm thường. Xác nhận routine từ chối in. Tắt rồi bật nguồn bộ xử lý gần thời điểm chuyển ngày và xác minh đồng hồ, các thanh ghi làm việc, hoạt động quét đầu tiên và cơ chế bắt tay với máy in.
Tích hợp mã với quyền sở hữu lô
Routine ngày phải cung cấp một giá trị đã được xác thực, nhưng trình tự đóng gói quyết định thời điểm giá trị đó trở thành một phần của lô. Một lô bắt đầu trước nửa đêm có thể cần giữ ngày sản xuất ban đầu sau khi lịch chuyển sang ngày mới. Hãy chụp lại giá trị đã phê duyệt khi bắt đầu lô và giữ nguyên cho đến khi lô kết thúc.
Lưu routine đã được lập tài liệu cùng với hồ sơ chuyển đổi hệ thống PLC và PAC của nhà máy. Bao gồm chính xác các word nguồn đồng hồ được sử dụng trên máy đó. Giữ mã ngày đang hoạt động và trạng thái xác thực hiển thị qua lớp HMI và điện toán công nghiệp.
Góc nhìn kỹ thuật
Cải tiến chính nằm ở sự rõ ràng về khái niệm. Hãy gọi giá trị này là ngày thứ tự hoặc mã ngày trong năm, xác thực đồng hồ và các trường lịch, sử dụng đầy đủ quy tắc Gregorian, giữ phép tính trong phạm vi cho phép và đóng băng chuỗi có độ rộng cố định trong khi truyền. Những quyết định này ngăn ngừa các lỗi truy xuất nguồn gốc âm thầm, vốn có thể chỉ xuất hiện vào ngày nhuận, thời điểm chuyển năm hoặc khi thay thế bộ điều khiển.