ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
38489 Топик полностью
Алексей Мусин (05.09.2005 16:19, просмотров: 1) ответил goz на Порядок байтов в Modbus RTU
ASDFS и Andy Mozzhevilov уже сказали кратко "Все смешалось в доме Обломовых". Попробую рассортировать. Modbus RTU - serial line protocol, отвечающий за разделение пакетов в последовательном канале связи и контроль целостности пакета посредством CRC16. Все. Предполагаем использовать функции 0x03 (read holding registers) и 0x10 (write registers) Это дело НЕ протокола Modbus RTU, а Modbus Application Protocol, описывающего доступ к пресловутым регистрам. Все. Т.е. если бы обмен был только значениями типа word то пришлось бы при приеме/передаче "переворачивать" все word'ы. Это дело не Modbus вообще, а вашего приложения. Скорее всего это будет просто прослойка для "собирания" данных из регистров. Ессно, вы должны оговорить, либо позаимствовать у верхнего софта представление данных в регистрах. Причем ваш контроллер (слейв на шине) должен аккуратно (читай, побайтно) изменять регистры ("замапенное" на них ОЗУ). Понятно ваше желание, чтобы порядок байт в регистре и в "подлинкованном" к нему ОЗУ, где хранятся параметры устройства, совпадали. Как Вы правильно отметили, бывает разная endianness. Придется смириться, и в ОЗУ писать данные побайтно. Мой коллега-оппонент ("модбасовский мастер") написал свои функции упаковки/распаковки данных из таблицы регистров. Никаких проблем. Мне тоже приходится это делать, храня lo и hi, и, при необходимости, собирать из них 32р: (hi < < 8) + lo. Но если структура имеет и другие типы данных, то при приеме/передаче надо знать структура какого типа передается/принимается (для переворотов) У вас для каждого слейва должен быть документ, описывающий адресное пространство регистров. Какая часть многобайтовых данных и в каком регистре лежит - должно быть описано. В этом случае вам не нужны идентификаторы типов хранимых данных. Хотя бы для общего развития рекомендую почитать про Пирамиду (по ссылке) - в ней есть идентификация типов. Кстати, она может работать и поверх Modbus RTU. В конференции она уже обсуждалась, поиск рулит. Отмечу ее хорошую документированность, причем именно в части представления многобайтных данных.