Добрый день
Подскажите реализована ли и в какой версии прошивки функция записи команд в буфер по Modbus? Не производя при этом запись/редактируя команды в ROM.
Какая должна быть последовательность команд для этого?
Добрый день
Подскажите реализована ли и в какой версии прошивки функция записи команд в буфер по 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, а после завершения операции туда же ставится 0, в каждый момент времени…”
Получается, что можно записывать в регистры 2000-2509 без активации одного из флагов. Этот момент путает.
А функцию записи из оперативного буфера в ПЗУ еще не реализовали?
Чтобы было возможно удаленно записать в устройство определенный набор команд в ПЗУ, вызывать их по одной, а не писать каждую в оперативный буфер.
Она есть изначально. Принцип: отображаем в RAM какой-то банк ROM, (пустой, не пустой) записью “1” в 5200+i редактируем (пишем команду в RAM) и сохраняем записью “0” в 5200+i.
Для этого и сделано, для возможности “клонирования” например.
Да, можно. Но без предварительного поднятия флага - RAM в ROM не сохранить. Подумаю как переписать в вики чтоб понятней было.
Сразу извиняюсь за наивный вопрос, но мне нужен официальный ответ.
Правильно я понимаю, что для того чтобы при одной и той же уставке поменять, например, режим (3 положения) и скорость (3 положения) необходимо минимум 9 команд:
А если нужно что-то большее, то каждый раз придется записывать по 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, но коротких.
Можете проверить.
Все получилось реализовать с помощью скриптов из другой темы: Запись ик команд в модуль wb-mir
40 команд считал и перезаписал.
Работает с Haier AC36ES1ERA