- หน้าแรก
- คลังความรู้
- ระบบควบคุม
- ป้อนกลับสถานะ
// บทที่ 13.20 · ระบบควบคุม · State Feedback, Observers & LQR
ป้อนกลับสถานะ: วางขั้ว ตัวสังเกต และ LQR
ในรูทโลคัส ขั้วเดินได้แค่ตามเส้นทางที่กำหนดด้วยเกนตัวเดียว แต่ถ้าวัดและป้อนกลับทุกสถานะ เรามีเกน n ตัว จึงวางขั้ววงปิดได้ทุกตำแหน่ง (ถ้าระบบควบคุมได้) สถานะที่วัดไม่ได้ก็ประมาณด้วยตัวสังเกต และถ้าไม่อยากเลือกขั้วเอง LQR จะหาเกนที่ “ดีที่สุด” ตามที่เรานิยาม หน้านี้คือเครื่องมือหลักของหุ่นยนต์ทรงตัว โดรน และยานอวกาศ สูตรใช้รหัส V
สรุปใน 30 วินาที
- u=−Kx+Nˉr → วงปิด x˙=(A−BK)x+BNˉr เลือก K ให้ det(sI−A+BK) ตรงกับพหุนามที่ต้องการ
- ตัวสังเกต: x^˙=Ax^+Bu+L(y−Cx^) ขั้ว A−LC เร็วกว่าตัวควบคุม 2–6 เท่า
- หลักการแยกส่วน: ขั้วรวม = ขั้วของ A−BK ∪ ขั้วของ A−LC
- LQR: ลด ∫(xTQx+uTRu)dt ได้ K=R−1BTP
วางขั้วด้วยป้อนกลับสถานะ กลาง
V1 State feedback ป้อนกลับสถานะและการวางขั้ว
u=−Kx+Nˉr,x˙=(A−BK)x+BNˉr,det(sI−A+BK)=∏(s−piต้องการ)
ระบบอันดับต่ำ: กระจายดีเทอร์มิแนนต์แล้วเทียบสัมประสิทธิ์ · ทำได้ทุกตำแหน่งขั้วก็ต่อเมื่อ (A,B) ควบคุมได้
V2 Ackermann's formula สูตรแอคเคอร์มันน์ (อินพุตเดียว)
K=[0⋯01]C−1αc(A),αc(s)=sn+αn−1sn−1+⋯+α0
αc(A) คือแทน A ลงในพหุนามที่ต้องการ (เคย์ลีย์-แฮมิลตัน) · C จาก O1
V3 Reference gain เกนอ้างอิง
Nˉ=C(A−BK)−1B−1
ทำให้ y→r ในสถานะอยู่ตัว · ไม่ทนต่อพลานต์ที่เปลี่ยน ถ้าต้องการทนทานใช้อินทิเกรเตอร์ V4
V4 Integral action เพิ่มอินทิเกรเตอร์
x˙I=r−y,u=−Kx−kIxI
ขยายสถานะเป็น n+1 ตัวแล้ววางขั้วทั้งหมด · กำจัดความผิดพลาดค้างแม้พลานต์เปลี่ยนหรือมีการรบกวน
ตัวอย่าง V-1 · เซอร์โวมอเตอร์มอเตอร์ตำแหน่ง s(s+2)10: x1=θ, x2=ω, A=(001−2), B=(010) วางขั้วที่ −4±j4
พหุนามที่ต้องการ: (s+4)2+16=s2+8s+32 (ζ=0.707, ωn=5.66)
A−BK=(0−10k11−2−10k2) ได้ s2+(2+10k2)s+10k1 V1
เทียบ: 10k1=32⇒k1=3.2 · 2+10k2=8⇒k2=0.6
Nˉ: DC gain จาก r ไป θ คือ 10Nˉ/32=1⇒Nˉ=3.2 V3
K=(3.2 0.6), Nˉ=3.2: u=3.2(r−θ)−0.6ω ซึ่งคือ PD ที่ใช้ความเร็ววัดจริง (ไม่มีศูนย์ในวงปิด) · overshoot 4.3% ตาม ζ=0.707
python-control place: K=[3.2, 0.6] ✓
ตัวสังเกตสถานะ (Observer) กลาง
V5 Luenberger observer ตัวสังเกตของลูเอนเบอร์เกอร์
x^˙=Ax^+Bu+L(y−Cx^),e=x−x^: e˙=(A−LC)e
เลือก L ให้ขั้วของ A−LC เร็วกว่าขั้วตัวควบคุม 2–6 เท่า (เร็วเกินไปจะขยายสัญญาณรบกวนเซนเซอร์) · ต้องสังเกตได้ · ออกแบบได้ด้วยสูตรเดียวกับ V1–V2 กับ (AT,CT)
V6 Separation principle หลักการแยกส่วน
ขั้ววงปิดรวม=eig(A−BK) ∪ eig(A−LC)
ออกแบบ K และ L แยกกันได้ · ตัวควบคุมรวม (K + ตัวสังเกต) เทียบเท่ากับตัวชดเชยแบบไดนามิกอันดับ n
ตัวอย่าง V-2 · วัดแค่ตำแหน่งระบบ V-1 มีแต่เอนโค้ดเดอร์ (C=(1 0)) ออกแบบตัวสังเกตที่ขั้ว −20,−20
A−LC=(−l1−l21−2) ได้ s2+(2+l1)s+(2l1+l2) V5
ต้องการ (s+20)2=s2+40s+400: l1=38, l2=400−76=324
L=(38 324)T ตัวสังเกตเร็วกว่าตัวควบคุม (−4±j4) 5 เท่า ได้ความเร็วประมาณ ω^ ที่สะอาดกว่าการหาอนุพันธ์ของตำแหน่งตรง ๆ
python-control place กับ (AT,CT): L=[38, 324] ✓
LQR: ตัวควบคุมที่เหมาะสมที่สุด ขั้นสูง
V7 Linear–quadratic regulator LQR
J=∫0∞(xTQx+uTRu)dt,ATP+PA−PBR−1BTP+Q=0,K=R−1BTP
Q⪰0 ลงโทษสถานะ R≻0 ลงโทษพลังงานอินพุต · รับประกัน GM ∞ (เพิ่มได้) / −6 dB (ลดได้ครึ่งหนึ่ง) และ PM ≥ 60° สำหรับอินพุตเดียว · คู่ของมันคือตัวกรองคาลมาน (ตัวสังเกตที่เหมาะสมที่สุดเมื่อมีสัญญาณรบกวน) รวมกันเรียก LQG
ตัวอย่าง V-3 · LQR สเกลาร์พลานต์ไม่เสถียร x˙=x+u ใช้ Q=3, R=1
ริคคาติ V7: 2p−p2+3=0⇒p=3 (เลือกรากบวก)
K=p=3 · วงปิด x˙=(1−3)x=−2x
K=3 ขั้ววงปิดที่ −2 · ทั่วไป K=1+1+Q ขั้วที่ −1+Q: ยิ่งให้น้ำหนักสถานะมาก ยิ่งเร็ว
python-control lqr: K = 3, ขั้ว −2 ✓ · หุ่นยนต์ทรงตัวสองล้อในโรโบติกส์นิยมใช้ LQR
ต่อยอดไปหน้าถัดไป
ตัวควบคุมสมัยใหม่ทั้งหมดรันในไมโครคอนโทรลเลอร์ ไปที่ระบบควบคุมดิจิทัล เพื่อแปลงทุกอย่างเป็นสมการผลต่างและเลือกคาบสุ่มให้ถูก
คำถามที่พบบ่อย
ป้อนกลับสถานะต่างจาก PID อย่างไร?
PID ใช้ความผิดพลาดของเอาต์พุตเดียว ส่วนป้อนกลับสถานะใช้ทุกสถานะ (ตำแหน่ง ความเร็ว กระแส ฯลฯ) จึงวางขั้ววงปิดได้ทุกตัวตามต้องการ ระบบอันดับสองที่ป้อนกลับตำแหน่งและความเร็วคือ PD ในอีกรูปหนึ่ง แต่สำหรับระบบอันดับสูงและหลายอินพุต ป้อนกลับสถานะทรงพลังกว่ามาก
ไม่ได้วัดทุกสถานะ จะใช้ป้อนกลับสถานะได้อย่างไร?
ใช้ตัวสังเกต (observer) ซึ่งเป็นแบบจำลองที่วิ่งขนานกับระบบจริงในไมโครคอนโทรลเลอร์ แก้ด้วยความต่างระหว่างเอาต์พุตที่วัดกับที่ประมาณ แล้วป้อนกลับสถานะที่ประมาณได้ หลักการแยกส่วนรับประกันว่าออกแบบตัวควบคุมและตัวสังเกตแยกกันได้
LQR เลือก Q และ R อย่างไร?
เริ่มจากกฎของไบรสัน (Bryson): Q เป็นทแยงมุม 1/(ค่าสูงสุดที่ยอมรับได้ของสถานะ)² และ R = 1/(ค่าสูงสุดของอินพุต)² แล้วปรับ เพิ่ม Q ทำให้สถานะเข้าเร็วขึ้นแต่ใช้อินพุตมาก เพิ่ม R ประหยัดอินพุตแต่ช้าลง
มด
อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์