ตอนที่แล้วเราคุยกันถึง Physical Layer ของ CAN bus — ชั้นที่ทำหน้าที่เหมือน “ถนน” ที่สายข้อมูลวิ่งอยู่บนมัน เป็นโลกของแรงดันไฟ สัญญาณบิต 0 กับ 1 และสายเส้นเล็กๆ ที่เชื่อมกล่อง ECU ทั้งคันเข้าหากัน
แต่ถ้ามีแค่ถนนกับรถ เราจะจัดการยังไงดีเวลารถหลายคันอยากวิ่งพร้อมกัน?
จะให้วิ่งชนกันมั่วๆ ก็คงไม่เวิร์ก…
ตรงนี้เองครับที่ Data Link Layer เข้ามาทำหน้าที่ เป็นเหมือน “กฎจราจร” ของโลกดิจิทัล คอยกำหนดว่าใครมีสิทธิ์พูดก่อน ใครต้องเงียบ และต้องพูดยังไงให้คนอื่นเข้าใจตรงกัน
🧩 1. เฟรมข้อมูล: ภาษาและรูปแบบของการคุยกัน
ทุกครั้งที่อุปกรณ์ในรถต้องการสื่อสารกัน เช่น เซ็นเซอร์เบรกส่งค่ามายังกล่อง ECU มันจะส่งข้อมูลในสิ่งที่เรียกว่า “เฟรม (Frame)”
ลองนึกภาพว่า “เฟรม” คือจดหมายหนึ่งฉบับ ที่มีหัวเรื่อง มีเนื้อหา และมีลายเซ็นยืนยันว่าไม่ถูกปลอม
ใน CAN bus จะมีเฟรมหลักๆ อยู่ 4 แบบ ได้แก่
- Data Frame – จดหมายปกติ ใช้ส่งข้อมูลทั่วไป เช่น ความเร็วรอบเครื่อง หรือแรงดันเบรก
- Remote Frame – จดหมายถามกลับ เช่น “ขอข้อมูลอุณหภูมิหน่อย” (แต่ปัจจุบันไม่ค่อยมีการใช้แล้ว)
- Error Frame – จดหมายเตือน “เฮ้! มีข้อมูลเพี้ยนแล้วนะ”
- Overload Frame – จดหมายขอพัก “ขอเวลาประมวลผลก่อนนะ ยังไม่พร้อมส่งข้อมูลใหม่”
แต่จดหมายแต่ละฉบับไม่ได้เขียนส่งกันแบบสุ่มๆ ทุกส่วนในเฟรมถูกกำหนดไว้อย่างละเอียด เช่น
- มีหัวบอกจุดเริ่มต้น (Start of Frame)
- มีเลขประจำเฟรม (ID) เพื่อบอกว่าใครส่ง ส่งเรื่องอะไร
- มีตัวบอกว่าเป็นเฟรมคำถามที่ต้องการคำตอบ (Remote Transmission Request: RTR)
- มีตัวบอกว่าข้อมูลที่ส่งยาวกี่ไบต์ (Data Length Code: DLC)
- มีส่วนเนื้อหาข้อมูล (Data)
- มีส่วนตรวจสอบความถูกต้อง (CRC)
- มีส่วนที่รอฟังว่ามีใครได้ยินเราไหม (Acknowledge: ACK)
- และมีจุดจบของจดหมาย (End of Frame: EOF)

⚖️ 2. การแย่งสิทธิ์ใช้งานบัส: แข่งกันแต่ไม่มีใครชนกัน
ลองจินตนาการว่า มี 3 คนยืนอยู่บนเวที ถือไมค์คนละตัว อยากพูดพร้อมกัน
แต่กติกาคือ ใครมีค่า ID น้อยที่สุด จะได้พูดก่อน
บนบัสจริงๆ CAN ใช้หลักการเดียวกัน — ทุกโหนดจะเริ่มส่งข้อมูลพร้อมกันทีละบิต ถ้าใครส่งบิต “1” แล้วเห็นในบัสกลายเป็น “0” แปลว่า มีคนพูดดังกว่า ก็ต้องยอมเงียบไปทันที
สุดท้าย ผู้ที่มี ID ต่ำที่สุด จะได้พูดจนจบเฟรมก่อนคนอื่น
นี่คือวิธีที่ CAN ทำให้รถทั้งคันพูดกันได้โดยไม่ชนสัญญาณกันเลยแม้แต่นิดเดียว วิธีการนี้มีชื่อเรียกทางเทคนิคที่แปลยากๆ ว่า Arbitration

⚙️ 3. เมื่อข้อมูลเพี้ยน: ระบบจะรู้ได้ยังไง?
การสื่อสารในรถไม่ต่างจากการคุยกันในห้องที่มีเสียงดังมาก — มีโอกาสที่คำพูดจะเพี้ยน
CAN bus เลยมีกลไกตรวจจับข้อผิดพลาดอยู่ตลอด เช่น
- Bit error – ส่ง “1” ไปแต่ได้ยิน “0” กลับมา
- Bit stuffing error – ส่งบิตที่มีค่าซ้ำๆ กันเกิน 5 บิตติดต่อกัน (ถ้าจำเป็นต้องส่งจริงๆ bus จะแทรกบิตตรงกันข้ามให้อัตโนม้ติ และตัวรับจะตัดบิตนั้นออกเอง)
- CRC error – ตัวเลขตรวจสอบไม่ตรงกัน
- Form error – รูปแบบเฟรมไม่ถูกต้อง
- ACK error – ไม่มีใครยืนยันว่ารับข้อมูลถูกต้อง
เมื่อเจอเหตุการณ์แบบนี้ โหนดที่ตรวจพบจะรีบส่ง “Error Frame” เพื่อบอกทุกคนในเครือข่ายให้หยุด แล้วรอเริ่มต้นใหม่อีกครั้ง เหมือนยกมือกลางห้องว่า “ขอพูดใหม่อีกรอบ!”

🔄 4. ระบบจัดการข้อผิดพลาดอัตโนมัติ: ใครผิดซ้ำๆ ก็โดนพักงาน
ในโลกของ CAN bus ไม่มีใครปลอดภัยจากความผิดพลาด แต่ระบบจะไม่ปล่อยให้ใครทำให้บัสทั้งระบบล่ม
ทุกโหนดจะมีตัวนับข้อผิดพลาดสองตัว — TEC (Transmit Error Counter) และ REC (Receive Error Counter)
หากโหนดใดส่งผิดหรือรับผิดบ่อย ค่าเหล่านี้จะเพิ่มขึ้นเรื่อยๆ
เมื่อถึงจุดหนึ่ง โหนดจะเข้าสู่สถานะ:
- Error Active – ยังสื่อสารและฟ้องคนอื่นเมื่อเจอ error ได้ตามปกติ
- Error Passive – ยังสื่อสารได้ แต่ไม่สามารถฟ้อง error ให้คนอื่นทราบได้ (เขาคงรำคาญ)
- Bus Off – ผิดบ่อยจนโดน “ตัดออกจากวง” ต้องรีเซ็ตใหม่ถึงจะกลับมาได้ (หลอนแล้ว)
พูดง่ายๆ คือ CAN bus มีกลไก “ควบคุมตนเอง” ไม่ต้องให้คนมาคอยปิดเครื่องใดเครื่องหนึ่งเลย

⚡ 5. CAN FD: รุ่นใหม่ที่เร็วกว่าและแรงกว่า
เมื่อเทคโนโลยีในรถยนต์พัฒนา เช่น ระบบช่วยขับอัตโนมัติ (ADAS) ต้องรับข้อมูลจากกล้องและเซ็นเซอร์จำนวนมาก
CAN รุ่นเก่า (CAN 2.0) ที่ส่งข้อมูลได้แค่ 8 ไบต์ต่อเฟรม และความเร็วสูงสุด 1 Mbps เริ่มไม่พอ
จึงเกิดสิ่งใหม่ชื่อว่า CAN FD (Flexible Data Rate)
ของใหม่จาก Bosch ที่ทำให้ส่งข้อมูลได้มากขึ้นถึง 64 ไบต์ต่อเฟรม และเพิ่มความเร็วในช่วงข้อมูลได้สูงสุดถึง 5 Mbps
แต่ยังคงเข้ากันได้กับระบบเดิม — เรียกว่า “พูดภาษาเก่าได้แต่พูดเร็วกว่าเดิม”
สิ่งที่น่าสนใจคือ CAN FD ไม่ได้เพิ่มความเร็วทั้งเฟรม แต่เพิ่มเฉพาะ “ช่วงข้อมูลจริง” เท่านั้น เพราะช่วงต้นเฟรม (ที่ใช้แข่งสิทธิ์) ถ้าเร็วเกินไปอาจทำให้รถที่อยู่ไกลในสายสัญญาณรับไม่ทัน ซึ่งอาจทำให้สัญญาณชนกันได้
ดังนั้น การปรับเฉพาะส่วนข้อมูลจึงเป็นการออกแบบที่ “ฉลาดและปลอดภัย”

💬 6. เบื้องหลังความน่าเชื่อถือของรถยนต์ยุคใหม่
ระบบ Data Link Layer ของ CAN bus อาจดูเป็นเรื่องเทคนิค แต่จริงๆ แล้วมันคือเบื้องหลังของความ “ไว้ใจได้” ในระบบอิเล็กทรอนิกส์ของรถทั้งคัน
เพราะถ้าไม่มีมัน การสื่อสารระหว่างกล่องต่างๆ จะมั่วเป็นป่าช้าไฟฟ้าแน่ๆ
ไม่ว่าคุณจะเหยียบเบรก เปิดไฟเลี้ยว หรือเปิดแอร์ สัญญาณทั้งหมดจะเดินทางผ่าน “สายข้อมูลกลาง”ที่เต็มไปด้วยกติกาและมารยาทระดับวิศวกรรม เพื่อให้รถทำงานได้อย่างแม่นยำและปลอดภัยทุกวินาที

📘 สรุปบ้านบ้าน
เฟรมใน CAN bus คือ “จดหมายข้อมูล” ที่มีรูปแบบตายตัว
- การส่งพร้อมกันหลายโหนดใช้หลัก “ใคร ID ต่ำกว่าคนนั้นพูดก่อน”
- ระบบตรวจจับข้อผิดพลาดอัตโนมัติ และตัดโหนดที่มีปัญหาออกเองได้
- CAN FD คือเวอร์ชันใหม่ที่เร็วขึ้น ส่งข้อมูลได้มากขึ้น แต่ยังคุยกับของเดิมได้
- ทั้งหมดนี้คือเหตุผลที่ CAN bus ถูกใช้ในรถยนต์ทั่วโลกมานานกว่า 30 ปี

Leave a Reply