Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › ModBus Опрос по команде
- В этой теме 16 ответов, 5 участников, последнее обновление 8 месяцев, 1 неделя назад сделано
Mikhail.
-
АвторСообщения
-
13.09.2024 в 12:11 #34647
DaniilOpushnev
УчастникЗдравствуйте! Из вводных: Есть устройство измерения температуры/влажности эксис ИВТМ 7 М 3-Е. Скадой подключаюсь к нему по modbus TCP, все хорошо, опрос постоянный есть. Данные от датчика приходят с точностью до десятитысячных, которые постоянно колеблются, провоцируя постоянные вылеты за граничные значения. Установка разрядности D.D во входных каналах не помогает. Данные фиксировать необходимо раз в час, но период опроса более 5 секунд выставить нельзя, в виду особенности датчика.
К сути: Хочу решить проблему с помощью функции «Опрос только по команде», чтобы скада инициализировала связь раз в час. А команда будет отправляться автоматически с помощью модуля AutoControl. Из документации прибора чтение данных осуществляется функцией 0х04. Я плохо знаю протокол modbus, поэтому есть трудности с настройкой. В шаблоне устройства я создал команду, настройки сделал интуитивные:<?xml version="1.0" encoding="utf-8"?> <DeviceTemplate> <Options> <ZeroAddr>false</ZeroAddr> <DecAddr>true</DecAddr> <DefByteOrder2 /> <DefByteOrder4 /> <DefByteOrder8 /> </Options> <ElemGroups> <ElemGroup active="true" dataBlock="InputRegisters" address="0" name="My group"> <Elem type="float" byteOrder="2301" isBitMask="false" tagCode="C" name="Temp C" /> <Elem type="float" byteOrder="2301" isBitMask="false" tagCode="%" name="hum %" /> <Elem type="float" byteOrder="2301" isBitMask="false" tagCode="-" name="Per (not used" /> <Elem type="ushort" isBitMask="false" tagCode="!" name="Service massage" /> </ElemGroup> </ElemGroups> <Cmds> <Cmd dataBlock="Custom" funcCode="4" cmdNum="0" cmdCode="04" name="Опрос" /> </Cmds> </DeviceTemplate>
Привязал команду к выходному каналу ТУ, а его связал с модулем AutoControl. Схема работает, то когда скада сама пытается отправить команду в логе приходят ошибки, но после сеанса связи устройство само посылает пакет данных. Очевидно, что первые ошибки связаны с тем, что отправляется неправильный запрос. Перепробовал уже много настроек результат одинаковый.
Подскажите, пожалуйста, как правильно реализовать мой замысел, где и какие настройки я упустил?Кстати, если в приложении Администратор вручную опросить устройство кнопкой «Опросить», то ошибок нет, сразу приходит нужный пакет данных.
P.S. отдельный драйвер для датчиков ИВТМ у меня не заработал, ругался на отсутствующий файл.. да и как я понял из описания он только для чтения архивных данных из устройства.
13.09.2024 в 12:28 #34648a80808
УчастникПроще привязать к каналу с формулой EveryHour() без МАУ
13.09.2024 в 12:29 #34649Mikhail
МодераторДобрый день!
Отдельный драйвер читает и текущие и архивные данные из ИВТМ по нестандартному протоколу производителя. Вероятно, они добавили поддержку Modbus, раньше мне не попадалась информацию об этом.13.09.2024 в 12:30 #34650Mikhail
МодераторКоманда Modbus предназначена для записи значения в прибор. Вам она не нужна, а нужен именно опрос. Настройте опрос прибора и пришлите скриншоты настроек, чтобы было понятнее. Если всё будет работать при отправке команды на опрос из Администратора, то следующим шагом будет отправить такую же команду на опрос из модуля автоматического управления.
13.09.2024 в 12:32 #3465113.09.2024 в 12:43 #34661a80808
УчастникУ меня ИВТМ-7 2018 года уже с поддержкой ModBus RTU, потому как там только RS-485. Вроде в новых версиях у них появился Ethernet порт и ModBus TCP.
13.09.2024 в 13:50 #34670DaniilOpushnev
УчастникНастроил через команду App.Comm.PollDevice. Настройки следующие:
Первый опрос в нужное время проходит успешно, но следующий с ошибкой:
Но эта ошибка, скорее всего, связана с самим устройством. Понаблюдаю еще как будет проходить опрос с часовым интервалом.
13.09.2024 в 13:51 #34671DaniilOpushnev
УчастникКартинки не заработали почему то, вставлю просто ссылками:
Настройка канала: https://disk.yandex.ru/i/rTdNAjUn4vPZhg
Настройка модуля контроля: https://disk.yandex.ru/i/KKlBijY7w1FPWQ
Лог линии: https://disk.yandex.ru/i/xNB7M9sqavieYg
13.09.2024 в 14:18 #34676manjey73
УчастникСнимите галку «Оставаться на связи» если стоит. И какой результат будет?
а почему в Код команды не прописать App.Comm.PollDivice ?
-
Этот ответ был изменен 8 месяцев, 1 неделя назад от
manjey73.
13.09.2024 в 14:45 #34678DaniilOpushnev
УчастникГалку «Оставаться на связи» снял, все в норму пришло. Все работает как надо.
Всем спасибо!А на 5ю версию есть подобная команда?
13.09.2024 в 14:45 #34680JurasskPark
УчастникА почему в свойствах коммуникатора у линии и девайса не выставить периодичность 1 раз в час? )
13.09.2024 в 14:50 #34684manjey73
Участник@DaniilOpushnev на 5-ю нет. там надо спецфайлики в папку Cmd запихивать, еще и правильно их сформировать, может и получится.
Так все же вопрос, почему команда в виде строки, а не сразу в Код команды ?
Указать номер устройства и в Число передать кажется тоже номер устройства
13.09.2024 в 15:18 #34685DaniilOpushnev
УчастникВ код команды тоже работает, спасибо!
И просто выставить период тоже работает, все проще чем казалось..) Спасибо! С периодичностью и на 5й версии заработает.13.09.2024 в 16:07 #34689a80808
УчастникНо с задержкой может оказаться не привязанной к началу часа….
13.09.2024 в 18:05 #34694DaniilOpushnev
УчастникДа я тоже об этом подумал, поэтому поставил период в 10 минут, это хотя бы позволит избавиться от «дребезга» значений. А так в 5й версии в модуле автоуправление есть функция опрос КП, буду тестировать ее в понедельник.
-
Этот ответ был изменен 8 месяцев, 1 неделя назад от
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.