คู่มือการใช้งานตัวสร้างวันที่จูเลียน 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
ลอจิกปีอธิกสุรทินต้องเป็นไปตามกฎปฏิทินพลเรือนที่ระบบคุณภาพของคุณใช้ อย่างน้อย ปีที่หารด้วยสี่ลงตัวถือเป็นปีอธิกสุรทิน หากอายุการใช้งานผลิตภัณฑ์ครอบคลุมช่วงเปลี่ยนศตวรรษ ให้ใช้ข้อยกเว้นแบบเกรกอเรียนอย่างครบถ้วน โดยปีศตวรรษจะเป็นปีอธิกสุรทินก็ต่อเมื่อหารด้วย 400 ลงตัว ตั้งค่า N7:4 เป็นหนึ่งเมื่อปีนั้นเป็นปีอธิกสุรทิน เมื่อนำค่าออฟเซ็ตวันสะสมของเดือนไปบวก ให้เพิ่มอีกหนึ่งวันเฉพาะเมื่อเปิดแฟล็กปีอธิกสุรทินและเดือนมากกว่าเดือนกุมภาพันธ์ ควรดำเนินการบวกนี้ใน CPT แยกเฉพาะ แทนการซ่อนเงื่อนไขซ้อนกันไว้ในเอ็กซ์เพรสชันที่อ่านได้ยาก
คัดลอกปี เดือน และวันจากเวิร์ดต้นทาง RTC ที่ตรวจสอบแล้วไปยังรีจิสเตอร์ทำงาน N7 ในงานแบบเป็นคาบที่ทำงานช้า หรือทำในสแกนแรกพร้อมขอบสัญญาณรายวัน อย่าอ่านเวิร์ด RTC ในทุก ๆ รันก์ที่ทำงานแบบต่อเนื่อง หากการจัดรูปแบบด้วย ASC ทำให้ใช้ทรัพยากรมาก การรีเฟรชทุกหนึ่งนาทีมักเพียงพอสำหรับการกำหนดรหัสวันที่
สตริง 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เหล่านี้ควรรวมรูทีนกำหนดรหัสวันที่ไว้ด้วย เพื่อให้การเปลี่ยนโปรเซสเซอร์ไม่ทำให้ระบบย้อนกลับไปใช้การติดตั้งปฏิทินรุ่นเก่าที่ไม่ถูกต้องโดยไม่รู้ตัว
เกี่ยวกับผู้เขียน
Mark Townsend | วิศวกรระบบอัตโนมัติอาวุโส – ระบบ Allen-Bradley
Mark Townsend เป็นวิศวกรระบบอัตโนมัติอาวุโสที่มีประสบการณ์บนแพลตฟอร์ม Allen-Bradley มากกว่า 18 ปี ครอบคลุม ControlLogix, CompactLogix และ SLC-500 รุ่นเก่า งานประจำวันของเขาคือการพัฒนาลอจิกใน RSLogix / Studio 5000 และการนำ HMI ของ FactoryTalk View ไปใช้งานบนระบบที่มีอายุการใช้งานสูงและระบบที่ใช้ฮาร์ดแวร์หลากหลายรุ่นร่วมกัน