เริ่มต้น 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

บทนำ

ในการพัฒนาระบบสมองกลฝังตัวเพื่อใช้ได้งานจริง ยกตัวอย่างเช่น ระบบสมองกลฝังตัวสำหรับควบคุมการจ่ายน้ำมันของเครื่องยนต์ในรถยนต์ หรือ Engine Control Unit (ECU) ผู้พัฒนาจำเป็นต้องมีช่วงออกแบบและทดสอบ โดยเป็นการรวมระบบสมองกลฝังตัวที่ผู้ใช้งานได้พัฒนาขึ้นมา เข้ากับรถยนต์จริงๆ จากนั้นทดสอบการตอบสนองของระบบ โดยจำลองเหตุการณ์ต่างๆ เช่นเซนเซอร์เสียหาย รวมถึงค้นหาข้อผิดพลาดของโปรแกรม ทั้งหมดนี้เพื่อเพิ่มความน่าเชื่อถือ (Reliability) ของระบบ และป้องกันความเสียหายที่อาจเกิดขึ้น หลังจากได้นำระบบหรือผลิตภัณฑ์ไปใช้งานจริงๆ

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

ระบบจำลองแบบ Hardware In the Loop (HIL) เป็นเทคนิคหนึ่งที่ช่วยออกแบบและทดสอบการทำงานของระบบสมองกลฝังตัว อย่างมีประสิทธิภาพ ครอบคลุมได้ทุกเหตุการณ์ และสามารถทำซ้ำๆ ได้ ระบบจำลองนี้ต้องใช้ชุดจำลองระบบ ณ เวลาจริง เชื่อมต่อกับระบบสมองกลฝังตัวที่ต้องการทดสอบหรือ embedded system under test (SUT) [1] ดังรูป 1‑1

รูป 1-1 ลักษณะทั่วไปของระบบจำลอง Hardware in the Loop

รูป 1-1 ลักษณะทั่วไปของระบบจำลอง Hardware in the Loop

หลักการจำลองแบบ 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 Simulink Model สำหรับจำลองการทำงานของระบบควบคุมความเร็วแกนหมุนของมอเตอร์

รูป 1-2 Simulink Model สำหรับจำลองการทำงานของระบบควบคุมความเร็วแกนหมุนของมอเตอร์

รูป 1-2 แสดง Model สำหรับจำลองการทำงานของระบบควบคุมความเร็วแกนหมุนของมอเตอร์ ซึ่งมีคำอธิบายการทำงานดังนี้

  1. Step block ใช้กำหนดค่าความเร็วแกนหมุนที่ต้องการ (Desired vel) ซึ่งมีค่าเท่ากับ 700
  2. แบบจำลองของมอเตอร์ไฟฟ้าใช้ Transfer function block (แบบ Continuous-time) โดยสัญญาณอินพุตคือค่า PWM Duty Cycle (ดูรายละเอียดสัญญาณ PWM ที่นี่) และสัญญาณเอาน์พุตคือความเร็วแกนหมุนของมอเตอร์
  3. ค่าสัญญาณความเร็วแกนหมุน จะถูกป้อนย้อนกลับเพื่อเปรียบเทียบค่า Desired vel แล้วส่งไปยังระบบควบคุมที่ออกแบบไว้ เพื่อปรับค่าแรงดันไฟฟ้าให้เหมาะสม
  4. ระบบควบคุมเป็นแบบ Continuous-Time PI Controller และ Discrete-Time PI Controller ซึ่งทำงานด้วย Sample time: 0.005 วินาที

ตั้งค่าวิธีจำลองการทำงานของระบบ

เลือกเมนู Simulation -> Configuration Parameters หรือกด Ctrl+E หน้าต่าง Configuration Parameters ปรากฏดังรูป 1‑3

รูป 1-3 การตั้งค่าการจำลองระบบควบคุม

รูป 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 จะเห็นได้ว่า ผลตอบสนองของแกนมอเตอร์จากระบบควบคุมทั้งสองแบบ มีความใกล้เคียงกัน

