Рис. 1
Осуществим замену модели непрерывного ПИД-регулятора (построенного на элементарных блоках) одним эквивалентным блоком "transferFunction". Для выполнения этой операции надо знать коэффициенты полиномов числителя и знаменателя его ПФ, а так же коэффициент усиления (семь цифр). Для этого выделим настроенный блок непрерывного ПИД-регулятора и воспользуемся инструментарием пакета VisSim для получения информации о ПФ (Menu —> Analyz —> Transfer Function Info). В результате будут показаны два окна (см. рис. 2 и 3). В первом окне — все требуемые коэффициенты.
Во втором окне — корни полиномов числителя и знаменателя — нули и полюсы соответственно (корни квадратных уравнений). Заметим, что появление комплексных корней возможно, но не необходимо для регуляторов и всех основных видов коррекции. В дальнейшем может потребоваться разложение z-ПФ на элементарные дроби (для написания программ функционирующих на параллельно работающих ЦВМ) или на элементарные дроби (для контроля промежуточных координат). В этих случаях комплексные корни могут помешать. Те эту ситуацию вы должны предвидеть и при необходимости вам следует вернуться к первому этапу синтеза.
Промежуточный итог второго этапа продемонстрирован на рис. 4. Сравните с рисунком 2. Данный блок включите вместо регулятора, установите метод интегрирования — Euler и подберите минимальную частоту моделирования по существенному визуальному ухудшению переходного процесса. Для данной системы это 2000 Гц.
Откройте окно свойств блока "transferFunction" (рис. 4) и выполните преобразование ПФ к дискретной форме (Convert S->Z). Вам будет предложено выбрать период дискретизации. Установите его равным шагу моделирования или меньшим в 2.6 раз (потом не забудьте и свойства симуляции привести в соответствие). Результат преобразования показан на рис. 5. Проконтролируйте неизменность вида переходного процесса.
В этом, демонстрационном примере не будем проектировать регулятор, реализуемый на параллельно функционирующих ЦВМ (для быстродействия) или адаптированный для независимого подбора полюсов и нулей (настраиваемый). Таким образом, из трех широко распространённых алгоритмов программ реализующих z-ПФ мы выбрали "непосредственный". Определимся с его модификацией, использующей два буфера, как наиболее наглядной. Поскольку непосредственный алгоритм не требует разложений z-ПФ, сразу запишем РУ для оригиналов.
Сравните это уравнение с z-ПФ на рис. 5 и со структурной схемой на рис. 6 (К=1), по которой можно построить z-ПФ любого порядка.
При манипуляциях с коэффициентами полиномов числителя и знаменателя дискретных фильтров следует воздержаться от округлений — переход от изображения Лапласа к Z-изображению описывается свертыванием правой полуплоскости "устойчивых" корней в несравнимо малую окружность единичного радиуса, т. е. точность позиционирования корней должна быть эквивалентно выше.
Следует отметить, что наиболее дешевые DSP — с фиксированной точкой (целочисленной математикой). При подобном ограничении можно увеличить все коэффициенты z-ПФ так, чтобы вес дробных остатков коэффициентов был незначителен, и корни остались прежними. Среди примеров программы VisSim вы найдете решение этой локальной задачи.
Если вами будет выбран другой алгоритм программной реализации z-ПФ и потребуется разложение последней на множители или на элементарные дроби, не обязательно его выполнять для дискретной ПФ. Разложить можно и непрерывную ПФ (нули и полюсы известны — рис. 3), а потом уже следует перейти к дискретным фильтрам первого порядка. При этом вы будете освобождены от расчетов и избежите неприятных манипуляций с "неокругляемыми" коэффициентами.
Не затрагивая вопрос выбора ЦВМ, скажем, что это может быть периферийный контроллер (PIC), микроЭВМ (8051, AVR,), ЭВМ (х86…), промышленный контроллер, DSP (ADSP-21xxx, TMS320, …) или схема на жесткой логике.
Составление программы выполняющей расчет рекурсивного уравнения (*) обычно не вызывает затруднений, если ЦВМ имеет команды деления и умножения чисел (желательно с большой мантиссой и плавающей точкой).