การแทรกบิตใน Classical CAN
ตัวรับแยกข้อมูลเพย์โหลดออกจากบิตแทรกอย่างไร
ในช่วงที่ใช้กฎการแทรกบิต ตัวส่งจะแทรกบิตที่มีค่าตรงข้ามหลังจากส่งบิตค่าเดียวกันห้าบิตติดต่อกันบนสาย ตัวรับจะตรวจสอบและนำบิตนั้นออกก่อนตีความฟิลด์ ให้เริ่มจากการหาขอบเขตเฟรม แล้วเปรียบเทียบสัญญาณที่จับได้บนสายกับเฟรมที่ถอดรหัสแล้ว
แทรกบิต
ตัวส่งจะแทรกบิตที่มีค่าตรงข้ามหลังจากส่งบิตค่าเดียวกันห้าบิตติดต่อกันบนสาย
หาขอบเขต
ตัวรับหยุดใช้กฎการแทรกบิตแบบไดนามิกหลังลำดับ CRC
วัดสัญญาณที่ปลายทั้งสองด้าน
เปรียบเทียบเฟรมทดสอบเดียวกันบนสายทองแดงทั้งสองช่วง
ตรวจว่าเป็น Classical CAN และระบุชนิดเฟรมกับอัตราบิตที่กำหนด
ตรวจว่าลำดับบิตค่าเดียวกันอยู่ในช่วงที่ใช้กฎการแทรกบิตหรือไม่
เทียบจังหวะการเปลี่ยนสถานะในสัญญาณดิบกับเฟรมที่เครื่องวิเคราะห์แสดงและข้อผิดพลาดที่ตัวควบคุมรายงาน
รายการตรวจสอบสัญญาณที่จับได้ — กดเพื่อขยาย
| รายการตรวจสอบ | สิ่งที่ต้องยืนยัน | วิธีตรวจสอบ |
|---|---|---|
| บิตบนสาย | ลำดับบิตที่มีสถานะเดียวกัน | เริ่มนับจากจุดเริ่มต้นของช่วงที่ใช้กฎ |
| ขอบเขตฟิลด์ | จุดสิ้นสุดลำดับ CRC | ระบุตำแหน่งบิตคั่น, ACK และ EOF |
| การขยายระยะผ่านใยแก้วนำแสง | ตำแหน่งที่วัดสัญญาณ | จัดสัญญาณที่จับได้จากสายทองแดงทั้งสองช่วงให้ตรงกัน |
เมื่อเขียนข้อมูล CAN ลงในตัวควบคุม คุณอาจเห็นจำนวนบิตบนออสซิลโลสโคปมากกว่าผลรวมจำนวนบิตในฟิลด์เชิงตรรกะของเฟรม บิตที่เพิ่มมานี้เกิดจากการแทรกบิต ในช่วงของเฟรม Classical CAN ที่ใช้กฎนี้ ตัวส่งจะแทรกบิตที่มีค่าตรงข้ามหลังบิตค่าเดียวกันห้าบิตติดต่อกัน ตัวรับใช้กฎเดียวกันเพื่อระบุและนำบิตนั้นออก แล้วจึงตีความฟิลด์เดิม กระบวนการนี้ช่วยให้ตัวรับปรับจังหวะบิตให้ถูกต้อง และอธิบายว่าทำไมข้อความที่ยาวเท่ากันจึงอาจใช้เวลาครองบัสต่างกัน
สัญญาณที่คงระดับยังคงส่งบิตได้
บนบัส CAN ความเร็วสูงที่ใช้สายทองแดง ทรานซีฟเวอร์จะแปลงบิตจากตัวควบคุมเป็นสถานะสัญญาณดิฟเฟอเรนเชียลระหว่าง CAN_H กับ CAN_L บิตโดมิแนนต์แทนค่าตรรกะ 0 ส่วนบิตรีเซสซีฟแทนค่าตรรกะ 1 เมื่อโหนดหนึ่งขับบัสให้เป็นสถานะโดมิแนนต์ สถานะนี้สามารถทับสถานะรีเซสซีฟที่โหนดอื่นส่งได้ แม้สถานะทางไฟฟ้าจะคงที่ ตัวควบคุมฝั่งรับก็ยังตัดสินค่าบิตที่จุดสุ่มตัวอย่างในแต่ละช่วงเวลาบิต ช่วงสัญญาณที่คงระดับโดมิแนนต์อาจมีบิตศูนย์หลายบิต โดยแต่ละบิตใช้เวลาหนึ่งช่วงเวลาบิต
แต่ละโหนดมีออสซิลเลเตอร์ของตัวเอง แม้จะตั้งค่าช่วงเวลาบิตตามพิกัดให้เท่ากันได้ แต่ในทางปฏิบัติยังมีความคลาดเคลื่อนเล็กน้อย ตัวรับปรับจังหวะให้ตรงกันที่จุดเริ่มเฟรม และใช้ขอบสัญญาณที่เข้าเงื่อนไขเพื่อแก้ความคลาดเคลื่อนของเฟสภายในเฟรม หากไม่มีขอบสัญญาณที่เหมาะสมเป็นเวลานาน จุดสุ่มตัวอย่างของตัวรับจะยิ่งคลาดจากขอบเขตบิตของตัวส่ง การแทรกบิตทำให้สัญญาณเปลี่ยนสถานะภายในลำดับบิตค่าเดียวกันที่ยาว จึงเปิดโอกาสให้ปรับจังหวะให้ตรงกันได้ การสุ่มตัวอย่างที่ถูกต้องยังขึ้นอยู่กับความหน่วงในการแพร่สัญญาณ การตั้งค่าจุดสุ่มตัวอย่าง และคุณภาพสัญญาณ

