-
-
Notifications
You must be signed in to change notification settings - Fork 508
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Request] Setting Netprofile function #900
Comments
I confirm the need of setting the netprofile for some network providers (Salzburg-Netz in my case), otherwise without setting the profile the infeed is not accepted. Luckily I have a DTU-Lite, but I cannot accept buying this stick for configuring only. So it would be a great enhancement, thank you in advance. |
We have been able to extract one/two Grid Profiles from a mock DTU, which allowed us to decode about 90% of the data. Though we still lack proper traces for applying such a grid profile using the DTU W-Lite or DTU Pro in order to implement the necessary Update Grid Profile command in OpenDTU / Ahoy DTU. If you have access to an DTU W-Lite / DTU Pro and are willing to provide the necessary trace data we can progress this issue. |
Since the Grid Profile can be understood and read we can now take the next step and apply a modified Grid Profile. Wie wird das DOWN_PRO (0x0E) / DOWN_DAT (0x0A) verwendet
|
@tbnobody, appreciate all the documentation you added in c9508d2. To install the country specific Grid Profile on the inverter we have the following documented so far: The currently known Grid Profiles in Hex/Binary Format have already been documented in the Wiki https://github.com/tbnobody/OpenDTU/wiki/Grid-Profile-Parser An example script for the (here AhoyDTU) Web API would look something like the following prseudo-python script to use such a Multi Request Command for DOWN_PRO / INIT and the AT-TOR Grid Profile as a payload. espUrl="http://192.168.4.1/api"
def setGrid(iv):
r = requests.post(espUrl + "/ctrl", json={
"id": iv,
"cmd": 0x0E, // DOWN_PRO
"val": 0xFF, // INIT
"payload": 0x0c 00 20 00 00 0b 08 fc 07 30 00 0f 09 f9 00 01 02 3f 00 32 0a 55 00 08 09 f9 10 00 13 88 12 8e 00 01 14 1e 00 01 20 00 00 01 30 03 02 58 09 cb 07 a3 13 92 12 8e 40 00 07 d0 00 10 50 00 00 01 13 9c 01 90 00 32 60 04 00 01 09 e2 0a 10 08 7e 80 00 00 00 08 44 01 2c 08 a0 09 6f 09 b4 01 2c 90 00 00 00 00 5f b0 00 00 00 01 f4 00 5f 70 02 00 01 27 10 a0 02 00 00 00 00 6e 8b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // remove the spaces to get a single Hex/Binary block
})
if r.status_code == 200:
obj = r.json()
print(obj)
else:
print(f"error http: {r.status_code}")
getGrid(0)
import requests
import json So the procedure is known in principle, but instead of a MultiResponse / MultiData Command (e.g. DevInfo Status, Alarm, etc), we also need some kind of MultiRequest Commands which allow us to send a larger Payload. I.e. at least larger than the max 32 Bytes of 1 frame. I do not know if this is currently implemented or what information is missing for you to implement that pre-requisite for setting a Grid Profile ? |
@tbnobody currently the Grid Profile Parser is almost feature complete! Hurray 🎉 ! The next step would be the implementation to send one of the about twelve known / even a custom Grid Profile to the inverter using MultiFrame Request Commands as detailled using DOWN_PRO Regarding the customization of Grid Profiles, we would need the upper and lower limit / ranges for all the given values for input form validation added to our Parser / Grid Profile data. I have already documented some of the Grid Profiles with Range information here:
Especially the binary It would therefor also be nice and logical to show some (o ) For purposes of copy & paste and/or printing I would also appreciate if the complete Grid Profile could be unfolded, currently the other sections are automatically collapsed if I open another section. Find below an illustrative image of the most common Grid Profile (>70% of known inverters use it, currently 84 entries out of a total of 118 Grid Profile entries on our Wiki): |
Prima! Danke an @nivadis für den Dump beim Grid Profile DOWN_DAT 0x0A Kommando: Ich glaube das ist es:
Man sieht in der letzten TX Zeile des oberen Blocks die CRC16 über das Grid Profile. Das o.a. Grid Profile ist Nummer 6 in der entsprechenden Excel Liste der bisher dokumentierten Grid Profile: #1606 (comment)
@lumapu @tbnobody vielleicht wollt Ihr das irgendwann demnächst mal ins Projekt einbauen ? |
Hier ist die Prüfung der DevControl Command Antwort vom Inverter durch die DTU Pro aus dem Hoymiles Source Code
/***********************************************
** Function name: Three-generation protocol device control application layer receipt processing
** Descriptions:
** input parameters: ?
** output parameters: ?
** Returned value: ?
*************************************************/
void UsartNrf3_Process_DevControl(u8 *pBuffer)
{
Uart_CurrentReplyState = pBuffer[11];
if(Uart_CurSendSubCmd != (((u16)pBuffer[14] << 8) | pBuffer[13]))
{
return;
}
switch(Uart_CurrentReplyState)
{
case 0: // The command was executed successfully
//dong 2020-06-15 Grid-connected protection file self-check command is processed separately
if(Uart_CurSendSubCmd == Type_SelfInspection) // Type_SelfInspection 0x28
{
//Improper response to self-test status, do network command processing
MIReal[PortNO].Data.NetCmd = NET_SELF_STAUS;
MIReal[PortNO].Data.NetStatus = NET_NOCMD;
SelfCheckStateFlg = 1;
}
else
{
MIReal[PortNO].Data.NetStatus = NET_EXECUTION_COMPLETED;
ProtocalLayer_Cmd = InitLayer;
Index_Para = 0;
CurNetCmd = NET_INIT;
}
break;
case 3: //eeprom read and write error
Index_Para = 0;
break;
case 4: //This command is not supported
MIReal[PortNO].Data.NetStatus = NET_EXECUTION_FAILURE;
ProtocalLayer_Cmd = InitLayer;
Index_Para = 0;
CurNetCmd = NET_INIT;
break;
case 7: // Abnormal length of configuration parameter
Index_Para = 0;
break;
default:
break;
}
} |
I have double checked it, this is the upload of a DE_VDE4105_2018 grid profile as documented already elsewhere in our
So it is the usual multi command series but this time from DTU to Inverter starting with 0x0A 0x01 .. 0x0A 0x88:
Then the DTU repeats the last packet 0x08 of the DOWN_DAT 0x0A command with the
Then the Inverter will chime in and reply 0x8A 0x81 with the grid profile signature and a crc16 of the
After that the DTU will continue to send the above crc16 of grid profile though the Inverter will stay again silent for some 2,46s.
The Inverter will start to respond again presumably after reboot (2.46s) to the previous tune of 0x0A 0x88 and his 0x8A 0x81 response for another 5.29s.
So in total this final echo command 0x0A 0x88 of the DOWN_DAT and the Inverters reply 0x8A 0x81 will be repeated every 100ms until the Inverter has flashed the new Grid Profile at the right location, which takes about 20 seconds in total. Here you can see the two gaps in the repsonse from the Inverter in channel 14 vs. the DTU in channel 6. There is a short gap of 120-130ms after these 20,3s and then it is following in the common 0x15 0x0B RealTimeRunData_Debug command request / reply cycle as usual.
BTW here are the timings of some of the requests as recorded by the Salea Logic 2 shrimp. 26.676983679999999 request 27.127994399999999 request (next) There is a gap of 0,04779056 seconds or 47 ms between the start of the command and the reply being received. |
@tbnobody as a first step we could allow to select / flash the most common grid profiles which are already known. I have documented the known grid profiles along with the valid ranges as allowed by the Hoymiles Cloud UI here:
In a second step we would need to verify and implement the ranges for the different grid profile versions. For some of the Grid Profiles there are boolean variables showing 0~1 as range. Also in the Details DE_VDE4105_2018 there is Reactive Power (VAR) under Reactive Power Control (RPC) |
Brauche diese Funktion auch. Seit gestern habe ich einen HMT-2250 zusätzlich in Betrieb. Profil ist EN 50549-1:2019. Hab dadurch erst auf die Spannung geschaut und tatsächlich zeigt die Messung am EHZ bereits Werte von 250V+, selbst wenn ich beide PV-Systeme trenne. Die historischen Werte zeigen regelmäßig 250V an sonnigen Tagen. Die Hauptanlage hat noch nie abgeregelt, ein FoxESS mit Profil VDE-AR-N 4105. |
@abuesen Du kannst mit den Original Hoymiles DTUs das Grid Profile ändern oder sogar innerhalb bestimmter Grenzen anpassen. Das habe ich oben prinzipiell unter 1. und 2. beschrieben wie man es für die OpenDTU/Ahoy ebenfalls implementieren könnte. Die EN 50549-1:2019 ist prinzipiell in der EU zugelassen da es sich um eine Vereinheitlichung der nationalen europäischen Standards handelt. |
Ich habe eine Frage an die Profis. |
Habe das selbst nur einmal gemacht und auch nicht mehr über die Original-DTU in Betrieb, kann allerdings grob den Weg skizzieren:
|
Ich danke Dir für Deine Hilfe! |
Ich habe auch nur die "normale" Installateur-Rolle. |
@bombjack7000 danke für die Anleitung das passt hier schon zum Thema, da wir noch nicht wissen wie solche Custom Grid Profiles von der S-Miles Cloud überhaupt identifiziert werden können. |
Hier mal mein Beitrag dazu: HMS2000 mit angepasstem DE_VDE4105_2018 Profil (Gen3, Germany, 2.0.1) dem ich den Alias DE_VDE4105_2018_FW100 gegeben habe weil ich FW Droop Slope auf 100%/Hz gesetzt habe. Wird dann in OpenDTU als DE - DE_VDE4105_2018 angezeigt.
|
Danke @fred777
@tbnobody wir können also Anpassungen nur anhand der CRC16 Checksumme in den letzten beiden Bytes vom Default/Original Hoymiles Grid Profile Template unterscheiden, wenn wir nicht jeden einzelnen Wert vergleichen wollen. Also +1 von mir, dass wir die CRC16 Checksum der bekannten Grid Profile noch zusätzlich in den Code aufnehmen um Modifikationen der Defaults zu erkennen und ggf. in OpenDTU anzuzeigen. |
@fred777 @Taurus1958 ihr könnt mal hier https://github.com/tbnobody/OpenDTU/wiki/Grid-Profile-Parser und hier https://github.com/lumapu/ahoy/wiki/Protocol#file-name-de_vde4105_2018 nachsehen, ob Eure angepassten Grid Profile dort so oder so ähnlich schon gelistet sind ? @lumapu hatte mal die offiziellen Grid Profile aus der S-Miles Cloud extrahiert https://discord.com/channels/984173303147155506/998975048230641736/1197668874255081546 Uploading profiles_json.zip… Failed So lange wir also keinen direkten Zugriff auf die profile_xxxx.json in der Hoymiles S-Miles Cloud haben (Username/Password Credential und OAuth Token) werden wir keinen in der Cloud vergebenen Custom name erfahren. |
profile_15854.json
{
"status": "0",
"message": "success",
"data": {
"id": 15854,
"name": "DE_VDE4105_2018",
"type": 3,
"dept_id": 101171,
"country_code": "DE",
"sn_prefix": "1121,1141,1161,1123,1143,1163,1144,1164,1381,1382",
"version": "2.0.1",
"create_by": 59209,
"create_at": "2021-03-23 21:31:24",
"update_by": 59209,
"update_at": "2021-03-23 21:31:24",
"country_std": 768,
"inner_version": 8192,
"item_data": [
{
"id": 310727,
"order_idx": 1,
"cfg_data": {
"name": "DE_VDE4105_2018",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310728,
"order_idx": 2,
"cfg_data": {
"name": "CountryStd",
"type": 30,
"mark": null,
"content": "768",
"position": 0,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310729,
"order_idx": 3,
"cfg_data": {
"name": "Version",
"type": 60,
"mark": null,
"content": "8192",
"position": 2,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310730,
"order_idx": 4,
"cfg_data": {
"name": "H/LVRT",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310731,
"order_idx": 5,
"cfg_data": {
"name": "H/LVRT F&C Code",
"type": 6,
"mark": null,
"content": "10",
"position": 4,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310732,
"order_idx": 6,
"cfg_data": {
"name": "Nominal Voltage (NV)",
"type": 6,
"mark": null,
"content": "230",
"position": 6,
"unit": "V",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310733,
"order_idx": 7,
"cfg_data": {
"name": "Low Voltage 1 (LV1)",
"type": 6,
"mark": null,
"content": "184",
"position": 8,
"unit": "V",
"max": 184,
"min": 170,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310734,
"order_idx": 8,
"cfg_data": {
"name": "LV1 Maximum Trip Time (MTT)",
"type": 6,
"mark": null,
"content": "3",
"position": 10,
"unit": "s",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310735,
"order_idx": 9,
"cfg_data": {
"name": "High Voltage 1 (HV1)",
"type": 6,
"mark": null,
"content": "287.5",
"position": 12,
"unit": "V",
"max": 288,
"min": 280,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310736,
"order_idx": 10,
"cfg_data": {
"name": "HV1 Maximum Trip Time (MTT)",
"type": 6,
"mark": null,
"content": "0.1",
"position": 14,
"unit": "s",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310737,
"order_idx": 11,
"cfg_data": {
"name": "Low Voltage 2 (LV2)",
"type": 6,
"mark": null,
"content": "103.5",
"position": 16,
"unit": "V",
"max": 120,
"min": 102,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310738,
"order_idx": 12,
"cfg_data": {
"name": "LV2 Maximum Trip Time (MTT)",
"type": 6,
"mark": null,
"content": "0.3",
"position": 18,
"unit": "s",
"max": null,
"min": null,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310739,
"order_idx": 13,
"cfg_data": {
"name": "10mins Average High Voltage (AHV)",
"type": 6,
"mark": null,
"content": "253",
"position": 20,
"unit": "V",
"max": 253,
"min": 245,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310740,
"order_idx": 14,
"cfg_data": {
"name": "H/LFRT",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310741,
"order_idx": 15,
"cfg_data": {
"name": "H/LFRT F&C Code",
"type": 6,
"mark": null,
"content": "4096",
"position": 22,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310742,
"order_idx": 16,
"cfg_data": {
"name": "Nominal Frequency",
"type": 6,
"mark": null,
"content": "50",
"position": 24,
"unit": "Hz",
"max": null,
"min": null,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310743,
"order_idx": 17,
"cfg_data": {
"name": "Low Frequency 1 (LF1)",
"type": 6,
"mark": null,
"content": "47.5",
"position": 26,
"unit": "Hz",
"max": 49,
"min": 47.5,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310744,
"order_idx": 18,
"cfg_data": {
"name": "LF1 Maximum Trip Time (MTT)",
"type": 6,
"mark": null,
"content": "0.1",
"position": 28,
"unit": "s",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310745,
"order_idx": 19,
"cfg_data": {
"name": "High Frequency 1 (HF1)",
"type": 6,
"mark": null,
"content": "51.5",
"position": 30,
"unit": "Hz",
"max": 51.5,
"min": 50.5,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310746,
"order_idx": 20,
"cfg_data": {
"name": "HF1 Maximum Trip time (MTT)",
"type": 6,
"mark": null,
"content": "0.1",
"position": 32,
"unit": "s",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310747,
"order_idx": 21,
"cfg_data": {
"name": "Islanding Detection (ID)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310748,
"order_idx": 22,
"cfg_data": {
"name": "ID F&C Code",
"type": 6,
"mark": null,
"content": "8192",
"position": 34,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310749,
"order_idx": 23,
"cfg_data": {
"name": "ID Function Activated",
"type": 6,
"mark": null,
"content": "1",
"position": 36,
"unit": "",
"max": 1,
"min": 0,
"multiple": 1,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310750,
"order_idx": 24,
"cfg_data": {
"name": "Reconnection (RT)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310751,
"order_idx": 25,
"cfg_data": {
"name": "RT F&C Code",
"type": 6,
"mark": null,
"content": "12291",
"position": 38,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310752,
"order_idx": 26,
"cfg_data": {
"name": "Reconnect Time (RT)",
"type": 6,
"mark": null,
"content": "60",
"position": 40,
"unit": "s",
"max": 300,
"min": 10,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310753,
"order_idx": 27,
"cfg_data": {
"name": "Reconnect High Voltage (RHV)",
"type": 6,
"mark": null,
"content": "253",
"position": 42,
"unit": "V",
"max": 253,
"min": 240,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310754,
"order_idx": 28,
"cfg_data": {
"name": "Reconnect Low Voltage (RLV)",
"type": 6,
"mark": null,
"content": "195.5",
"position": 44,
"unit": "V",
"max": 210,
"min": 195.5,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310755,
"order_idx": 29,
"cfg_data": {
"name": "Reconnect High Frequency (RHF)",
"type": 6,
"mark": null,
"content": "50.1",
"position": 46,
"unit": "Hz",
"max": 50.9,
"min": 50.1,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310756,
"order_idx": 30,
"cfg_data": {
"name": "Reconnect Low Frequency (RLF)",
"type": 6,
"mark": null,
"content": "47.5",
"position": 48,
"unit": "Hz",
"max": 49.9,
"min": 47.5,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310757,
"order_idx": 31,
"cfg_data": {
"name": "Ramp Rates(RR)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310758,
"order_idx": 32,
"cfg_data": {
"name": "RR F&C Code",
"type": 6,
"mark": null,
"content": "16384",
"position": 50,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310759,
"order_idx": 33,
"cfg_data": {
"name": "Normal Ramp up Rate (RUR_NM) ",
"type": 6,
"mark": null,
"content": "20",
"position": 52,
"unit": "Rated%/s",
"max": 100,
"min": 10,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310760,
"order_idx": 34,
"cfg_data": {
"name": "Soft Start Ramp up Rate (RUR_SS)",
"type": 6,
"mark": null,
"content": "0.16",
"position": 54,
"unit": "Rated%/s",
"max": 10,
"min": 0.1,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310761,
"order_idx": 35,
"cfg_data": {
"name": "Frequency Watt (FW)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310762,
"order_idx": 36,
"cfg_data": {
"name": "FW F&C Code",
"type": 6,
"mark": null,
"content": "20488",
"position": 56,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310763,
"order_idx": 37,
"cfg_data": {
"name": "FW Function Activated",
"type": 6,
"mark": null,
"content": "1",
"position": 58,
"unit": "",
"max": 1,
"min": 0,
"multiple": 1,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310764,
"order_idx": 38,
"cfg_data": {
"name": "Start of Frequency Watt Droop (Fstart)",
"type": 6,
"mark": null,
"content": "50.2",
"position": 60,
"unit": "Hz",
"max": 52,
"min": 50.2,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310765,
"order_idx": 39,
"cfg_data": {
"name": "FW Droop Slope (Kpower_Freq)",
"type": 6,
"mark": null,
"content": "40",
"position": 62,
"unit": "Pn%/Hz",
"max": 100,
"min": 16.7,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310766,
"order_idx": 40,
"cfg_data": {
"name": "Recovery Ramp Rate (RRR)",
"type": 6,
"mark": null,
"content": "0.16",
"position": 64,
"unit": "Pn%/s",
"max": 50,
"min": 0.1,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310767,
"order_idx": 41,
"cfg_data": {
"name": "Recovery High Frequency (RVHF)",
"type": 6,
"mark": null,
"content": "50.2",
"position": 66,
"unit": "Hz",
"max": null,
"min": null,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310768,
"order_idx": 42,
"cfg_data": {
"name": "Recovery Low Frequency (RVLF)",
"type": 6,
"mark": null,
"content": "49.8",
"position": 68,
"unit": "Hz",
"max": null,
"min": null,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310769,
"order_idx": 43,
"cfg_data": {
"name": "Active Power Control (APC)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310770,
"order_idx": 44,
"cfg_data": {
"name": "APC F&C Code",
"type": 6,
"mark": null,
"content": "28674",
"position": 70,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310771,
"order_idx": 45,
"cfg_data": {
"name": "APC Function Activated",
"type": 6,
"mark": null,
"content": "1",
"position": 72,
"unit": "",
"max": 1,
"min": 0,
"multiple": 1,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310772,
"order_idx": 46,
"cfg_data": {
"name": "Power Ramp Rate (PRR)",
"type": 6,
"mark": null,
"content": "0.5",
"position": 74,
"unit": "Pn%/s",
"max": 0.66,
"min": 0.33,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310773,
"order_idx": 47,
"cfg_data": {
"name": "Volt Var (VV)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310774,
"order_idx": 48,
"cfg_data": {
"name": "VV F&C Code",
"type": 6,
"mark": null,
"content": "32768",
"position": 76,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310775,
"order_idx": 49,
"cfg_data": {
"name": "VV Function Activated",
"type": 6,
"mark": null,
"content": "0",
"position": 78,
"unit": "",
"max": 1,
"min": 0,
"multiple": 1,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310776,
"order_idx": 50,
"cfg_data": {
"name": "Voltage Set Point V1",
"type": 6,
"mark": null,
"content": "213.9",
"position": 80,
"unit": "V",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310777,
"order_idx": 51,
"cfg_data": {
"name": "Reactive Set Point Q1",
"type": 6,
"mark": null,
"content": "30",
"position": 82,
"unit": "%Pn",
"max": 100,
"min": 0,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310778,
"order_idx": 52,
"cfg_data": {
"name": "Voltage Set Point V2",
"type": 6,
"mark": null,
"content": "223.1",
"position": 84,
"unit": "V",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310779,
"order_idx": 53,
"cfg_data": {
"name": "Voltage Set Point V3",
"type": 6,
"mark": null,
"content": "236.9",
"position": 86,
"unit": "V",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310780,
"order_idx": 54,
"cfg_data": {
"name": "Voltage Set Point V4",
"type": 6,
"mark": null,
"content": "246.1",
"position": 88,
"unit": "V",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310781,
"order_idx": 55,
"cfg_data": {
"name": "Reactive Set Point Q4",
"type": 6,
"mark": null,
"content": "30",
"position": 90,
"unit": "%Pn",
"max": 100,
"min": 0,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310782,
"order_idx": 56,
"cfg_data": {
"name": "Specified Power Factor (SPF)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310783,
"order_idx": 57,
"cfg_data": {
"name": "SPF F&C Code",
"type": 6,
"mark": null,
"content": "36864",
"position": 92,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310784,
"order_idx": 58,
"cfg_data": {
"name": "SPF Function Activated",
"type": 6,
"mark": null,
"content": "0",
"position": 94,
"unit": "",
"max": 1,
"min": 0,
"multiple": 1,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310785,
"order_idx": 59,
"cfg_data": {
"name": "Power Factor (PF)",
"type": 6,
"mark": null,
"content": "0.95",
"position": 96,
"unit": "",
"max": 1,
"min": 0.9,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310786,
"order_idx": 60,
"cfg_data": {
"name": "Watt Power Factor (WPF)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310787,
"order_idx": 61,
"cfg_data": {
"name": "WPF F&C Code",
"type": 6,
"mark": null,
"content": "45056",
"position": 98,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310788,
"order_idx": 62,
"cfg_data": {
"name": "WPF Function Activated",
"type": 6,
"mark": null,
"content": "0",
"position": 100,
"unit": "",
"max": 1,
"min": 0,
"multiple": 1,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310789,
"order_idx": 63,
"cfg_data": {
"name": "Start of Power of WPF (Pstart)",
"type": 6,
"mark": null,
"content": "50",
"position": 102,
"unit": "%Pn",
"max": null,
"min": null,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310790,
"order_idx": 64,
"cfg_data": {
"name": "Power Factor ar Rated Power (PFRP)",
"type": 6,
"mark": null,
"content": "0.95",
"position": 104,
"unit": "",
"max": 1,
"min": 0.8,
"multiple": 100,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310791,
"order_idx": 65,
"cfg_data": {
"name": "Reactive Power Control (RPC)",
"type": 1,
"mark": null,
"content": "",
"position": null,
"unit": null,
"max": null,
"min": null,
"multiple": null,
"scale": null,
"length": null,
"show": 1,
"edit": 0
}
},
{
"id": 310792,
"order_idx": 66,
"cfg_data": {
"name": "RPC F&C Code",
"type": 6,
"mark": null,
"content": "40962",
"position": 106,
"unit": "",
"max": null,
"min": null,
"multiple": 1,
"scale": null,
"length": null,
"show": 0,
"edit": 0
}
},
{
"id": 310793,
"order_idx": 67,
"cfg_data": {
"name": "RPC Function Activated",
"type": 6,
"mark": null,
"content": "0",
"position": 108,
"unit": "",
"max": 1,
"min": 0,
"multiple": 1,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
},
{
"id": 310794,
"order_idx": 68,
"cfg_data": {
"name": "Reactive Power (VAR)",
"type": 6,
"mark": null,
"content": "0",
"position": 110,
"unit": "%Sn",
"max": 50,
"min": 0,
"multiple": 10,
"scale": null,
"length": null,
"show": 1,
"edit": 1
}
}
]
},
"systemNotice": null
} |
@stefan123t Klar doch. :) Die Hex-Werte aus meiner OpenDTU v24.8.5 (sind identisch bei meinem HM-700 und meinem HM-1500): 03 00 20 02 00 0a 08 fc 07 30 00 1e 0b 3b 00 01 04 0b 00 1e 09 e2 10 00 13 88 12 8e 00 01 14 1e 00 01 20 00 00 01 30 03 02 58 0a c8 07 a3 13 92 12 8e 40 00 07 d0 03 e8 50 08 00 01 13 9c 01 90 00 10 01 f6 13 74 70 02 00 01 27 10 80 00 00 00 08 5b 01 2c 08 b7 09 41 09 9d 01 2c 90 00 00 01 ff a6 b0 00 00 00 01 f4 00 5f a0 02 00 00 00 00 5f 58 Die OpenDTU zeigt Name DE - DE_VDE4105_2018, Version 2.0.2 an. Das entspricht dem Eintrag in der S-Miles Cloud, wo DE_VDE4105_2018 Nacheilend 0.9 UErr Gen3 Germany 2.0.2 steht. Die Versionsnummer ist 2.0.2, weil ich erst ein Netzprofil mit Leistungsfaktor 0,9 übererregt erzeugt hatte (was V 2.0.1 ist) und davon ausgehend dieses mit o.a. Hex-Werten mit Leistungsfaktor 0,9 untererregt. Die Vorgaben vom Netzbetreiber waren da etwas "auslegbar". |
Naja, ich hab ja noch nen 2. HMS2000 und dort habe ich nichts verändert, d.h. dort läuft das Profil DE - DE_VDE4105_2018
Und das einzige was ich beim anderen HMS2000 verändert habe ist die FW Droop Slope (Kpower_Freq) von 40 auf 100 Pn%/Hz |
Hier nochmal die zwei gebräuchlichsten Original Hoymiles DE Grid Profile zum Vergleich Ich arbeite daran die og Tabelle zu überarbeiten (Formatierung, Reihenfolge) 104x
Grid Profile von @nivadis
Grid Profile von @fred777
Custom Grid Profile von @fred777
Grid Profile von @bombjack7000 DE - DE_VDE4105_2018, Version 2.0.2
Also prinzipiell wird die Versionsnummer hochgezählt bei einer Anpassung durch die S-Miles Cloud und in der jeweiligen profile_xxxx.json des Nutzers ein Alias hinterlegt. Es gibt aber auch von den Original Grid Profilen je nach Inverter Firmware Version und Inverter Firmware Creation Date unterschiedliche "Original" Versionen 2.0.0 bzw. teilweise auch 2.0.1. Siehe die o.a. Tabelle der Grid Profile. |
Is your feature request related to a problem? Please describe.
is it possible to configure the netprofile over opendtu, to AT (like described here: https://e4mobility.at/blog/hoymiles-netzprofil-richtig-einstellen)?
Describe the solution you'd like
Set the profile like described here: https://e4mobility.at/blog/hoymiles-netzprofil-richtig-einstellen
Describe alternatives you've considered
None except buying a DTU-Wlite just to configure the profile
Additional context
No response
The text was updated successfully, but these errors were encountered: