Использую Modbus Universal MasterOPC Server demo, по протоколу Modbus TCP собираю данные с 6-ти ПЛК 100 по сети предприятия, какое то время все ОК, но через промежуток времени качество связи BAD, при этом ПЛК пингуются.
Вид для печати
Использую Modbus Universal MasterOPC Server demo, по протоколу Modbus TCP собираю данные с 6-ти ПЛК 100 по сети предприятия, какое то время все ОК, но через промежуток времени качество связи BAD, при этом ПЛК пингуются.
Нужно посмотреть по логу что в этот момент происходит с сервером.
Если он посылает запрос, а контроллер не отвечает - значит проблема с контроллером.
Включите запись лога у сервера и посмотрите.
Сервер посылает запрос, а контроллер не отвечает. Перезапускаем сервер и все восстанавливается на некоторое время.
Очевидно какие то проблемы с сетью или контроллером.
Если помогает перезапуск сервера, то попробуйте у устройства включить настройку "Реинициализация узла при ошибке".
Какая у вас версия ОРС сервера?
В настройках сервера включите запись журнала. Задайте максимальный размер журнала - 10000 кб, и включите запись всех событий.
Запустите сервер в работу и когда подобная ситуация возникнет пришлите нам сфомированный лог (с точным временем зависания), а также конфигурацию ОРС сервера.
c:\Documents and Settings\All Users\Application Data\InSAT\MasterOPC Universal Modbus Server\SERVERCFG\
Кстати у вас зависает связь со всеми контроллерами? Вы используете masterSCADA? В этом случае можно сделать переподключение когда будут возникнуть зависания - сервер закроется и запустится снова.
Версия сервера последняя с сайта, использую MasterSCADA, к сожалению я сейчас уже не на объекте и попасть туда пока не возможно, контроллеры отваливаются из другой подсети. Конфигурация это имеется ввиду файл *.mbc? И расскажите пожалуйста поподробнее про перезапуск сервера!
В MasterSCADA у OPC сервера, есть закладка "Опрос", в ней есть поле "Переподключаться по условию". В это поле можно перетащить дискретную переменную из дерева объектов, и когда она перейдет в состояние "Вкл", произойдет отписка от сервера (он закроется), а затем подписка снова (он запустится).
Например вы можете использовать модуль "Событие". При помощи функции OPCQuality( ) анализируйте признак качества какой нибудь переменной ОРС сервера. Формула будет примерно такая:
OPCQuality( Ваша_переменная )=0
В настоящий момент между отпиской от сервера и повторной подпиской проходит слишком мало времени, и сервер не успевает закрыться. Мы сделаем настройку которая бы позволила увеличить этот интервал.
Пока что вы можете решить проблему закрывая процесс Modbus OPC сервера при помощи скрипта, а затем выполняя переподключение. Пример проекта в приложении.
Обратите внимание что у команды "Перезагрузить" на закладке "Опрос" продолжительность импульса - 3 такта (чтобы сервер успел закрыться).