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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Теперь нужно немного настроить поле отображения:
- минимум-максимум канала
- добавить graph
- минимум-максимум graph
- signal (здесь задаём файл-источник сигнала. Какой файл — см. ниже)

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

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

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

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