Coder Social home page Coder Social logo

Comments (21)

tobiasfaust avatar tobiasfaust commented on August 17, 2024

Hi Wilfried,
erstmal die gute Nachricht: Die Verkabelung stimmt, die Anfrage kommt beim Inverter an und der Inverter antwortet korrekt :)
Jetzt die schlechte Nachricht: Der Inverter versteht die Anfrage nicht und liefert einen korrekten Fehlercode mit (0x84). Soll heißen, das ModbusProtokoll ist abweichend.
Bitte versuche mal als erstes auf "Solax X3" umzustellen da "Solax MIC" offensichtlich nicht zu deinem Solax X3-Pro-G2 passt. Der Invertertyp muss am Anfang immer korrekt eingestellt sein ;)

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

Hi Tobias,
sorry, ich habe mich da verschrieben, ich hatte bereits "Solax X3" eingestellt.

from solaxmodbusgateway.

tobiasfaust avatar tobiasfaust commented on August 17, 2024

Ok, die Antwort bleibt leider dieselbe. Dein Request aus dem ersten Post ist aber von MIC.
Poste mal einen aktuellen Request.
Du kannst versuchen die Invertertypen nacheinander durchzuprobieren ob irgendeiner annähernd passt. Besser wäre es die ModbusProtokoll Doku vom SolaxSupport sich schicken zu lassen. Die antworten auch relativ schnell. Dann kann man eine eigene Sektion für den PRO anlegen wenn diese total abweichend von einer der anderen ist.

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

ok, den Support habe ich soeben angeschrieben.
Den aktuellem Request poste ich heute abend, da die Anlage nicht vor Ort ist.
Kann ich eigentlich im Reiter "Raw Data" vorab etwas testen?
Kannst du die Möglichkeiten dort noch etwas erklären?
grafik

from solaxmodbusgateway.

tobiasfaust avatar tobiasfaust commented on August 17, 2024

erst wenn korrekte Antworten kommen kann man auf der RAW Seite weiter arbeiten.
Wie? Ist im Wiki unter Punkt "6. Advanced stuff" erklärt ;) Hoffentlich verständlich

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

Hi Tobias,
nun habe ich über meinen Händler die Doku von Solax bekommen.
Kannst du mir mir eine pn schreiben, dann kann ich die dir zukommen lassen.

from solaxmodbusgateway.

kommando828 avatar kommando828 commented on August 17, 2024

You can add the PDF to a post by dragging it until its under the dotted line. Like so.

Solax Power X1-BOOST Single phase inverter Modbus-RTU comms protocolV1.0 - Public version.pdf

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

sorry, at the moment I'm not allowed to publish the document

from solaxmodbusgateway.

kommando828 avatar kommando828 commented on August 17, 2024

So instead compare the file you have with the Tobias posted pdf's and see which has the closest match.

https://github.com/tobiasfaust/SolaxModbusGateway/tree/development/docs

Then select that inverter and try a test.

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

Hi Tobias,
ich habe bei dem Dokument nun den Schutz entfernen können.
Es sieht analog zur V1.9 aus, ich komme damit leider nicht klar.
Kannst Du helfen?

Solax X3-PRO Modbus-Protokoll V2.7.pdf

from solaxmodbusgateway.

tobiasfaust avatar tobiasfaust commented on August 17, 2024

Hi,
wenn es wirklich dieses Dokument ist, stell mal den SOLAX MIC ein. Die Live-Register starten ab 0x400

Wenn es nichts hilft, dann bitte folgende Schritte nacheinander. Nach jedem Schritt bitte prüfen ob es schon funktioniert.

  1. 9600 Baud einstellen
  2. Firmwareupdate Wechselrichter, du brauchst bestenfalls die ARM Version 1.22 mit ProtokollVersion V2.7
  3. in der register.h, section "Solax MIC" den RequestLiveData anpassen auf:

"RequestLiveData": [
["#ClientID", "0x04", "0x04", "0x00", "0x00", "0x16"]
],
3. wenn 2 hilft, dann schrittweise die 0x16 (in Hex!) erhöhen bis der Fehler wieder kommt.

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

Hi Tobias,
ich habs heute nachmittag hinbekommen mit den Live-Registern ab 0x400 und ID-Registern ab 0x300 und es kommen tatsächlich Daten. Zumindest mal die Seriennummer, die anderen Werte kommen auch, passen mit der Doku von Solax jedoch nicht überein. Da muß ich morgen nochmals testen. Aktuell hat sich der WR abgeschaltet.
Ich melde mich wieder.
Vielen Dank soweit 👍

from solaxmodbusgateway.

tobiasfaust avatar tobiasfaust commented on August 17, 2024

Super, mach mal ein Firmwareupdate. Die Doku muss ja mit dem Stand der Firmware des WR zusammenpassen ;)

from solaxmodbusgateway.

tobiasfaust avatar tobiasfaust commented on August 17, 2024

gibt es etwas Neues?

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

Ich habe die Daten soweit eingepflegt. Beim Tages- und Gesamtertrag habe ich jedoch noch Probleme die Werte richtig zu interpretieren/darzustellen. Da muß ich noch etwas testen.

Noch eine Frage: wie funktioniert das mit dem "set-Befehl" und kann man neben der "InverterSN" weitere ID-Datas auf der webgui page darstellen?

from solaxmodbusgateway.

tobiasfaust avatar tobiasfaust commented on August 17, 2024

Welche WR-Settings hatten denn am besten gepasst? Oder musstest du eine neue Sektion bauen? Wenn du fertig bist nehme ich die JSON Änderung gerne an um sie ins Repo einchecken zu können

Zur Frage mit dem set Befehl:
Ich habe hier die Vorbereitungen im Code eingebaut, aber ohne Tests da ich selbst keine set´s absetze.
Zu den ID-Data: Aktuell können ohne Codeänderung keine weiteren ID-Daten angezeigt werden. Da müsste ich erst noch ran.

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

Hallo Tobias,
ich habe nun die richtige Darstellung für die noch offenen Werte gefunden. Anbei die Datei mit dem Teil der Register-Daten für den Solax-X3-PRO.
Solax-X3-PRO.txt

Grüße Wilfried

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

Zur Frage mit dem set Befehl:
Ich habe hier die Vorbereitungen im Code eingebaut, aber ohne Tests da ich selbst keine set´s absetze.

Ich sollte beim meinem Solax die Ausgangsleistung setzen können, kannst Du mir das mit dem set Befehl etwas näher erläutern?

from solaxmodbusgateway.

tobiasfaust avatar tobiasfaust commented on August 17, 2024

Hi,
Als erstes musst du das korrekte Register kennen was du setzen willst.
Als absoluter erster Versuch ist auch hier das Example ein guter Start. Einfach die zu setzende registergruppe an einen schreibbefehl anpassen, genaueres findest du nur in deiner Modbus Doku.

Problem ist, das Solax nur ungern die Dokumente mit der Auflistung der schreibregister rausrückt.

from solaxmodbusgateway.

MagicSven81 avatar MagicSven81 commented on August 17, 2024

Hier der Code für den X3 Pro G2:

