เฟรม 2.0a (มาตรฐาน) ที่เล็กที่สุดที่คุณสามารถสร้างได้คือ 47 บิต ... เฟรม 2.0b (ขยายเพิ่ม) ที่เล็กที่สุดที่คุณสามารถสร้างได้คือ 67 บิต ... รวมถึงระยะห่างระหว่างเฟรม 3 บิตและไม่รวมการบรรจุบิต ... ใน ทางทฤษฎีเราสามารถสร้างเฟรมที่ไม่มีวันจะได้ ในความเป็นจริงการบรรจุบิตจะเกิดขึ้นค่อนข้างมาก!
Baud สูงสุดสำหรับ CANBus 2.0a / b คือ 1Mbit
ที่ 1Mb / S บิตเดียว (เด่น / ถอย) คือ 1uS ยาวเช่น 0.000'001 S
ดังนั้นเฟรม 67 บิต [ตามทฤษฎีที่เล็กที่สุด 2.0b ] จะใช้เวลา 67uS ในการส่ง - ก่อนที่เฟรมอื่น (67 บิต) อาจถูกส่ง
1'000'000 / 67 ให้เฟรมสมบูรณ์ 14,925 เฟรม (เพิ่มอีก 25 บิตจากเฟรมถัดไป)
ในขณะที่คุณกำลังวิ่งที่ 1 / 8th ของความเร็วนั้นคุณจะได้รับ 1 / 8th ของแพ็กเก็ตมากที่สุด
14'925 / 8 = 1'865 เฟรม / วินาที @ 125Kb
เมื่อถึงเวลาที่คุณใช้ข้อมูล 64 บิต (8bytes) ทั้งหมดและการสันนิษฐานว่าคุณยังไม่ได้เรียกบิต "ข้อผิดพลาด" การบรรจุบิตโดยมีสตริงที่ต่อเนื่องกัน 1 หรือ 0
1'000'000 / (67 + 64) = 7'633
7 ' 633/8 = 954
และนั่นก็สมมติว่าการเดินสายของคุณสมบูรณ์แบบ รถบัสของคุณทำจากสายเคเบิล UTP 120 โอห์มและแยกประจุที่ปลายทั้งสองได้หรือไม่? หรือบางสายแบบสุ่มที่มีตัวต้านทาน 120ohm ข้ามปลายด้านหนึ่ง?
โดยรวมแล้วฉันว่าคุณทำได้ดีมากเพื่อให้ได้ 90% ของปริมาณงานสูงสุดทางทฤษฎี