MrYuran 18 24 марта, 2008 Опубликовано 24 марта, 2008 (изменено) · Жалоба Начал вникать в модбас. Читаю описание: RTU фрейм. В RTU режиме сообщение начинается с интервала тишины равного времени передачи 3.5 символов при данной скорости передачи в сети. Первым полем затем передается адрес устройства. Вслед за последним передаваемым символом также следует интервал тишины продолжительностью не менее 3.5 символов. Новое сообщение может начинаться после этого интервала. Фрейм сообщения передается непрерывно. Если интервал тишины продолжительностью 1.5 возник во время передачи фрейма, принимающее устройство заканчивает прием сообщения и следующий байт будет воспринят как начало следующего сообщения. Таким образом, если новое сообщение начнется раньше 3.5 интервала, принимающее устройство воспримет его как продолжение предыдущего сообщения. В этом случае устанавливается ошибка, так как будет несовпадение контрольных сумм. Какое-то несоответствие. Например, в середине сообщения возникла пауза в 2 интервала. С одной стороны, это больше 1,5 и приёмник должен по идее начать приём нового сообщения. Но с другой стороны, новое сообщение должно начинаться с паузы 3,5 инт., иначе это продолжение старого. Я подозреваю, что этот вопрос 1000 раз разжёван, но чё-то поиском найти не могу (наверно не умею) Кто знает, разъясните. PS: Куда писать вопросы по модбасу? В явном виде я такого раздела не нашёл PPS: Сдаётся мне, это просто опечатка в исходнике, тупо переведённая на все языки. И читать надо так: Таким образом, если новое сообщение начнется раньше (3.5) 1,5 интервала, принимающее устройство воспримет его как продолжение предыдущего сообщения. В этом случае устанавливается ошибка, так как будет несовпадение контрольных сумм. Изменено 24 марта, 2008 пользователем MrYuran Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 24 марта, 2008 Опубликовано 24 марта, 2008 · Жалоба Скорее всего действительно ошибка переводчика. Если во время приема пакета возникла пауза более 1,5 символов, то приемник должен считать пакет "битым", прекратить прием пакета и ожидать начала следующего пакета, который начинается с паузы тишины >=3,5 символа. Изучать стандарты лучше по их оригиналам Modbus over serial line Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tag 0 24 марта, 2008 Опубликовано 24 марта, 2008 · Жалоба Какое-то несоответствие. Например, в середине сообщения возникла пауза в 2 интервала. С одной стороны, это больше 1,5 и приёмник должен по идее начать приём нового сообщения. Но с другой стороны, новое сообщение должно начинаться с паузы 3,5 инт., иначе это продолжение старого. ...нет несоответствия. Прием нового сообщения начинается только после паузы 3,5 инт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 24 марта, 2008 Опубликовано 24 марта, 2008 · Жалоба The entire message frame must be transmitted as a continuous stream. If a silent interval of more than 1.5 character times occurs before completion of the frame, the receiving device flushes the incomplete message and assumes that the next byte will be the address field of a new message. Similarly, if a new message begins earlier than 3.5 character times following a previous message, the receiving device will consider it a continuation of the previous message. This will set an error, as the value in the final CRC field will not be valid for the combined messages.. Выдержка из оригинального описания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 18 24 марта, 2008 Опубликовано 24 марта, 2008 · Жалоба Такое описание у меня есть, действительно, довольно оригинальная интерпретация. А вот на modbus.org действительно всё предельно чётко: Больше 1.5t - таймаут фрейма. Отбрасываем. Меньше 3.5t между фреймами - ошибка начала фрейма. Отбрасываем. Спасибо rezidentу за первоисточник. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 24 марта, 2008 Опубликовано 24 марта, 2008 · Жалоба Спасибо rezidentу за первоисточник.Это не мне, а Гуглю спасибо скажите :) Он первый же результат дает в виде ссылки на спецификацию http://www.google.ru/search?q=Modbus+over+serial+line Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться