我想为tracer制作一个监控程序
我使用 RS485 USB 转换器将 epever Tracer1210a 连接到树莓派 3 型号 B
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient(method = 'rtu', port = '/dev/ttyACM0', baudrate = 115200)
client.connect()
print( client)
result = client.read_input_registers(0x3100,6,unit=1)
print (result)
solarVoltage = float(result.registers[0] /100.0)
solarCurrent = float(result.registers[1] /100.0)
batteryVoltage = float(result.registers[4] /100.0)
chargeCurrent = float(result.registers[5] /100.0)
print("solar voltage : ",solarVoltage)
print("solar current : ",solarCurrent)
print("battery volatage : ",batteryVoltage)
print("charge current : ",chargeCurrent)
client.close()
我收到这样的错误:
ModbusSerialClient(rtu 波特率[115200])
Modbus 错误:[输入/输出] Modbus 错误:[无效消息] 收到的消息不完整,预计至少 2 个字节(收到 0 个字节)
回溯(最近一次调用最后一次):
文件“yutub.py”,第 9 行,位于
太阳能电压 = float(结果.寄存器[0] /100.0)
AttributeError:“ModbusIOException”对象没有属性“寄存器”
请帮我解决这个问题
我也遇到过同样的问题。
请按照以下步骤解决该问题:
- 克隆https://github.com/kasbert/epsolar-tracer/tree/master/xr_usb_serial_common-1a https://github.com/kasbert/epsolar-tracer/tree/master/xr_usb_serial_common-1a
- 按照自述文件中的安装步骤进行操作。
执行时可能会遇到问题make
。在这种情况下做sudo apt-get install linux-headers
.
-
检查系统是否检测到USB UART
lsusb
-
检查是否未安装 Exar USB UART 的 CDC-ACM 驱动程序
ls /dev/tty*
要删除 CDC-ACM 驱动程序并安装该驱动程序:
sudo rmmod cdc-acm
sudo modprobe -r usbserial
sudo modprobe usbserial
sudo insmod ./xr_usb_serial_common.ko
之后当你这样做时ls /dev/tty*
你会看到/dev/ttyXRUSB0。这意味着驱动程序已安装并且您状态良好。
将代码中的端口更改为“/dev/ttyXRUSB0”。
查看输出图像 https://i.stack.imgur.com/vvsWg.png
重新启动 PI 后,您可能看不到 ttyXRUSB0,而是会看到 ttyACM0。在这种情况下执行sudo echo blacklist cdc-acm > /etc/modprobe.d/blacklist-cdc-acm.conf
。如果PI不允许执行则在路径中创建文件并写入blacklist cdc-acm
.
重新启动并验证 ttyACM0 是否仍显示在ls /dev/tty*
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)