เริ่มต้น Hardware in the Loop ด้วย Waijung
Hardware-in-the-loop (HIL) simulation is a technique for performing system-level testing of embedded systems in a comprehensive, cost-effective, and repeatable manner [1]
Download all demo files: HIL.7z
Contents
- บทนำ
- ตัวอย่าง Hardware in the Loop
- อุปกรณ์ที่ใช้ในการทดลอง
- การตั้งค่าการสื่อสารแบบ UART ใน Host และ Target
- ตารางแสดงการตั้งค่า Serial Block ใน Host PC และบอร์ด Target
- กรณีที่ 1: ทดสอบระบบ Discrete-Time Algorithm in host PC – Plant in target
- กรณีที่ 2: ทดสอบระบบ Discrete-Time Algorithm in target – Plant in host
- กรณีที่ 3: ทดสอบระบบ Discrete-Time Algorithm in target – Continuous-Time Plant in host
- เอกสารอ้างอิง
บทนำ
ในการพัฒนาระบบสมองกลฝังตัวเพื่อใช้ได้งานจริง ยกตัวอย่างเช่น ระบบสมองกลฝังตัวสำหรับควบคุมการจ่ายน้ำมันของเครื่องยนต์ในรถยนต์ หรือ Engine Control Unit (ECU) ผู้พัฒนาจำเป็นต้องมีช่วงออกแบบและทดสอบ โดยเป็นการรวมระบบสมองกลฝังตัวที่ผู้ใช้งานได้พัฒนาขึ้นมา เข้ากับรถยนต์จริงๆ จากนั้นทดสอบการตอบสนองของระบบ โดยจำลองเหตุการณ์ต่างๆ เช่นเซนเซอร์เสียหาย รวมถึงค้นหาข้อผิดพลาดของโปรแกรม ทั้งหมดนี้เพื่อเพิ่มความน่าเชื่อถือ (Reliability) ของระบบ และป้องกันความเสียหายที่อาจเกิดขึ้น หลังจากได้นำระบบหรือผลิตภัณฑ์ไปใช้งานจริงๆ
อย่างไรก็ตาม ช่วงทดสอบระบบ เป็นส่วนที่มีค่าใช้จ่ายมากที่สุด เพราะมีค่าใช้จ่ายของอุปกรณ์ทดสอบและต้องใช้เวลามากที่สุดเพื่อวิเคราะห์ข้อมูลต่างๆ การลดต้นทุนและเวลาทดสอบโดยยังคงประสิทธิภาพของการทดสอบ เป็นงานที่ท้าทาย
ระบบจำลองแบบ Hardware In the Loop (HIL) เป็นเทคนิคหนึ่งที่ช่วยออกแบบและทดสอบการทำงานของระบบสมองกลฝังตัว อย่างมีประสิทธิภาพ ครอบคลุมได้ทุกเหตุการณ์ และสามารถทำซ้ำๆ ได้ ระบบจำลองนี้ต้องใช้ชุดจำลองระบบ ณ เวลาจริง เชื่อมต่อกับระบบสมองกลฝังตัวที่ต้องการทดสอบหรือ embedded system under test (SUT) [1] ดังรูป 1‑1
หลักการจำลองแบบ HIL สามารถนำมาประยุกต์ใช้งานได้หลากหลาย ตั้งแต่การจำลองระบบอย่างง่าย เช่น ควบคุมอุณหภูมิห้อง ความเร็วของมอเตอร์ไฟฟ้า ไปจนถึงระบบที่ซับซ้อน เช่นระบบแขนหุ่นยนต์ ระบบเครื่องยนต์ หรือระบบบินอัตโนมัติของเครื่องบิน เป็นต้น
ทำไมต้องใช้ Matlab กับงาน HIL test
- Matlab มีเครื่องมือออกแบบวิเคราะห์ทางคณิตศาสตร์และวิศวกรรมที่สมบูรณ์ ใช้งานง่าย เช่น Simulink Toolbox จึงเป็นเครื่องมือหนึ่งที่นิยมใช้สร้างแบบจำลองทางคณิตศาสตร์ของระบบต่างๆ อย่างง่ายไปจนถึงระบบที่ซับซ้อน
- แบบจำลองทางคณิตศาสตร์ที่สร้างด้วย Matlab Simulink Toolbox สามารถตั้งค่าและแก้ไขสมการได้ง่าย เมื่อป้อนสัญญาณอินพุตชนิดต่างๆเข้าไป ผู้พัฒนาสามารถสังเกตผลตอบสนองของแบบจำลองได้ทันทีโดยไม่ต้องเขียนโปรแกรม จึงช่วยให้ผู้พัฒนาออกแบบระบบต่างๆ ได้รวดเร็ว
- การใช้ Matlab กับงาน HIL test เหมาะสำหรับงานเฉพาะ อย่างเช่น test flight control system ซึ่งเป็นระบบที่ซับซ้อนและทดสอบได้ยาก ด้วยเหตุผลด้านความปลอดภัย ระบบที่ออกแบบจำเป็นต้องทดสอบด้วยแบบจำลองให้แน่ใจก่อนจะนำไปทดสอบกับเครื่องบินจริงๆ เป็นต้น
แบบจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์
จุดประสงค์
- เพื่อให้ผู้ใช้งานสามารถสร้างแบบจำลองของระบบควบคุมได้ ทั้งแบบ Continuous-time กับ Discrete-time
- เพื่อเปรียบเทียบผลที่ได้จากการแบบจำลองของระบบควบคุมได้ ทั้งแบบ Continuous-time กับ Discrete-time
ตัวอย่างนี้เป็นการจำลองการทำงานของระบบควบคุมความเร็วแกนหมุนของมอเตอร์ โดยมีแบบจำลองทางคณิตศาสตร์แสดงความสัมพันธ์ระหว่าง PWM Duty Cycle กับความเร็วแกนหมุนของมอเตอร์ อย่างไรก็ตามการประยุกต์ระบบควบคุมในระบบสมองกลฝังตัวจำเป็นต้องใช้ในรูปแบบ Discrete-time ซึ่งค่า Sample time ของระบบ จะมีผลต่อการหาตัวแปรในระบบควบคุมและผลตอบสนองของแบบจำลองนั้น ๆ
การใช้งาน MatLAB Simulink Toolbox ช่วยผู้พัฒนาออกแบบระบบควบคุมในระบบสมองกลฝังตัว โดยจำลองการทำงานของระบบ และนำผลที่ได้มาเปรียบเทียบกับผลจำลองการทำงานแบบ Continuous-time
รูป 1-2 แสดง Model สำหรับจำลองการทำงานของระบบควบคุมความเร็วแกนหมุนของมอเตอร์ ซึ่งมีคำอธิบายการทำงานดังนี้
- Step block ใช้กำหนดค่าความเร็วแกนหมุนที่ต้องการ (Desired vel) ซึ่งมีค่าเท่ากับ 700
- แบบจำลองของมอเตอร์ไฟฟ้าใช้ Transfer function block (แบบ Continuous-time) โดยสัญญาณอินพุตคือค่า PWM Duty Cycle (ดูรายละเอียดสัญญาณ PWM ที่นี่) และสัญญาณเอาน์พุตคือความเร็วแกนหมุนของมอเตอร์
- ค่าสัญญาณความเร็วแกนหมุน จะถูกป้อนย้อนกลับเพื่อเปรียบเทียบค่า Desired vel แล้วส่งไปยังระบบควบคุมที่ออกแบบไว้ เพื่อปรับค่าแรงดันไฟฟ้าให้เหมาะสม
- ระบบควบคุมเป็นแบบ Continuous-Time PI Controller และ Discrete-Time PI Controller ซึ่งทำงานด้วย Sample time: 0.005 วินาที
ตั้งค่าวิธีจำลองการทำงานของระบบ
เลือกเมนู Simulation -> Configuration Parameters หรือกด Ctrl+E หน้าต่าง Configuration Parameters ปรากฏดังรูป 1‑3
ผู้ใช้งานควรตั้งค่าการทำงานดังนี้
- Stop time: 5 เพื่อกำหนดระยะเวลาในการจำลองการทำงาน 5 วินาที
- Solver Option type: Fixed-step เพื่อให้ Sample time การจำลองการทำงานของ Model คงที่
- Fixed-step size: 0.005 เพื่อกำหนดค่า Sample time
ผลจำลองการทำงาน
เมื่อทำการ Run Simulation โดยเลือก Icon ผลการจำลองระบบควบคุมแบบ Continuous-time controller และ Discrete-time controller แสดงดังรูป 1‑4 จะเห็นได้ว่า ผลตอบสนองของแกนมอเตอร์จากระบบควบคุมทั้งสองแบบ มีความใกล้เคียงกัน
ตัวอย่าง Hardware in the Loop
สำหรับ Waijung Blockset การใช้งาน Hardware in the Loop (HIL) มีตัวอย่างการจำลองระบบได้ 3 แบบ ขึ้นอยู่กับการใช้งาน มีดังนี้
- Discrete-Time Algorithm in host PC – Plant in target เหมาะสำหรับทดสอบ Algorithm ที่มีการใช้งานความซับซ้อนมาก หรือต้องการควบคุมจาก Host
- Discrete-Time Algorithm in target – Plant in host PC เหมาะสำหรับทดสอบ Algorithm ที่ต้องการประยุกต์ในระบบสมองกลฝังตัว
- Discrete-Time Algorithm in target Continuous-Time Plant in host PC เหมาะสำหรับทดสอบ Algorithm ที่ต้องการประยุกต์ในระบบสมองกลฝังตัว เช่นกัน
อุปกรณ์ที่ใช้ในการทดลอง
รูป 2‑1 แสดงอุปกรณ์ที่ใช้ในการทดลอง Hardware In the Loop ซึ่งใช้บอร์ด STM32F4Discovery (เลือกใช้บอร์ด FiO2 แทนได้) เป็นบอร์ด Target และ aMG USB Converter-N-Adapter สำหรับรับส่งข้อมูลความเร็วสูง ไปยังคอมพิวเตอร์หรือ Host PC
การตั้งค่าการสื่อสารแบบ UART ใน Host และ Target
เพื่อให้ได้ผลการจำลองที่มีประสิทธิภาพมากที่สุด ผู้ใช้งานควรตั้งค่าการใช้งาน Host Serial Block (ใน Model ฝั่ง Host) และ UART Rx/Tx Block (ใน Model ฝั่ง Target) ดังตาราง โดยแบ่งตามลักษณะของ HIL
ตารางแสดงการตั้งค่า Serial Block ใน Host PC และบอร์ด Target
ฝั่ง Host | ฝั่ง Target | ||||
---|---|---|---|---|---|
Host Serial Rx Block | Host Serial Tx Block | Target Serial Rx Block | Target Serial Tx Block | ||
Transfer Mode | Enable initial value (Closed loop HIL test) | Transfer Mode | Transfer Mode | Transfer Mode |
|
กรณีที่ 1 ทดสอบระบบแบบ Discrete-Time Algorithm in host PC - Plant in target | Blocking | Checked | Blocking | Blocking | Blocking |
กรณีที่ 2 ทดสอบระบบแบบ Discrete-Time Algorithm in target - Plant in host PC | Blocking | Not Checked | Blocking | Blocking | Blocking |
กรณีที่ 3 ระบบควบคุมแบบ Discrete-Time Algorithm in target Continuous-Time Plant in host PC | Blocking | Not Checked | Blocking | Blocking | Blocking |
เมื่อเลือกใช้งาน Enable initial value (Closed loop HIL test) ฝั่ง host จะส่งค่าเริ่มต้นไปยัง target เมื่อเริ่มต้นการจำลองระบบ เพื่อให้แน่ใจว่าการรับส่งข้อมูลระหว่าง host และ target สามารถรับส่งได้ถูกต้อง การตั้งค่า Enable initial value นี้ ใช้ในกรณีที่ 1 เท่านั้น นอกจากนี้ผู้ใช้งานต้อง Reset บอร์ด Target ด้วยตัวเอง ก่อนที่จะทดสอบใน HIL
นอกจากนี้ ผู้ใช้งานต้องกำหนดรูปแบบการรับส่งข้อมูลระหว่าง Host และ Target ให้ตรงกัน แนะนำให้ใช้แบบ Binary เพื่อให้รับส่งข้อมูลแบบความเร็วสูงได้ ในกรณีที่คอมพิวเตอร์ไม่สามารถติดต่อหรือรับข้อมูลจากบอร์ด Target ได้ ข้อความดังรูป 2‑2 จะปรากฏเมื่อทำการ Run Host Model
กรณีที่ 1: ทดสอบระบบ Discrete-Time Algorithm in host PC – Plant in target
การจำลองระบบ Discrete-Time Algorithm in host PC – Plant in target สามารถแสดงเป็นแผนภาพ ได้ดังรูป 2‑3
Download Model ในรูป 2‑4 ลงบนบอร์ด STM32F4Discovery โดยตัวอย่างนี้ Plant เป็นแบบจำลองทางคณิตศาสตร์ของมอเตอร์
จากรูป 2‑5 ระบบจำลองการทำงานจะให้ผลเปรียบเทียบระหว่าง Model ที่มีแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน Host PC กับแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน บอร์ด Target โดย Algorithm สำหรับควบคุมความเร็วจะอยู่ในฝั่ง Host PC
เมื่อทำการ Run Host PC ผลการจำลองจะปรากฏดังรูป 2‑6 (Double click ที่เครื่องหมายแว่นตาบนสายสัญญาณ)
กรณีที่ 2: ทดสอบระบบ Discrete-Time Algorithm in target – Plant in host
ตัวอย่างนี้จำลองการทำงานระบบควบคุมความเร็วในบอร์ด Target โดยให้แบบจำลองทางคณิตศาสตร์ของมอเตอร์ อยู่ใน Host PC ดังรูป 2‑7
Download Model ในรูป 2‑8 ลงบนบอร์ด STM32F4Discovery ซึ่งเป็นระบบควบคุมมอเตอร์ โดยรับค่าความเร็วที่ต้องการ (Set point) กับความเร็วที่ได้จากแบบจำลอง (Process Variable) ผ่าน UART Rx Block และส่งคำสั่ง PWM duty cycle ผ่าน UART Tx Block
จากรูป 2‑9 ระบบจำลองการทำงานจะให้ผลเปรียบเทียบระหว่าง Model ที่มีแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน Host PC กับแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน Host โดย Algorithm สำหรับควบคุมความเร็ว อยู่ใน Host PC ซึ่งให้ผลดังรูป 2‑10
กรณีที่ 3: ทดสอบระบบ Discrete-Time Algorithm in target – Continuous-Time Plant in host
ตัวอย่างนี้จำลองการทำงานระบบควบคุมความเร็วในบอร์ด Target เช่นเดียวกับกรณีที่ 2 แต่เปลี่ยนแบบจำลองทางคณิตศาสตร์ของมอเตอร์ที่อยู่ใน Host PC ให้เป็นแบบ Continuous-time แสดงดังรูป 2‑11 สำหรับฝั่งบอร์ด Target ให้ยังคงใช้ Algorithm สำหรับควบคุมความเร็วในรูป 2‑8
ระบบจำลองการทำงานจะให้ผลเปรียบเทียบระหว่างระบบควบคุมความเร็วมี Algorithm อยู่ในบอร์ด Target กับ Algorithm ที่อยู่ใน Host PC โดยแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Continuous-Time อยู่ใน Host PC ซึ่งให้ผลดังรูป 2‑12
หมายเหตุ ผู้ใช้งานควรกดปุ่ม Reset บนบอร์ด Target ทุกครั้ง ก่อนจะทำการ Run Simulation Model อีกครั้ง
เอกสารอ้างอิง
- Ledin, Jim A. “Hardware-in-the-loop simulation,” Embedded Systems Programming, vol 12, pp. 42-62, 1999.
- http://waijung.aimagin.com/index.htm?hardware_in_the_loop_tests_demo.htm
- http://waijung.aimagin.com/amg_usbconverter_n2.htm