Осипов Павел
Junior Member / Новичок
Участник № / Member № 6199
отправлено / posted
Здравствуйте, Уважаемые форумчане. В проекте в источниках получаю данные по MODBUS(Rin_Byte(2) считываю 2 байта). В узле создал 2 канала HEX16 размерностью 8 бит(каждый канал 1 байт). Создал словарь для HEX16. Привязал словарь к каналу. Не пойму как работает словарь. Рассмотрим пример: сперва идет 00000001 - это первый байт, мне выдается сообщение по словарю 0bit_On. После приходит байт 00000011. Мне выводится сообщение 1bit_on. После опять приходит 00000001. Выдается сообщение 0bit_on. Почему не выдается сообщение 1bit_off??? Последовательность бит в байте передает дискретные значения работы насосов,т.е. 0bit- работа насоса 1, 1bit - работа насоса 2. И я хочу, чтобы выводились сообщения: 00000001 - насос 1 включен, 00000011 - насос 2 включен, 00000001 - насос 2 выключен. Как реализовать подобное?
Сообщения / Posts 4 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
У Вас HEX-канал имеет настройку DEC. Из документации: "Если канал HEX16 связан со словарем, алгоритм генерации сообщений зависит от вида представления канала (флага DEC (84, HD) – см. Канал класса HEX16 ):
если HD=0 (вид представления HEX), сообщение генерируется при изменении любого бита реального значения;
если HD=1 (вид представления DEC), сообщение генерируется при каждом изменении реального значения канала. Текст сообщения зависит от нового значения канала:
при R=0...31 в ОТ выводится сообщение из словаря с соответствующим номером;
при других значениях R в ОТ выводится выражение вида =<число>, где <число> – величина реального значения канала (DEC). "