-
- вот именно, что тупо и уродливо. Я б с удовольствием в int16 всё
клал. Но надо так, как на картинке. И у нас так живут 10 из 10. Вот
еще пример счетчик-расходомер ЭМИС. Тоже float32. И вдруг тут я
вылезаю такой оригинальный. :-) Лaгyнoв(2 знак., 28.01.2026 13:27, картинка)
- Самое смешное во всей этой стандартизации то, что в так называемых
стандартах Модбаса нет ни слова о том как передавать данные
размером больше 16 бит. Единственное разумное решение в такой
ситуации - сохранять совместимость с уже имеющимся оборудованием.
Первые контроллеры Модикон с которых всё начиналось были big-endian. О таких высоких материях как порядок следования байт программисты
этих контроллеров не задумывались, просто читали/писали байты в том
порядке как они ЫЫyкпy(522 знак., 28.01.2026 20:52)
- Все об этом знают. Поэтому или сразу читают документацию, или просто пробуют и так, и сяк при пусконаладке. - Nikolay_Po(29.01.2026 21:29)
- Я вот тоже думал скажу там - int32. Фигвам. Только float32. А мне
реально надо передавать числа больше 65536. :-( - Лaгyнoв(29.01.2026 10:57)
- У флота32 мантисса 24 бита. Должно хватить для 65536, если
правильно настроить округление (или ограничить разряды после
десятичной точки). - Nikolay_Po(29.01.2026 21:28)
- Так и я про то. А то мне говорят "нафиг ты переводишь целочисленные
во флоат??" А как иначе я передам 90000 отлитых сантилитров? А тем
более суммарник, где счет на миллионы - Лaгyнoв(30.01.2026 11:35)
- Не понял. В те же 4 байта вместо float войдет int32 (до двух
миллиардов сантилитров) или uint32 (до четырёх миллиардов). Samx(95 знак., 31.01.2026 23:26)
- ни у кого в свойствах регистров Модбас не видел int32. Повторюсь,
мне нельзя ничего придумывать по форматам. Я не создаю СВОЁ. Я
должен работать в рамках существующих систем. - Лaгyнoв(01.02.2026 09:18)
- А тебе в чужую SCADA данные нужно отдавать? Самопальные
действительно часто ограничиваются поддержкой int16 + float32, но
брендовые вплоть до текстовых строк умеют. Cкpипaч(155 знак., 01.02.2026 10:28)
- Круто. Беда в том, что я не знаю, куда буду отдавать. Мне сказали,
чтобы всё было как у всех на рынке. А у всех только int16 и
float32. Никаких фантазий у народа. :-) - Лaгyнoв(01.02.2026 10:50)
- Я отдаю uint32 как два последовательных регистра и "кошка бросила
котят". В моем случае речь идет о неких абстрактных "универсальных"
счетчиках. Кто не умеет читать два регистра, пусть читает по одному
(или вообще только младший). Cкpипaч(215 знак., 01.02.2026 11:18)
- Ну тоже вариант про два последовательных регистра. Но "кошка
бросила котят" - не мой случай. :-) - Лaгyнoв(01.02.2026 12:27)
- Вы передаете uint24, но занимаете под него 32 бита. Но то такэ, "общепринятая практика" - всегда лучшее решение. - Cкpипaч(01.02.2026 15:13)
- Стандарт Modbus ничего не говорит о том, как переменные больше двух
байт должны располагаться в регистрах, так что вам в любом случае
или выяснять что и как умеет делать чужой софт или полагаться на
удачу и квалификацию тех, кто всё будет стыковать. - AlexG(01.02.2026 13:37)
- Именно поэтому не буду устраивать самоделки. Как другие делают в наших кругах - так и буду - Лaгyнoв(01.02.2026 14:30)
- Ну тоже вариант про два последовательных регистра. Но "кошка
бросила котят" - не мой случай. :-) - Лaгyнoв(01.02.2026 12:27)
- Я отдаю uint32 как два последовательных регистра и "кошка бросила
котят". В моем случае речь идет о неких абстрактных "универсальных"
счетчиках. Кто не умеет читать два регистра, пусть читает по одному
(или вообще только младший). Cкpипaч(215 знак., 01.02.2026 11:18)
- Круто. Беда в том, что я не знаю, куда буду отдавать. Мне сказали,
чтобы всё было как у всех на рынке. А у всех только int16 и
float32. Никаких фантазий у народа. :-) - Лaгyнoв(01.02.2026 10:50)
- А тебе в чужую SCADA данные нужно отдавать? Самопальные
действительно часто ограничиваются поддержкой int16 + float32, но
брендовые вплоть до текстовых строк умеют. Cкpипaч(155 знак., 01.02.2026 10:28)
- ни у кого в свойствах регистров Модбас не видел int32. Повторюсь,
мне нельзя ничего придумывать по форматам. Я не создаю СВОЁ. Я
должен работать в рамках существующих систем. - Лaгyнoв(01.02.2026 09:18)
- Не понял. В те же 4 байта вместо float войдет int32 (до двух
миллиардов сантилитров) или uint32 (до четырёх миллиардов). Samx(95 знак., 31.01.2026 23:26)
- Вот скажем, у Микрочипа свой формат флота. - Kpoк(30.01.2026 00:03)
- ХЗ... Для Письк32, стандартный. - mse homjak(30.01.2026 11:47)
- Не совместимый с IEEE каким-то там 32 бит? - Nikolay_Po(30.01.2026 10:40)
- Ну как не совместимый... у некоторых бит назначение разное. - Kpoк(30.01.2026 10:43)
- А размер мантиссы? - Nikolay_Po(30.01.2026 10:49)
- 23 кажется - Kpoк(30.01.2026 16:29)
- А размер мантиссы? - Nikolay_Po(30.01.2026 10:49)
- Ну как не совместимый... у некоторых бит назначение разное. - Kpoк(30.01.2026 10:43)
- Так и я про то. А то мне говорят "нафиг ты переводишь целочисленные
во флоат??" А как иначе я передам 90000 отлитых сантилитров? А тем
более суммарник, где счет на миллионы - Лaгyнoв(30.01.2026 11:35)
- У флота32 мантисса 24 бита. Должно хватить для 65536, если
правильно настроить округление (или ограничить разряды после
десятичной точки). - Nikolay_Po(29.01.2026 21:28)
- Самое смешное во всей этой стандартизации то, что в так называемых
стандартах Модбаса нет ни слова о том как передавать данные
размером больше 16 бит. Единственное разумное решение в такой
ситуации - сохранять совместимость с уже имеющимся оборудованием.
Первые контроллеры Модикон с которых всё начиналось были big-endian. О таких высоких материях как порядок следования байт программисты
этих контроллеров не задумывались, просто читали/писали байты в том
порядке как они ЫЫyкпy(522 знак., 28.01.2026 20:52)
- вот именно, что тупо и уродливо. Я б с удовольствием в int16 всё
клал. Но надо так, как на картинке. И у нас так живут 10 из 10. Вот
еще пример счетчик-расходомер ЭМИС. Тоже float32. И вдруг тут я
вылезаю такой оригинальный. :-) Лaгyнoв(2 знак., 28.01.2026 13:27, картинка)