Trên đây là công thức tính PID (cấu trúc song song) rời rạc đã được đề cập đến trong rất nhiều sách.
Kp, Ti, Td: thông số của PID
Ts: chu kỳ trích mẫu
<code>
// sense: đọc dữ liệu từ sensor
ek = ref – pv; // pv = present value
// calculate & anti-windup limits
uk = theo công thức;
if ( uk > ukmax )
uk = ukmax;
else if ( uk < ukmin )
uk = ukmin;
// update biến trạng thái
ek-2 = ek-1;
ek-1 = ek;
uk-2 = uk-1;
uk-1 = uk;
// actuate: ghi dữ liệu ra actuator
outPortUk.data()->Set(uk); // ví dụ 1 lệnh gửi dữ liệu ra output port
</code>
Chú ý tuần tự thực hiện nên là: sense(), calculate(), update(), actuate().
Astrom and Wittenmark có đề xuất là “writing first”, khi đó tuần tự thực hiện sẽ là actuate(), sense(), calculate(), update(). Tuy nhiên trong vấn đề này mỗi người có một quan điểm khác nhau.