Bộ điều khiển PID

Một **bộ điều khiển vi tích phân tỉ lệ** (**PID- Proportional Integral Derivative**) là một cơ chế phản hồi vòng điều khiển tổng quát được sử dụng rộng rãi trong các hệ thống điều khiển công nghiệp – bộ điều khiển PID là bộ điều khiển được sử dụng nhiều nhất trong các bộ điều khiển phản hồi. Bộ điều khiển PID sẽ tính toán giá trị "sai số" là hiệu số giữa giá trị đo thông số biến đổi và giá trị đặt mong muốn. Bộ điều khiển sẽ thực hiện giảm tối đa sai số bằng cách điều chỉnh giá trị điều khiển đầu vào. Trong trường hợp không có kiến thức cơ bản (mô hình toán học) về hệ thống điều khiển thì bộ điều khiển PID là sẽ bộ điều khiển tốt nhất. Tuy nhiên, để đạt được kết quả tốt nhất, các thông số PID sử dụng trong tính toán phải điều chỉnh theo tính chất của hệ thống-trong khi kiểu điều khiển là giống nhau, các thông số phải phụ thuộc vào đặc thù của hệ thống.

Giải thuật tính toán bộ điều khiển PID bao gồm 3 thông số riêng biệt, do đó đôi khi nó còn được gọi là **điều khiển ba khâu**: các giá trị tỉ lệ, tích phân và đạo hàm, viết tắt là *P,* *I,* và *D.* Giá trị *tỉ lệ* xác định tác động của sai số hiện tại, giá trị *tích phân* xác định tác động của tổng các sai số quá khứ, và giá trị *vi phân* xác định tác động của tốc độ biến đổi sai số. Tổng chập của ba tác động này dùng để điều chỉnh quá trình thông qua một phần tử điều khiển như vị trí của van điều khiển hay bộ nguồn của phần tử gia nhiệt. Nhờ vậy, những giá trị này có thể làm sáng tỏ về quan hệ thời gian: *P* phụ thuộc vào sai số *hiện tại*, *I* phụ thuộc vào tích lũy các sai số *quá khứ*, và *D* dự đoán các sai số *tương lai*, dựa vào tốc độ thay đổi hiện tại.

Bằng cách điều chỉnh 3 hằng số trong giải thuật của bộ điều khiển PID, bộ điều khiển có thể dùng trong những thiết kế có yêu cầu đặc biệt. Đáp ứng của bộ điều khiển có thể được mô tả dưới dạng độ nhạy sai số của bộ điều khiển, giá trị mà bộ điều khiển vọt lố điểm đặt và giá trị dao động của hệ thống. Lưu ý là công dụng của giải thuật PID trong điều khiển không đảm bảo tính tối ưu hoặc ổn định cho hệ thống.

Vài ứng dụng có thể yêu cầu chỉ sử dụng một hoặc hai khâu tùy theo hệ thống. Điều này đạt được bằng cách thiết đặt đội lợi của các đầu ra không mong muốn về 0. Một bộ điều khiển PID sẽ được gọi là bộ điều khiển PI, PD, P hoặc I nếu vắng mặt các tác động bị khuyết. Bộ điều khiển PI khá phổ biến, do đáp ứng vi phân khá nhạy đối với các nhiễu đo lường, trái lại nếu thiếu giá trị tích phân có thể khiến hệ thống không đạt được giá trị mong muốn.

Chú ý: Do sự đa dạng của lĩnh vực lý thuyết và ứng dụng điều khiển, nhiều qui ước đặt tên cho các biến có liên quan cùng được sử dụng.

## Cơ bản về vòng điều khiển

Một ví dụ quen thuộc của vòng điều khiển là hành động điều chỉnh vòi nước nóng và lạnh để duy trì nhiệt độ nước mong muốn ở đầu vòi nước. Thường ta phải trộn hai dòng nước, nóng và lạnh lại với nhau. Và chạm vào nước để cảm nhận hoặc ước lượng nhiệt độ của nó. Dựa trên phản hồi này, ta đi điều chỉnh van nóng và van lạnh cho đến khi nhiệt độ ổn định ở giá trị mong muốn.

Giá trị cảm biến nhiệt độ nước là giá trị tương tự(analog), dùng để đo lường giá trị xử lý hoặc biến quá trình (PV). Nhiệt độ mong muốn được gọi là điểm đặt (SP). Đầu vào chu trình (vị trí van nước) được gọi là biến điều khiển (MV). Hiệu số giữa nhiệt độ đo và điểm đặt được gọi là sai số (e), dùng để lượng hóa được khi nào thì nước quá nóng hay khi nào thì nước quá lạnh bằng giá trị.

Sau khi đo lường nhiệt độ (PV), và sau đó tính toán sai số, bộ điều khiển sẽ quết định thời điểm thay đổi vị trí van (MV) và thay đổi bao nhiêu. Khi bộ điều khiển mở van lần đầu, nó sẽ mở van nóng tí xíu nếu cần nước ấm, hoặc sẽ mở hết cỡ nếu cần nước rất nóng. Đây là một ví dụ của điều khiển **tỉ lệ** đơn giản. Trong trường hợp nước nóng không được cung cấp nhanh chóng, bộ điều khiển có thể tìm cách tăng tốc độ của chu trình lên bằng cách tăng độ mở của van nóng theo thời gian. Đây là một ví dụ của điều khiển **tích phân**. Nếu chỉ sử dụng hai phương pháp điều khiển tỉ lệ và tích phân, trong vài hệ thống, nhiệt độ nước có thể dao động giữa nóng và lạnh, bởi vì bộ điều khiển điều chỉnh van quá nhanh và vọt lố hoặc bù lố so với điểm đặt.

Để đạt được sự hội tụ tăng dần đến nhiệt độ mong muốn (SP), bộ điều khiển cần phải yêu cầu làm tắt dần dao động dự đoán trong tương lai. Điều này có thể thực hiện bởi phương pháp điều khiển **vi phân**.

Giá trị thay đổi có thể quá lớn khi sai số tương ứng là nhỏ đối với bộ điều khiển có độ lợi lớn và sẽ dẫn đến vọt lố. Nếu bộ điều khiển lặp lại nhiều lần việc thay đổi này sẽ dẫn đến thường xuyên xảy ra vọt lố, đầu ra sẽ dao động xung quanh điểm đặt, tăng hoặc giảm theo hình sin cố định. Nếu dao động tăng theo thời gian thì hệ thống sẽ không ổn định, còn nếu dao động giảm theo thời gian thì hệ thống đó ổn định. Nếu dao động duy trì tại một biên độ cố định thì hệ thống là ổn định biên độ. Con người không để xảy ra dao động như vậy bởi vì chúng ta là những "bộ" điều khiển thích nghi, biết rút kinh nghiệm; tuy nhiên, bộ điều khiển PID đơn giản không có khả năng học tập và phải được thiết đặt phù hợp. Việc chọn độ lợi hợp lý để điều khiển hiệu quả được gọi là điều chỉnh bộ điều khiển.

Nếu một bộ điều khiển bắt đầu từ một trạng thái ổn định tại điểm sai số bằng 0 (PV=SP), thì những thay đổi sau đó bởi bộ điều khiển sẽ phụ thuộc vào những thay đổi trong tín hiệu đầu vào đo được hoặc không đo được khác tác động vào quá trình điều khiển, và ảnh hưởng tới đầu ra PV. Các biến tác động vào quá trình khác với MV được gọi là nhiễu. Các bộ điều khiển thông thường được sử dụng để loại trừ nhiễu và/hoặc bổ sung những thay đổi điểm đặt. Những thay đổi trong nhiệt độ nước cung cấp là do nhiễu trong quá trình điều khiển nhiệt độ ở vòi nước.

Về lý thuyết, một bộ điều khiển có thể được sử dụng để điều khiển bất kỳ một quá trình nào mà có một đầu ra đo được (PV), một giá trị lý tưởng biết trước cho đầu ra (SP) và một đầu vào chu trình (MV) sẽ tác động vào PV thích hợp. Các bộ điều khiển được sử dụng trong công nghiệp để điều chỉnh nhiệt độ, áp suất, tốc độ dòng chảy, tổng hợp hóa chất, tốc độ và các đại lượng khác có thể đo lường được. Xe hơi điều khiển hành trình là một ví dụ cho việc áp dụng điều khiển tự động trong thực tế.

Các bộ điều khiển PID thường được lựa chọn cho nhiều ứng dụng khác nhau, vì lý thuyết tin cậy, được kiểm chứng qua thời gian, đơn giản và dễ cài đặt cũng như bảo trì của chúng.

## Lý thuyết điều khiển PID

Phần này chỉ mô tả dạng song song hoặc không tương tác của bộ điều khiển PID. Xin xem thêm "Alternative nomenclature and PID forms" cho những dạng khác.

Sơ đồ điều khiển PID được đặt tên theo ba khâu hiệu chỉnh của nó, tổng của ba khâu này tạo thành bởi các biến điều khiển (MV). Ta có:
:\mathrm{MV(t)}=\,P_{\mathrm{out}} + I_{\mathrm{out}} + D_{\mathrm{out}}

trong đó
:P_{\mathrm{out}}, I_{\mathrm{out}}, và D_{\mathrm{out}} là các thành phần đầu ra từ ba khâu của bộ điều khiển PID, được xác định như dưới đây.

### Khâu tỉ lệ

Khâu tỉ lệ (đôi khi còn được gọi là *độ lợi*) làm thay đổi giá trị đầu ra, tỉ lệ với giá trị sai số hiện tại. Đáp ứng tỉ lệ có thể được điều chỉnh bằng cách nhân sai số đó với một hằng số *K<sub>p</sub>*, được gọi là hệ số tỉ lệ.

Khâu tỉ lệ được cho bởi:
:P_{\mathrm{out}}=K_p\,{e(t)}

trong đó
: P_{\mathrm{out}}: thừa số tỉ lệ của đầu ra
: K_p: Hệ số tỉ lệ, thông số điều chỉnh
: e: sai số  = SP - PV 
: t: thời gian hay thời gian tức thời (hiện tại)

Hệ số của khâu tỉ lệ lớn là do thay đổi lớn ở đầu ra mà sai số thay đổi nhỏ. Nếu hệ số của khâu tỉ lệ quá cao, hệ thống sẽ không ổn định (xem phần điều chỉnh vòng). Ngược lại, hệ số nhỏ là do đáp ứng đầu ra nhỏ trong khi sai số đầu vào lớn, và làm cho bộ điều khiển kém nhạy, hoặc đáp ứng chậm. Nếu Hệ số của khâu tỉ lệ quá thấp, tác động điều khiển có thể sẽ quá bé khi đáp ứng với các nhiễu của hệ thống.

#### Drop (độ trượt)
Nếu không có nhiễu, điều khiển tỉ lệ thuần túy sẽ không xác lập tại giá trị mong muốn của nó, nhưng nó vẫn duy trì một (****) sai số ổn định trạng thái, là một hàm của độ lợi tỉ lệ và độ lợi quá trình. Đặc biệt, nếu độ lợi quá trình-trong khoảng thời gian dài bị trôi do thiếu điều khiển, như việc làm mát một lò nung tới nhiệt độ phòng-được ký hiệu *G* và giả sử sai số xấp xỉ là hằng số, khi đó droop-độ trượt xảy ra khi độ lợi không đổi này bằng thừa số tỉ lệ của đầu ra, P_{\mathrm{out}}, với sai số là *tuyến tính*, G = K_pe, do đó e=G/K_p. Khi thừa số tỉ lệ, đẩy vào thông số tới giá trị đặt, được bù chính xác bởi độ lợi quá trình, nó sẽ kéo thông số ra khỏi giá trị đặt. Nếu độ lợi quá trình giảm, khi làm lạnh, thì trạng thái dừng sẽ *nằm dưới* điểm đặt, ta gọi là "droop-độ trượt".

Chỉ các thành phần dịch chuyển (trung bình dài hạn, thành phần tần số không) của độ lợi quá trình mới tác động tới độ trượt-các dao động đều hoặc ngẫu nhiên trên hoặc dưới thành phần dịch chuyển sẽ bị triệt tiêu. Độ lợi quá trình có thể thay đổi theo thời gian hoặc theo các thay đổi bên ngoài, ví dụ như nếu nhiệt độ phòng thay đổi, việc làm lạnh sẽ nhanh hơn hoặc chậm hơn.

Độ trượt tỉ lệ thuận với độ lợi quá trình và tỉ lệ nghịch với độ lợi tỉ lệ, và là một khiếm khuyết không thể tránh được của điều khiển tỉ lệ thuần túy. Độ trượt có thể được giảm bớt bằng cách thêm một thừa số *độ lệch* (cho điểm đặt trên giá trị mong muốn thực tế), hoặc sửa đổi bằng cách thêm một khâu tích phân (trong bộ điều khiển PI hoặc PID), sẽ tính toán độ lệch thêm vào một cách hữu hiệu.

