Разработка программ имитаторов, встраивание их в проект

Далее приступим к созданию имитатора объекта участка термообработки. В слое Шаблоны_программ создадим программу Имитатор_Термообработки и зададим ей следующие аргументы:

Входные аргументы ПЛЮС и МИНУС – сигналы от ПДД-регулятора с ШИМ, а выходные аргументы РАСХОД и ТЕМПЕРАТУРА – соответственно расход теплоносителя и температура в аппарате. Построим математическую модель аппарата, основываясь на предположении, что его функционирование описывается классическим инерционным звеном первого порядка с запаздыванием. Исходя из постановки задачи, для создаваемой модели входным воздействием будет служить расход теплоносителя, выходным – температура в аппарате. Параметры объекта назначим следующими: коэффициент передачи (усиления) 2.5, постоянная времени 20 (в тактах пересчета), запаздывание 3 (в тактах пересчета), а также наложим на его выход гармонические и случайные помехи. В качестве языка программирования применим Техно FBD.

Функциональные блоки TRACT применены для сглаживания и ограничения формируемых выходных значений, а функциональные блоки умножения X*Y 8 и 9 – для приведения значений к выходному диапазону 12-ти разрядного АЦП. Откомпилируем созданную программу.  Откроем дополнительное окно Навигатора проекта на группе Участок_Термообработки узла PC-based контроллера MicroRTM_2 и перетащим в него шаблон программы. Для созданного канала класса Вызов Имитатор_Термообработки выполним привязку атрибутов каналов к аргументам.

Для имитации расхода продукта создадим шаблон программы Имитатор_Расход_Продукта, для чего также воспользуемся языком Техно FBD. Аргументы программы определим как

Случайную составляющую расхода будем формировать, используя центральную предельную теорему, из комбинации четырех генераторов случайных чисел в диапазоне (0,1) с равномерным распределением. Номинальное значение расхода зададим равным 50, а для плавного изменения в моменты включения/выключения дозирующего насоса применим функциональный блок переключения с динамической балансировкой – SSWT. Не забудем с помощью блока умножения X*Y привести выходное значение программы к диапазону 12-ти разрядного АЦП.

Откомпилируем программу.  В дополнительном окне навигатора проекта выделим группу Участок_Дозирования узла MicroRTM_2 и перетащим в него шаблон программы. Для созданного таким образом канала класса Вызов Имитатор_Расход_Продукта выполним привязку атрибутов каналов к аргументам.

Так как от PLC - контроллера Siemens S7-200 поступают данные как аналоговые, так и дискретные, то для их имитации на АРМ создадим две соответствующие программы. Причем для каждого типа параметров создадим по одному экземпляру программы, а, варьируя значения аргументов, задаваемых как константы – в поле Значение по умолчанию табличного редактора аргументов, будем устанавливать величины параметров и их "случайные" флуктуации.

Создадим в слое Шаблоны_программ новую программу – Имитатор_УХ_Аналог. Объявим для нее аргументы:

Программу разработаем на языке программирования Техно FBD.

Изменяющийся по синусоидальному закону "случайный" компонент в диапазоне (-1,1) будем масштабировать, задавая аргумент Флуктуация, и добавлять к аргументу Базис, определяющему установившееся значение. Откомпилируем программу нажатием функциональной клавиши F7.

Для привязки разработанной программы выделим в окне Навигатора проекта группу Участок_Хранения узла RTM_1. Выделим канал Уровень и откроем его свойства. Во вкладке Информация определим свойство канала Вызов путем указания в диалоге шаблона программы Имитатор_УХ_Аналог.

Перейдя в появившуюся после выполненного действия вкладку Аргументы, привяжем аргументы программы к атрибуту канала и зададим константы в столбце Значения по умолчанию.

Подобным образом поступим в отношении каналов Температура, Давление и Влажность, указав для них соответственно аргументы Флуктуация и Базис как (0.25,24), (0.025,0.98) и (0.2,70).

Для имитации дискретных сигналов создадим шаблон программы Имитатор_УХ_Дискрет со следующими аргументами:

Разработанная на Техно FBD программа будет выглядеть так:

Данная программа будет периодически имитировать срабатывание дискретного датчика. Задавая входным аргументом Счетчик_тактов количество тактов, поступающих от генератора G01, до момента срабатывания датчика (установки триггера TP), при его достижении выходной аргумент Сигнал будет удерживаться в состоянии 1 в течение последующих 20 тактов, затем произойдет сброс его в состояние 0, а далее картина будет повторяться. После компиляции программы выделим канал Дверь в группе Участок_Хранения узла RTM_1 и в бланке Информация определим свойство Вызов следующим образом:

Во вкладке Аргументы свяжем выходной аргумент программы с атрибутом Реальное значение текущего канала и зададим период "срабатывания" датчика в качестве значения по умолчанию:

Для канала Пожарная_сигнализация поступим аналогичным образом, определив для него периодичность срабатывания как 1000. В отношении канала Вентиляция поступим несколько иначе – зададим ему постоянное значение, соответствующее включенному состоянию системы вентиляции:

Таким образом, разработанный в предыдущих главах проект системы автоматизации, доступен для запуска и отладки, причем все внешние сигналы заменены имитаторами.

Сохраним созданный проект на диск с именем DEMO_PRJ.prj и, затем, с помощью щелчка ЛК мыши на иконке  панели инструментов создадим файлы для загрузки на целевые платформы для проведения отладки проекта.