ลอจิกแลดเดอร์ XOR แบบสวิตช์สามตัว: การออกแบบพาริตีคี่ที่ถูกต้อง
คู่มือฉบับแก้ไขสำหรับลอจิกบันได XOR แบบสวิตช์สามตัวบนแพลตฟอร์ม SLC 500 และ Logix ครอบคลุมพาริตีคี่ การจัดเตรียมบิตภายใน ข้อจำกัดของ XOR ระดับเวิร์ด ลักษณะการ...
สวิตช์แบบคงสถานะสามตัวที่ควบคุมเอาต์พุตเดียว มักถูกนำเสนอเป็นแบบฝึกหัดลอจิกแลดเดอร์ แต่คำถามทางวิศวกรรมที่แท้จริงนั้นเฉพาะเจาะจงกว่านั้น: เอาต์พุตควรทำงานเมื่ออินพุตเป็นจริงเป็นจำนวนคี่ หรือการใช้งานสวิตช์ใด ๆ ควรกลับสถานะเดิมของเอาต์พุต? ข้อกำหนดทั้งสองแบบนี้แตกต่างกัน แบบแรกคือ XOR เชิงผสม หรือพาริตีคี่ ส่วนแบบที่สองต้องใช้การจดจำสถานะและการตรวจจับขอบสัญญาณ
สำหรับสวิตช์เลือกแบบคงสถานะสามตัว ข้อกำหนดโดยทั่วไปคือพาริตีคี่: หลอดไฟติดเมื่อมีสวิตช์ปิดหนึ่งหรือสามตัว และดับเมื่อมีสวิตช์ปิดศูนย์หรือสองตัว การเขียนข้อกำหนดนี้ให้ชัดเจนก่อนวาดคอนแทคจะช่วยป้องกันไม่ให้รางลอจิกที่ดูสมเหตุสมผลกลับไปทำงานเป็นฟังก์ชันบูลีนที่ผิด
XOR แบบสามอินพุตจะเป็นจริงเมื่อจำนวนอินพุตที่เป็นจริงเป็นจำนวนคี่ ไม่ใช่คำสั่งสลับสถานะที่จดจำไว้
เริ่มจากสถานะอินพุตทั้งแปด
ลำดับเอาต์พุตที่คาดหวังสำหรับอินพุต S1, S2 และ S3 คือ 0, 1, 1, 0, 1, 0, 0, 1 เมื่อสถานะอินพุตแบบไบนารีเลื่อนไปตั้งแต่ 000 ถึง 111 กล่าวง่าย ๆ คือ สวิตช์ปิดหนึ่งตัวจะทำให้เอาต์พุตติด สวิตช์ปิดสองตัวจะทำให้เอาต์พุตดับ และสวิตช์ปิดทั้งสามตัวจะทำให้เอาต์พุตติดอีกครั้ง
สถานะสุดท้ายนี่เองที่ทำให้คำอธิบายจำนวนมากผิดพลาด XOR แบบสามอินพุตเป็นฟังก์ชันพาริตีคี่ ดังนั้น 111 ต้องให้ผลเป็นจริง การใช้งานที่ตรวจจับเฉพาะ “มีอินพุตเป็นจริงเพียงหนึ่งตัว” ไม่ใช่ XOR แต่เป็นการตัดสถานะที่เป็นจริงทั้งสามตัวออกโดยตั้งใจ ในทางกลับกัน การนำสมการ XOR แบบจับคู่ทั้งสามสมการมา OR กันจะได้ฟังก์ชันคนละแบบ: ฟังก์ชันนั้นจะเป็นจริงเมื่ออินพุตไม่ได้มีค่าเท่ากันทั้งหมด ซึ่งรวมถึงสถานะที่เป็นจริงสองตัว และจึงไม่ตรงกับตารางค่าความจริงที่ต้องการเช่นกัน
แนวทางทดสอบระบบที่ปลอดภัยที่สุดคือใช้ตารางค่าความจริงเป็นเกณฑ์ยอมรับ อย่าตัดสินโปรแกรมจากตำแหน่งสวิตช์ที่สะดวกเพียงสองหรือสามตำแหน่ง
ต่อสเตจ XOR แบบสองอินพุตเข้าด้วยกัน
XOR มีสมบัติการเปลี่ยนกลุ่มได้ จึงสามารถเขียนเป็น (S1 XOR S2) XOR S3 ได้ ในโปรแกรม SLC 500 สามารถใช้งานบิตภายในหนึ่งบิตเพื่อเก็บผลลัพธ์ของสเตจแรก จากนั้นรางที่สองจึงนำบิตนั้นมารวมกับ S3 วิธีนี้ทำให้แต่ละรางมีหน้าที่เล็กและตรวจสอบได้ง่าย และช่วยให้วินิจฉัยสถานะขณะออนไลน์ได้สะดวกขึ้น
สำหรับการใช้งานด้วยคอนแทค สเตจ XOR แบบสองอินพุตแต่ละสเตจจะใช้ทางขนานสองทาง: ทางแรกตรวจสอบให้อินพุต A เป็นจริงและอินพุต B เป็นเท็จ ส่วนทางที่สองตรวจสอบให้ A เป็นเท็จและ B เป็นจริง จากนั้นทั้งสองทางจะรวมเข้าที่คอยล์เดียว ทำซ้ำรูปแบบเดียวกันโดยใช้บิตกลางร่วมกับอินพุตตัวที่สาม
บิตกลางจะแสดงผล S1 XOR S2 ก่อนที่สเตจที่สองจะนำผลนั้นไปรวมกับ S3
ตัวอย่างแผนการกำหนดแอดเดรส
ในโครงการฝึกอบรม RSLogix 500 ทั่วไป S1, S2 และ S3 อาจเป็น I:1/0, I:1/1 และ I:1/2 รางแรกจะเขียนผลลัพธ์กลางลงใน B3:0/0 และรางที่สองจะเขียนคำสั่งหลอดไฟลงใน O:2/0 แอดเดรสเหล่านี้เป็นเพียงตัวอย่างเท่านั้น การกำหนด I/O จริงต้องอ้างอิงจากการติดตั้งจริง
แอดเดรสของบิตกลางควรมีผู้เขียนเพียงรายเดียว การนำ B3:0/0 ไปใช้ซ้ำที่อื่น หรือวางคำสั่งเอาต์พุตอีกคำสั่งสำหรับ O:2/0 ไว้ภายหลังในโปรแกรม อาจเขียนทับผลลัพธ์ที่ถูกต้องภายในสแกนเดียวกันได้ ให้ตรวจสอบครอสเรเฟอเรนซ์ของทั้งสองแอดเดรสก่อนโทษรูปแบบ XOR
XOR ระดับเวิร์ดไม่ได้เป็นทางลัดแบบบูลีนโดยอัตโนมัติ
ชุดคำสั่งของ SLC 500 มีคำสั่ง XOR สำหรับทำ exclusive OR แบบทีละบิตระหว่างโอเปอแรนด์ชนิดเวิร์ด คู่มือ SLC 500 Instruction Set Reference Manual ของ Rockwell Automation อธิบายโอเปอแรนด์และปลายทางที่รองรับ คำสั่งนี้มีประโยชน์สำหรับมาสก์และเวิร์ดสถานะแบบแพ็ก แต่ไม่ได้ตัดความจำเป็นในการกำหนดว่าอินพุตบิตใดจะมีส่วนร่วมในการตัดสินพาริตีเพียงครั้งเดียว
สำหรับอินพุตดิสครีตสามตัว ลอจิกคอนแทคแบบต่อสเตจมักชัดเจนกว่าสำหรับเจ้าหน้าที่ซ่อมบำรุง การใช้งานระดับเวิร์ดอาจเหมาะสมเมื่อโปรแกรมมีการแพ็กบิตสถานะจำนวนมากอยู่แล้วและลดบิตเหล่านั้นลงเป็นผลลัพธ์พาริตีอย่างชัดเจน แต่ขั้นตอนการลดดังกล่าวยังต้องมองเห็นได้และต้องผ่านการทดสอบ
อย่าสับสนระหว่างพาริตีกับฟังก์ชันสลับสถานะ
ชุดควบคุมไฟแบบสามทางที่ใช้สวิตช์คงสถานะจะเปลี่ยนเอาต์พุตทุกครั้งที่สวิตช์จริงตัวใดตัวหนึ่งเปลี่ยนตำแหน่ง ในแง่บูลีนล้วน ๆ เอาต์พุต ณ ขณะใดขณะหนึ่งสามารถแทนด้วยพาริตีของตำแหน่งสวิตช์ทั้งสามได้ ไม่จำเป็นต้องเก็บสถานะ เพราะตำแหน่งสวิตช์เองเป็นตัวเก็บสถานะ
ปุ่มกดแบบกดติดปล่อยดับแตกต่างออกไป หากการกดปุ่มใดปุ่มหนึ่งจากสามปุ่มต้องสลับสถานะหลอดไฟ PLC จะต้องตรวจจับขอบขาขึ้นและกลับค่าบิตคำสั่งที่คงสถานะไว้หนึ่งครั้งต่อการกดที่ถูกต้อง การนำ XOR ไปใช้กับอินพุตปุ่มกดทั้งสามโดยตรงจะอธิบายเพียงว่าปุ่มใดกำลังถูกกดในสแกนนั้น แต่ไม่ได้จดจำสถานะหลอดไฟก่อนหน้า
ปุ่มกดจริงอาจมีอาการเด้งของหน้าสัมผัสด้วย ดังนั้นการออกแบบแบบสลับสถานะจึงต้องมีการปรับสภาพอินพุต พัลส์แบบ one-shot ผู้รับผิดชอบบิตที่คงสถานะอย่างชัดเจน และสถานะเริ่มต้นที่กำหนดไว้ สำหรับรูปแบบการสแกนและการจัดการข้อมูลที่เกี่ยวข้อง คู่มือ การใช้ค่าของไทเมอร์ SLC หนึ่งตัวเพื่อตั้งค่าไทเมอร์อีกตัว แสดงให้เห็นว่าเหตุใดการย้ายข้อมูลและลำดับรางจึงควรระบุไว้อย่างชัดเจน
ทดสอบและนำลอจิกไปใช้งานในฐานะฟังก์ชัน ไม่ใช่ภาพวาด
ขั้นแรกให้ทดสอบบิตกลางแบบสองอินพุตแยกต่างหาก บิตนี้ควรเป็นจริงสำหรับ 01 และ 10 และเป็นเท็จสำหรับ 00 และ 11 จากนั้นทดสอบเอาต์พุตสุดท้ายให้ครบทั้งแปดสถานะของอินพุตสามตัว บันทึกสถานะที่สังเกตได้ แทนที่จะพึ่งพาเพียงการไฮไลต์รางสีเขียว เพราะการบังคับค่า คอยล์ซ้ำ และการรีเฟรชหน้าจอออนไลน์อาจทำให้เข้าใจผิดเกี่ยวกับผู้ควบคุมเอาต์พุตที่แท้จริง
จากนั้นให้ตรวจสอบพฤติกรรมขณะจ่ายไฟ การเปลี่ยนโหมดโปรแกรม การแทนที่อินพุต และการตอบสนองต่อวงจรภาคสนามที่ขัดข้องหรือถูกตัดการเชื่อมต่อ ลอจิก XOR สามารถตรวจจับความไม่ตรงกันได้ แต่ไม่ได้เป็นระบบวินิจฉัยเพื่อความปลอดภัยด้วยตัวมันเอง หากสวิตช์มีส่วนร่วมในฟังก์ชันป้องกัน การออกแบบต้องใช้อินพุตที่ได้รับการรับรองด้านความปลอดภัย การตรวจสอบความไม่สอดคล้อง การตรวจจับความขัดข้อง และการประเมินความเสี่ยงที่เหมาะสมกับเครื่องจักร
สามารถตรวจสอบตัวเลือกฮาร์ดแวร์และการย้ายระบบสำหรับคอนโทรลเลอร์รุ่นเก่าและรุ่นปัจจุบันได้จาก คอลเลกชันระบบ PLC และ PAC แต่ต้องยืนยันตระกูลโปรเซสเซอร์ แรงดัน I/O การกำหนดแอดเดรส และผู้รับผิดชอบโปรแกรมก่อนนำตัวอย่างนี้ไปปรับใช้
เหตุใดรุ่นที่ใช้บิตภายในจึงดูแลรักษาได้ง่ายกว่า
รางเดียวที่ขยายเต็มรูปแบบสามารถแสดงพาริตีคี่แบบสามอินพุตได้โดยตรง แต่ต้องใช้ชุดเงื่อนไขแบบขนานสี่ชุด และจะตรวจสอบได้ยากขึ้นเมื่อมีการเพิ่มเงื่อนไข Cascading สเตจแบบสองอินพุตทำให้เจตนาของบูลีนชัดเจน มีจุดตรวจสอบเพื่อการวินิจฉัย และเชื่อมโยงระหว่างแอดเดรสใน RSLogix 500 กับแท็ก BOOL ที่มีชื่อใน Logix Designer ได้อย่างเป็นระบบ
มุมมองเชิงบรรณาธิการ: โซลูชันแลดเดอร์ที่ดีที่สุดคือโซลูชันที่สามารถอธิบายตารางค่าความจริง พฤติกรรมของหน่วยความจำ และการตอบสนองเมื่อเกิดความขัดข้องได้ระหว่างการส่งมอบงานซ่อมบำรุง บิตภายในไม่ใช่การใช้หน่วยความจำอย่างสูญเปล่า หากช่วยป้องกันไม่ให้วิศวกรคนถัดไปเข้าใจผิดว่าพาริตีคี่ ลอจิกแบบ “เป็นจริงเพียงหนึ่งตัว” และการสลับสถานะที่จดจำไว้เป็นฟังก์ชันเดียวกัน
คำถามที่พบบ่อย
เอาต์พุตควรติดเมื่อสวิตช์ทั้งสามตัวปิดหรือไม่?
ควรติด หากข้อกำหนดคือ XOR แบบสามอินพุตหรือพาริตีคี่ อินพุตที่เป็นจริงสามตัวมีจำนวนเป็นคี่ ดังนั้นเอาต์พุตจึงเป็นจริง หาก 111 ต้องเป็นเท็จ ฟังก์ชันที่ต้องการคือ “เป็นจริงเพียงหนึ่งตัว” ไม่ใช่ XOR
คำสั่ง XOR ของ SLC 500 สามารถแทนที่สองสเตจของแลดเดอร์ได้หรือไม่?
คำสั่งนี้ทำ XOR แบบทีละบิตกับโอเปอแรนด์ชนิดเวิร์ด สามารถเป็นส่วนหนึ่งของโซลูชันแบบแพ็กบิตได้ แต่บิตอินพุตแยกกันสามบิตยังต้องถูกจัดวางและลดผลลง เพื่อให้บิตปลายทางแทนค่าพาริตีที่ต้องการ สำหรับวงจรดิสครีตขนาดเล็ก สเตจคอนแทคสองสเตจโดยทั่วไปจะชัดเจนกว่า
บิตกลางทำให้เกิดความล่าช้าหนึ่งสแกนหรือไม่?
ไม่ หากรางที่เขียนบิตกลางทำงานก่อนรางที่อ่านบิตนั้นภายในรูทีนและทาสก์เดียวกัน รางที่สองจะเห็นค่าที่ถูกเขียนไว้ก่อนหน้าในสแกนเดียวกัน ลำดับโปรแกรมต้องได้รับการควบคุมและบันทึกไว้อย่างชัดเจน
จะเปลี่ยนแปลงอย่างไรหากอุปกรณ์ภาคสนามเป็นปุ่มกดแบบกดติดปล่อยดับ?
การสลับสถานะด้วยปุ่มกดแบบกดติดปล่อยดับต้องใช้การตรวจจับขอบสัญญาณและการเก็บสถานะเอาต์พุตไว้ XOR แบบเชิงผสมเพียงอย่างเดียวไม่สามารถจดจำได้ว่าหลอดไฟติดหรือดับอยู่ก่อนหน้า
XOR เหมาะสำหรับวงจรโหวตเพื่อความปลอดภัยหรือไม่?
ไม่เหมาะด้วยตัวมันเอง XOR ทั่วไปทำได้เพียงประเมินสถานะบูลีน การใช้งานด้านความปลอดภัยต้องมีสถาปัตยกรรมความปลอดภัยที่ผ่านการตรวจสอบ ความครอบคลุมด้านการวินิจฉัย การกำหนดเวลาตรวจสอบความไม่สอดคล้อง ฮาร์ดแวร์ที่เหมาะสม และการยืนยันผลเทียบกับการประเมินความเสี่ยงที่เกี่ยวข้อง