Ответ: Modbus: Как ответить с кодом ошибки?
Запросов с кодом ошибки несуществует. Это исключено на уровне протокола.
Невозможно. Контроллер сам разбирает запрос. В случае некорректного запроса возвращается исключение.
Такое не может понадобиться в описываемом вами случае. Как вы представляете такую ситуацию: вышестоящий мастер посылает запрос SMH (именно ему, а не кому-то, это подразумевается топологией сети), а SMH отвечает исключением... И что это исключение означает? То ли слейв "отвалился", то ли запрос некорректен... Как быть?
1) прибавится единица в статистику NoRespons (блок SMH2010(Link).
2) как угодно, но не исключением. Исключением он имеет право ответить только в случае ошибки обмена между собой и мастером. Подобная трансляция на уровне протокола принципиально невозможна в любой сети. Вам придётся сделать контроль слейвов в контроллере (есть разные способы) и выделить переменную для отсылки статистики работы слейвов верхнему уровню. Это единственно правильный путь.
Если вы хотите иметь прямой доступ от "вышестоящего мастера" к слейвам, то MODBUS не даёт вам иного выбора, как прямое подключение.
__________________
Программа делает то что написал программист, а не то что он хотел.
Добро всегда побеждает зло. Кто победил - тот и добрый.
|