Từ điều khiển vị trí sai bản chất đến điều khiển năng lượng đúng vật lý
Lời mở đầu
PID cổ điển đã tồn tại hơn một thế kỷ và vẫn đang được giảng dạy rộng rãi. Tuy nhiên, trong các hệ servo hiện đại — đặc biệt là servo công nghiệp — việc tiếp tục áp dụng PID cổ điển một cách giáo điều không chỉ không tối ưu, mà trong nhiều trường hợp không dùng được.
Bài viết này không nhằm phủ nhận lịch sử của PID, mà nhằm chỉ ra một sự thật cần được nói thẳng:
PID cổ điển không có ngôn ngữ chung với servo công nghiệp.
Nguyên nhân không nằm ở việc “tuning chưa đủ khéo”, mà nằm ở bản chất toán học của mô hình điều khiển.
1. Servo RC và ảo giác “PID hoạt động tốt”
Servo RC chỉ có điều khiển vị trí.
Người dùng gửi một góc lệnh (ví dụ 120°), servo tự quay đến đó theo đặc tính cơ–điện nội tại.
Trong quá trình này, PID cổ điển thường được dùng như sau:
- Mỗi chu kỳ PID:
- Tính sai số vị trí
- Xuất ra một
Output_Angle - Gọi
myServo.write(Output_Angle)
Servo “đến được đích”, nên người ta tin rằng PID đang làm đúng việc.
Nhưng câu hỏi cốt lõi là:
Thành phần I trong PID cổ điển đang dựa trên cơ sở toán học nào?
2. Thành phần I của PID cổ điển: tích phân không có ý nghĩa vật lý
Trong PID cổ điển:
Trong đó:
- là sai số vị trí
- Output của PID lại được dùng để tác động lên động năng của hệ
Nói cách khác:
- Ta đang tích phân mét, độ, xung
- Để điều khiển tốc độ, gia tốc, năng lượng
👉 Sai thứ nguyên ngay từ gốc.
Việc PID “chạy được” trong servo RC chỉ là ăn may nhờ đặc tính cơ học chậm và giới hạn phần cứng, không phải vì mô hình đúng.
3. Overshoot không phải tai nạn – nó là tất yếu
Xét kịch bản đơn giản:
- Setpoint = 120°
- Servo bắt đầu từ 0°
Giai đoạn đầu:
- Sai số lớn → P dương lớn
- trong nhiều chu kỳ → I tích lũy một lượng dương lớn
Khi servo tiến gần setpoint:
- P giảm
- Nhưng I vẫn còn rất lớn
- D (nếu có) chỉ là một thành phần âm nhỏ, không đủ sức triệt tiêu
Hệ quả:
👉 Servo bắt buộc phải overshoot.
Không phải “có thể”, mà là “bắt buộc”.
Cái gọi là “dao động quanh setpoint” thực chất là:
- Hệ đang xả năng lượng tích sai
- Bằng cách lắc qua lắc lại cho đến khi tắt dần
Trong bối cảnh:
- nano-precision
- industrial reliability
- long-term stability
👉 Hành vi này là không thể chấp nhận.
4. Servo công nghiệp: vị trí là đích, tốc độ mới là con đường
Servo công nghiệp có điều khiển vị trí, nhưng:
Vị trí là đích.
Đến đích thế nào thì hỏi anh tốc độ.
Nếu:
- Gửi một
pos_cmd - Nhưng không điều khiển tốc độ
Servo sẽ:
- đi với tốc độ không đổi
- tới đích liên tục thay đổi
- không liên quan gì đến setpoint ban đầu
Muốn tracking, bắt buộc phải điều khiển tốc độ.
Và đây là nơi PID cổ điển mất ngôn ngữ chung:
- Output của PID là vị trí
- Servo công nghiệp cần tốc độ
Việc “qui đổi lệnh góc sang tốc độ”:
- không tường minh
- không có cơ sở toán học
- chỉ là kinh nghiệm chắp vá
5. Energy-Based Control: đặt đúng đối tượng điều khiển
Trong hệ servo hiện đại, đối tượng điều khiển đúng phải là:
Tốc độ — hay chính xác hơn — năng lượng của hệ.
Xét sai số tốc độ:
Tích phân của nó từ đến :
Suy ra trực tiếp:
👉 Sai số vị trí e chính là tích phân của sai số tốc độ.
- Không cần tính tích phân
- Không cần chống wind-up
- Không cần mẹo
6. Ý nghĩa vật lý của e
- lớn → hệ còn xa → cần thêm năng lượng để rút ngắn
- giảm đều → năng lượng được bơm đúng mức → hệ ổn định
- thay đổi đột ngột → năng lượng bị bơm/thu đột ngột → bất thường
Độ bất thường có thể định nghĩa tự nhiên:
r = fabsf(e - e_last) / (fabsf(e_last) + Efloor);
Đây không phải đo dao động sai số,
mà là đo xung năng lượng.
7. Pursuit hay Tracking không phải vấn đề của tích phân
Một hiểu lầm phổ biến:
“Nếu ban đầu servo và mục tiêu không xuất phát cùng điểm thì sao?”
Câu trả lời rõ ràng:
Việc hệ ở trạng thái “pursuit” hay “tracking” không phải là vấn đề của mô hình tích phân, mà là quyết định chiến thuật ở tầng điều khiển cao hơn.
Ví dụ:
- Còn xa → cho phép
Vcmdbão hòa ởVmax(đuổi bắt) - Đã vào vùng phù hợp → chuyển sang tracking mượt
👉 Mô hình năng lượng không thay đổi.
8. Kết luận
PID cổ điển:
- không sai về lịch sử
- nhưng không còn phù hợp cho servo công nghiệp hiện đại
Overshoot:
- không phải lỗi tuning
- mà là hệ quả tất yếu của một mô hình sai
Energy-Based Control:
- đặt đúng đối tượng điều khiển
- có ý nghĩa vật lý rõ ràng
- không cần vá lỗi
- và nói cùng một “ngôn ngữ” với servo công nghiệp
Pingback: ⚠️ Vì sao PID cổ điển bị vỡ dưới Giới Hạn Vật Lý? | Artificial Intelligence Kiosk