реклама на сайте
подробности

 
 
> Modbus RTU, Объясните про задержку из документации.
Сергей Борщ
сообщение Feb 18 2015, 10:49
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Читал по-английски - не понял. Прочитал по русски - та же фигня слово-в-слово. Поэтому цитирую русский вариант:

Цитата
Фрейм сообщения передается непрерывно. Если интервал тишины продолжительностью 1.5 возник во время передачи фрейма,
принимающее устройство заканчивает прием сообщения и следующий байт будет воспринят как начало следующего сообщения.

Таким образом, если новое сообщение начнется раньше 3.5 интервала, принимающее устройство воспримет его как продолжение
предыдущего сообщения. В этом случае устанавливается ошибка, так как будет несовпадение контрольных сумм. Типичный фрейм
сообщения показан ниже.


Только мне кажется, что второе предложение противоречит первому? Как принимающее может воспринять сообщение через 2 интервала как продолжение, если оно уже через полтора должно было воспринять его как начало следующего?

На всякий случай оригинал:
Код
The entire message frame must be transmitted as a continuous stream. If a silent
interval of more than 1.5 character times occurs before completion of the frame,
the receiving device flushes the incomplete message and assumes that the next
byte will be the address field of a new message.

Similarly, if a new message begins earlier than 3.5 character times following a
previous message, the receiving device will consider it a continuation of the
previous message


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Feb 19 2015, 08:29
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(SSerge @ Feb 18 2015, 20:47) *
На практике вполне можно не заморачиваться с отслеживанием паузы t1.5, а определять только только конец фрейма по t3.5.
Благодаря CRC вероятность выловить в потоке помех правильный фрейм очень низкая и отслеживание t1.5 ничего к надёжности не добавляет.
Но особо пристрастная проверка на соответствие стандарту такое, конечно же, выявит.
Спасибо за развернутый ответ. Теперь стало ясно. При особо пристрастной проверке такое выявить можно если CRC первого пакета будет равно 0xFFFF. Случай редкий, обрабатывать не буду.


Цитата(MrYuran @ Feb 19 2015, 10:26) *
По приему символа перевзводится таймер 3,5т, а по истечению интервала вызывается коллбэк завершения фрейма.
Сделал таймаут на приход символа в 3.5т - то же яйцо, только в профиль.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 20 2015, 05:44
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Сергей Борщ @ Feb 19 2015, 13:29) *
При особо пристрастной проверке такое выявить можно если CRC первого пакета будет равно 0xFFFF.

При чём тут CRC? Отправят корректный по содержимому фрейм с паузой в середине больше t1.5 и менее t3.5. Ваш прибор примет этот фрейм, и это будет ошибкой.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 20 2015, 13:38
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(AHTOXA @ Feb 20 2015, 07:44) *
При чём тут CRC? Отправят корректный по содержимому фрейм с паузой в середине больше t1.5 и менее t3.5. Ваш прибор примет этот фрейм, и это будет ошибкой.
Почему он должен быть принят, если я считаю концом пакета паузу 3.5т? Эти два пакета будут приняты как один и CRC этого большого пакета сойдется только в том случае, если CRC первого была 0xFFFF. По-моему так.Недопонял ответ. Да, действительно, пакет с такой паузой будет принят. Ну так если он был корректный по содержимому - думаю, ничего плохого в его приеме не будет.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 21 2015, 09:04
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Сергей Борщ @ Feb 20 2015, 18:38) *
Да, действительно, пакет с такой паузой будет принят. Ну так если он был корректный по содержимому - думаю, ничего плохого в его приеме не будет.

Ну, я говорил в контексте "особо пристрастной проверки" sm.gif
Когда я реализовывал Modbus RTU, то сделал для такого случая настроечный параметр - контролировать или нет t1.5. Это позволяло моему устройству уверенно проходить любую проверку, и при этом нормально работать с мастерами под Windows.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Сергей Борщ   Modbus RTU   Feb 18 2015, 10:49
- - Владивольт   Действительно, можно мозг сломать. Приведённая ци...   Feb 18 2015, 12:03
- - A. Fig Lee   Ну в первом случае речь идет о "внутри фрейма...   Feb 18 2015, 14:19
|- - Сергей Борщ   Цитата(A. Fig Lee @ Feb 18 2015, 16:19) Н...   Feb 18 2015, 17:46
|- - A. Fig Lee   Цитата(Сергей Борщ @ Feb 18 2015, 12:46) ...   Feb 18 2015, 17:52
|- - SSerge   Цитата(Сергей Борщ @ Feb 19 2015, 00:46) ...   Feb 18 2015, 18:47
|- - MrYuran   Цитата(Сергей Борщ @ Feb 18 2015, 21:46) ...   Feb 19 2015, 08:26
- - A. Fig Lee   Ну немножко будет не соответствовать стандарту. И ...   Feb 20 2015, 14:08
|- - _3m   Цитата(A. Fig Lee @ Feb 20 2015, 17:08) Н...   Feb 20 2015, 14:55
- - smalcom   ЦитатаМастером в 90% случаев Ано-то можно и ...   Feb 21 2015, 17:30
- - lead_seller   После конца фрейма - 1.5 байта, перед началом след...   May 6 2015, 10:26


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 05:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016