Мне стало интересно и я глянул.
1. Я тоже не понял, почему Мастер и Слейв на одном интерфейсе и как это должно работать.
2. А что это за чтение STRING из модулей IO? Тут же модули ввода-вывода ОБЫЧНЫЕ (я сам такие вовсю использую).
Откуда в них STRING взялся-то?!!!
Вот оно и тормозит как чёрти что, потому что ПЛК читает слишком много из модулей.
3. Polling Time на модули IO стоит 2000 ms. Это ДВЕ СЕКУНДЫ. Модулей 5 штук, так? Вот получается, что один модуль будет опрашиваться раз в 2 сек ъ 5 штук = ДЕСЯТЬ СЕКУНД. В худшем случае.
Шо это за бредятина вообще?
МВ110-16ДН = надо читать ОДИН РЕГИСТР (Register input Module) с адресом 51.
МУ110-224.16Р = надо писать ОДИН регистр (Register output Module) с адресом 50.
МВ110-224.8А = или надо читать FLOAT, или читать регистры значения и десятичной точки и статуса канала измерения.
И ещё хорошо бы делать в коде комментарии и понятные имена.
Вот посмотри на мой проект. Там как раз все такие модули как у тебя. Этот проект ЛЕТАЕТ!!
Я вырезал отуда всё лишнее, и оставил только образцы того, что надо:
* Конфигурация ПЛК - посмотри, как там IO вбито
* Конфигурация Задач - посмотри, там созданы задачи и им заданы нужные времена исполнения. У тебя же задач нет, и PLC_PRG работает по умолчанию хер знает с какой скоростью.
* Списки переменных. Их можно создавать несколько, и это удобно для проекта: можно разнести настройки, константы и RETAIN по спискам, чтобы было понятно.
* Имена переменных и объектов. Мои читабельнее твоих. Потому имеют структуру "Префикс" + "Общее назначение" + "Название", типа Btn_KuhnaLED или Sys_TestOuts.
* POU TaskMain, где те самые входные переменные с модулей IO разбираются по значениям и присваиваются красивым внутренним переменным.
Вот:
LobachevskDEMO.pro