Kontaktierung eines Siemens QFA3150/MO durch Python

frosti

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag liebe Damen und Herren,

Ich bin aktuell in meinem fünften Semester Maschinenbau und darf in meinem Praxissemester Python programmieren (Erfahrung ca. halbes Jahr).

Nun habe ich den Auftrag bekommen mittels einem Python-Skript über einen USB-nano-485 ein Siemens QFA3150/MO Fühler über ein Modbus-Protokoll anzusprechen und Werte zu ermitteln.

In meinem folgenden Code-Schnipsel werden die Register für "Temperatur" und "Wert für relative Feuchtigkeit" behandelt.
--------
try:
# Lese Holding Register Nr. 1 (Adresse 0) und Nr. 3 (Adresse 2)
response1 = client.read_holding_registers(address=0, count=1, slave=1)
response3 = client.read_holding_registers(address=2, count=1, slave=1)

if not response1.isError():
register1_value = response1.registers[0]
print("Register 1 Wert:", register1_value)
else:
print("Fehler beim Lesen von Register 1:", response1)
register1_value = None

if not response3.isError():
register3_value = response3.registers[0]
print("Register 3 Wert:", register3_value)
else:
print("Fehler beim Lesen von Register 3:", response3)
register3_value = None

# Beispiel für die Interpretation der Software-Versionsinformationen
if register1_value is not None:
software_version = register1_value
major_version = (software_version >> 24) & 0xFF
minor_version = (software_version >> 16) & 0xFF
build_version = software_version & 0xFFFF
print(f"Software-Version: {major_version}.{minor_version}.{build_version}")
else:
print("Software-Version konnte nicht interpretiert werden, da Register 1 nicht gelesen werden konnte.")
except ModbusException as e:
print("Modbus-Fehler:", e)

--------

Die Fehlermeldungen lauten:

Fehler beim Lesen von Register 1: Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 4 bytes (0 received)
Fehler beim Lesen von Register 3: Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response
Software-Version konnte nicht interpretiert werden, da Register 1 nicht gelesen werden konnte.

Jedoch ist wichtig zu erwähnen, dass der Tastfühler über LabView mit den selben Einstellungen(Baudrate,Stopbits etc) angesprochen werden kann, jedoch nicht über das Python-Skript.

Hat jemand ähnliche Erfahrungen bzw. einen Ratschlag wie man hier besser an das Thema herangehen kann?

Ich bedanke mich bereits im voraus!
 
Zurück
Oben