CAN bus Data link layer: เมื่อสัญญาณเริ่มมีระเบียบ

ตอนที่แล้วเราคุยกันถึง Physical Layer ของ CAN bus — ชั้นที่ทำหน้าที่เหมือน “ถนน” ที่สายข้อมูลวิ่งอยู่บนมัน เป็นโลกของแรงดันไฟ สัญญาณบิต 0 กับ 1 และสายเส้นเล็กๆ ที่เชื่อมกล่อง ECU ทั้งคันเข้าหากัน

แต่ถ้ามีแค่ถนนกับรถ เราจะจัดการยังไงดีเวลารถหลายคันอยากวิ่งพร้อมกัน?
จะให้วิ่งชนกันมั่วๆ ก็คงไม่เวิร์ก…
ตรงนี้เองครับที่ Data Link Layer เข้ามาทำหน้าที่ เป็นเหมือน “กฎจราจร” ของโลกดิจิทัล คอยกำหนดว่าใครมีสิทธิ์พูดก่อน ใครต้องเงียบ และต้องพูดยังไงให้คนอื่นเข้าใจตรงกัน

🧩 1. เฟรมข้อมูล: ภาษาและรูปแบบของการคุยกัน

ทุกครั้งที่อุปกรณ์ในรถต้องการสื่อสารกัน เช่น เซ็นเซอร์เบรกส่งค่ามายังกล่อง ECU มันจะส่งข้อมูลในสิ่งที่เรียกว่า “เฟรม (Frame)”
ลองนึกภาพว่า “เฟรม” คือจดหมายหนึ่งฉบับ ที่มีหัวเรื่อง มีเนื้อหา และมีลายเซ็นยืนยันว่าไม่ถูกปลอม

ใน CAN bus จะมีเฟรมหลักๆ อยู่ 4 แบบ ได้แก่

  1. Data Frame – จดหมายปกติ ใช้ส่งข้อมูลทั่วไป เช่น ความเร็วรอบเครื่อง หรือแรงดันเบรก
  2. Remote Frame – จดหมายถามกลับ เช่น “ขอข้อมูลอุณหภูมิหน่อย” (แต่ปัจจุบันไม่ค่อยมีการใช้แล้ว)
  3. Error Frame – จดหมายเตือน “เฮ้! มีข้อมูลเพี้ยนแล้วนะ”
  4. 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 ปี

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *