Разработка программного обеспечения нижнего уровня
Разработка программного обеспечения нижнего уровня проводится поэтапно.
Этап 1. Задание схемы проекта. В соответствии со схемой соединения контроллеров, изображенной на рис. 26, сначала необходимо при использовании инструментальной системы КОНГРАФ задать правильные соединения для нашей задачи в сети контроллеров, имеющихся на стенде.

Рис. 27. Сеть микроконтроллеров
На рисунке 27 показаны соединения контроллеров с учетом форматов передаваемых данных, т.е. типы выходных данных должны соответствовать типам входных данных соединенных контроллеров.
Этап 2. Создание программ проекта для каждого контроллера. Контроллер MR8 является коммуникационным контроллером и через него осуществляется управление лампой накаливания.

Рис. 28. Алгоритм работы микроконтроллера MR8
Контроллер MC5 является коммуникационным контроллером и через него осуществляется управление зеленой и красной индикаторными лампами.

Рис. 29. Алгоритм работы микроконтроллера MC5
Основная программа с алгоритмом поддержания температурного режима помещения находится на контроллере МС8. Выход с этого контроллера подается на исполнительный механизм Belimo и коммуникационные контроллеры МС5 и MR8. Отлаженный и протестированный вариант программы приводится на рис. 30.

Рис. 30. Алгоритм работы микроконтроллера MC8
На учебном стенде, на котором проводится имитационное моделирование, имеются вполне определенные соединения между контроллерами, которые мы не может самовольно и произвольно изменять. Они являются заданными физическими ограничениями на реализацию системы, которых мы обязаны придерживаться. Поэтому в проекте использованы три контроллера, хотя достаточно применение только одного контроллера MC8, т.к. у него имеется достаточное количество входных и выходных каналов, производительности и внутренней памяти для программ и данных.
Обзор алгоритмических блоков проекта
Приведем описание всех алгоритмических блоков инструментальной системы КОНГРАФ, задействованных в проекте.
1. ТЕРМ 10К +С - Термистор 10 кОм с сигнализацией обрыва/к.з.
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X |
Вход |
аналог. |
Входное напряжение, мВ |
|
TYPE |
Вход |
целоч. |
Тип датчика |
|
YCEL |
Выход |
аналог. |
Измеренная температура, °C |
|
YFAR |
Выход |
аналог. |
Измеренная температура, °F |
|
FAULT |
Выход |
логич. |
Обрыв / короткое замыкание |
Алгоблок предназначен для нормализации измерений термистора 10 кОм, т.е. преобразования измеренного сопротивления датчика в значение температуры.
Параметр TYPE может быть равен:
* 2 - для термистора 10К-2 или ACI/10K-CP (ACI);
* 3 - для термистора 10К-3 или ACI/10K-AN (ACI).
Характеристики поддерживаемых термисторов:
для 10к-2 -- B25/100=3990 или B25/100=3980
для 10к-3 -- B25/100=3715)
При обрыве или коротком замыкании проводов датчика, выход FAULT становится равным 1, а измеренная температура остаётся равной значению на момент обрыва или короткого замыкания.
2. НАПРЯЖЕНИЕ - Напряжение (0-10В)
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X |
Вход |
аналог. |
Входное напряжение, мВ |
|
Y |
Выход |
аналог. |
Измеренное напряжение, В |
Алгоблок преобразует напряжение, поступающее от датчика (0-10В) на вход АЦП через конфигуратор, в выходное значение напряжения датчика.
3. ФИЗ ВЕЛ ОГ-Преобразование в физические единицы по двум точкам с ограничением
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X |
Вход |
аналог. |
Вход |
|
XMIN |
Вход |
аналог. |
Минимальное значение входа |
|
XMAX |
Вход |
аналог. |
Максимальное значение входа |
|
YMIN |
Вход |
аналог. |
Минимальное значение выхода |
|
YMAX |
Вход |
аналог. |
Максимальное значение выхода |
|
Y |
Выход |
аналог. |
Выход |
Алгоблок выполняет линейное преобразование сигнала от датчика в физические единицы с ограничением.
X - сигнал датчика (мА, мВ или В);
Y - значение сигнала датчика, но уже в выбранных физических единицах.

