Расчет времени символа Modbus RTU 3.5

Я новичок в Modbus и разрабатываю приложение с использованием Modbus RTU. Хотелось бы узнать, как узнать время разделения кадра сообщения RTU. В спецификации Modbus RTU упоминается время в 3,5 символа, но больше нет данных о том, как я могу определить эти интервалы. а какие шаги для расчета времени разделения?


person user3128453    schedule 23.12.2013    source источник
comment
Вы должны знать скорость передачи. Это дает вам немного времени, 1/baud секунд. Умножьте на десять, чтобы получить время для символа.   -  person Hans Passant    schedule 23.12.2013


Ответы (2)


Взгляните на страницу 13 в Протокол последовательной линии Modbus и руководство по внедрению V1.02

Внизу вы найдете примечание, объясняющее значения времени ожидания между символами (t1,5) и задержки между кадрами (t3,5).

Для скоростей передачи более 19200 фиксированных значений. Для более медленных скоростей передачи их необходимо рассчитать (извлечение из библиотеки SimpleModbusMaster для Arduino):

// Modbus states that a baud rate higher than 19200 must use a fixed 750 us 
// for inter character time out and 1.75 ms for a frame delay.
// For baud rates below 19200 the timeing is more critical and has to be calculated.
// E.g. 9600 baud in a 10 bit packet is 960 characters per second
// In milliseconds this will be 960characters per 1000ms. So for 1 character
// 1000ms/960characters is 1.04167ms per character and finaly modbus states an
// intercharacter must be 1.5T or 1.5 times longer than a normal character and thus
// 1.5T = 1.04167ms * 1.5 = 1.5625ms. A frame delay is 3.5T.    

if (baud > 19200)
{
    T1_5 = 750; 
    T3_5 = 1750; 
}
else 
{
    T1_5 = 15000000/baud; 
    T3_5 = 35000000/baud; 
}
person Mr. Girgitt    schedule 19.01.2014
comment
Следует отметить, что Modbus RTU использует 11 бит на символ (8 * данных, четность, начало, остановка), а не 10. Приведенные выше значения верны для нестандартных реализаций, которые используют 10 бит, обычно без бит четности и это не компенсируется добавлением еще одного стопового бита. Для 11 бит они должны быть 16500000/baud и 38500000/baud соответственно. - person a cat; 16.01.2017

Modbus RTU использует 11-битный символ, независимо от того, используется ли четность или нет. Формула должна быть такой: 11 * 1000000 / (скорость_бода) для одного символа, это применимо для скорости передачи ‹= 19200 бит / с. Для скорости передачи> 19200 бит / с используется фиксированное время, которое составляет 1750 микросекунд для времени 3,5 символов и 750 микросекунд для времени 1,5 символов.

person Herry Susilo    schedule 04.07.2017