ระบบสื่อสารยานยนต์

ข้อมูลหายบนบัสหรือหายระหว่างบันทึก

ติดตามทางเดินข้อมูลจากภาครับถึงไฟล์ แยกบัฟเฟอร์ล้น ตัวกรอง และเวลาขาดช่วง พร้อมตัวอย่างคำนวณคิวสะสมที่ตรวจสอบได้

ช่องว่างในไฟล์ CAN อาจเกิดจากต้นทางหยุดส่ง แต่ก็อาจเกิดหลังอินเทอร์เฟซรับข้อมูลแล้ว เช่นบัฟเฟอร์เต็ม โปรแกรมอ่านไม่ทัน หรือไฟล์ส่งออกกรองรายการทิ้ง หากไม่ตรวจทางเดินข้อมูล เราอาจกล่าวหากล่องรถจากข้อจำกัดคอมพิวเตอร์ของตน บทความนี้วางวิธีแยกการสูญหายในบัสออกจากการสูญหายระหว่างเก็บ โดยรักษาข้อมูลดิบและไม่เติมช่องว่างให้ดูสมบูรณ์

ข้อมูลผ่านหลายจุดก่อนเป็นไฟล์

เฟรมที่อินเทอร์เฟซรับต้องผ่านพื้นที่เก็บในฮาร์ดแวร์ ไดรเวอร์ และโปรแกรมก่อนถูกเขียนเป็นไฟล์ แต่ละจุดอาจมีคิวและสถานะการล้นต่างกัน เอกสาร CANlib มีธงเกี่ยวกับ hardware และ software overrun ซึ่งช่วยชี้ว่าทางบันทึกมีปัญหา แต่การแปลแต่ละธงต้องอ่านข้อกำหนดของเครื่องมือ ไม่สมมติว่าธงทุกชนิดแยกต้นเหตุได้ละเอียดเหมือนกันในฮาร์ดแวร์ทุกแบบ

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

ภาพอธิบาย 1เฟรมเดินทางผ่านหลายคิวก่อนเป็นไฟล์
  1. ภาครับและฮาร์ดแวร์

    รับเฟรมจากคู่สายและพักในพื้นที่เก็บที่มีขนาดจำกัด

  2. ไดรเวอร์และโปรแกรม

    ข้อมูลต้องถูกอ่านออกให้ทัน พร้อมตรวจสถานะล้นที่เครื่องมือเปิดเผย

  3. ตัวกรองและไฟล์

    แยกจำนวนก่อนและหลังกรอง การไม่มีรายการในไฟล์ไม่พิสูจน์ว่าต้นทางไม่ส่ง

รับบนบัสได้ถูกต้องยังไม่รับประกันว่าโปรแกรมเก็บครบ

ตัวอย่างสมมติของคิวที่โตต่อเนื่อง

สมมติข้อมูลเข้าคิวโปรแกรมด้วยอัตราเฉลี่ย 1200 รายการต่อวินาที แต่โปรแกรมนำออกไปบันทึกได้ 1000 รายการต่อวินาที คิวจะโตเฉลี่ย 200 รายการต่อวินาที หากพื้นที่ว่างเริ่มต้นมี 600 รายการและอัตราคงที่ตามแบบจำลอง จะเต็มในประมาณ 600 หาร 200 เท่ากับ 3 วินาที หลังจากนั้นพฤติกรรมทิ้งหรือหยุดขึ้นกับการออกแบบโปรแกรม

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

นำไปใช้ตรวจว่าช่องว่างเกิดตรงไหน

  1. ตรวจสถานะล้นหรือข้อมูลหายที่ฮาร์ดแวร์และไดรเวอร์เปิดเผย พร้อมเวลาเกิดเหตุ
  2. เปรียบเทียบจำนวนรับ จำนวนผ่านตัวกรอง และจำนวนเขียนไฟล์โดยใช้ช่วงเวลาเดียวกัน
  3. ตรวจการหยุดบันทึก การเริ่มไฟล์ใหม่ และการเชื่อมต่อคอมพิวเตอร์ ไม่ถือว่าไฟล์ต่อกันโดยไม่มีช่องว่างเสมอ
  4. ใช้ข้อมูลอ้างอิงหรือการบันทึกอีกทางที่ได้รับอนุญาตหากมี เพื่อแยกต้นทางหายจากโปรแกรมเก็บไม่ทัน
  5. รักษาเครื่องหมายข้อมูลขาดและบันทึกข้อจำกัด ไม่สร้างเฟรมหรือค่าเซ็นเซอร์ขึ้นมาเติมแทน

