1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Помогите разобраться (адресация Modbus RTU Slave)

RS-485, ProfiBUS, 4-20 mA, Wi-Fi, GSM и так далее
Ответить
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Здравствуйте, уважаемые коллеги! Помогите разобраться..

Есть необходимость считать данные с прибора ВЗА-200-28,5. В документации к прибору написано, что это возможно, используя протокол Modbus RTU Slave. Сразу хотелось бы сказать, что в нем я не силен, поэтому и имею затруднения. Далее в инструкции указано, что используется функция modbus 03h (только чтение) из регистров Holding Registers. А сами данные прибора лежат по адресам, например, адрес 1 - это выходное напряджение (аналоговая величина).

Суть проблемы в том, что я не могу правильно составить адрес обращения по адресу в приборе. Для связи использую Kepware OPC-сервер, пробовал также и InSat, настраиваю соединение, создаю тег, а вот в поле адрес у меня проблема. Указываю для Holding Registers адрес 400001, тип данных float, статус канала получаю ОК, но значение приходит странное, вида 3,23767E-34A, как-то так)) Извините, за мое возможное корявое описание, не силен. Подскажите, если это возможно. Заранее благодарен!

VaBo
частый гость
частый гость
Сообщения: 441
Зарегистрирован: 21 июл 2013, 19:32
Имя: Вадим
город/регион: Северодвинск
Благодарил (а): 15 раз
Поблагодарили: 39 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение VaBo »

тип данных float не описывается протоколом, поэтому разработчики приборов резвятся вовсю.
У вас есть возможность менять очередность байтов в двойном слове, которым передается float32?
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

В настройках opc-сервера такая возможность есть, правда я не уверен, что это точно float. В адресах прибора есть только дискретные величины и аналоговые. С дискретными понятно, но вот как с аналоговыми быть, как написать адрес..

slepowl
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 24 янв 2014, 13:47
Имя: Олег О.
Страна: Россия
город/регион: Екатеинбург

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение slepowl »

Попробуйте поменять очередность, о чем вам намекали выше. А вообще в документации должно быть указание типа данных.
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Хорошо, я попробую. Просто такой документации я еще не встречал)) всего две строчки.. Сам адрес я указываю корректно, если обращаюсь в holding registers по адресу 1 в приборе? Запись булет такая 400001?
Аватара пользователя

Valerich
шаман
шаман
Сообщения: 984
Зарегистрирован: 27 июн 2013, 12:20
Имя: Валерич
Страна: СССР
Благодарил (а): 40 раз
Поблагодарили: 92 раза

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Valerich »

В настройках ОРС ищите что-то типа этого:


Изображение
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Спасибо, попробую.. Такое точно есть
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Перестановка байтов в значении не меняет ситуацию, но методом тыка в настройках OPC-сервера нашел галочку, которая поправила ситуацию и по некоторым адресам значения получил. По одному адресу значения идут в виде битовых масок. Так указано в инструкции к прибору. Что это значит? подскажите, пожалуйста..

Makovkin
здесь недавно
здесь недавно
Сообщения: 43
Зарегистрирован: 05 мар 2014, 06:24
Имя: Маковкин

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Makovkin »

archisp писал(а):По одному адресу значения идут в виде битовых масок. Так указано в инструкции к прибору. Что это значит? подскажите, пожалуйста..
Упаковывают отдельные биты в слово, а потом осуществляют побитное логическое И для выделения нужных битов
Аватара пользователя

Valerich
шаман
шаман
Сообщения: 984
Зарегистрирован: 27 июн 2013, 12:20
Имя: Валерич
Страна: СССР
Благодарил (а): 40 раз
Поблагодарили: 92 раза

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Valerich »

Изображение
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Написано, что маска, например, 0х0002 - "нарушение изоляции".. не пойму, я должен получить это самое значение (0х0002) в теге? или не правильно понимаю? никогда не сталкивался с этим просто, сложно для понимания, если честно

VaBo
частый гость
частый гость
Сообщения: 441
Зарегистрирован: 21 июл 2013, 19:32
Имя: Вадим
город/регион: Северодвинск
Благодарил (а): 15 раз
Поблагодарили: 39 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение VaBo »

archisp писал(а):Написано, что маска, например, 0х0002 - "нарушение изоляции".. не пойму, я должен получить это самое значение (0х0002) в теге? или не правильно понимаю? никогда не сталкивался с этим просто, сложно для понимания, если честно
if (полученное слово & 0х0002 == true)
then "изоляция нарушена";
Последний раз редактировалось VaBo 09 июл 2014, 23:56, всего редактировалось 1 раз.
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