ตัวส่งนับบิตที่ส่งออกไปบนบัสแล้ว
พิจารณาลำดับตัวอย่างแบบง่ายในช่วงที่ใช้การแทรกบิตแบบไดนามิก โดยเริ่มนับบิตต่อเนื่องจากศูนย์ ลำดับเชิงตรรกะประกอบด้วยบิตศูนย์ห้าบิตตามด้วยบิตหนึ่ง หลังส่งบิตศูนย์ตัวที่ห้า ตัวส่งจะแทรกบิตหนึ่งแล้วจึงส่งบิตหนึ่งเดิม บนบัสจึงมีบิตศูนย์ห้าบิต บิตแทรกค่า 1 และบิตหนึ่งเดิม การแทรกอาจเกิดขึ้นภายในไบต์หรือทันทีหลังจบฟิลด์ ตัวควบคุมติดตามสตรีมบิตอย่างต่อเนื่องและนับต่อเมื่อข้ามขอบเขตไบต์
บิตแทรกเป็นส่วนหนึ่งของลำดับที่ส่งจริงและเป็นจุดเริ่มต้นของการนับลำดับใหม่ สมมติว่าลำดับเดิมมีบิตหนึ่งสี่บิตตามหลังบิตศูนย์ห้าบิต เมื่อรวมบิตหนึ่งสี่บิตนั้นกับบิตแทรกค่า 1 จะได้บิตหนึ่งห้าบิตติดต่อกัน ตัวส่งจึงแทรกบิตศูนย์ตามมา กฎนี้จึงไม่ใช่การแทรกหนึ่งบิตต่อบิตเดิมทุกห้าบิต ฟิลด์ที่อยู่ติดกันและบิตที่แทรกไว้ก่อนหน้ามีผลต่อตำแหน่งที่จะแทรกบิตถัดไป
หลังบิตค่าเดียวกันห้าบิต ตัวรับคาดว่าบิตถัดไปจะมีสถานะตรงข้าม เมื่อสุ่มตัวอย่างได้ค่าตามที่คาด ตัวรับจะระบุว่าบิตนั้นเป็นบิตแทรกและอัปเดตสถานะการนับลำดับบิตที่รับ แต่จะไม่ส่งบิตนั้นไปใช้ตีความฟิลด์ ส่วนบิตหนึ่งเดิมที่ตามมาจะถูกเก็บไว้ บิตหนึ่งทั้งสองอาจปรากฏเป็นช่วงสัญญาณคงระดับช่วงเดียวบนบัส ตัวรับแยกบทบาทของแต่ละบิตได้จากตำแหน่งและลำดับบิตที่รับมาก่อนหน้า