หากตัวนับลำดับข้อมูลมีเอกสารรองรับ มันอาจช่วยเห็นรายการที่ข้ามไป แต่ต้องรู้การวนกลับ การเริ่มใหม่ และเงื่อนไขการเพิ่มก่อนใช้ หากเดาว่าไบต์หนึ่งเป็นตัวนับจากการเห็นเพิ่มเรื่อย ๆ อาจนำข้อมูลชนิดอื่นมานับผิดได้ การมีช่องว่างในเวลาหรือเลขลำดับจึงเป็นเบาะแสที่ต้องเชื่อมกับสถานะบันทึก ไม่ใช่หลักฐานต้นทางหยุดส่งเพียงลำพัง

ภาพอธิบาย 2คิวเต็มในสามวินาทีตามแบบจำลอง
  1. เข้า 1200 ออก 1000

    คิวโตเฉลี่ย 1200 − 1000 = 200 รายการต่อวินาที

  2. ว่าง 600 รายการ

    600 / 200 = 3 วินาทีถึงเต็ม หากอัตราคงที่ตามตัวอย่าง

  3. เพิ่มเป็น 1200

    1200 / 200 = 6 วินาที แต่คิวยังโตต่อเนื่อง

  4. ตรวจนานพอ

    ทดสอบเพียงหนึ่งวินาทีไม่ยืนยันว่าแก้แล้ว ต้องดูอัตรารับเขียนและแนวโน้มคิว

เพิ่มบัฟเฟอร์ช่วยยืดเวลา แต่ไม่แก้อัตราเข้าที่สูงกว่าทางออกต่อเนื่อง

ข้อผิดพลาดของการกรองเพื่อให้ไฟล์ดูครบ

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

การเห็นธง overrun เป็นศูนย์ไม่ได้รับประกันว่าทางเดินข้อมูลครบทุกขั้น หากโปรแกรมไม่อ่านธง ไฟล์ส่งออกทิ้งข้อมูลโดยเงียบ หรือฮาร์ดแวร์ไม่ได้รายงานการสูญหายชนิดนั้น ยังต้องมีการตรวจจำนวนและโครงสร้างไฟล์ การรับรองความครบจึงควรบอกว่าตรวจด้วยกลไกใด ไม่ใช้การไม่มีคำเตือนบนจอแทนหลักฐานตลอดเส้นทาง

ตรวจสอบผลหลังปรับทางบันทึก

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

ผลที่ผ่านควรแสดงว่ารับและเขียนได้ครบตามขอบเขตที่ตั้งไว้ ไม่มีสถานะล้นที่เครื่องมือรองรับ และไม่มีช่องว่างจากการเริ่มหยุดที่ไม่ได้อธิบาย หากแก้ได้เพียงเพิ่มเวลาทนช่วงกระชาก ให้รายงานเช่นนั้น ไม่อ้างว่ารองรับอัตราต่อเนื่องสูงกว่าเดิม การแยกความสามารถระยะสั้นกับระยะยาวช่วยให้เลือกแผนบันทึกครั้งถัดไปโดยไม่สูญหลักฐานซ้ำ

แหล่งอ้างอิงและอ่านเพิ่มเติม

เรียบเรียงคำอธิบายและตัวอย่างขึ้นใหม่จากหลักการในแหล่งข้อมูลต่อไปนี้

  1. canstat.h File Reference — Overrun status flags · Kvaser
  2. Send and Receive · Kvaser
  3. Bus Metric Monitoring · Beijer Electronics

เล่มที่ลงลึกเรื่องนี้

อ่านต่อเรื่องใกล้กัน

ถามเรื่องหนังสือ ตะกร้า