capzap ...а ведь хочется иметь условные "Кнопки", "Лампы", "Датчики дверей" и прочие не в виде полей структуры. А они могут быть раскиданы по разным модулям IO.
Я руками всё присваиваю (и думаю написать тулзу, которая этот код будет генерировать автоматически). Делаю задачу с названием типа TaskIO, и там окучиваю:
* Опрос модулей (OCL, CommLib)
* Разбор битовых полей
* Режим теста IO (когда специальный вход врубает все-все выходы)
* Разбор данных с Modbus-устройств (это когда от датчика получаешь "Температура х 100" и надо перевести в REAL).
Система устоялась ща, но неудобная - это факт.
Добавил. Каналы я именую по тому, как модули обозначаются в щите (у меня весь ОВЕН - с префиксом W - W1, W2, W3) и по их типу. То есть: W2_32DI, W3_32DO, W6_8AI (если читаем пакетно).
В документации идёт большая таблица со списком IO по модулям, и поэтому если по ней видно что какая-нибудь кнопка света спальни верха подключена на 10ый вход модуля W2, то в коде присваивание будет выглядеть так:
Код:
hwBtnLightSpalnVerh := W2_32DI.9;