Программа цифрового управления в реальном времени написана на языке высокого уровня С++. Ее листинг приведен в приложении. Для трансляции программы используется компилятор Borland C++ версии 2.0.
В начале программы определены стандартные библиотеки часть, функций из которых будет использоваться в программе. Далее определяется ряд переменных, необходимых для работы специального драйвера с именем INTERRUP. EXE, который обслуживает плату ЦАП-АЦП. Этот драйвер загружается лишь один раз в оперативную память ЭВМ до начала компиляции программы управления P-REG.cpp. Кроме этого для инициализации платы ЦАП-АЦП служит функция inicial, а для ввода и вывода информации — функции getADC, setDAC, update. Все эти функции написаны на языке Ассемблер.
В классе REG определены переменные xz — сигнал задания kp — коэффициент усиления регулятора v — выходной сигнал регулятора (переменные вещественного типа). Здесь же определен конструктор инициализации REG и функция Computer вычисления сигнала пропорционального регулятора. Конструктор и эта функция описаны ниже по ходу текста.
В основной части программы (после main) сначала происходит инициализация графического режима работы дисплея, что позволяет наблюдать графики изменения скорости вращения и напряжения управления во времени. Далее задается период ТК квантования (опроса) в тиках таймера BIOSа ЭВМ. Минимальное значение периода может быть установлено ТК=1 тику =1/18,2 с=0,0549 с.
Столь малый период квантования и высокое быстродействие современных ЭВМ позволяет управлять малоинерционными объектами, которыми являются привода с электродвигателями постоянного тока.
При инициализации с помощью конструктора REG создается объект с именем pidp.
Элементом новизны в программе является такое использование функции biostime () возвращающей текущее время машины которое позволяет запускать регулятор и все дополнительные операторы строго через заданный период квантования ТК. Реализуется эта идея с помощью конструкции.
bt=TK+biostime (0,0L);
if (bt-biostime (0,0L)==0L).
{.
bt=TK+biostime (0,0L);
Операторы;
}.
Где.
bt=TK+biostime (0,0L).
— упрежденное на величину ТК текущее время машины. Как видно из программы операторы выполняются лишь в момент достижения текущим временем величины bt. Заметим, что при таком подходе сохраняется текущее время машины.
Программа разрешает также вводить с клавиатуры в любой момент времени новые значения величин xz и kp, что позволяет провести комплекс исследований динамики замкнутой системы управления. При этом, за счет переопределения величины bt не происходит срыва работы системы в реальном времени.
Для облегчения понимания работы программы в ее листинге имеются комментарии, поясняющие назначение отдельных операторов. Кроме этого, на рис. 3 приведена структурная схема контура регулирования, переменные на которой соответствуют идентификаторам программы.