พิมพ์คำที่ต้องการค้นหา ทั้งภาษาไทยและอังกฤษ

  1. หน้าแรก
  2. คลังความรู้
  3. ระบบควบคุม
  4. ป้อนกลับสถานะ

// บทที่ 13.20 · ระบบควบคุม · State Feedback, Observers & LQR

ป้อนกลับสถานะ: วางขั้ว ตัวสังเกต และ LQR

ในรูทโลคัส ขั้วเดินได้แค่ตามเส้นทางที่กำหนดด้วยเกนตัวเดียว แต่ถ้าวัดและป้อนกลับทุกสถานะ เรามีเกน nn ตัว จึงวางขั้ววงปิดได้ทุกตำแหน่ง (ถ้าระบบควบคุมได้) สถานะที่วัดไม่ได้ก็ประมาณด้วยตัวสังเกต และถ้าไม่อยากเลือกขั้วเอง LQR จะหาเกนที่ “ดีที่สุด” ตามที่เรานิยาม หน้านี้คือเครื่องมือหลักของหุ่นยนต์ทรงตัว โดรน และยานอวกาศ สูตรใช้รหัส V

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • u=−Kx+Nˉru = -K\mathbf x + \bar Nr → วงปิด x˙=(A−BK)x+BNˉr\dot{\mathbf x} = (A - BK)\mathbf x + B\bar Nr เลือก KK ให้ det⁡(sI−A+BK)\det(sI - A + BK) ตรงกับพหุนามที่ต้องการ
  • ตัวสังเกต: x^˙=Ax^+Bu+L(y−Cx^)\dot{\hat{\mathbf x}} = A\hat{\mathbf x} + Bu + L(y - C\hat{\mathbf x}) ขั้ว A−LCA - LC เร็วกว่าตัวควบคุม 2–6 เท่า
  • หลักการแยกส่วน: ขั้วรวม = ขั้วของ A−BKA - BK ∪ ขั้วของ A−LCA - LC
  • LQR: ลด ∫(xTQx+uTRu)dt\int(\mathbf x^TQ\mathbf x + u^TRu)dt ได้ K=R−1BTPK = R^{-1}B^TP

วางขั้วด้วยป้อนกลับสถานะ กลาง

V1 State feedback ป้อนกลับสถานะและการวางขั้ว

u=−Kx+Nˉr,x˙=(A−BK)x+BNˉr,det⁡(sI−A+BK)=∏(s−piต้องการ)u = -K\mathbf x + \bar Nr, \qquad \dot{\mathbf x} = (A - BK)\mathbf x + B\bar Nr, \qquad \det(sI - A + BK) = \prod(s - p_i^{\text{ต้องการ}})

ระบบอันดับต่ำ: กระจายดีเทอร์มิแนนต์แล้วเทียบสัมประสิทธิ์ · ทำได้ทุกตำแหน่งขั้วก็ต่อเมื่อ (A,B)(A, B) ควบคุมได้

V2 Ackermann's formula สูตรแอคเคอร์มันน์ (อินพุตเดียว)

K=[0⋯01]C−1 αc(A),αc(s)=sn+αn−1sn−1+⋯+α0K = \begin{bmatrix} 0 & \cdots & 0 & 1 \end{bmatrix}\mathcal C^{-1}\,\alpha_c(A), \qquad \alpha_c(s) = s^n + \alpha_{n-1}s^{n-1} + \cdots + \alpha_0

αc(A)\alpha_c(A) คือแทน AA ลงในพหุนามที่ต้องการ (เคย์ลีย์-แฮมิลตัน) · C\mathcal C จาก O1

V3 Reference gain เกนอ้างอิง

Nˉ=−1C(A−BK)−1B\bar N = \frac{-1}{C(A - BK)^{-1}B}

ทำให้ y→ry \to r ในสถานะอยู่ตัว · ไม่ทนต่อพลานต์ที่เปลี่ยน ถ้าต้องการทนทานใช้อินทิเกรเตอร์ V4

V4 Integral action เพิ่มอินทิเกรเตอร์

x˙I=r−y,u=−Kx−kIxI\dot x_I = r - y, \qquad u = -K\mathbf x - k_Ix_I

