19.5. Описание программ регулятора
В качестве примера рассмотрим алгоритм программ ПИД – регуляторов, который заключается в вычислении значения выходной величины регулятора в зависимости от закона изменения входной величины ошибки управления. Общая формула разностного уравнения для вычисления значения выходной величины, полученная на основании методики синтеза цифровых регуляторов, изложенной в главе 17, имеет вид:
Uрег(iT)={bnE(iT)+bn-1E[(i-1)T]+…+b0E[(i-n)T]-amUрег[(i-1)T]-
-am-1Uрег[(i-2)T]-…-a0Uрег[(i-m)T]}, (19.1)
где: b0,b1,…,bn – коэффициенты числителя ДПФ регулятора;
a0,a1,…,am - коэффициенты знаменателя ДПФ регулятора, полученные в главе 17.
Uрег(iТ), Uрег [(i-1)T], Uрег[(i-2)T,],…, Uрег[(i-m)T] – дискретные значения регулируемой (выходной) величины регулятора;
E(iT), E[(i-1)T], E[(i-2)T], …, E[(i-n)T] – дискретные значения входной величины регулятора.
Константам am, am-1,…,a0; bn, bn-1,…,b0 соответствуют идентификаторы AconM, AconM-1,…, Acon0; BconN, BconN-1,…, Bcon0 соответственно.
На каждом такте программа считывает дискретное значение ошибки управления Еvar0 и вычисляет выходное значение Uvar0.
Для вычисления результата кромеEvar0 используются предыдущие входные Еvar1, Evar2,… и предыдущие выходные величины Uvar1, Uvar2,…. Для каждого метода численного интегрирования количество значений из предыдущих так-тов различно, но ал-горитм сходен. На рис.19.4 показана схема алгоритма ПИД–регулятора.
Тексты программ для различных мето-дов численного ин-тегрирования (метод трапеций, метод Си-мпсона, метод Уэд-ля) приведена на дискете. Там же при-ведены и макроопре-деления для каждой программы.
Д
Рис.19.4.
Схема алгоритма работы программы ПИД
- регулятора Рис.19.4.
Схема алгоритма работы программы
ПИД-регялтора
Алгоритм программ произведения чисел со знаком, представленных в дополнительном коде, громоздкий и требует больших затрат времени, а использование прямого кода (старший бит – знаковый) требует анализа знаков и временного их маскирования перед каждым произведением чисел. Поэтому во всех программах ПИД–регуляторов, знаки всех переменных и константы хранятся в компактном виде (Sgn-var). Перед каждым циклом работы, знаки всех будущих произведений вычисляются одной операцией – логической функцией исключающего «ИЛИ». Результат запоминается в переменной Sgn-bt, содержимое которой побитно анализируется перед исполнением Mul-Plus, либо Mul-Minus. Для ускорения операции сдвига переменных, вместо команд пересылки данных типа “mov” в программах применены более эффективные цепочечные операции “movs”, осуществляющие перемещение заданного массива 16 – разрядных слов в определённом участке памяти. Перемещение можно выполнить за один приём: рассчитанный результат Uvar0 помещается не в Uvar1, а в последнюю из переменных Еvar . Так как Еvar и Uvar размещаются в оперативной памяти последовательно друг за другом, в результате выполнения всех операций “movs” содержимое последней Еvar перепишется в Uvar1.