Действие при нажатии (смотрите формулу расчёта ниже) Rilheva

Здравствуйте поддержка!

Пытаюсь настроить диммеры без контроллера, запутался в mapping, прошу помочь.
Имеется:
диммер WB-LED
USB RS-485 от WB
Питание для LED лент и диммеров с одного БП
ПО для настройки - Rilheva Modbus Poll, файл конфигурации с гитхаба
схема собрана, диммер отвечает
Требуется:
два диммера управляются с одной кнопки
Все 4 канала работают параллельно (режим 512)
короткое нажатие на кнопку вход 1 или 2 инвертирует состояние выходов
длинное нажатие на кнопку вход 1 инкремент яркости
длинное нажатие на кнопку вход 2 декремент яркости

Какие значения надо выставить в настройках для достижения этого эффекта?
Adress:
1000 Value = 12294 (инвертирование состояния выходов)
1001 Value = 12294 (инвертирование состояния выходов)
1020 Value =
1021 Value =

Заранее благодарю.

Добрый день.

Работать будет ненадежно, зачем такое?

0x03E8 установить 0x3006 (логично что операция “переключить”, 0x3000 + 0x06)

Не совсем понял. Это (условие “при выключенном”) какая операция из возможных для локального управления?

Опять же “при включенном” - разве проверки доступны?
Диммирование - да, можно. Вверх - 0x9000+номер целевого регистра, вниз - 0xa000+регистр.

Здравствуйте, благодарю за ответ!
разделю кнопки, это не проблема.

Правильно ли я понимаю, что в программе Rilheva в адресах 1000 и 1001 надо выбрать 16ричная запись без проверки и в поле значение задать 0x3006? При этом короткое нажатие на кнопку инвертирует вкл на выкл и выкл на вкл? по умолчанию там сейчас прописано 1000=12297, 10001=36878

а что прописать в адресах 1020 и 1021 для диммирования так и не понял. Вверх - 0x9000+номер целевого регистра, вниз - 0xa000+регистр. Можете помочь с этим?

3006 не работает
0x3006 “пишет иллегальное значение”
Что делать?

Что значит адрес 90? прямое управление каналом, это как? К сожалению в документаци нет описания этих функций

Это десятичные? Если да - тогда
0х3009 - уменьшить-увеличить регистр 0x07D9. Который устанавливает CCT температуру для 3 и 4 каналов.
36878->0x900e - инкремент holding регистра 0x07de, (“компонент H”)

Вот прямая ссылка на описание: Wbincludes:LED Dimmer Modbus Registers — Wiren Board

У меня крайне мало опыта в работе с программой. Обычно пользуюсь Утилита «modbus_client» — Wiren Board
Цель - записать в регистр значение, чтобы оно же из него и читалось…
Всякие лишние преобразования - они, обычно, просто усложняют. Не очень советую ими пользоваться, особенно пока опыта мало.

Перевёл 3006 из 16ричной системы в 10ричную, получилось 12294
записал их в адреса: 1000, 1001
Всё заработало! теперь любая кнопка на первом и на втором входе при коротком нажатии инвертрует выходы.

Прошу вас назвать мне 16ричные или сразу 10тичные цифры для диммирования вверх и вниз.

Для какого регистра? То есть что именно планируете инкрементить/декрементить?

Режим работы 512 (все 4 выходных канала работают параллельно 4*W), предположительно регистр 6 (все 4 канала)

Согласно вашему первому сообщению:
Adress:
инвертирование всех выходов соответствует 3000 + 6 = 3006 => записываем в адрес 1000 Value = 12294
инвертирование всех выходов соответствует 3000 + 6 = 3006 => записываем в адрес 1001 Value = 12294
инкремент яркости сооветствует 9000 + 6 = 9006 => записываем в адрес 1020 = 36870 (в десятичном формате)
декремент яркости сооветствует a000 + 6 = a006 => записываем в адрес 1021 = 40966 (в десятичном формате)

Проверил, всё работает! Спасибо за помощь!

по аналогии можно продолжить эту таблицу для отдельных каналов.

Adress:
инвертирование выхода 1 по кнопке 1 соответствует 3000 + 0 = 3000 => записываем в адрес 1000 Value = 12288
инвертирование выхода 2 по кнопке 2 соответствует 3000 + 1 = 3001 => записываем в адрес 1001 Value = 12289
инвертирование выхода 3 по кнопке 3 соответствует 3000 + 2 = 3002 => записываем в адрес 1002 Value = 12290
инвертирование выхода 4 по кнопке 4 соответствует 3000 + 3 = 3003 => записываем в адрес 1003 Value = 12291
инкремент яркости кнопка 1 долгое нажатие канал 1 сооветствует 9000 + 0 = 9000 => записываем в адрес 1020 = 36864
декремент яркости кнопка 1 долгое нажатие канал 1 сооветствует a000 + 0 = a000 => записываем в адрес 1020 = 40960

основная проблема была в отсутствии информации по режимам работы. То что есть в описании программы rilheva никуда не годится.
Попробую перевести для тех кто использует программу которую вы советуете как основную для винды:

Настройка действий для нажатий

Для настройки действий для типа нажатия нужно в соответствующий регистр записать число, составленное по следующему правилу:

0000 0000 0000 0000

Старшие 4 бита - тип действия:

  • 0 - нет действия*
  • 0b0001 - установить coil регистр в 0* Здесь указана цифра в двоичном коде, в данном случае 1 в hex
  • 0b0010 - установить coil регистр в 1* Здесь 2
  • 0b0011 - переключить coil регистр 0 ↔ 1* тут 3
  • 0b0100 - установить все coil регистры в 0 (выключить все каналы). Доступно начиная с прошивки 3.3.0* тут 4
  • 0b1001 - увеличить значение в holding регистре (увеличивается на 1 за каждое событие от кнопки)* тут 9
  • 0b1010 - уменьшить значение в holding регистре (уменьшается на 1 за каждое событие от кнопки)* тут “a”
  • 0b1011 - уменьшить/увеличить значение в holding регистре. Направление меняется при каждом новом нажатии.* тут “b”

остальные 3 цифры принимаем 0. Вот и получается, что для увеличения яркости нам надо взять шестнадцатеричное число 9000 и прибавить к нему номер регистра который надо увеличить. Для первого канала это 0, то есть имеем 9000. Затем для того чтобы программа поняла что мы от неё хотим надо полученное число перевести в десятичную систему и вставить нужную цифру туда.
Очень заморочено, и я полностью согласен с Андреем, что использовать консольную утилиту гораздо удобнее. Но это подходит только тем у кого стоит линух.
Если не сложно, прошу добавить это описание в вашу вики для программы rilheva. Будет понятнее.

2 лайка

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.