ช่องว่างในไฟล์ CAN อาจเกิดจากต้นทางหยุดส่ง แต่ก็อาจเกิดหลังอินเทอร์เฟซรับข้อมูลแล้ว เช่นบัฟเฟอร์เต็ม โปรแกรมอ่านไม่ทัน หรือไฟล์ส่งออกกรองรายการทิ้ง หากไม่ตรวจทางเดินข้อมูล เราอาจกล่าวหากล่องรถจากข้อจำกัดคอมพิวเตอร์ของตน บทความนี้วางวิธีแยกการสูญหายในบัสออกจากการสูญหายระหว่างเก็บ โดยรักษาข้อมูลดิบและไม่เติมช่องว่างให้ดูสมบูรณ์
ข้อมูลผ่านหลายจุดก่อนเป็นไฟล์
เฟรมที่อินเทอร์เฟซรับต้องผ่านพื้นที่เก็บในฮาร์ดแวร์ ไดรเวอร์ และโปรแกรมก่อนถูกเขียนเป็นไฟล์ แต่ละจุดอาจมีคิวและสถานะการล้นต่างกัน เอกสาร CANlib มีธงเกี่ยวกับ hardware และ software overrun ซึ่งช่วยชี้ว่าทางบันทึกมีปัญหา แต่การแปลแต่ละธงต้องอ่านข้อกำหนดของเครื่องมือ ไม่สมมติว่าธงทุกชนิดแยกต้นเหตุได้ละเอียดเหมือนกันในฮาร์ดแวร์ทุกแบบ
การรับเฟรมถูกต้องบนบัสกับการเก็บเฟรมครบลงดิสก์จึงเป็นคนละเงื่อนไข แม้ไม่มี error frame บนสาย โปรแกรมก็อาจทิ้งรายการหลังรับได้ ส่วนจำนวนที่หน้าจอแสดงอาจเป็นรายการผ่านตัวกรอง ไม่ใช่จำนวนที่ฮาร์ดแวร์เห็นทั้งหมด การตรวจต้องรู้ว่าตัวนับแต่ละช่องนับที่ขั้นใดและเริ่มใหม่เมื่อใด ไม่เทียบจำนวนที่นิยามต่างกันแล้วสรุปว่าสูญหาย
- ภาครับและฮาร์ดแวร์
รับเฟรมจากคู่สายและพักในพื้นที่เก็บที่มีขนาดจำกัด
- ไดรเวอร์และโปรแกรม
ข้อมูลต้องถูกอ่านออกให้ทัน พร้อมตรวจสถานะล้นที่เครื่องมือเปิดเผย
- ตัวกรองและไฟล์
แยกจำนวนก่อนและหลังกรอง การไม่มีรายการในไฟล์ไม่พิสูจน์ว่าต้นทางไม่ส่ง
รับบนบัสได้ถูกต้องยังไม่รับประกันว่าโปรแกรมเก็บครบ
ตัวอย่างสมมติของคิวที่โตต่อเนื่อง
สมมติข้อมูลเข้าคิวโปรแกรมด้วยอัตราเฉลี่ย 1200 รายการต่อวินาที แต่โปรแกรมนำออกไปบันทึกได้ 1000 รายการต่อวินาที คิวจะโตเฉลี่ย 200 รายการต่อวินาที หากพื้นที่ว่างเริ่มต้นมี 600 รายการและอัตราคงที่ตามแบบจำลอง จะเต็มในประมาณ 600 หาร 200 เท่ากับ 3 วินาที หลังจากนั้นพฤติกรรมทิ้งหรือหยุดขึ้นกับการออกแบบโปรแกรม
การเพิ่มพื้นที่ว่างเป็น 1200 รายการในแบบจำลองเดียวกันทำให้เวลาถึงเต็มเป็น 6 วินาที แต่ไม่ได้แก้อัตราเข้าเร็วกว่าทางออกระยะยาว ตัวอย่างนี้แสดงว่าบัฟเฟอร์ใหญ่ช่วยรับช่วงกระชากได้ แต่ไม่แก้การประมวลผลที่ช้าต่อเนื่อง ตัวเลขเป็นรายการต่อวินาทีของชุดฝึก ไม่ใช่ความสามารถของผลิตภัณฑ์ที่อ้างอิงหรือขีดจำกัดบัสรถ
นำไปใช้ตรวจว่าช่องว่างเกิดตรงไหน
- ตรวจสถานะล้นหรือข้อมูลหายที่ฮาร์ดแวร์และไดรเวอร์เปิดเผย พร้อมเวลาเกิดเหตุ
- เปรียบเทียบจำนวนรับ จำนวนผ่านตัวกรอง และจำนวนเขียนไฟล์โดยใช้ช่วงเวลาเดียวกัน
- ตรวจการหยุดบันทึก การเริ่มไฟล์ใหม่ และการเชื่อมต่อคอมพิวเตอร์ ไม่ถือว่าไฟล์ต่อกันโดยไม่มีช่องว่างเสมอ
- ใช้ข้อมูลอ้างอิงหรือการบันทึกอีกทางที่ได้รับอนุญาตหากมี เพื่อแยกต้นทางหายจากโปรแกรมเก็บไม่ทัน
- รักษาเครื่องหมายข้อมูลขาดและบันทึกข้อจำกัด ไม่สร้างเฟรมหรือค่าเซ็นเซอร์ขึ้นมาเติมแทน
หากตัวนับลำดับข้อมูลมีเอกสารรองรับ มันอาจช่วยเห็นรายการที่ข้ามไป แต่ต้องรู้การวนกลับ การเริ่มใหม่ และเงื่อนไขการเพิ่มก่อนใช้ หากเดาว่าไบต์หนึ่งเป็นตัวนับจากการเห็นเพิ่มเรื่อย ๆ อาจนำข้อมูลชนิดอื่นมานับผิดได้ การมีช่องว่างในเวลาหรือเลขลำดับจึงเป็นเบาะแสที่ต้องเชื่อมกับสถานะบันทึก ไม่ใช่หลักฐานต้นทางหยุดส่งเพียงลำพัง
- เข้า 1200 ออก 1000
คิวโตเฉลี่ย 1200 − 1000 = 200 รายการต่อวินาที
- ว่าง 600 รายการ
600 / 200 = 3 วินาทีถึงเต็ม หากอัตราคงที่ตามตัวอย่าง
- เพิ่มเป็น 1200
1200 / 200 = 6 วินาที แต่คิวยังโตต่อเนื่อง
- ตรวจนานพอ
ทดสอบเพียงหนึ่งวินาทีไม่ยืนยันว่าแก้แล้ว ต้องดูอัตรารับเขียนและแนวโน้มคิว
เพิ่มบัฟเฟอร์ช่วยยืดเวลา แต่ไม่แก้อัตราเข้าที่สูงกว่าทางออกต่อเนื่อง
ข้อผิดพลาดของการกรองเพื่อให้ไฟล์ดูครบ
การลดจำนวนข้อความที่ต้องแสดงอาจช่วยโปรแกรมทำงานทัน แต่ต้องแยกตัวกรองแสดงผลออกจากตัวกรองเก็บข้อมูล หากกรองทิ้งตั้งแต่ก่อนเขียนไฟล์ เราจะย้อนดูข้อความที่ถูกตัดไม่ได้ และอาจสูญบริบทของเหตุผิดพลาด การเลือกกรองต้องตามคำถามงานและระบุรายการที่ไม่เก็บ ไม่กล่าวว่าไฟล์ครบทั้งบัสเมื่อเก็บเพียงบางส่วน
การเห็นธง overrun เป็นศูนย์ไม่ได้รับประกันว่าทางเดินข้อมูลครบทุกขั้น หากโปรแกรมไม่อ่านธง ไฟล์ส่งออกทิ้งข้อมูลโดยเงียบ หรือฮาร์ดแวร์ไม่ได้รายงานการสูญหายชนิดนั้น ยังต้องมีการตรวจจำนวนและโครงสร้างไฟล์ การรับรองความครบจึงควรบอกว่าตรวจด้วยกลไกใด ไม่ใช้การไม่มีคำเตือนบนจอแทนหลักฐานตลอดเส้นทาง
ตรวจสอบผลหลังปรับทางบันทึก
สมมติแก้โปรแกรมให้บันทึกได้มากกว่าอัตราเข้าในชุดฝึก ควรทดสอบนานกว่าช่วง 3 วินาทีที่แบบจำลองเดิมคิวเต็ม พร้อมดูแนวโน้มคิวและจำนวนรายการ หากทดสอบเพียงหนึ่งวินาทีแล้วไม่ล้น ยังแยกไม่ได้ว่าปัญหาหายหรือเพียงยังไม่ถึงเวลาเต็ม การเลือกระยะทดสอบจึงควรสัมพันธ์กับการคำนวณและรูปแบบข้อมูลที่ทำให้เกิดเหตุ
ผลที่ผ่านควรแสดงว่ารับและเขียนได้ครบตามขอบเขตที่ตั้งไว้ ไม่มีสถานะล้นที่เครื่องมือรองรับ และไม่มีช่องว่างจากการเริ่มหยุดที่ไม่ได้อธิบาย หากแก้ได้เพียงเพิ่มเวลาทนช่วงกระชาก ให้รายงานเช่นนั้น ไม่อ้างว่ารองรับอัตราต่อเนื่องสูงกว่าเดิม การแยกความสามารถระยะสั้นกับระยะยาวช่วยให้เลือกแผนบันทึกครั้งถัดไปโดยไม่สูญหลักฐานซ้ำ


