Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: Проблема чтения ПР 200 дискретных входов функцией чтения 02 по протоколу ModBusRTU

  1. #1

    Question Проблема чтения ПР 200 дискретных входов функцией чтения 02 по протоколу ModBusRTU

    Добрый день. Я не сильно программист. ПР 200 в режиме мастер ModBusRTU по RS 485. Есть два разных китайских реле, управляемых по RS 485 modbus. У них есть дискретные входы (регистры Discrete Input Contacts), дискретные выходы и аналоговые входа и выхода. При настройке опроса такого устройства и управления им все работает замечательно, кроме опроса дискретных входов(функция чтения 02 , адрес в сети 1). При настройке опроса, ПР200 в порт посылает следующие строки (пишу без кода CRC):
    -1 вход 01 02 0000 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 0
    -2 вход 01 02 0001 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 1
    -3 вход 01 02 0002 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 2
    и т.д.
    Если оставляю считывать только первый вход(активирую отражение на эране ПР200 только первой переменной = первый вход), все работает, ПР 200 его читает. Как только активирую считывание любого следующего входа, в ответ (при мониторинге порта) получаю от китайца ответ об ошибке код 02. Получается китаец не воспринимает команду 01 02 0001 0001 или 01 02 0002 0001, он видит только команды типа 01 02 0000 0001 или 01 02 0000 0002, 01 02 0000 0003 и т.д. то есть он видит только пакетное считывание начиная с 0-го адреса с заданием количества адресов считывания.
    При этом с китайской панелью оператора это реле отлично работает, потому что при настройке опроса в панеле оператора нескольких битовых переменных, привязанных к входам реле (к примеру четырех), эта панель формирует к реле только один запрос 01 02 0000 0004.

    Это происходит на обоих китайских реле. Они очень дешевые, интересно было бы их поэтому использовать.

    Что я делаю не так? Или это особенность работы ПР200. Может китайцы используют старый протокол…

    Может можно в лоджике поправить, чтобы при опросе регистров Discrete Input Contacts командой 02 он посылал только один запрос считывания для всех битовых переменных, начиная с нулевого адреса.

    Спасибо за внимание.

    P.S. У китайцев нашел еще такие реле, у которых все регистры памяти(все входа-выхода, находятся в области Holding Registers и конечно с ними при опросе с ПР200 нет проблем.
    Средняя цена на такие устройства через алиэкспресс к примеру 8 DI и 8 DO около 1200 руб, столько же примерно стоит 4 AI и 2DO. Есть очень много разных модификаций с небольшим варьированием цены вопроса. С аналоговыми выходами стоят подороже.
    Вложения Вложения

  2. #2

    По умолчанию

    Цитата Сообщение от guravlev-2 Посмотреть сообщение
    Добрый день. Я не сильно программист. ПР 200 в режиме мастер ModBusRTU по RS 485. Есть два разных китайских реле, управляемых по RS 485 modbus. У них есть дискретные входы (регистры Discrete Input Contacts), дискретные выходы и аналоговые входа и выхода. При настройке опроса такого устройства и управления им все работает замечательно, кроме опроса дискретных входов(функция чтения 02 , адрес в сети 1). При настройке опроса, ПР200 в порт посылает следующие строки (пишу без кода CRC):
    -1 вход 01 02 0000 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 0
    -2 вход 01 02 0001 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 1
    -3 вход 01 02 0002 0001 в ПР200 настройки переменной bool, чтение 02, запись нет, регистр 0, бит 2
    и т.д.
    Если оставляю считывать только первый вход(активирую отражение на эране ПР200 только первой переменной = первый вход), все работает, ПР 200 его читает. Как только активирую считывание любого следующего входа, в ответ (при мониторинге порта) получаю от китайца ответ об ошибке код 02. Получается китаец не воспринимает команду 01 02 0001 0001 или 01 02 0002 0001, он видит только команды типа 01 02 0000 0001 или 01 02 0000 0002, 01 02 0000 0003 и т.д. то есть он видит только пакетное считывание начиная с 0-го адреса с заданием количества адресов считывания.
    При этом с китайской панелью оператора это реле отлично работает, потому что при настройке опроса в панеле оператора нескольких битовых переменных, привязанных к входам реле (к примеру четырех), эта панель формирует к реле только один запрос 01 02 0000 0004.

    Это происходит на обоих китайских реле. Они очень дешевые, интересно было бы их поэтому использовать.

    Что я делаю не так? Или это особенность работы ПР200. Может китайцы используют старый протокол…

    Может можно в лоджике поправить, чтобы при опросе регистров Discrete Input Contacts командой 02 он посылал только один запрос считывания для всех битовых переменных, начиная с нулевого адреса.

    Спасибо за внимание.

    P.S. У китайцев нашел еще такие реле, у которых все регистры памяти(все входа-выхода, находятся в области Holding Registers и конечно с ними при опросе с ПР200 нет проблем.
    Средняя цена на такие устройства через алиэкспресс к примеру 8 DI и 8 DO около 1200 руб, столько же примерно стоит 4 AI и 2DO. Есть очень много разных модификаций с небольшим варьированием цены вопроса. С аналоговыми выходами стоят подороже.
    Добрый день.
    Подозреваю что проблема в задании адреса регистра для чтения, покажите Ваши сетевые настройки для регистров.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  3. #3

    По умолчанию

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

  4. #4

    По умолчанию

    у вас было видео с китайской релюшкой такого плана. вы на видео , чтобы включить выход, писали в переменную значение 255 для включения и 526 для выключения и говорили, что почему такие значения, а не 1 или 0 соответственно и говорили, что вам её кто то дал, а инструкции нет.

  5. #5

    По умолчанию

    вот сетевые переменные. IN - входы, OUT- выхода. Управление выходами работает.
    Вложения Вложения

  6. #6

    По умолчанию

    Цитата Сообщение от guravlev-2 Посмотреть сообщение
    сейчас попаду домой и сфоткую. Кстати на ваших видео очень много познал. Спасибо
    сетевые настройки регистров это таблица с сетевыми переменными из лоджика?правильно я понял?
    Да. По скриншотам вроде похоже, если там действительно используется 0 регистр, еще бы скорость обмена узнать, если 9600 то таймаут и период опроса я бы увеличил до 500 и 1000 мс соответственно.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  7. #7

    По умолчанию

    скорость обмена 9600. о-ой регистр. попробую изменить время и таймаут

  8. #8

    По умолчанию

    изменил время и таймаут. подключал разные китайские релюшки. две из них шлют ошибку 02, третья, только что заметил, когда опрашивается только 1-й вход (01 02 0000 0001 CRC) работает, при попытке опросить другие входы, вообще ничего не отвечает, запрос есть, ответа нет, при опросе только 1-го входа все работает. как я и говорил, эти реле не понимают код функции 02, где опрос ведется не с 0-го адреса. вот такие китайские приблуды... выкину их нафиг. никто же не будет из-за этого править лоджиг. хотя логично, если в программе есть нескольких битовых переменных с одного адреса регистра из такого поля переменных, то отправлять только один запрос на пакетное чтение... у китайских плк так работает. китаец китайца видит из далека.

  9. #9

    По умолчанию

    понятно, что это не ошибка в лоджике, это у китайца урезан функционал модбаса. вот если в лоджике наравне с обычным чтением регистров данного типа была бы возможность считать значение всего этого регистра в целочисленную переменную, тогда бы вопрос был снят. я думаю, что многие сейчас покупают всякие китайские приблуды(интересная цена вопроса) и сталкиваются с такой проблемой.

    было бы еще так:
    переменная-целочисленная, функция чтения 02, адрес регистра 0, количество бит считывания 16 (1-16). и отправил бы он запрос к примеру 01 02 0000 0010 (считать 16 бит) и перевел бы полученный ответ в целочисленное десятичное число.

  10. #10

    По умолчанию

    Цитата Сообщение от guravlev-2 Посмотреть сообщение
    понятно, что это не ошибка в лоджике, это у китайца урезан функционал модбаса. вот если в лоджике наравне с обычным чтением регистров данного типа была бы возможность считать значение всего этого регистра в целочисленную переменную, тогда бы вопрос был снят. я думаю, что многие сейчас покупают всякие китайские приблуды(интересная цена вопроса) и сталкиваются с такой проблемой.

    было бы еще так:
    переменная-целочисленная, функция чтения 02, адрес регистра 0, количество бит считывания 16 (1-16). и отправил бы он запрос к примеру 01 02 0000 0010 (считать 16 бит) и перевел бы полученный ответ в целочисленное десятичное число.
    Я бы еще проверил через Modbus Poll, если биты входов/выходов там подряд идут, для лоджика можно еще два отдельных слейва создать с одинаковыми адресами но разными регистрами по одному в каждом и проверить такой вариант.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Проблема с записью регистров в ПР200 по протоколу ModBusRTU
    от BRB.Inc в разделе Среда программирования OWEN Logic
    Ответов: 12
    Последнее сообщение: 25.11.2021, 18:16
  2. Ответов: 1
    Последнее сообщение: 30.01.2020, 23:06
  3. Ответов: 1
    Последнее сообщение: 09.05.2019, 08:45
  4. СП300 Modbus TCP неправильная функция чтения входов
    от multitelecom в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 31.05.2018, 06:53
  5. Функция чтения ТРМ 138
    от Саид в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 22.01.2017, 18:48

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •