2013-12-23 3 views
3

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

+1

Вы должны знать скорость передачи. Это дает вам время немного, '1/baud' секунд. Умножьте на десять, чтобы получить время для символа. –

ответ

5

Посмотрите на странице 13 Modbus Serial Line Protocol and Implementation Guide V1.02

На день вы найдете замечание, объясняющее межсимвольное тайм-аут (T1.5) и задержки межкадровых значения (версии Т3.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; 
} 
+1

Следует отметить, что Modbus RTU использует 11 бит на символ (8 * данные, четность, начало, останов), а не 10. Вышеуказанные значения верны для нестандартных реализаций, которые используют 10 бит, как правило, оставляя бит четности и не компенсирует это, добавляя еще один бит остановки. Для 11 бит они должны быть «16500000/бод» и «38500000/бод» соответственно. –

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^