Всем добрый день! Удалось решить проблему связи, поэтому выложу все данные здесь, может кому пригодится. Для связи по Modbus, на micro sd карте uponor должен находится файл: U_BMS.TXT. Если его нет, надо создать вручную.
Содержимое файла:
1
19200
even
off
0
0
0
c
// Setting ranges:
// Row 1: BMS Slave address = [1..247]
//
// Row 2: BMS Baud rate = [19200 or 9600]
//
// Row 3: BMS Parity = [even, odd or no]
//
// Row 4: HP integration via BMS = [on or off]
// Example: on = enables dynamic heat curve offset in integrated heat pump, and integrated heat pump defrost state
//
// Row 5: Exclude zone from heat curve offset calculation = [1,2,3,4,5,6,7,8,9,10,11,12, or 0=no channels]
// Select master channels of the zones (lowest numbered channel in the zone) to exclude.
// The zone subchannels follow the state of the master channel.
// Example: 3,5,12 = exludes channels with master channels 3, 5 and 12
//
// Row 6: Bypass zone = [1,2,3,4,5,6,7,8,9,10,11,12 or 0=no channels]
// Select master channels of the zones (lowest numbered channel in the zone) to bypass, MAXIMUM 2 channels.
// The zone subchannels follow the state of the master channel.
// Example: 4,12 = bypasses zones with master channels 4 and 12
//
// Row 7: Ceiling Cooling channel = [1,2,3,4,5,6,7,8,9,10,11,12 or 0=no channels]
// The zone subchannels will NOT follow the state of the master channel.
// Example: 1,4,10 = set ceiling cooling to channels 1, 4 and 10
//
// Row 8: BMS Temperature format = [c or f]
// c = Celsius, or f = Fahrenheit.
U_BMS.TXT (1,4 КБ)
У меня по каким-то непонятным причинам, компьютер подключенный через usb-rs485 переходник находил uponor крайне нестабильно, то читается 5 регистров, то 15, то ничего (хотя конвертер, провода и программа проверенные). Поэтому лучше проверять через wirenboard modbus_client, там как-то стабильнее все находится.
Выкладываю также шаблон для работы:
uponor.json (9,6 КБ)
{
"device_type": "uponor_x148",
"title": "Uponor X-148",
"device": {
"name": "uponor_x148",
"id": "uponor_x148",
"groups": [
{
"title": "Channels",
"id": "channels",
"order": 0
},
{
"title": "Settings",
"id": "settings",
"order": 1
}
],
"channels": [
{
"name": "Actuator 1",
"type": "switch",
"reg_type": "discrete",
"address": 0,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 2",
"type": "switch",
"reg_type": "discrete",
"address": 1,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 3",
"type": "switch",
"reg_type": "discrete",
"address": 2,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 4",
"type": "switch",
"reg_type": "discrete",
"address": 3,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 5",
"type": "switch",
"reg_type": "discrete",
"address": 4,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 6",
"type": "switch",
"reg_type": "discrete",
"address": 5,
"format": "u16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 7",
"type": "switch",
"reg_type": "discrete",
"address": 6,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 8",
"type": "switch",
"reg_type": "discrete",
"address": 7,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 9",
"type": "switch",
"reg_type": "discrete",
"address": 8,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 10",
"type": "switch",
"reg_type": "discrete",
"address": 9,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 11",
"type": "switch",
"reg_type": "discrete",
"address": 10,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Actuator 12",
"type": "switch",
"reg_type": "discrete",
"address": 11,
"format": "s16",
"scale": 1,
"offset": 0
},
{
"name": "Room Temperature 1",
"type": "value",
"reg_type": "input",
"address": 1,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 2",
"type": "value",
"reg_type": "input",
"address": 2,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 3",
"type": "value",
"reg_type": "input",
"address": 3,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 4",
"type": "value",
"reg_type": "input",
"address": 4,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 5",
"type": "value",
"reg_type": "input",
"address": 5,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 6",
"type": "value",
"reg_type": "input",
"address": 6,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 7",
"type": "value",
"reg_type": "input",
"address": 7,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 8",
"type": "value",
"reg_type": "input",
"address": 8,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 9",
"type": "value",
"reg_type": "input",
"address": 9,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 10",
"type": "value",
"reg_type": "input",
"address": 10,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 11",
"type": "value",
"reg_type": "input",
"address": 11,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Temperature 12",
"type": "value",
"reg_type": "input",
"address": 12,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 1",
"type": "value",
"reg_type": "holding_multi",
"address": 0,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 2",
"type": "value",
"reg_type": "holding_multi",
"address": 1,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 3",
"type": "value",
"reg_type": "holding_multi",
"address": 2,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 4",
"type": "value",
"reg_type": "holding_multi",
"address": 3,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 5",
"type": "value",
"reg_type": "holding_multi",
"address": 4,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 6",
"type": "value",
"reg_type": "holding_multi",
"address": 5,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 7",
"type": "value",
"reg_type": "holding_multi",
"address": 6,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 8",
"type": "value",
"reg_type": "holding_multi",
"address": 7,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 9",
"type": "value",
"reg_type": "holding_multi",
"address": 8,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 10",
"type": "value",
"reg_type": "holding_multi",
"address": 9,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 11",
"type": "value",
"reg_type": "holding_multi",
"address": 10,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
},
{
"name": "Room Set Temperature 12",
"type": "value",
"reg_type": "holding_multi",
"address": 11,
"format": "s16",
"scale": 0.1,
"offset": 0.01,
"round_to": 0.1
}
],
"translations": {
"ru": {
"Channels": "Каналы",
"Settings": "Настройки",
"Input 1": "Вход 1",
"Input 1 Counter": "Вход 1 счетчик",
"Relay 1": "Реле 1",
"Input Mode": "Режим входа"
}
}
}
}