Показать сообщение отдельно
Старый 16.01.2008, 11:58   #99
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Modbus: Как ответить с кодом ошибки?

Запросов с кодом ошибки несуществует. Это исключено на уровне протокола.

Невозможно. Контроллер сам разбирает запрос. В случае некорректного запроса возвращается исключение.

Такое не может понадобиться в описываемом вами случае. Как вы представляете такую ситуацию: вышестоящий мастер посылает запрос SMH (именно ему, а не кому-то, это подразумевается топологией сети), а SMH отвечает исключением... И что это исключение означает? То ли слейв "отвалился", то ли запрос некорректен... Как быть?


1) прибавится единица в статистику NoRespons (блок SMH2010(Link).

2) как угодно, но не исключением. Исключением он имеет право ответить только в случае ошибки обмена между собой и мастером. Подобная трансляция на уровне протокола принципиально невозможна в любой сети. Вам придётся сделать контроль слейвов в контроллере (есть разные способы) и выделить переменную для отсылки статистики работы слейвов верхнему уровню. Это единственно правильный путь.

Если вы хотите иметь прямой доступ от "вышестоящего мастера" к слейвам, то MODBUS не даёт вам иного выбора, как прямое подключение.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием