pyFroniusReg 0.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyfroniusreg/froniusreg.py +159 -0
- pyfroniusreg/gen24_primo_symo_inverter_register_map_float.py +172 -0
- pyfroniusreg/gen24_primo_symo_inverter_register_map_float_storage.py +251 -0
- pyfroniusreg/gen24_primo_symo_inverter_register_map_int_sf.py +202 -0
- pyfroniusreg/gen24_primo_symo_inverter_register_map_int_sf_storage.py +281 -0
- pyfroniusreg/gen24_registers_orig.py +67 -0
- pyfroniusreg/smart_meter_register_map_float.py +61 -0
- pyfroniusreg/smart_meter_register_map_int_sf.py +115 -0
- pyfroniusreg/tauro_eco_inverter_register_map_float.py +161 -0
- pyfroniusreg/tauro_eco_inverter_register_map_int_sf.py +193 -0
- pyfroniusreg/tauro_inverter_register_map_float.py +183 -0
- pyfroniusreg/tauro_inverter_register_map_int_sf.py +213 -0
- pyfroniusreg/verto_inverter_register_map_3mppt_float.py +183 -0
- pyfroniusreg/verto_inverter_register_map_3mppt_int_sf.py +213 -0
- pyfroniusreg/verto_inverter_register_map_4mppt_float.py +194 -0
- pyfroniusreg/verto_inverter_register_map_4mppt_int_sf.py +224 -0
- pyfroniusreg-0.2.2.dist-info/METADATA +65 -0
- pyfroniusreg-0.2.2.dist-info/RECORD +20 -0
- pyfroniusreg-0.2.2.dist-info/WHEEL +4 -0
- pyfroniusreg-0.2.2.dist-info/licenses/LICENSE +660 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Python Fronius Registers
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2024, Paul Warren <pwarren@pwarren.id.au>
|
|
4
|
+
# Licensed under AGPLv3, See LICENSE.md for terms
|
|
5
|
+
|
|
6
|
+
from pymodbus.constants import Endian
|
|
7
|
+
from pymodbus.payload import BinaryPayloadDecoder, BinaryPayloadBuilder
|
|
8
|
+
from pymodbus.client.base import ModbusBaseClient
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DataType:
|
|
12
|
+
def __init__(self, width, decode, add):
|
|
13
|
+
width: int
|
|
14
|
+
|
|
15
|
+
self._width = width
|
|
16
|
+
self._decode = decode
|
|
17
|
+
self._add = add
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def width(self):
|
|
21
|
+
return self._width
|
|
22
|
+
|
|
23
|
+
def decode_from_register(self, registers):
|
|
24
|
+
decoder = BinaryPayloadDecoder.fromRegisters(
|
|
25
|
+
registers, byteorder=Endian.BIG, wordorder=Endian.BIG
|
|
26
|
+
)
|
|
27
|
+
return self._decode(decoder)
|
|
28
|
+
|
|
29
|
+
def encode_to_buffer(self, value):
|
|
30
|
+
encoder = BinaryPayloadBuilder(byteorder=Endian.BIG, wordorder=Endian.BIG)
|
|
31
|
+
self._add(encoder, value)
|
|
32
|
+
return encoder.build()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# helper functions for DataType constructors
|
|
36
|
+
def decode_string4(decoder) -> str:
|
|
37
|
+
try:
|
|
38
|
+
return str(decoder.decode_string(4).decode("utf-8"))
|
|
39
|
+
except UnicodeDecodeError:
|
|
40
|
+
return decoder.decode_string(4)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def decode_string8(decoder) -> str:
|
|
44
|
+
try:
|
|
45
|
+
return str(decoder.decode_string(8).decode("utf-8"))
|
|
46
|
+
except UnicodeDecodeError:
|
|
47
|
+
return decoder.decode_string(8)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def decode_string16(decoder) -> str:
|
|
51
|
+
try:
|
|
52
|
+
return str(decoder.decode_string(16).decode("utf-8"))
|
|
53
|
+
except UnicodeDecodeError:
|
|
54
|
+
return decoder.decode_string(16)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def encode_16bit_int(encoder, value) -> int:
|
|
58
|
+
return encoder.add_16bit_int(int(value))
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# The various data types that the fronius inverters use
|
|
62
|
+
string4 = DataType(4, decode_string4, BinaryPayloadBuilder.add_string)
|
|
63
|
+
string8 = DataType(8, decode_string8, BinaryPayloadBuilder.add_string)
|
|
64
|
+
string16 = DataType(16, decode_string16, BinaryPayloadBuilder.add_string)
|
|
65
|
+
|
|
66
|
+
int16 = DataType(1, BinaryPayloadDecoder.decode_16bit_int, encode_16bit_int)
|
|
67
|
+
uint16 = DataType(1, BinaryPayloadDecoder.decode_16bit_uint, encode_16bit_int)
|
|
68
|
+
bitfield16 = DataType(1, BinaryPayloadDecoder.decode_16bit_uint, encode_16bit_int)
|
|
69
|
+
sunssf = DataType(1, BinaryPayloadDecoder.decode_16bit_int, encode_16bit_int)
|
|
70
|
+
pad = DataType(1, BinaryPayloadDecoder.decode_16bit_uint, encode_16bit_int)
|
|
71
|
+
enum16 = DataType(1, BinaryPayloadDecoder.decode_16bit_uint, encode_16bit_int)
|
|
72
|
+
count = DataType(1, BinaryPayloadDecoder.decode_16bit_uint, encode_16bit_int)
|
|
73
|
+
|
|
74
|
+
int32 = DataType(2, BinaryPayloadDecoder.decode_32bit_int, BinaryPayloadBuilder.add_32bit_int)
|
|
75
|
+
acc32 = DataType(2, BinaryPayloadDecoder.decode_32bit_int, BinaryPayloadBuilder.add_32bit_int)
|
|
76
|
+
|
|
77
|
+
uint32 = DataType(2, BinaryPayloadDecoder.decode_32bit_uint, BinaryPayloadBuilder.add_32bit_uint)
|
|
78
|
+
float32 = DataType(
|
|
79
|
+
2, BinaryPayloadDecoder.decode_32bit_float, BinaryPayloadBuilder.add_32bit_float
|
|
80
|
+
)
|
|
81
|
+
bitfield32 = DataType(
|
|
82
|
+
2, BinaryPayloadDecoder.decode_32bit_float, BinaryPayloadBuilder.add_32bit_float
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
uint64 = DataType(4, BinaryPayloadDecoder.decode_64bit_uint, BinaryPayloadBuilder.add_64bit_uint)
|
|
86
|
+
acc64 = DataType(4, BinaryPayloadDecoder.decode_64bit_uint, BinaryPayloadBuilder.add_64bit_uint)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class RegisterReadError(Exception):
|
|
90
|
+
pass
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Fronius modbus register object.
|
|
94
|
+
#
|
|
95
|
+
# the 'spreadsheet' refers to the various spreadsheets in the 'gen24-modbus-api-external-docs.zip'
|
|
96
|
+
# file, available by going to https://www.fronius.com/en/photovoltaics/downloads and searching for
|
|
97
|
+
# 'gen24 modbus'
|
|
98
|
+
#
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# Constructor parameters:
|
|
102
|
+
# address: address as specified in the spreadsheet
|
|
103
|
+
# datatype: One of the above datatypes, as specified for the address in the spreadsheet
|
|
104
|
+
# unit: the modbus unit, either '1' for the fronius inverter or 200 for the attached fronius
|
|
105
|
+
# smart meter.
|
|
106
|
+
# description: free text to describe the register's purpose
|
|
107
|
+
class FroniusReg:
|
|
108
|
+
def __init__(self, address, datatype, unit, description):
|
|
109
|
+
self.address = address
|
|
110
|
+
self.datatype = datatype
|
|
111
|
+
self.unit = unit
|
|
112
|
+
self.description = description
|
|
113
|
+
|
|
114
|
+
def get(self, modbus_client):
|
|
115
|
+
return self.__get_register_value(modbus_client)
|
|
116
|
+
|
|
117
|
+
def set(self, modbus_client, value):
|
|
118
|
+
return self._set_register_value(modbus_client, value)
|
|
119
|
+
|
|
120
|
+
def __get_register_value(self, modbus_client):
|
|
121
|
+
modbus_value = modbus_client.read_holding_registers(
|
|
122
|
+
self.address - 1, self.datatype.width, slave=self.unit
|
|
123
|
+
)
|
|
124
|
+
if modbus_value.isError():
|
|
125
|
+
raise RegisterReadError(
|
|
126
|
+
"Unable to read from Fronius Register: %d, %s\n%s"
|
|
127
|
+
% (self.address, self.description, modbus_value)
|
|
128
|
+
)
|
|
129
|
+
if modbus_value is None:
|
|
130
|
+
raise RegisterReadError("It's NONE!")
|
|
131
|
+
return self.datatype.decode_from_register(modbus_value.registers)
|
|
132
|
+
|
|
133
|
+
def _set_register_value(self, modbus_client, value):
|
|
134
|
+
modbus_value = modbus_client.write_registers(
|
|
135
|
+
self.address - 1,
|
|
136
|
+
self.datatype.encode_to_buffer(value),
|
|
137
|
+
slave=self.unit,
|
|
138
|
+
skip_encode=True,
|
|
139
|
+
)
|
|
140
|
+
return modbus_value
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
class ScaledFroniusReg:
|
|
144
|
+
def __init__(self, value_register: FroniusReg, scale_register: FroniusReg):
|
|
145
|
+
"A nicer way of dealing with scaled registers"
|
|
146
|
+
self.value_register = value_register
|
|
147
|
+
self.scale_register = scale_register
|
|
148
|
+
|
|
149
|
+
def get(self, modbus_client: ModbusBaseClient) -> float:
|
|
150
|
+
"Return the value_register's value, scaled by scale_register."
|
|
151
|
+
return self.value_register.get(modbus_client) * 10 ** self.scale_register.get(
|
|
152
|
+
modbus_client
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
def set(self, modbus_client: ModbusBaseClient, value: [int, float, str]):
|
|
156
|
+
return self.value_register.set(
|
|
157
|
+
modbus_client,
|
|
158
|
+
value / 10 ** self.scale_register.get(modbus_client),
|
|
159
|
+
)
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
from pyfroniusreg import froniusreg
|
|
2
|
+
|
|
3
|
+
SID = froniusreg.FroniusReg(40001, froniusreg.uint32, 1, """Well-known value. Uniquely identifies this as a SunSpec Modbus Map""")
|
|
4
|
+
ID = froniusreg.FroniusReg(40003, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model common (1)""")
|
|
5
|
+
L = froniusreg.FroniusReg(40004, froniusreg.uint16, 1, """Length of sunspec model common (1)""")
|
|
6
|
+
Mn = froniusreg.FroniusReg(40005, froniusreg.string16, 1, """Manufacturer""")
|
|
7
|
+
Md = froniusreg.FroniusReg(40021, froniusreg.string16, 1, """Device""")
|
|
8
|
+
Vr = froniusreg.FroniusReg(40045, froniusreg.string8, 1, """SW version of inverter""")
|
|
9
|
+
SN = froniusreg.FroniusReg(40053, froniusreg.string16, 1, """Serialnumber of the inverter""")
|
|
10
|
+
DA = froniusreg.FroniusReg(40069, froniusreg.uint16, 1, """Modbus Device Address""")
|
|
11
|
+
ID = froniusreg.FroniusReg(40070, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model inverter (11x)""")
|
|
12
|
+
L = froniusreg.FroniusReg(40071, froniusreg.uint16, 1, """Length of sunspec model inverter (11x)""")
|
|
13
|
+
A = froniusreg.FroniusReg(40072, froniusreg.float32, 1, """AC Current""")
|
|
14
|
+
AphA = froniusreg.FroniusReg(40074, froniusreg.float32, 1, """Phase A Current""")
|
|
15
|
+
AphB = froniusreg.FroniusReg(40076, froniusreg.float32, 1, """Phase B Current""")
|
|
16
|
+
AphC = froniusreg.FroniusReg(40078, froniusreg.float32, 1, """Phase C Current""")
|
|
17
|
+
PPVphAB = froniusreg.FroniusReg(40080, froniusreg.float32, 1, """Phase Voltage AB""")
|
|
18
|
+
PPVphBC = froniusreg.FroniusReg(40082, froniusreg.float32, 1, """Phase Voltage BC""")
|
|
19
|
+
PPVphCA = froniusreg.FroniusReg(40084, froniusreg.float32, 1, """Phase Voltage CA""")
|
|
20
|
+
PhVphA = froniusreg.FroniusReg(40086, froniusreg.float32, 1, """Phase Voltage AN""")
|
|
21
|
+
PhVphB = froniusreg.FroniusReg(40088, froniusreg.float32, 1, """Phase Voltage BN""")
|
|
22
|
+
PhVphC = froniusreg.FroniusReg(40090, froniusreg.float32, 1, """Phase Voltage CN""")
|
|
23
|
+
W = froniusreg.FroniusReg(40092, froniusreg.float32, 1, """AC Power""")
|
|
24
|
+
Hz = froniusreg.FroniusReg(40094, froniusreg.float32, 1, """Line Frequency""")
|
|
25
|
+
VA = froniusreg.FroniusReg(40096, froniusreg.float32, 1, """AC Apparent Power""")
|
|
26
|
+
VAr = froniusreg.FroniusReg(40098, froniusreg.float32, 1, """AC Reactive Power""")
|
|
27
|
+
PF = froniusreg.FroniusReg(40100, froniusreg.float32, 1, """AC Power Factor""")
|
|
28
|
+
WH = froniusreg.FroniusReg(40102, froniusreg.float32, 1, """AC Energy""")
|
|
29
|
+
DCA = froniusreg.FroniusReg(40104, froniusreg.float32, 1, """DC Current""")
|
|
30
|
+
DCV = froniusreg.FroniusReg(40106, froniusreg.float32, 1, """DC Voltage""")
|
|
31
|
+
DCW = froniusreg.FroniusReg(40108, froniusreg.float32, 1, """DC Power""")
|
|
32
|
+
TmpCab = froniusreg.FroniusReg(40110, froniusreg.float32, 1, """Cabinet Temperature""")
|
|
33
|
+
St = froniusreg.FroniusReg(40118, froniusreg.enum16, 1, """Enumerated value. Operating state""")
|
|
34
|
+
StVnd = froniusreg.FroniusReg(40119, froniusreg.enum16, 1, """Vendor specific operating state code""")
|
|
35
|
+
Evt1 = froniusreg.FroniusReg(40120, froniusreg.bitfield32, 1, """Bitmask value. Event fields""")
|
|
36
|
+
Evt2 = froniusreg.FroniusReg(40122, froniusreg.bitfield32, 1, """Reserved for future use""")
|
|
37
|
+
EvtVnd1 = froniusreg.FroniusReg(40124, froniusreg.bitfield32, 1, """Vendor defined events""")
|
|
38
|
+
EvtVnd2 = froniusreg.FroniusReg(40126, froniusreg.bitfield32, 1, """Vendor defined events""")
|
|
39
|
+
ID = froniusreg.FroniusReg(40132, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model nameplate (120)""")
|
|
40
|
+
L = froniusreg.FroniusReg(40133, froniusreg.uint16, 1, """Length of sunspec model nameplate (120)""")
|
|
41
|
+
DERTyp = froniusreg.FroniusReg(40134, froniusreg.enum16, 1, """Type of DER device. Default value is 4 to indicate PV device.""")
|
|
42
|
+
WRtg = froniusreg.FroniusReg(40135, froniusreg.uint16, 1, """Continuous power output capability of the inverter.""")
|
|
43
|
+
WRtg_SF = froniusreg.FroniusReg(40136, froniusreg.sunssf, 1, """Scale factor""")
|
|
44
|
+
VARtg = froniusreg.FroniusReg(40137, froniusreg.uint16, 1, """Continuous Volt-Ampere capability of the inverter.""")
|
|
45
|
+
VARtg_SF = froniusreg.FroniusReg(40138, froniusreg.sunssf, 1, """Scale factor""")
|
|
46
|
+
VArRtgQ1 = froniusreg.FroniusReg(40139, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 1.""")
|
|
47
|
+
VArRtgQ2 = froniusreg.FroniusReg(40140, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 2.""")
|
|
48
|
+
VArRtgQ3 = froniusreg.FroniusReg(40141, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 3.""")
|
|
49
|
+
VArRtgQ4 = froniusreg.FroniusReg(40142, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 4.""")
|
|
50
|
+
VArRtg_SF = froniusreg.FroniusReg(40143, froniusreg.sunssf, 1, """Scale factor""")
|
|
51
|
+
ARtg = froniusreg.FroniusReg(40144, froniusreg.uint16, 1, """Maximum RMS AC current level capability of the inverter.""")
|
|
52
|
+
ARtg_SF = froniusreg.FroniusReg(40145, froniusreg.sunssf, 1, """Scale factor""")
|
|
53
|
+
PFRtgQ1 = froniusreg.FroniusReg(40146, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 1.""")
|
|
54
|
+
PFRtgQ2 = froniusreg.FroniusReg(40147, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 2.""")
|
|
55
|
+
PFRtgQ3 = froniusreg.FroniusReg(40148, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 3.""")
|
|
56
|
+
PFRtgQ4 = froniusreg.FroniusReg(40149, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 4.""")
|
|
57
|
+
PFRtg_SF = froniusreg.FroniusReg(40150, froniusreg.sunssf, 1, """Scale factor""")
|
|
58
|
+
Pad = froniusreg.FroniusReg(40159, froniusreg.pad, 1, """Pad register.""")
|
|
59
|
+
ID = froniusreg.FroniusReg(40160, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model settings (121)""")
|
|
60
|
+
L = froniusreg.FroniusReg(40161, froniusreg.uint16, 1, """Length of sunspec model settings (121)""")
|
|
61
|
+
WMax = froniusreg.FroniusReg(40162, froniusreg.uint16, 1, """Setting for maximum power output. Default to WRtg.""")
|
|
62
|
+
VRef = froniusreg.FroniusReg(40163, froniusreg.uint16, 1, """Voltage at the PCC.""")
|
|
63
|
+
VRefOfs = froniusreg.FroniusReg(40164, froniusreg.int16, 1, """Offset from PCC to inverter.""")
|
|
64
|
+
VAMax = froniusreg.FroniusReg(40167, froniusreg.uint16, 1, """Setpoint for maximum apparent power. Default to VARtg.""")
|
|
65
|
+
VArMaxQ1 = froniusreg.FroniusReg(40168, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 1. Default to VArRtgQ1.""")
|
|
66
|
+
VArMaxQ2 = froniusreg.FroniusReg(40169, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 2. Default to VArRtgQ2.""")
|
|
67
|
+
VArMaxQ3 = froniusreg.FroniusReg(40170, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 3. Default to VArRtgQ3.""")
|
|
68
|
+
VArMaxQ4 = froniusreg.FroniusReg(40171, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 4. Default to VArRtgQ4.""")
|
|
69
|
+
PFMinQ1 = froniusreg.FroniusReg(40173, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 1. Default to PFRtgQ1.""")
|
|
70
|
+
PFMinQ2 = froniusreg.FroniusReg(40174, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 2. Default to PFRtgQ2.""")
|
|
71
|
+
PFMinQ3 = froniusreg.FroniusReg(40175, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 3. Default to PFRtgQ3.""")
|
|
72
|
+
PFMinQ4 = froniusreg.FroniusReg(40176, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 4. Default to PFRtgQ4.""")
|
|
73
|
+
WMax_SF = froniusreg.FroniusReg(40182, froniusreg.sunssf, 1, """Scale factor for real power.""")
|
|
74
|
+
VRef_SF = froniusreg.FroniusReg(40183, froniusreg.sunssf, 1, """Scale factor for voltage at the PCC.""")
|
|
75
|
+
VRefOfs_SF = froniusreg.FroniusReg(40184, froniusreg.sunssf, 1, """Scale factor for offset voltage.""")
|
|
76
|
+
VMinMax_SF = froniusreg.FroniusReg(40185, froniusreg.sunssf, 1, """Scale factor for min/max voltages.""")
|
|
77
|
+
VAMax_SF = froniusreg.FroniusReg(40186, froniusreg.sunssf, 1, """Scale factor for apparent power.""")
|
|
78
|
+
VArMax_SF = froniusreg.FroniusReg(40187, froniusreg.sunssf, 1, """Scale factor for reactive power.""")
|
|
79
|
+
PFMin_SF = froniusreg.FroniusReg(40189, froniusreg.sunssf, 1, """Scale factor for minimum power factor.""")
|
|
80
|
+
ID = froniusreg.FroniusReg(40192, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model status (122)""")
|
|
81
|
+
L = froniusreg.FroniusReg(40193, froniusreg.uint16, 1, """Length of sunspec model status (122)""")
|
|
82
|
+
PVConn = froniusreg.FroniusReg(40194, froniusreg.bitfield16, 1, """PV inverter present/available status. Enumerated value.""")
|
|
83
|
+
StorConn = froniusreg.FroniusReg(40195, froniusreg.bitfield16, 1, """Storage inverter present/available status. Enumerated value.""")
|
|
84
|
+
ECPConn = froniusreg.FroniusReg(40196, froniusreg.bitfield16, 1, """ECP connection status: disconnected=0 connected=1.""")
|
|
85
|
+
ActWh = froniusreg.FroniusReg(40197, froniusreg.acc64, 1, """AC lifetime active (real) energy output.""")
|
|
86
|
+
StActCtl = froniusreg.FroniusReg(40227, froniusreg.bitfield32, 1, """Bit Mask indicating which inverter controls are currently active.""")
|
|
87
|
+
TmSrc = froniusreg.FroniusReg(40229, froniusreg.string4, 1, """Source of time synchronization.""")
|
|
88
|
+
Tms = froniusreg.FroniusReg(40233, froniusreg.uint32, 1, """Seconds since 01-01-2000 00:00 UTC""")
|
|
89
|
+
Ris = froniusreg.FroniusReg(40236, froniusreg.uint16, 1, """Isolation resistance.""")
|
|
90
|
+
Ris_SF = froniusreg.FroniusReg(40237, froniusreg.sunssf, 1, """Scale factor for isolation resistance.""")
|
|
91
|
+
ID = froniusreg.FroniusReg(40238, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model controls (123)""")
|
|
92
|
+
L = froniusreg.FroniusReg(40239, froniusreg.uint16, 1, """Length of sunspec model controls (123)""")
|
|
93
|
+
Conn_WinTms = froniusreg.FroniusReg(40240, froniusreg.uint16, 1, """Time window for connect/disconnect.""")
|
|
94
|
+
Conn_RvrtTms = froniusreg.FroniusReg(40241, froniusreg.uint16, 1, """Timeout period for connect/disconnect.""")
|
|
95
|
+
Conn = froniusreg.FroniusReg(40242, froniusreg.enum16, 1, """Enumerated valued. Connection control.""")
|
|
96
|
+
WMaxLimPct = froniusreg.FroniusReg(40243, froniusreg.uint16, 1, """Set power output to specified level.""")
|
|
97
|
+
WMaxLimPct_WinTms = froniusreg.FroniusReg(40244, froniusreg.uint16, 1, """Time window for power limit change.""")
|
|
98
|
+
WMaxLimPct_RvrtTms = froniusreg.FroniusReg(40245, froniusreg.uint16, 1, """Timeout period for power limit.""")
|
|
99
|
+
WMaxLimPct_RmpTms = froniusreg.FroniusReg(40246, froniusreg.uint16, 1, """Ramp time for moving from current setpoint to new setpoint.""")
|
|
100
|
+
WMaxLim_Ena = froniusreg.FroniusReg(40247, froniusreg.enum16, 1, """Enumerated valued. Throttle enable/disable control.""")
|
|
101
|
+
OutPFSet = froniusreg.FroniusReg(40248, froniusreg.int16, 1, """Set power factor to specific value - cosine of angle.""")
|
|
102
|
+
OutPFSet_WinTms = froniusreg.FroniusReg(40249, froniusreg.uint16, 1, """Time window for power factor change.""")
|
|
103
|
+
OutPFSet_RvrtTms = froniusreg.FroniusReg(40250, froniusreg.uint16, 1, """Timeout period for power factor.""")
|
|
104
|
+
OutPFSet_RmpTms = froniusreg.FroniusReg(40251, froniusreg.uint16, 1, """Ramp time for moving from current setpoint to new setpoint.""")
|
|
105
|
+
OutPFSet_Ena = froniusreg.FroniusReg(40252, froniusreg.enum16, 1, """Enumerated valued. Fixed power factor enable/disable control.""")
|
|
106
|
+
VArMaxPct = froniusreg.FroniusReg(40254, froniusreg.int16, 1, """Reactive power in percent of VArMax.""")
|
|
107
|
+
VArPct_WinTms = froniusreg.FroniusReg(40256, froniusreg.uint16, 1, """Time window for VAR limit change.""")
|
|
108
|
+
VArPct_RvrtTms = froniusreg.FroniusReg(40257, froniusreg.uint16, 1, """Timeout period for VAR limit.""")
|
|
109
|
+
VArPct_RmpTms = froniusreg.FroniusReg(40258, froniusreg.uint16, 1, """Ramp time for moving from current setpoint to new setpoint.""")
|
|
110
|
+
VArPct_Mod = froniusreg.FroniusReg(40259, froniusreg.enum16, 1, """Enumerated value. VAR percent limit mode.""")
|
|
111
|
+
VArPct_Ena = froniusreg.FroniusReg(40260, froniusreg.enum16, 1, """Enumerated valued. Percent limit VAr enable/disable control.""")
|
|
112
|
+
WMaxLimPct_SF = froniusreg.FroniusReg(40261, froniusreg.sunssf, 1, """Scale factor for power output percent.""")
|
|
113
|
+
OutPFSet_SF = froniusreg.FroniusReg(40262, froniusreg.sunssf, 1, """Scale factor for power factor.""")
|
|
114
|
+
VArPct_SF = froniusreg.FroniusReg(40263, froniusreg.sunssf, 1, """Scale factor for reactive power percent.""")
|
|
115
|
+
ID = froniusreg.FroniusReg(40264, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model mppt (160)""")
|
|
116
|
+
L = froniusreg.FroniusReg(40265, froniusreg.uint16, 1, """Length of sunspec model mppt (160)""")
|
|
117
|
+
DCA_SF = froniusreg.FroniusReg(40266, froniusreg.sunssf, 1, """Current Scale Factor""")
|
|
118
|
+
DCV_SF = froniusreg.FroniusReg(40267, froniusreg.sunssf, 1, """Voltage Scale Factor""")
|
|
119
|
+
DCW_SF = froniusreg.FroniusReg(40268, froniusreg.sunssf, 1, """Power Scale Factor""")
|
|
120
|
+
DCWH_SF = froniusreg.FroniusReg(40269, froniusreg.sunssf, 1, """Energy Scale Factor""")
|
|
121
|
+
N = froniusreg.FroniusReg(40272, froniusreg.count, 1, """Number of Modules""")
|
|
122
|
+
module_1_ID = froniusreg.FroniusReg(40274, froniusreg.uint16, 1, """Input ID""")
|
|
123
|
+
module_1_IDStr = froniusreg.FroniusReg(40275, froniusreg.string8, 1, """Input ID Sting""")
|
|
124
|
+
module_1_DCA = froniusreg.FroniusReg(40283, froniusreg.uint16, 1, """DC Current""")
|
|
125
|
+
module_1_DCV = froniusreg.FroniusReg(40284, froniusreg.uint16, 1, """DC Voltage""")
|
|
126
|
+
module_1_DCW = froniusreg.FroniusReg(40285, froniusreg.uint16, 1, """DC Power""")
|
|
127
|
+
module_1_DCWH = froniusreg.FroniusReg(40286, froniusreg.acc32, 1, """Lifetime Energy""")
|
|
128
|
+
module_1_Tms = froniusreg.FroniusReg(40288, froniusreg.uint32, 1, """Timestamp""")
|
|
129
|
+
module_2_ID = froniusreg.FroniusReg(40294, froniusreg.uint16, 1, """Input ID""")
|
|
130
|
+
module_2_IDStr = froniusreg.FroniusReg(40295, froniusreg.string8, 1, """Input ID Sting""")
|
|
131
|
+
module_2_DCA = froniusreg.FroniusReg(40303, froniusreg.uint16, 1, """DC Current""")
|
|
132
|
+
module_2_DCV = froniusreg.FroniusReg(40304, froniusreg.uint16, 1, """DC Voltage""")
|
|
133
|
+
module_2_DCW = froniusreg.FroniusReg(40305, froniusreg.uint16, 1, """DC Power""")
|
|
134
|
+
module_2_DCWH = froniusreg.FroniusReg(40306, froniusreg.acc32, 1, """Lifetime Energy""")
|
|
135
|
+
module_2_Tms = froniusreg.FroniusReg(40308, froniusreg.uint32, 1, """Timestamp""")
|
|
136
|
+
ID = froniusreg.FroniusReg(40314, froniusreg.uint16, 1, """Identifies this as End block""")
|
|
137
|
+
L = froniusreg.FroniusReg(40315, froniusreg.uint16, 1, """Length of model block""")
|
|
138
|
+
scaledWRtg = froniusreg.ScaledFroniusReg(WRtg, WRtg_SF)
|
|
139
|
+
scaledVARtg = froniusreg.ScaledFroniusReg(VARtg, VARtg_SF)
|
|
140
|
+
scaledVArRtgQ1 = froniusreg.ScaledFroniusReg(VArRtgQ1, VArRtg_SF)
|
|
141
|
+
scaledVArRtgQ2 = froniusreg.ScaledFroniusReg(VArRtgQ2, VArRtg_SF)
|
|
142
|
+
scaledVArRtgQ3 = froniusreg.ScaledFroniusReg(VArRtgQ3, VArRtg_SF)
|
|
143
|
+
scaledVArRtgQ4 = froniusreg.ScaledFroniusReg(VArRtgQ4, VArRtg_SF)
|
|
144
|
+
scaledARtg = froniusreg.ScaledFroniusReg(ARtg, ARtg_SF)
|
|
145
|
+
scaledPFRtgQ1 = froniusreg.ScaledFroniusReg(PFRtgQ1, PFRtg_SF)
|
|
146
|
+
scaledPFRtgQ2 = froniusreg.ScaledFroniusReg(PFRtgQ2, PFRtg_SF)
|
|
147
|
+
scaledPFRtgQ3 = froniusreg.ScaledFroniusReg(PFRtgQ3, PFRtg_SF)
|
|
148
|
+
scaledPFRtgQ4 = froniusreg.ScaledFroniusReg(PFRtgQ4, PFRtg_SF)
|
|
149
|
+
scaledWMax = froniusreg.ScaledFroniusReg(WMax, WMax_SF)
|
|
150
|
+
scaledVRef = froniusreg.ScaledFroniusReg(VRef, VRef_SF)
|
|
151
|
+
scaledVRefOfs = froniusreg.ScaledFroniusReg(VRefOfs, VRefOfs_SF)
|
|
152
|
+
scaledVAMax = froniusreg.ScaledFroniusReg(VAMax, VAMax_SF)
|
|
153
|
+
scaledVArMaxQ1 = froniusreg.ScaledFroniusReg(VArMaxQ1, VArMax_SF)
|
|
154
|
+
scaledVArMaxQ2 = froniusreg.ScaledFroniusReg(VArMaxQ2, VArMax_SF)
|
|
155
|
+
scaledVArMaxQ3 = froniusreg.ScaledFroniusReg(VArMaxQ3, VArMax_SF)
|
|
156
|
+
scaledVArMaxQ4 = froniusreg.ScaledFroniusReg(VArMaxQ4, VArMax_SF)
|
|
157
|
+
scaledPFMinQ1 = froniusreg.ScaledFroniusReg(PFMinQ1, PFMin_SF)
|
|
158
|
+
scaledPFMinQ2 = froniusreg.ScaledFroniusReg(PFMinQ2, PFMin_SF)
|
|
159
|
+
scaledPFMinQ3 = froniusreg.ScaledFroniusReg(PFMinQ3, PFMin_SF)
|
|
160
|
+
scaledPFMinQ4 = froniusreg.ScaledFroniusReg(PFMinQ4, PFMin_SF)
|
|
161
|
+
scaledRis = froniusreg.ScaledFroniusReg(Ris, Ris_SF)
|
|
162
|
+
scaledWMaxLimPct = froniusreg.ScaledFroniusReg(WMaxLimPct, WMaxLimPct_SF)
|
|
163
|
+
scaledOutPFSet = froniusreg.ScaledFroniusReg(OutPFSet, OutPFSet_SF)
|
|
164
|
+
scaledVArMaxPct = froniusreg.ScaledFroniusReg(VArMaxPct, VArPct_SF)
|
|
165
|
+
scaledmodule_1_DCA = froniusreg.ScaledFroniusReg(module_1_DCA, DCA_SF)
|
|
166
|
+
scaledmodule_1_DCV = froniusreg.ScaledFroniusReg(module_1_DCV, DCV_SF)
|
|
167
|
+
scaledmodule_1_DCW = froniusreg.ScaledFroniusReg(module_1_DCW, DCW_SF)
|
|
168
|
+
scaledmodule_1_DCWH = froniusreg.ScaledFroniusReg(module_1_DCWH, DCWH_SF)
|
|
169
|
+
scaledmodule_2_DCA = froniusreg.ScaledFroniusReg(module_2_DCA, DCA_SF)
|
|
170
|
+
scaledmodule_2_DCV = froniusreg.ScaledFroniusReg(module_2_DCV, DCV_SF)
|
|
171
|
+
scaledmodule_2_DCW = froniusreg.ScaledFroniusReg(module_2_DCW, DCW_SF)
|
|
172
|
+
scaledmodule_2_DCWH = froniusreg.ScaledFroniusReg(module_2_DCWH, DCWH_SF)
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
from pyfroniusreg import froniusreg
|
|
2
|
+
|
|
3
|
+
SID = froniusreg.FroniusReg(40001, froniusreg.uint32, 1, """Well-known value. Uniquely identifies this as a SunSpec Modbus Map""")
|
|
4
|
+
ID = froniusreg.FroniusReg(40003, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model common (1)""")
|
|
5
|
+
L = froniusreg.FroniusReg(40004, froniusreg.uint16, 1, """Length of sunspec model common (1)""")
|
|
6
|
+
Mn = froniusreg.FroniusReg(40005, froniusreg.string16, 1, """Manufacturer""")
|
|
7
|
+
Md = froniusreg.FroniusReg(40021, froniusreg.string16, 1, """Device""")
|
|
8
|
+
Vr = froniusreg.FroniusReg(40045, froniusreg.string8, 1, """SW version of inverter""")
|
|
9
|
+
SN = froniusreg.FroniusReg(40053, froniusreg.string16, 1, """Serialnumber of the inverter""")
|
|
10
|
+
DA = froniusreg.FroniusReg(40069, froniusreg.uint16, 1, """Modbus Device Address""")
|
|
11
|
+
ID = froniusreg.FroniusReg(40070, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model inverter (11x)""")
|
|
12
|
+
L = froniusreg.FroniusReg(40071, froniusreg.uint16, 1, """Length of sunspec model inverter (11x)""")
|
|
13
|
+
A = froniusreg.FroniusReg(40072, froniusreg.float32, 1, """AC Current""")
|
|
14
|
+
AphA = froniusreg.FroniusReg(40074, froniusreg.float32, 1, """Phase A Current""")
|
|
15
|
+
AphB = froniusreg.FroniusReg(40076, froniusreg.float32, 1, """Phase B Current""")
|
|
16
|
+
AphC = froniusreg.FroniusReg(40078, froniusreg.float32, 1, """Phase C Current""")
|
|
17
|
+
PPVphAB = froniusreg.FroniusReg(40080, froniusreg.float32, 1, """Phase Voltage AB""")
|
|
18
|
+
PPVphBC = froniusreg.FroniusReg(40082, froniusreg.float32, 1, """Phase Voltage BC""")
|
|
19
|
+
PPVphCA = froniusreg.FroniusReg(40084, froniusreg.float32, 1, """Phase Voltage CA""")
|
|
20
|
+
PhVphA = froniusreg.FroniusReg(40086, froniusreg.float32, 1, """Phase Voltage AN""")
|
|
21
|
+
PhVphB = froniusreg.FroniusReg(40088, froniusreg.float32, 1, """Phase Voltage BN""")
|
|
22
|
+
PhVphC = froniusreg.FroniusReg(40090, froniusreg.float32, 1, """Phase Voltage CN""")
|
|
23
|
+
W = froniusreg.FroniusReg(40092, froniusreg.float32, 1, """AC Power""")
|
|
24
|
+
Hz = froniusreg.FroniusReg(40094, froniusreg.float32, 1, """Line Frequency""")
|
|
25
|
+
VA = froniusreg.FroniusReg(40096, froniusreg.float32, 1, """AC Apparent Power""")
|
|
26
|
+
VAr = froniusreg.FroniusReg(40098, froniusreg.float32, 1, """AC Reactive Power""")
|
|
27
|
+
PF = froniusreg.FroniusReg(40100, froniusreg.float32, 1, """AC Power Factor""")
|
|
28
|
+
WH = froniusreg.FroniusReg(40102, froniusreg.float32, 1, """AC Energy""")
|
|
29
|
+
DCA = froniusreg.FroniusReg(40104, froniusreg.float32, 1, """DC Current""")
|
|
30
|
+
DCV = froniusreg.FroniusReg(40106, froniusreg.float32, 1, """DC Voltage""")
|
|
31
|
+
DCW = froniusreg.FroniusReg(40108, froniusreg.float32, 1, """DC Power""")
|
|
32
|
+
TmpCab = froniusreg.FroniusReg(40110, froniusreg.float32, 1, """Cabinet Temperature""")
|
|
33
|
+
St = froniusreg.FroniusReg(40118, froniusreg.enum16, 1, """Enumerated value. Operating state""")
|
|
34
|
+
StVnd = froniusreg.FroniusReg(40119, froniusreg.enum16, 1, """Vendor specific operating state code""")
|
|
35
|
+
Evt1 = froniusreg.FroniusReg(40120, froniusreg.bitfield32, 1, """Bitmask value. Event fields""")
|
|
36
|
+
Evt2 = froniusreg.FroniusReg(40122, froniusreg.bitfield32, 1, """Reserved for future use""")
|
|
37
|
+
EvtVnd1 = froniusreg.FroniusReg(40124, froniusreg.bitfield32, 1, """Vendor defined events""")
|
|
38
|
+
EvtVnd2 = froniusreg.FroniusReg(40126, froniusreg.bitfield32, 1, """Vendor defined events""")
|
|
39
|
+
ID = froniusreg.FroniusReg(40132, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model nameplate (120)""")
|
|
40
|
+
L = froniusreg.FroniusReg(40133, froniusreg.uint16, 1, """Length of sunspec model nameplate (120)""")
|
|
41
|
+
DERTyp = froniusreg.FroniusReg(40134, froniusreg.enum16, 1, """Type of DER device. Default value is 4 to indicate PV device.""")
|
|
42
|
+
WRtg = froniusreg.FroniusReg(40135, froniusreg.uint16, 1, """Continuous power output capability of the inverter.""")
|
|
43
|
+
WRtg_SF = froniusreg.FroniusReg(40136, froniusreg.sunssf, 1, """Scale factor""")
|
|
44
|
+
VARtg = froniusreg.FroniusReg(40137, froniusreg.uint16, 1, """Continuous Volt-Ampere capability of the inverter.""")
|
|
45
|
+
VARtg_SF = froniusreg.FroniusReg(40138, froniusreg.sunssf, 1, """Scale factor""")
|
|
46
|
+
VArRtgQ1 = froniusreg.FroniusReg(40139, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 1.""")
|
|
47
|
+
VArRtgQ2 = froniusreg.FroniusReg(40140, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 2.""")
|
|
48
|
+
VArRtgQ3 = froniusreg.FroniusReg(40141, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 3.""")
|
|
49
|
+
VArRtgQ4 = froniusreg.FroniusReg(40142, froniusreg.int16, 1, """Continuous VAR capability of the inverter in quadrant 4.""")
|
|
50
|
+
VArRtg_SF = froniusreg.FroniusReg(40143, froniusreg.sunssf, 1, """Scale factor""")
|
|
51
|
+
ARtg = froniusreg.FroniusReg(40144, froniusreg.uint16, 1, """Maximum RMS AC current level capability of the inverter.""")
|
|
52
|
+
ARtg_SF = froniusreg.FroniusReg(40145, froniusreg.sunssf, 1, """Scale factor""")
|
|
53
|
+
PFRtgQ1 = froniusreg.FroniusReg(40146, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 1.""")
|
|
54
|
+
PFRtgQ2 = froniusreg.FroniusReg(40147, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 2.""")
|
|
55
|
+
PFRtgQ3 = froniusreg.FroniusReg(40148, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 3.""")
|
|
56
|
+
PFRtgQ4 = froniusreg.FroniusReg(40149, froniusreg.int16, 1, """Minimum power factor capability of the inverter in quadrant 4.""")
|
|
57
|
+
PFRtg_SF = froniusreg.FroniusReg(40150, froniusreg.sunssf, 1, """Scale factor""")
|
|
58
|
+
WHRtg = froniusreg.FroniusReg(40151, froniusreg.uint16, 1, """Nominal energy rating of storage device.""")
|
|
59
|
+
WHRtg_SF = froniusreg.FroniusReg(40152, froniusreg.sunssf, 1, """Scale factor""")
|
|
60
|
+
MaxChaRte = froniusreg.FroniusReg(40155, froniusreg.uint16, 1, """Maximum rate of energy transfer into the storage device.""")
|
|
61
|
+
MaxChaRte_SF = froniusreg.FroniusReg(40156, froniusreg.sunssf, 1, """Scale factor""")
|
|
62
|
+
MaxDisChaRte = froniusreg.FroniusReg(40157, froniusreg.uint16, 1, """Maximum rate of energy transfer out of the storage device.""")
|
|
63
|
+
MaxDisChaRte_SF = froniusreg.FroniusReg(40158, froniusreg.sunssf, 1, """Scale factor""")
|
|
64
|
+
Pad = froniusreg.FroniusReg(40159, froniusreg.pad, 1, """Pad register.""")
|
|
65
|
+
ID = froniusreg.FroniusReg(40160, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model settings (121)""")
|
|
66
|
+
L = froniusreg.FroniusReg(40161, froniusreg.uint16, 1, """Length of sunspec model settings (121)""")
|
|
67
|
+
WMax = froniusreg.FroniusReg(40162, froniusreg.uint16, 1, """Setting for maximum power output. Default to WRtg.""")
|
|
68
|
+
VRef = froniusreg.FroniusReg(40163, froniusreg.uint16, 1, """Voltage at the PCC.""")
|
|
69
|
+
VRefOfs = froniusreg.FroniusReg(40164, froniusreg.int16, 1, """Offset from PCC to inverter.""")
|
|
70
|
+
VAMax = froniusreg.FroniusReg(40167, froniusreg.uint16, 1, """Setpoint for maximum apparent power. Default to VARtg.""")
|
|
71
|
+
VArMaxQ1 = froniusreg.FroniusReg(40168, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 1. Default to VArRtgQ1.""")
|
|
72
|
+
VArMaxQ2 = froniusreg.FroniusReg(40169, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 2. Default to VArRtgQ2.""")
|
|
73
|
+
VArMaxQ3 = froniusreg.FroniusReg(40170, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 3. Default to VArRtgQ3.""")
|
|
74
|
+
VArMaxQ4 = froniusreg.FroniusReg(40171, froniusreg.int16, 1, """Setting for maximum reactive power in quadrant 4. Default to VArRtgQ4.""")
|
|
75
|
+
PFMinQ1 = froniusreg.FroniusReg(40173, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 1. Default to PFRtgQ1.""")
|
|
76
|
+
PFMinQ2 = froniusreg.FroniusReg(40174, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 2. Default to PFRtgQ2.""")
|
|
77
|
+
PFMinQ3 = froniusreg.FroniusReg(40175, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 3. Default to PFRtgQ3.""")
|
|
78
|
+
PFMinQ4 = froniusreg.FroniusReg(40176, froniusreg.int16, 1, """Setpoint for minimum power factor value in quadrant 4. Default to PFRtgQ4.""")
|
|
79
|
+
WMax_SF = froniusreg.FroniusReg(40182, froniusreg.sunssf, 1, """Scale factor for real power.""")
|
|
80
|
+
VRef_SF = froniusreg.FroniusReg(40183, froniusreg.sunssf, 1, """Scale factor for voltage at the PCC.""")
|
|
81
|
+
VRefOfs_SF = froniusreg.FroniusReg(40184, froniusreg.sunssf, 1, """Scale factor for offset voltage.""")
|
|
82
|
+
VMinMax_SF = froniusreg.FroniusReg(40185, froniusreg.sunssf, 1, """Scale factor for min/max voltages.""")
|
|
83
|
+
VAMax_SF = froniusreg.FroniusReg(40186, froniusreg.sunssf, 1, """Scale factor for apparent power.""")
|
|
84
|
+
VArMax_SF = froniusreg.FroniusReg(40187, froniusreg.sunssf, 1, """Scale factor for reactive power.""")
|
|
85
|
+
PFMin_SF = froniusreg.FroniusReg(40189, froniusreg.sunssf, 1, """Scale factor for minimum power factor.""")
|
|
86
|
+
ID = froniusreg.FroniusReg(40192, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model status (122)""")
|
|
87
|
+
L = froniusreg.FroniusReg(40193, froniusreg.uint16, 1, """Length of sunspec model status (122)""")
|
|
88
|
+
PVConn = froniusreg.FroniusReg(40194, froniusreg.bitfield16, 1, """PV inverter present/available status. Enumerated value.""")
|
|
89
|
+
StorConn = froniusreg.FroniusReg(40195, froniusreg.bitfield16, 1, """Storage inverter present/available status. Enumerated value.""")
|
|
90
|
+
ECPConn = froniusreg.FroniusReg(40196, froniusreg.bitfield16, 1, """ECP connection status: disconnected=0 connected=1.""")
|
|
91
|
+
ActWh = froniusreg.FroniusReg(40197, froniusreg.acc64, 1, """AC lifetime active (real) energy output.""")
|
|
92
|
+
StActCtl = froniusreg.FroniusReg(40227, froniusreg.bitfield32, 1, """Bit Mask indicating which inverter controls are currently active.""")
|
|
93
|
+
TmSrc = froniusreg.FroniusReg(40229, froniusreg.string4, 1, """Source of time synchronization.""")
|
|
94
|
+
Tms = froniusreg.FroniusReg(40233, froniusreg.uint32, 1, """Seconds since 01-01-2000 00:00 UTC""")
|
|
95
|
+
Ris = froniusreg.FroniusReg(40236, froniusreg.uint16, 1, """Isolation resistance.""")
|
|
96
|
+
Ris_SF = froniusreg.FroniusReg(40237, froniusreg.sunssf, 1, """Scale factor for isolation resistance.""")
|
|
97
|
+
ID = froniusreg.FroniusReg(40238, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model controls (123)""")
|
|
98
|
+
L = froniusreg.FroniusReg(40239, froniusreg.uint16, 1, """Length of sunspec model controls (123)""")
|
|
99
|
+
Conn_WinTms = froniusreg.FroniusReg(40240, froniusreg.uint16, 1, """Time window for connect/disconnect.""")
|
|
100
|
+
Conn_RvrtTms = froniusreg.FroniusReg(40241, froniusreg.uint16, 1, """Timeout period for connect/disconnect.""")
|
|
101
|
+
Conn = froniusreg.FroniusReg(40242, froniusreg.enum16, 1, """Enumerated valued. Connection control.""")
|
|
102
|
+
WMaxLimPct = froniusreg.FroniusReg(40243, froniusreg.uint16, 1, """Set power output to specified level.""")
|
|
103
|
+
WMaxLimPct_WinTms = froniusreg.FroniusReg(40244, froniusreg.uint16, 1, """Time window for power limit change.""")
|
|
104
|
+
WMaxLimPct_RvrtTms = froniusreg.FroniusReg(40245, froniusreg.uint16, 1, """Timeout period for power limit.""")
|
|
105
|
+
WMaxLimPct_RmpTms = froniusreg.FroniusReg(40246, froniusreg.uint16, 1, """Ramp time for moving from current setpoint to new setpoint.""")
|
|
106
|
+
WMaxLim_Ena = froniusreg.FroniusReg(40247, froniusreg.enum16, 1, """Enumerated valued. Throttle enable/disable control.""")
|
|
107
|
+
OutPFSet = froniusreg.FroniusReg(40248, froniusreg.int16, 1, """Set power factor to specific value - cosine of angle.""")
|
|
108
|
+
OutPFSet_WinTms = froniusreg.FroniusReg(40249, froniusreg.uint16, 1, """Time window for power factor change.""")
|
|
109
|
+
OutPFSet_RvrtTms = froniusreg.FroniusReg(40250, froniusreg.uint16, 1, """Timeout period for power factor.""")
|
|
110
|
+
OutPFSet_RmpTms = froniusreg.FroniusReg(40251, froniusreg.uint16, 1, """Ramp time for moving from current setpoint to new setpoint.""")
|
|
111
|
+
OutPFSet_Ena = froniusreg.FroniusReg(40252, froniusreg.enum16, 1, """Enumerated valued. Fixed power factor enable/disable control.""")
|
|
112
|
+
VArMaxPct = froniusreg.FroniusReg(40254, froniusreg.int16, 1, """Reactive power in percent of VArMax.""")
|
|
113
|
+
VArPct_WinTms = froniusreg.FroniusReg(40256, froniusreg.uint16, 1, """Time window for VAR limit change.""")
|
|
114
|
+
VArPct_RvrtTms = froniusreg.FroniusReg(40257, froniusreg.uint16, 1, """Timeout period for VAR limit.""")
|
|
115
|
+
VArPct_RmpTms = froniusreg.FroniusReg(40258, froniusreg.uint16, 1, """Ramp time for moving from current setpoint to new setpoint.""")
|
|
116
|
+
VArPct_Mod = froniusreg.FroniusReg(40259, froniusreg.enum16, 1, """Enumerated value. VAR percent limit mode.""")
|
|
117
|
+
VArPct_Ena = froniusreg.FroniusReg(40260, froniusreg.enum16, 1, """Enumerated valued. Percent limit VAr enable/disable control.""")
|
|
118
|
+
WMaxLimPct_SF = froniusreg.FroniusReg(40261, froniusreg.sunssf, 1, """Scale factor for power output percent.""")
|
|
119
|
+
OutPFSet_SF = froniusreg.FroniusReg(40262, froniusreg.sunssf, 1, """Scale factor for power factor.""")
|
|
120
|
+
VArPct_SF = froniusreg.FroniusReg(40263, froniusreg.sunssf, 1, """Scale factor for reactive power percent.""")
|
|
121
|
+
ID = froniusreg.FroniusReg(40264, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model mppt (160)""")
|
|
122
|
+
L = froniusreg.FroniusReg(40265, froniusreg.uint16, 1, """Length of sunspec model mppt (160)""")
|
|
123
|
+
DCA_SF = froniusreg.FroniusReg(40266, froniusreg.sunssf, 1, """Current Scale Factor""")
|
|
124
|
+
DCV_SF = froniusreg.FroniusReg(40267, froniusreg.sunssf, 1, """Voltage Scale Factor""")
|
|
125
|
+
DCW_SF = froniusreg.FroniusReg(40268, froniusreg.sunssf, 1, """Power Scale Factor""")
|
|
126
|
+
DCWH_SF = froniusreg.FroniusReg(40269, froniusreg.sunssf, 1, """Energy Scale Factor""")
|
|
127
|
+
N = froniusreg.FroniusReg(40272, froniusreg.count, 1, """Number of Modules""")
|
|
128
|
+
module_1_ID = froniusreg.FroniusReg(40274, froniusreg.uint16, 1, """Input ID""")
|
|
129
|
+
module_1_IDStr = froniusreg.FroniusReg(40275, froniusreg.string8, 1, """Input ID Sting""")
|
|
130
|
+
module_1_DCA = froniusreg.FroniusReg(40283, froniusreg.uint16, 1, """DC Current""")
|
|
131
|
+
module_1_DCV = froniusreg.FroniusReg(40284, froniusreg.uint16, 1, """DC Voltage""")
|
|
132
|
+
module_1_DCW = froniusreg.FroniusReg(40285, froniusreg.uint16, 1, """DC Power""")
|
|
133
|
+
module_1_DCWH = froniusreg.FroniusReg(40286, froniusreg.acc32, 1, """Lifetime Energy""")
|
|
134
|
+
module_1_Tms = froniusreg.FroniusReg(40288, froniusreg.uint32, 1, """Timestamp""")
|
|
135
|
+
module_2_ID = froniusreg.FroniusReg(40294, froniusreg.uint16, 1, """Input ID""")
|
|
136
|
+
module_2_IDStr = froniusreg.FroniusReg(40295, froniusreg.string8, 1, """Input ID Sting""")
|
|
137
|
+
module_2_DCA = froniusreg.FroniusReg(40303, froniusreg.uint16, 1, """DC Current""")
|
|
138
|
+
module_2_DCV = froniusreg.FroniusReg(40304, froniusreg.uint16, 1, """DC Voltage""")
|
|
139
|
+
module_2_DCW = froniusreg.FroniusReg(40305, froniusreg.uint16, 1, """DC Power""")
|
|
140
|
+
module_2_DCWH = froniusreg.FroniusReg(40306, froniusreg.acc32, 1, """Lifetime Energy""")
|
|
141
|
+
module_2_Tms = froniusreg.FroniusReg(40308, froniusreg.uint32, 1, """Timestamp""")
|
|
142
|
+
module_3_ID = froniusreg.FroniusReg(40314, froniusreg.uint16, 1, """Input ID""")
|
|
143
|
+
module_3_IDStr = froniusreg.FroniusReg(40315, froniusreg.string8, 1, """Input ID Sting""")
|
|
144
|
+
module_3_DCA = froniusreg.FroniusReg(40323, froniusreg.uint16, 1, """DC Current""")
|
|
145
|
+
module_3_DCV = froniusreg.FroniusReg(40324, froniusreg.uint16, 1, """DC Voltage""")
|
|
146
|
+
module_3_DCW = froniusreg.FroniusReg(40325, froniusreg.uint16, 1, """DC Power""")
|
|
147
|
+
module_3_DCWH = froniusreg.FroniusReg(40326, froniusreg.acc32, 1, """Lifetime Energy""")
|
|
148
|
+
module_3_Tms = froniusreg.FroniusReg(40328, froniusreg.uint32, 1, """Timestamp""")
|
|
149
|
+
module_4_ID = froniusreg.FroniusReg(40334, froniusreg.uint16, 1, """Input ID""")
|
|
150
|
+
module_4_IDStr = froniusreg.FroniusReg(40335, froniusreg.string8, 1, """Input ID Sting""")
|
|
151
|
+
module_4_DCA = froniusreg.FroniusReg(40343, froniusreg.uint16, 1, """DC Current""")
|
|
152
|
+
module_4_DCV = froniusreg.FroniusReg(40344, froniusreg.uint16, 1, """DC Voltage""")
|
|
153
|
+
module_4_DCW = froniusreg.FroniusReg(40345, froniusreg.uint16, 1, """DC Power""")
|
|
154
|
+
module_4_DCWH = froniusreg.FroniusReg(40346, froniusreg.acc32, 1, """Lifetime Energy""")
|
|
155
|
+
module_4_Tms = froniusreg.FroniusReg(40348, froniusreg.uint32, 1, """Timestamp""")
|
|
156
|
+
ID = froniusreg.FroniusReg(40354, froniusreg.uint16, 1, """Well-known value. Uniquely identifies this as a sunspec model storage (124)""")
|
|
157
|
+
L = froniusreg.FroniusReg(40355, froniusreg.uint16, 1, """Length of sunspec model storage (124)""")
|
|
158
|
+
WChaMax = froniusreg.FroniusReg(40356, froniusreg.uint16, 1, """Setpoint for maximum charge.
|
|
159
|
+
|
|
160
|
+
Additional Fronius description:
|
|
161
|
+
Reference Value for maximum Charge and Discharge.
|
|
162
|
+
Multiply this value by InWRte to define maximum charging and OutWRte to define maximum discharging.
|
|
163
|
+
Every rate between this two limits is allowed.
|
|
164
|
+
The inverter is not fully capable of transferring power as reported by this reference value.
|
|
165
|
+
Note that InWRte and OutWRte can be negative to define ranges for charging and discharging only
|
|
166
|
+
""")
|
|
167
|
+
WChaGra = froniusreg.FroniusReg(40357, froniusreg.uint16, 1, """Setpoint for maximum charging rate. Default is MaxChaRte.""")
|
|
168
|
+
WDisChaGra = froniusreg.FroniusReg(40358, froniusreg.uint16, 1, """Setpoint for maximum discharge rate. Default is MaxDisChaRte.""")
|
|
169
|
+
StorCtl_Mod = froniusreg.FroniusReg(40359, froniusreg.bitfield16, 1, """Activate hold/discharge/charge storage control mode. Bitfield value.
|
|
170
|
+
|
|
171
|
+
Additional Fronius description:
|
|
172
|
+
Active hold/discharge/charge storage control mode.
|
|
173
|
+
Set the charge field to enable charging and the discharge field to enable discharging.
|
|
174
|
+
""")
|
|
175
|
+
MinRsvPct = froniusreg.FroniusReg(40361, froniusreg.uint16, 1, """Setpoint for minimum reserve for storage as a percentage of the nominal maximum storage.""")
|
|
176
|
+
ChaState = froniusreg.FroniusReg(40362, froniusreg.uint16, 1, """Currently available energy as a percent of the capacity rating.""")
|
|
177
|
+
ChaSt = froniusreg.FroniusReg(40365, froniusreg.enum16, 1, """Charge status of storage device. Enumerated value.""")
|
|
178
|
+
OutWRte = froniusreg.FroniusReg(40366, froniusreg.int16, 1, """Percent of max discharge rate.
|
|
179
|
+
|
|
180
|
+
Additional Fronius description:
|
|
181
|
+
Defines maximum Discharge rate. If not used than the default is 100 and WChaMax defines max. Discharge rate.
|
|
182
|
+
See WChaMax for details
|
|
183
|
+
""")
|
|
184
|
+
InWRte = froniusreg.FroniusReg(40367, froniusreg.int16, 1, """Percent of max charging rate.
|
|
185
|
+
|
|
186
|
+
Additional Fronius description:
|
|
187
|
+
Defines maximum Charge rate. If not used than the default is 100 and WChaMax defines max. Charge rate.
|
|
188
|
+
See WChaMax for details
|
|
189
|
+
""")
|
|
190
|
+
InOutWRte_RvrtTms = froniusreg.FroniusReg(40369, froniusreg.uint16, 1, """Timeout period for charge/discharge rate.""")
|
|
191
|
+
ChaGriSet = froniusreg.FroniusReg(40371, froniusreg.enum16, 1, """nan""")
|
|
192
|
+
WChaMax_SF = froniusreg.FroniusReg(40372, froniusreg.sunssf, 1, """Scale factor for maximum charge.""")
|
|
193
|
+
WChaDisChaGra_SF = froniusreg.FroniusReg(40373, froniusreg.sunssf, 1, """Scale factor for maximum charge and discharge rate.""")
|
|
194
|
+
MinRsvPct_SF = froniusreg.FroniusReg(40375, froniusreg.sunssf, 1, """Scale factor for minimum reserve percentage.""")
|
|
195
|
+
ChaState_SF = froniusreg.FroniusReg(40376, froniusreg.sunssf, 1, """Scale factor for available energy percent.""")
|
|
196
|
+
InOutWRte_SF = froniusreg.FroniusReg(40379, froniusreg.sunssf, 1, """Scale factor for percent charge/discharge rate.""")
|
|
197
|
+
ID = froniusreg.FroniusReg(40380, froniusreg.uint16, 1, """Identifies this as End block""")
|
|
198
|
+
L = froniusreg.FroniusReg(40381, froniusreg.uint16, 1, """Length of model block""")
|
|
199
|
+
scaledWRtg = froniusreg.ScaledFroniusReg(WRtg, WRtg_SF)
|
|
200
|
+
scaledVARtg = froniusreg.ScaledFroniusReg(VARtg, VARtg_SF)
|
|
201
|
+
scaledVArRtgQ1 = froniusreg.ScaledFroniusReg(VArRtgQ1, VArRtg_SF)
|
|
202
|
+
scaledVArRtgQ2 = froniusreg.ScaledFroniusReg(VArRtgQ2, VArRtg_SF)
|
|
203
|
+
scaledVArRtgQ3 = froniusreg.ScaledFroniusReg(VArRtgQ3, VArRtg_SF)
|
|
204
|
+
scaledVArRtgQ4 = froniusreg.ScaledFroniusReg(VArRtgQ4, VArRtg_SF)
|
|
205
|
+
scaledARtg = froniusreg.ScaledFroniusReg(ARtg, ARtg_SF)
|
|
206
|
+
scaledPFRtgQ1 = froniusreg.ScaledFroniusReg(PFRtgQ1, PFRtg_SF)
|
|
207
|
+
scaledPFRtgQ2 = froniusreg.ScaledFroniusReg(PFRtgQ2, PFRtg_SF)
|
|
208
|
+
scaledPFRtgQ3 = froniusreg.ScaledFroniusReg(PFRtgQ3, PFRtg_SF)
|
|
209
|
+
scaledPFRtgQ4 = froniusreg.ScaledFroniusReg(PFRtgQ4, PFRtg_SF)
|
|
210
|
+
scaledWHRtg = froniusreg.ScaledFroniusReg(WHRtg, WHRtg_SF)
|
|
211
|
+
scaledMaxChaRte = froniusreg.ScaledFroniusReg(MaxChaRte, MaxChaRte_SF)
|
|
212
|
+
scaledMaxDisChaRte = froniusreg.ScaledFroniusReg(MaxDisChaRte, MaxDisChaRte_SF)
|
|
213
|
+
scaledWMax = froniusreg.ScaledFroniusReg(WMax, WMax_SF)
|
|
214
|
+
scaledVRef = froniusreg.ScaledFroniusReg(VRef, VRef_SF)
|
|
215
|
+
scaledVRefOfs = froniusreg.ScaledFroniusReg(VRefOfs, VRefOfs_SF)
|
|
216
|
+
scaledVAMax = froniusreg.ScaledFroniusReg(VAMax, VAMax_SF)
|
|
217
|
+
scaledVArMaxQ1 = froniusreg.ScaledFroniusReg(VArMaxQ1, VArMax_SF)
|
|
218
|
+
scaledVArMaxQ2 = froniusreg.ScaledFroniusReg(VArMaxQ2, VArMax_SF)
|
|
219
|
+
scaledVArMaxQ3 = froniusreg.ScaledFroniusReg(VArMaxQ3, VArMax_SF)
|
|
220
|
+
scaledVArMaxQ4 = froniusreg.ScaledFroniusReg(VArMaxQ4, VArMax_SF)
|
|
221
|
+
scaledPFMinQ1 = froniusreg.ScaledFroniusReg(PFMinQ1, PFMin_SF)
|
|
222
|
+
scaledPFMinQ2 = froniusreg.ScaledFroniusReg(PFMinQ2, PFMin_SF)
|
|
223
|
+
scaledPFMinQ3 = froniusreg.ScaledFroniusReg(PFMinQ3, PFMin_SF)
|
|
224
|
+
scaledPFMinQ4 = froniusreg.ScaledFroniusReg(PFMinQ4, PFMin_SF)
|
|
225
|
+
scaledRis = froniusreg.ScaledFroniusReg(Ris, Ris_SF)
|
|
226
|
+
scaledWMaxLimPct = froniusreg.ScaledFroniusReg(WMaxLimPct, WMaxLimPct_SF)
|
|
227
|
+
scaledOutPFSet = froniusreg.ScaledFroniusReg(OutPFSet, OutPFSet_SF)
|
|
228
|
+
scaledVArMaxPct = froniusreg.ScaledFroniusReg(VArMaxPct, VArPct_SF)
|
|
229
|
+
scaledmodule_1_DCA = froniusreg.ScaledFroniusReg(module_1_DCA, DCA_SF)
|
|
230
|
+
scaledmodule_1_DCV = froniusreg.ScaledFroniusReg(module_1_DCV, DCV_SF)
|
|
231
|
+
scaledmodule_1_DCW = froniusreg.ScaledFroniusReg(module_1_DCW, DCW_SF)
|
|
232
|
+
scaledmodule_1_DCWH = froniusreg.ScaledFroniusReg(module_1_DCWH, DCWH_SF)
|
|
233
|
+
scaledmodule_2_DCA = froniusreg.ScaledFroniusReg(module_2_DCA, DCA_SF)
|
|
234
|
+
scaledmodule_2_DCV = froniusreg.ScaledFroniusReg(module_2_DCV, DCV_SF)
|
|
235
|
+
scaledmodule_2_DCW = froniusreg.ScaledFroniusReg(module_2_DCW, DCW_SF)
|
|
236
|
+
scaledmodule_2_DCWH = froniusreg.ScaledFroniusReg(module_2_DCWH, DCWH_SF)
|
|
237
|
+
scaledmodule_3_DCA = froniusreg.ScaledFroniusReg(module_3_DCA, DCA_SF)
|
|
238
|
+
scaledmodule_3_DCV = froniusreg.ScaledFroniusReg(module_3_DCV, DCV_SF)
|
|
239
|
+
scaledmodule_3_DCW = froniusreg.ScaledFroniusReg(module_3_DCW, DCW_SF)
|
|
240
|
+
scaledmodule_3_DCWH = froniusreg.ScaledFroniusReg(module_3_DCWH, DCWH_SF)
|
|
241
|
+
scaledmodule_4_DCA = froniusreg.ScaledFroniusReg(module_4_DCA, DCA_SF)
|
|
242
|
+
scaledmodule_4_DCV = froniusreg.ScaledFroniusReg(module_4_DCV, DCV_SF)
|
|
243
|
+
scaledmodule_4_DCW = froniusreg.ScaledFroniusReg(module_4_DCW, DCW_SF)
|
|
244
|
+
scaledmodule_4_DCWH = froniusreg.ScaledFroniusReg(module_4_DCWH, DCWH_SF)
|
|
245
|
+
scaledWChaMax = froniusreg.ScaledFroniusReg(WChaMax, WChaMax_SF)
|
|
246
|
+
scaledWChaGra = froniusreg.ScaledFroniusReg(WChaGra, WChaDisChaGra_SF)
|
|
247
|
+
scaledWDisChaGra = froniusreg.ScaledFroniusReg(WDisChaGra, WChaDisChaGra_SF)
|
|
248
|
+
scaledMinRsvPct = froniusreg.ScaledFroniusReg(MinRsvPct, MinRsvPct_SF)
|
|
249
|
+
scaledChaState = froniusreg.ScaledFroniusReg(ChaState, ChaState_SF)
|
|
250
|
+
scaledOutWRte = froniusreg.ScaledFroniusReg(OutWRte, InOutWRte_SF)
|
|
251
|
+
scaledInWRte = froniusreg.ScaledFroniusReg(InWRte, InOutWRte_SF)
|