Modbus 无法从 epever tracer 1210a 读取数据到树莓派 [英] Modbus cant read data from epever tracer 1210a to raspberry

查看:95
本文介绍了Modbus 无法从 epever tracer 1210a 读取数据到树莓派的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为tracer做一个监控程序

i want to make a monitoring program for tracer

我使用 rs485 USB 转换器将 epever tracer1210a 连接到 raspberry pi 3 model b

i use rs485 usb converter to connect epever tracer1210a to raspberry pi 3 model 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 baud[115200])Modbus 错误:[输入/输出] Modbus 错误:[无效消息] 收到不完整的消息,预计至少 2 个字节(收到 0 个)回溯(最近一次调用最后一次):文件yutub.py",第 9 行,在solarVoltage = float(result.registers[0]/100.0)AttributeError: 'ModbusIOException' 对象没有属性 'registers'

ModbusSerialClient(rtu baud[115200]) Modbus Error: [Input/Output] Modbus Error: [Invalid Message] Incomplete message received, expected at least 2 bytes (0 received) Traceback (most recent call last): File "yutub.py", line 9, in solarVoltage = float(result.registers[0] /100.0) AttributeError: 'ModbusIOException' object has no attribute 'registers'

请帮我解决这个问题

推荐答案

我遇到了同样的问题.

请按照以下步骤解决问题:

Follow the below steps to fix the issue:

  1. git clone https://github.com/kasbert/epsolar-tracer/tree/master/xr_usb_serial_common-1a
  2. 按照自述文件中的安装步骤操作.

您在执行 make 时可能会遇到问题.在这种情况下,请执行 sudo apt-get install linux-headers.

You might face problem when you execute make. In such case do sudo apt-get install linux-headers.

  • 检查系统是否检测到 USB UART

  • Check that the USB UART is detected by the system

lsusb

检查是否未为 Exar USB UART 安装 CDC-ACM 驱动程序

Check that the CDC-ACM driver was not installed for the Exar USB UART

ls/dev/tty*

要删除 CDC-ACM 驱动程序并安装驱动程序:

To remove the CDC-ACM driver and install the driver:

sudo rmmod cdc-acm

sudo modprobe -r usbserial

sudo modprobe usbserial

sudo insmod ./xr_usb_serial_common.ko

此后,当您执行 ls/dev/tty* 时,您将看到/dev/ttyXRUSB0.这意味着驱动程序已安装并且您处于良好状态.

After this when you do ls /dev/tty* you will see /dev/ttyXRUSB0. This means the driver is installed and you are in good shape.

将代码中的端口更改为/dev/ttyXRUSB0".

Change the port in your code to '/dev/ttyXRUSB0'.

查看输出图像

重新启动 PI 后,您可能不会看到 ttyXRUSB0,而是会看到 ttyACM0.在这种情况下执行 sudo echo blacklist cdc-acm >/etc/modprobe.d/blacklist-cdc-acm.conf.如果 PI 不允许您执行,则在路径中创建文件并写入 blacklist cdc-acm.

After you restart the PI you might not see the ttyXRUSB0 instead you will see ttyACM0. In such case execute sudo echo blacklist cdc-acm > /etc/modprobe.d/blacklist-cdc-acm.conf. If PI does not allow you to execute then create the file in the path and write blacklist cdc-acm.

重新启动并验证 ls/dev/tty* 中是否仍显示 ttyACM0.

Reboot and verify if ttyACM0 is still displayed in ls /dev/tty*.

这篇关于Modbus 无法从 epever tracer 1210a 读取数据到树莓派的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