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

 
 
> Использование протокола MODBUS
Denis K
сообщение Nov 8 2008, 12:21
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 8-12-07
Из: Санкт-Петербург
Пользователь №: 33 101



Всем доброго времени суток!

Если кто работал с Modbus RTU, и использовал его в своих разработках, подскажите..

В спецификации указано, что межкадровая пауза равна 3.5 символа, а пауза между байтами в кадре не более 1.5 символа. Как я понимаю символ - это число от 0 до 15 (4 бита).

Вопрос - а сколько это будет в битах?
Если считать только данные - т.е. 8 бит на два символа, то получается 14 и 6 бит соответственно.
Или считать за два символа всю посылку со стартовым и стоповыми битами тоже, т.е. - 10/11 бит?
Тогда уже получится дробное число бит 07.gif

Заранее благодарен.

Сообщение отредактировал Denis K - Nov 8 2008, 12:25
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Nov 8 2008, 14:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Denis K @ Nov 8 2008, 17:21) *
Как я понимаю символ - это число от 0 до 15 (4 бита).
Символ это один информационный символ в асинхронном канале - 7 или 8 бит данных, обрамленные старт-битом, битом четности и стоп-битами.
Цитата(Denis K @ Nov 8 2008, 17:21) *
Вопрос - а сколько это будет в битах?
В зависимости от формата от 9 до 12 бит. Обязательны старт-бит, 7/8 бит данных и стоп-бит. Бит четности может быть, а может и не быть. Точно также как один или два стоп-бита.
Цитата(Denis K @ Nov 8 2008, 17:21) *
Тогда уже получится дробное число бит 07.gif
А что вас так волнуют эти биты? Вас ведь время паузы интересует, а не просто биты. Ну и считайте его в размерности времени - в миллисекундах там всяких laughing.gif
t(3.5)=3500*(START+DATA+PARITY+STOP)/BAUD, где START - старт-бит (одна штука), DATA - количество бит данных (7 или 8), PARITY - количество бит четности (0 или 1), STOP - количество стоп-битов (1 или 2), BAUD - скорость передачи. Результат (время паузы 3,5 символа) будет в миллисекундах.
Еще не следует забывать, что в спецификации ModBus over Serial line оговорена длительность символа - 11 бит (старт, 8 данных, четность, 1 стоп-бит) и минимальное время паузы тишины (3,5 символа) ограничено 1,75 мс и минимальной паузы между символами (1,5 символа) 0,75мс.
Go to the top of the page
 
+Quote Post
Denis K
сообщение Nov 9 2008, 09:57
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 28
Регистрация: 8-12-07
Из: Санкт-Петербург
Пользователь №: 33 101



Цитата
А что вас так волнуют эти биты? Вас ведь время паузы интересует, а не просто биты. Ну и считайте его в размерности времени - в миллисекундах там всяких laughing.gif


Конечно паузу будем считать в микросекундах, просто в битах проще понять принцип, без относительно скорости передачи.

Цитата
Символ это один информационный символ в асинхронном канале - 7 или 8 бит данных, обрамленные старт-битом, битом четности и стоп-битами.


Как я понял из спецификации ModBus over Serial line (стр.12, п2.5.1),
символ - это 4-х битное шестнадцетеричное число от 0 до 15 (0..F).
А в 8 битах данных, т.е. одном байте содержится два символа.

Цитата
t(3.5)=3500*(START+DATA+PARITY+STOP)/BAUD, где START - старт-бит (одна штука), DATA - количество бит данных (7 или 8), PARITY - количество бит четности (0 или 1), STOP - количество стоп-битов (1 или 2), BAUD - скорость передачи. Результат (время паузы 3,5 символа) будет в миллисекундах.


Т.е. получается что размер одного символа (в битах) - 0.5*(START+DATA+PARITY+STOP)
а не - 0.5*(DATA).
Как все-таки правильно?

Нашел на сайте НИЛ АП http://rlda.ru/ описание Modbus.
Они утверждают, что 3.5 символа это 14 бит, ну и 1.5 - 6 бит соответственно.

help.gif

Цитата
Еще не следует забывать, что в спецификации ModBus over Serial line оговорена длительность символа - 11 бит (старт, 8 данных, четность, 1 стоп-бит) и минимальное время паузы тишины (3,5 символа) ограничено 1,75 мс и минимальной паузы между символами (1,5 символа) 0,75мс.


Хорошо что написали об этом.
Как я понял, данные значения желательны и рекомендованны, но не обязательны к применению. И если контроллер на скоростях выше 19200 может отсчитать четко паузу в 3.5 символа, то пусть так и делает.
Или опять таки, для высоких скоростей надо использовать указанные выше значения для пауз?
Если так, то преимущество по скорости 57600 в сравнении к 19200 сходит на нет.
Так как пауза в 1.75 мс - это больше 9 переданных байт на 57600 и получается,
что если средняя длина сообщения или ответа будет 8 байт, то с паузой уже 17 байт.
Т.е. за секунду можно провести по максимуму около 150 актов обмена,
а на скорости в 19200, с паузами в 3.5 символа - около 90.
Как то не шустро получается, а хотелось бы использовать по максимуму.

Сообщение отредактировал Denis K - Nov 9 2008, 09:58
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 08:32
Рейтинг@Mail.ru


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