Я новичок в Modbus и разрабатываю приложение с использованием Modbus RTU. Хотелось бы узнать, как узнать время разделения кадра сообщения RTU. В спецификации Modbus RTU упоминается время в 3,5 символа, но больше нет данных о том, как я могу определить эти интервалы. а какие шаги для расчета времени разделения?
Расчет времени символа Modbus RTU 3.5
Ответы (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;
}
16500000/baud
и 38500000/baud
соответственно.
- person a cat; 16.01.2017
Modbus RTU использует 11-битный символ, независимо от того, используется ли четность или нет. Формула должна быть такой: 11 * 1000000 / (скорость_бода) для одного символа, это применимо для скорости передачи ‹= 19200 бит / с. Для скорости передачи> 19200 бит / с используется фиксированное время, которое составляет 1750 микросекунд для времени 3,5 символов и 750 микросекунд для времени 1,5 символов.
1/baud
секунд. Умножьте на десять, чтобы получить время для символа. - person Hans Passant   schedule 23.12.2013