ถ้าคนที่อยู่แวดวงอุตสาหกรรมก็จะเคยได้ยิน CAN bus ว่าเป็น field bus ชนิดนึง ไว้ใช้ทำเน็ตเวิร์คของอุปกรณ์โรงงาน แต่ก็คงจะไม่ได้ติดใจกันเท่าไหร่เพราะไม่ได้ใช้งานกันมาก สู้พวก Mod bus, Profibus, Devicenet อะไรพวกนี้ไม่ได้  

ในระบบโรงงานก็คงจะเป็นเช่นนั้นจริงๆ แต่พอมาพูดถึงรถยนต์แล้ว เจ้า CAN bus กลายเป็นเรื่องที่น่าสนใจขึ้นมา เพราะว่าอะไร ? ก็เพราะว่าไม่มีใครใช้เจ้าเน็ตเวิร์คอื่นที่พูดถึงไปข้างบนนั่นเลยสิครับ มีแต่ CAN bus ตัวนี้ที่เป็นพระเอกขึ้นมา  

ถ้าอย่างนั้น ในรถยนต์มี CAN bus อย่างเดียวรึเปล่า ? ไม่ใช่ครับ ในรถยนต์จะมีเน็ตเวิร์คที่ได้รับการยอมรับอยู่ 3 ตัวด้วยกันอย่างที่ตั้งชื่อหัวข้อไว้ คือ CAN (Controller Area Network), LIN (Local Interconnetion Network) และ FlexRay  

แล้วทั้ง 3 ตัวนี้มีความต่างกันอย่างไร ทำไมต้องมี 3 ตัว – มีแค่ตัวเดียวไม่ได้หรือ คำถามนี้ก็เลยเป็นคำถามที่น่าค้นหา ก็เลยไปหาข้อมูลอ่านมา แล้วก็มาสรุปสั้นๆ ไว้แบบนี้นะครับ   

แรกเริ่มเดิมทีเลย อุปกรณ์รถยนต์นั้นจะต่อเชื่อมกันด้วยสายไฟธรรมดา เรียกว่า discrete connection แต่พออุปกรณ์มากขึ้นสายไฟก็มากขึ้น นอกจากนี้การกำหนดจุดต่อก็ยากขึ้นไป นึกตัวอย่างเล่นๆ ดูว่าถ้าอุปกรณ์นึง สมมติว่ามีสัญญาณออกมา 3 เส้น แต่พอเกิดการพัฒนาพอรุ่นใหม่ออกมาอุปกรณ์เดียวกันมีฟีเจอร์เพิ่มเลยให้สัญญาณเพิ่มมาอีก 1 เส้น (เป็น 4 เส้น) ทีนี้ก็จะไปกระทบอุปกรณ์อื่นที่ต่อกับมัน ก็ต้องไปหาจุดต่อเพิ่ม ก็จะทำให้วุ่นวาย  

ดังนั้นจึงเกิดความพยายามในการลดสาย discrete เหล่านั้น และในช่วงปี 1980s บริษัท Bosch เยอรมันนี(ผู้ผลิตชิ้นส่วนรถยนต์อันดับ 1 ของโลก) ก็เลยเสนอ CAN bus ขึ้นมา โดยออกแบบบนมาตราฐานของ OSI โดยเป็น service layer ที่ 1 และ 2 และก็ได้รับการยอมรับเป็นมาตรฐานในปี 1993 เป็นมาตราฐานเบอร์ ISO 11898-1  

ข้อดีของการทำเน็ตเวิร์คนั้น ไม่ใช่แค่ว่าจะพัฒนาการส่งข้อมูล แต่ยังช่วยให้การประกอบชิ้นส่วนทำง่ายขึ้นด้วย เมื่อมองโดยรวมก็ทำให้ลดความยุ่งยากและลด cost ได้ เพราะสิ่งเหล่านี้ระบบเน็ตเวิร์คจึงได้รับการยอมรับ โดยมีเงื่อนไขที่ว่าข้อมูลจะต้องเชื่อถือได้ ซึ่ง CAN bus ก็ได้ออกแบบมารองรับเงื่อนไขพวกนั้นแล้ว อาทิ มีความสามารถ multi-master multi-slave สามารถทำ redundancy ได้ ซึ่งช่วยทำให้ระบบมีเสถียรภาพต่อการพังของอุปกรณ์หรือสายสัญญาณได้ มีเป็นการส่งคล้าย Ethernet ที่มีการซ่อมข้อมูลเมื่อตรวจพบว่าข้อมูลที่ส่งมาเสียหายได้อีกด้วย เป็นต้น  

โดยทั่วไป ในรถยนต์หนึ่งคันนั้นจะมีความต้องการการสื่อสารทั้งแบบ Low และ High speed ยกตัวอย่างเช่น อุปกรณ์หน้าต่าง ไฟ และเบาะ ต้องการแค่ความเร็วต่ำ เพราะไม่มีประโยชน์อะไรที่จะเอาข้อมูลถี่เพราะว่าตัวของอุปกรณ์เองมีการเปลียนแปลงที่ช้า และไม่มีอะไรซีเรียส แต่ขณะที่ เครื่องยนต์ cruise control และ ABS ต้องการข้อมูลแบบ high speed ดังนั้นปกติในรถยนต์ 1 คันอาจจะเห็น CAN bus 2-3 เส้นทาง(เน็ตเวิร์ค) ก็ได้ เป็นต้นว่าทำเส้น high speed เส้นนึงเฉพาะอุปกรณ์ที่เกี่ยวกับ safety โดยเฉพาะ ส่วนที่เหลือก็เป็นอุปกรณ์ทั่วไป  

LIN - Target Application (from lin-subbus)

  แต่โดยธรรมชาติของธุรกิจแล้ว การมีอะไรผูกขาดมักเป็นไปได้ไม่นาน การมีเน็ตเวิร์ค 1 ชนิดตลอดไปมันเป็นไปไม่ได้เช่นกัน ด้วยปัจจัยที่ว่า ถ้าใช้ CAN bus กับอุปกรณ์บางประเภทมันจะแพงเกินไป จึงมีแนวคิดจะลด cost บ้าง เรื่อง cost ของธุรกิจรถยนต์แบบ mass นี่ ถ้าลดได้แค่ 10 บาทก็เท่ากับลดได้หลายล้านบาทแล้วเนื่องจากชิ้นส่วนนึงๆ จะผลิตเป็นแสน หรือล้านชิ้น ดังนั้นจึงเกิดการพัฒนา LIN bus ขึ้น โดยเริ่มมีการเสนอมาตราฐานในปี 1999 (เวอร์ชัน 1.1) โดยตั้งเป้าหมายไว้ที่อุปกรณ์ที่ไม่ซับซ้อน เช่น กระจกรถ ระบบหลังคา แอร์ เซ็นเซอร์บางอย่าง ประตู เบาะ ดังที่เห็นในรูป  

แต่ LIN bus นั้นเกิดจากออกแบบที่เน้นต้นทุน ก็ทำให้มีข้อจำกัดไปด้วย เช่น สัญญาณ clock ก็ใช้วงจร RC osillator แทนที่จะใช้ crystal หรือ ceramic จึงไม่สามารถทำอะไรที่ต้องการความแม่นยำของเวลาได้มากนัก และตัวเน็ตเวิร์คก็ไม่สามารถจับการชนกันของข้อมูล (Collision detection) และความเร็วในการส่งข้อมูลก็ยังช้า แต่ทั้งนี้ทั้งนั้นก็ยังเพียงพอต่อการทำงานของอุปกรณ์ที่ตั้งใจไว้  

มองมาที่การออกแบบ LIN bus เอง เป็นการเอาเทคโนโลยีเก่าที่มีอยู่แล้ว ของ UART คือใช้มาตราฐาน ISO 9141 มาพัฒนา โดยจะเป็นการส่งข้อมูลผ่าน serial แบบง่ายๆ แบบเส้นเดียว (single-wire serial communication) และมีความเร็วสูงสุดจำกัดที่ 20 kbps แต่ก็ต่อเป็น bus ได้ โดยต่อได้มากที่สุด 16 อุปกรณ์ใน 1 เน็ตเวิร์ค (แต่จริงๆแล้วแนะนำให้ใช้แค่ 12 อุปกรณ์) ส่วนการส่งข้อมูลก็ทำแบบง่ายๆ คือมีแค่การส่ง (Transmit Task) และ รับ (Receive Task) และมี Master ตัวนึงเป็นตัวเข้าจังหวะ (เหมือนวงออเคสตร้าที่มี conductor ทำหน้าทีคุมจังหวะ) ตัว master จะมี task master transmit เพิ่มขึ้นมาอีก 1 แบบ ทุกๆครั้ง Master จะส่งข้อมูลออกไป มีรายละเอียดว่าสื่อสารรอบนั้นมีขึ้นเพื่ออะไร ที่เรียกว่า identifier ที่มีอยู่ 64 แบบ และตามด้วยข้อมูลในเน็ตเวิร์ค ส่วนทาง slave ก็จะคอยมอง identifier นี้แล้วทำตาม  

ในการเข้าจังหวะ เนื่องจากอุปกรณ์ slave เป็นอุปกรณ์ง่ายๆ สัญญาณเวลาก็เป็นแค่วงจร RC ดังนั้นในการส่งข้อมูลก็มีช่วง break เพื่อให้ทุกอุปกรณ์รับรู้ว่านี่เป็นการเริ่มต้น ส่วนการป้องการการส่งข้อมูลมั่วๆมาชนกันเป็นหน้าที่ของผู้ออกแบบเน็ตเวิร์คและวางอุปกรณ์ที่จะต้องคิดให้ดีเอง  

