Здравствуйте уважаемая техподдержка! Используем в своём проекте связку из 6 модулей ICPDAS M-7017Z связанных по Modbus RTU с 6-ю модулями M2M-711D, т.е. 6 автономных станций. Каждая такая станция подключается через WI-FI к точке доступа на Zyxel Keenetic. В свою очередь ПК с МРТ тоже подключен через WI-FI к точке доступа. Связь между МРТ и модулями M-7017Z происходит по средствам виртуальных COM портов организованных через ПО VxCommW7 и VxServer от ICPDAS. Проблема: при обрыве питания модулей M2M-711D показания в МРТ «замирают» и после восстановления питания не «оживают». Помогает только полное закрытие МРТ и новый запуск, т.е. закрытие и открытие COM порта решают проблему, смотрели через Portmon. Как исправить данную проблему? Наши настройки: COM портов - RTM - Источники - Всё остальное по стандарту.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
При потере связи с COM-портом необходима повторная процедура инициализации COM-порта. Это может быть осуществлено с помощью диагностической переменной @RS_Reinit. Потеря связи по COM-порту может быть выявлена с помощью соответствующих диагностических переменных. Запуск процедуры реинициализации может осущетвляться по интерактивным командам или программно (таймерно) после установления факта отсутствия связи до ее восстановления.
Posted by Taller (Участник № / Member № 5829) on :
Спасибо за ответ! Создали кнопку для переинициализации COM порта, всё работает, но только когда устанавливается бит недостоверности по всем каналам COM порта. Затем решили сделать автоматическую переинициализацию COM порта, написали программу на ST, работает, но только 1 раз, при повторном установлении недостоверности всех каналов переинициализация не происходит, неизвестно по какой причине. Написали программу на FBD с доп. задержками после установления недостоверности и т.д., на симуляции всё работает а на деле только первый раз, в чём дело? Posted by Taller (Участник № / Member № 5829) on :
И ещё вопрос. Как сделать чтоб после потери данных с канала Modbus обнулялись индикаторы данных с каналов, а не зависали на последних значениях с канала?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Надо при идентификации отказа такого виртуального COM-порта выключать каналы обмена по этому COM-порту. Команду на реинициализацию COM-порта желательно подавать после восстановления канала связи или автоматически редкими (с периодом несколько минут) однократными командами.
2. Признаком потери связи в канале Modbus является "1" в его атрибуте ДОСТОВЕРНОСТЬ. Этот признак может использоваться для соответствующе индикации на экране или для программного изменения значения в канале. Однако сброс значения канала в 0 без соответствующей индикации потери связи вряд ли является корректным.
Posted by AlexanderN (Участник № / Member № 5746) on :
Здравствуйте уважаемая техподдержка!
цитируя Вас - Запуск процедуры реинициализации может осущетвляться по интерактивным командам или программно (таймерно)!!! после установления факта отсутствия связи до ее восстановления.
хочу спросить, как именно реинициализировать процедуру с помощью @RS_Reinit таймерно?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
При обнаружении потери связи необходимо включить программу, которая с выбранным Вами периодом будет посылать в канал, связанный с переменной @RS_Reinit, нужное значение (и подтвердит его посылкой "1" в атрибут 39 того же канала). Период может задаваться либо периодом обработки CALL.Program, либо какой-либо функцией временного контроля, встроенной в программу. После восстановления связи программу следует выключить.
Posted by AlexanderN (Участник № / Member № 5746) on :
а есть конкретный пример, дабы опираясь на него реализовать у себя. Переменная создана, добавлена в нужные узлы.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Готового примера нет.
Posted by AlexanderN (Участник № / Member № 5746) on :
А более детального пошагового пояснения?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Рекомендации даны в объеме, достаточном для реализации.