Ik probeer een modbus apparaat te lezen in Python.
Dat lukt in zoverre dat ik de registers wel kan lezen.
Nu staan er op een aantal locaties strings weggezet.
onderstaand een stukje code
try:
data = client.read_holding_registers(2603,count= 10,slave =1)
print(data)
datastr = client.convert_from_registers(data.registers,data_type=str, word_order= "big", string_encoding = "utf-8")
print(datastr)
except:
Ik doe niet zoveel in Python, waar ik op vast loop is data_type=str
dat vreet de functie niet, ik moet dus een data type opgeven str, string met of zonder "" werkt niet.
Wat is de methode ?
Paulinha_B
Honourable Member
"Ik spreek Spaans tegen God, Italiaans tegen de vrouwen, Frans tegen mannen en Duits tegen mijn paard." Dixit Carlos V, Römisch-deutscher Kaiser
Wat is de foutmelding?
Is het python3 of een oudere? python3 doet nogal eens lastig over stringconversie. Soms kan de conversie geforceerd worden door een string-element toe te voegen, bv.
my_string=my_string+" "
En uit welk package of module komen die client.xxx functies? Raadpleeg daarvan de doc of - vaak eenvoudiger - de voorbeelden.
Uit de documentatie:
string_encoding – The encoding with which to decode the bytearray, only used when data_type=DATATYPE.STRING
@dekees
Ik had vannacht even tijd en de docs eens doorgelezen. En inderdaad
data_type=client.DATATYPE.STRING geeft een conversie. Niet dat er iets leesbaars uit komt .
Waar ik wat mee zit te klooien is een Oldham MX43
https://www.teledynegasandflamedetection.com/en-us/Products/docs/contr…
Op bladzijde 76 hs 12.2
Nu ben ik eerst maar eens gaan kijken naar de real-time metingen
Nu heb ik met modbus scanner wat zitten klooien maar overal staat 0, alleen de checksum en watchdog teller zie ik op 2600--2603 bladzijde 81
hier staat ook weer dat de meetwaarden zich niet op 2001-2264 bevinden maar een verwijzing naar een nieuw register locatie?
scannen met de modbusscanner 2001-2264 is allemaal 0, apparaat werkt wel gewoon.
Nu heb ik wel vaker met modbus te maken, maar vind dit verre van handig.