4. Сумма
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X[i] |
Входы |
аналог. |
Входы. Кол-во входов может быть от 2 до 255 |
|
Y |
Выход |
аналог. |
Cумма |
Алгоблок предназначен для вычисления суммы аналоговых чисел.
Y(t) = X[1](t) + X [2](t) + … + X [N](t)
Сумма N аналоговых чисел X[i] (i = 2…N), которые действительны на входах блока в текущем цикле работы алгоритма, определяет значение Y(t). В следующем цикле ФБ сформирует сумму новых значений на входах X[i] блока.
5. Разность
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X1 |
Вход |
аналог. |
Уменьшаемое |
|
X2 |
Вход |
аналог. |
Вычитаемое |
|
Y |
Выход |
аналог. |
Разность |
Вычисление разности аналоговых чисел.
Y(t) = X1(t) - X2(t)
Разность двух аналоговых чисел, которые действительны на входах блока в текущем цикле работы алгоритма, определяет значение Y(t). В следующем цикле алгоблок сформирует новое значение разности на выходе Y.
6. КОМПАР ВЕРХ - Компаратор верхнего уровня
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X |
Вход |
аналог. |
Вход |
|
XUP |
Вход |
аналог. |
Уровень срабатывания. Пороговое значение верхнего уровня |
|
HYS |
Вход |
аналог. |
Величина гистерезиса |
|
Z |
Выход |
логич. |
Выход |

Алгоблок предназначен для сравнения входного параметра с пороговым значением XUP. Z принимает значение "1" если X становится больше чем XUP и Z принимает значение "0" если Х становится меньше чем XUP-HYS.
7. КОМПАР НИЖ - Компаратор нижнего уровня
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X |
Вход |
аналог. |
Вход |
|
XLOW |
Вход |
аналог. |
Уровень срабатывания. Пороговое значение нижнего уровня |
|
HYS |
Вход |
аналог. |
Величина гистерезиса |
|
Z |
Выход |
логич. |
Выход |
Алгоблок предназначен для сравнения входного параметра с пороговым значением XLOW. Z принимает значение "1" если X становится меньше чем XLOW и Z принимает значение "0" если Х становится больше чем XLOW+HYS.

8. ПРЕОБР Л-А -
9. Преобразователь типов: логический в аналоговый
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
Q |
Вход |
логич. |
Вход |
|
Y |
Выход |
аналог. |
Выход |
Алгоблок выполняет функцию преобразования входной логической величины в аналоговую.
Если Q=0, то Y=0.0; если Q=1, то Y=1.0.
10. УМНОЖЕНИЕ - Умножение
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X[i] |
Входы |
аналог. |
Множители. Кол-во входов может быть от 2 до 255 |
|
Y |
Выход |
аналог. |
Произведение |
Алгоблок предназначен для вычисления произведения аналоговых чисел.
Y(t) = X[1](t) * X [2](t) * … * X [N](t)
Произведение N аналоговых чисел X[i] (i = 2…N), которые действительны на входах блока в текущем цикле работы алгоритма, определяет значение Y(t). В следующем цикле алгоблок сформирует произведение новых значений на входах X[i] блока.
11. ЗДН АН - Задание аналоговой величины
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X |
Вход |
аналог. |
Вход |
|
Y |
Выход |
аналог. |
Выход |
Алгоблок предназначен для задания аналоговой уставки на входах используемых в алгоритме других алгоблоков.
Алгоблок копирует значение, заданное на входе X, на выход Y. Вход алгоблока по умолчанию сделан невидимым.
Входной параметр может быть задан в качестве константы или включен в приборный список.
11. НЕ - Логическое НЕ
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
Q |
Вход |
логич. |
Вход |
|
Z |
Выход |
логич. |
Выход |
Алгоблок выполняет функцию логического отрицания. В каждом цикле работы алгоритма выполняется соотношение:
Z(t) = NOT (Q(t))
Если Q=1, то Z=0 и наоборот.
12. И - Логическое И:
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
Q[i] |
Входы |
логич. |
Входы. Кол-во входов может быть от 2 до 255 |
|
Z |
Выход |
логич. |
Выход |
Алгоблок выполняет функцию логического умножения. В каждом цикле работы алгоритма выполняется соотношение:
Z(t) = Q[1](t) & Q[2](t) & ... & Q[N](t).
Если хотя бы один из входов Q равен 0, то Z=0.В противном случае Z=1.
13. ПАМЯТЬ АН - Запоминание аналоговой величины
Обозначение
Параметры
|
Имя |
Вх/Вых |
Тип |
Комментарий |
|
X |
Вход |
аналог. |
Вход |
|
Q |
Вход |
логич. |
Стробирующий вход |
|
Y |
Выход |
аналог. |
Выход |
Алгоблок выполняет функцию триггера-защелки. Входная информация X запоминается и передается на выход Y по переднему фронту на входе Q.
Параметр Y может быть сохранён в энергонезависимой памяти (на срок до двух недель).