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. В конференции она уже обсуждалась, поиск рулит. Отмечу ее хорошую документированность, причем именно в части представления многобайтных данных.