Hi Zahar, hope you are having a nice day!
24 Hоя 03, Zahar Kiselev wrote to All:
ZK> Где бы подсмотреть исходник реализации ПИД-регулятора, желательно на ZK> Си,
Почти в любой книжке, например:
double Kp; double Ti; double Td; double h; double Tt; double ref_value; int n;
double PID(double value); { static double I; static double D; static double old_value; double result; double out_error; double error;
error = ref_value - value; D += Kp * n * (old_value - value); D *= Td / (Td + n * h); // diff. filtering result = Kp * error + I + D; // calculate output power I += Kp * error * h / Ti; // calculate integral part if (result > MAXPOWER) // check limits { out_error = MAXPOWER - result; result = MAXPOWER; } else if (result < 0) { out_error = -result; result = 0; } else out_error = 0; I += out_error * h / Tt; // antiwindup (integral tracking) old_value = value; return result; }
ZK> а не на ассемблере?
Hа асме сложнее найти.
ZK> Или почитать статью о том, как их _правильно_ ZK> писать.
А как можно написать неправильно? Функция простая, как-то иначе написать ее трудно.
ZK> "кое-как" - я и сам умею, только что приятелю разжевывал. ZK> Хочется посмотреть как Умные Люди пишут...
WBR, AVB
ICQ# 43835774 mailto: avb<at>dialup.etr.ru