Перейти к содержанию
    

Детали разработки модуля Modbus

В 24.05.2023 в 15:16, tonyk_av сказал:

Внизу на картинке указан адрес сайта.

а вы сами заходили на этот адрес? я заходил. Не нашел. более того я нашел "MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b3" от 26 апреля 2012г. Что у вас за картинка? как документ называется? Где он на modbus.org?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, tonyk_av сказал:

Вообще-то, максимальная длина фрейма явно прописана.

Это длина данных уже на более высоком уровне, не канальном, а значит никак не поможет во фрейминге. Не используется она для фрейминга и не должна. К тому же - даже на более высоких уровнях протокола длина опциональна.

6 минут назад, tonyk_av сказал:

image.thumb.png.247b8131f52ea3bc8416c9c9f737da35.png

Ну вот - сами же и противоречите своему предыдущему высказыванию. :biggrin: Так где тут длина?

6 минут назад, tonyk_av сказал:

Типично, когда слэйв начинает приём какого-то кадра в его середине. И что страшного? Ошибочность частично принятого фрейма определяется очень просто

каким образом? Объясните плиз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 минуты назад, jcxz сказал:

И как определить где у пакета "первые байты", а где - последние? Не зная его границ.

Те, которые первые приняли, после отправки запроса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 24.05.2023 в 15:16, tonyk_av сказал:

.

В 24.05.2023 в 14:23, ericN сказал:

на текущиый действующий стандарт протокола Modbus, в котором есть ограничение на битрейт?

Меня явно с кем-то путают. Такого я не утверждал, да и не мог, потому что в стандарте нет ограничений на скорость.

Да что ж такое?... ))) а кто говорит, что вы утверждаете на ограничение? вот смотрите.... вот что я скал, то, что вы процетировали

В 24.05.2023 в 14:23, ericN сказал:

Префразирую: Кто может поделиться трушной рабочей ссылкой на текущиый действующий стандарт протокола Modbus, в котором есть ограничение на битрейт?

 

я здесь ни чего не утверждаю, я спрашиваю. в конце знак '?' - означает что это не утверждение, а вопрос. Это обращение не к вам лично, это обращение ко всему сообществу. Ну хорошо.... пусть не "ограничение на битрейт", а рекомендация... Где описание действующего стандарта модбас, в котором упоминается какието ограничения/реокмнедации/указания/гайды/апноте.... на битрейт более 19200?

Изменено пользователем ericN

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, quark сказал:

Анализируете первые байты и определяете по ним длину пакета.

Ещё раз: Как определить где у пакета "первые байты", а где - "последние"?

11 минут назад, quark сказал:

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

А если сошлась? Случайно. При 16-битной CRC это весьма вероятное событие.

2 минуты назад, quark сказал:

Те, которые первые приняли, после отправки запроса.

Какого запроса? При чём тут какой-то запрос? Вы - ведомое устройство, подключились в линию в произвольный момент, там идёт какой-то обмен уже. Как найти "первые байты" пакета?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, ericN said:

Где описание действующего стандарта модбас, в котором упоминается какието ограничения/реокмнедации/указания/гайды/апноте....

Ссылка выше, с.34.

5 minutes ago, jcxz said:

Как найти "первые байты" пакета?

В чём сложность-то? Протокол достаточно структурирован, чтобы выделить фрейм даже в сплошном потоке без пауз. У меня была реализация драйвера, которая искала во входном потоке фреймы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 24.05.2023 в 15:30, tonyk_av сказал:

Вот он.

нашел. спасибо. 

 

Цитата

it is recommended to use a value of 750µs for the inter-character time-out (t1.5) and a value of 1.750ms for inter-frame delay (t3.5).

рекомендация. Зафиксирую!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, jcxz said:

А если сошлась? Случайно. При 16-битной CRC это весьма вероятное событие.

Во фрейме есть несколько полей, содержимое которых должно коррелировать друг с другом. В Рекомендациях по реализации указывается на необходимость учёта этого факта помимо проверки CRC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, jcxz сказал:

Ещё раз: Как определить где у пакета "первые байты", а где - "последние"?

Вы что, издеваетесь? Вы хотя бы читайте, что вам пишут. И не только вам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, quark said:

Вы что, издеваетесь? Вы хотя бы читайте, что вам пишут. И не только вам

Ни капельки. Определить границы фрейма- это значит определить где первый байт, а где- последний. Никакой сложности в этом нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, tonyk_av сказал:

Во фрейме есть несколько полей, содержимое которых должно коррелировать друг с другом. В Рекомендациях по реализации указывается на необходимость учёта этого факта помимо проверки CRC.

Пока пакет не выделен, то нет никакого пакета. А когда он уже выделен - то длина уже не нужна, уже её знаем.

Только что, tonyk_av сказал:

Ни капельки. Определить границы фрейма- это значит определить где первый байт, а где- последний. Никакой сложности в этом нет.

Сложности конечно нет. Я говорю, что для этого не нужна некая "длина данных". Фрейминг в Modbus-RTU делается только на основе межкадровых пауз. Когда фрейминг выполнен - длина уже известна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, jcxz сказал:

Пока пакет не выделен, то нет никакого пакета.

Не выделен из чего?

5 минут назад, tonyk_av сказал:

Ни капельки.

tonyk_av , это не к вам был вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, quark сказал:

Не выделен из чего?

Из потока символов на линии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 минут назад, ericN сказал:

Что у вас за картинка? как документ называется? Где он на modbus.org?

https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...