Bất chấp độ trượt, cả lý thuyết điều chỉnh lẫn thực tế công nghiệp chỉ ra rằng khâu tỉ lệ là cần thiết trong việc tham gia vào quá trình điều khiển.

### Khâu tích phân

Phân phối của khâu tích phân (đôi khi còn gọi là *reset*) tỉ lệ thuận với cả biên độ sai số lẫn quãng thời gian xảy ra sai số. Tổng sai số tức thời theo thời gian (tích phân sai số) cho ta tích lũy bù đã được hiệu chỉnh trước đó. Tích lũy sai số sau đó được nhân với độ lợi tích phân và cộng với tín hiệu đầu ra của bộ điều khiển. Biên độ phân phối của khâu tích phân trên tất cả tác động điều chỉnh được xác định bởi độ lợi tích phân, K_i.

Thừa số tích phân được cho bởi:

I_{\mathrm{out}}=K_{i}\int_{0}^{t}{e(\tau)}\,{d\tau}

trong đó
: I_{\mathrm{out}}: thừa số tích phân của đầu ra
: K_i: độ lợi tích phân, 1 thông số điều chỉnh
: e: sai số  = SP - PV
: t: thời gian hoặc thời gian tức thời (hiện tại)
: \tau: một biến tích phân trung gian

Khâu tích phân (khi cộng thêm khâu tỉ lệ) sẽ tăng tốc chuyển động của quá trình tới điểm đặt và khử số dư sai số ổn định với một tỉ lệ chỉ phụ thuộc vào bộ điều khiển. Tuy nhiên, vì khâu tích phân là đáp ứng của sai số tích lũy trong quá khứ, nó có thể khiến giá trị hiện tại vọt lố qua giá trị đặt (ngang qua điểm đặt và tạo ra một độ lệch với các hướng khác). Để tìm hiểu thêm các đặc điểm của việc điều chỉnh độ lợi tích phân và độ ổn của bộ điều khiển, xin xem phần điều chỉnh vòng lặp.

### Khâu đạo hàm

Tốc độ thay đổi của sai số quá trình được tính toán bằng cách xác định độ dốc của sai số theo thời gian (tức là đạo hàm bậc một theo thời gian) và nhân tốc độ này với độ lợi tỉ lệ K_d. Biên độ của phân phối khâu vi phân (đôi khi được gọi là *tốc độ*) trên tất cả các hành vi điều khiển được giới hạn bởi độ lợi vi phân, K_d.

Thừa số vi phân được cho bởi:
:D_{\mathrm{out}}=K_d\frac{d}{dt}e(t)

trong đó
: D_{\mathrm{out}}: thừa số vi phân của đầu ra
: K_d: Độ lợi vi phân, một thông số điều chỉnh
: e: Sai số  = SP - PV
: t: thời gian hoặc thời gian tức thời (hiện tại)

Khâu vi phân làm chậm tốc độ thay đổi của đầu ra bộ điều khiển và đặc tính này là đáng chú ý nhất để đạt tới điểm đặt của bộ điều khiển. Từ đó, điều khiển vi phân được sử dụng để làm giảm biên độ vọt lố được tạo ra bởi thành phần tích phân và tăng cường độ ổn định của bộ điều khiển hỗn hợp. Tuy nhiên, phép vi phân của một tín hiệu sẽ khuếch đại nhiễu và do đó khâu này sẽ nhạy hơn đối với nhiễu trong sai số, và có thể khiến quá trình trở nên không ổn định nếu nhiễu và độ lợi vi phân đủ lớn. Do đó một xấp xỉ của bộ vi sai với băng thông giới hạn thường được sử dụng hơn. Chẳng hạn như mạch bù sớm pha.

### Tóm tắt

Khâu tỉ lệ, tích phân, vi phân được cộng lại với nhau để tính toán đầu ra của bộ điều khiển PID. Định nghĩa rằng u(t) là đầu ra của bộ điều khiển, biểu thức cuối cùng của giải thuật PID là:

:\mathrm{u(t)}=\mathrm{MV(t)}=K_p{e(t)} + K_{i}\int_{0}^{t}{e(\tau)}\,{d\tau} + K_{d}\frac{d}{dt}e(t)

trong đó các thông số điều chỉnh là:
;Độ lợi tỉ lệ, K_p: giá trị càng lớn thì đáp ứng càng nhanh do đó sai số càng lớn, bù khâu tỉ lệ càng lớn. Một giá trị độ lợi tỉ lệ quá lớn sẽ dẫn đến quá trình mất ổn định và dao động.
;Độ lợi tích phân, K_i: giá trị càng lớn kéo theo sai số ổn định bị khử càng nhanh. Đổi lại là độ vọt lố càng lớn: bất kỳ sai số âm nào được tích phân trong suốt đáp ứng quá độ phải được triệt tiêu tích phân bằng sai số dương trước khi tiến tới trạng thái ổn định.
;Độ lợi vi phân, K_d: giá trị càng lớn càng giảm độ vọt lố, nhưng lại làm chậm đáp ứng quá độ và có thể dẫn đến mất ổn định do khuếch đại nhiễu tín hiệu trong phép vi phân sai số.

## Điều chỉnh vòng lặp
*Điều chỉnh* một vòng điều khiển là điều chỉnh các thông số điều khiển của nó (độ lợi/dải tỉ lệ, độ lợi tích phân/reset, độ lợi vi phân/tốc độ) tới giá trị đáp ứng điều khiển tối ưu. Độ ổn định (dao động biên) là một yêu cầu căn bản, nhưng ngoài ra, các hệ thống khác nhau, có những hành vi khác nhau, những ứng dụng khác nhau có những yêu cầu khác nhau, vài yêu cầu lại mâu thuẫn với nhau. Hơn nữa, vài quá trình có một mức độ phi tuyến nào đấy khiến các thông số làm việc tốt ở điều kiện đầy tải sẽ không làm việc khi quá trình khởi động từ không tải; điều này có thể khắc phục bằng chương trình độ lợi (sử dụng các thông số khác nhau cho những khu vực hoạt động khác nhau). Các bộ điều khiển PID thường cung cấp các điều khiển có thể chấp nhận được thậm chí không cần điều chỉnh, nhưng kết quả nói chung có thể được cải thiện bằng cách điều chỉnh kỹ lưỡng, và kết quả có thể không chấp nhận được nếu điều chỉnh kém.

Điều chỉnh PID là một bài toán khó, ngay cả khi chỉ có 3 thông số và về nguyên tắc là dễ miêu tả, bởi vì nó phải thỏa mãn các tiêu chuẩn phức tạp nằm trong Những hạn chế của điều khiển PID. Vì vậy có nhiều phương pháp khác nhau để điều chỉnh vòng lặp, và các kỹ thuật phức tạp hơn là đề tài cho nhiều phát minh sáng chế; phần này miêu tả vài phương pháp thủ công truyền thống để điều chỉnh vòng lặp.

### Độ ổn định
Nếu các thông số của bộ điều khiển PID (độ lợi của khâu tỉ lệ, tích phân và vi phân) được chọn sai, đầu vào quá trình điều khiển có thể mất ổn định, vì các khác biệt đầu ra của nó, có hoặc không có dao động, và được giới hạn chỉ bởi sự bảo hòa hoặc đứt gãy cơ khí. Sự không ổn định được gây ra bởi sự dư thừa độ lợi, nhất là khi xuất hiện độ trễ lớn.

Nói chung, độ ổn định của đáp ứng (ngược với độ bất định) phải thỏa mãn và quá trình phải không được dao động vì bất kỳ sự kết hợp nào giữa các điều khiện quá trình và điểm đặt, mặc dù đôi khi ổn định biên có thể được chấp nhận hoặc yêu cầu.

### Tối ưu hóa hành vi
Tối ưu hóa hành vi trong thay đổi quá trình hoặc thay đổi điểm đặt khác nhau tùy thuộc vào ứng dụng.

Hai yêu cầu cơ bản là *ổn định* (triệt tiêu nhiễu-ổn định tại một điểm đặt cho trước) và *tự hiệu chỉnh lệnh* (thực hiện các thay đổi điểm đặt)-hai yêu cầu đó tùy thuộc vào việc các biến điều khiển theo dõi giá trị mong muốn có tốt hay không. Các tiêu chuẩn đặc biệt về tự hiệu chỉnh lệnh bào gồm thời gian khởi động và thời gian xác lập. Một vài quá trình phải ngăn không cho phép các biến quá trình vọt lố quá điểm đặt nếu, thí dụ, điều này có thể mất an toàn. Các quá trình khác phải tối thiểu hóa năng lượng tiêu hao khi tiến tới một điểm đặt mới.

### Tổng quan các phương pháp
Có nhiều phương pháp khác nhau để điều chỉnh vòng lặp PID. Những phương pháp hữu hiệu nhất thường bao gồm những triển khai của vài dạng mô hình xử lý, sau đó chọn P, I, và D dựa trên các thông số của mô hình động học. Các phương pháp điều chỉnh thủ công tương đối không hiệu quả lắm, đặc biệt nếu vòng lặp có thời gian đáp ứng được tính bằng phút hoặc lâu hơn.

Lựa chọn phương pháp thích hợp sẽ phụ thuộc phần lớn vào việc có hay không vòng lặp có thể điều chỉnh "offline", và đáp ứng thời gian của hệ thống. Nếu hệ thống có thể thực hiện offline, phương pháp điều chỉnh tốt nhất thường bao gồm bắt hệ thống thay đổi đầu vào từng bước, tín hiệu đo lường đầu ra là một hàm thời gian, sử dụng đáp ứng này để xác định các thông số điều khiển.

### Điều chỉnh thủ công

Nếu hệ thống phải duy trì trạng thái online, một phương pháp điều chỉnh là thiết đặt giá trị đầu tiên của K_i và K_d bằng không. Tăng dần K_p cho đến khi đầu ra của vòng điều khiển dao động, sau đó K_p có thể được đặt tới xấp xỉ một nửa giá trị đó để đạp đạt được đáp ứng "1/4 giá trị suy giảm biên độ". Sau đó tăng K_i đến giá trị phù hợp sao cho đủ thời gian xử lý. Tuy nhiên, K_i quá lớn sẽ gây mất ổn định. Cuối cùng, tăng K_d, nếu cần thiết, cho đến khi vòng điều khiển nhanh có thể chấp nhận được nhanh chóng lấy lại được giá trị đặt sau khi bị nhiễu. Tuy nhiên, K_d quá lớn sẽ gây đáp ứng dư và vọt lố.Một điều chỉnh cấp tốc của vòng điều khiển PID thường hơi quá lố một ít khi tiến tới điểm đặt nhanh chóng; tuy nhiên, vài hệ thống không chấp nhận xảy ra vọt lố, trong trường hợp đó, ta cần một hệ thống vòng kín *[[giảm lố]]*, thiết đặt một giá trị K_p nhỏ hơn một nửa giá trị K_p gây ra dao động.

### Phương pháp Ziegler–Nichols

Một phương pháp điều chỉnh theo kinh nghiệm khác là phương pháp Ziegler–Nichols, được đưa ra bởi John G. Ziegler và Nathaniel B. Nichols vào những năm 1940. Giống phương pháp trên, độ lợi K_i và K_d lúc đầu được gán bằng không. Độ lợi *P* được tăng cho đến khi nó tiến tới độ lợi tới hạn, K_u, ở đầu ra của vòng điều khiển bắt đầu dao động. K_u và thời gian dao động P_u được dùng để gán độ lợi như sau:

### Phần mềm điều chỉnh PID

Hầu hết các ứng dụng công nghiệp hiện đại không còn điều chỉnh vòng điều khiển sử dụng các phương pháp tính toán thủ công như trên nữa. Thay vào đó, phần mềm điều chỉnh PID và tối ưu hóa vòng lặp được dùng để đảm báo kết quả chắc chắn. Những gói phần mềm này sẽ tập hợp dữ liệu, phát triển các mô hình xử lý, và đề xuất phương pháp điều chỉnh tối ưu. Vài gói phần mềm thậm chí còn có thể phát triển việc điều chỉnh bằng cách thu thập dữ liệu từ các thay đổi tham khảo.

Điều chỉnh PID bằng toán học tạo ra một xung trong hệ thống, và sau đó sử dụng đáp ứng tần số của hệ thống điều khiển để thiết kế các giá trị của vòng điều khiển PID. Trong những vòng lặp có thời gian đáp ứng kéo dài nhiều phút, nên chọn điều chỉnh bằng toán học, bởi vì việc thử sai thực tế có thể kéo dài nhiều ngày để tìm điểm ổn định cho vòng lặp. Giá trị tối ưu thì khó tìm hơn. Vài bộ điều khiển số còn có chức năng tự điều chỉnh, trong đó những thay đổi rất nhỏ của điểm đặt cũng được gửi tới quá trình, cho phép bộ điều khiển tự mình tính toán giá trị điều chỉnh tối ưu.

Các dạng điều chỉnh khác cũng được dùng tùy theo tiêu chuẩn đánh giá kết quả khác nhau. Nhiều phát minh hiện nay đã được nhúng sẵn vào trong các module phần mềm và phần cứng để điều chỉnh PID.

## Các cải tiến đối với thuật toán PID

Thuật toán PID cơ bản xuất hiện vài thử thách trong các ứng dụng điều khiển, và được khắc phục bởi các cải tiến nhỏ trong biểu thức của PID.

;Tích phân khởi động:

Một vấn đề phổ biến của bộ PID lý tưởng là Tích phân khởi động, nơi xảy ra thay đổi điểm đặt lớn (tức là thay đổi dương) và khâu tích phân tích lũy một sai số đáng kể lúc tăng (khởi động), vì vậy làm vọt lố và duy trì liên tục việc tăng sai số tích lũy bị gián đoạn. Có thể khắc phục điều này bằng cách:

* Thiết đặt giá trị tích phân ban đầu cho bộ điều khiển tới giá trị mong muốn
* Tăng điểm đặt với độ dốc thích hợp
* Không cho phép chức năng tích phân cho đến khi PV đi vào vùng điều khiển được
* Giới hạn khoảng thời gian vượt quá sai số tích phân được tính toán
* Ngăn không cho khâu tích phân tích lũy trên hoặc dưới biên xác định trước

;'Đóng băng' chức năng tích phân trong trường hợp bị nhiễu: nếu một vòng PID được sử dụng để điều khiển nhiệt độ của một lò nung điện trở, hệ thống đã ổn định và sau đó cửa lò mở và nhiệt độ thấp luồn vào lò nung làm cho nhiệt độ rơi xuống dưới điểm đặt. Chức năng tích phân của bộ điều khiển có xu hướng bù sai số này bằng cách đưa ra một sai số khác theo hướng dương. Điều này có thể tránh được bằng cách 'đóng băng' chức năng tích phân sau khi mở cửa lò để đủ thời gian cho vòng điều khiển nung lại lò nung.

;Thay chức năng tích phân bằng một phần dựa trên mô hình: Thường thời gian đáp ứng của hệ thống được biết trước. Do đó rất tiện lợi để mô phỏng thời gian đáp ứng này với một mô hình và tính toán vài thông số chưa biết từ đáp ứng thực của hệ thống. Nếu giả sử hệ thống là một lò nung điện thì đáp ứng của hiệu số giữa nhiệt độ lò và nhiệt độ môi trường để thay đổi lượng điện năng sẽ tương tự với một bộ lọc thông thấp RC đơn giản được nhân bởi một hệ số tỉ lệ chưa biết. Điện năng thực tế cung cấp cho lò nung được làm trễ bởi một bộ lọc thông thấp để mô phỏng đáp ứng của nhiệt độ lò nung và sau đó lấy nhiệt độ thực trừ đi nhiệt độ môi trường rồi chia cho thành phần điện năng thông thấp này. Sau đó, kết quả trên sẽ được ổn định bởi một bộ lọc thông thấp khác dẫn đến việc tìm ra hệ số tỉ lệ. Với việc tính toán này, ta có thể tính toán lượng điện yêu cầu bời cách chi điểm đặt nhiệt đọ trừ đi nhiệt độ môi trường bởi hệ số này. Kết quả này sau đó có thể được dùng để thay thế chức năng tích phân. Điều này còn có thể đạt được một sai số điều khiển bằng '0' trong chế độ xác lập, bằng cách tránh tích phân khởi động và có thể cải tiến đáng kể tác động điều khiển so với một bộ điều khiển PID tối ưu. Bộ điều khiển dạng này làm việc rất chính xác trong trường hợp vòng hở, tạo ra tích phân khởi động với một hàm tích phân. Đây là một ưu điểm, nếu thí dụ, nhiệt cấp cho lò nung bị giảm một lúc vì hư hỏng trong bộ nung, hoặc nếu bộ điều khiển được dùng như một hệ thống tham vấn cho nhân viên điều khiển, và người này không thể đưa nó về làm việc trong vòng kín. Cũng sẽ rất hiệu quả nếu bộ điều khiển nằm trong một nhánh của một hệ thống điều khiển phức tạp mà có thể tạm thời không làm việc.

Nhiều vòng điều khiển PID điều khiển một thiết bị cơ khí (thí dụ như van). Bảo dưỡng cơ khí có thể là phí tổn và hao mòn chính làm cho điều khiển kém đi dưới dạng ma sát tĩnh hoặc là dãi chết trong đáp ứng cơ khí ở tín hiệu đầu vào. Tốc độ bào mòn cơ khí tùy thuộc phần lớn vào sự làm việc thường xuyên của thiết bị. Những nơi bào mòn được đặc biệt chú ý, vòng điều khiển PID có thể có một dãi chết ở đầu ra để giảm tần số hoạt động của (van) đầu ra. Điều này có thể thực hiện được bằng cách biến đổi bộ điều khiển để giữ được độ ổn định ở đầu ra nếu thay đổi là nhỏ (nằm trong khoảng dãi chết xác định). Tín hiệu đầu ra tính toán phải loại bỏ dãi chết trước khi đầu ra thực tế thay đổi.

Khâu tỉ lệ và khâu vi phân có thể tạo ra biến đổi dư thừa ở đầu ra khi một hệ thống bị lệ thuộc vào nấc thay đổi tức thời tăng sai số, như một thay đổi lớn của điểm đặt. Trong trường hợp của khâu vi phân, điều này tùy thuộc vào việc đạo hàm sai số, đạo hàm này sẽ rất lớn nếu nấc thay đổi tức thời. Kết quả là, vài giải thuật PID được thêm vào các cải tiến sau:

