WB-MSW v.3 IR

Здравствуйте! Подключил датчик WB-MSW v.3 (HW 4.8, FW:4.12.0, номер 4266207746) по RS-485 к контроллеру ОВЕН ПЛК110-60 М02.
В программе codesys читаю значения температуры и влажности. Но есть задача управлять кондиционером по IR командам. В соответствии с руководством записываю бит регистр coil 5301 и нажимаю кнопку с пульта, после обнуляю этот бит.
Пытаюсь воспроизвести команду, записав бит coil 5101. Ничего не происходит. Кондиционер не включается, подскажите как диагностировать и настроить работу IR датчика.

Добрый день. После “записи” команды с пульта запишите в 5201 coil “1”.
При этом содержимое первой “команды” - скопируется в RAM и будет доступно в holding регистрах с адреса 2000.
Подробней - в вики WB-MSx_Consumer_IR
И да, проверяйте перед установкой какого-то coil, чтоб coil’ы по адресам
50[01…79]
51[01…79]
52[01…79]
были обнулены, если устройство уже в каком-то режиме (записи, редактирования) то в другой не перейдет.

Здравствуйте!

  1. Записываю “1” в coil 5301.
  2. Нажимаю кнопку с пульта перед датчиком.
  3. Записываю “0” в coil 5301.
  4. Записываю “1” в coil 5201.
  5. Проверяю регистр 2000. Там становится содержимое равным 44 (первоначально ноль).
  6. Но датчик не выходит из режима редактирования.
    В coil 5201 записываю “0”, но он всё равно в единице.
    coil 5101 тоже в единице.
    Соответственно воспроизведения команды не происходит (5002 записываю “1”)
    Подскажите почему не выходит из режима редактирования (coil 5201)?

А чем пользуетесь для работы с устройством? Можете команду привести полностью?
(coil читаем 0x01 пишем 0x05)

В среде codesys 2.3 пользуюсь библиотекой модбас
(https://ftp.owen.ru/CoDeSys23/05_Library/01_Manuals/Modbus.pdf)
Использую как раз блоки MB_RD_COILS (функция 01) и MB_WR_SNG_COIL (функция 05).
После записи “1” в 5201 регистр 2000 сразу становится не нулевым. То есть функция работает.
Также производил обнуление команд из ПЗУ и ОЗУ также работает.

Дело в том что если вы запишете “1” в 5201 (это копирование первого банка команд в RAM) при “1” в каком-то из остальных регистров значение в память скопируется, но поведение будет непредсказуемым.

Похоже это как раз и происходит. Включение/выключения (“обнуление”) питания с датчика поможет вернуть в исходное состояние? Получается мне после записи команды в ПЗУ нужно сразу воспроизводить команду на устройство?

Да, сбрасывает.

Нет, воспроизводить не обязательно. Оно уже сохранено
Алгоритм:
5301 1 - включили запись
Нажимаем кнопку на пульте
5301 0 - выключили запись.

Если нужно посмотреть что записалось тогда поднимаем
5201 1 Скопировали в RAM
просматриваем/меняем при желании holding регистры в 20хх
5201 0 скопировали обратно во флеш.
В общем после записи и ее выключения можно сразу воспроизводить.

Регистр coil 5101 yнаходится постоянно в “1”, не помогает даже отключение по питанию датчика.
И 5201 в единице.
Подскажите как их сбросить?

Проверяем.

export DEV_PORT=/dev/ttyRS485-2
root@wirenboard-ACAX3M6K:~# export DEV_ADDR=55
root@wirenboard-ACAX3M6K:~# modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x05 -r5201 1
Data to write: 0x1
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[37][05][14][51][FF][00][DD][8D]
Waiting for a confirmation...
<37><05><14><51><FF><00><DD><8D>
SUCCESS: written 1 elements!
root@wirenboard-ACAX3M6K:~# modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x01 -r5201  
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[37][01][14][51][00][01][AC][7D]
Waiting for a confirmation...
<37><01><01><01><9F><C0>
SUCCESS: read 1 of elements:
	Data: 0x01 

Записали и прочитали, снимаем питание на 10 секунд.

root@wirenboard-ACAX3M6K:~# modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x01 -r5201
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[37][01][14][51][00][01][AC][7D]
Waiting for a confirmation...
<37><01><01><00><5E><00>
SUCCESS: read 1 of elements:
	Data: 0x00 

Снятие питания - сбрасывает.
Попробуйте записать “1” а потом “0”.

С помощью какого инструмента мне этот код ввести?

Еденицу, а потом ноль пробовал записывать, не помогло.

Использую штатный modbus_client https://wirenboard.com/wiki/Modbus-client

Дайте данные с наклейки (номер, версию FW)

Датчик WB-MSW v.3 (HW 4.8, FW:4.12.0, номер 4266207746)

У меня нет контроллера Wiren Board, только один датчик.
Я подключаюсь к нему по RS-485 от контроллера ОВЕН ПЛК ПЛК110-60 М02.

А на контроллере есть какой-либо консольный клиент для modbus?
Чем вы сейчас работаете с Modbus?
Чтобы команду отправить - результат увидеть.
Ну или к компьютеру его подключите.

Получилось?
Посмотрите тему https://support.wirenboard.com/t/map3h-map3e-ne-mogu-schitat-dannye-iz-segnetiks/5469/29
и используйте ту же программу, будет проще и сразу видно где какое значение.

Здравствуйте! Подключил датчик на прямую через шлюз USB-RS-485. Использовал программу Modbus Poll.
Регистры температуры и влажности читаются. Прверил регистры 5ххх, чтобы были в нуле.
Записал сигнал с пульта в ПЗУ. Записал coil на воспроизведение. Кондиционер не включается.
5201 1 Скопировал в RAM. В ргистрах 2000,2001 вижу не нулевые значения. Но при попытке воспроизвести сигнал кондиционер также не включается. Датчик висит на стене ниже кондиционера, может ему не хватает видимости?