Seite 1 von 1

Modbus TCP / Eingelesene Werte formatieren

Verfasst: Sonntag 11. Juni 2017, 18:18
von AHERR2
Guten Abend,

ich lese über Modbus mit einem kleinen Python-Programm einige Daten aus.
Leider werden diese Daten so ausgegeben:

[0, 2636]
[0, 8]

Wie kann ich die Daten so formatieren, das ich die 2636 und die 8 in zwei einzelne Variablen speichern und weiter verarbeiten kann?

Hier der Programm-Code:

Code: Alles auswählen

from pymodbus.client.sync import ModbusTcpClient

host = '192.168.2.40'
port = 502 

client = ModbusTcpClient(host, port)
client.connect()

r67 = client.read_input_registers(0x06,2,unit=1)
assert(r67.function_code < 0x80)     # test that we are not an error
print r67.registers

r89 = client.read_input_registers(0x08,2,unit=1)
assert(r89.function_code < 0x80)     # test that we are not an error
print r89.registers

#Close TCP Port
client.close()
Gruß, AHERR2

Re: Modbus TCP / Eingelesene Werte formatieren

Verfasst: Sonntag 11. Juni 2017, 20:30
von Sirius3
@AHERR2: »r67.registers« ist offensichtlich eine Liste und wie man auf Listenelemente zugreift ist in jedem Grundlagentutorial beschrieben. »assert« ist keine Funktion, die Klammern gehören da also nicht hin. Außerdem sollte man »assert« nur zum Testen gegen Programmierfehler verwenden und nicht, wenn man Eingabedaten prüfen will.

Re: Modbus TCP / Eingelesene Werte formatieren

Verfasst: Montag 12. Juni 2017, 15:12
von AHERR2
Sirius3 hat geschrieben:@AHERR2: »r67.registers« ist offensichtlich eine Liste und wie man auf Listenelemente zugreift ist in jedem Grundlagentutorial beschrieben. »assert« ist keine Funktion, die Klammern gehören da also nicht hin. Außerdem sollte man »assert« nur zum Testen gegen Programmierfehler verwenden und nicht, wenn man Eingabedaten prüfen will.
Hallo Sirius3,

Danke für den Denkanstoss, ich habe es hinbekommen.

Code: Alles auswählen

print r67.registers
b67 = r67.registers[1]
print b67
Gruß, AHERR2