Seite 1 von 3

Modbus TCP

Verfasst: 2. Nov 2018 16:32
von simon24j
Versuche verzeifelt das Modbus TCP ans laufen zu bekommen....
hoffe es kann mir einer sagen was ich vergesse oder falsch mache...
hier meine .items

Code: Alles auswählen

Number Input1500Float32            "Input registers 1500-1501 as float32 [%.1f]"    { channel="modbus:data:localhostTCP:inputRegisters:input1500:number" }
Number Input1502Float32            "Input registers 1502-1503 as float32 [%.1f]"    { channel="modbus:data:localhostTCP:inputRegisters:input1502:number" } 
hier die .things

Code: Alles auswählen

Bridge modbus:tcp:localhostTCP [ host="192.168.178.103", port=502, id=2 ] {

    Bridge poller inputRegisters [ start=2, length=4, refresh=1000, type="input" ] {
        Thing data input1500 [ readStart="0", readValueType="float32" ]
        Thing data input1502 [ readStart="2", readValueType="float32" ]
	}
}
und die .sitemap

Code: Alles auswählen

Text item=Input1500Float32
Text item=Input1502Float32
wenn ich´s direkt über die modbus.cfg mache klappt das auslesen nur weiß ich hier nicht wie ich mehrere Register gleichzeitig auslesen kann und danach die einzelnen floats wieder aufzuteilen....

Code: Alles auswählen

tcp.Gatewaysdm630.connection=192.168.178.103:502:100:0:0:3:1000
tcp.Gatewaysdm630.type=input
tcp.Gatewaysdm630.id=255
tcp.Gatewaysdm630.start=0
tcp.Gatewaysdm630.length=2
tcp.Gatewaysdm630.valuetype=float32
müsste ca. 50 register auslesen was dann 25 floats ergeben würden.

Danke schon mal

Re: Modbus TCP

Verfasst: 3. Nov 2018 11:16
von udo1toni
Welche version von modbus hast Du installiert?

Deine Konfiguration vorne ist von modbus2, die modbus.cfg gehört aber zu modbus1. Wenn Du modbus2 installiert hast, muss Modbus in Paper UI in der Liste möglicher Bindings auftauchen, wenn Du dort auf das Pluszeichen (Thing manuell anlegen) klickst.

Re: Modbus TCP

Verfasst: 3. Nov 2018 12:14
von simon24j
hat sich erledigt, hatte die V1 installiert gehabt, hab jetzt auf dem manuellen Weg die V2 Installiert und jetzt klappts,Danke

Re: Modbus TCP

Verfasst: 9. Okt 2019 00:10
von mcdandrew
Ich hole das Thema mal wieder nach oben...

Ich nutze für unser E-Fahrzeug eine Eigenbau Wallbox mit einer Steuerung der Firma Phoenix Contact Typ "EV Charge Control"
Im Menü gibt es anscheinend auch die Möglichkeit Daten per Ferne abzufragen bzw. die Box anzusteuern.
Meine Frage nun würde das per Modbus Binding funktionieren.

Leider sind meiner Erfahrungen im Bereich Modbus gleich Null...deshalb hoffe ich auf Unterstützung. :?
Im Anhang mal ein Foto der Konfigurationsoberfläche des Gerätes.

Re: Modbus TCP

Verfasst: 9. Okt 2019 13:33
von AnderOstsee
Hallo,

an der Angabe der Baudrate kannst Du erkennen, dass es sich hier um eine serielle Verbindung handelt.
Du benötigst ein Twisted-Pair-Kabel und eine Gegenstelle mit ebenfalls einer RS485 Schnittstelle, die serielles Modbus spricht (hier Modbus RTU, kein TCP, eigentlich bist du hier im falschen Thread). Es ist also interessant wie deine jetzige Installation (Hardware und OS) aussieht. Beispielsweise benutze ich einen Rasbpi mit Openhabian und Huckepack-Platine https://www.hwhardsoft.de/deutsch/proje ... 85-shield/. In den Unterlagen zu deiner Steuerung findest du die nötigen Informationen (Datenbereiche, Datentypen). OpenHAB lässt du dabei am besten vorerst weg, denn es gibt diverse Tools, mit denen man erst einmal eine simple Kontaktaufnahme versuchen sollte. Denn komplex ist die Einrichtung des Modbus-Bindungs auch so schon genug, da sollte das Grundsätzliche bereits erfolgreich geklärt sein.
Also generell sollte dies mit dem Modbus-Binding funktionieren.

grüße

ralf

Re: Modbus TCP

Verfasst: 10. Nov 2019 00:59
von mcdandrew
Habe mir die Sache noch einmal angesehen. Die Ladesteuerung bietet zum einen die Möglichkeite über eine serielle Schnittstelle ein Energiemessgerät anzubinden, zum anderen kann sie selbst auch über Modbus TCP ausgelesen und gesteuert werden.

Im Handbuch steht dazu
Sie können über Modbus auf die Register des Gerätes zugreifen. Das Gerät arbeitet als
Modbus-Slave mit der Adresse 180. Es wartet am Port 502 auf eingehende Modbus/TCPAnfragen.
Ein Anfang wäre schon einmal die folgenden 3 Register
Adresse Wert Zugriff Funktion Kodierung
100 16 Bit Lesen EV-Status ASCII (8 Bit), A ... F
101 16 Bit Lesen Proximity Ladestrom Integer, Ampere
102 32 Bit Lesen Ladezeit Integer, Sekunden
Habe nun in der Paper UI das Modbus Binding installiert und eine"Modbus TCP Slave" bridge erstellt.
IP der Ladesteuerung, Port 502 und ID 180 vergeben...wird als Online angezeigt.

Danach ein weiteres "Modbus Data" Thing mit der Read Adress 101 (Ladestrom).
Bei Read Value Type wählte ich "16 Bit unsigned Integer"

Nach dem Speichern wird es allerdings als Offline angezeigt.

Hat jemand eine Idee?

Re: Modbus TCP

Verfasst: 10. Nov 2019 02:10
von mcdandrew
Nach langem probieren läuft es nun...

Thing-File

Code: Alles auswählen

Bridge modbus:tcp:EVSE_TCP [ host="192.168.200.250", port=502, id=180 ] {

    Bridge poller inputRegisters [ start=100, length=42, refresh=1000, type="input" ] {
        Thing data input100 [ readStart="100", readValueType="int16" ]
        Thing data input101 [ readStart="101", readValueType="int16" ]
	}
}
Item-File

Code: Alles auswählen

Number Input100            "Ladestatus [%.1f]"    { channel="modbus:data:EVSE_TCP:inputRegisters:input100:number" }
Number Input101            "Ladestrom [%.1f]"    { channel="modbus:data:EVSE_TCP:inputRegisters:input101:number" } 

Re: Modbus TCP

Verfasst: 17. Nov 2019 10:41
von mcdandrew
Nachdem ich nun die Ladesteuerung ausleen kann, hatte ich die Idee auch unsere Energiezähler im Zählerschrank auszulesen.
Verbaut habe ich diese hier https://www.google.de/url?sa=t&rct=j&q= ... _jb-bOwtVe

Die Daten werden per Modbus zur Verfügung gestellt. Zusätzlich dazu benötige ich noch einen Modbus TCP Gateway.
Dafür habe ich mir diesen besorgt und per WLAN in mein Netzwerk eingebunden.

https://www.amazon.de/USR-W610-Drahtlos ... B07DNWM62H

Der Energiezähler hat die ID 3 und stellt auf bspw. auf Register 24 die Spannung zur Verfügung
Den folgenden Code nutze ich nun

Code: Alles auswählen

Bridge modbus:tcp:USR_TCP [ host="192.168.10.209", port=502, id=3 ] {

    Bridge poller usrRegister [ start=0, length=29, refresh=1000, type="input" ] {
	
        Thing data input35 [ readStart="24", readValueType="int32" ]
	}
}
Die Bridge "modbus:tcp:USR_TCP" wird im Paper UI als Online angezeigt, die Verbindung zum Gateway scheint also zu funktionieren.
Die Poller Bridge "usrRegister" und das Thing werden allerdings als Offline gekennzeichnet.
Im Log steht folgdendes