;Đạo hàm đầu ra: Trong trường hợp bộ điều khiển PID đo lường đạo hàm của đại lượng đầu ra, thay vì đạo hàm của sai số. Tín hiệu đầu ra luôn liên tục (vì nó không bao giờ có nấc thay đổi). Để điều này đạt hiệu quả, đạo hàm của đầu ra phải cùng kiểu với đạo hàm sai số.
;Dốc hóa điểm đặt: Ở cải tiến này, điểm đặt được tăng dần từ giá trị cũ tới một giá trị dự kiến mới sử dụng một hàm tuyến tính hoặc đạo hàm bậc một của hàm dốc. Để tránh sự gián đoạn xuất hiện trong một thay đổi bậc thang đơn.
;Trọng hóa điểm đặt: Trọng hóa điểm đặt sử dụng các số khác nhau để nhân với sai số phụ thuộc vào các yếu tố của bộ điều khiển mà nó được dùng vào. Sai số trong khâu tích phân phải là sai số điều khiển thực để tránh sai số điều khiển ở trạng thái xác lập. Điều này tác động đến đáp ứng điểm đặt của bộ điều khiển. Các thông số này không tác động đến đáp ứng của nhiễu tải và nhiễu đo lường.

## Lịch sử

Các bộ điều khiển PID trong các thiết kế bộ điều tốc xuất hiện từ những năm 1890. Các bộ điều khiển PID sau đó được phát triển trong hệ thống lái tàu (thủy) tự động. Một trong những ví dụ sớm nhất của bộ điều khiển kiểu PID được phát triển bởi Elmer Sperry năm 1911, trong khi tác phẩm phân tích lý thuyết đầu tiên về bộ điều khiển PID được kỹ sư người Mỹ gốc Nga Nicolas Minorsky xuất bản, vào năm . Minorsky đã thiết kế các hệ thống lái tàu tự động cho Hải quân Mỹ, và dựa trên các phân tích của ông khi quan sát người lái tàu, ông nhận thấy rằng người lái tàu điều khiển con tàu không chỉ dựa trên sai số hiện tại, mà còn dựa vào sai số quá khứ và tốc độ thay đổi hiện tại; điều này sau đó đã được ông toán học hóa. Hải quân Mỹ cuối cùng đã không chấp nhận hệ thống, do sự phản đối từ nhân viên. Nghiên cứu tương tự được tiến hành và xuất bản bởi nhiều người khác vào thập niên 1930.

Những bộ điều khiển đầu tiên là khí nén, thủy lực, hoặc cơ khí, các hệ thống điện phát triển sau Chiến tranh Thế giới thứ II.

### Công trình của Minorsky

Về chi tiết,công trình của Minorsky xử lý các vấn đề sau. Mục đích của ông là độ ổn định, không phải điều khiển tổng quát, giúp đơn giản hóa đáng kể vấn để. Trong khi điều khiển tỉ lệ cung cấp độ ổn định chống lại các biến động nhỏ, nó không đủ để giải quyết nhiễu lớn, đặc biệt là do gió mạnh (gây ra bởi droop), nên yêu cầu phải thêm khâu tích phân. Cuối cùng, khâu vi phân được thêm vào để cải thiện điều khiển. Các thử nghiệm đã được tiến hành trên tàu USS ''New Mexico'', với bộ điều khiển điều chỉnh *[[vận tốc gốc]]* (không phải gốc) của bánh lái. Điều khiển PI tạo ra độ lệch liên tục (sai số góc) trong khoảng ±2°, trong khi thêm D tạo ra độ nghiêng trong khoảng ±1/6°, tốt hơn hầu hết người lái tàu có thể làm.

## Các hạn chế của điều khiển PID

Trong khi các bộ điều khiển PID có thể được dùng cho nhiều bài toán điều khiển, và thường đạt kết quả như ý mà không cần bất kỳ cải tiến hay thậm chí điều chỉnh nào, chúng có thể rất yếu trong vài ứng dụng, và thường không cho ta điều khiển ''tối ưu''. Khó khăn cơ bản của điều khiển PID là nó là một hệ thống phản hồi, với các thông số *không đổi*, và không có tin tức trực tiếp về quá trình, và do đó tất cả kết quả là phản ứng và thỏa hiệp - trong khi điều khiển PID là bộ điều khiển tốt nhất mà không cần mô hình điều khiển, kết quả tốt hơn có thể đạt được bằng cách kết hợp với một mô hình điều khiển.

Cải tiến quan trọng nhất là kết hợp điều khiển nuôi-tiến với kiến thức về hệ thống, và sử dụng PID chỉ để điều khiển sai số. Thay vào đó, PID có thể được cải tiến bằng nhiều cách, như thay đổi các thông số (hoặc là lập chương trình độ lợi trong nhiều trường hợp sử dụng khác nhau hoặc cải tiến thích nghi chúng dựa trên kết quả), cải tiến đo lường (tốc độ lấy mẫu cao hơn, và chính xác, và lọc thông thấp nếu cần thiết) hoặc nối tầng nhiều bộ điều khiển PID với nhau.

Các bộ điều khiển PID, khi sử dụng độc lập, có thể cho kết quả xấu khi độ lợi vòng PID buộc phải giảm vì thế hệ điều khiển không xảy ra vọt lố, dao động hoặc *[[dao động tự kích|rung]]* quanh giá trị điểm đặt điều khiển. Chúng cũng khó khăn khi xuất hiện phi tuyến, có thể cân bằng sự điều tiết chống lại đáp ứng thời gian, không phản ứng lại việc thay đổi hành vi điều khiển (do đó, quá trình thay đổi sau khi nó được hâm nóng), và bị trễ trong đáp ứng với các nhiễu lớn.

### Tuyến tính
Một vấn đề khác xảy ra đối với các bộ điều khiển PID đó là chúng tuyến tính, và đối xứng từng phần. Do đó, kết quả của các bộ điều khiển PID trong các hệ phi tuyến (như hệ điều khiển HVAC) thì khác nhau. Thí dụ, trong điều khiển nhiệt độ, một trường hợp sử dụng phổ biến là nung nóng chủ động (qua một bộ nung) nhưng làm lạnh bị động (ngưng làm nóng, nhưng không làm lạnh) vì vậy chỉ có thể loại trừ quá độ một cách chậm chạp - không thể ép xuống cưỡng bức. Trong trường hợp này bộ điều khiển PID có thể được chuyển sang giảm lố, để ngăn cản hoặc giảm sự vọt lố, mặc dù điều này làm giảm hiệu suất (nó tăng thời gian xác lập)..

