ich habe testweise mal ein Profil für einen Kostal Plenticore plus Wechselrichter begonnen - kann die JSON-Datei aber leider nicht anhängen (Nicht unterstützter Dateityp), darum folgend der Code.
Zugriff per Modbus TCP von TW950.
Ich habe die ersten für mich interessanten Register aufgenommen, das ist aber noch nicht vollständig. Der WR soll auch Sunspec-Kompatibel sein, möglicherweise passt das Profil also auch auf weitere WR, ich habe mich mit dem Thema aber nicht weiter auseinandergesetzt
Cheers,
Christian
Code: Alles auswählen
{
"author": "CS",
"bool_editor_options": 0,
"content_type": "Modbus Application",
"copy_log": "exported 1613990997 308-1\n",
"exported": 1613990997,
"format_version": 0.1,
"hash": "jA0ECQMCOdrVtzuH5vO00mwBdjXdfB6ZBNxgd8HjC3C34zhJEcwWbkv05Kj/Eme3HPeNjMpaArqV7u/FhDtrnAGFA9LB6FZqSaEPamtTJATuhP1l273q9YiB9+ReSpCdBs6h8uDfyCUdylqaPvVDQ/5T++jcMGHDw2/E7Yg=",
"language": "DE",
"last_modified": 1613734347,
"manufacturer": "Kostal",
"max_param_in_request": 20,
"max_timeout": 5000,
"min_polling_time": 5000,
"modbus_type": "TCP",
"product_description": "PV-Wechselrichter",
"product_id": "308-1",
"product_name": "Plenticore",
"product_remark": null,
"registers": [
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 2,
"register_description": null,
"register_flags": "----",
"register_name": "ModbusTCP enable",
"sub_tables": [
{
"bitmask": [
0,
1
],
"coding": "UINT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "ModbusTCP enable",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 0,
"unit": ""
}
],
"width": 16
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 32,
"register_description": null,
"register_flags": "----",
"register_name": "Number of AC phases",
"sub_tables": [
{
"bitmask": null,
"coding": "UINT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Number of AC phases",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 0,
"unit": ""
}
],
"width": 16
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 34,
"register_description": null,
"register_flags": "----",
"register_name": "Number of PC Strings",
"sub_tables": [
{
"bitmask": null,
"coding": "UINT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Number of PC Strings",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 0,
"unit": ""
}
],
"width": 16
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 56,
"register_description": null,
"register_flags": "----",
"register_name": "Inverter State",
"sub_tables": [
{
"bitmask": null,
"coding": "UINT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Inverter State",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 0,
"unit": ""
}
],
"width": 16
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 100,
"register_description": "",
"register_flags": "----",
"register_name": "Total DC Power",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Total DC Power",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "W"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 120,
"register_description": null,
"register_flags": "----",
"register_name": "Isolation Resistance (Ohm)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Isolation Resistance (Ohm)",
"send_as": "float",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "\u2126"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 144,
"register_description": null,
"register_flags": "----",
"register_name": "Work time (s)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "x / 3600",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Work time (s)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "h"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 150,
"register_description": null,
"register_flags": "----",
"register_name": "Actual cos phi",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Actual cos phi",
"send_as": "float",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": ""
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 152,
"register_description": null,
"register_flags": "----",
"register_name": "Grid Frequency (Hz)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Grid Frequency (Hz)",
"send_as": "float",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "Hz"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 258,
"register_description": null,
"register_flags": "----",
"register_name": "Current DC1 (A)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Current DC1 (A)",
"send_as": "float",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "A"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 260,
"register_description": null,
"register_flags": "----",
"register_name": "Power DC1 (W)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Power DC1 (W)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "W"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 266,
"register_description": null,
"register_flags": "----",
"register_name": "Voltage DC1 (V)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Voltage DC1 (V)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "V"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 268,
"register_description": null,
"register_flags": "----",
"register_name": "Current DC2 (A)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Current DC2 (A)",
"send_as": "float",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "A"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 270,
"register_description": null,
"register_flags": "----",
"register_name": "Power DC2 (W)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Power DC2 (W)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "W"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 276,
"register_description": null,
"register_flags": "----",
"register_name": "Voltage DC2 (V)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Voltage DC2 (V)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "V"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 278,
"register_description": null,
"register_flags": "----",
"register_name": "Current DC3 (A)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Current DC3 (A)",
"send_as": "float",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "A"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 280,
"register_description": null,
"register_flags": "----",
"register_name": "Power DC3 (W)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Power DC3 (W)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "W"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 286,
"register_description": null,
"register_flags": "----",
"register_name": "Voltage DC3 (V)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Voltage DC3 (V)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "V"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 320,
"register_description": null,
"register_flags": "----",
"register_name": "Total Yield (Wh)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Total Yield (Wh)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "Wh"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 322,
"register_description": null,
"register_flags": "----",
"register_name": "Daily Yield (Wh)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Daily Yield (Wh)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "Wh"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 324,
"register_description": null,
"register_flags": "----",
"register_name": "Yearly Yield (Wh)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Yearly Yield (Wh)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "Wh"
}
],
"width": 32
},
{
"access": "R (03)",
"block": "holding registers",
"is_enum": 0,
"register_address": 326,
"register_description": null,
"register_flags": "----",
"register_name": "Monythly Yield (Wh)",
"sub_tables": [
{
"bitmask": null,
"coding": "FLOAT",
"default_bitmask": null,
"entries": [
{
"description": "",
"flags": "----",
"formula": "",
"function": "none",
"priority": 0,
"range_from": 0.0,
"range_to": 100.0,
"send_value": ""
}
],
"group_description": null,
"group_flags": null,
"group_name": "Monythly Yield (Wh)",
"send_as": "integer",
"swap_byte": 0,
"swap_double_word": 0,
"swap_word": 1,
"unit": "Wh"
}
],
"width": 32
}
],
"rs485_unit_load": "1",
"version": "0.1"
}