Code: Alles auswählen

2019-11-17 10:30:12.911 [ERROR] [wimpi.modbus.io.ModbusTCPTransaction] - execute try 1/1 error: I/O exception: SocketTimeoutException Read timed out. Request: net.wimpi.modbus.msg.ReadInputRegistersRequest@172c963 (unit id 3 & transaction 8880). Address: /192.168.10.209:502

2019-11-17 10:30:12.914 [ERROR] [wimpi.modbus.io.ModbusTCPTransaction] - execute reached max tries 1, throwing last error: I/O exception: SocketTimeoutException Read timed out. Request: net.wimpi.modbus.msg.ReadInputRegistersRequest@172c963 (unit id 3 & transaction 8880). Address: /192.168.10.209:502

2019-11-17 10:30:12.917 [ERROR] [rt.modbus.internal.ModbusManagerImpl] - Last try 3 failed when executing request (ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@1a6faee[slaveId=3,functionCode=READ_INPUT_REGISTERS,start=0,length=29,maxTries=3]). Aborting. Error was I/O error, so reseting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception: SocketTimeoutException Read timed out [operation ID 283875c9-51fd-4503-a9a0-54efaff3a6fd]

2019-11-17 10:30:12.923 [ERROR] [ernal.handler.ModbusDataThingHandler] - Thing modbus:data:USR_TCP:usrRegister:input35 'Modbus data' had ModbusSlaveIOExceptionImpl error on read: ModbusSlaveIOException(cause=ModbusIOException, EOF=false, message='I/O exception: SocketTimeoutException Read timed out', cause2=null)
Das Gateway ist wie folgt konfiguriert...

Bild

Bild
Hat jemand eine Idee wo ich noch nach dem Fehler suchen könnte???

Re: Modbus TCP

Verfasst: 21. Nov 2019 01:06
von mcdandrew
Habe nun noch einen weiteren Modbus Gateway getestet...identisches Problem.

So langsam glaube ich das meine geplante Umsetzung so nicht funktionieren kann...eventuell kann jemand helfen und sagen ob es theortisch so möglich wäre.

Ich möchte einen Energiezähler mit Modbus Schnittstelle durch Openhab auslesen lassen.
Ich benötige somit einen Modbus TCP Gateway, damit Openhab dies kann.

Habe nun noch diesen hier...https://www.waveshare.com/w/upload/6/6d ... ual-en.pdf

Konfiguriert als TCP Server welcher auf Port 502 läuft. Das Windows Tool Modbus Poll scheint Verbindung aufzubauen kann aber keine Daten auslesen.

Re: Modbus TCP

Verfasst: 11. Mär 2021 22:52
von EMaster
Habe irgendwie das gleiche Problem. Hast Du es inzwischen hinbekommen? (Ist ja schon eine Weile her.)
Ich habe einen Modbus-Zähler (Schneider PM9C), habe mir dazu dieses Gateway (USR-DR302) bestellt und habe alles, wie auf Seite 30 (Abschnitt 4.6) des Gateway-Manuals eingestellt. Wie es ausschaut, kommt keine Kommunikation zwischen dem Zähler und dem Gateway zustande.
Mit allen mir zu Verfügung stehenden Tools erreiche ich den Zähler hinter dem Gateway unter der korrekten Adresse nicht und auch ein Scanner (CAS Modbus Scanner) findet ihn nicht.
Alternativ habe ich versucht erst einmal ohne Zähler eine Kommunikation am Gateway von der RS485- zur IP-Schnittstelle aufzubauen und habe die Einstellungen dafür entsprechend dem Manual gesetzt und das entsprechende Tool zum Testen benutzt. Hier kann ich nur vom TCP-Server (IP ) zur RS485 senden, von der RS485 zum Server passiert (leider) auch nichts.
Kennt jemand dieses Gateway und hat vielleicht einen Tipp für mich?
Kann es evtl. sein, dass ich 120Ohm-Widerstände einbauen muss? (Leitungslänge aktuell zum Testen ca. 30cm)
Mit welchen Gateway arbeitet Ihr???