การนับบิตค่าเดียวกันสิ้นสุดที่ใด
การแทรกบิตแบบไดนามิกยังใช้กับฟิลด์ที่อยู่ในขอบเขตของกฎในเฟรมร้องขอข้อมูลของ Classical CAN ด้วย ค่า DLC ของเฟรมนี้อาจระบุความยาวข้อมูลที่ร้องขอ แต่ตัวเฟรมไม่มีฟิลด์ข้อมูล เมื่อตรวจสัญญาณที่จับได้ด้วยตนเอง ให้ระบุชนิดเฟรมก่อนหาตำแหน่งลำดับ CRC หากตีความ DLC ของเฟรมร้องขอข้อมูลว่าเป็นจำนวนไบต์ข้อมูลที่ตามมา ตำแหน่งขอบเขตทั้งหมดหลังจากนั้นจะคลาดเคลื่อน
สำหรับเฟรมข้อมูล Classical CAN การแทรกบิตแบบไดนามิกเริ่มที่จุดเริ่มเฟรม ครอบคลุมฟิลด์การตัดสินสิทธิ์ ฟิลด์ควบคุม และฟิลด์ข้อมูล ไปจนถึงจุดสิ้นสุดลำดับ CRC ตัวรับติดตามความยาวของแต่ละฟิลด์ขณะประมวลผลช่วงนี้ บิตแทรกทำให้เฟรมใช้เวลาบนบัสเพิ่มขึ้น ส่วนรหัสความยาวข้อมูลหรือ DLC ยังคงมีความหมายเดิม การจัดวางฟิลด์เชิงตรรกะจึงอาจไม่ตรงกับการแบ่งช่วงเวลาของสัญญาณที่เห็นบนออสซิลโลสโคป
หลังลำดับ CRC บิตคั่น CRC ฟิลด์ ACK และส่วนสิ้นสุดเฟรมต่างใช้กฎของตนเอง การนับตามกฎการแทรกบิตแบบไดนามิกในช่วงก่อนหน้าไม่ใช้กับช่วงนี้แล้ว ตัวอย่างเช่น ส่วนสิ้นสุดเฟรมของ Classical CAN มีบิตรีเซสซีฟเจ็ดบิตติดต่อกัน ลำดับนี้เพียงอย่างเดียวไม่บ่งชี้ว่ามีข้อผิดพลาดในการแทรกบิต ให้ระบุขอบเขตเฟรมและแฟล็กข้อผิดพลาดที่พบก่อนตัดสินว่าช่วงสัญญาณคงระดับอยู่ในส่วนใด
ตัวส่งคำนวณลำดับ CRC ของ Classical CAN จากบิตเชิงตรรกะที่ยังไม่แทรกบิต ตั้งแต่จุดเริ่มเฟรมจนถึงจุดสิ้นสุดฟิลด์ข้อมูล จากนั้นจึงรวมลำดับ CRC ไว้ในช่วงที่ใช้กฎการแทรกบิตขณะส่ง ตัวรับนำบิตแทรกแบบไดนามิกออกแล้วตรวจสอบ CRC ตามกฎที่เกี่ยวข้อง ดังนั้นบิตส่วนเกินจากการเข้ารหัสและการตรวจสอบความถูกต้องของฟิลด์จึงทำหน้าที่ต่างกัน CAN FD ใช้กฎต่างออกไปในฟิลด์ CRC ให้ตรวจสอบรูปแบบเฟรมและการตั้งค่าตัวควบคุมกับข้อกำหนดที่ใช้
ข้อมูลที่ยาวเท่ากันอาจใช้เวลาบนบัสต่างกัน
แยกเวลาที่ใช้ส่งเฟรมออกจากเวลาที่ข้อความรอก่อนส่ง การแทรกบิตมีผลต่อเวลาที่ใช้ส่งตัวเฟรมบนสาย ส่วนความหน่วงจากการตัดสินสิทธิ์ขึ้นอยู่กับสิ่งที่โหนดอื่นกำลังส่งในขณะนั้น สำหรับข้อความที่ส่งเป็นคาบ ให้บันทึกช่วงเวลาระหว่างบิตเริ่มเฟรมสองเฟรมที่ต่อเนื่องกัน แยกจากระยะเวลาตั้งแต่ต้นจนจบของเฟรมเดียว การเปลี่ยนแปลงของค่าที่วัดได้ทั้งสองแบบบ่งชี้สาเหตุที่ต่างกัน
พิจารณาเฟรมข้อมูล Classical CAN สองเฟรมที่ส่งสำเร็จและมีจำนวนไบต์ข้อมูลเท่ากัน ตัวระบุหรือรูปแบบข้อมูลของทั้งสองเฟรมอาจต่างกัน เฟรมหนึ่งอาจมีลำดับบิตค่าเดียวกันที่ยาวหลายช่วง ขณะที่อีกเฟรมมีบิตศูนย์และบิตหนึ่งสลับกันบ่อย เฟรมแรกอาจต้องใช้บิตแทรกมากกว่า และค่าบิตในลำดับ CRC ก็มีผลต่อจำนวนบิตแทรกเช่นกัน ที่อัตราบิตตามพิกัดเท่ากัน บิตแทรกแต่ละบิตจะเพิ่มเวลาหนึ่งช่วงเวลาบิต ในการประเมินภาระของบัส ให้ใช้ความยาวเฟรมบนสายที่วัดได้หรือค่าประมาณแบบเผื่อไว้
เครื่องวิเคราะห์โพรโทคอลมักแสดงตัวระบุ DLC และข้อมูลที่กู้คืนในมุมมองผลถอดรหัส เมื่อตรวจสอบเวลาครองบัส ให้กำหนดจุดเริ่มและจุดสิ้นสุดของการวัด เวลาที่ใช้ส่งเฟรม เวลารอตั้งแต่เข้าคิวจนได้สิทธิ์ส่ง และเวลาที่ใช้ส่งซ้ำหลังเกิดข้อผิดพลาดเป็นคนละค่า การบันทึกขอบเขตการวัดช่วยแยกเวลาที่เพิ่มขึ้นจากความยาวเฟรมออกจากความหน่วงที่เกิดจากการแย่งสิทธิ์ใช้บัส
ระบุช่วงที่เกิดข้อผิดพลาดในการแทรกบิต
ในฟิลด์ที่ใช้การแทรกบิตแบบไดนามิก ตัวรับจะรายงานข้อผิดพลาดในการแทรกบิตหากสุ่มตัวอย่างได้บิตค่าเดิมเป็นบิตที่หก ณ ตำแหน่งที่ควรเป็นบิตค่าตรงข้าม ช่วงสัญญาณที่คงระดับเป็นเวลานานอาจเกิดจากความผิดปกติที่ฝั่งส่ง การตั้งค่าจุดสุ่มตัวอย่างหรืออัตราบิตที่ฝั่งตรวจวัด หรือความเพี้ยนของสัญญาณ หากโหนดที่อยู่ในสถานะ error-active ส่งแฟล็กข้อผิดพลาดแบบแอกทีฟ โหนดอื่นอาจเห็นลำดับบิตโดมิแนนต์ต่อเนื่องยาวจนผิดกฎในเวลาต่อมา ดังนั้นข้อผิดพลาดในการแทรกบิตที่เห็นในบันทึกหนึ่งอาจเป็นผลจากข้อผิดพลาดที่เกิดขึ้นก่อนหน้า
บันทึกชนิดของข้อผิดพลาด เหตุการณ์ที่เกิดก่อนสุด และรูปคลื่นที่มีให้ตรวจสอบ ข้อผิดพลาด CRC บ่งชี้ว่าผลคำนวณของตัวรับไม่ตรงกับลำดับ CRC ที่ได้รับ ข้อผิดพลาดด้านรูปแบบเกี่ยวข้องกับฟิลด์ที่มีรูปแบบกำหนดไว้ ส่วนข้อผิดพลาด ACK หมายความว่าตัวส่งไม่พบการตอบรับแบบโดมิแนนต์ที่คาดไว้ในช่อง ACK ข้อผิดพลาดเหล่านี้อาจเกิดตามกันในเหตุการณ์เดียว การเรียงเหตุการณ์ตามเวลาและตรวจสอบฟิลด์ที่ได้รับผลกระทบช่วยจำกัดขอบเขตการสืบหาสาเหตุ

ตรวจสอบสายทองแดงแต่ละช่วงและบทบาทของแต่ละอุปกรณ์เมื่อขยายระยะ CAN ผ่านใยแก้วนำแสง
เอกสารผลิตภัณฑ์ของ FCTELE สำหรับโมเด็มใยแก้วนำแสง CAN แบบแปดช่องติดราง DIN ระบุการทวนสัญญาณจาก CAN ไปยังใยแก้วนำแสงและการทำงานแบบจุดต่อจุด ในการทดสอบทางวิศวกรรม ให้แยกสายทองแดง CAN แต่ละช่วง ใยแก้วนำแสง และอุปกรณ์ปลายทางเป็นจุดสังเกตต่างหาก ตรวจสอบรูปแบบเฟรม อัตราบิต การเข้าปลายสาย และการเดินสายเทียบกับเอกสารของอุปกรณ์ที่ใช้จริง จากนั้นใช้ข้อความที่ทราบล่วงหน้าในชุดทดสอบที่แยกออกมาเพื่อตรวจสอบการรับที่ปลายทั้งสองด้าน ภาพประกอบระบุจุดสังเกตไว้ ให้ดูเอกสารของรุ่นที่เกี่ยวข้องเพื่อทราบว่าอุปกรณ์ส่งต่อสัญญาณผ่านใยแก้วนำแสงอย่างไร
หากสัญญาณและเฟรมที่ถอดรหัสได้บนสายทองแดงช่วงฝั่งส่งยังคงเสถียร แต่พบข้อผิดพลาดเป็นครั้งคราวใกล้ตัวรับ ให้เปรียบเทียบสถานะและเวลาที่บันทึกไว้ที่ปลายอีกด้าน ตรวจสอบว่าข้อขัดข้องเกิดตามสาย อุปกรณ์ปลายทาง หรือภาระเฉพาะอย่างใดอย่างหนึ่งหรือไม่ บันทึกคาบการส่งข้อความและเงื่อนไขอื่น ๆ ให้ตรวจสอบย้อนหลังได้ แล้วปรับทีละตัวแปร บันทึกฉบับสุดท้ายควรระบุว่ากู้คืนฟิลด์ได้ถูกต้องหรือไม่ ข้อผิดพลาดเกิดซ้ำหรือไม่ และการรับส่งข้อมูลของแอปพลิเคชันจริงกลับมาเป็นปกติหลังเปลี่ยนเส้นทางหรือไม่ วิธีนี้ช่วยแยกเวลาที่เพิ่มขึ้นตามปกติจากการแทรกบิตออกจากข้อขัดข้องในการส่งจริง
แหล่งข้อมูลและขอบเขต
Bosch: การตรวจจับข้อผิดพลาดใน CAN และ CAN FD · Microchip: การแทรกบิตและรูปแบบเฟรม CAN · อุปกรณ์ใยแก้วนำแสง CAN แบบแปดช่องติดราง DIN ของ FCTEL (ภาษาจีน)
แปลจากบทความทางเทคนิคภาษาจีน: อ่านบทความต้นฉบับภาษาจีน.
คำถามที่พบบ่อย
เหตุใดจึงต้องแทรกบิตหลังบิตค่าเดียวกันห้าบิต?
บิตค่าตรงข้ามทำให้สัญญาณบนสายเปลี่ยนสถานะ ขอบสัญญาณที่เข้าเงื่อนไขการซิงโครไนซ์สามารถใช้ปรับจังหวะบิตได้ จึงจำกัดระยะเวลาของช่วงที่สัญญาณไม่เปลี่ยนสถานะ
บิตรีเซสซีฟเจ็ดบิตใน EOF ทำให้เกิดข้อผิดพลาดในการแทรกบิตหรือไม่?
EOF ของ Classical CAN มีรูปแบบตายตัว บิตรีเซสซีฟทั้งเจ็ดบิตอยู่นอกช่วงที่ใช้กฎการแทรกบิตแบบไดนามิก
จะติดตามข้อผิดพลาดในการแทรกบิตที่เกิดบนลิงก์ใยแก้วนำแสงได้อย่างไร?
จับสัญญาณของเฟรมทดสอบเดียวกันบนสายทองแดงทั้งสองช่วง ตรวจสอบอัตราบิต การสุ่มตัวอย่าง และการเข้าปลายสาย เทียบเวลาที่ตัวควบคุมบันทึกข้อผิดพลาด และตรวจสอบวิธีที่อุปกรณ์ใยแก้วนำแสงส่งต่อข้อมูล
อ่านเพิ่มเติม
การขยายระยะบัส CAN ด้วยใยแก้วนำแสง · อินเทอร์เฟซทางไฟฟ้าและการตัดสินสิทธิ์บนบัส CAN


