- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Помогите разобраться (адресация Modbus RTU Slave)
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Помогите разобраться (адресация Modbus RTU Slave)
Здравствуйте, уважаемые коллеги! Помогите разобраться..
Есть необходимость считать данные с прибора ВЗА-200-28,5. В документации к прибору написано, что это возможно, используя протокол Modbus RTU Slave. Сразу хотелось бы сказать, что в нем я не силен, поэтому и имею затруднения. Далее в инструкции указано, что используется функция modbus 03h (только чтение) из регистров Holding Registers. А сами данные прибора лежат по адресам, например, адрес 1 - это выходное напряджение (аналоговая величина).
Суть проблемы в том, что я не могу правильно составить адрес обращения по адресу в приборе. Для связи использую Kepware OPC-сервер, пробовал также и InSat, настраиваю соединение, создаю тег, а вот в поле адрес у меня проблема. Указываю для Holding Registers адрес 400001, тип данных float, статус канала получаю ОК, но значение приходит странное, вида 3,23767E-34A, как-то так)) Извините, за мое возможное корявое описание, не силен. Подскажите, если это возможно. Заранее благодарен!
Есть необходимость считать данные с прибора ВЗА-200-28,5. В документации к прибору написано, что это возможно, используя протокол Modbus RTU Slave. Сразу хотелось бы сказать, что в нем я не силен, поэтому и имею затруднения. Далее в инструкции указано, что используется функция modbus 03h (только чтение) из регистров Holding Registers. А сами данные прибора лежат по адресам, например, адрес 1 - это выходное напряджение (аналоговая величина).
Суть проблемы в том, что я не могу правильно составить адрес обращения по адресу в приборе. Для связи использую Kepware OPC-сервер, пробовал также и InSat, настраиваю соединение, создаю тег, а вот в поле адрес у меня проблема. Указываю для Holding Registers адрес 400001, тип данных float, статус канала получаю ОК, но значение приходит странное, вида 3,23767E-34A, как-то так)) Извините, за мое возможное корявое описание, не силен. Подскажите, если это возможно. Заранее благодарен!
-
- частый гость
- Сообщения: 441
- Зарегистрирован: 21 июл 2013, 19:32
- Имя: Вадим
- город/регион: Северодвинск
- Благодарил (а): 15 раз
- Поблагодарили: 39 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
тип данных float не описывается протоколом, поэтому разработчики приборов резвятся вовсю.
У вас есть возможность менять очередность байтов в двойном слове, которым передается float32?
У вас есть возможность менять очередность байтов в двойном слове, которым передается float32?
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
В настройках opc-сервера такая возможность есть, правда я не уверен, что это точно float. В адресах прибора есть только дискретные величины и аналоговые. С дискретными понятно, но вот как с аналоговыми быть, как написать адрес..
-
- здесь недавно
- Сообщения: 10
- Зарегистрирован: 24 янв 2014, 13:47
- Имя: Олег О.
- Страна: Россия
- город/регион: Екатеинбург
Re: Помогите разобраться (адресация Modbus RTU Slave)
Попробуйте поменять очередность, о чем вам намекали выше. А вообще в документации должно быть указание типа данных.
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
Хорошо, я попробую. Просто такой документации я еще не встречал)) всего две строчки.. Сам адрес я указываю корректно, если обращаюсь в holding registers по адресу 1 в приборе? Запись булет такая 400001?
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
Перестановка байтов в значении не меняет ситуацию, но методом тыка в настройках OPC-сервера нашел галочку, которая поправила ситуацию и по некоторым адресам значения получил. По одному адресу значения идут в виде битовых масок. Так указано в инструкции к прибору. Что это значит? подскажите, пожалуйста..
-
- здесь недавно
- Сообщения: 43
- Зарегистрирован: 05 мар 2014, 06:24
- Имя: Маковкин
Re: Помогите разобраться (адресация Modbus RTU Slave)
Упаковывают отдельные биты в слово, а потом осуществляют побитное логическое И для выделения нужных битовarchisp писал(а):По одному адресу значения идут в виде битовых масок. Так указано в инструкции к прибору. Что это значит? подскажите, пожалуйста..
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
Написано, что маска, например, 0х0002 - "нарушение изоляции".. не пойму, я должен получить это самое значение (0х0002) в теге? или не правильно понимаю? никогда не сталкивался с этим просто, сложно для понимания, если честно
-
- частый гость
- Сообщения: 441
- Зарегистрирован: 21 июл 2013, 19:32
- Имя: Вадим
- город/регион: Северодвинск
- Благодарил (а): 15 раз
- Поблагодарили: 39 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
if (полученное слово & 0х0002 == true)archisp писал(а):Написано, что маска, например, 0х0002 - "нарушение изоляции".. не пойму, я должен получить это самое значение (0х0002) в теге? или не правильно понимаю? никогда не сталкивался с этим просто, сложно для понимания, если честно
then "изоляция нарушена";
Последний раз редактировалось VaBo 09 июл 2014, 23:56, всего редактировалось 1 раз.
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
То есть если я правильно понял, выполнение скрипта должно выполняться уже не на стороне opc-сервера, а в самой скаде? По указанному адресу получаю 0, а в скаде создаю скрипт с вышеуказанным условием?
-
- почётный участник форума
- Сообщения: 5793
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 674 раза
- Поблагодарили: 846 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
Ну почему же, можете и в KeepWareOPC создать вычисляемый AdvancedTag соответствующего типа.archisp писал(а):То есть если я правильно понял, выполнение скрипта должно выполняться уже не на стороне opc-сервера, а в самой скаде? По указанному адресу получаю 0, а в скаде создаю скрипт с вышеуказанным условием?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- БАН
- Сообщения: 642
- Зарегистрирован: 03 июн 2010, 12:26
- Имя: Козин Александр Елисеевич
- Страна: Украина
- город/регион: Одесса
- Благодарил (а): 2 раза
- Поблагодарили: 6 раз
- Забанен: Бессрочно
Re: Помогите разобраться (адресация Modbus RTU Slave)
Не создаете скрипт с вышеуказанным условием, а анализируете состояние битов в принятом слове. Слово может быть, например, 0х0006. Это точно также будет означать ту же самую ошибку - нарушение изоляции + еще что-то (что - не знаю).archisp писал(а):То есть если я правильно понял, выполнение скрипта должно выполняться уже не на стороне opc-сервера, а в самой скаде? По указанному адресу получаю 0, а в скаде создаю скрипт с вышеуказанным условием?
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
Спасибо! Попробую разобраться с созданием advanced тега.. Он создается, как обычный?
-
- почётный участник форума
- Сообщения: 5793
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 674 раза
- Поблагодарили: 846 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
Да, на закладке Advanced, ежели у Вас установлен этот компонент.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
Благодарю! Посмотрел внимательно, думается, что возможность создания advanced тегов есть только в kepware 5, а у нас используется 4ая версия и только на нее лицензия.. Приплыл получается?))
-
- почётный участник форума
- Сообщения: 5793
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 674 раза
- Поблагодарили: 846 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
У меня широко шагнувшая в массы программа KEPServerEx v4.500.465, именно в нём и была создана опубликованная конфигурация.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
У меня v4.2, здесь такого нет.. Нашел для тестов v.5, работает правда в демо режиме, но возможность работы с тегами advanced есть.. Создаю тег с типом derived, в поле expression указываю условие вида: "tagname" and 0002, единица не приходит.. Может неправильно пишу маску 0х0002? Если писать именно маску 0х0002, ругается на некорректность записи..
-
- почётный участник форума
- Сообщения: 5793
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 674 раза
- Поблагодарили: 846 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
Тип вычисляемого (порождаемого) тега булевый? Во втором бите исходного тега типа word единица (число чётное и не меньше двух)?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
Тип вычисляемого тега булиевый. А вот во втором бите 0. Собственно поэтому через AND и получаю ноль.. А запись вышеуказанного вида корректная?
-
- почётный участник форума
- Сообщения: 5793
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 674 раза
- Поблагодарили: 846 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
У меня это выглядит так:
TAG (tagname) and 2
TAG (tagname) and 2
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 71
- Зарегистрирован: 29 июн 2011, 21:18
- Имя: Артур
Re: Помогите разобраться (адресация Modbus RTU Slave)
Получилось настроить связь по всем каналам, если просто обращаюсь по адресу в холдинг регистер, например 400001. По всем каналам получаю значения, которые мне необходимы, на одном из них хоть целое слово целиком читать, хоть напрямую обращаться побитно (400005.1 и тип булевый), хоть используя Advanced Tags с вышеуказанным способом ввода - получаю по этому адресу 0, в битах тоже 0-ли. Такое впечатление, что просто прибор ничего не дает по этому адресу, в нем пусто, хотя в инструкции сказано, что там есть значения. Пробовал сделать ошибку, чтобы на панели самого прибора загорелась индикация и соответсвенно в адресе была бы единица, но там все равно 0. Странно все это.... может просто потому, что прибор русский))
-
- почётный участник форума
- Сообщения: 5793
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 674 раза
- Поблагодарили: 846 раз
Re: Помогите разобраться (адресация Modbus RTU Slave)
Я-таки дико извиняюсь, но регистр по адресу 400001 это входной регистр, а вовсе не регистр хранения, не "холдинг", как Вы изящно выразились.archisp писал(а):Получилось настроить связь по всем каналам, если просто обращаюсь по адресу в холдинг регистер, например 400001.
Адресация в протоколе Modbus - вещь стандартная, что на Украине, что в России, что в Африке, так что "национальность" прибора тут ни при чём.
Может быть у Вас проблема как раз в том, что вместо того, чтобы обращаться к регистру хранения 300001 через функцию 04, Вы пытаете входной регистр 400001 функцией 03? ;)
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)