แต่ไม่ใช่ว่า LIN bus จะทำให้ความสามารถในการส่งน้อยลง ด้วยการออกแบบแบบนี้ ก็ยังสามารถสื่อสารได้ 3 แบบ คือ จาก master-slave (มากกว่า 1 ตัว) หรือ จาก slave-master/slave(มากกว่า 1 ตัว) และ broadcast จาก master ไปยังทุกตัว เนื่องจากว่าใน frame ข้อมูลนั้น บอกแค่ประเภทข้อมูลและเนื้อหาข้อมูล ไม่ได้บอกว่าปลายทางคือใครดังนั้นทุกตัวก็สามารถรับข้อมูลได้เท่าเทียมกัน นั่นคือเป็น single-master multi-slave  

ด้วย 2 เน็ตเวิร์ค CAN bus และ LIN bus ก็ดูจะลงตัวแล้ว คือระบบ safety หรือ ที่ต้องการความเร็วสูงก็ใช้ CAN ส่วนที่ไม่เน้นความเร็วและความแม่นยำก็ใช้ LIN แล้วทำไมจึงเกิด FlexRay ขึ้นมา  

เคยได้ยินคำว่า drive-by-wire หรือ break-by-wire หรืออะไรอื่นๆ by-wire ใ่ช่ไหมครับ ด้วยความต้องการตรงนี้ ทำให้บริษัทผู้ผลิตรถและผลิตชิ้นส่วน ต้องการการส่งข้อมูลที่ดีขึ้น เร็วขึ้น และมีความสามารถมากกว่าที่ CAN ทำได้ ก็เลยเกิดกลุ่มบริษัทที่ร่วมมือกันทำ 6 บริษัท – BMW – Volkswagen – Daimler AG – General Motors – Robert Bosch GmbH – NXP Semiconductors – Freescale (เคยเป็นส่วนนึงของ Motorola) โดยเริ่มทำมาตราฐานขึ้นในปี 2000 และใช้ในการผลิตรถยนต์จริงรุ่นแรก BMW X5 ที่ออกขายในปี 2007 แต่ก็เป็นเพียงแค่ระบบ Pnuematic damping เท่านัน ไม่ได้ใช้ทั้งหมด ส่วนการนำไปใช้แบบ Full เลยทาง BMW ตั้งใจจะใช้กับรถรุ่น X6 ในปี 2008 นี้  

FlexRay ได้วาง position ของตัวเองไว้สูงกว่า CAN ค่อนข้างมาก จุดเด่นมากๆคือ เรื่องความเร็ว และความสามารถในการจัดส่งข้อมูล ความเร็ว FlexRay ที่ไปได้ถึง 10 Mbps (แต่ขณะเดียวกันสายสัญญาณจำกัด) ส่วน CAN bus สามารถส่งได้ 1 Mbps ที่ระยะสาย 40 เมตร (สามารถรองรับการส่งแบบระยะทางไกลได้ถึง 6 km โดยส่งที่ความเร็ว 10 kbps. แต่ความเร็วที่แนะนำให้ใช้คือความเร็ว 125 kbps)  

ความสามารถในการจัดส่งข้อมูล นอกจากจะมี Fault tolerance, Colision detection แล้ว FlexRay ยังเป็นได้ทั้ง Synchronus และ asynchronus นอกจากนี้ยังสามารถทำ Wake up/Sleep ผ่าน bus system ได้อีกด้วยในขณะที่ CAN ออกแบบมเพื่อให้การส่งข้อมูลมีความน่าเชื่อถือเท่านั้นจึงเน้นเกี่ยวกับเรื่อง Fault tolerance, Colision detection ไม่ได้เน้นเรื่องฟีเจอร์เรื่อง Wake up/Sleep หรือ asynchronus แต่อย่างใด  

FlexRay ดูจะดีกว่า CAN bus ไปทุกเรื่อง เนื่องจากมันถูกพัฒนาไปเพื่อคอนเซ็พ X-by-Wire (คืออะไรๆก็ by wire ทั้งหมด ) แต่ในทางปฎิบัติ ระบบสื่อสารของอุปกรณ์ในรถยนต์บางระบบอาจจะยังไม่มีความต้องการฟีเจอร์เหล่านั้นก็ได้ ยกตัวอย่างเช่น OBD ก็ยังต้องใช้ CAN ต่อไปเนื่องจากว่าการเปลี่ยนแปลงไปเป็น FlexRay ไม่ได้เพิ่มความสามารถอะไรแต่ยังทำให้ต้องเปลี่ยนแปลงเครื่องมือจำนวนมาก  

เรียบเรียง: http://www.thaiautosoft.com/
ที่มา: PC Magazine, Softing, lin-subbus, http://www.flexray.com/, http://en.wikipedia.org/wiki/FlexRay, http://en.wikipedia.org/wiki/Local_Interconnect_Network, http://en.wikipedia.org/wiki/Controller_Area_Network
ไฟล์: http://www.semiconductors.bosch.de/pdf/can2spec.pdf