ขยายสถานะเป็น n+1n + 1 ตัวแล้ววางขั้วทั้งหมด · กำจัดความผิดพลาดค้างแม้พลานต์เปลี่ยนหรือมีการรบกวน

ตัวอย่าง V-1 · เซอร์โวมอเตอร์

มอเตอร์ตำแหน่ง 10s(s+2)\frac{10}{s(s+2)}: x1=θ, x2=ωx_1 = \theta,\ x_2 = \omega, A=(010−2), B=(010)A = \begin{pmatrix} 0 & 1 \\ 0 & -2 \end{pmatrix},\ B = \begin{pmatrix} 0 \\ 10 \end{pmatrix} วางขั้วที่ −4±j4-4 \pm j4

  1. พหุนามที่ต้องการ: (s+4)2+16=s2+8s+32(s + 4)^2 + 16 = s^2 + 8s + 32 (ζ=0.707, ωn=5.66\zeta = 0.707,\ \omega_n = 5.66)

  2. A−BK=(01−10k1−2−10k2)A - BK = \begin{pmatrix} 0 & 1 \\ -10k_1 & -2 - 10k_2 \end{pmatrix} ได้ s2+(2+10k2)s+10k1s^2 + (2 + 10k_2)s + 10k_1 V1

  3. เทียบ: 10k1=32⇒k1=3.210k_1 = 32 \Rightarrow k_1 = 3.2 · 2+10k2=8⇒k2=0.62 + 10k_2 = 8 \Rightarrow k_2 = 0.6

  4. Nˉ\bar N: DC gain จาก rr ไป θ\theta คือ 10Nˉ/32=1⇒Nˉ=3.210\bar N/32 = 1 \Rightarrow \bar N = 3.2 V3

K=(3.2  0.6)K = (3.2\ \ 0.6), Nˉ=3.2\bar N = 3.2: u=3.2(r−θ)−0.6 ωu = 3.2(r - \theta) - 0.6\,\omega ซึ่งคือ PD ที่ใช้ความเร็ววัดจริง (ไม่มีศูนย์ในวงปิด) · overshoot 4.3% ตาม ζ=0.707\zeta = 0.707

python-control place: K=[3.2, 0.6]K = [3.2,\ 0.6] ✓

ตัวสังเกตสถานะ (Observer) กลาง

V5 Luenberger observer ตัวสังเกตของลูเอนเบอร์เกอร์

x^˙=Ax^+Bu+L(y−Cx^),e=x−x^:  e˙=(A−LC)e\dot{\hat{\mathbf x}} = A\hat{\mathbf x} + Bu + L(y - C\hat{\mathbf x}), \qquad \mathbf e = \mathbf x - \hat{\mathbf x}:\ \ \dot{\mathbf e} = (A - LC)\mathbf e

เลือก LL ให้ขั้วของ A−LCA - LC เร็วกว่าขั้วตัวควบคุม 2–6 เท่า (เร็วเกินไปจะขยายสัญญาณรบกวนเซนเซอร์) · ต้องสังเกตได้ · ออกแบบได้ด้วยสูตรเดียวกับ V1–V2 กับ (AT,CT)(A^T, C^T)

V6 Separation principle หลักการแยกส่วน

ขั้ววงปิดรวม=eig⁡(A−BK) ∪ eig⁡(A−LC)\text{ขั้ววงปิดรวม} = \operatorname{eig}(A - BK)\ \cup\ \operatorname{eig}(A - LC)

ออกแบบ KK และ LL แยกกันได้ · ตัวควบคุมรวม (KK + ตัวสังเกต) เทียบเท่ากับตัวชดเชยแบบไดนามิกอันดับ nn

ตัวอย่าง V-2 · วัดแค่ตำแหน่ง

ระบบ V-1 มีแต่เอนโค้ดเดอร์ (C=(1  0)C = (1\ \ 0)) ออกแบบตัวสังเกตที่ขั้ว −20,−20-20, -20

  1. A−LC=(−l11−l2−2)A - LC = \begin{pmatrix} -l_1 & 1 \\ -l_2 & -2 \end{pmatrix} ได้ s2+(2+l1)s+(2l1+l2)s^2 + (2 + l_1)s + (2l_1 + l_2) V5

  2. ต้องการ (s+20)2=s2+40s+400(s + 20)^2 = s^2 + 40s + 400: l1=38l_1 = 38, l2=400−76=324l_2 = 400 - 76 = 324

