WB-MSW v.3 IR

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

  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 вижу не нулевые значения. Но при попытке воспроизвести сигнал кондиционер также не включается. Датчик висит на стене ниже кондиционера, может ему не хватает видимости?

Так. Уже лучше.
Надо проверить - помещается ли команда, скопируйте в память и посмотрите есть ли 0x0 0x0 (два нуля подряд в конце).
А каким напряжением сейчас питаете? И что за провод?

В 2000 - 46
2001 - 43. Как я понимю в конце двух нулей нет.
Запитан от жил UTP 5-я категории.