ในปัจจุบันได้มีการนำคอมพิวเตอร์มาใช้ในการควบคุมอุปกรณ์ต่าง ๆ ในอุตสาหกรรม เช่น ระบบควบคุมในรถยนต์ ระบบควบคุมกระบวนการ หุ่นยนต์เป็นต้น แต่ขบวนการในการเขียนซอฟต์แวร์เพื่อวิเคราะห์ระบบ ผู้ที่ทำการเขียนซอฟต์แวร์จะต้องมีความรู้ทั้งทางด้านซอฟต์แวร์และฮาร์ดแวร์ของคอมพิวเตอร์เป็นอย่างดี
1.บทนำ |
. |
ในปัจจุบันได้มีการนำคอมพิวเตอร์มาใช้ในการควบคุมอุปกรณ์ต่าง ๆ ในอุตสาหกรรมกันอย่างแพร่หลาย เช่น ระบบควบคุมในรถยนต์ ระบบควบคุมกระบวนการ และ ระบบควบคุมหุ่นยนต์เป็นต้น แต่ขบวนการในการเขียนซอฟต์แวร์เพื่อวิเคราะห์ระบบ และ ทำให้คอมพิวเตอร์สามารถติดต่อและควบคุมอุปกรณ์ต่างๆ ได้นั้น ผู้ที่ทำการเขียนซอฟต์แวร์จะต้องมีความรู้ทั้งทางด้านซอฟต์แวร์และฮาร์ดแวร์ของคอมพิวเตอร์เป็นอย่างดี อีกทั้งการเขียนซอฟต์แวร์ยังเป็นลักษณะการเขียนแบบฮาร์ดโค้ด ทำให้การนำคอมพิวเตอร์มาควบคุมอุปกรณ์ต่างๆมีค่าใช้จ่ายสูงและใช้เวลาในการออกแบบนานเพื่อแก้ไขปัญหาดังกล่าวจึงได้มีการพัฒนาซอฟต์แวร์ MATLAB/SIMULINK ขึ้น โดยใช้ลักษณะการเขียนโปรแกรมร่วมกันระหว่างฮาร์ดโค้ดและบล็อกไดอะแกรม ช่วยลดปัญหาการเขียนโปรแกรมแบบเดิมลงได้มาก อีกทั้งยังสามารถนำบล็อกไดอะแกรมที่สร้างขึ้นมานำกลับมาใช้ใหม่ได้ จึงทำให้ MATLAB/SIMULINK เป็นที่นิยมกันอย่างกว้างขวางทั้งในอุตสาหกรรมและการศึกษา |
. |
อย่างไรก็ตามถึงแม้ MATLAB/SIMULINK จะสามารถใช้งานด้านการควบคุมแบบเวลาจริงได้ดี แต่ก็ยังมีข้อด้อยอื่นๆ เช่น การปรับแต่งซอฟต์แวร์ค่อนข้างซับซ้อน การ์ดอินเตอร์เฟสที่สามารถใช้ร่วมกับ MATLAB/SIMULINK มีค่อนข้างจำกัด และการเขียนดีไวด์ไดร์เวอร์เองทำได้ยาก ดังนั้นจึงได้มีการผลิตซอฟต์แวร์อื่นๆ ขึ้นมาใช้ร่วมกับ MATLAB/SIMULINK เพื่อแก้ไขข้อด้อยดังกล่าว |
. |
ในบทความนี้จะได้ศึกษาซอฟต์แวร์ที่ผลิตขึ้น เพื่อใช้ร่วมกับMATLAB/SIMULINKในการติดต่อกับอุปกรณ์ภายนอกคอมพิวเตอร์และทำให้ MATLAB/SIMULINK ทำงานแบบเวลาจริงได้ ซอฟต์แวร์ดังกล่าวคือ xPC Target, IOlib–Hardware Input/Output Library for MATLAB/SIMULINK และ Real–Time Interface (RTI) โดยจะนำเสนอรูปแบบและวิธีการประยุกต์ใช้ซอฟต์แวร์ดังกล่าว ร่วมกับการทดลองกับอุปกรณ์ทดลองต่างๆ เช่น การควบคุมแขนกล การควบคุมตำแหน่งของมอเตอร์ไฟฟ้ากระแสตรง และการควบคุมลูกตุ้มผกผัน |
. |
บทความนี้มีรายละเอียดดังนี้ ในส่วนที่ 2 นำเสนอซอฟต์แวร์ xPC Target, ส่วนที่ 3 นำเสนอซอฟต์แวร์ IOlib–Hardware Input/Output Library for MATLAB/SIMULINK, ส่วนที่ 4 การนำเสนอซอฟต์แวร์ Real–Time Interface (RTI), ในส่วนที่ 5 การเปรียบเทียบซอฟต์แวร์ต่างๆ และในส่วนที่ 6 เป็นการสรุปผล |
. |
2. xPC Target |
2.1 รูปแบบการใช้งาน xPC Target [8] เป็นซอฟต์แวร์ที่ทางบริษัท MathWorks เป็นผู้ผลิตซอฟต์แวร์ MATLAB/SIMULINK ทำการผลิตออกมาเอง เพื่อทำให้ MATLAB/SIMULINK สามารถควบคุมอุปกรณ์ภายนอกคอมพิวเตอร์ได้แบบเวลาจริง ในการใช้งาน xPC Target นั้นจะต้องมีเครื่องที่เป็น Target ไว้ใช้สำหรับในการดาวน์โหลดโค้ดที่เขียนขึ้นมาจากคอมพิวเตอร์หลัก เครื่องที่เป็น Target นั้นสามารถเป็นได้หลายรูปแบบ เช่น คอมพิวเตอร์ตั้งโต๊ะ PC/104 หรือ Single Board Computer ก็ได้ เนื่องจากเครื่องที่เป็น Target ไม่ได้ใช้ระบบปฏิบัติการ วินโดส์ทำให้สามารถกำหนดคาบเวลาในการสุ่มได้ต่ำเป็น ระดับไมโครวินาที ในส่วนของฮาร์ดแวร์ที่ต้องมีในการใช้ xPC Target คือ พอร์ตอนุกรม ซีพียูระดับแพนเทียม คีย์บอร์ด เมาส์ Floppy disk drive แรมขนาดไม่ต่ำกว่า 8 MB ในส่วนของซอฟต์แวร์จะต้องมีเพิ่มเติมคือ MATLAB/SIMULINK, Real–Time Workshop toolbox, Watcom C/C++ หรือ Microsoft C/C++ |
. |
2.2 การประยุกต์ใช้ xPC Target ในการประยุกต์ใช้ xPC Target นั้น ทางทางสถาบันวิทยาการหุ่นยนต์ภาคสนาม (ฟีโบ้) ได้ทำการทดลองใช้ xPC Target เป็นตัวควบคุมแบบทำซ้ำในเวลาจริง[1][2] เพื่อควบคุมตำแหน่งของหุ่นยนต์สกาล่าดังรูปที่ 1 |
. |
รูปที่ 1 แสดงหุ่นยนต์สองแกนแบบสกาล่าที่ใช้ในการทดลอง |
. |
จากการทดลองพบว่าสามารถลดค่าความผิดพลาดของตำแหน่งลงได้เป็นอย่างมากเมื่อเทียบกับงานวิจัยก่อนหน้านี้ ในการใช้งาน xPC Target นั้น พบว่าเมื่อมีการเปลี่ยนแปลงค่าพารามิเตอร์บางบล็อกจะต้องมีการคอมไพล์ไฟล์ใหม่ทุกครั้ง ทำให้เสียเวลาในการคอมไพล์ และ บล็อกใน SIMULINK [7] บางบล็อกก็ไม่สามารถใช้ร่วมกับ xPC Target ได้ ส่วนคาบเวลาในการสุ่มจะได้ต่ำสุดเป็นเท่าใดนั้นก็ขึ้นอยู่กับ ความซับซ้อน ของโมเดลที่สร้างขึ้น การสังเกตค่าที่เปลี่ยนแปลงไปขณะควบคุมสามารถดูได้จาก xPC Target Scope จะแสดงที่เครื่อง Target ส่วนการเก็บค่าที่ได้จากการทดลองจะต้องรอให้เครื่อง Target ทำงานเสร็จเรียบร้อยเสียก่อนจึงจะสามารถดึงข้อมูลที่เก็บไว้มาดูที่ Host PC ได้ |
. |
3.IOlib–Hardware Input/Output Library for MATLAB/SIMULINK |
3.1 รูปแบบการใช้งาน IOlib ผู้ที่เขียนซอฟต์แวร์ไลบารี นี้คือ Professor Dr.-Ing. Werner Zimmermann (http://www.it.fht-esslingen.de/~zimmerma/) โดยที่ซอฟต์แวร์นี้จะทำให้สามารถกำหนดพอร์ต I/O และ หน่วยความจำ I/O ของฮาร์ดแวร์ได้โดยตรงจาก MATLAB/SIMULINK รวมทั้งสามารถใช้งานอินเตอร์รัปต์และไทเมอร์ ได้อีกด้วย นอกจากนี้ยังมีบล็อกพิเศษใน SIMULINK ที่ทำให้ SIMULINK สามารถทำงานในลักษณะเวลาจริงได้ รวมทั้งยังมีบล็อกสำหรับรับส่งข้อมูลโดยการเชื่อมต่อแบบ TCP/IP ไลบารีดังกล่าวสามารถใช้งานได้ทั้งบน Windows 9x และ Windows NT การใช้งานก็เพียงแต่ทำการติดตั้งซอฟต์แวร์ในโฟเดอร์ที่ต้องการจากนั้นก็เซ็ตอับให้ Windows และ MATLAB รู้จักโฟเดอร์ดังกล่าวก็เป็นอันใช้ได้แล้ว ซอฟต์แวร์นี้ไม่จำเป็นต้องมีเครื่องที่เป็น Target เพราะจะใช้ Host PC เป็นทั้งตัวควบคุมและ ตัวเขียนโปรแกรม |
. |
รูปที่ 2 แสดงบล็อกไลบารีของ IOlib |
. |
3.2 การประยุกต์ใช้ IOlib ในการประยุกต์ใช้ IOlib นั้น ได้ทำการออกแบบตัวควบคุม PD และ ตัวควบคุมแบบฟัซซี ในการควบคุมตำแหน่งของมอเตอร์ไฟฟ้ากระแสตรง รวมทั้งได้ออกแบบตัวควบคุมแบบฟัซซีในการควบคุมลูกตุ้มผกผัน รูปของอุปกรณ์ทดลองแสดงดังรูปที่ 3 และ 4 |
. |
.
|
รูปที่ 3 แสดงชุดทดลองการควบคุมตำแหน่งของมอเตอร์ไฟฟ้ากระแสตรง |
. |
รูปที่ 4 แสดงชุดทดลองการควบคุมลูกตุ้มผกผัน |
. |
สำหรับการควบคุมตำแหน่งของมอเตอร์ไฟฟ้ากระแสตรงนั้น ในส่วนของการออกตัวตัวควบคุมแบบ PD ใช้วิธีการของ Ziegler-Nicholes Rules [3] ส่วนตัวควบคุมแบบฟัซซีใช้วิธีกำหนดอินพุตเป็นค่าความผิดพลาด |
. |
รูปที่ 5 แสดงผลการทดลองการควบคุมตำแหน่งของมอเตอร์ไฟฟ้ากระแสตรง |
. |
จากผลการทดลอง พบว่าตัวควบคุมแบบฟัซซีให้ค่าความผิดพลาดน้อยกว่าตัวควบคุมแบบ PD ทั้งนี้ เนื่องมาจากตัวควบคุมแบบฟัซซีมีลักษณะเป็นตัวควบคุมที่ไม่เป็นเชิงเส้นจึงสามารถกำจัดค่าความผิดพลาดอันเนื่องมาจากความไม่เป็นเชิงเส้นได้ดีกว่าตัวควบคุมแบบ PD |
. |
ส่วนการควบคุมลูกตุ้มผกผันนั้น ตัวควบคุมแบบฟัซซีใช้หลักการของ Virtual target angle [5] ในการออกแบบตัวควบคุมแบบฟัซซีและใช้ Fuzzy Toolbox ในการสร้างตัวควบคุมแบบฟัซซี ส่วนคาบเวลาในการสุ่มกำหนดให้เท่ากับ 8 ms ผลการทดลองเป็นไปตามรูปที่ 6 |
. |
รูปที่ 6 แสดงผลการทดลองการควบคุมลูกตุ้มผกผัน |
. |
จากผลการทดลองควบคุมลูกตุ้มผกผัน พบว่าตัวควบคุมแบบฟัซซีให้ผลการควบคุมเป็นที่หน้าพอใจทั้งตำแหน่งของลูกตุ้มและตำแหน่งของตัวรถ |
. |
จากการทดลองทั้ง 2 กรณีข้างต้นพบว่าซอฟต์แวร์ IOlib สามารถทำให้ SIMULINK ทำงานแบบเวลาจริงได้ดีพอสมควร อีกทั้งเมื่อเปลี่ยนค่าพารามิเตอร์ของโมเดลที่สร้างขึ้น ไม่มีการคอมไพล์ไฟล์ใหม่และบล็อกทุกบล็อกใน SIMULINK สามารถใช้ร่วมกับ IOlib ได้อย่างไม่มีปัญหาทำให้ประหยัดเวลาในการที่จะต้องแปลงโค้ดที่เขียนอยู่ในรูปของ m files ไปเป็นบล็อกไดอะแกรมอีกทีหนึ่ง และเนื่องจาก IOlib ไม่ยึดติดกับการ์ดอินเตอร์เฟสของผู้ผลิตรายใด ทำให้สามารถสร้างการ์ดอินเตอร์เฟสเองขึ้นมาได้แล้วใช้ IOlib ในการติดต่อกับการ์ดที่ทำขึ้นเองได้อย่างไม่ยากนัก ข้อด้อยของ IOlib คือจะต้องทำงานในระบบปฏิบัติการวินโดวส์ทำให้คาบเวลาในการสุ่มต่ำสุดคือ 1 ms อย่างไรก็ตาม IOlib เป็นซอฟต์แวร์ที่แจกฟรีจึงเหมาะสมกับผู้ที่เริ่มต้นเรียนรู้การประยุกต์ใช้ MATLAB/SIMULINK ในการควบคุมแบบเวลาจริง และเหมาะสำหรับงานควบคุมที่ไม่ต้องการคาบเวลาสุ่มต่ำนัก |
. |
4. Real – Time Interface (RTI) |
4.1 รูปแบบการใช้งาน Real–Time Interface (RTI) [6] เป็นซอฟต์แวร์ที่ทางบริษัท dSPACE (www.dspace.de) เป็นผู้ผลิตเพื่อทำให้ SIMULINK สามารถสั่งงานการ์ดควบคุมที่ผลิตโดย dSPACE ได้แบบเวลาจริง ในการใช้งานนั้นผู้ใช้จะต้องมีการ์ดควบคุมที่ผลิตโดย dSPACE ติดตั้งอยู่ในเครื่องคอมพิวเตอร์เรียบร้อยแล้ว จากนั้นทำการติดตั้งซอฟต์แวร์ RTI ที่มีมาให้ หลังจากติดตั้งแล้วจะพบว่าที่ SIMULINK Library Browser จะมีไลบารีของการ์ดที่ติดตั้งปรากฏอยู่ ดังรูปที่ 7 และ ตัวอย่างของบล็อกไลบารีของการ์ดรุ่น DS1104 R&D Controller Board แสดงดังรูปที่ 8 |
. |
รูปที่ 7 แสดง SIMULINK LIBRARY BROWSER ของ RTI |
. |
รูปที่ 8 แสดงบล็อกไลบารีของการ์ดรุ่น DS1104 R&D Controller Board |
. |
ในการใช้งานซอฟต์แวร์ RTI นั้น หลังจากทำการสร้างโมเดลของตัวควบคุมเสร็จแล้วจะต้องทำการกำหนดค่าพารามิเตอร์ของ Real-Time Workshop ใน Simulation Parameters Dialog ดังรูปที่ 9 |
. |
รูปที่ 9 แสดงการกำหนดค่าพารามิเตอร์ของ SIMULINK ใน Simulation Parameters Dialog |
. |
หลังจากนั้นทำการกดปุ่ม Build ซอฟต์แวร์ RTI ก็จะทำการคอมไพล์ไฟล์และดาวล์โหลดโค้ดลงไปยังโปรเซสเซอร์บนบอร์ดควบคุม จากนั้นบอร์ดควบคุมก็จะทำการควบคุมระบบแบบเวลาจริงตามที่กำหนดไว้ ส่วนการสังเกตค่าพารามิเตอร์ที่เปลี่ยนแปลงไปขณะควบคุมนั้น ผู้ใช้สามารถใช้โปรแกรม ControlDesk ของ dSPACE ในการสร้าง GUI ของผู้ใช้เองในการสังเกตค่าพารามิเตอร์ที่เปลี่ยนแปลงไปดังรูปที่ 10 |
. |
รูปที่ 10 แสดง GUI ที่สร้างจากโปรแกรม ControlDesk |
. |
4.2 การประยุกต์ใช้ Real–Time Interface (RTI) ในการประยุกต์ใช้ RTI นั้น จะทำการทดลองควบคุมลูกตุ้มผกผัน โดยใช้ตัวควบคุมแบบฟัซซีลอจิกโดยใช้หลักการของ Virtual target angle [5] และใช้ Fuzzy Toolbox ในการสร้างตัวควบคุมแบบฟัซซี อุปกรณ์ทดลองแสดงดังรูปที่ 4 |
. |
จากผลการทดลองควบคุมลูกตุ้มผกผันจะพบว่าตัวควบคุมแบบฟัซซี ให้ผลการควบคุมเป็นที่หน้าพอใจทั้งตำแหน่งของลูกตุ้มและตำแหน่งของตัวรถ ซอฟต์แวร์ RTI มีจุดเด่นตรงที่สามารถเข้ากันได้เป็นอย่างดีกับบอร์ดควบคุมของ dSPACE และ ในการใช้งานควบคุมแบบเวลาจริงก็ไม่ต้องการเครื่อง Target เหมือนในกรณีของ xPC Target เนื่องจากบนบอร์ดควบคุมมีโปรเซสเซอร์หลักของตัวเองอยู่แล้ว ทำให้สามารถกำหนดคาบเวลาในการสุ่มได้ต่ำเป็นระดับไมโครวินาที และข้อเด่นอีกข้อคือ เมื่อ RTI ใช้ร่วมกับโปรแกรม ControlDesk ทำให้สามารถสังเกตค่าการเปลี่ยนแปลงของตัวแปรที่ควบคุมได้อย่างสะดวกและสวยงาม แต่มีข้อจำกัดตรงที่ไม่สามารถใช้บล็อกไลบารีได้ทุกบล็อกใน SIMULINK เป็นจุดด้อยเดียวกับในกรณีของ xPC Target |
. |
5. การเปรียบเทียบซอฟต์แวร์ที่ทำการทดสอบ |
เมื่อนำซอฟต์แวร์ที่กล่าวมาข้างตันมาพิจารณา แล้วเปรียบเทียบคุณสมบัติด้านต่างๆ สามารถแสดงได้ดังตารางที่ 1 |
. |
ตารางที่ 1 การเปรียบเทียบซอฟต์แวร์ที่ทำการทดสอบ |
. |
6. สรุปผลการทดสอบ |
จากผลการทดสอบซอฟต์แวร์ทั้งหมดจะพบว่า xPc Target และ RTI สามารถกำหนดคาบเวลาในการสุ่มได้เร็วกว่า IOlib ในส่วนของ xPc Target นั้นจำเป็นจะต้องมีเครื่องคอมพิวเตอร์ หรือ บอร์ดประมวลผล ที่เป็น Target ด้วยเสมอ อย่างไรก็ตาม IOlib เหมาะสำหรับผู้ที่เริ่มต้นศึกษาการควบคุมแบบเวลาจริงโดยใช้ MATLAB/SIMULINK เนื่องไม่มีค่าใช้จ่ายในการซื้อซอฟต์แวร์ กรณีการ์ดควบคุมของ dSapce จะมีซอฟต์แวร์เสริมชื่อ ControlDesk ที่จะเด่นมากในเรื่องของการที่ให้ผู้ใช้สามารถสร้าง GUI ได้เอง เพื่อสังเกตการเปลี่ยนแปลงค่าของตัวแปรต่างๆ |
. |
จากการศึกษาซอฟต์แวร์ทั้งหมด พบว่า xPc Target สามารถใช้กับการ์ดควบคุมบางยี่ห้อและบางรุ่น เท่านั้น ส่วน RTI จะใช้ได้กับการ์ดควบคุมที่ผลิตจาก dSpace เท่านั้น ส่วน IOlib จะไม่ยึดติดกับการ์ดควบคุมของผู้ผลิตรายใด แต่ผู้ใช้จะต้องทราบแอดเดรสของการ์ดที่จะนำมาใช้ และต้องมีความรู้ทางด้านฮาร์ดแวร์คอมพิวเตอร์พอสมควร จากข้อจำกัดต่างๆ จึงเป็นการยากที่หาการ์ดควบคุมเพียงการ์ดเดียวที่สามารถใช้ร่วมกับซอฟต์แวร์ที่นำมาศึกษาได้ทั้งหมด ดั้งนั้นผู้ที่จะนำซอฟต์แวร์ในบทความนี้ไปใช้ให้ได้ประสิทธิภาพสูงสุด จะต้องคำนึงถึงลักษณะงานที่จะนำไปใช้เป็นหลัก โดยอาจใช้ตารางที่ 1 เป็นตารางที่ช่วยในการตัดสินใจ |
. |
เอกสารอ้างอิง |
[1] T. Naveeruangrat and S. Songchon, “The use of zero phase filter with repetitive control in real time”, Proceedings of the 16th National Mechanical Engineering Conference, Phuket, Thailand, pp. 290 - 295, October 14 - 16 2002. |
[2] ธรรมรัตน์ นาวีเรืองรัตน์,การควบคุมแบบทำซ้ำในเวลาจริงร่วมด้วยฟิลเตอร์แบบไร้เฟส,วิทยานิพนธ์ มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี, 2544. |
[3] William J. Palm III, “Modeling, Analysis, and Control of Dynamic Systems”, 2nd ed. John Wiley & Sons, Inc. |
[4] สมหวัง อริสริยวงศ์ และ สยาม เจริญเสียง, การปรับปรุงตัวควบคุมแบบฟัซซีลอจิกสำหรับการควบคุมการทำงานของหุ่นยนต์, วารสารสมาคมวิชาการหุ่นยนต์ไทย, ปีที่ 1, ฉบับที่ 1, หน้า 35-46 |
[5] Yasunobu, S. and Mori, M., Swing up fuzzy controller for inverted pendulum based on a human control strategy”, Proceedings of the Sixth IEEE International Conference on Fuzzy Systems, Barcelona, Spain, Vol. 3, pp. 1621-1625. 1997. |
[6] dSPACE, “DS1104 Installation and Configuration”, August 2003. |
[7] The MathWorks, Inc., Using Simulink manual, 2001. |
[8] The MathWorks, Inc., “xPc Target manual”, 2001. |
สงวนลิขสิทธิ์ ตามพระราชบัญญัติลิขสิทธิ์ พ.ศ. 2539 www.thailandindustry.com
Copyright (C) 2009 www.thailandindustry.com All rights reserved.
ขอสงวนสิทธิ์ ข้อมูล เนื้อหา บทความ และรูปภาพ (ในส่วนที่ทำขึ้นเอง) ทั้งหมดที่ปรากฎอยู่ในเว็บไซต์ www.thailandindustry.com ห้ามมิให้บุคคลใด คัดลอก หรือ ทำสำเนา หรือ ดัดแปลง ข้อความหรือบทความใดๆ ของเว็บไซต์ หากผู้ใดละเมิด ไม่ว่าการลอกเลียน หรือนำส่วนหนึ่งส่วนใดของบทความนี้ไปใช้ ดัดแปลง โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร จะถูกดำเนินคดี ตามที่กฏหมายบัญญัติไว้สูงสุด