PDA

Просмотр полной версии : Как надёжно отловить зависания modbus-устройств?



Yegor
29.12.2011, 05:49
Всем привет!

Посмотрим в доки по программироанию ПЛК110/160. Там сказано:

LastAddress – адрес последнего опрошенного Modbus (Slave) устройства. Модуль запрашивает устройство, и, соответственно, тут же меняется значение: показывается значение адреса последнего запроса.
LastError – код ошибки. В переменной отображается код ошибки, если информационный обмен прошел неудачно. Это необходимо для корректности работы опрашиваемого устройства. Коды ошибок данного модуля представлены в Приложении В.
Закроем пока глаза на бессмыслицу про необходимость отображения кодов ошибок для корректности работы и подумаем о другом: а как, собственно, при помощи этих двух переменных отловить сбои конкретных устройств? М?

Gans
29.12.2011, 06:26
Здравствуйте Yegor.
Взгляни вложение в третьем сообщении: http://www.owen.ru/forum/showthread.php?t=1958&highlight=%CC%C4%C2%C2
По моему должно помочь.
P. S. С наступающим :-)

Yegor
29.12.2011, 06:31
С наступающим и вас!

Такое решение будет надёжно работать только для одного устройства. Или я чего-то недопонимаю?

Gans
29.12.2011, 06:55
Такое решение надёжно работает для не ограниченного количества устройств :-)
Вложение импортируете в проект и используйте столько сколько надо :-)

Yegor
29.12.2011, 07:57
Это-то понятно, но я никак не могу убедить себя в надёжности такого решения. Где гарантия, что в течение определённого времени сбой отдельно взятого устройства будет обнаружен моей программой? То есть даже так... Достаточно ли велика вероятность такого события, чтобы на неё рассчитывать? Чем больше в сети устройств, тем эта вероятность меньше. В моём случае таких устройств шесть.

capzap
29.12.2011, 08:14
можно ведь моделировать процесс, поставте несовместимые параметры, например скорость обмена и таймаут сделайте такими чтоб Вам в канал сыпались ошибки и тестируйте Ваш код :)

PS если волнуетесь по поводу пропуска адреса устройства не последней ошибки, могу предложить сделать шесть мастеров отдельно на каждое устройство, тогда адрес и код последней ошибки будет жестко привязан к одному из объектов

Филоненко Владислав
29.12.2011, 09:18
Вероятность 100% если задача контроля вызывается чаще чем минимальный период опроса для устройства (мастера)

Yegor
29.12.2011, 09:49
Спасибо, господа.
сделать шесть мастеров отдельно на каждое устройствоИ при этом все можно на один и тот же порт?
Вероятность 100% если задача контроля вызывается чаще чем минимальный период опроса для устройства (мастера)Период опроса задаётся отдельно для каждого modbus-устройства. В каком порядке они опрашиваются?