Цитата(TamTam @ Jun 20 2006, 04:58)

Про ПИД регулирование читал, но так и не въехал как она должна выглядеть.
Заранее всем благодарен
Например так
--------------------
/*
Setpoint - уставка
Sysout - текущее значение регулируемого параметра
Acc_out_prev - предыдущее значение регулируемого параметра
Acc_Ti - накопитель для интегрального канала
Acc_Tds - накопитель для фильтра диф. канала
output - выходное значение регулятора
Maxout - максимальное значение выхода регулятора
Перед запуском
Acc_out_prev = 0;
Acc_Ti = 0;
Acc_Tds = 0;
При переходе с ручного режима управления на автоматический установить
Acc_Ti = Kp*output-Setpoint+Sysout;
Ti - Постоянная времени интегр. в единицах периода дискретизации
Tw = (0.1 - 0.5) Ti
Td - Постоянная времени диф. в единицах периода дискретизации
Tds = (0.2 - 1) Td
Кр - зона пропорциональности
*/
Acc_Ti=Acc_Ti+1/Ti*(Setpoint-Sysout)-1/Tw*Sat_out;
Acc_Tds=Acc_Tds+1/Tds*(Td*(Acc_out_prev-Sysout)-Acc_Tds);
Kp_val=Setpoint-Sysout;
output=1/Kp*(Kp_val+Acc_Ti+Acc_Tds);
Sat_out=0;
if (output>Maxout) {
Sat_out=output-Maxout;
output=Maxout;
};
if (output<0) {
Sat_out=output;
output=0;
};
----------------------