Kembali ke blog

Kode Hari-dalam-Tahun SLC 5/04 untuk Printer Label

Membangun kode produksi YYYYDDD yang tervalidasi di SLC 5/04. Panduan ini membedakan hari ordinal dari Julian Day Number serta membahas pengambilan waktu, tahun kabisat, luapan, pemformatan, dan ja...

Banyak pabrik pengemasan meminta SLC 5/04 membuat “tanggal Julian” untuk printer label. Dalam kebanyakan kasus, nilai yang dibutuhkan bukan Julian Day Number astronomis, melainkan hari ordinal, yang juga disebut hari dalam tahun: 1 Januari adalah 001, sedangkan 31 Desember adalah 365 atau 366. Perbedaan ini harus dicantumkan dalam spesifikasi antarmuka sebelum logika ladder dibuat.

Kode seperti 2026243 biasanya berarti tahun 2026 diikuti hari ordinal 243. Kode ini berguna untuk pelacakan lot karena memiliki panjang tetap dan diurutkan secara alami dalam satu tahun. Kode ini tidak mengidentifikasi waktu, zona waktu, giliran produksi, atau batch unik secara global. Jika ketertelusuran memerlukannya, bidang-bidang tersebut harus dikelola secara terpisah.

Rutinitas ladder SLC 5/04 yang menghitung kode hari ordinal dari bidang kalender

Definisikan kode yang diminta sebagai tahun ditambah hari ordinal tiga digit sebelum memilih penyimpanan bilangan bulat atau string.

Verifikasi Sumber Jam Kontroler Terlebih Dahulu

Jangan menyalin alamat file status dari proyek lain tanpa memeriksa prosesor, seri, firmware, dan referensi tabel data resmi yang terpasang. File status SLC berisi informasi jam, tetapi word yang tepat dan perilaku pembaruannya harus diverifikasi untuk kontroler target. Alias yang salah dapat menghasilkan nilai yang tampak masuk akal hingga pergantian bulan atau tahun mengungkapkan kesalahan tersebut.

Salin tahun, bulan, dan hari ke register kerja sebagai satu sampel yang koheren. Jika nilai dibaca saat melewati tengah malam, rutinitas dapat menggabungkan bulan kemarin dengan hari ini. Salah satu pendekatan adalah mengambil sampel dua kali dan menerima data hanya jika kedua set cocok. Pendekatan lainnya adalah memperbarui tanggal produksi selama interval tenang yang ditentukan setelah tengah malam.

Jam kontroler juga harus dipelihara. Rumus yang benar tidak dapat memperbaiki baterai yang habis, jam yang salah, atau penyesuaian tanpa izin. Aktifkan alarm jika tanggal berada di luar rentang yang disetujui, dan dokumentasikan pihak yang berwenang mengatur jam setelah pemeliharaan.

Gunakan Metode Offset Bulan yang Jelas

Hari ordinal sama dengan hari dalam bulan ditambah jumlah hari pada bulan-bulan sebelumnya. Simpan offset kumulatif non-kabisat dalam file bilangan bulat: Januari 0, Februari 31, Maret 59, April 90, Mei 120, Juni 151, Juli 181, Agustus 212, September 243, Oktober 273, November 304, dan Desember 334.

Validasi bulan sebelum mengindeks file tersebut. Nilai nol, negatif, atau lebih besar dari 12 tidak boleh mengalamatkan register yang tidak dimaksudkan. Validasi juga hari terhadap bulan yang dipilih. Kontroler harus menetapkan bit tanggal-tidak-valid, menghambat pencetakan, dan menampilkan bidang yang ditolak, alih-alih membuat kode lot yang tampak benar tetapi keliru.

Setelah mengambil offset, hitung hari ordinal sebagai offset ditambah hari dalam bulan. Tambahkan satu jika tahun tersebut adalah tahun kabisat dan bulannya setelah Februari. Pastikan nilai antara terlihat dalam register terpisah. Ekspresi ringkas mungkin menghemat satu rung, tetapi membuat pemecahan masalah secara online lebih sulit.

Terapkan Aturan Tahun Kabisat Gregorian

Uji umum “habis dibagi empat” tidak lengkap untuk tahun abad. Berdasarkan aturan Gregorian, suatu tahun adalah tahun kabisat jika habis dibagi empat, kecuali tahun yang habis dibagi 100 bukan tahun kabisat, kecuali juga habis dibagi 400. Oleh karena itu, tahun 2000 adalah tahun kabisat, tahun 2100 bukan, dan tahun 2400 akan menjadi tahun kabisat.

NIST menjelaskan bahwa kalender Gregorian menghapus tiga tahun kabisat dalam setiap siklus 400 tahun. Aturan tersebut layak diterapkan karena kode yang dapat digunakan kembali sering bertahan lebih lama dari perkiraan. Lihat penjelasan NIST tentang tahun kabisat.

Bangun pengujian menggunakan perbandingan sisa pembagian eksplisit yang didukung oleh set instruksi terpasang. Beri komentar pada setiap cabang. Hindari ekspresi yang tidak dapat diverifikasi secara online oleh teknisi di masa mendatang. Jika spesifikasi pabrik memang menggunakan aturan yang lebih sederhana, dokumentasikan rentang tanggal yang valid.

Jaga Aritmetika Bilangan Bulat Tetap Dalam Rentang

Hari ordinal dapat disimpan dalam bilangan bulat bertanda 16-bit. Nilai numerik gabungan seperti YYYYDDD tidak dapat disimpan demikian. Sebagai contoh, 2026243 melebihi 32.767. Jangan memaksakan seluruh kode label ke dalam register bilangan bulat SLC biasa.

Simpan tahun dan hari ordinal sebagai bilangan bulat terpisah, lalu buat string. Cara ini mencegah luapan dan mempertahankan angka nol di depan. Jika printer menerima bidang terpisah, kirimkan secara terpisah. Jika Julian Day Number astronomis memang diperlukan, gunakan algoritme dan representasi data yang ditinjau secara terpisah; jangan mengganti nama rutinitas hari ordinal ini.

Format String Printer dengan Lebar Tetap

String produksi harus selalu berisi empat digit tahun dan tiga digit hari ordinal. Hari ke-7 harus menjadi 007. Buat hasilnya dalam buffer ASCII atau string menggunakan instruksi yang didukung oleh prosesor dan proyek. Pastikan panjang tujuan sebelum pemicu pencetakan, dan timpa seluruh buffer agar karakter dari pesan lama tidak tersisa.

Kode label YYYYDDD dengan lebar tetap yang dibuat oleh SLC 5/04

Pemformatan dengan lebar tetap mempertahankan angka nol di depan dan menjaga bidang barcode tetap sejajar.

Gunakan jabat tangan permintaan-dan-pengakuan dengan printer. Bekukan string tanggal yang telah selesai saat permintaan diterbitkan. Jangan biarkan rutinitas tanggal yang terus berjalan mengubah buffer saat pesan sedang aktif. Catat keberhasilan, waktu habis, dan penolakan printer sebagai status yang terpisah.

Validasi Batas, Bukan Hanya Tanggal Normal

Uji 1 Januari, 28 Februari, 29 Februari pada tahun kabisat, 1 Maret pada tahun kabisat dan tahun biasa, 31 Desember, serta pergantian tahun baru. Sertakan 2099-12-31, 2100-02-28, dan 2100-03-01 jika kode mungkin tetap digunakan atau disalin untuk penggunaan di masa mendatang. Bandingkan hasilnya dengan kalender independen.

Sengaja uji data yang salah: bulan 0, bulan 13, hari 0, 31 April, dan 29 Februari pada tahun biasa. Pastikan rutinitas menolak pencetakan. Matikan dan hidupkan kembali prosesor di sekitar pergantian tanggal, lalu verifikasi jam, register kerja, perilaku pemindaian pertama, dan jabat tangan printer.

Integrasikan Kode dengan Kepemilikan Batch

Rutinitas tanggal harus menyediakan nilai yang tervalidasi, tetapi urutan pengemasan menentukan kapan nilai tersebut menjadi bagian dari batch. Batch yang dimulai sebelum tengah malam mungkin perlu mempertahankan tanggal produksi aslinya setelah kalender berganti. Ambil nilai yang disetujui saat batch dimulai dan pertahankan hingga batch ditutup.

Simpan rutinitas yang telah didokumentasikan bersama catatan migrasi sistem PLC dan PAC milik pabrik. Sertakan word sumber jam yang digunakan secara tepat pada mesin tersebut. Pastikan kode tanggal aktif dan status validasi terlihat melalui lapisan HMI dan komputasi industri.

Perspektif Rekayasa

Perbaikan utamanya adalah kejelasan konseptual. Sebut nilai tersebut sebagai hari ordinal atau kode hari dalam tahun, validasi bidang jam dan kalender, gunakan aturan Gregorian lengkap, jaga aritmetika tetap dalam rentang, dan bekukan string dengan lebar tetap selama transmisi. Keputusan-keputusan ini mencegah kesalahan ketertelusuran tersembunyi yang mungkin baru muncul pada hari kabisat, pergantian tahun, atau penggantian kontroler.

Tinggalkan komentar

Harap diperhatikan, komentar perlu disetujui sebelum dipublikasikan.