WB-MIR V2 Редактирование RAM

Добрый день

Подскажите реализована ли и в какой версии прошивки функция записи команд в буфер по Modbus? Не производя при этом запись/редактируя команды в ROM.

Какая должна быть последовательность команд для этого?

Да, конечно.

Пример:

#Определим в переменных адрес, порт
export DEV_PORT=/dev/ttyRS485-2
export DEV_ADDR=55

#Читаем содержимое RAM
for i in {2000..2509}
do
 echo "register $i $(modbus_client -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r$i)"
done


#Пишем “команду”просто для примера
for i in {2000..2100}
do
modbus_client  -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x06 -r$i 0x3075 
done

Оно устроено довольно просто, в область регистров 2000-2509 отображается (копируется при необходимости содержимое банка RAM. При “сохранении” после редактирования например копия остается в RAM. Но и без копирования - регистры доступны.

И, кстати: У нас в вики про это непонятно написано? Поправить?

1 лайк

Про редактирование:
“Как и в случае работы с регистрами постоянного хранения, в каждый момент времени можно выполнять только одну операцию только над одним сигналом. Так как во время выполнения любой операции в один из регистров флагов ставится 1, а после завершения операции туда же ставится 0, в каждый момент времени…”
Получается, что можно записывать в регистры 2000-2509 без активации одного из флагов. Этот момент путает.

А функцию записи из оперативного буфера в ПЗУ еще не реализовали?
Чтобы было возможно удаленно записать в устройство определенный набор команд в ПЗУ, вызывать их по одной, а не писать каждую в оперативный буфер.

Она есть изначально. Принцип: отображаем в RAM какой-то банк ROM, (пустой, не пустой) записью “1” в 5200+i редактируем (пишем команду в RAM) и сохраняем записью “0” в 5200+i.
Для этого и сделано, для возможности “клонирования” например.

Да, можно. Но без предварительного поднятия флага - RAM в ROM не сохранить. Подумаю как переписать в вики чтоб понятней было.

1 лайк

Сразу извиняюсь за наивный вопрос, но мне нужен официальный ответ.

Правильно я понимаю, что для того чтобы при одной и той же уставке поменять, например, режим (3 положения) и скорость (3 положения) необходимо минимум 9 команд:

image

А если нужно что-то большее, то каждый раз придется записывать по Modbus регистры 2000-2509 и держать все команды на внешнем контроллере (ПК)?
Получится из IR кода вычленить лишь один нужный параметр? Уставку, режим и т.д.

Вопрос не наивный.
И - да, столько и нужно.
Потому что пульт кондиционера передает все параметры в одной посылке. И поменять ее “часть” - не получится, вместе с данными передается CRC.

Но разве с MIR всего 7 банков?
ЕМНИП больше.

#Длина команды:
for b in {5400..5439}
do
modbus_client --debug -mrtu -pnone -s2 $DEV_PORT -a$DEV_ADDR -t0x03 -r$b | grep Data:
done

То есть - 40 банков. В старых прошивках было 80, но коротких.
Можете проверить.

1 лайк

Все получилось реализовать с помощью скриптов из другой темы: Запись ик команд в модуль wb-mir
40 команд считал и перезаписал.
Работает с Haier AC36ES1ERA

1 лайк