รูป 1-4 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์

รูป 1-4 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์

ตัวอย่าง Hardware in the Loop

สำหรับ Waijung Blockset การใช้งาน Hardware in the Loop (HIL) มีตัวอย่างการจำลองระบบได้ 3 แบบ ขึ้นอยู่กับการใช้งาน มีดังนี้

  1. Discrete-Time Algorithm in host PC – Plant in target เหมาะสำหรับทดสอบ Algorithm ที่มีการใช้งานความซับซ้อนมาก หรือต้องการควบคุมจาก Host
  2. Discrete-Time Algorithm in target – Plant in host PC เหมาะสำหรับทดสอบ Algorithm ที่ต้องการประยุกต์ในระบบสมองกลฝังตัว
  3. Discrete-Time Algorithm in target Continuous-Time Plant in host PC เหมาะสำหรับทดสอบ Algorithm ที่ต้องการประยุกต์ในระบบสมองกลฝังตัว เช่นกัน

อุปกรณ์ที่ใช้ในการทดลอง

รูป 2-1 อุปกรณ์ที่ใช้ในการทดลอง Hardware In the Loop (HIL)

รูป 2-1 อุปกรณ์ที่ใช้ในการทดลอง Hardware In the Loop (HIL)

รูป 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 BlockTarget Serial Rx Block
Target Serial Tx Block
Transfer ModeEnable initial value (Closed loop HIL test)Transfer ModeTransfer ModeTransfer Mode
กรณีที่ 1
ทดสอบระบบแบบ Discrete-Time
Algorithm in host PC - Plant in target
Blocking CheckedBlockingBlockingBlocking
กรณีที่ 2
ทดสอบระบบแบบ Discrete-Time
Algorithm in target - Plant in host PC
Blocking Not CheckedBlockingBlockingBlocking
กรณีที่ 3
ระบบควบคุมแบบ Discrete-Time
Algorithm in target
Continuous-Time Plant in host PC
Blocking Not CheckedBlockingBlockingBlocking

เมื่อเลือกใช้งาน 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

รูป 2-2 ข้อความใน Host Model ในกรณีที่คอมพิวเตอร์ไม่สามารถติดต่อหรือรับข้อมูลจากบอร์ด Target

รูป 2-2 ข้อความใน Host Model ในกรณีที่คอมพิวเตอร์ไม่สามารถติดต่อหรือรับข้อมูลจากบอร์ด Target

กรณีที่ 1: ทดสอบระบบ Discrete-Time Algorithm in host PC – Plant in target

การจำลองระบบ Discrete-Time Algorithm in host PC – Plant in target สามารถแสดงเป็นแผนภาพ ได้ดังรูป 2‑3

รูป 2-3 แผนภาพแสดงการจำลองระบบ Discrete-Time Algorithm in host PC - Plant in target

รูป 2-3 แผนภาพแสดงการจำลองระบบ Discrete-Time Algorithm in host PC – Plant in target

Download Model ในรูป 2‑4 ลงบนบอร์ด STM32F4Discovery โดยตัวอย่างนี้ Plant เป็นแบบจำลองทางคณิตศาสตร์ของมอเตอร์

รูป 2-4 Simulink model แบบจำลองของมอเตอร์ในบอร์ด Target

รูป 2-4 Simulink model แบบจำลองของมอเตอร์ในบอร์ด Target

รูป 2-5 Simulink model จำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ในฝั่ง Host

รูป 2-5 Simulink model จำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ในฝั่ง Host

จากรูป 2‑5 ระบบจำลองการทำงานจะให้ผลเปรียบเทียบระหว่าง Model ที่มีแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน Host PC กับแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน บอร์ด Target โดย Algorithm สำหรับควบคุมความเร็วจะอยู่ในฝั่ง Host PC

เมื่อทำการ Run Host PC ผลการจำลองจะปรากฏดังรูป 2‑6 (Double click ที่เครื่องหมายแว่นตาบนสายสัญญาณ)

