Пытаюсь настроить диммеры без контроллера, запутался в 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 =
Здравствуйте, благодарю за ответ!
разделю кнопки, это не проблема.
Правильно ли я понимаю, что в программе Rilheva в адресах 1000 и 1001 надо выбрать 16ричная запись без проверки и в поле значение задать 0x3006? При этом короткое нажатие на кнопку инвертирует вкл на выкл и выкл на вкл? по умолчанию там сейчас прописано 1000=12297, 10001=36878
а что прописать в адресах 1020 и 1021 для диммирования так и не понял. Вверх - 0x9000+номер целевого регистра, вниз - 0xa000+регистр. Можете помочь с этим?
Это десятичные? Если да - тогда
0х3009 - уменьшить-увеличить регистр 0x07D9. Который устанавливает CCT температуру для 3 и 4 каналов.
36878->0x900e - инкремент holding регистра 0x07de, (“компонент H”)
У меня крайне мало опыта в работе с программой. Обычно пользуюсь Утилита «modbus_client» — Wiren Board
Цель - записать в регистр значение, чтобы оно же из него и читалось…
Всякие лишние преобразования - они, обычно, просто усложняют. Не очень советую ими пользоваться, особенно пока опыта мало.
Перевёл 3006 из 16ричной системы в 10ричную, получилось 12294
записал их в адреса: 1000, 1001
Всё заработало! теперь любая кнопка на первом и на втором входе при коротком нажатии инвертрует выходы.
Режим работы 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. Будет понятнее.