แม้ว่าโปรโตคอล CAN เองจะมีความสามารถในการตรวจจับและแก้ไขข้อผิดพลาดที่แข็งแกร่ง แต่ในไซต์ควบคุมอุตสาหกรรม การเชื่อมต่อปลั๊กไม่มั่นคง สื่อการส่งเสียหาย หรือไดรเวอร์บัสเสียหาย ฯลฯ จะทำลายการสื่อสารที่เชื่อถือได้ของ CAN ในระบบแอปพลิเคชันที่ต้องการความน่าเชื่อถือสูง ข้อผิดพลาดเหล่านี้หากไม่ตรวจพบโดยอัตโนมัติและใช้มาตรการที่เหมาะสมเพื่อแก้ไข จะทำให้ระบบสูญเสียความสามารถในการสื่อสารบางส่วนหรือทั้งหมด วิธีที่มีประสิทธิภาพในการแก้ปัญหานี้คือการใช้การควบคุมการสื่อสารที่ซ้ำซ้อน เพื่อให้แน่ใจว่าฟังก์ชันหลักของระบบการสื่อสารทำงานได้ตามปกติ จึงช่วยเพิ่มความน่าเชื่อถือของระบบได้
1 ส่วนประกอบฮาร์ดแวร์ของระบบ
MB90F543 เป็นไมโครคอนโทรลเลอร์ 16- บิตพร้อมตัวควบคุม CAN สองตัวจาก Fujitsu ระบบใช้บัสสองชุด (CAN0, CAN1) ซึ่งแต่ละชุดประกอบด้วยสายเคเบิลบัสอิสระ ไดรเวอร์บัส และตัวควบคุมบัส ซึ่งสามารถรับรู้ถึงความซ้ำซ้อนของสื่อทางกายภาพ เลเยอร์ทางกายภาพ เลเยอร์ดาต้าลิงก์ และเลเยอร์แอปพลิเคชัน บัสสองชุดทำงานในโหมดการสำรองข้อมูลแบบ hot: ตัวควบคุม CAN ตัวหนึ่งทำหน้าที่เป็น CAN เริ่มต้นหลังจากที่ระบบเปิดทำงาน (ซึ่งสามารถเรียกว่า CAN หลัก); อีกอันทำหน้าที่เป็น CAN สแตนด์บายของระบบ (ซึ่งเรียกว่า CAN ทาส) และทำหน้าที่เป็นส่วนสำรองสำหรับ CAN หลัก เมื่อระบบทำงานได้ตามปกติ CAN บัสหลัก (CAN0) จะถูกใช้งาน เมื่อ CAN บัสหลักล้มเหลว CAN บัสรอง (CAN1) จะเริ่มทำงาน หากการเปิดเครื่อง-ตรวจพบข้อผิดพลาดใน CAN บัสหลัก CAN บัสรองจะถูกใช้งานโดยอัตโนมัติ ด้วยวิธีนี้ เมื่อบัสชุดหนึ่งขัดข้อง รถโดยสารอีกชุดหนึ่งจะทำงานต่อไปโดยอัตโนมัติเพื่อให้แน่ใจว่าฟังก์ชันการสื่อสารของทั้งระบบทำงานได้ตามปกติ ซึ่งช่วยเพิ่มความน่าเชื่อถือของระบบได้อย่างมาก และตระหนักถึงการออกแบบความซ้ำซ้อนที่ครอบคลุมของ CAN บัส นอกจากนี้ ตามความต้องการของซอฟต์แวร์ยังสามารถตั้งค่าให้ใช้โหมดซ้ำซ้อนหรือไม่{17}}ซ้ำซ้อนก็ได้ สำหรับโหมดไม่ซ้ำซ้อน จะใช้เฉพาะ CAN บัสหลักเท่านั้น
แผนภาพบล็อกสถาปัตยกรรมระบบ
RT คือตัวต้านทานการจับคู่การสิ้นสุดบัส ซึ่งใช้ในการระงับการรบกวนการปล่อยสัญญาณ RT=100Ω หรือ 120Ω เครือข่ายใช้สายเคเบิลคู่บิดเกลียวหุ้มฉนวนเป็นสื่อกลางในการสื่อสาร
ตัวควบคุม CAN ผสานรวมฟังก์ชันเลเยอร์ทางกายภาพและเลเยอร์ลิงก์ข้อมูลของโปรโตคอล CAN และสามารถดำเนินกระบวนการเฟรมของการสื่อสารข้อมูลให้เสร็จสมบูรณ์ได้ รวมถึงการเติมบิต การเข้ารหัสบล็อกข้อมูล การตรวจสอบ CRC และการเลือกปฏิบัติตามลำดับความสำคัญ
คอนโทรลเลอร์ CAN มีคุณสมบัติหลักดังต่อไปนี้:
◇ สอดคล้องกับโปรโตคอล CAN2.0A และ CAN2.0B
◇รองรับการส่งและรับเฟรมข้อมูลและเฟรมระยะไกล
◇ บัฟเฟอร์ข้อความส่ง/รับ 16 รายการ รองรับตัวระบุบิต 11- บิตหรือ 29- และโครงสร้างบัฟเฟอร์ข้อความหลาย-ระดับ ◇ รองรับการเปรียบเทียบแบบเต็ม-บิต การเปรียบเทียบแบบเต็มบิต และการเปรียบเทียบแบบเต็มบิต
◇ รองรับวิธีการเลือกการระบุการยอมรับสามวิธี: การเปรียบเทียบ-บิตแบบเต็ม, การมาสก์บิตแบบเต็ม- และการยอมรับการมาสก์บิต register การลงทะเบียนการระบุการยอมรับสองรายการ
register การลงทะเบียนการระบุการยอมรับสองรายการรองรับรูปแบบเฟรมมาตรฐานหรือรูปแบบเฟรมขยาย
◇ อัตรารับส่งข้อมูลสามารถตั้งโปรแกรมได้ตั้งแต่ 10Kbps ถึง 1Mbps
ไดรเวอร์บัสใช้ PCA82C250 เป็นอินเทอร์เฟซระหว่างตัวควบคุม CAN และฟิสิคัลบัส เพื่อเพิ่มความสามารถในการรับส่งข้อมูลส่วนต่างของบัส

