ข้อผิดพลาด Overflow Trap 0020 ของ SLC 500: การแก้ไขแลตช์ S:5/0
วินิจฉัยข้อผิดพลาดร้ายแรง 0020H ของ SLC 500 ก่อนล้างค่า S:5/0 เรียนรู้วิธีการเลื่อนสถานะเมื่อสแกนครบรอบ ระบุคำสั่งแรกที่ก่อให้เกิดปัญหา กำหนดนโยบายการกู้คืน และพิสูจน์ว่าการแก้ไขใช้งานได้ภายใต้ขีดจ...
SLC 500 ข้อผิดพลาดร้ายแรง 0020H มักถูกอธิบายว่าเป็นความผิดพลาดจากค่าล้น แต่รหัสดังกล่าวครอบคลุมมากกว่าคำสั่ง ADD ที่ผิดพลาดเพียงคำสั่งเดียว Rockwell ระบุว่าเป็นเงื่อนไขข้อผิดพลาดระดับรองที่ยังคงถูกตั้งค่าอยู่เมื่อโปรเซสเซอร์ทำงานถึง END, TND หรือ REF จึงถูกยกระดับเป็นข้อผิดพลาดร้ายแรง ภารกิจด้านการวินิจฉัยคือการระบุว่าบิตสถานะใดทำให้เกิดการยกระดับ ตรวจสอบว่าการดำเนินการใดเป็นผู้ตั้งค่าบิตนั้น และตัดสินใจว่าการกู้คืนแบบควบคุมมีความปลอดภัยหรือไม่
ข้อผิดพลาด 0020H ควรนำไปสู่การตรวจสอบไฟล์สถานะ ไม่ใช่การสรุปโดยอัตโนมัติว่าฮาร์ดแวร์ของโปรเซสเซอร์เสีย
อ่านไฟล์สถานะก่อนล้างค่าใด ๆ
บันทึกรหัสข้อผิดพลาด หมายเลขแค็ตตาล็อกของโปรเซสเซอร์ โหมดการทำงาน เวลา สถานะการผลิต และค่าของ S:5 กับ S:6 ก่อนรีเซ็ตคอนโทรลเลอร์ S:5/0 คือกับดักค่าล้นทางคณิตศาสตร์ S:5/2 ระบุข้อผิดพลาดของรีจิสเตอร์ควบคุมจากคำสั่ง เช่น FIFO การเลื่อนบิต หรือการทำงานแบบซีเควนเซอร์ บิต S:5 อื่น ๆ ก็อาจถูกยกระดับเมื่อจบรอบสแกนได้เช่นกัน การล้างค่าโปรเซสเซอร์ก่อนบันทึกค่าเหล่านี้จะทำลายหลักฐานและเพิ่มโอกาสให้ความผิดพลาดเดิมกลับมาเกิดซ้ำ
คู่มืออ้างอิงชุดคำสั่ง Rockwell SLC 500 ระบุว่า S:5/0 จะถูกตั้งค่าเมื่อเกิดค่าล้นทางคณิตศาสตร์ และจะประกาศข้อผิดพลาดร้ายแรง 0020H หากบิตยังคงถูกตั้งค่าอยู่เมื่อมีการทำงานของ END, TND หรือ REF คู่มือแนะนำให้ตรวจสอบบิตดังกล่าวหลังคำสั่งที่เกี่ยวข้อง ดำเนินการที่เหมาะสม แล้วจึงล้างค่า S:5/0 ด้วย OTU หรือล้างเวิร์ดสถานะที่เกี่ยวข้อง
ทำความเข้าใจผลลัพธ์ทางคณิตศาสตร์ควบคู่กับกับดักข้อผิดพลาด
สำหรับ ADD, SUB, MUL, DIV หรือ NEG หากผลลัพธ์ไม่สามารถแทนค่าในปลายทางได้ ระบบจะตั้งค่าบิตค่าล้นทางคณิตศาสตร์ S:0/1 และกับดัก S:5/0 เมื่อใช้สถานะเริ่มต้นของ S:2/14 ผลลัพธ์บวกจะจำกัดอยู่ที่ 32767 และผลลัพธ์ลบอยู่ที่ -32768 เมื่อ S:2/14 ถูกตั้งค่า บิตที่มีนัยสำคัญต่ำสุด 16 บิตจะสามารถถูกนำไปเก็บในปลายทางได้ การตั้งค่านี้เปลี่ยนพฤติกรรมของปลายทาง แต่ไม่ได้พิสูจน์ว่าผลลัพธ์ของแอปพลิเคชันถูกต้อง
DDV และคำสั่งแปลงค่าหรือปรับสเกลบางคำสั่งมีกฎเพิ่มเติม ดังนั้นการตรวจสอบต้องอ้างอิงเอกสารของคำสั่งนั้นโดยตรง การหารด้วยศูนย์ ความยาวของชุดควบคุมที่ไม่ถูกต้อง หรือแอดเดรสทางอ้อมที่อยู่นอกช่วงที่อนุญาต อาจทำให้เกิดเส้นทางสถานะที่แตกต่างกัน อย่าจัดเหตุการณ์ 0020H ทุกกรณีไว้ภายใต้ “ค่าล้นของจำนวนเต็ม” โดยไม่ตรวจสอบ S:5 และคำสั่งที่ทำงานทันทีก่อนบิตจะถูกตั้งค่า
ค้นหาการดำเนินการแรกที่ก่อให้เกิดปัญหา
ทบทวนการเปลี่ยนแปลงล่าสุดและตรวจสอบไขว้กับทุกคำสั่งที่สามารถตั้งค่าบิตสถานะที่พบได้ สำหรับค่าล้นทางคณิตศาสตร์ ให้ตรวจสอบการคำนวณปรับสเกล ยอดรวมการผลิต การแปลงหน่วย ค่ารันไทม์สะสม ขีดจำกัดแบบมีเครื่องหมาย และปลายทางค่ากลาง การคำนวณอาจถูกต้องทางคณิตศาสตร์ในหน่วยทางวิศวกรรม แต่ไม่ปลอดภัยเมื่อขั้นตอนกลางถูกจัดเก็บเป็นจำนวนเต็ม 16 บิต
บันทึกแนวโน้มหรือเก็บค่าตัวถูกดำเนินการต้นทาง ค่าปลายทาง S:0/1 และ S:5/0 รอบคำสั่งที่ต้องสงสัย ในระบบทดสอบออฟไลน์ ให้จำลองกรณีขอบเขตที่ต่ำกว่าช่วงที่ถูกต้องพอดี อยู่ที่ขอบเขต และสูงกว่าช่วงที่ถูกต้อง หากมีหลายคำสั่งที่สามารถตั้งค่ากับดักได้ภายในหนึ่งรอบสแกน ให้เพิ่มแลตช์วินิจฉัยชั่วคราวเพื่อระบุตำแหน่งแรก ควรทบทวนและตั้งชื่อบิตวินิจฉัยเหล่านี้ แล้วนำออกหรือเก็บรักษาไว้อย่างเป็นทางการหลังทราบสาเหตุรากแล้ว
ใช้ตรรกะการกู้คืนเมื่อมีนโยบายที่ชัดเจนเท่านั้น
การใช้ OTU S:5/0 แบบครอบคลุมที่รางสุดท้ายอาจป้องกันการยกระดับเมื่อจบรอบสแกนได้ แต่ก็อาจระงับการหยุดระบบไม่ว่าการคำนวณใดจะเกิดค่าล้น วิธีนี้อาจยอมรับได้สำหรับตัวนับที่ไม่สำคัญ ซึ่งค่าถูกจำกัดช่วงและมีสัญญาณเตือนแล้ว แต่ไม่อาจยอมรับได้เมื่อผลลัพธ์ส่งผลต่อการเคลื่อนที่ ความดัน อุณหภูมิ การจ่ายสาร การปกป้องอุปกรณ์ หรือการตัดสินใจที่เกี่ยวข้องกับความปลอดภัย
ตรรกะที่มีความทนทานจะตรวจสอบผลลัพธ์ของคำสั่ง ณ จุดที่เกิดเหตุ ตรวจสอบตัวถูกดำเนินการก่อนการทำงาน เลือกปลายทางที่มีช่วงเพียงพอ จำกัดค่าเฉพาะเมื่อความหมายของกระบวนการรองรับ ตั้งสัญญาณเตือนวินิจฉัย แทนที่ด้วยค่าปลอดภัยที่มีการจัดทำเอกสารไว้ แล้วจึงล้างกับดัก หากการตอบสนองที่ถูกต้องคือการหยุดลำดับการทำงาน ให้คงข้อผิดพลาดไว้แทนการบังคับให้โปรเซสเซอร์ทำงานต่อ
รูทีนข้อผิดพลาดของผู้ใช้สามารถรองรับการกู้คืนแบบควบคุมสำหรับเหตุการณ์ที่เลือกไว้ได้ และคู่มือของ Rockwell มีตัวอย่างที่นับจำนวนเหตุการณ์ 0020H ที่เกิดซ้ำ แล้วอนุญาตให้ระบบหยุดทำงานในที่สุด รูปแบบดังกล่าวให้ข้อมูลมากกว่าการล้างค่าแบบไม่มีเงื่อนไข เพราะแยกเหตุการณ์เดี่ยวที่จัดการแล้วออกจากข้อบกพร่องที่เกิดซ้ำ รูทีนข้อผิดพลาดเองต้องได้รับการทดสอบอย่างรอบคอบ เพราะข้อผิดพลาดที่สองภายในรูทีนอาจเขียนทับข้อมูลการวินิจฉัยหรือป้องกันการกู้คืน
แยกข้อผิดพลาดของซอฟต์แวร์ออกจากข้อกังวลด้านฮาร์ดแวร์
กับดักค่าล้นมักชี้ไปที่ข้อมูลของโปรแกรมและพฤติกรรมของคำสั่ง ไม่ใช่แชสซีที่เสีย อย่างไรก็ตาม แหล่งจ่ายไฟไม่เสถียร ปัญหาหน่วยความจำ หรือการเปลี่ยนแปลงโปรแกรมโดยไม่ได้ตั้งใจอาจทำให้ข้อมูลเปลี่ยนแปลง และควรได้รับการตรวจสอบเมื่อมีหลักฐานสนับสนุน ตรวจสอบแบตเตอรี่และประวัติแหล่งจ่ายไฟของคอนโทรลเลอร์ เปรียบเทียบโปรแกรมที่กำลังทำงานกับไฟล์เก็บถาวรที่ได้รับอนุมัติ และตรวจสอบว่า HMI ข้อความ หรือระบบภายนอกเขียนค่าตัวถูกดำเนินการที่เกี่ยวข้องหรือไม่
อย่าเปลี่ยนโปรเซสเซอร์ SLC เป็นการตอบสนองแรกต่อค่าทางคณิตศาสตร์ที่เกิดซ้ำตามขอบเขต หาก CPU ตัวใหม่รันโปรแกรมเดิมด้วยข้อมูลเดิม ก็จะเกิดข้อผิดพลาดซ้ำ หากแพลตฟอร์มล้าสมัย ให้จัดการอะไหล่สำรองและการย้ายระบบภายใต้แผนวงจรชีวิตของไซต์สำหรับระบบ PLC และ PAC แต่ควรแยกการตัดสินใจดังกล่าวออกจากการวิเคราะห์สาเหตุรากในทันที
พิสูจน์ว่าการแก้ไขได้ผล
ทดสอบตรรกะที่แก้ไขแล้วด้วยค่าปกติ ขีดจำกัดทั้งสองด้านของช่วง อินพุตที่ไม่ถูกต้อง การสูญเสียการสื่อสาร การสแกนครั้งแรก และเงื่อนไขการรีเซ็ตใด ๆ ยืนยันให้แน่ใจว่าสัญญาณเตือนระบุการคำนวณที่ได้รับผลกระทบ ค่าที่แทนที่มีความปลอดภัย และมีการนับเหตุการณ์ที่เกิดซ้ำ สังเกต S:5/0 และ S:0/1 ตลอดรอบการผลิตที่เป็นตัวแทน และตรวจสอบว่าโปรเซสเซอร์ไม่ได้เพียงซ่อนค่าล้นที่เกิดซ้ำ
เก็บถาวรไฟล์ RSS ก่อนและหลัง หลักฐานข้อผิดพลาด ผลการทดสอบ และเหตุผลเบื้องหลังตรรกะการกู้คืนใด ๆ จัดเก็บบันทึกดังกล่าวควบคู่กับคำแนะนำการย้ายระบบ SLC scaling ของไซต์เมื่อปรับปรุงแอปพลิเคชันให้ทันสมัย ข้อผิดพลาด 0020H จะจัดการได้เมื่อทีมมองว่าเป็นปัญหาสถานะและคุณภาพข้อมูลที่ชัดเจน แทนที่จะมองว่าเป็นเพียงบิตที่ต้องยกเลิกการตั้งค่าทันทีที่พบ