### Nhiễu trong khâu vi phân
Một vấn đề với khâu Vi phân là một lượng nhỏ đại lượng đo lường hoặc xử lý nhiễu có thể gây ra các thay đổi lớn ở đầu ra. Thường sẽ rất cần thiết khi lọc các đại lượng đo lường với một bộ lọc thông thấp để loại trừ các thành phần nhiễu sóng hài bậc cao. Tuy nhiên, lọc thông thấp và điều khiển vi phân có thể loại trừ lẫn nhau, vì vậy giảm nhiễu bằng các linh kiện là lựa chọn tốt hơn. Như vậy, một bộ lọc trung vị phi tuyến có thể được sử dụng, sẽ giúp cải tiến hiệu suất lọc và kết quả thực tế. Trong vài trường hợp, dãi vi phân có thể bị 'tắt' trong nhiều hệ thống với một chút suy giảm điều khiển. Khi đó bộ điều khiển PID sẽ giống như một bộ điều khiển *[[bộ điều khiển PI|PI]]*.

## Các cải tiến
### Nuôi tiến
Kết quả của hệ điều khiển có thể được cải thiện bằng cách liên kết điều khiển phản hồi (hay vòng kín) của một bộ điều khiển PID với điều khiển nuôi tiến (hay vòng hở). Thông tin về hệ thống (như gia tốc và quán tín mong muốn) có thể được cung cấp về phía trước và liên kết với đầu ra PID để cải thiện toàn bộ kết quả hệ thống. Giá trị nuôi tiến một mình có thể thường cung cấp phần chính trong đầu ra bộ điều khiển. Bộ điều khiển PID có thể được sử dụng chính cho bất kỳ hiệu số hoặc *sai số* duy trì nào giữa điểm đặt (SP) và giá trị thực của biến quá trình (PV). Do đầu ra nuôi tiến không bị tác động bởi tín hiệu phản hồi của quá trình, nó có thể không bao giờ làm cho hệ điều khiển dao động, do đó cải thiện đáp ứng và độ ổn định của hệ thống.

Lấy thí dụ, trong hầu hết hệ thống điều khiển chuyển động, để tăng tốc một tải cơ khí được điều khiển, cần phải tăng thêm lực hoặc momen từ nguồn động lực chính, động cơ, hay bộ truyền động. Nếu một bộ điều khiển PID điều khiển vận tốc được sử dụng để điều khiển tốc độ của tải và điều khiển lực và momen trong nguồn động lực chính, thì nó cũng có lợi khi điều khiển gia tốc tức thời theo mong muốn theo tải, tỉ lệ, theo giá trị thích hợp và cộng nó với đầu ra của bộ điều khiển PID tốc độ. Có nghĩa là bất kỳ khi nào tải được tăng tốc hoặc giảm tốc, một lực tương xứng được yêu cầu từ nguồn động lực chính mà không quan tâm đến giá trị phản hồi. Vòng điều khiển PID trong trường hợp này sử dụng thông tin phản hồi để tác động tăng hay giảm hỗn hợp đầu ra để giảm hiệu số còn lại giữa điểu đặt quá trình và giá trị phản hồi. Cùng với nhau, bộ điều khiển nuôi tiến vòng hở và bộ điều khiển PID vòng kín có thể tạo ra một hệ thống điều khiển nhạy hơn, ổn định hơn và tin cậy hơn.

### Các cải tiến khác
Bên cạnh nuôi tiến, bộ điều khiển PID còn được tăng cường bằng các phương pháp khác như lập chương trình chỉnh độ lợi PID (thay đổi các thông số trong các điều kiện làm việc khác nhau), logic mờ hoặc logic động từ máy tính hóa. Các sản phẩm ứng dụng thực tế khác có thể được phát triển lên bằng cách kết nối các thiết bị với bộ điều khiển. Một tốc độ lấy mẫu đủ cao, việc đo lường chính xác, là các yêu cầu cần có để đạt được kết quả điều khiển như ý.

## Điều khiển ghép tầng
Một ưu điểm đặc trưng của các bộ điều khiển PID là hai bộ điều khiển PID có thể được sử dụng cùng nhau để đạt được kết quả động học tốt hơn. Đây được gọi là điều khiển PID ghép tầng. Trong điều khiển ghép tầng, có hai bộ PID được sắp xếp với một bộ PID điều khiển điểm đặt của bộ kia. Một bộ điều khiển làm việc như bộ điều khiển vòng ngoài, nó sẽ điều khiển các thông số vật lý chính, như mức chất lỏng hoặc vận tốc. Bộ điều khiển kia lầm việc như bộ điều khiển vòng trong, nó sẽ đọc đầu ra của bộ điều khiển vòng ngoài như là điểm đặt, thường các thông số điều khiển,tốc độ chảy hoặc gia tốc thay đổi nhanh hơn. Ta có thể chứng minh bằng toán học rằng tần số làm việc của bộ điều khiển được tăng và hằng số thời gian của đối tượng được giảm bởi việc sử dụng bộ điều khiển PID ghép tầng..

## Thực thi vật lý của điều khiển PID

Thời kỳ đầu của điểu khiển quá trình tự động bộ điều khiển PID đã được thực thi bởi một thiết bị cơ khí. Các bộ điều khiển cơ khí này sử dụng một đòn bẩy, lò xo và một khối chất và thường được kích thích bằng khí nén. Những bộ điều khiển bằng khí này đã từng là tiêu chuẩn trong công nghiệp.

Các bộ điều khiển điện tử tương tự có thể được làm từ một bộ khuếch đại dùng ống chân không hoặc từ transistor bán dẫn, một tụ điện và một điện trở. Các vòng điều khiển PID điện tử tương tự thường được tìm thấy bên trong các hệ thống điện tử phức tạp hơn, thí dụ, việc định vị đầu từ của một ổ dĩa, việc điều hòa công suất của một bộ nguồn, hoặc thậm chí trong mạch phát hiện chuyển động của một máy đo địa chấn hiện đại. Ngày nay, các bộ điều khiển điện tử hầu như được thay thế phần lớn bởi các bộ điều khiển kỹ thuật số thực hiện với các bộ vi điều khiển hay FPGA.

Các bộ điều khiển PID hiện đại nhất trong công nghiệp được thực thi trong các bộ điều khiển logic khả lập trình (PLC) hoặc một bộ điều khiển kỹ thuật số được gắn cố định trên một bảng. Các phần mềm thực thi có ưu điểm là chúng tương đối rẻ và khá linh hoạt với đáp ứng thực thi của thuật toán PID.