2 การออกแบบซอฟต์แวร์ระบบ
2.1 การรับรู้ฟังก์ชันการควบคุมซ้ำซ้อน CAN แบบคู่
ในระบบสำรอง CAN แบบคู่ เมื่อเทียบกับโครงสร้างฮาร์ดแวร์ การออกแบบซอฟต์แวร์ค่อนข้างซับซ้อนกว่า โปรแกรมการสื่อสาร CAN บัสทั่วไปต้องมีสามส่วนพื้นฐาน: โปรแกรมการเริ่มต้น CAN โปรแกรมการส่งสัญญาณ CAN และโปรแกรมการรับ CAN ในการออกแบบซอฟต์แวร์ระบบสำรองนี้ สามส่วนข้างต้นถูกใช้เป็นโมดูลพื้นฐานที่สุดสามโมดูลสำหรับโมดูลซอฟต์แวร์อื่นๆ ของระบบที่จะเรียกใช้
MB90F543 สามารถรองรับแหล่งที่มาของการขัดจังหวะได้ 256 ชนิด และมีฮาร์ดแวร์ขัดจังหวะสี่ตัวที่เกี่ยวข้องกับตัวควบคุม CAN: CAN0 RX (CAN0 ได้รับการขัดจังหวะโดยสมบูรณ์), CAN0 TX /NS (CAN0 ส่งการขัดจังหวะการเปลี่ยนแปลงสถานะที่สมบูรณ์/โหนด), CAN1 RX (CAN1 ได้รับการขัดจังหวะโดยสมบูรณ์), CAN1 TX /NS (CAN1 ส่งการขัดจังหวะการเปลี่ยนแปลงสถานะที่สมบูรณ์/โหนด) CAN1 TX /NS (CAN1 ส่งการเปลี่ยนแปลงสถานะที่สมบูรณ์/โหนดขัดจังหวะ) ในการออกแบบซอฟต์แวร์นี้ จะใช้การส่งแบบสอบถามและการขัดจังหวะการรับ รูทีนย่อยการขัดจังหวะการเปลี่ยนแปลงสถานะโหนดใช้สำหรับการประมวลผลการเปลี่ยนแปลงสถานะของโหนด เนื่องจากโปรโตคอล CAN2.0 ระบุว่าโหนดอยู่ในสถานะหนึ่งในสามสถานะต่อไปนี้: สถานะข้อผิดพลาด-เปิดใช้งานแล้ว ข้อผิดพลาด-สถานะที่ถูกละเว้น และสถานะ-บัส ในซีรีส์ MB90500 ยังมีสถานะการเตือนเพิ่มเติม ซึ่งบ่งชี้ว่าค่าของตัวนับข้อผิดพลาดในการส่ง/รับเกิน 96 และการเปลี่ยนแปลงในสถานะโหนดจะทำให้เกิดการขัดจังหวะที่สอดคล้องกัน
เนื่องจากระบบทำงานด้วย dual CAN redundancy hot standby ตัวควบคุม CAN ทั้งสองตัวจึงต้องอยู่ในสถานะ hot standby ตัวควบคุม CAN ทั้งสองของโหนดทั้งหมดในระบบได้รับการเตรียมใช้งานให้พร้อมที่จะรับข้อความได้ตลอดเวลา แต่มีตัวควบคุม CAN ตัวเดียวเท่านั้นที่กำลังส่งข้อความ กล่าวอีกนัยหนึ่ง ณ จุดหนึ่ง ช่อง CAN หนึ่งช่องเท่านั้นที่ทำงานอยู่ ในขณะที่อีกช่องหนึ่งกำลังฟัง (ในการทำงานปกติ) หรืออยู่ในสถานะความผิดปกติ (ในกรณีที่เกิดความล้มเหลว)
กุญแจสู่ความซับซ้อนของการออกแบบซอฟต์แวร์ของระบบควบคุมซ้ำซ้อน CAN แบบคู่เมื่อเปรียบเทียบกับระบบควบคุม CAN เดียวนั้นอยู่ที่การตรวจจับข้อบกพร่องของระบบ CAN และการสลับระบบ CAN โดยอัตโนมัติ เนื่องจากการใช้สื่อการส่งสัญญาณที่เป็นอิสระอย่างสมบูรณ์ ไดรเวอร์บัสและตัวควบคุมบัสสองชุด จึงสามารถตรวจจับได้โดยอิสระจากข้อบกพร่องของช่องสัญญาณของตัวเอง เช่น วงจรลัดวงจร- CANH และ CANL, การตัดการเชื่อมต่อ CANH หรือ CANL, วงจรลัดวงจร CANH และกราวด์-, วงจร CANL และไฟฟ้าลัดวงจร- ความเสียหายของไดรเวอร์บัส และอื่นๆ ในการดีบักจริง พบว่าหาก CANH, CANL ถูกตัดการเชื่อมต่อหรือมีตัวส่งสัญญาณเพียงตัวเดียวบนบัส จะทำให้ตัวนับข้อผิดพลาดในการส่ง/รับเพิ่มขึ้นเป็น 128 ซึ่งทำให้โหนดอยู่ในสถานะข้อผิดพลาดที่ถูกละเว้น และการลัดวงจร-ระหว่าง CANH และ CANL การลัดวงจร-ระหว่าง CANH และกราวด์ หรือการลัดวงจร-ระหว่าง CANL และแหล่งจ่ายไฟจะทำให้ตัวนับข้อผิดพลาดในการส่ง/รับเพิ่มขึ้นเป็น 256 ซึ่งทำให้โหนดอยู่ในสถานะตัดการเชื่อมต่อของบัส ดังนั้นโดยการเรียกโมดูล CAN redundancy ในรูทีนย่อยขัดจังหวะการเปลี่ยนแปลงสถานะโหนด เราสามารถบรรลุวัตถุประสงค์ข้างต้นในการตรวจจับข้อผิดพลาดอัตโนมัติและการสลับระบบ CAN โดยอัตโนมัติ รูทีนย่อยขัดจังหวะการเปลี่ยนสถานะโหนด CAN0 มีดังนี้:
__ขัดจังหวะเป็นโมฆะ NodeStateTransmitInt0 (เป็นโมฆะ)
{
ถ้า (CSR0_NT) /* สถานะโหนดเปลี่ยน */
{
CSR0_NT=0; /*รีเซ็ตสถานะขัดจังหวะ */
ถ้า ( (CSR0_NS==2 ) (CSR0_NS==3 ) ) /* ขัดจังหวะหรือเกิดไฟฟ้าลัดวงจร */
{
NoWaitFlg=1; /* ธงที่ไม่เกิดร่วมกัน */
Bus0Error( ) ; /* Bus0Error( ) หยุด CAN0 และเริ่มรูทีนย่อย CAN1 ที่ซ้ำซ้อน */ { NoWaitFlg=1; /* ธง mutex */
}
}
ไอซีอาร์00 =3; /* เปลี่ยนลำดับความสำคัญของการขัดจังหวะเป็น Timer0 ลำดับความสำคัญของการขัดจังหวะ */ }
ไอซีอาร์03 =2; /* เปลี่ยนลำดับความสำคัญของการขัดจังหวะเพื่อจัดลำดับความสำคัญของตัวจับเวลา 0 ขัดจังหวะ */ }
}
นอกจากนี้ ในกระบวนการสื่อสาร CAN บัส เมื่อการส่งข้อมูลของบัฟเฟอร์ข้อมูลบางอย่างเสร็จสมบูรณ์ บิตที่เกี่ยวข้องในรีจิสเตอร์การส่งข้อมูลจะถูกตั้งค่าเป็น 1 ในกระบวนการสอบถามการส่งข้อมูล โดยการตัดสินการลงทะเบียนนี้ คุณสามารถทราบได้ว่าการส่งข้อมูลเสร็จสมบูรณ์หรือไม่ อย่างไรก็ตามหากส่งไม่สำเร็จจะทำให้ระบบรอตลอดเวลาและทำให้ระบบล่ม ดังนั้น ซอฟต์แวร์จะต้องตั้งค่าระยะเวลารอที่นี่ ซึ่งเกินกว่านั้นระบบจะเรียกระบบสำรอง CAN เพื่อหยุดช่อง CAN หลัก และเปิดใช้งานช่อง CAN รอง
การออกแบบซอฟต์แวร์ควรคำนึงถึงปัญหาในการกู้คืนงานการสื่อสารดั้งเดิมหลังจากการสลับ CAN สำรองเสร็จสิ้น วิธีแก้ไขคือการเตรียมรายการแฟล็กงาน การสลับ CAN สแตนด์บาย อ่านตารางเพื่อรับงานดั้งเดิมของระบบ เพื่อให้บรรลุงานการสื่อสารดั้งเดิมของการสวิตช์ที่เชื่อถือได้
2.2 การรับรู้ฟังก์ชันการจัดการบัส
ในการออกแบบซอฟต์แวร์ของระบบนี้ นอกเหนือจากโปรแกรมการสื่อสารข้อมูลแบบเรียลไทม์-สำหรับการส่งและรับข้อมูลแล้ว ยังรวมถึงโปรแกรมการจัดการการสื่อสารสำหรับการจัดการแต่ละโหนดด้วย โหนดทั้งหมดแบ่งออกเป็นโหนดหลักและโหนดทาส ความแตกต่างระหว่างโหนดหลักคือฟังก์ชันการจัดการบัส ซึ่งช่วยให้สามารถทำสถิติโหนดออนไลน์ จดจำโหนดออฟไลน์ และใช้มาตรการเพื่อจัดการกับโหนดเหล่านั้น ในขณะที่โหนดทาสไม่มีฟังก์ชันนี้ มีโหนดหลักเพียงโหนดเดียว ในขณะที่โหนดทาสหลายโหนดได้รับอนุญาต โปรแกรมฟังก์ชันการจัดการบัสสำหรับโหนดหลักที่ถูกเรียกเป็นระยะๆ เพื่อตรวจสอบว่าโหนดทั้งหมดออนไลน์อยู่หรือไม่ หากโหนดทั้งหมดออนไลน์อยู่ บัสจะถือว่าเป็นเรื่องปกติ มิฉะนั้น ให้ระบุโหนดออฟไลน์ และจัดการกับมันตามลำดับ แนวคิดการออกแบบคือโหนดหลักของระบบจะส่งเฟรมระยะไกลไปยังโหนดทาสทั้งหมดบนบัสในช่วงเวลาปกติ และโหนดทาสแต่ละโหนดจะได้รับมัน ใส่หมายเลขโหนดของตัวเองในเฟรมข้อมูล และส่งไปยังโหนดหลัก และโหนดหลักจะกำหนดว่ามีโหนดล้มเหลวแบบออฟไลน์หรือไม่ตามหมายเลขโหนดที่ได้รับ ในระบบนี้ หมายเลขโหนด (ที่อยู่โมดูล) ถูกกำหนดโดยสวิตช์ DIP บนโมดูล
ในกระบวนการแก้ไขข้อบกพร่องของซอฟต์แวร์ แม้ว่าโครงสร้างฮาร์ดแวร์ของแต่ละโหนดจะเหมือนกัน เนื่องจากความแตกต่างในการเดินสายไฟของแผงวงจรและการกระจายส่วนประกอบ มักเป็นกรณีที่โหนดทาสบางอันไม่สามารถรับข้อมูลที่ส่งโดยโหนดหลัก หรือโหนดหลักไม่ได้รับข้อมูลทั้งหมดที่ส่งโดยโหนดทาส กล่าวคือ มีปัญหาการสูญเสียเฟรม ปัญหานี้ได้รับการแก้ไขแล้วด้วยความล่าช้าของซอฟต์แวร์และการเพิ่มประสิทธิภาพการรับโปรแกรมขัดจังหวะ
3 สภาพแวดล้อมการพัฒนาและแอปพลิเคชันควรคำนึงถึงหลายประเด็น
โต๊ะทำงานซอฟต์แวร์ Softune V3 เป็นสภาพแวดล้อมการพัฒนาซอฟต์แวร์แบบครบวงจรสำหรับการพัฒนาโปรแกรมไมโครคอนโทรลเลอร์ซีรีส์ FFMC-8L, FFMC-16L/LX และ FR ของ Fujitsu รวมถึงการจัดการการพัฒนา การดีบักโปรแกรมจำลอง การจำลองแบบอ่อน และสภาพแวดล้อมการพัฒนาแบบรวม ชุดเครื่องมือพัฒนาประกอบด้วย Softune Workbench, C คอมไพเลอร์, Assembler, Linker, C Checker, C Analyzer Softune V3 รองรับทั้งภาษา C และภาษาแอสเซมบลี
ในระหว่างการใช้งานจริงของ MB90F543 ควรสังเกตปัญหาต่อไปนี้
1 การตั้งค่าของการลงทะเบียนการเลือกเครื่องหมายการยอมรับ (AMSR) บัฟเฟอร์ข้อความแต่ละอันสามารถเลือกวิธีการทำเครื่องหมายการยอมรับได้หนึ่งวิธี: การเปรียบเทียบบิตเต็ม มาสก์บิตเต็ม หรือการยอมรับบิตมาสก์ การเปรียบเทียบ-บิตแบบเต็มหมายความว่า ID ของข้อมูลที่โหนดได้รับจะต้องเหมือนกันทุกประการกับ ID ที่กำหนดโดยบัฟเฟอร์ข้อมูล เพื่อให้ข้อมูลผ่านตัวระบุการยอมรับ การมาสก์บิตแบบเต็ม-ไม่จำเป็นต้องเปรียบเทียบ ID ของข้อมูล ซึ่งสามารถตีความได้ว่าเป็นการส่งผ่านแบบไม่มีเงื่อนไขของตัวระบุการยอมรับ บิต-การยอมรับการมาสก์สามารถระบุบิต ID ที่จะเปรียบเทียบและบิต ID ที่จะมาสก์ กล่าวคือ การเปรียบเทียบการยอมรับบางส่วน ในทางปฏิบัติ วิธีการระบุการยอมรับนี้ถูกใช้บ่อยที่สุด ดังนั้นจึงมีการตั้งค่าวิธีการดังกล่าวสองวิธีไว้ในตัวควบคุม CAN ของชิป MB90F543 การตั้งค่า AMSR ให้ความยืดหยุ่นอย่างมากสำหรับนักพัฒนาในการประมวลผลข้อมูลบัฟเฟอร์
2. การตั้งค่าการลงทะเบียนเครื่องหมายการยอมรับ (AMR) หลังจากที่ AMSR ถูกตั้งค่าเป็นบิต-วิธีการยอมรับแบบปกปิด AMR จะต้องตั้งค่าเพื่อตั้งค่าบิตของ ID ที่จะเปรียบเทียบและบิตใดที่จะถูกมาสก์ AMR มีทั้งหมดสี่ไบต์และรองรับอักขระ ID 29 บิต อย่างไรก็ตาม เป็นที่น่าสังเกตว่าสำหรับอักขระ ID 29 บิต จะใช้ AM28~AM0; ในขณะที่อักขระ ID 11 บิตจะใช้ AM28~AM18 ดังนั้นผู้ใช้จึงต้องระมัดระวังในการตั้งค่า AMR ไม่เช่นนั้นจะส่งผลให้เกิดข้อผิดพลาดในการรับสัญญาณ ผู้เขียนได้รับความเดือดร้อนที่นี่
3 คุณลักษณะอย่างหนึ่งของตัวควบคุม CAN ของฟูจิตสึคือรองรับการใช้บัฟเฟอร์ข้อความหลาย-ระดับ ในกรณีที่การรับสัญญาณเกิดขึ้นบ่อยครั้ง หรือได้รับกรอบข้อมูล ID ที่แตกต่างกันหลายเฟรม อาจเป็นไปได้ว่า CPU ไม่มีเวลาเพียงพอในการประมวลผลข้อมูลที่ได้รับ ดังนั้นบัฟเฟอร์ข้อมูลจำนวนมากจึงสามารถจัดรูปแบบเป็นบัฟเฟอร์ข้อมูลหลาย-ระดับเพื่อให้แน่ใจว่าข้อมูลสามารถประมวลผลได้ทันท่วงทีและมีประสิทธิภาพ ด้วยวิธีนี้ ข้อมูลที่มีขนาดใหญ่กว่า 8 ไบต์จึงสามารถส่งได้ใน 1 เฟรม ข้อดีอีกประการของการจัดเรียงนี้คือ CPU สามารถอ่านข้อมูลของบัฟเฟอร์ข้อมูลบางอย่างได้โดยไม่ต้องกังวลว่าข้อมูลบัฟเฟอร์จะถูกเขียนใหม่และสูญหายทันที
4 บทสรุป
ในกระบวนการพัฒนาโปรโตคอลเลเยอร์แอปพลิเคชัน CAN จะมีการยืมกลไกบางอย่างของข้อกำหนด DeviceNet เช่น รองรับการส่งข้อมูลหลายรูปแบบ (ผ่านแบบเลือก การโพล การเปลี่ยนแปลงสถานะ ฯลฯ) อย่างไรก็ตาม เนื่องจากข้อจำกัดของปัจจัยหลายประการ เช่น วงจรการพัฒนา ฟังก์ชันการวินิจฉัยของอุปกรณ์ตลอดจนความสามารถในการทำงานร่วมกันกับผลิตภัณฑ์ที่คล้ายคลึงกัน จึงจำเป็นต้องได้รับการปรับปรุงและขยาย ระบบการสื่อสารซ้ำซ้อน CAN แบบคู่ทำงานได้อย่างเสถียรในขั้นตอนการทดลอง การส่งข้อมูลมีความน่าเชื่อถือ การสลับความซ้ำซ้อนสามารถทำได้ และความน่าเชื่อถือของการจัดการบัสนั้นดี สามารถนำไปใช้กับระบบควบคุมหัวรถจักรหรือสถานที่ควบคุมอุตสาหกรรมอื่น ๆ ที่ต้องการความน่าเชื่อถือสูง




