Здравствуйте. По каким переменным в codesys можно отслеживать обрыв связи с модулями?
У меня есть ПЛК210 с моделями МУ210, МВ210 и панель СП307Р. Связаны по ModbusTCP через Ethernet, соответственно ПЛК мастер, а остальные - слейвы. На панели есть поля ввода скоростей для частотников, управляемых от ПЛК. Значения из этих полей ПЛК собирает и хранит у себя в VAR_Retain области. Каналы сбора данных настроены так, чтобы сохранять последние значения.
Решил проверить сохранение введённых данных. Отключаю Ethernet кабель от панели - ПЛК видит, что связь пропала и значения скоростей сохранились. Выключаю питание контроллера и через 10 секунд снова включаю. Соединяюсь по codesys и вижу, что скорости обнулились. Предполагаю, что после перезагрузки контроллера он пытается получить значения от панели, но из-за отсутствия связи получает 0 и записывает эти значения. Либо Retain плохо работает в ПЛК.
Хочу отслеживать состояние связи по modbus tcp и при отсутствии связи запретить плк переписывать полученные значения, но никак не могу найти способ выразить ошибку связи с модулем в виде переменной. Пробовал IoDrvModbusTCP и IoDrvModbusTCP.ModbusTCPSlade_Diag - никак не реагируют, все выходы false и undefined. Заметил, что при подключении онлайн если зайти в слейв устройство и выбрать вкладку ModbusTCPSlave МЭК-объектов есть структура Device.Application.SP307 типа IoDrvModbusTCP.ModbusTCPSlade_Diag и в ней есть переменная xInitDone, которая реагирует на включение и отключение кабеля панели, но пытаясь вызвать в коде программы блок с названием Device.Application.SP307 и типом IoDrvModbusTCP.ModbusTCPSlade_Diag или поставить контакт с названием Device.Application.SP307.xInitDone компилятор жалуется, что не задан идентификатор Application.
Собственно вопрос - как отслеживать обрыв связи ModBus? В довесок было бы интересно как отслеживать обрыв связи по RS485 с частотниками.