Далее приступим к созданию имитатора объекта участка термообработки. В слое Шаблоны_программ создадим программу Имитатор_Термообработки и зададим ей следующие аргументы:
Входные аргументы ПЛЮС и МИНУС – сигналы от ПДД-регулятора с ШИМ, а выходные аргументы РАСХОД и ТЕМПЕРАТУРА – соответственно расход теплоносителя и температура в аппарате. Построим математическую модель аппарата, основываясь на предположении, что его функционирование описывается классическим инерционным звеном первого порядка с запаздыванием. Исходя из постановки задачи, для создаваемой модели входным воздействием будет служить расход теплоносителя, выходным – температура в аппарате. Параметры объекта назначим следующими: коэффициент передачи (усиления) 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 и, затем, с помощью щелчка ЛК мыши на иконке панели инструментов создадим файлы для загрузки на целевые платформы для проведения отладки проекта.