มาทำความรู้จักกับโพรโทคอล Controller Area Network

CAN หรือ Controller Area Network [1] นั้นเป็นโพรโทคอลสื่อสารที่มีความสำคัญและถูกนำมาใช้ในระบบอิเล็กทรอนิกส์โดยเฉพาะในอุตสาหากรรมยานยนต์รวมไปถึงอุตสาหกรรมต่าง ๆ โพรโทคอลนี้ถูกพัฒนาขึ้นโดยบริษัท Bosch ในช่วงปี ค.ศ. 1980 โดยมีแนวความคิดที่ว่าเพื่อจัดการกับปัญหาความซับซ้อนและปริมาณสายไฟที่จำเป็นในการสื่อสารระหว่างหน่วยควบคุมอิเล็กทรอนิกส์ (ECU) ในรถยนต์ ที่มาของโปรโตคอล CAN bus นั้นเกิดจากความต้องการในการลดน้ำหนัก ลดต้นทุน และลดความซับซ้อนของระบบการเชื่อมต่อด้วยสายไฟแบบจุดต่อจุด (point-to-point) ก่อนหน้านี้การเชื่อมต่ออุปกรณ์ต่าง ๆ ในรถยนต์ใช้สายไฟหลายเส้นในการเชื่อมต่อ ซึ่งสร้างความยุ่งเหยิงและความซับซ้อนในการติดตั้ง การบำรุงรักษา และการขยายตัวของระบบ รูปที่ 1 แสดงตัวอย่างการใช้ CAN bus ในการลดความซับซ้อนของระบบ [2] CAN bus นั้นได้รับการพัฒนาอย่างต่อเนื่องตั้งแต่ที่ได้มีการเปิดตัวโพรโทคอลออย่างเป็นทางการในช่วงปี ค.ศ. 1980 อย่างมีนัยยะสำคัญ ทำให้ในปัจจุบัน CAN นั้นมีหลายรูปแบบให้เลือกใช้ได้อย่างเหมาะสมกับสภาพแวดล้อมอุตสาหากรรมที่แตกต่างกันไป ตัวอย่างเช่น CAN สำหรับรถยนต์ (CAN for Automotive): CAN เวอร์ชันนี้ถูกพัฒนาและปรับแต่งเฉพาะสำหรับใช้ในระบบอิเล็กทรอนิกส์ของรถยนต์ ถือเป็นเวอร์ชันที่นิยมนำมาประยุกต์ใช้กันอย่างแพร่หลายและได้รับการใช้งานอย่างกว้างขวางในอุตสาหกรรมยานยนต์ ความสามารถในการรับส่งข้อมูลความเร็วสูง อีกทั้งยังมีความน่าเชื่อถือสูง … Read More

แนะนำ Message Queue ที่น่าสนใจ Apache Pulsar!!

Image Credit: https://pulsar.apache.org แนะนำ Message Queue ที่น่าสนใจ Apache Pulsar!! สวัสดีครับเพื่อนๆ วันนี้ทางแอดมิน มี platform ของ message queue ดีๆที่น่าสนใจมานำเสนอเพื่อน ๆ ครับ หลายๆคนถ้าอยู่ในวงการ software มาซักพักก็น่าจะคุ้นเคยกับ apache kafka , mqtt , rabbitMQ ที่เป็น message queue ที่นิยมใช้งานใช่มั้ยครับ ทั้งนี้แอดมินขอเสนอ อีก 1 platform ที่น่าสนใจ เผื่อให้เพื่อนสามารถนำไปเป็นอีกตัวเลือกนึงในการนำไปใช้งานได้ครับ ซึ่งนั่นก็คือ Apache pulsar ครับ อนึ่งแอดมินไปเจอบทความที่น่าสนใจเกี่ยวกับเจ้า Apache pulsar ซึ่งมีความน่าสนใจยังไง ไปดูกันเลยครับ  Apache Pulsar คืออะไร? Apache Pulsar หรือเรียกกัน Pulsar เป็นแพลตฟอร์ม … Read More

Protobuf

โดยทั่วไปในการพัฒนา Software มักจะต้องมีการส่งข้อมูลไปมาระหว่าง Application/Server/Device และมักมีการ serialization ข้อมูลเพื่อส่งไปยังอีกจุดเป็นเรื่องปกติ โดยวิธีการ serialization data structure ที่หลายคนนึกถึงก็มักจะเป็น JSON หรือ XML เป็นต้น แต่ในวันนี้เราจะมาแนะนำเครื่องมือในการ serialization ข้อมูลที่น่าสนใจอีกตัวนั่นก็คือเครื่องมือที่ชื่อว่า Protobuf นั่นเอง https://www.freecodecamp.org/news/content/images/size/w2000/2020/05/unnamed-1.png Protobuf คืออะไร Protobuf หรือชื่อเต็มคือ Protocol buffer โดยแรกเริ่มเป็นเครื่องมือสำหรับ serialization ข้อมูลที่พัฒนาขึ้นมาโดย Google เพื่อใช้งานเป็นการภายในแทนการใช้ XML ที่มีขนาดใหญ่ในการส่งข้อมูล แต่ภายหลังก็ได้มีเปิด source code ออกสู่สาธารณะ โดย Protobuf มีจุดเด่นคือ ข้อมูลมีขนาดเล็กเนื่องจากเลือกที่จะ serialization ข้อมูลออกมาในรูปแบบ binary ไม่เหมือนกับ JSON หรือ XML ที่เก็บข้อมูลในรูปแบบ string ที่ใช้พื้นที่เยอะกว่า ทำการ serialization/deserialization … Read More

EtherCAT (Part 1)

ที่มารูป LINK EtherCAT เป็น Fieldbus Protocol ตัวหนึ่งที่มีความนิยมอย่างมากในระบบอุตสาหกรรมและระบบอัตโนมัติภายในโรงงาน แต่ว่าในปัจจุบัน ในประเทศไทยยังไม่มีการใช้งานอยู่มากนัก วันนี้จะพาไปทำความรู้จักกับ EtherCAT กันค่ะ EtherCAT คืออะไร EtherCAT ย่อมาจาก Ethernet Control Automation Technology เป็นฟิลด์บัสโปรโตคอลการสื่อสารชนิดหนึ่งสำหรับภายในอุตสาหกรรมที่อยู่บนพื้นฐานเครือข่าย IEEE 802.3 Ethernet ซึ่งพัฒนาโดย Beckhoff โดยโปรโตคอลได้พัฒนาขึ้นเพื่อเน้นการทำงานประมวลผลแบบ Real-time  ที่มีความยืดหยุ่นสูง สำหรับงานทางด้านควบคุมอัตโนมัติ โดยเฉพาะ สำหรับการสื่อสารภายในโปรโตคอลนั้น จะมีอุปกรณ์ EtherCAT Master ที่คอยควบคุมการทำงานของอุปกรณ์ EtherCAT Slave (หรือจะเรียกว่า Node ก็ได้) โดยมี Ethernet Frame เป็นตัวกลางในการสื่อสารโดยสื่อสารในชั้นของ Protocol Layer และ Data Link Layer รูป EtherCAT Network LINK … Read More

ทดสอบการสื่อสาร Modbus Protocol ด้วย QModBus

Modbus protocol ถือเป็นมาตรฐานโพรโทคอลการสื่อสารหนึ่งที่ได้รับความนิยมและใช้กันอย่างแพร่หลายในอุตสาหกรรมปัจจุบัน เนื่องจากตัว Modbus นั้นมีข้อดีอยู่หลายอย่างเช่นติดตั้งง่าย ใช้งานสะดวก การสื่อสารมีความเสถียร และที่สำคัญคือเป็น Open Protocol สำหรับผู้ใดที่ต้องการใช้งานก็สามารถนำไปพัฒนาต่อยอดได้โดยไม่มีค่าใช้จ่าย อีกทั้งสามารถเชื่อมต่ออุปกรณ์หรือเซ็นเซอร์ต่าง ๆ ได้มากถึง 247 ตัว โดยทั่วไปแล้ว Modbus นั้นจะมี Master อยู่ 1 ตัวเพื่อใช้ในการส่งคำสั่งไปยังอุปกรณ์ Slave ซึ่งสามารถมีไอดีได้ตั้งแต่ 1 – 247 โดยที่ Master นั้นจะทำการส่งคำสั่งอ่านหรือเขียนข้อมูลลงไปยัง Register ที่ใช้เก็บข้อมูลของอุปกรณ์ที่ต้องการได้เพียงแค่ระบุเลขไอดีเท่านั้น มาถึงตรงนี้แล้ว หากใครที่ยังสงสัย หรือต้องการข้อมูลเพิ่มเติมก็สามารถย้อนไปดูบทความที่ทาง บริษัท NDR Solution Co. Ltd. ของเราเขียนไว้ได้ ตั้งแต่เรื่องของ Fieldbus network เบื้องต้น และ Modbus Introduction หรือแม้แต่ มาทำความรู้จัก RS-485 กันเถอะ ซึ่งทางเรานั้นได้มีการเขียนบทความที่เกี่ยวข้องไว้หลากหลายบทความเลยทีเดียว … Read More

Modbus คืออะไร

โลโก้ Modbus รูปจาก https://logos-download.com Modbus คืออะไร Modbus เป็นโปรโตคอลสื่อสารที่พัฒนาขึ้นโดยบริษัท Modicon (ปัจจุบันคือบริษัท Schneider Electric) เพื่อใช้สื่อสารอุปกรณ์ PLC ของทางบริษัทเอง โดยในปัจจุบันมี Modbus Organization คอยทำหน้าที่ในการดูแลมาตรฐานของตัวโปรโตคอลต่อจากทาง Schneider Electric ซึ่งในปัจจุบัน Modbus เป็นหนึ่งในโปรโตคอลที่นิยมเป็นอย่างมากสำหรับใช้ในการสื่อสารระหว่างอุปกรณ์ต่างๆในวงการอุตสาหกรรมเนื่องมาจากตัวโปรโตคอลมีความเรียบง่าย และตัวโปรโตคอลเองเปิดเป็นสาธารณะ (Royalty free) ทำให้ทุกคนสามารถพัฒนาอุปกรณ์ที่ใช้โปรโตคอล Modbus ได้โดยไม่เสียค่าใช้จ่าย โดยตัวโปรโตคอลมีลัษณะการทำงานแบบ Request/Reply โดยอุปกรณ์ที่ต้องการอ่านข้อมูลจะเรียกว่า Modbus Master/Client และอุปกรณ์ที่ถูกอ่านข้อมูลจะเรียกว่า Modbus Slave/Server โดยในเครื่อข่ายของอุปกรณ์ที่สือสารด้วยโปรโตคอล Modbus จะประกอบไปด้วย Master เพียงหนึ่งตัว แต่สามารถมี Slave ได้ตั้งแต่ 1 ตัวไปจนถึง 247 ตัว โดยแต่ละ Slave จะมี ID ประจำตัวตั้งแต่ … Read More

Fieldbus network เบื้องต้น

Fieldbus network คือ image: e.lapp.com/jp/ เรามาเริ่มกันด้วยพื้นฐานกันก่อนเลยครับ Fieldbus คือ ระบบ bus ที่เชื่อมต่อกับอุปกรณ์จำพวกเซ็นเซอร์ เครื่องวัด หรืออุปกรณ์ที่ใช้สำหรับควบคุมต่างๆ ภายในโรงงาน เพื่อแลกเปลี่ยนข้อมูล Fieldbus นั้นจะมีโพรโทคอลที่มีรูปแบบการสื่อสารเป็นของตัวเอง (กำหนดขึ้นเอง) ซึ่งจะทำให้อุปกรณ์ที่เชื่อมต่อ เช่น เซ็นเซอร์ อุปกรณ์ควบคุม เป็นต้น สามารถแลกเปลี่ยนข้อมูลได้โดยไม่มีสัญญาณแปลกปลอม และ Fieldbus ส่วนใหญ่นี้ มักจะใช้ระบบที่มี master-slave ในการทำงานครับ ประโยชน์ของฟิลด์บัส การพัฒนาเทคโนโลยี Fieldbus ขึ้นมานั้น ทำให้มีข้อได้เปรียบมากมายในโลกของการสื่อสารเชิงอุตสาหกรรมโรงงาน ซึ่งมีทั้งเรื่องของประสิทธิภาพและราคา ประโยชน์ของเจ้า Fieldbus มีอะไรบ้าง เราไปดูกันเลยครับ 1.ลดข้อกำหนดการเดินสาย image: Flaticon.com ประโยชน์ที่โดดเด่นที่สุดของระบบ Fieldbus มีลักษณะการต่อสายโดยพื้นฐานรูปแบบอนุกรม ความต้องการในการเดินสายที่ลดลง และการอนุญาตให้อุปกรณ์หลายร้อยรายการเชื่อมต่อกับจุดเชื่อมต่อและคอนโทรลเลอร์จุดเดียว จำนวนสายเคเบิ้ลที่ต้องใช้ในเครือข่ายจึงลดลงอย่างมากเมื่อเทียบกับการกำหนดค่าการเดินสายแบบขนาน นอกจากการลดจำนวนสายเคเบิลที่ต้องการแล้ว ความยาวของสายเคเบิลที่จำเป็นในระบบ Fieldbus ยังลดลงอีกด้วย ความซับซ้อนในการเดินสายเคเบิ้ลของระบบจึงลดลงอย่างมาก 2.ลดต้นทุน … Read More

Stack กับ Heap คืออะไรกันนะ?

ในการเขียนโค้ดในภาษาใดก็ตาม ไม่ว่าจะเป็น C, Python หรือภาษาอื่น ๆ แทบจะทุกภาษาล้วนจะต้องมีการประกาศตัวแปรชนิดต่าง ๆ เช่น int double หรือพวกตัวแปรที่มีความซับซ้อนมากขึ้นมาอย่าง array หรือ struct รวมถึงการจองพื้นที่ไว้ส่วนหนึ่งเพื่อเอาไว้เก็บค่าบางอย่างเพื่อใช้ในโปรแกรม โดยปกติแล้ว เมื่อประกาศตัวแปร พื้นที่ภายในหน่วยความจำจะถูกจองเอาไว้ใช้สำหรับตัวแปรที่เราประกาศ หรือพื้นที่ที่เราจองไว้ แต่ว่าพื้นที่ภายในหน่วยความจำพวกนี้ถูกจองอยู่ตรงไหนของระบบ แล้วถูกจองด้วยวิธีแบบไหนกันนะ? มาทำความรู้จักส่วนประกอบภายในหน่วยความจำกันเล็กน้อยค่ะ ภายในหนึ่งโปรแกรมจะมีการจองพื้นที่หนึ่ง ๆ ไว้สำหรับใช้งานภายในโปรแกรม โดยพื้นที่ตรงนี้จะมีโครงสร้างตามรูปด้างล่างนี้ค่ะ Process Memory Layout สำหรับภาษา C   รูปนี้จะจำลองตัว Process Memory Layout ที่ใช้กันภายในภาษา C และ C++ ค่ะ ในภาษาอื่นๆ อาจจะแตกต่างกันเล็กน้อย ภายใน Process Memory Layout จะแบ่งออกเป็นสองส่วนหลักๆ คือ Static Memory Layout โดยในส่วนนี้จะใช้ในการเก็บโค้ดที่มีการแปลงเป็น Machine … Read More

ทำความรู้จักกับ VS Code extensions: Todo Tree กัน

