Pymodbus3 UDP Übertragung

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Mesta
User
Beiträge: 10
Registriert: Donnerstag 16. August 2018, 10:40

Hallo zusammen,
ich verwende Pymodbus3 um Daten via Modbus zu senden und empfangen. Über TCP/IP funktioniert auch alles super, aber bei der UDP-Übertragung bekomme ich immer ein None Rückgabewert.
Hier nochmal ein kleines Beispiel

Code: Alles auswählen

#from pymodbus.client.sync import ModbusTcpClient as ModbusClient # funktioniert
from pymodbus.client.sync import ModbusUdpClient as ModbusClient 

ip_udp = 'xxx.xxx.xxx.xxx'
port_udp = xxxx
address = 1000
size = 1
UNIT = 0x1

client = ModbusClient(ip_udp,  port_udp)
client.connect()

rr = client.read_holding_registers(address, size, unit=UNIT)
print(rr) # Über TCP/IP bekomme ich eine Liste, über UDP ein None ...

client.close()
Die Übertragung über UDP habe ich bereits mit einem anderen Programm getestet und alles lief soweit gut.
Hat jemand einen Rat für mich?
Grüße
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Und welchen Port verwendest du? Vermutlich den selben wie bei einer TCP-Connection?

Übrigens gibt es keine `UDP`-artige IP-Adresse, du solltest den Variablennamen also überdenken.
When we say computer, we mean the electronic computer.
Mesta
User
Beiträge: 10
Registriert: Donnerstag 16. August 2018, 10:40

Ich verwende Port 502, das ist der Selbe den ich auch für die TCP-Connection verwende. Wie muss der UDP-Port den gestalltet sein?

Die Ip wäre dann am besten der UDP_Header, oder wie meinst du dass?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Mesta: Es war gemeint das `ip_udp` ”falsch” ist, weil es keine speziellen UDP-IPs gibt die man zum Beispiel von speziellen TCP-IPs unterscheiden könnte. Das wäre also einfach `ip_address`.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Mesta
User
Beiträge: 10
Registriert: Donnerstag 16. August 2018, 10:40

@__blackjack__: Ok das ist klar. Aber heißt es dann, dass es einen UDP-spezifischen Port gibt?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Udp und tcp haben beide den gleichen Port-Bereich (1-65535), aber kommen sich nicht in die Quere.
Mesta
User
Beiträge: 10
Registriert: Donnerstag 16. August 2018, 10:40

Ok, ich versuche einfach mal eine andere library und vergleiche die Ergebnisse.
Ich vermute das irgendwas mit dem request nicht stimmt.
Antworten