You are on page 1of 3

Phạm Xuân Đạt - 20170131

Viết đoạn chương trình code để thực hiện bộ điều khiển PID trên ở máy
tính số
Với phương pháp xấp xỉ tích phân tiến
float uk, uk_1, ek, ek_1, ek_2, kp, Ti, Td, Ta, dieukien, yk, rk;
uk = uk_1 = ek = ek_1 = ek_2 = yk = 0;
while (1) {
if (dieukien) {
ek_2 = ek_1;
ek_1 = ek;
ADC(yk);// trích mẫu tín hiệu (đo tín hiệu phản hồi)
ek = rk - yk;
uk_1 = uk;
uk = uk_1 + ek * (kp + kp * Td / Ta) + ek_1 * (-kp + kp * Ta / Ti - 2 * kp * Td /
Ta) + ek_2 * kp * Td / Ta;
}
}
Với phương pháp xấp xỉ tích phân lùi
float uk, uk_1, ek, ek_1, ek_2, kp, Ti, Td, Ta, dieukien, yk, rk;
uk = uk_1 = ek = ek_1 = ek_2 = yk = 0;
while (1) {
if (dieukien) {
ek_2 = ek_1;
ek_1 = ek;
ek = rk - yk;
uk_1= uk;
uk = uk_1 + ek * (kp +kp*Ta/Ti+ kp * Td / Ta) + ek_1 * (-kp - 2 * kp * Td / Ta) +
ek_2 * kp * Td / Ta;
}
}
Với phương pháp xấp xỉ hình thang

float uk, uk_1, ek, ek_1, ek_2, kp, Ti, Td, Ta, dieukien, yk, rk;

uk = uk_1 = ek = ek_1 = ek_2 = yk = 0;

while (1) {

if (dieukien{

ek_2 = ek_1;

ek_1 = ek;

ek = rk - yk;

uk_1 = uk;

uk = uk_1 + ek * (kp + kp*Ta/(2*Ti)+ kp * Td / Ta) + ek_1 * (-kp + kp*Ta/(2*Ti)


- 2 * kp * Td / Ta) + ek_2 * kp * Td / Ta;

You might also like