ПВУ Royal Clima Soffio Primo

Продолжая обсуждение из темы Приточная система Royal clima RCV-500 + WB:

Подключаю ПВУ от того-же производителя.
Получил таблицу регистров от производителя
Modbus protocol - DC (Primo).pdf (399,4 КБ)

Регистры совпадают, есть лишь пара вопросов по подключению:

  1. одна и таже команда иногда выполняется, иногда ошибку таймаута выдает…
root@wirenboard-AXWLK46C:~# modbus_client_rpc --debug -mrtu -b9600 -pnone -s2 /dev/ttyMOD3 -a7 -t0x06 -r10 5
2024-03-25 18:55:11,073 [DEBUG] Data to write: 0x05 
2024-03-25 18:55:11,075 [DEBUG] [07][06][00][0a][00][05][69][ad]
2024-03-25 18:55:11,079 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2024-03-25 18:55:11,087 [DEBUG] RPC Client -> {'path': '/dev/ttyMOD3', 'baud_rate': 9600, 'parity': 'N', 'data_bits': 8, 'stop_bits': 2, 'response_size': 8, 'format': 'HEX', 'msg': '0706000a000569ad', 'total_timeout': 1000} (1000 timeout ms)
2024-03-25 18:55:12,094 [ERROR] Mqtt-rpc client timeout error, timeout 1000 ms

root@wirenboard-AXWLK46C:~# modbus_client_rpc --debug -mrtu -b9600 -pnone -s2 /dev/ttyMOD3 -a7 -t0x06 -r10 5
2024-03-25 18:59:49,575 [DEBUG] Data to write: 0x05 
2024-03-25 18:59:49,576 [DEBUG] [07][06][00][0a][00][05][69][ad]
2024-03-25 18:59:49,580 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2024-03-25 18:59:49,583 [DEBUG] RPC Client -> {'path': '/dev/ttyMOD3', 'baud_rate': 9600, 'parity': 'N', 'data_bits': 8, 'stop_bits': 2, 'response_size': 8, 'format': 'HEX', 'msg': '0706000a000569ad', 'total_timeout': 1000} (1000 timeout ms)
2024-03-25 18:59:49,834 [DEBUG] RPC Client <- {'response': '0706000a000569ad'}
2024-03-25 18:59:50,836 [DEBUG] Response: 0706000a000569ad
2024-03-25 18:59:50,837 [DEBUG] <07><06><00><0a><00><05><69><ad>
SUCCESS: written 1 element

root@wirenboard-AXWLK46C:~# modbus_client_rpc --debug -mrtu -b9600 -pnone -s1 -o2000 /dev/ttyMOD3 -a7 -t3 -r12       
2024-03-25 20:48:48,340 [DEBUG] [07][03][00][0c][00][01][44][6f]
2024-03-25 20:48:48,344 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2024-03-25 20:48:48,349 [DEBUG] RPC Client -> {'path': '/dev/ttyMOD3', 'baud_rate': 9600, 'parity': 'N', 'data_bits': 8, 'stop_bits': 1, 'response_size': 7, 'format': 'HEX', 'msg': '0703000c0001446f', 'total_timeout': 2000} (2000 timeout ms)
2024-03-25 20:48:48,833 [DEBUG] RPC Client <- {'response': '070302003df195'}
2024-03-25 20:48:49,836 [DEBUG] Response: 070302003df195
2024-03-25 20:48:49,837 [DEBUG] <07><03><02><00><3d><f1><95>
SUCCESS: read 1 elements:
        Data: 0x003d 

Второй вопрос
Как правильно указать чтение регистров?
Например температура читается только при коде функции
0x03 Read Holding Registers
с остальными кодами выдает ошибку

2024-03-25 21:24:46,130 [DEBUG] Error message: Server error
2024-03-25 21:24:46,131 [DEBUG] Error code: -32000
2024-03-25 21:24:46,132 [DEBUG] Error data: Port IO error: Serial protocol error: request timed out

Но тогда в интерфейсе WB эти поля отображаются как поля ввода
2024-03-26_00-31-14
Хотя они Read only

И еще один вопрос:
есть таблица соответствия команд скоростям вентилятора:

Fan speed:
0-stop, 
2-speed 1, 
3-speed 2,
5-speed 3, 
8-speed 4, 
9-speed 5,
10-speed 6, 
11-speed 7, 
12-speed 8,
13-speed 9, 
14-speed 10

Как ввести это в устройство serial WB ?

Добрый день.

2024-03-25 18:55:12,094 [ERROR] Mqtt-rpc client timeout error, timeout 1000 ms

Как я понимаю, за указанное время ожидания ответа от устройства не пришел ответ. Почему за это время не пришел ответ сложно сказать. Надо смотреть на документацию устройства. Может оно медленное. Хотя 1000 мс вроде не мало. Попробуйте увеличить таймаут и посмотрите будет ли повторяться ошибка.

Так а какой у данного параметра тип регистра? Если “Holding Registers”, то он и будет читаться через данную функцию.

Все верно. Так отображается параметр с типом регистра “holding”.

В данной теме есть ответ. Использование enum в шаблонах устройств - #2 от пользователя Viorel

Да, спасибо, таймаут в 2 сек исправил положение

В документации от производителя типы регистров не указаны, методом тыка перепробовав 4 типа
2024-03-26_15-27-33
Выяснил - что только на 0х03 приходит ответ

Да. Сталкивался с таким, что если тип регистра не указан производителем, то это оказывались Holding Registers.

