Симуляция контроллера нужна, если самого контроллера в наличие нет, или ещё нет. А писать программу уже надо! Или необходимо проимитировать работу программы существующего объекта.
Сразу возникает вопрос: а как же имитировать входные-выходные сигналы? А если входной сигнал имеет сложный закон изменения во времени? Именно для этого и создан IO Switchboard.
Итак, попробуем, как оно работает:
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/Screenshot_20180213_132711.png)
Создаём новый проект в Automation Studio. В примере использована версия AS4.2
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/Screenshot_20180213_132743-300x239.png)
Как обычно, задаём имя проекта
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/Screenshot_20180213_132805-300x239.png)
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/Screenshot_20180213_132836-300x239.png)
Добавляем в проект контроллер X20CP1585. Галочки «Use automation runtime simulation» и «Activate simulation» я не ставил.
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/Screenshot_20180213_132922-300x225.png)
Нажав на кнопку с изображением светофора активируем симуляцию.
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/Screenshot_20180213_134412-300x111.png)
В статусной строке (внизу справа) проверим, запустился ли процесс симуляции. В нашем случае — «RUN» — всё нормально.
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/1-300x168.png)
Добавим к нашему контроллеру пару модулей: X20AI4622 — модуль аналоговых входов и X20AO2622 — модуль аналоговых выходов
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/2-300x210.png)
Нажав кнопочку «Transfer» загрузим проект в контроллер
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/3-300x162.png)
К интерфейсу ETH добавим специальное устройство SimDevice
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/4-300x93.png)
Для нашей программы определим массив типа INT
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/5-300x144.png)
Далее, настроим наши модули. Кликнув правой кнопкой мыши по модулю вызовем конфигурацию (Configuration). В поле Simulation device выберем устройство SimDevice (его мы добавили ранее, см рис. 9)
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/6-300x136.png)
Привяжем к каналам входов-выходов модулей (IO Mapping) переменные. К тем каналам ввода-вывода, которые мы будем симулировать, нужно применить симуляцию — поставить галочку в столбике Simulate.
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/7-300x111.png)
То же (добавить SimDevice и привязать переменные) нужно сделать и со вторым модулем.
Примечание: можно симулировать каналы ввода-вывода выборочно. И даже на реальном контроллере. Таким образом, даже на работающем оборудовании, не имея, к примеру какого-либо датчика, или для того, чтобы проверить выходные сигналы имитацией, можно пользоваться этим механизмом.
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/7_5-300x177.png)
Теперь добавим и напишем такую нехитрую программу (в примере Automation Basic). Смысл такой: со входа buffer[0] к сигналу прибавляем 5 и кладём на выход buffer[8]
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/8-300x82.png)
Заливаем проект в контроллер
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/9-300x212.png)
Запускаем утилиту имитации ввода-вывода IO Switchboard
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/10-300x160.png)
Нажав на кнопку Run программа io switchboard свяжется с виртуальным контроллером и считает из него имитируемые вводы-выводы
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/11-300x228.png)
Перетягиваем канал AnalogInput01 в поле Board1 (к этому каналу в нашем проекте привязана переменная buffer[0])
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/12-300x169.png)
Теперь нужно немного настроить поле отображения:
- минимум-максимум канала
- добавить graph
- минимум-максимум graph
- signal (здесь задаём файл-источник сигнала. Какой файл — см. ниже)
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/13-300x250.png)
В этом файле в виде xml-таблицы описываем закон изменения сигнала. Х — это время, Y — значения сигнала.
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/14-300x158.png)
Точно так же перетягиваем и настраиваем поле отображения канала вывода AnalogOutput01
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/15.png)
Нажав на кнопку с изображением синей стрелки запускаем циклическое выполнение симуляции
![](http://mikroteh.zp.ua/wpblog/wp-content/uploads/2018/02/16-294x300.png)
Результат! IO Switchboard по закону изменения сигнала из файла имитирует входной сигнал. Этот входной сигнал обрабатывается программой виртуального (симулированного) контроллера и обработанное значение выводится на аналоговый выход модуля (тоже симулированный). Программа IO Switchboard рисует график выходного сигнала.