Здравствуйте! ПЛК110[М02] общается с компьютером используя Modbus TCP. ПЛК является мастером. Как в программе ПЛК определить, что компьютер в данный момент подключен к ПЛК (установлено TCP соединение)? Среда Codesys V2.3.
Здравствуйте! ПЛК110[М02] общается с компьютером используя Modbus TCP. ПЛК является мастером. Как в программе ПЛК определить, что компьютер в данный момент подключен к ПЛК (установлено TCP соединение)? Среда Codesys V2.3.
Последний раз редактировалось teo111; 08.08.2023 в 22:48.
1. ПК устанавливает бит в TRUE -> ПЛК сбрасывает в FALSE -> ПК устанавливает бит в TRUE и т.д. и анализируем в ПЛК
2. Читаем время в ПК и сравниваем с прошлым прочитанным.
3. Вместо времени в п.2 используем простой инкрементный счетчик.
4. Если обмен через сокеты, там есть кол-во принятых байт и еще что-то полезное.
Смотря что на ПК используется в качестве слейва. Много костылей можно придумать для диагностики соединения.
Тоже делал так контроль пока не столкнулся с MS4D, из которой отправка переменных происходит только при их изменении (OPC UA).
Наверное можно было изменить настройки этого тега в OPC, но сделал по-другому - в ПК (скаде) контрольный тег всё время инвертируется, а в ПЛК отслеживается наличие его изменений - при "застывании" тега на ПЛК фиксируется потеря связи
Коллега, а что за скада у вас?
Я реализовал такую процедуру проверки в TraceMode 6.
Проект контроллера во вложении.
TCP_WATCHDOG.pro
На стороне ПК работает специализированное самописное ПО. Использовать костыли с периодической записью со стороны ПК единичек и сбросом их со стороны ПЛК технически проблем никаких нет. Но по возможности не хочется нагружать протокол взаимодействия подобными штуками, если существуют какие-нибудь готовые средства контроля соединения.