Tôi không hiểu phần tích hợp của bộ điều khiển PID


12

Tôi không hiểu một phần không thể thiếu của bộ điều khiển PID. Chúng ta hãy giả sử mã giả này từ Wikipedia:

previous_error = 0
integral = 0 
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start

Tích phân được đặt thành 0 khi bắt đầu. Và sau đó trong vòng lặp, nó tích hợp lỗi theo thời gian. Khi tôi thực hiện thay đổi (tích cực) trong điểm đặt, lỗi sẽ trở nên tích cực và tích phân sẽ "ăn" các giá trị theo thời gian (từ đầu). Nhưng điều tôi không hiểu là, khi lỗi ổn định trở về 0, phần tích phân vẫn sẽ có một số giá trị (lỗi tích hợp theo thời gian) và vẫn sẽ đóng góp vào giá trị đầu ra của bộ điều khiển, nhưng không nên, vì nếu lỗi là 0, đầu ra của PID cũng bằng không, phải không?

Ai đó có thể giải thích cho tôi rằng xin vui lòng?

Câu trả lời:


16

Mục đích chính của thuật ngữ tích phân là loại bỏ lỗi trạng thái ổn định. Trong trường hợp bình thường, sẽ có một lỗi trạng thái ổn định nhỏ và tích phân chủ yếu được sử dụng để loại bỏ lỗi này. Tuy nhiên, sự thật là khi sai số về 0, tích phân sẽ vẫn dương và sẽ khiến bạn bị lu mờ. Sau đó, quá mức, tích phân sẽ bắt đầu đi xuống một lần nữa. Đây là tác động tiêu cực của thuật ngữ tích phân. Vì vậy, luôn có sự đánh đổi và bạn phải điều chỉnh bộ điều khiển PID để đảm bảo rằng phần vượt quá nhỏ nhất có thể và giảm thiểu lỗi trạng thái ổn định. Đây là nơi mà thuật ngữ phái sinh phát huy tác dụng. Thuật ngữ phái sinh giúp giảm thiểu sự quá mức trong hệ thống.


8
Và một ví dụ tốt về lỗi trạng thái ổn định là ma sát trong khớp. Hãy nói rằng bộ điều khiển PD của bạn nằm gần góc khớp mục tiêu của bạn, nhưng không thể đến đó do ma sát. Thuật ngữ "Tôi" sẽ từ từ xây dựng và cuối cùng tạo ra một đầu vào đủ lớn để vượt qua ma sát.
Bến

2
Một ví dụ khác là sự thiên vị trong chỉ đạo. Nếu nó chỉ ra rằng có một chút sai lệch trong điều khiển lái, hoặc, đối với các robot kiểu lốp, một bước quay chậm hơn một chút mặc dù bộ điều khiển đặt chúng ở cùng một giá trị, sẽ có sai lệch. Thuật ngữ tích phân, được đặt đúng, sửa cho điều đó.
ViennaMike

8

Hãy tưởng tượng rằng bạn thiết lập bộ điều khiển PID trên cánh tay của chính mình, để bạn có thể cầm tách cà phê thẳng ra trước mặt.

  • Yếu tố tỷ lệ sẽ kiểm soát sức mạnh cánh tay của bạn so với vị trí tay của bạn quá cao hoặc quá thấp.
  • Yếu tố phái sinh sẽ điều chỉnh sức mạnh đó dựa trên tốc độ bạn đã di chuyển, để bạn không làm quá mục tiêu của mình.
  • Các yếu tố không thể thiếu sẽ bù đắp cho các tác động của trọng lực; không có nó, chiếc cốc sẽ dừng lại ở đó lực tỷ lệ bằng với lực hấp dẫn.

Nghe có vẻ như một phần của mã bạn bị mắc kẹt là hệ thống phải bằng cách nào đó đo trọng lượng của cà phê và một cách để làm điều đó là tích lũy lỗi vị trí theo thời gian. Hầu hết các bộ điều khiển PID có một thuật ngữ bổ sung để chỉ định giới hạn hợp lý cho kích thước mà phần tử tích phân có thể có.


2
+1. "nếu lỗi bằng 0, đầu ra của PID cũng bằng 0, phải không?" Như Ian giải thích, ngay cả khi cốc cà phê ở vị trí hoàn hảo và sai số bằng 0, đầu ra của PID cần phải có một lực hướng lên để giữ cốc đó ở vị trí.
David Cary

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.