Seite 2 von 2
Re: Verbindng eines Modbus-Adapters mit drei Stromzählern
Verfasst: 18. Aug 2024 14:18
von udo1toni
violine21 hat geschrieben: ↑18. Aug 2024 10:24
udo1toni hat geschrieben: ↑18. Aug 2024 00:59
Mein Verständnis von Modbus ist allerdings, dass ich
eine Schnittstelle nutze und alle Geräte über diese
eine Schnittstelle angebunden sind. Die ID ist aber Bestandteil der Schnittstelle...
Bei der Konfiguration des Geräts (nicht in OH), in diesem Fall Stromzähler legt man die ID fest. Dann hängen die Geräte am Bus und jedes hat eine andere ID (Busadresse). Jedes Gerät hat in OH dann seine eigene Modbus-Bridge.
Ja, soweit ist das klar. Aber es gibt da ja die doppelte Bridge, also welche "eigene Bridge" meinst Du hier? Die ID kann man ja nur auf oberster Ebene setzen, dort ist aber auch die Verbindung über TCP (oder über RS485) konfiguriert. Und diese Verbindung kann man meines Wissens nicht doppelt angeben.
Irgendwie bin ich froh, dass ich meine Geräte bisher alle ohne Modbus anbinden konnte.
Auch dieses Konstrukt, dass ein physisches Gerät aus mehreren Things besteht, wobei ein Thing dann jeweils Channel beinhaltet, die aber unterschiedliche Darstellungen des selben Werts sind (ich beziehe mich hier auf die "generic" Modbus Bridge) widerspricht dem üblichen Datenmodell in openHAB.
Re: Verbindng eines Modbus-Adapters mit drei Stromzählern
Verfasst: 18. Aug 2024 21:42
von violine21
udo1toni hat geschrieben: ↑18. Aug 2024 14:18
Ja, soweit ist das klar. Aber es gibt da ja die doppelte Bridge, also welche "eigene Bridge" meinst Du hier? Die ID kann man ja nur auf oberster Ebene setzen, dort ist aber auch die Verbindung über TCP (oder über RS485) konfiguriert. Und diese Verbindung kann man meines Wissens nicht doppelt angeben.
Erst parametriert man den Modbus-Teilnehmer (Wechselrichter, Zähler,...) und vergibt jedem eine andere ID.
Dann legt man in OH
für jeden Teilnehmer eine Modbus-Bridge (Modbus Serial Slave) an. Dort hinterlegst Du dann die entsprechende ID.
Anschliessend werden die Register gepollt (Regular Poll), dort wählst Du als Bridge die zuvor angelegte entsprechende Modbus-Bridge aus.
Jeder Modbus-Teilnehmer hat so seine eigene OH-Konfiguration.
es gibt da ja die doppelte Bridge
Was meinst Du mit
doppelter Bridge?
Re: Verbindng eines Modbus-Adapters mit drei Stromzählern
Verfasst: 19. Aug 2024 01:16
von udo1toni
violine21 hat geschrieben: ↑18. Aug 2024 21:42
Was meinst Du mit doppelter Bridge?
Na schau Dir die Doku an:
https://www.openhab.org/addons/bindings ... ic-example
Code: Alles auswählen
Bridge modbus:tcp:localhostTCP [ host="127.0.0.1", port=502, id=2 ] {
Bridge poller coils [ start=4, length=2, refresh=1000, type="coil" ] {
Thing data do4 [ readStart="4", readValueType="bit", writeStart="4", writeValueType="bit", writeType="coil" ]
}
}
Re: Verbindng eines Modbus-Adapters mit drei Stromzählern
Verfasst: 19. Aug 2024 01:41
von violine21
violine21 hat geschrieben: ↑18. Aug 2024 21:42
Was meinst Du mit doppelter Bridge?
Jetzt weiss ich, was Du meinst.
Zum Anlegen der Things bevorzuge ich den automatisierten Weg über die UI. Der Aufbau ist aber genauso.
Gerät 1:
Code: Alles auswählen
UID: modbus:tcp:8fc1111b54
label: Modbus TCP Slave
thingTypeUID: modbus:tcp
configuration:
rtuEncoded: false
connectMaxTries: 1
reconnectAfterMillis: 0
timeBetweenTransactionsMillis: 60
port: 502
timeBetweenReconnectMillis: 0
connectTimeoutMillis: 10000
host: localhost
afterConnectionDelayMillis: 0
id: 1
enableDiscovery: false
Code: Alles auswählen
UID: modbus:poller:8fc1111b54:2598039d22
label: Varta Modbus-Register 1.000-1.080
thingTypeUID: modbus:poller
configuration:
length: 80
start: 1001
refresh: 10000
maxTries: 3
cacheMillis: 50
type: holding
bridgeUID: modbus:tcp:8fc1111b54
Gerät 2:
Code: Alles auswählen
UID: modbus:tcp:9a32a0261c
label: Modbus TCP Slave 1
thingTypeUID: modbus:tcp
configuration:
rtuEncoded: false
timeBetweenTransactionsMillis: 60
connectMaxTries: 1
reconnectAfterMillis: 0
port: 502
timeBetweenReconnectMillis: 0
host: localhost
connectTimeoutMillis: 10000
afterConnectionDelayMillis: 0
id: 2
enableDiscovery: false
Code: Alles auswählen
UID: modbus:poller:9a32a0261c:2a8b2d73ba
label: Varta Modbus-Register 2.000-2.080
thingTypeUID: modbus:poller
configuration:
length: 80
start: 0
refresh: 500
maxTries: 3
cacheMillis: 50
type: coil
bridgeUID: modbus:tcp:9a32a0261c
Re: Verbindng eines Modbus-Adapters mit drei Stromzählern
Verfasst: 19. Aug 2024 12:37
von udo1toni
Ah.
Das heißt, man kann mehrfach die selbe IP und den selben Port angeben...
Ich meine, da mal etwas gelesen zu haben, wo das nicht funktionierte.
Aber umso besser - auch wenn es aus meiner Sicht unglücklich designed ist, da zumindest die übergeordnete Bridge eigentlich die Kommunikationsschnittstelle zum Bus darstellen sollte, und hier ist es ja nur ein Bus mit mehreren Teilnehmern.
Gegenbeispiel hierzu wären diverse andere Bussysteme, sei es knx, homematic, zwave, zigbee...
Und ich habe einen Yamaha AV Receiver, da ist es sogar so, dass man ihn wahlweise rein als Thing oder als Bridge mit einem oder mehreren Things anlegen kann (hat in dem Fall mit Multiroom zu tun), das wäre dann auch ein Gerät, welches aus mehreren internen "Einzelgeräten" besteht.
Bei Modbus gibt es ja durchaus Geräte (z.B. Heizung...), wo mehrere IDs verwendet werden. Ich muss dann also für eine Hardware mehrere übergeordnete Bridges anlegen, das widerspricht dem Thing-Gedanken komplett.
Re: Verbindng eines Modbus-Adapters mit drei Stromzählern
Verfasst: 20. Aug 2024 01:44
von violine21
Leichter verständlich ist es bei den seriellen Modbus-Verbindungen.
Hier gibst Du die COM-Schnittstelle an, was ja in der Regel immer die gleiche ist und angesprochen wird das einzelne Gerät über die ID.
Ähnlich dem PROFIBUS in der SPS-Technik, wo es auch nur eine Bus-Adresse (vergleichbar mit der ID) gibt.