我有一个脚本,应该从与MODBUS连接的传感器中收集浓度数据。当我运行脚本时,会发生此错误:
追踪(最近通话):文件“ C:\ Users \ AquaBattery.HP-LAPTOP \ Desktop \ H2-read.py”,第33行,在val = H2.read_long(ADRH2,functioncode = 4,byteorder = 0)文件“ C:\ Users \ AquaBattery.HP-LAPTOP \ Desktop \ minimalmodbus.py”,行560,在read_long中payloadformat = _PAYLOADFORMAT_LONG,_generic_command中的文件“ C:\ Users \ AquaBattery.HP-LAPTOP \ Desktop \ minimalmodbus.py”,行1170payload_from_slave = self._perform_command(功能代码,payload_to_slave)_perform_command中的文件“ C:\ Users \ AquaBattery.HP-LAPTOP \ Desktop \ minimalmodbus.py”,第1244行响应,自我地址,自我模式,功能代码_extract_payload中的文件“ C:\ Users \ AquaBattery.HP-LAPTOP \ Desktop \ minimalmodbus.py”,行1756引发InvalidResponseError(文本)minimalmodbus.InvalidResponseError:rtu模式下的校验和错误:'\ x00 \ x00'而不是'c \ x85'。响应为:“ \ x01 \ x04 \ x0e \ x00 \ x00 \ x00 \ x00 \ x00 \ x00”(普通响应:“ \ x01 \ x04 \ x0e \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00')] >
这是我的代码:
import time import os import serial import minimalmodbus delay = 1 pdata = 1 #-- H2 sensor read out ----------------------------------- #def getH2(): res = 0 ADRH1 = 1 # read out register for H2 ADRH2 = 0 # read out register for H2 try: H2 = minimalmodbus.Instrument('COM6',ADRH1) # open serial port H2.serial.port # this is the serial port name H2.serial.baudrate = 9600 # Baud H2.serial.bytesize = 8 H2.serial.parity = serial.PARITY_NONE H2.serial.stopbits = 1 H2.serial.timeout = 0.25 # seconds val = H2.read_long(ADRH2,functioncode=4,byteorder=0) print("test") res = float(val)/10 print(val) print("---") print(res) except ValueError: print("Failed to read H2")
如何更改对传感器的请求或传感器的响应,以使两个数据流的校验和相同?
此致,卢卡斯
我有一个脚本,应该从与MODBUS连接的传感器中收集浓度数据。当我运行脚本时,会发生此错误:追溯(最近一次呼叫最近):文件“ C:\ Users \ ...
我知道了!