ОВЕН ПР200, ModBus

Просмотр 15 сообщений - с 1 по 15 (из 17 всего)
  • Автор
    Сообщения
  • #17769
    advirds
    Участник

    Добрый день!
    Заранее прошу прощения. Опыта мало, вопросы могут быть глупыми. Новичкав перспективе будет полезным.
    Имеем следующие железки:
    ОВЕН ПР200-24-2(4)
    Входы: дискретные = 8
    аналоговые = 4
    Выходы: дискретные = 4
    Контроллер заведен в сеть при помощи модема Teleofis RTU869v2, работает корректно, связь есть.

    Встал вопрос получения данных с дискретных входов и управлением дискретными выходами. Управляем только через Рапиду, внутренней логики не строим.
    ПР200 настроен на работу в режиме slave. Соответственно, с булевскими значениями в сетевых переменных мы работать не можем, только целочисленные и с плавающей запятой. Приходится костылять следующим образом:
    На вход вешаем преобразователь в целочисленное и присваиваем ему сетевую переменную с регистром(например 512) и так на все 8 дискретных входов.
    Создаем сетевую переменную в регистром(с 520), преобразуем в булевскую и на выход.
    Для тех, кто работал с Овнами, выглядит это расточительство примерно так:
    https://ibb.co/qDmkK87

    На устройстве имеем список регистров:
    https://ibb.co/q7rmXwp
    Понимаю, что это расточительство, но иначе пока не понимаю, как сделать и надеюсь на вашу помощь. Я бы только рад собрать все это в битовую маску, но как реализовать в Рапиде пока не пойму.

    Далее. Настройка в самой RapidScada:
    В шаблонах задаем следующие параметры:
    https://ibb.co/6rjf3NH
    Получаем корректный опрос, если адрес прописываем до 11го включительно. На овне адреса регистров идут начиная с 512.
    В Рапиде, при опросе, начиная с 12го имеем следующую картину.
    <img src=»Получаем корректный опрос, если адрес прописываем до 11го включительно. На овне адреса регистров идут начиная с 512.
    В Рапиде, при опросе, начиная с 12го имеем следующую картину.
    https://ibb.co/kGr6tSb

    Вопросы:
    Каким образом можно разложить битовую маску регистра в Рапиде.
    Как быть с адресацией регистров и с чем может быть связана ошибка.
    Корректно ли настроен Овен. если мы предполагаем только управление дискретными выходами и считываение дискретных и аналоговых входов?

    • Эта тема была изменена 3 года, 4 месяца назад от advirds.
    • Эта тема была изменена 3 года, 4 месяца назад от advirds.
    • Эта тема была изменена 3 года, 4 месяца назад от advirds.
    #17773
    advirds
    Участник

    Забыл упомянуть.
    Через овновский OPC сервер, регистры с 512 по 527 опрашиваются корректно.
    https://ibb.co/CJjQz2M

    • Этот ответ был изменен 3 года, 4 месяца назад от advirds.
    #17775
    manjey73
    Участник

    Поставьте адресацию с НУЛЯ и в десятичном виде, должно быть 512 = 512 если не ошибаюсь — проверил, именно так в шаблоне у меня и выставлено — 0 и десятичная система

    для Float порядок байт 2301

    А почему вы ПР200 не включите в режим модуля ввода-вывода ? или потом программа предполагается ?

    • Этот ответ был изменен 3 года, 4 месяца назад от manjey73.
    #17778
    Mikhail
    Модератор

    Добрый день!

    Я бы только рад собрать все это в битовую маску, но как реализовать в Рапиде пока не пойму.

    Если битовая маска считывается с контроллера как 16-битный регистр, то её нужно разложить на биты на уровне базы конфигурации, создав дополнительные входные каналы типа Дорасчётный ТС. Посмотрите здесь.
    Для начала Вам нужно настроить Коммуникатор для считывания всех необходимых регистров.

    #17779
    manjey73
    Участник

    Ага, только потом проблема управлять конкретным битом. не затрагивая остальные.
    Нужен промежуточный канал, откуда будет браться текущее число, установка бита в это число и отправка команды.

    О блин, уже и забыл что это писал 🙂

    • Этот ответ был изменен 3 года, 4 месяца назад от manjey73.
    #17782
    advirds
    Участник

    Поставьте адресацию с НУЛЯ и в десятичном виде, должно быть 512 = 512 если не ошибаюсь — проверил, именно так в шаблоне у меня и выставлено — 0 и десятичная система

    Все именно так и стоит.
    https://ibb.co/5jVKH0C

    для Float порядок байт 2301

    Заработало с 512м адресом!
    Только я не до конца понимаю как мне теперь двумя регистрами управлять с настройкой float.

    А почему вы ПР200 не включите в режим модуля ввода-вывода ? или потом программа предполагается ?

    Скорее всего я снова блесну своим недостатком опыта, но 485й модуль ПР200 может быть только в режиме master|slave.
    В режиме master мне не удалось наладить связь с железкой.
    Никаких программ не предполагается. Только управление рапидой.

    #17785
    manjey73
    Участник

    Вы не поняли, порт 485 у вас должен стоять как slave
    Поищите по РЭ на ПР200, там есть какая-то перемычка, которая сделает его просто модулем ввода/вывода (вроде ПР200 это умеет). Тогда можно будет управлять выходами без написания программы вообще.

    Вы при записи в шаблоне должны указать «Множественная команда» и выбрать тип float
    Тогда будет отправляться полное число.

    Ну и тут на вкладке для 4-х байт сразу пропишите 2301

    #17789
    advirds
    Участник

    Интересно.
    Есть такой режим на овнЕ.
    https://ibb.co/DfcvW9R
    Насколько я понимаю, далее руководствуемся таблицей регистров, лишаемся сетевых переменных и внутренних алгоритмов работы.
    Раз уж пошли по сложному пути — надо идти)) Суть еще в том, что возможно на объекта необходимо будет масштабировать систему, подключая модули. Run-Stop все же не подойдет.
    А в шаблонах я просто указал порядок байт и все заработало, спасибо за помощь!

    #17790
    advirds
    Участник

    Не знаю надо ли создавать отдельную тему, но проблема с управлением и получением данных есть. Хоть опрос и корректный.
    В опросе ошибок нет, настройки шаблона выглядят следующим образом.
    шаблон
    Пробовал разные вариации типов.
    Адресация с 0, в 10ричной.
    На данный момент на первый дискретный поданы 24В, на приборе срабатывание отображается. В СКАДЕ-не отображается)

    Управление каналами не происходит, но есть интересный момент:
    Если выставить 16-ричную систему в шаблоне и отправить нулевую команду на второй канал(521й в 10-ричной) по адресу 20A, то он отключает реле первого канала.

    OPC сервер овна опрашивает и управляет корректно.

    Пакет включения дискретного выхода:
    10-12-2020 12:30:46.555 : device: modbus .ПР200 port: Rx Rx, size: 11, data:[01 B9 00 00 00 05 10 03 02 00 01 ]
    10-12-2020 12:30:46.555 : device: modbus .ПР200 port: Tx Tx, size: 12, data:[01 BA 00 00 00 06 10 03 02 00 00 01 ]

    Пакет отключения первого дискретного выхода
    10-12-2020 12:34:41.684 : device: modbus .ПР200 port: Rx Rx, size: 11, data:[02 57 00 00 00 05 10 03 02 00 01 ]
    10-12-2020 12:34:41.684 : device: modbus .ПР200 port: Tx Tx, size: 12, data:[02 58 00 00 00 06 10 03 02 00 00 01 ]

    Пакет опроса первого дискретного входа, который находится в сработке:
    10-12-2020 12:36:10.756 : device: modbus .ПР200 port: Rx Rx, size: 11, data:[01 0C 00 00 00 05 10 03 02 00 01 ]
    10-12-2020 12:36:10.756 : device: modbus .ПР200 port: Tx Tx, size: 12, data:[01 0D 00 00 00 06 10 03 02 00 00 01 ]

    На всякий случай заброшу скрины настроек тегов с OPC сервера.
    опрос
    Управление

    Я подозреваю что проблема в том, что мы не можем передавать булевские команды и у нас конвертация в программе прибора, но точно сказать не могу.

    Прошу помощи опытных.

    • Этот ответ был изменен 3 года, 4 месяца назад от advirds.
    #17792
    advirds
    Участник
    #17793
    manjey73
    Участник

    Скрины команд покажите.
    Порядок байт убрать для short ushort оно не имеет смысла, нужно только для float
    Int нормально передаются.

    1

    #17794
    manjey73
    Участник

    2

    float

    #17795
    advirds
    Участник

    Разобрался!
    Порядок байт в настройках прибор не сменен.
    https://ibb.co/1nCCdXx
    Соответственно, если вторым ставлю нулевой, например 1032 — получаю правильную работу выходами и вижу стработавший канал.
    Порядок прописан в unshort.
    Только значение не 1, а 256 почему-то.
    https://ibb.co/dWmt2jQ

    Не совсем понимаю насчет float типа на входы не совсем понимаю. Если у меня 1 регистр идет на каждый канал float тип закрывает сразу 2
    https://ibb.co/4ggKqms
    https://ibb.co/gRsjjBh

    #17796
    advirds
    Участник

    Запутал себя и остальных немного. Порядок байт ставим на место, если в настройках прибора старший вперед не ставим и все в порядке.
    Сейчас порядок 0123. Все управляется, все данные идут.
    Спасибо огромное за помощь.

    #17797
    manjey73
    Участник

    float это если вы будете читать данные аналоговых входов или использовать переменные типа float например для смены уставок температуры. Для входов и выходов они не нужны.
    Если используете в программе ПР макросы упаковки и распаковки бит, то сможете одной переменной читать все входы и управлять выходами, но через формулы, как в теме выше, где Михаил дал ссылку.

    Да, порядок байт не меняется для slave режима, эти настройки только для мастера, когда при помощи ПР читают другие модули по интерфейсу.

Просмотр 15 сообщений - с 1 по 15 (из 17 всего)
  • Вы должны авторизироваться для ответа в этой теме.