L=(38  324)TL = (38\ \ 324)^T ตัวสังเกตเร็วกว่าตัวควบคุม (−4±j4-4 \pm j4) 5 เท่า ได้ความเร็วประมาณ ω^\hat\omega ที่สะอาดกว่าการหาอนุพันธ์ของตำแหน่งตรง ๆ

python-control place กับ (AT,CT)(A^T, C^T): L=[38, 324]L = [38,\ 324] ✓

LQR: ตัวควบคุมที่เหมาะสมที่สุด ขั้นสูง

V7 Linear–quadratic regulator LQR

J=∫0∞(xTQx+uTRu) dt,ATP+PA−PBR−1BTP+Q=0,K=R−1BTPJ = \int_0^\infty(\mathbf x^TQ\mathbf x + u^TRu)\,dt, \qquad A^TP + PA - PBR^{-1}B^TP + Q = 0, \qquad K = R^{-1}B^TP

Q⪰0Q \succeq 0 ลงโทษสถานะ R≻0R \succ 0 ลงโทษพลังงานอินพุต · รับประกัน GM ∞ (เพิ่มได้) / −6 dB (ลดได้ครึ่งหนึ่ง) และ PM ≥ 60° สำหรับอินพุตเดียว · คู่ของมันคือตัวกรองคาลมาน (ตัวสังเกตที่เหมาะสมที่สุดเมื่อมีสัญญาณรบกวน) รวมกันเรียก LQG

ตัวอย่าง V-3 · LQR สเกลาร์

พลานต์ไม่เสถียร x˙=x+u\dot x = x + u ใช้ Q=3, R=1Q = 3,\ R = 1

  1. ริคคาติ V7: 2p−p2+3=0⇒p=32p - p^2 + 3 = 0 \Rightarrow p = 3 (เลือกรากบวก)

  2. K=p=3K = p = 3 · วงปิด x˙=(1−3)x=−2x\dot x = (1 - 3)x = -2x

K=3K = 3 ขั้ววงปิดที่ −2 · ทั่วไป K=1+1+QK = 1 + \sqrt{1 + Q} ขั้วที่ −1+Q-\sqrt{1 + Q}: ยิ่งให้น้ำหนักสถานะมาก ยิ่งเร็ว

python-control lqr: K = 3, ขั้ว −2 ✓ · หุ่นยนต์ทรงตัวสองล้อในโรโบติกส์นิยมใช้ LQR

ต่อยอดไปหน้าถัดไป

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

คำถามที่พบบ่อย

ป้อนกลับสถานะต่างจาก PID อย่างไร?

PID ใช้ความผิดพลาดของเอาต์พุตเดียว ส่วนป้อนกลับสถานะใช้ทุกสถานะ (ตำแหน่ง ความเร็ว กระแส ฯลฯ) จึงวางขั้ววงปิดได้ทุกตัวตามต้องการ ระบบอันดับสองที่ป้อนกลับตำแหน่งและความเร็วคือ PD ในอีกรูปหนึ่ง แต่สำหรับระบบอันดับสูงและหลายอินพุต ป้อนกลับสถานะทรงพลังกว่ามาก

ไม่ได้วัดทุกสถานะ จะใช้ป้อนกลับสถานะได้อย่างไร?

ใช้ตัวสังเกต (observer) ซึ่งเป็นแบบจำลองที่วิ่งขนานกับระบบจริงในไมโครคอนโทรลเลอร์ แก้ด้วยความต่างระหว่างเอาต์พุตที่วัดกับที่ประมาณ แล้วป้อนกลับสถานะที่ประมาณได้ หลักการแยกส่วนรับประกันว่าออกแบบตัวควบคุมและตัวสังเกตแยกกันได้

LQR เลือก Q และ R อย่างไร?

เริ่มจากกฎของไบรสัน (Bryson): Q เป็นทแยงมุม 1/(ค่าสูงสุดที่ยอมรับได้ของสถานะ)² และ R = 1/(ค่าสูงสุดของอินพุต)² แล้วปรับ เพิ่ม Q ทำให้สถานะเข้าเร็วขึ้นแต่ใช้อินพุตมาก เพิ่ม R ประหยัดอินพุตแต่ช้าลง

อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์