-
- Модбасу интересно, чтоб контрольная сумма сошлась. Остальное не барское дело, что внизу и вверху происходит. - ucMike(Сегодня, 17:34)
- вот вариант с которым я работаю LordN(1 знак., Сегодня, 17:15, картинка)
- Modbus бывает разный. Для случая Modbus-RTU всё именно так - 11
бит, но не всё строго соблюдают стандарт. Бывает полезно сделать
режим с двумя стопами на передачу и одним стопом на прием. - AlexG(Сегодня, 15:24)
- Это в нормальных МК и ПК само собой разумеется. Когда ты
настраиваешь UART на 2 стоп бита - это настройка ПЕРЕДАТЧИКА.
Приемник продолжает отслеживать 1 стоп бит. Так делают все ПК и
преобразователи USB-UART, с которыми я имел дело. Так делают МК
STM32. А вот МК GigaDevice (F103 и F303) используют настройку
стоп-бита и для приема тоже!!! il-2(270 знак., Сегодня, 15:41)
- Вообще говоря, типично приемник UART использует те же самые параметры настройки, что и передатчик. Но приемник имеет возможность принимать только биты данных, игнорируя бит четности. При этом (в
случае нарушение четности или отсутствии второго стоп-бита) в
модуле UART обычно формируются признаки ошибки: ошибка четности
(ParityError) и ошибка приема символа (FrameError), но их
использовать в своей программе не обязательно. - reZident(Сегодня, 17:44)
- А вот для стоп-битов как раз это нетипично. Настройка стоп-битов -
только для передатчика. Для правильного приема достаточно 1 стоп
бита. Так реализовано в компьютерных UART и в STM32, и думаю что
много где еще. А вот китайцы в GD32 пошли своим путем и сделали не
как у нормальных людей. Лучше бы тупо скопировали - это у них
хорошо получается. Как только китайцы начинают выдумывать что-то
свое - получается хрень :-) - il-2(Сегодня, 18:20)
- Отнюдь! Состояние break в линии отслеживается приемником в т.ч. аккурат по оному стоп-биту. - reZident(Сегодня, 19:06)
- А вот для стоп-битов как раз это нетипично. Настройка стоп-битов -
только для передатчика. Для правильного приема достаточно 1 стоп
бита. Так реализовано в компьютерных UART и в STM32, и думаю что
много где еще. А вот китайцы в GD32 пошли своим путем и сделали не
как у нормальных людей. Лучше бы тупо скопировали - это у них
хорошо получается. Как только китайцы начинают выдумывать что-то
свое - получается хрень :-) - il-2(Сегодня, 18:20)
- Вообще говоря, типично приемник UART использует те же самые параметры настройки, что и передатчик. Но приемник имеет возможность принимать только биты данных, игнорируя бит четности. При этом (в
случае нарушение четности или отсутствии второго стоп-бита) в
модуле UART обычно формируются признаки ошибки: ошибка четности
(ParityError) и ошибка приема символа (FrameError), но их
использовать в своей программе не обязательно. - reZident(Сегодня, 17:44)
- Два стопа на передачу вообще полезно делать в любых устройствах на UART. - =AlexD=(Сегодня, 15:30)
- Да, RTU. Но чужого оборудования в системе вроде не предполагается. - Yft(Сегодня, 15:29)
- Это в нормальных МК и ПК само собой разумеется. Когда ты
настраиваешь UART на 2 стоп бита - это настройка ПЕРЕДАТЧИКА.
Приемник продолжает отслеживать 1 стоп бит. Так делают все ПК и
преобразователи USB-UART, с которыми я имел дело. Так делают МК
STM32. А вот МК GigaDevice (F103 и F303) используют настройку
стоп-бита и для приема тоже!!! il-2(270 знак., Сегодня, 15:41)
- Рекомендация стандарта: 19200, 8N1/ т.е. без контроля четности,
один стоп бит. - Cкpипaч(Сегодня, 14:46)
- я со всякими уровнемерами так и работаю - Лaгyнoв(Сегодня, 15:35)
- Спасибо, значит мне неправильный документ попался. Yft(1 знак., Сегодня, 15:22, картинка)
- Требование к длительности символа непременно в 11 бит (доп. стоп-бит при отсутствии бита четности) нужно лишь для обеспечения работы трансиверов RS485, которые работают без внешнего управления сигналом направления передачи. Такие, например, применяются в репитерах-"удлинителях линии" RS485 и/или в довольно старых устройствах. В подобных устройствах от любого перепада 1->0 (который по идее должен быть старт-битом и началом символа) на логическом входе DI трансивера reZident(395 знак., Сегодня, 16:34)
- Я неправ. Привожу скриншот из Стандарта. NoParity - всего лишь "допустимый". Только непонятно, схерали тратить дополнительный бит в каждом байте на то, что вообще-то 16-битным CRC проверяется. Cкpипaч(1 знак., Сегодня, 15:44, картинка)
- Проверка на четность - желательно, но не обязательно. Чтобы не
сомневаться в интернет-домыслах, лучше прочитать спецификации Modbus Over Serial Line и Modbus Serial Line Protocol and Implementation Guide V1.02 непосредственно от "законодателя мод" по ссылке. reZident(2 знак., Сегодня, 14:42, ссылка, картинка)
- Самое интересное осталось под катом :-) il-2(1 знак., Сегодня, 15:29, картинка)
- По-моему, без разницы. Если не ошибаюсь, все эти контроли четности - канальный уровень (3-й модели OSI), а сам Modbus RTU или ASCII - прикладной уровень (7-й) - bodis(Сегодня, 14:31)