บทความนี้เราจะมากล่าวถึงการแปลง Frame เป็น Signals ด้วยไฟล์ dbc ใน LabVIEW โดยเราจำเป็นต้องทำการติดตั้งซอฟต์แวร์ดังต่อไปนี้เสียก่อน
– LabVIEW 2022Q3 หรือใหม่กว่า
– Python 3.6 หรือใหม่กว่า
– ติดตั้งไลบรารี่ cantools ด้วยคำสั่ง pip install cantools
– ตั้งค่า environment variable โดยไปที่ View Advanced System Settings>Environment Variables>System variables>New ตั้งค่า PYTHONPATH เป็นตามด้านล่าง โดยให้กำหนดติดกันทั้งหมดและมีเซมิโคลอน (;) คั่นแต่ละค่า ทั้งนี้ต้องทำการเปลี่ยนเวอร์ชั่นของ Python ตามที่ใช้งานจริง
- C:\Users\<username>\AppData\Local\Programs\Python\Python311;
- C:\Users\<username>\AppData\Local\Programs\Python\Python311\Lib;
- C:\Users\<username>\AppData\Local\Programs\Python\Python311\DLLs;
- C:\Users\<username>\AppData\Local\Programs\Python\Python311\Lib\site-packages;
หลังจากนั้นจึงทำตามขั้นตอนดังต่อไปนี้
1. สร้างไฟล์ Python ดังแสดงในภาพด้านล่าง โดยไฟล์นี้จะมีสามฟังก์ชั่น
– InitDatabase: สำหรับอ่านไฟล์ dbc และสร้างออบเจ็คท์ดาต้าเบส db
– Decode: ใช้สำหรับอ่านอาร์เรย์ของตัวเลขที่อ่านเข้ามาจากสัญญาณ CAN แล้วแปลงเป็นสัญญาณโดยใช้ข้อมูลที่เก็บไว้ในออบเจ็คท์ดาต้าเบส db โดยจะให้ค่าที่ได้กลับมาเป็นสตริง json
– Encode: ทำการอ่านชื่อสัญญาณและค่าของสัญญาณแล้วนำไปสร้างเป็นอาร์เรย์ของตัวเลขโดยใช้ข้อมูลที่เก็บไว้ในออบเจ็คท์ดาต้าเบส db โดยจะให้ค่าที่ได้กลับมาเป็นสตริง json ของอาร์เรย์ของตัวเลข
2. เปิด LabVIEW แล้วสร้าง Block Diagram ดังแสดงในภาพด้านล่าง โดย VI ที่ใช้เชื่อมโยงกับ Python จะอยู่ใน Connectivity>Python
– A: ใช้ฟังก์ชั่น Open Python Session เพื่อเชื่อมต่อกับ Python โดยต้องระบุรุ่นของ Python ที่ใช้งาน
– B: ใช้ฟังก์ชั่น Python Node เรียกฟังก์ชั่น InitDatabase โดยต้องใส่ Python Object Refnum Constant เพื่อสร้างออบเจ็คท์ดาต้าเบส db และใส่พาธไปยังไฟล์ dbc
– C: ใช้ฟังก์ชั่น Python Node เรียกฟังก์ชั่น Decode โดยต้องใส่ออบเจ็คท์ดาต้าเบส db, หมายเลขเฟรม (2000 สามารถเปลี่ยนได้ตามหมายเลขเฟรมจริง) และอาร์เรย์ของตัวเลขที่จะแปลงโดยสัญญาณซึ่งจะได้มาจากการอ่านสัญญาณ CAN
– D: ใช้ฟังก์ชั่น Python Node เรียกฟังก์ชั่น Encode โดยต้องใส่ออบเจ็คท์ดาต้าเบส db, หมายเลขเฟรม (2000 สามารถเปลี่ยนได้ตามหมายเลขเฟรมจริง), อาร์เรย์ของชื่อสัญญาณ (ตัวใหญ่ตัวเล็กต้องป้อนให้ถูกต้อง) และค่าสัญญาณที่จะทำการแปลงแล้วส่งออกไปเป็นสัญญาณ CAN
– E: ใช้ฟังก์ชั่น Close Python Session เพื่อหยุดเชื่อมต่อกับ Python
– F: ใช้ฟังก์ชั่น Close Reference เพื่อทำลายออบเจ็คท์ดาต้าเบส db
3. ตั้งค่าบนพาธไปยังไฟล์ไพธอนในข้อ 1 (module path), พาธไปยังไฟล์ dbc (dbc file), ข้อมูลที่อ่านเข้ามาจากสัญญาณ CAN (data), ชื่อสัญญาณ (key) และค่าสัญญาณ (value) บน Front Panel แล้วทำการรัน Rx จะแสดงสตริง json ที่ได้มาจากการแปลง data โดยเราสามารถใช้ฟังก์ชั่น Unflatten From JSON เพื่อแปลงไปเป็นข้อมูลที่ต้องการใช้งาน ส่วน Tx จะแสดงสตริง JSON ซึ่งเราสามารถใช้ฟังก์ชั่น Unflatten From JSON เพื่อแปลงเป็นอาร์เรย์ของตัวเลขแล้วทำการส่งในรูปแบบของสัญญาณ CAN
หวังว่าบทความนี้จะให้ความรู้ในการแปลงค่าระหว่าง Frame และ Signals ด้วยไฟล์ dbc ใน LabVIEW พิเศษ!!! สำหรับลูกค้าที่ซื้อ Ixxat CAN Interface จากเทคสแควร์ ท่านสามารถติดต่อทีมงานเทคสแควร์เพื่อขอรับไลบรารี่สำหรับแปลงค่าพร้อมใช้งานได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม
บทความที่เกี่ยวข้อง