Запрограммировать блок запаздывания можно разными способами. Здесь рассматривается более общий способ, когда для реализации запаздывания используется ОЗУ.
Рассмотрим принцип организации программного модуля, считая , а =n1, (при = 1с). При этом будем считать, что =3с, что не нарушает общности рассуждение, так как пользователь должен исходить из переменной n1.
Блок запаздывания задерживает каждое регулирующее воздействие, поступающее на его вход на n1 временных тактов, а затем в виде сигнала ZP подается на вход апериодического звена Н*м (s).
На рис 7.2 приведена схема продвижения сигнала в блоке запаздывания, состоящего, в частности, из n 1 =3 ячеек.
n1 =3
Рис. 7.2 Схема продвижения сигнала в блоке запаздывания
n = 0
Xр[0]
n = 1
Xр[1]
Xр[0]
n = 2
Xр[2]
Xр[1]
Xр[0]
n = 3
Xр[3]
Xр[2]
Xр[1]
n = 4
Из схемы (см. рис.7.2) видно, что через n1 = 3 такта времени первое значение регулирующего воздействия (Xр[0]) окажется в ячейке Z[n1] = Z[3], а на 4-ом такте там будет следующее значение (Zp[1]) и т.д. Таким образом, значение на выходе блока запаздывания (Zp) надо брать из ячейки Z(n1) через оператор присваивания:
Zp:= Z[n1]. (7.1)
При программировании проще всего воспользоваться циклом FOR- DO:
FOR j: =1 ТO n, DO. (7.2)
Следует напомнить, что значение нулевых интервалов n1 определяется при цифровой фильтрации, а переменная n1 является глобальной согласно таблице 1.1 (2.1).
При дальнейшем анализе предлагается связать управляющую переменную цикла Т с тактом времени n.
Не трудно убедиться (см. рис. 7.2), что
если j > n , то Zj = 0 ;
(7.3)
если j <= n , то Zj = Xp(n-j).
Выражение (7.3) программируется через конструкцию IF-THEN-ELSE
Осталось определить в каком листе процедуры (до цикла или после цикла) использовать (7.1), чтобы после каждых n1тактов, т.е. на каждом n1+1 появлялосьочередное значение регулирующего воздействия. Этот анализ остается за студентом.