Я новичок в Modbus и разрабатываю приложение с использованием Modbus RTU. Я хотел бы узнать, как узнать время разделения кадра сообщения RTU. В спецификации Modbus RTU он упоминает 3.5 часа времени, но больше нет данных о том, как я могу решить эти интервалы. и ват - это шаги для расчета времени разделения?Расчет Modbus RTU 3,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;
}
Следует отметить, что Modbus RTU использует 11 бит на символ (8 * данные, четность, начало, останов), а не 10. Вышеуказанные значения верны для нестандартных реализаций, которые используют 10 бит, как правило, оставляя бит четности и не компенсирует это, добавляя еще один бит остановки. Для 11 бит они должны быть «16500000/бод» и «38500000/бод» соответственно. –
Modbus RTU использовать 11-битный символ, независимо от использования четности или нет. Формула должна быть: 11 * 1000000/(baud_rate) за одно время char, это применяется для скорости передачи в бодах < = 19200 бит/с. Для скорости передачи в бодах> 19200 бит/с используется фиксированное время, которое составляет 1750 микросекунд для 3,5-часового времени и 750 микросекунд в течение 1,5 ч. Времени
Вы должны знать скорость передачи. Это дает вам время немного, '1/baud' секунд. Умножьте на десять, чтобы получить время для символа. –