Điện áp thay đổi có thể được áp dụng bởi dạng phân phối thời giam của điều rộng xung(Pulse Width modulation-PWM) - một chu kỳ thời gian cố định, và các biến đổi đạt được bằng cách kiểm tra phân phối thời gian trong suốt chu kỳ này khi đầu ra bộ điều khiển +1 (hay -1) thay vì 0. Trong một hệ thống kỹ thuật số các phân bố có thể là rời rạc - thí dụ tăng 0.1 giây trong vòng một chu kỳ 2 giây để đạt 20 bước: tỉ lệ tăng là 5% - vì vậy có một sai số rời rạc hóa, để có độ phân giải thời gian đủ cao để đạt được kết quả mong muốn.

## Ký hiệu thay thế và các dạng PID
### Dạng PID lý tưởng và tiêu chuẩn

Bộ điều khiển PID là bộ điều khiển xuất hiện nhiều nhất trong công nghiệp, và bộ điều khiển thích hợp nhất để điều chỉnh thuật toán là *dạng chuẩn*. Trong dạng này, độ lợi K_p được dùng trong khâu I_{\mathrm{out}}, và D_{\mathrm{out}},đạt được::

:\mathrm{MV(t)}=K_p\left(\,{e(t)} + \frac{1}{T_i}\int_{0}^{t}{e(\tau)}\,{d\tau} + T_d\frac{d}{dt}e(t)\right)
trong đó
:T_i là *thời gian tích phân*
:T_d là *thời gian vi phân*

Trong dạng song song lý tưởng, được trình bày trong phần lý thuyết bộ điều khiển
:\mathrm{MV(t)}=K_p{e(t)} + K_i\int_{0}^{t}{e(\tau)}\,{d\tau} + K_d\frac{d}{dt}e(t)

các thông số độ lợi được liên kết tới dạng chuẩn thông qua K_i = \frac{K_p}{T_i} và  K_d = K_p T_d \,. Dạng song song này, trong đó các thông số được xử lý như là các độ lợi đơn giản, là dạng tổng quá và linh hoạt nhất. Tuy nhiên, nó cũng là dạng mà các thông số có sự liên quan vật lý ít nhất và thường được dành riêng cho việc khảo sát lý thuyết của bộ điều khiển PID. Dạng chuẩn, mặc dù phức tạp hơn về mặt toán học, nhưng lại phổ biến hơn trong công nghiệp.

### Dạng Laplace của bộ điều khiển PID

Đôi khi cách viết điều khiển PID dưới dạng biến đổi Laplace lại rất thuận tiện:
:G(s)=K_p + \frac{K_i}{s} + K_d{s}=\frac{K_d{s^2} + K_p{s} + K_i}{s}

Ta vừa có bộ điều khiển PID được viết dưới dạng Laplace và hàm truyền của hệ điều khiển khiến cho việc xác định hàm truyền vòng kín hệ thống một cách dễ dàng.

### Dạng nối tiếp/tương hỗ

Một dạng biểu diễn khác của bộ điều khiển PID là dạng nối tiếp, hay dạng *tương hỗ*
:G(s) = K_c \frac{(\tau_i{s}+1)}{\tau_i{s}} (\tau_d{s}+1)
trong đó các thông số quan hệ với các thông số của dạng chuẩn qua 
:K_p = K_c \cdot \alpha, T_i = \tau_i \cdot \alpha, và
:T_d = \frac{\tau_d}{\alpha}
với
:\alpha = 1 + \frac{\tau_d}{\tau_i}.

Dạng này về cơ bản bao gồm bộ điều khiển PD và PI ghép nối tiếp với nhau, và nó giúp cho các bộ điều khiển đời đầu (analog) dễ dàng xây dựng hơn. Khi các bộ điều khiển đời sau được số hóa, nhiều kế thừa sau đó sử dụng dạng tương hỗ.

### Thực hiện rời rạc hóa

Các phân tích về thiết kế một bộ điều khiển PID kỹ thuật số trên một Vi điều khiển (MCU) hoặc thiết bị FPGA yêu cầu dạng chuẩn của bộ điều khiển PID phải được *rời rạc hóa*. Vi phân bậc một được xác định bằng sai phân hữu hạn lùi. Khâu tích phân được rời rạc hóa, với thời gian lấy mẫu \Delta t,như sau,

:\int_{0}^{t_k}{e(\tau)}\,{d\tau} = \sum_{i=1}^k e(t_i)\Delta t 

Khâu vi phân được xác định bởi,

:\dfrac{de(t_k)}{dt}=\dfrac{e(t_k)-e(t_{k-1})}{\Delta t}

Do đó, một *giải thuật vận tốc* cho việc thực thi bộ điều khiển PID rời rạc trên một MCU đạt được bằng cách đạo hàm u(t), sử dụng các số xác định từ đạo hàm bậc một và đạo hàm bậc hai, tìm ra u(t_k) cuối cùng ta được:

:u(t_k)=u(t_{k-1})+K_p\left[\left(1+\dfrac{\Delta t}{T_i}+\dfrac{T_d}{\Delta t}\right)e(t_k)+\left(-1-\dfrac{2T_d}{\Delta t}\right)e(t_{k-1})+\dfrac{T_d}{\Delta t}e(t_{k-2})\right]

### Mã chương trình mẫu

Sau đây là một chương trình vòng lặp đơn giản thực hiện giải thuật PID dưới dạng 'lý tưởng, song song':

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

## Xem thêm

*Lý thuyết điều khiển tự động
*Hồi tiếp
*Độ bất định
*Dao động
*Bộ điều khiển PI
*Hệ thống điều khiển số
*Phép biến đổi Z

## Tham khảo

* 
*
*

*
*

* 

## Liên kết ngoài
### Sách hướng dẫn về PID
* PID Tutorial 
* P.I.D. Without a PhD: a beginner's guide to PID loop theory with sample programming code
* What's All This P-I-D Stuff, Anyhow?  Article in Electronic Design
* Shows how to build a PID controller with basic electronic components  (pg. 22)
* Virtual PID Controller Laboratory
** PID Design & Tuning 
*Online PID Tuning applet from University of Texas Control Group 

### Các đề tài dành riêng và các ứng dụng điều khiển PID
* Proven Methods and Best Practices for PID Control
* PID Control Primer  Article in Embedded Systems Programming