รูป 2-6 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ (กรณีที่ 1)

รูป 2-6 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ (กรณีที่ 1)

กรณีที่ 2: ทดสอบระบบ Discrete-Time Algorithm in target – Plant in host

ตัวอย่างนี้จำลองการทำงานระบบควบคุมความเร็วในบอร์ด Target โดยให้แบบจำลองทางคณิตศาสตร์ของมอเตอร์ อยู่ใน Host PC ดังรูป 2‑7

รูป 2-7 แผนภาพแสดงการจำลองระบบแบบ Discrete-Time Algorithm in target - Plant in host

รูป 2-7 แผนภาพแสดงการจำลองระบบแบบ Discrete-Time Algorithm in target – Plant in host

Download Model ในรูป 2‑8 ลงบนบอร์ด STM32F4Discovery ซึ่งเป็นระบบควบคุมมอเตอร์ โดยรับค่าความเร็วที่ต้องการ (Set point) กับความเร็วที่ได้จากแบบจำลอง (Process Variable) ผ่าน UART Rx Block และส่งคำสั่ง PWM duty cycle ผ่าน UART Tx Block

รูป 2-8 Simulink model จำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ในบอร์ด Target

รูป 2-8 Simulink model จำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ในบอร์ด Target

รูป 2-9 Simulink model แบบจำลองของมอเตอร์ในฝั่ง Host

รูป 2-9 Simulink model แบบจำลองของมอเตอร์ในฝั่ง Host

จากรูป 2‑9 ระบบจำลองการทำงานจะให้ผลเปรียบเทียบระหว่าง Model ที่มีแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน Host PC กับแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Discrete-Time ใน Host โดย Algorithm สำหรับควบคุมความเร็ว อยู่ใน Host PC ซึ่งให้ผลดังรูป 2‑10

รูป 2-10 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ (กรณีที่ 2)

รูป 2-10 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ (กรณีที่ 2)

กรณีที่ 3: ทดสอบระบบ Discrete-Time Algorithm in target – Continuous-Time Plant in host

ตัวอย่างนี้จำลองการทำงานระบบควบคุมความเร็วในบอร์ด Target เช่นเดียวกับกรณีที่ 2 แต่เปลี่ยนแบบจำลองทางคณิตศาสตร์ของมอเตอร์ที่อยู่ใน Host PC ให้เป็นแบบ Continuous-time แสดงดังรูป 2‑11 สำหรับฝั่งบอร์ด Target ให้ยังคงใช้ Algorithm สำหรับควบคุมความเร็วในรูป 2‑8

รูป 2-11 Simulink model แบบจำลองของมอเตอร์แบบ Continuous time ในฝั่ง Host PC

รูป 2-11 Simulink model แบบจำลองของมอเตอร์แบบ Continuous time ในฝั่ง Host PC

ระบบจำลองการทำงานจะให้ผลเปรียบเทียบระหว่างระบบควบคุมความเร็วมี Algorithm อยู่ในบอร์ด Target กับ Algorithm ที่อยู่ใน Host PC โดยแบบจำลองทางคณิตศาสตร์ของมอเตอร์แบบ Continuous-Time อยู่ใน Host PC ซึ่งให้ผลดังรูป 2‑12

หมายเหตุ ผู้ใช้งานควรกดปุ่ม Reset บนบอร์ด Target ทุกครั้ง ก่อนจะทำการ Run Simulation Model อีกครั้ง

รูป 2-12 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ (กรณีที่ 3)

รูป 2-12 ผลการจำลองระบบควบคุมความเร็วแกนหมุนของมอเตอร์ (กรณีที่ 3)

เอกสารอ้างอิง

  1. Ledin, Jim A. “Hardware-in-the-loop simulation,” Embedded Systems Programming, vol 12, pp. 42-62, 1999.
  2. http://waijung.aimagin.com/index.htm?hardware_in_the_loop_tests_demo.htm
  3. http://waijung.aimagin.com/amg_usbconverter_n2.htm