Цитата(Олег_ @ 27.10.2015, 21:10)

Не поверите, в одном регистре 16 бит.

в частотниках от яскавы нет доступа к битам по отдельности.
Мне кажется, или в Вашем посте какое то противоречие.....
У многих производителей контроллеров и панелей, получить бит из слова не стоит вообще никаких затрат, разве что в кодесисе немного повыпендриваться с битовыми масками, но там и модбас кривой.
Конечно я знаю сколько бит в регистре. Скажу больше, когда-то давно даже занимался такой фигней как упаковывание битов в регистры. Только впоследствии, при распаковывании в той же SCADA неизбежно возникают какие-нибудь частные проблемы. Кто-то конечно скажет что ему проще скрипт написать (на каждую точку) или что-то в этом роде, но гораздо проще использовать только регистры. Хочешь - читай его как бит, хочешь как регистр. Опять же, всегда есть возможность расширить систему, например, сейчас у вас есть точка - есть или нет датчика, впоследствии можно ее изменить на тип датчика - нет, NTC10, PT1000 и т.д. В любом случае, в модуле всего 8 дискретных точек (фактически 4, еще 4 это фидбэки первых четырех) против 28 аналоговых, не стоит городить ради них отдельный запрос.
Цитата(Олег_ @ 27.10.2015, 21:10)

17 (0x11) — Чтение информации об устройстве (из стандарта вроде)
Нестандартный код? У Дельты это вообще офигительно, одной посылкой запись и чтение двух групп регистров, ну это для так, для
stscat 
Из Википедии:
"17 (0x11) — Чтение информации об устройстве (Report Slave ID)
Функция предназначена для получения информации о типе устройства и его состоянии. Формат ответа зависит от устройства."
Т.е. на усмотрение производителя. Делает как хочет или вообще не делает.
Фактически, нужны только две modbus функции из всего их обилия:
3 (0x03) — чтение значений из нескольких регистров хранения (Read Holding Registers).
6 (0x06) — запись значения в один регистр хранения (Preset Single Register).
по желанию и для совместимости можно использовать
16 (0x10) — запись значений в несколько регистров хранения (Preset Multiple Registers)
но по факту функция 16 (0x10) всегда записывает значение только одного регистра. Вам же не надо Ежемилисекундно переключать десяток реле или менять положение десятка клапанов.
Для Олег_ @. Естественно вышесказанное верно для производителей Modbus слейв устройств и им выбирать какими функциями пользоваться, для пользователей Modbus устройств (SCADA и другие Modbus мастера) придется использовать то что заложил производитель слейв устройств.