Просмотр полной версии : Чтение сетевой переменной типа 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 переменные не пробовал...
Надо писать какое вы опрашиваете устройство.
Есть устройства, которые не поддерживают чтение, запись булевых переменных. Или адрес не правильно указан
или галку порядка байт попробовать поставить ( убрать).
Проверить работу можно любым ОРС сервером
Добрый день.
Вы не могли бы подсказать, что делаю неправильно при чтении сетевой переменной 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Е)Чтение идет корректно, спасибо.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot