Panduan Pelaksanaan Penjana Tarikh Julian SLC-5/04
Laksanakan penjana Tarikh Julian dalam SLC-5/04 untuk output ASCII kepada pencetak label. Logik tangga langkah demi langkah dengan arahan Compute.
Keluarga SLC-5/04, termasuk pemproses seperti 1747-L542, tidak menyediakan arahan nombor hari Julian (JDN) terbina dalam. Pembungkusan, pengekodan kelompok dan pencetak label kerap memerlukan nilai hari dalam tahun atau rentetan YYYYDDD yang padat, jadi logik tersebut perlu dibina menggunakan operasi matematik biasa dan operasi jadual data. Panduan ini membentangkan pendekatan yang mudah diselenggara menggunakan ungkapan CPT, jadual hari kumulatif setiap bulan, pengendalian tahun lompat dan penukaran ASCII untuk muatan pencetak, sambil menekankan had matematik enam belas bit yang sering memerangkap pelaksanaan pertama.
Pemproses SLC-5/04 mengira hari dalam tahun dan kod gaya Julian dalam ladder menggunakan CPT, fail integer dan nilai RTC yang diperoleh dengan teliti.
Bahan sumber kadangkala merujuk kepada perkataan fail status dalam kawasan S:50–S:52 untuk tahun, bulan dan hari, manakala dokumentasi lain menekankan kawasan jam masa nyata yang lebih luas di sekitar S:37, bergantung pada pemproses dan konteks perisian tegar. Kendalikan perkataan sumber RTC dengan teliti: sahkan peta fail status yang tepat untuk katalog dan siri yang dipasang sebelum menetapkan alias tag. Setelah medan kalendar dipercayai, algoritma itu sendiri boleh digunakan merentas projek SLC-5/04.
Susun atur jadual data
Susun atur integer yang kemas memastikan rutin mudah dibaca oleh juruteknik seterusnya. Corak biasa menggunakan daftar N7 seperti berikut: N7:0 tahun, N7:1 bulan, N7:2 hari dalam bulan, N7:3 hasil hari dalam tahun, N7:4 bendera tahun lompat dan N7:5 sebagai tempat sementara untuk hasil CPT perantaraan. Simpan ofset hari kumulatif bagi bulan dalam jadual integer tetap—contohnya N10:1 hingga N10:12 mengandungi 0, 31, 59, 90, 120, 151, 151, 181, 212, 243, 273, 304 untuk garis dasar bukan tahun lompat hingga November, dengan pengendalian Februari dilaksanakan melalui bendera tahun lompat dan bukannya dengan mengedit jadual semasa operasi. Laraskan jadual tepat mengikut pengindeksan berasaskan sifar yang anda pilih, tetapi dokumentasikan perkara itu bersebelahan dengan rung.
Contoh pendekatan DOY (konseptual)
Lompat = (Y boleh dibahagi dengan 4) dengan peraturan abad mengikut keperluan
DOY = Hari + [Kumulatif][Bulan] + (Lompat DAN Bulan>2)
Rentetan YYYYDDD melalui pemformatan gaya ASC / AIF untuk pencetak
Bagi kebanyakan kilang, hari dalam tahun (DOY) dalam bentuk YYYYDDD sudah memadai dan mengelakkan kerumitan JDN astronomi penuh. Nombor hari Julian penuh yang merangkumi berabad-abad memerlukan pengendalian integer yang lebih luas; operasi CPT SLC pada integer 16 bit akan mengalami limpahan jika hasil perantaraan tidak ditempatkan secara berperingkat. Utamakan pengiraan DOY dalam ruang 16 bit, kemudian gabungkan tahun dan DOY yang dipadatkan dengan sifar pendahulu dalam fail ASCII untuk pencetak, bukannya memaksa satu integer yang terlalu besar.
Struktur tahun lompat dan CPT
Logik tahun lompat mesti mematuhi peraturan kalendar sivil yang digunakan oleh sistem kualiti anda. Sekurang-kurangnya, tahun yang boleh dibahagi dengan empat ialah tahun lompat; jika hayat produk anda merangkumi sempadan abad, gunakan pengecualian Gregorian penuh (tahun abad hanya tahun lompat jika boleh dibahagi dengan 400). Tetapkan N7:4 kepada satu apabila tahun itu ialah tahun lompat. Semasa menambah ofset bulan kumulatif, tambahkan satu hari tambahan hanya jika bendera tahun lompat ditetapkan dan bulan lebih besar daripada Februari. Lakukan penambahan itu dalam CPT khusus dan bukannya menyembunyikan syarat bersarang dalam ungkapan yang sukar dibaca.
Salin tahun, bulan dan hari daripada perkataan sumber RTC yang telah disahkan ke dalam daftar kerja N7 pada tugas berkala perlahan atau semasa imbasan pertama ditambah pencetus harian. Jangan baca perkataan RTC pada setiap rung yang berjalan bebas jika pemformatan ASC seterusnya memerlukan banyak sumber; penyegaran sekali seminit biasanya mencukupi untuk pengekodan tarikh.
Rentetan DOY yang dipadatkan dengan sifar pendahulu menyalurkan data kepada pencetak label dengan lebih andal berbanding integer mentah apabila panjang kod bar mesti kekal.
Pemformatan ASCII untuk pencetak label
Kebanyakan pencetak industri menjangkakan rentetan lebar tetap. Selepas DOY dikira dalam N7:3, gunakan arahan fail ASCII untuk membina rentetan seperti YYYYDDD dengan sifar pendahulu pada medan hari. Sahkan panjangnya sebelum mencetuskan isyarat jabat tangan pencetakan. Jika protokol pencetak memerlukan pemisah atau awalan khusus kilang, bina semuanya dalam penimbal rentetan yang sama dan bukannya bergantung pada pencetak untuk menambah pad.
- Sahkan pemetaan perkataan RTC untuk perisian tegar 1747-L542 khusus (atau SLC-5/04 yang dipasang).
- Cipta tag kerja N7 dan jadual bulan kumulatif dalam fail integer.
- Tulis logik CPT tahun lompat dan CPT DOY yang menambah hari + kumulatif + pelarasan tahun lompat.
- Formatkan YYYYDDD melalui ASC dan uji dengan tarikh kalendar yang diketahui, termasuk 28 Februari dan 1 Mac pada tahun lompat dan bukan tahun lompat.
- Lindungi daripada limpahan 16 bit jika mana-mana rutin cuba mengira hasil JDN penuh merentas beberapa abad; lakukan pengiraan secara berperingkat atau pindahkan pengiraan itu keluar daripada SLC.
Pemeriksaan tahun lompat dan sifar pendahulu pencetak
Tarikh pengesahan hendaklah merangkumi 2024-02-29, 2024-03-01, 2025-02-28 dan peralihan hujung tahun 12-31. Bandingkan DOY PLC dengan kalendar bebas. Perangkap yang biasa berlaku termasuk mempercayai alamat fail status yang salah, terlupa pelarasan tahun lompat Februari, mencetak nilai DOY tanpa sifar pendahulu sehingga medan kod bar berubah kedudukan dan menyebabkan limpahan hasil CPT perantaraan apabila seseorang kemudiannya mengembangkan rutin ke arah JDN penuh. Kekalkan komen dalam ladder yang menyatakan perkataan sumber RTC yang sebenarnya digunakan pada mesin tersebut.
Apabila kod tarikh menjadi sebahagian daripada sel pembungkusan yang lebih luas, simpan penjana sebagai fail boleh guna semula dan seragamkan susun atur integer merentas barisan. Pemproses ganti dan dokumentasi untuk sistem PLC SLC-500 ini hendaklah merangkumi rutin kod tarikh supaya pertukaran pemproses tidak secara senyap kembali kepada pelaksanaan kalendar lama yang tidak tepat.
Tentang Penulis
Mark Townsend | Jurutera Automasi Kanan – Sistem Allen-Bradley
Mark Townsend ialah jurutera automasi kanan dengan pengalaman lebih 18 tahun menggunakan platform Allen-Bradley yang merangkumi ControlLogix, CompactLogix dan SLC-500 lama. Kerja hariannya melibatkan logik RSLogix / Studio 5000 serta penyediaan HMI FactoryTalk View pada kumpulan sistem lama dan campuran.