ViKo 1 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба "In RTU mode, message frames are separated by a silent interval of at least 3.5 character times." Вот эти символы - что имеется в виду? 4 бита? Потому, что в описании байта говорится: "When devices communicate on a MODBUS serial line using the RTU (Remote Terminal Unit) mode, each 8–bit byte in a message contains two 4–bit hexadecimal characters." То есть, паузы должны быть не менее 14 битов? Так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба 6 минут назад, ViKo сказал: "In RTU mode, message frames are separated by a silent interval of at least 3.5 character times." Вот эти символы - что имеется в виду? 4 бита? 3.5 символа. Так как UART работает с понятием "символ". Размер символа программируется при инициализации. Например 8N1: 8 бит данных + 1 стоп + 1 старт; итого символ = 10 бит. Умножьте это на 3.5. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Так, не стыкуется с понятием символа в том же разделе, только чуть выше. В RTU режиме нет ASCII символов. А есть два hex "символа" в байте. Здесь читаю Modbus_over_serial_line_V1_02.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба 20 минут назад, ViKo сказал: В RTU режиме нет ASCII символов. А есть два hex "символа" в байте. "Символ" в UART, это не "ASCII-символ". Это то, что я выше описал. Откройте хотя-бы википедию: https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter и прочитайте раздел "Data framing" и всё, где фигурирует "character". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба 19 минут назад, jcxz сказал: "Символ" в UART, это не "ASCII-символ". Это то, что я выше описал. Откройте хотя-бы википедию: https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter и прочитайте раздел "Data framing" и всё, где фигурирует "character". Вы, как обычно, не вчитываетесь в вопрос. У вас есть документальное подтверждение, сколько битов пауза равна в Modbus TCP? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Во что именно я должен "вчитываться"? Я вам написал, что означает понятие "символ" (character) для UART. И имхо именно эти символы имеются в виду в: 1 час назад, ViKo сказал: "In RTU mode, message frames are separated by a silent interval of at least 3.5 character times." PS: Не знаю уж - как ещё доходчивее разжевать, если до сих пор не поняли.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Не надо "доходчивее", если не видите логики в моём вопросе. Про УАРТ я вас не спрашиваю. Вы с Modbus RTU работали? Раскиньте умом, зачем вообще нужна пауза в 3,5 символа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Символ - 11 бит. Если скорости до 19200 включительно - используем для расчета 11 бит на симовол. Свыше 19200 используются фиксированные длительности 0.75мс и 1.75мс для 1.5t и 3.5t, соответственно. Вот здесь на 13 странице еще и картинки можно посмотреть. То, что они смешали character-ы, обозвав им обрамленный байт UART-а в его старты/стопы и упомянув это же слово для обозначения преимуществ над ASCII-режимом, это да, не очень корректно. Но в целом, в этом "стандарте" все равно все достаточно однообразно трактуется, ИМХО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Исходя из этого: The implementation of RTU reception driver may imply the management of a lot of interruptions due to the t 1.5 and t 3.5 timers. With high communication baud rates, this leads to a heavy CPU load. Consequently these two timers must be strictly respected when the baud rate is equal or lower than 19200 Bps. For baud rates greater than 19200 Bps, fixed values for the 2 timers should be used: it is recommended to use a value of 750µs for the inter-character time-out (t 1.5 ) and a value of 1.750ms for inter-frame delay (t 3.5 ). Прикидываю, что символ примерно равен 10 битов. Ага, тот же абзац изучил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Как и любой стандарт, его сначала надо пролистать быстренько, а потом еще раз, но немного вдумчивее. А потом последний раз - заключительный 3 минуты назад, ViKo сказал: Прикидываю, что символ примерно равен 10 битов. 11. Там чуть ниже посмотрите (да и выше тоже), они "добивают" кадр до 11 бит при любом раскладе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Не, мне сейчас надо быстренько. А вдумчивее будет потом, и, скорее всего, не я. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба 6 минут назад, ViKo сказал: А вдумчивее будет потом, и, скорее всего, не я. Представляю потом реакцию того, кому это достанется (просто шутка) P.S. По моему опыту скажу - кто как реализовывает - почти полная свобода для творчества. У всех свои 1.5t и 3.5t, чтобы с переходниками USB-UART работало, да и методики выборки кадров из общего потока тоже различаются. Для себя, я так и не понял, зачем нужен интервал 1.5t. Хотя на эту тему здесь на электрониксе тоже были и темы, и споры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба 10 минут назад, Arlleex сказал: Для себя, я так и не понял, зачем нужен интервал 1.5t. Задаётся с "гистерезисом". Меньше 1.5t - одно сообщение, больше 3.5t - разные сообщения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба 16 минут назад, ViKo сказал: Задаётся с "гистерезисом". Меньше 1.5t - одно сообщение, больше 3.5t - разные сообщения. Ага, пришло с интервалом 2t или 2.5t - к кому относить? Выкидывать или ждать дальше? А с чего бы ждать, а с чего бы выкидывать? Здесь не все так тривиально, как может показаться. На этот счет не один десяток разработчиков переср*лся, и у каждого своя правда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 13 сентября, 2021 Опубликовано 13 сентября, 2021 · Жалоба Полистал, ради интереса, десяток российских адаптаций оригинального документа - в четверти из них они за символ принимают 4-битную тетраду, получая 6 и 14 бит для 1.5t и 3.5t Вот и начинаются потом баги на ровном месте при стыковке девайсов. Эх... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться