Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2018-11-29 09:17:02 ЛС | профиль | цитата
kaban4ik писал(а):
а я не знал этого
А кто не давал узнать-то.
Просто читаем стандарт (я то его уже давненько читал, и говорю по памяти)


kaban4ik писал(а):
Тогда почему моя программа читает
Читает, это не значит, что она удовлетворяет спецификациям Modbus-rtu.
И откуда вы знаете, что за пять лет не было ни одного сбоя.

Скорее всего, вы работаете в режиме мастера. И не на очень большой скорости.
Выплюнули в COM пакет целиком. Гарантированно один пакет.
Вероятность того, что винда не прервет передачу на этой паре сотен байт -- невелика, весь пакет влезет в FIFO порта.
Но - ненулевая. И еще зависит от того, что еще в это время крутится на десктопе.
Далее, относительно долго (100 мсек - это очень долго, в сравнении со скоростями порта) ждем приема.
Все, что принято - это как бы должен быть один пакет ответа слэйва. Один, и только один.
Если при приеме будут недопустимые (дольше 1.5 символов) дыры, то спецификация Modbus-rtu требует забраковать весь пакет.
Вы (на десктопе) этого не сделаете.

Работать как бы и будет. Но это не Modbus-rtu. Сколько бы кто-то не гнул пальцы.
А уж про слэйв-режим на десктопе - и говорить особо не приходится.


А есть еще вопросы помехозащищенности линии. Они не определяются стандартом. Но из-за этого они никуда не пропадают.
Стандарт на Modbus фактически требует физическую реализацию как RS-485.
Это полудуплекс. Значит надо переключаться с приема на передачу, и наоборот.
Когда линия висит типа в 3-м состоянии (все устройства на приеме) - помехозащищенность весьма хилая.
Особенно опасны помехи сразу перед передачей пакета, и сразу после. Один импульс помехи - и весь пакет ушел в брак.
В смысле - должен уйти. Потому-что стандарт нормирует алгоритмы приема/передачи.
Чтобы этого не происходило, необходимо держать "жесткую единицу" в течении хотя бы одного символа (а лучше - 3-х) до, и после пакета.
Этого стандарт не требует, но это жизненно необходимо.
Если, конечно, вас интересует результат. А не возможность покрутить пальцы веером.


Вообще-то, главное, что я хотел сказать - это то, что если ты хочешь сделать дело, то вопросом надо владеть...
Как бы "а я не знал этого" -- совсем не катит.
Стандарт на Modbus не является какой-то секретной информацией.
карма: 9

0
Редактировалось 6 раз(а), последний 2018-11-29 16:37:13