"Solax-X3-PRO": {
	"config": {
		"RequestLiveData": [
			["#ClientID", "0x04", "0x04", "0x00", "0x00", "0x40"],
			["#ClientID", "0x04", "0x07", "0x00", "0x00", "0x0A"]
		],
		"RequestIdData": ["#ClientID", "0x03", "0x03", "0x00", "0x00", "0x54"],
		"ClientIdPos": 0,
		"LiveDataFunctionCodePos": 1,
		"LiveDataFunctionCode": "0x04",
		"IdDataFunctionCodePos": 1,
		"IdDataFunctionCode": "0x03",
		"LiveDataStartsAtPos": 3,
		"IdDataStartsAtPos": 3,
		"LiveDataErrorPos": 1,
		"LiveDataErrorCode": "0x84",
		"IdDataErrorPos": 1,
		"IdDataErrorCode": "0x83",
		"LiveDataSuccessPos": 1,
		"LiveDataSuccessCode": "0x04",
		"IdDataSuccessPos": 1,
		"IdDataSuccessCode": "0x03"
	},
	"data": {
		"livedata": [
			{
				"position": [3, 4],
				"name": "PvVoltage1",
				"realname": "Pv Voltage 1",
				"datatype": "float",
				"factor": 0.1,
				"unit": "V"
			},
			{
				"position": [5, 6],
				"name": "PvVoltage2",
				"realname": "PV Voltage 2",
				"datatype": "float",
				"factor": 0.1,
				"unit": "V"
			},
			{
				"position": [85, 86],
				"name": "PvVoltage3",
				"realname": "PV Voltage 3",
				"datatype": "float",
				"factor": 0.1,
				"unit": "V"
			},
			{
				"position": [7, 8],
				"name": "PvCurrent1",
				"realname": "PV Current 1",
				"datatype": "float",
				"factor": 0.1,
				"unit": "A"
			},
			{
				"position": [9, 10],
				"name": "PvCurrent2",
				"realname": "PV Current 2",
				"datatype": "float",
				"factor": 0.1,
				"unit": "A"
			},
			{
				"position": [87, 88],
				"name": "PvCurrent3",
				"realname": "PV Current 3",
				"datatype": "float",
				"factor": 0.1,
				"unit": "A"
			},
			{
				"position": [31, 32],
				"name": "PAC",
				"realname": "P-AC",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [33, 34],
				"name": "RunMode",
				"realname": "Inverter Status",
				"datatype": "integer",
				"mapping": [[0,"WaitMode"],[1,"CheckMode"],[2,"NormalMode"],[3,"FaultMode"],[4,"PermanentFaultMode"]]
			},
			{
				"position": [41, 42],
				"name": "Total Power DC",
				"realname": "P-DC",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [43, 44],
				"name": "PDC1",
				"realname": "P-DC1",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [45, 46],
				"name": "PDC2",
				"realname": "P-DC2",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [89, 90],
				"name": "PDC3",
				"realname": "P-DC3",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [11, 12],
				"name": "GridVoltage_R",
				"realname": "Grid Voltage L1",
				"datatype": "float",
				"factor": 0.1,
				"unit": "V"
			},
			{
				"position": [13, 14],
				"name": "GridVoltage_S",
				"realname": "Grid Voltage L2",
				"datatype": "float",
				"factor": 0.1,
				"unit": "V"
			},
			{
				"position": [15, 16],
				"name": "GridVoltage_T",
				"realname": "Grid Voltage L3",
				"datatype": "float",
				"factor": 0.1,
				"unit": "V"
			},
			{
				"position": [17, 18],
				"name": "GridFrequency_R",
				"realname": "Grid Frequency L1",
				"datatype": "float",
				"factor": 0.01,
				"unit": "Hz"
			},
			{
				"position": [19, 20],
				"name": "GridFrequency_S",
				"realname": "Grid Frequency L2",
				"datatype": "float",
				"factor": 0.01,
				"unit": "Hz"
			},
			{
				"position": [21, 22],
				"name": "GridFrequency_T",
				"realname": "Grid Frequency L3",
				"datatype": "float",
				"factor": 0.01,
				"unit": "Hz"
			},
			{
				"position": [23, 24],
				"name": "GridOutputCurrent_R",
				"realname": "Grid Current L1",
				"datatype": "float",
				"factor": 0.1,
				"unit": "A"
			},
			{
				"position": [25, 26],
				"name": "GridOutputCurrent_S",
				"realname": "Grid Current L2",
				"datatype": "float",
				"factor": 0.1,
				"unit": "A"
			},
			{
				"position": [27, 28],
				"name": "GridOutputCurrent_T",
				"realname": "Grid Current L3",
				"datatype": "float",
				"factor": 0.1,
				"unit": "A"
			},
			{
				"position": [29, 30],
				"name": "InverterTemperature",
				"realname": "Inverter Temperature",
				"datatype": "integer",
				"unit": "°C"
			},
			{
				"position": [91, 92],
				"name": "MainboardTemperature",
				"realname": "Mainboard Temperature",
				"datatype": "integer",
				"unit": "°C"
			},
			{
				"position": [75,76,73,74],
				"name": "YieldTotal",
				"realname": "Gesamtertrag",
				"datatype": "integer",
				"factor": 0.1,
				"unit": "kWh"
			},
			{
				"position": [79,80,77,78],
				"name": "YieldToday",
				"realname": "Tagesertrag",
				"datatype": "integer",
				"factor": 0.1,
				"unit": "kWh"
			},
			{
				"position": [123,124,121,122],
				"name": "GridPower",
				"realname": "GridPower",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [127,128,125,126],
				"name": "FeedInEnergy",
				"realname": "Feed In Energy",
				"datatype": "integer",
				"factor": 0.01,
				"unit": "kWh"
			},
			{
				"position": [131,132,129,130],
				"name": "ConsumeEnergy",
				"realname": "Consume Energy",
				"datatype": "integer",
				"factor": 0.01,
				"unit": "kWh"
			},
			{
				"position": [129,130,131,132],
				"name": "ConsumeEnergy2",
				"realname": "Consume Energy2",
				"datatype": "integer",
				"factor": 0.01,
				"unit": "kWh"
			},
			{
				"position": [133,134],
				"name": "PowerRef",
				"realname": "PowerRef",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [137,138,135,136],
				"name": "PowerToEV",
				"realname": "PowerToEV",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [139,140],
				"name": "PVRef",
				"realname": "PV Ref",
				"datatype": "integer",
				"unit": " "
			},
			{
				"position": [143,144,141,142],
				"name": "FeedInPowerR",
				"realname": "FeedInPowerL1",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [147,148,145,146],
				"name": "FeedInPowerS",
				"realname": "FeedInPowerL2",
				"datatype": "integer",
				"unit": "W"
			},
			{
				"position": [151,152,149,150],
				"name": "FeedInPowerT",
				"realname": "FeedInPowerL3",
				"datatype": "integer",
				"unit": "W"
			}
		],
		"id": [
				{
				"position": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
				"name": "InverterSN",
				"realname": "Inverter SerialNumber",
				"datatype": "string"
			},
			{
				"position": [17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
				"name": "FactoryName",
				"realname": "Factory Name",
				"datatype": "string"
			},
			{
				"position": [31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42],
				"name": "ModuleName",
				"realname": "Module Name",
				"datatype": "string"
			},
			{
				"position": [43, 44, 45, 46, 47, 48],
				"name": "FirmwareVersion",
				"realname": "Firmware Version",
				"datatype": "string"
			},
			{
				"position": [159],
				"name": "Safty",
				"realname": "Safty",
				"datatype": "integer"
			},
			{
				"position": [160],
				"name": "MachineType",
				"realname": "Machine Type",
				"datatype": "integer"
			},
			{
				"position": [161],
				"name": "Power Ratio",
				"realname": "Percent of Powerlimits",
				"datatype": "integer",
				"factor": 0.01,
				"unit": "%"
			},
			{
				"position": [162],
				"name": "MpptScanMode",
				"realname": "MpptScanMode",
				"datatype": "integer"
			}
		]
	}
},

from solaxmodbusgateway.

wm1962 avatar wm1962 commented on August 17, 2024

@MagicSven81
Hast du zufällig schon mal probiert in die Single-Write-Register ab 0x600 etwas zuschreiben?

Ich versuche in das Register 0x60F (PowerLimitsPercent) zu schreiben, schreibe daher zuerst in 0x600 das Unlock-Passwort (2014 - dezimal), was positiv quittiert wird
0x02 0x06 0x06 0x00 0x00 0x00 0x89 0x71 - antwort: 0x02 0x06 0x06 0x00 0x00 0x00 0x89 0x71

Danach schreibe ich in den Wert 0x64 (100 - dezimal) ins Register 0x60F und bekomme jedoch eine negative Quittierung
0x02 0x06 0x06 0x0F 0x00 0x64 0xB8 0x99 - antwort: 0x02 0x86 0x06 0x32 0x62

Gruß Wilfried

from solaxmodbusgateway.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.