SMA Wechselrichter mit TwinCAT auslesen (Modbus)

Crashy

Level-2
Beiträge
123
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.
Ich habe mich noch nie mit Modbus beschäftigen müssen, aber irgendwann ist es halt soweit.

Die Bibliothek habe ich, kann die Slaves mit ModbusMasterSimulator erreichen und auslesen.

Verwendet wird der FB_MBReadRegs:
sIPAddr:= 'xxx.xxx.xxx.xx',
nTCPPort:= 502,
nUnitID:= 3,
nQuantitiy:=125,
nMBAddr:= 30001,
cbLength:= SIZEOF(arrData),
pDestAddr:= ADR(arrData),
tTimeout:= t#10s,

arrData: ARRAY [1..2] OF DWORD

Bei Execute kriege ich immer den Fehler 1794 ... invalid index group

Was habe ich falsch gemacht ?


Danke.
 
Habe eben mal dem Modbus-Konfigurator aufgerufen und wollte über "Get Configuration" sehen, was drinsteht. Da habe ich diese Fehlermeldung bekommen:

Failed to find TcModbusSrv entry in default.tps
Check if the TwinCAT Modbus Server is installed correctly.

Ja, der Server ist installiert und die TPS kann ich ja nicht öffnen.

[EDIT]
Den Fehler habe ich selbst gefunden. Lag daran, dass ich "als Administrator" installieren muss. :sm10:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich führe dieses Selbstgespräch einfach mal weiter ... habe nun Werte ausgelesen bekommen:

Verwendet wird der FB_MBReadRegs:
sIPAddr:= 'xxx.xxx.xxx.xx',
nTCPPort:= 502,
nUnitID:= 3,
nQuantitiy:=2,
nMBAddr:= 30201,
cbLength:= SIZEOF(Status),
pDestAddr:= ADR(Status),
tTimeout:= t#10s,

Status: ARRAY [1..2] OF WORD

Ein Auslesen aller Daten sieht unübersichtlich aus, da beim Abruf von fortlaufenden Bytes ausgegangen wird, aber SMA dies natürlich nicht so macht.
Wenn ich z.B. das Array auf 125 erweitere, dann werden auch Werte angegeben, die gar nicht existieren und dann stehen da auch schon mal 20 sinnlose Werte.

Was mich allerdings noch wundert, dass immer [2] vom Array beschrieben wird, nie [1].
Da ich noch nie mit Arrays gearbeitet habe entzieht sich das meiner Logik.

Direkt ein INT oder WORD beschreiben klappt nicht, obwohl es in der Beschreibung steht.

Wenn ich jetzt 20 Werte auslesen möchte, müsste ich 20 FB´s erstellen.
 
Zurück
Oben