Вход

Просмотр полной версии : Чтение сетевой переменной типа boolean



Евгений Ш
05.06.2024, 09:59
Добрый день.

Вы не могли бы подсказать, что делаю неправильно при чтении сетевой переменной bool (modbus RTU)? Среда разработки OwenLogic 2.6.348.0, устройство ИПП120. Чтение int идет без проблем, а bool переменная не изменяется. Решил посмотреть как выглядят пакеты, которые летят в сети (см. log.jpeg). Что вижу в сети: вместо запроса 01 01 00 3E 00 01 CRC, вижу 01 01 03 E0 00 01 CRC. Вообще часто использовал ИПП120 для чтения данных от различных modbus устройств, но читать bool переменные не пробовал...

kondor3000
05.06.2024, 10:07
Добрый день.

Вы не могли бы подсказать, что делаю неправильно при чтении сетевой переменной bool (modbus RTU)? Среда разработки OwenLogic 2.6.348.0, устройство ИПП120. Чтение int идет без проблем, а bool переменная не изменяется. Решил посмотреть как выглядят пакеты, которые летят в сети (см. log.jpeg). Что вижу в сети: вместо запроса 01 01 00 3E 00 01 CRC, вижу 01 01 03 E0 00 01 CRC. Вообще часто использовал ИПП120 для чтения данных от различных modbus устройств, но читать bool переменные не пробовал...

Надо писать какое вы опрашиваете устройство.
Есть устройства, которые не поддерживают чтение, запись булевых переменных. Или адрес не правильно указан
или галку порядка байт попробовать поставить ( убрать).
Проверить работу можно любым ОРС сервером

petera
05.06.2024, 10:40
Добрый день.

Вы не могли бы подсказать, что делаю неправильно при чтении сетевой переменной bool (modbus RTU)? Среда разработки OwenLogic 2.6.348.0, устройство ИПП120. Чтение int идет без проблем, а bool переменная не изменяется. Решил посмотреть как выглядят пакеты, которые летят в сети (см. log.jpeg). Что вижу в сети: вместо запроса 01 01 00 3E 00 01 CRC, вижу 01 01 03 E0 00 01 CRC. Вообще часто использовал ИПП120 для чтения данных от различных modbus устройств, но читать bool переменные не пробовал...

Все правильно,потому, что адрес битовой переменной, указанной в Ваших настройках будет не 62, а 62*16 = 992 (03Е0)
А нужно так (в регистре 16 бит) 3*16+14 = 62 (3Е)
76282

Евгений Ш
05.06.2024, 11:06
Все правильно,потому, что адрес битовой переменной, указанной в Ваших настройках будет не 62, а 62*16 = 992 (03Е0)
А нужно так (в регистре 16 бит) 3*16+14 = 62 (3Е)Чтение идет корректно, спасибо.