- •5. Разработка программного обеспечения для аоэп
- •5.1. Структура программного комплекса
- •5.2. Модуль взаимодействия с устройством ввода - вывода
- •5.3. Разработка фундаментальных классов
- •5.3.1. Разработка программного модуля объекта «пи - регулятор».
- •5.3.2. Разработка программного модуля объекта «Генератор».
- •5.3.3. Разработка программного модуля «Идентификация»
- •5.3.4. Разработка программного модуля объекта «Заграждающий фильтр»
- •5.3.5. Разработка программного модуля объекта «Синхронный детектор»
- •5.4. Разработка интерфейса
- •5.5. Правила использования программного продукта
5.2. Модуль взаимодействия с устройством ввода - вывода
Для обеспечения интерфейса с платой предназначен драйвер INTERRUP.EXE. Он загружает и оставляет в резидентной части функции работы с платой. При этом устанавливаются прерывание 0Fh (IRQ7) и пользовательское прерывание 61h.
Процедура пользователя не должна использовать функции DOS (прерывание 21h), а также стандартные процедуры ввода - вывода С++, использующие эти функции.
Для работы с аппаратурой в программном комплексе предусмотрен объект управления аппаратурой, где в частности имеются следующие функции:
start : запускает таймер платы ЦАП - АЦП;
stop : останавливает таймер платы ЦАП - АЦП;
inicial : инициализирует глобальные переменные. Эта процедура должна быть вызвана первой при работе с драйвером.
5.3. Разработка фундаментальных классов
Основные математические представления в алгоритмах инкапсулированы в отдельных классах, то есть в одной и той же структуре собраны вместе как основные свойства математической реализации так и основные функции доступа к ним, что позволяет упростить дальнейшие модификации объекта и применять такие возможности языка С++ как наследование, полиморфизм и так далее.
5.3.1. Разработка программного модуля объекта «пи - регулятор».
Программная реализация модуля представлена в виде класса REG, заголовок которого приведен ниже:
class REG
{
public:
float x1,x2,x3,x4,e1,xz,kp,ti,td,l;
float v,vz;
void init(float, float, float, float, float, float, float);
float Compute(float);
};
Соответствие переменным, используемым при разработке схемы алгоритма, приведено в таблице 1.
Таблица 1. Переменные класса REG
-
1
е1
сигнал ошибки
2
ti
постоянная интегрирования регулятора
3
v
выходной сигнал регулятора
4
xz
сигнал задания
5
kp
коэффициент передачи ПИ - регулятора
6
l
служебная переменная, применяемая для масштабирования выходного сигнала регулятора
7
х
j сигнал, поступающий с платы АЦП (с ОУ)
8
х1,х2,х3,х4
(j-1), (j-2), (j-3), (j-4) соответственно сигналы с выхода объекта управления
9
vz
(j-1) сигнал с выхода регулятора
10
td
постоянная дифференцирования регулятора
В класс REG входят также две функции:
init - функция инициализации переменных. Переменным, описанным в данном классе присваивается первоначальное значение, которое в последствии может быть изменено.
Compute - функция, моделирующая сам закон регулирования. Результатом этой функции является значение, которое используется в последствии как выходная величина ПИ - регулятора.
5.3.2. Разработка программного модуля объекта «Генератор».
Программная реализация модуля представлена в виде класса Generator, заголовок которого приведен ниже:
class Generator
{
float OA;
public:
float SD,PS,OS,OC,AK;
void init(float);
void Compute(float);
};
Соответствие переменным, используемым при разработке схемы алгоритма, приведено в таблице 2.
Таблица 2. Переменные класса GENERATOR
-
1
ак, AK
Амплитуда колебаний пробного гармонического сигнала
2
PI
Константа p
3
nf
Нормированный период колебаний
4
OS
Синусоидальная составляющая сигнала в j момент времени
5
ОС
Косинусоидальная составляющая сигнала в j момент времени
6
PS
Величина пробного сигнала в j момент времени
7
РЕ
Период квантования
8
ОА
Величина фазового сдвига в j момент времени
В класс Generator входят следующие функции:
init - функция инициализации переменных. Переменным, описанным в данном классе присваивается первоначальное значение, которое в последствии может быть изменено.
Compute - функция, моделирующая цифровой генератор гармонических колебаний.
