ตัวอย่างการควบคุมการเคลื่อนที่ของรถโดยใช้ PID Control
ด้วยโปรแกรม Matlab


transfer function ของระบบ cruise control เป็นไปตาม

โดยที่

และมี block diagram ดังนี้

ข้อกำหนดในการควบคุมครั้งนี้คือ rise time < 5 วินาที, overshoot < 10%, steady state < 2%

จาก pid controller มี transfer function คือ

Proportional control

ขั้นแรกเพิ่มส่วนของ proportional control (Kp) เข้าไปใน closed-loop transfer function เพื่อลด rise time ซึ่งจะได้สมการ

กำหนดให้ Kp = 100 แล้วสร้าง m-file โดยใช้คำสั่งต่อไปนี้
run m-file จะได้ผลตอบสนองตามกราฟ

จากกราฟจะเห็นว่าค่าของ steady-state error และ rise time ยังมากเกินไป ดังนั้นเปลี่ยนค่า Kp=10000 แล้ว run ใหม่ซึ่งจะได้กราฟ

ตอนนี้ steady-state error ลดลงเข้าใกล้ศุนย์ และ rise time ลดลงเหลือน้อยกว่า 0.5 วินาที แต่ค่าที่ได้นี้ไม่ถูกต้องในความเป็นจริง เพราะระบบควบคุมการเคลื่อนที่จริงๆแล้วไม่สามารถเปลี่ยนความเร็วของพาหนะจาก 0 ถึง 10 m/s ในเวลาน้อยกว่า 0.5 วินาทีได้
การแก้ปัญหาก็คือเลือกค่า Kp ที่ให้ rise ที่เหมาะสม แล้วเพิ่มส่วนของ integral controller เข้าไปเพื่อกำจัด steady-state error

PI control

closed-loop transfer function ของระบบควบคุมการเคลื่อนที่ด้วย PI controller คือ

กำหนดค่า Kp=600 และ Ki=1 เพื่อกำจัด steady-state error โดยเปลี่ยน m-file ดังนี้

ซึ่งเมื่อ run แล้วจะได้กราฟ

ค่า Ki ที่น้อยเกินไปทำให้ระบบไม่เสถียร เปลี่ยนให้ Kp=800, Ki=40 จะได้กราฟ

ได้การควบคุมตามที่กำหนดไว้

PID control

จากตัวอย่างที่ผ่านมา เราได้ผลลัพธ์ตามที่ต้องการแล้วโดยไม่ต้องใช้ส่วนของ derivative อย่างไรก็ตามก็สามารถใช้การควบคุมเป็นแบบ PID ก็ได้ ซึ่งมี closed-loop transfer function เป็น

เริ่มต้นให้ค่า Kp,Ki,Kd = 1 แล้วใช้คำสั่งต่อไปนี้

ทำการปรับค่า Ki,Kd และ Kp ให้เหมาะสมก็จะได้ผลตามต้องการ ซึ่งกราฟมีลักษณะหมือนการควบคุมด้วย PD


[ หน้าแรก] [ บทเรียน] [ 204471 ] [ รายวิชา ]
[ ภาควิชาวิศวกรรมคอมพิวเตอร์ ] [ คณะวิศวกรรมศาสตร์ ] [ มหาวิทยาลัยเกษตรศาสตร์ ]