Modbus TCP / Eingelesene Werte formatieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
AHERR2
User
Beiträge: 2
Registriert: Sonntag 11. Juni 2017, 18:00

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
Zuletzt geändert von Anonymous am Sonntag 11. Juni 2017, 18:35, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
AHERR2
User
Beiträge: 2
Registriert: Sonntag 11. Juni 2017, 18:00

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
Antworten