โปรแกรมแก้ไขข้อความ หรือเท็กซ์อิดิเตอร์ (Text editor) คือสิ่งที่นักพัฒนาซอฟต์แวร์หลาย ๆ คนใช้เป็นเครื่องมือในการปรับปรุงและพัฒนาโปรแกรม หรือพูดง่าย ๆ ก็คือโปรแกรมที่นักพัฒนาใช้ในการเขียนโปรแกรมนั่นเอง เนื่องด้วยเท็กซ์อิดิเตอร์นั้นมีฟีเจอร์ต่าง ๆ ที่ช่วยให้นักพัฒนาสามารถแก้ไขโปรแกรมได้อย่างมีประสิทธิภาพ แยกสัดส่วนของโปรแกรมที่เขียนขึ้นมาได้อย่างเป็นสัดส่วน มี User Interface (UI) ที่น่าใช้งาน รวมถึงมีฟีเจอร์พื้นฐานช่วยเน้นข้อความเป็นสีต่าง ๆ ทำให้สามารถแยกแยะโค้ดได้อย่างชัดเจนอีกด้วย ในปัจจุบันเท็กซ์อิดิเตอร์มีให้เลือกใช้มากมายหลายแพลตฟอร์ม ตัวอย่างเช่น Eclipse, Atom, Sublime Text, Vim หรือโปรแกรมพื้นฐานอย่าง Notepad++ ก็ตาม แต่มีเท็กซ์อิดิเตอร์หนึ่งที่ไม่มีใครไม่รู้จัก นั่นคือ “Visual Studio Code” หรือ “VS Code” ที่เรารู้จักกันนั่นเอง VS Code นั้นถือเป็นเท็กซ์อิดิเตอร์ที่ถูกพัฒนาขึ้นโดยบริษัทยักษ์ใหญ่อย่าง Microsoft สามารถติดตั้งใช้งานได้ทั้งระบบปฏิบัติการ Windows, Linux รวมถึง macOS ก็ได้เช่นกัน VS Code นั้นเป็นที่นิยมสูงอันดับต้น ๆ … Read More

กว่าจะมาถึงฟังก์ชัน main ต้องทำอะไรบ้างนะ?

หลาย ๆ ท่านที่กำลังเขียนโปรแกรมหรือเคยเรียนเขียนโปรแกรมมาอาจจะรู้จักกันดีกับฟังก์ชันที่ชื่อว่า main ซึ่งในภาษา C นั้น ฟังก์ชัน main มักจะถูกบอกกล่าวว่าเป็นจุดเริ่มต้นของการทำงานโปรแกรม จริง ๆ แล้วในเชิงลึกนั้น โปรแกรมนั้นไม่ได้เริ่มจาก ฟังก์ชัน main แต่จะเริ่มจากสิ่งที่เรียกว่า startup routine ซึ่งเจ้าสิ่งนี้แหละเป็นส่วนสำคัญต่อการทำให้โปรแกรมทำงานครับ ทั้งนี้ผู้เขียนได้นำบทความที่น่าสนใจของเรื่องนี้จากต่างประเทศ มาแปลให้ผู้ที่สนใจได้อ่านกันครับ สงสัยจริง ๆ ก่อนฟังก์ชัน main มีอะไร? การเขียนโปรแกรมโดยใช้ภาษา C บน Windows หรือ Linux/UNIX จะเขียนโปรแกรมตั้งแต่ในฟังก์ชัน main เป็นต้นไป อย่างไรก็ตาม ดังที่กล่าวขั้นต้นโปรแกรมไม่ได้เริ่มต้นด้วยฟังก์ชัน main ก่อนหน้าฟังก์ชัน main นั้นจะมีสิ่งที่เรียกว่า startup routine อยู่ครับ ในเชิงงาน embedded หรือ งานที่เกี่ยวข้องกับบอร์ด microcontroller จำเป็นต้องทำความเข้าใจ startup routine เพื่อให้โปรแกรมทำงาน อีกทั้งในบางครั้งการดีบักโปรแกรมโดยที่ไม่รู้ว่า … Read More