Python 3.x Modbus无法从epever tracer 1210a向raspberry读取数据

Python 3.x Modbus无法从epever tracer 1210a向raspberry读取数据,python-3.x,python-2.7,Python 3.x,Python 2.7,我想做一个跟踪程序 我使用rs485 usb转换器将EP1210A连接到raspberry pi 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

我想做一个跟踪程序

我使用rs485 usb转换器将EP1210A连接到raspberry pi 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行,在 solarVoltage=float(结果寄存器[0]/100.0) AttributeError:'ModbusIOException'对象没有属性'registers'


请帮我解决这个问题

我也遇到过同样的问题

请按照以下步骤修复此问题:

  • git克隆
  • 按照自述文件中的安装步骤进行操作
  • 执行
    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”

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


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

    这很可能是硬件问题。您能添加RS485到USB转换器的品牌和型号吗?如果你有手册和/或其他信息的链接,也可以添加。这是我使用的转换器。我在windows上的“太阳站监视器”软件上试用过,效果很好。mppt的所有数据都正确显示在那里。我认为我的转换器电缆没有问题。然后我想它应该立即与pymodbus一起工作。尝试更改为
    unit=0
    ,根据手册,默认地址为0x00。更改单元和默认地址时仍无法更改。这是我追踪者的地址列表。输入地址有错误吗?我在谷歌上搜索了你发布的名字,发现一本手册上显示默认ID为零。。。也许你可以检查一下其他软件的设置?文档不是很好。例如,他们说寄存器是十进制的,然后他们写十六进制值!我的问题已经解决了。谢谢你帮我解决我的问题:)