Симуляция контроллера и утилита IO Switchboard

Симуляция контроллера нужна, если самого контроллера в наличие нет, или ещё нет. А писать программу уже надо! Или необходимо проимитировать работу программы существующего объекта.

Сразу возникает вопрос: а как же имитировать входные-выходные сигналы?  А если входной сигнал имеет сложный закон изменения во времени? Именно для этого и создан IO Switchboard.

Итак, попробуем, как оно работает:

Рисунок 1 — Создание проекта

Создаём новый проект в Automation Studio. В примере использована версия AS4.2

Рисунок 2 — Имя проекта

Как обычно, задаём имя проекта

Рисунок 3 — Определить устройства вручную
Рисунок 4 — Добавить контроллер

Добавляем в проект контроллер X20CP1585. Галочки «Use automation runtime simulation» и «Activate simulation» я не ставил.

Рисунок 5 — Активируем симуляцию

Нажав на кнопку с изображением светофора активируем симуляцию.

Рисунок 6 — Статус контроллера

В статусной строке (внизу справа) проверим, запустился ли процесс симуляции. В нашем случае — «RUN» — всё нормально.

Рисунок 7 — Дерево компонентов

Добавим к нашему контроллеру пару модулей: X20AI4622 — модуль аналоговых входов и X20AO2622 — модуль аналоговых выходов

Рисунок 8 — Загрузка проекта в контроллер

Нажав кнопочку «Transfer» загрузим проект в контроллер

Рисунок 9 — Добавление Simulation Device

К интерфейсу ETH добавим специальное устройство SimDevice

Рисунок 10 — Описание глобальных переменных

Для нашей программы определим массив типа INT

Рисунок 11- Конфигурация модуля

Далее, настроим наши модули. Кликнув правой кнопкой мыши по модулю вызовем конфигурацию (Configuration). В поле Simulation device выберем устройство SimDevice (его мы добавили ранее, см рис. 9)

Рисунок 12 — IO mapping

Привяжем к каналам входов-выходов модулей (IO Mapping) переменные. К тем каналам ввода-вывода, которые мы будем симулировать, нужно применить симуляцию — поставить галочку в столбике Simulate.

Рисунок 13 — IO mapping

То же (добавить SimDevice и привязать переменные) нужно сделать и со вторым модулем.

Примечание: можно симулировать каналы ввода-вывода выборочно. И даже на реальном контроллере. Таким образом, даже на работающем оборудовании, не имея, к примеру какого-либо датчика, или для того, чтобы проверить выходные сигналы имитацией, можно пользоваться этим механизмом.

Рисунок 14 — Программа

Теперь добавим и напишем такую нехитрую программу (в примере Automation Basic). Смысл такой: со входа buffer[0] к сигналу прибавляем 5 и кладём на выход buffer[8]

Рисунок 15 — Transfer

Заливаем проект в контроллер

Рисунок 16 — IO Switchboard

Запускаем утилиту имитации ввода-вывода IO Switchboard

Рисунок 17 — Кнопка RUN

Нажав на кнопку Run программа io switchboard свяжется с виртуальным контроллером и считает из него имитируемые вводы-выводы

Рисунок 18 — Считанные каналы ввода-вывода

Перетягиваем канал AnalogInput01 в поле Board1 (к этому каналу в нашем проекте привязана переменная buffer[0])

Рисунок 19 — Настройки поля отображения

Теперь нужно немного настроить поле отображения:

  • минимум-максимум канала
  • добавить graph
  • минимум-максимум graph
  • signal (здесь задаём файл-источник сигнала. Какой файл — см. ниже)
Рисунок 20 — Файл — закон изменения сигнала

В этом файле в виде xml-таблицы описываем закон изменения сигнала. Х — это время, Y — значения сигнала.

Рисунок 21 — Поле отображения канала вывода

Точно так же перетягиваем и настраиваем поле отображения канала вывода AnalogOutput01

Рисунок 22 — Циклическое выполнение

Нажав на кнопку с изображением синей стрелки запускаем циклическое выполнение симуляции

Рисунок 23 — Работа симуляции

Результат! IO Switchboard по закону изменения сигнала из файла имитирует входной сигнал. Этот входной сигнал обрабатывается программой виртуального (симулированного) контроллера и обработанное значение выводится на аналоговый выход модуля (тоже симулированный). Программа IO Switchboard рисует график выходного сигнала.