То есть если я правильно понял, выполнение скрипта должно выполняться уже не на стороне opc-сервера, а в самой скаде? По указанному адресу получаю 0, а в скаде создаю скрипт с вышеуказанным условием?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5635
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 601 раз
Поблагодарили: 758 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Ryzhij »

archisp писал(а):То есть если я правильно понял, выполнение скрипта должно выполняться уже не на стороне opc-сервера, а в самой скаде? По указанному адресу получаю 0, а в скаде создаю скрипт с вышеуказанным условием?
Ну почему же, можете и в KeepWareOPC создать вычисляемый AdvancedTag соответствующего типа.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Alexander
БАН
БАН
Сообщения: 642
Зарегистрирован: 03 июн 2010, 12:26
Имя: Козин Александр Елисеевич
Страна: Украина
город/регион: Одесса
Благодарил (а): 2 раза
Поблагодарили: 6 раз
Забанен: Бессрочно

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Alexander »

archisp писал(а):То есть если я правильно понял, выполнение скрипта должно выполняться уже не на стороне opc-сервера, а в самой скаде? По указанному адресу получаю 0, а в скаде создаю скрипт с вышеуказанным условием?
Не создаете скрипт с вышеуказанным условием, а анализируете состояние битов в принятом слове. Слово может быть, например, 0х0006. Это точно также будет означать ту же самую ошибку - нарушение изоляции + еще что-то (что - не знаю).
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Спасибо! Попробую разобраться с созданием advanced тега.. Он создается, как обычный?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5635
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 601 раз
Поблагодарили: 758 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Ryzhij »

Да, на закладке Advanced, ежели у Вас установлен этот компонент.
Detcon_11_12.opf.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Благодарю! Посмотрел внимательно, думается, что возможность создания advanced тегов есть только в kepware 5, а у нас используется 4ая версия и только на нее лицензия.. Приплыл получается?))

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5635
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 601 раз
Поблагодарили: 758 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Ryzhij »

У меня широко шагнувшая в массы программа KEPServerEx v4.500.465, именно в нём и была создана опубликованная конфигурация.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

У меня v4.2, здесь такого нет.. Нашел для тестов v.5, работает правда в демо режиме, но возможность работы с тегами advanced есть.. Создаю тег с типом derived, в поле expression указываю условие вида: "tagname" and 0002, единица не приходит.. Может неправильно пишу маску 0х0002? Если писать именно маску 0х0002, ругается на некорректность записи..

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5635
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 601 раз
Поблагодарили: 758 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Ryzhij »

Тип вычисляемого (порождаемого) тега булевый? Во втором бите исходного тега типа word единица (число чётное и не меньше двух)?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Тип вычисляемого тега булиевый. А вот во втором бите 0. Собственно поэтому через AND и получаю ноль.. А запись вышеуказанного вида корректная?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5635
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 601 раз
Поблагодарили: 758 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Ryzhij »

У меня это выглядит так:
TAG (tagname) and 2
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Автор темы
archisp
здесь недавно
здесь недавно
Сообщения: 71
Зарегистрирован: 29 июн 2011, 21:18
Имя: Артур

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение archisp »

Получилось настроить связь по всем каналам, если просто обращаюсь по адресу в холдинг регистер, например 400001. По всем каналам получаю значения, которые мне необходимы, на одном из них хоть целое слово целиком читать, хоть напрямую обращаться побитно (400005.1 и тип булевый), хоть используя Advanced Tags с вышеуказанным способом ввода - получаю по этому адресу 0, в битах тоже 0-ли. Такое впечатление, что просто прибор ничего не дает по этому адресу, в нем пусто, хотя в инструкции сказано, что там есть значения. Пробовал сделать ошибку, чтобы на панели самого прибора загорелась индикация и соответсвенно в адресе была бы единица, но там все равно 0. Странно все это.... может просто потому, что прибор русский))

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5635
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 601 раз
Поблагодарили: 758 раз

Re: Помогите разобраться (адресация Modbus RTU Slave)

Сообщение Ryzhij »

archisp писал(а):Получилось настроить связь по всем каналам, если просто обращаюсь по адресу в холдинг регистер, например 400001.
Я-таки дико извиняюсь, но регистр по адресу 400001 это входной регистр, а вовсе не регистр хранения, не "холдинг", как Вы изящно выразились.
Адресация в протоколе Modbus - вещь стандартная, что на Украине, что в России, что в Африке, так что "национальность" прибора тут ни при чём.
Может быть у Вас проблема как раз в том, что вместо того, чтобы обращаться к регистру хранения 300001 через функцию 04, Вы пытаете входной регистр 400001 функцией 03? ;)
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Ответить

Вернуться в «Интерфейсы, протоколы, связь»