Темплейт собрал и проверил - работает


Рабочий темплейт в теме ниже…
Обидно конечно что ReadOnly каналы выглядят как R/W…
Нельзя ли в канале указать что его отображать надо как ReadOnly?

PS: А как в темплейте в канале указать Единицы измерения ?

Добрый день.

Для этого добавьте в структуру канала данную настройку "readonly" : true, например так:

            {
                "name": "Room temperature",
                "address": "12",
                "reg_type": "holding",
                "readonly" : true,
                "type": "temperature",
                "format": "s16",
                "offset": -40,
                "group": "temperature"
            },

Также в структуре канала добавьте следующую настройку "units" : "ppm", например, так:

            {
                "name": "CO2 value",
                "address": "768",
                "reg_type": "holding",
                "type": "value",
                "units" : "ppm",
                "format": "u16",
                "group": "status"
            },

Попробуйте данные настройки и сообщите о результате.

Спасибо, обе строки помогли.
Причесал шаблон, внес диапазоны настроек в комментарии.
заменил все type на value
так как увидел такую информацию:
2024-03-27_11-01-09


Файл конфига ниже в теме…

Осталась пара вопросов
не нашел где прочитать про составление темплейтов…

1)- как в канале указать множитель?
Канал “Fan running time record”
ведет счет в 0,1 часа…хорошо бы перевести в часы…

  1. Регистр 19 на запрос через ssh выдает Data: 0x0070
root@wirenboard-AXWLK46C:~# modbus_client_rpc -mrtu -b9600 -pnone -s2 -o2000 /dev/ttyMOD3 -a7 -t3 -r19        
SUCCESS: read 1 elements:
        Data: 0x0070

В канале вроде все верно

             {
                "name": "Humidity setting value",
                "address": "19",                
                "reg_type": "holding",
                "type": "value",
				"units" : "%",
                "format": "s16",
                "min": 1,
                "max": 99,
                "group": "settings"
            },

Но на дисплее пульта отображается 7 а не 112
И через пульт позволяет отрегулировать лишь в диапазоне 1-16, чтото я непойму в каких это единицах

в инструкции

19 Humidity setting value 1-99

Все верно. Рекомендуется использовать через параметр "units".
Единственно, вместо "units" : "°C", я бы использовал "units" : "deg C". Отображаться это будет также. Но все-таки, если есть данная единица измерения в списке предлагаемых, то я бы использовал ее.

Это по сути описано в примере конфигурационного файла /etc/wb-mqtt-serial.conf. Вот так. Т.е. добавляете в настройку канала что-то подобное: "scale": 0.5.

Тут, к сожалению, не подскажу. Я бы с пульта позадавал значения с 1 по 16 и смотрел бы, как меняется при этом данный регистр. Если меняется, то посмотрел бы на зависимость.

1 лайк

Вы можете уточнить точную модель вашей ПВУ?

Марка
Royal Climo
Серия приточно-вытяжных установок
Soffio Primo
модели

  • RCS-250-P
  • RCS-350-P
  • RCS-500-P
  • RCS-650-P (моя модель)
  • RCS-1200-P
  • RCS-1600-P

Также аналогичная инструкция и перечень регистров идут к установкам:

  • ENPRO серия EHR-S хххх
  • VENTING серия VHBQi DxxxTGA
  • NOXA серия NXERV xxxxV1

Добавил пару пропущенных регистров
и прописал единицы измерения времени


config-royal-clima-soffio-primo.json (12,3 КБ)

В конфиге уже прописаны enum для каналов:

{
	"name": "Supply fan speed",
	"address": "10",
	"reg_type": "holding",
	"type": "value",
	"enum": [0, 2, 3, 5, 8, 9, 10, 11, 12, 13, 14],
	"enum_titles": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
	"min": 0,
	"max": 14,
	"group": "settings"
},
{
	"name": "Exhaust fan speed",
	"address": "11",
	"reg_type": "holding",
	"type": "value",
	"enum": [0, 2, 3, 5, 8, 9, 10, 11, 12, 13, 14],
	"enum_titles": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
	"min": 0,
	"max": 14,
	"group": "settings"
},
{
	"name": "Filter alarm timer",
	"address": "25",
	"reg_type": "holding",
	"type": "value",
	"enum": [0, 1, 2, 3],
	"enum_titles": ["45 days", "60 days", "90 days", "180 days"],
	"readonly" : true,
	"group": "status"
},

По идее должны заработать при выходе версии wb-2404

Не знаю только как прописать маппинг для таких значений:
2024-03-27_19-42-49

Правильно понимаю, что по регистрам SOFFIO Primo RCS-350-P отличается от вашей SOFFIO Primo RCS-650-P? У нас в вики есть от реализация для SOFFIO Primo RCS-350-P.

Должны совпадать, но поиск гуглом не выдал результата на вики, а только лишь пару тем здесь, причем неутешительных…
Поэтому я и писал шаблон сам с нуля

Ну будет дубль)

Считаю что на WiKi необходимо написать полное название серии совместимых установок…

1 лайк

Можете посмотреть, как реализовано здесь и проверить у себя.

В Вики указаны только те модели с которыми был проверен шаблон. Если вы сможете проверить шаблон из Вики и он у вас будет работать, мы добавим и вашу модель в список.

Согласен, модели добавлять надо после проверки, но вот название марки писать надо…

Собственно поэтому я и не нашел эту статью в вики, так как искал Royal Clima

Спасибо, добавил.

1 лайк