ChrisD70 / FHEM-Modules

3 stars 0 forks source link

getting error using ModbusTCPServer in fhem #1

Open consult-voss opened 4 years ago

consult-voss commented 4 years ago

Ich habe eine Solar-Log50-Anlage ( Firmware: 4.2.4 Build 113 - 04.06.2019).

mit der Konfiguration (in fhem)

define SolarLogServer ModbusTCPServer 192.168.178.58

erhalte ich den status opened

sobald ich mit define solarlog_yesterdayyield ModbusRegister 0 3510 attr solarlog_yesterdayyield IODev SolarLogServer ...

auf SolarLogServer zugreife, erhalte ich im fhem-Log folgende Fehlermeldungen:

2020.05.13 10:56:58 5: AddRQueue [0D BE 00 00 00 06] 00 03 0D BE 00 01 2020.05.13 10:56:58 5: SimpleWrite [0D BE 00 00 00 06] 00 03 0D BE 00 01 2020.05.13 10:56:58 5: ModbusTCPServer_Parse: received [0D BE 00 00 00 03] 00 83 02 2020.05.13 10:56:58 2: ModbusTCPServer_Parse: except (code 2) 2020.05.13 10:56:59 5: AddRQueue [0D BE 00 00 00 06] 00 03 0D BE 00 01 2020.05.13 10:56:59 5: SimpleWrite [0D BE 00 00 00 06] 00 03 0D BE 00 01 2020.05.13 10:56:59 5: ModbusTCPServer_Parse: received [0D BE 00 00 00 03] 00 83 02 2020.05.13 10:56:59 2: ModbusTCPServer_Parse: except (code 2)

Das Device SolarLogSAerver hat dann den state : error im Internal statistics steht: 1664 / 1664 / 14976 / 19968

Was ist falsch?

(Michael Voss; michael@ristau-voss.de)

ChrisD70 commented 4 years ago

Wie sieht die komplette Definition von solarlog_yesterdayyield aus ?

Der Fehler kommt beim Lesen der Adresse 3518. Das Gerät kann mit der Adresse nichts anfangen und liefert deswegen einen Fehler zurück.

Laut der Dokumentation die ich gefunden habe muss der Zugriff über Input- und nicht Holding-Register erfolgen. Du kannst versuchen das Attribut registerType auf Input zu setzen.

consult-voss commented 4 years ago

Hier die gesamte Definition: ######################################################

ModbusTCPServer definieren

###################################################### define SolarLogServer ModbusTCPServer 192.168.178.58 setuuid SolarLogServer 5d82aba1-f33f-089e-a9c6-042ef118b83b4a9c attr SolarLogServer room Solar attr SolarLogServer verbose 5

attr SolarLogServer pollInterval 5

attr SolarLogServer queueDelay 200

# define solarlog_yesterdayyield ModbusRegister 0 3510 setuuid solarlog_yesterdayyield 5eb972b5-f33f-089e-ce0d-3599e1f7807b9505 attr solarlog_yesterdayyield IODev SolarLogServer attr solarlog_yesterdayyield alias Ertrag_Vortag attr solarlog_yesterdayyield alignUpdateInterval 08:00:00 attr solarlog_yesterdayyield conversion 0.001:0 attr solarlog_yesterdayyield event-on-change-reading .* attr solarlog_yesterdayyield plcDataType DWORD attr solarlog_yesterdayyield registerType Input attr solarlog_yesterdayyield room Solar attr solarlog_yesterdayyield stateAlias solar attr solarlog_yesterdayyield stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))} attr solarlog_yesterdayyield updateInterval 24:00:00 # #######################################################

Register aktuelle Leistung definieren

Erstellt........: 07.03.2015

Geändert........: 04.04.2015

####################################################### define solarlog_totalpac ModbusRegister 0 3518 attr solarlog_totalpac IODev SolarLogServer attr solarlog_totalpac event-on-change-reading .* attr solarlog_totalpac registerType Input

Ursprünglich stand registerType Holding drin. Aber auch nach Änderung gibt es den gleichen Fehler.

ChrisD70 commented 4 years ago

Der Fehler besagt dass du versuchst auf eine Adresse zuzugreifen mit der das Gerät nichts anfangen kann. Gibt es den Fehler nur für Adresse 3518 oder auch für 3510 ?

In der Doku von Solar-Log steht dass Slave ID 1 verwendet werden soll, du hast aber 0 eingestellt. Der Wert auf Adresse 3518 (Pac consumption) ist angeblich 32 Bit breit, es werden aber nur 16 Bit gelesen.

Falls der Fehler weiterhin besteht musst du dich an den Hersteller wenden und nach der Modbus-Dokumentation für deine Firmware fragen.