PDA

Просмотр полной версии : Как обеспечить контроль исправности сети



Mangust
04.08.2009, 10:24
Добрый день!
Предположим имеется сеть, например Modbus TCP, на два контроллера.
Предположим, Мастер включает, через обменные регистры, дискретный выход на Слейве.
Теперь, допустим, я обрываю сетевой кабель.
Выход Слейва остается включенным.
К примеру, этот выход включает премещение рабочего органа моей машины. Т. е. получается, железяка прет, и кошмар, что получится может.
Пожалуйста, объясните как для чайника, как с этим жить и бороться.:)

ASo
04.08.2009, 11:34
Как обычно - проверкой состояния устройства.
В Вашем случае например так. Мастер регулярно, скажем 1 раз в сек меняет состояние регистра слэйва 1-0-1-0. Программа слэйва проверяет это изменение по таймеру и обрабатывает аварию "ошибка связи".

Mangust
04.08.2009, 12:50
Как обычно - проверкой состояния устройства.
В Вашем случае например так. Мастер регулярно, скажем 1 раз в сек меняет состояние регистра слэйва 1-0-1-0. Программа слэйва проверяет это изменение по таймеру и обрабатывает аварию "ошибка связи".

Спасибо, АСо. Такое, действительно в моих силах сделать. Еще раз спасибо.
Возможно, есть еще какие-либо способы, возможно более изящные. Может как-то через Last adress-Last error???

Филоненко Владислав
04.08.2009, 15:09
Самым надежным методом будет обмен с подтверждением. Алгоритм:

Мастер посылает случ. число. (начало серии)

Славе - меняет число по известному алгоритму и кладет в др. регистр.
Мастер проверяет число, что оно изменилось по изв. алгоритму - то славе жив, сам меняет его по известному алгоритму и посылает обратно.
Славе проверяет, и если число изменилось правильно - мастер жив.

Цикл повторяется до бесконечности.

В качестве алгоритма можно использовать прибавление простых чисел (разных для мастера и slave).
В этом случае и мастер и slave проверяют надежность связи и адекватность друг-друга.