从Epever 1210n到Raspberry Pi的寄存器输入

2024-05-15 21:53:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在输入寄存器以从中获取数据时遇到一些问题:

  • 负载电压
  • 负载电流
  • batery状态
  • 电池容量

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
import datetime
import time

while True:
    client = ModbusClient(method='rtu', port='/dev/ttyXRUSB0', baudrate=115200)
    client.connect()
    # print( client)
    result = client.read_input_registers(0x3100, 15, unit=1)
    result1 = client.read_input_registers(0x3300, 14, unit=1)
    result2 = client.read_input_registers(0x3110, 2, unit=1)
    # result3 = client.read_input_registers(0x311,15,unit=1)
    # result4 = client.read_input_registers(0x3200,15,unit=1)
    # print (result)
    datetime_object = datetime.datetime.now()
    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)
    loadVolatage = float(result.registers[12] / 100.0)
    loadCurrent = float(result.registers[13] / 100.0)
    maxPanelVoltage = float(result1.registers[0] / 100)
    minPanelVoltage = float(result1.registers[1] / 100)
    maxBateryVoltage = float(result1.registers[2] / 100)
    minBateryVoltage = float(result1.registers[3] / 100)
    baterryTemperature = float(result2.registers[0] / 100)
    # bateryCapacity = float(result3.registers[10] /100)
    # bateryStatus = (result4.registers[0])

    print(datetime_object)
    print("solar voltage       : ", solarVoltage, "V")
    print("solar current       : ", solarCurrent, "A")
    print("battery volatage    : ", batteryVoltage, "V")
    print("charge current      : ", chargeCurrent, "A")
    print("load voltage        : ", loadVolatage, "V")
    print("load current        : ", loadCurrent, "A")
    print("baterry temperature : ", baterryTemperature, "C")
    print("max Panel Voltage   : ", maxPanelVoltage, "V")
    print("min Panel Voltage   : ", minPanelVoltage, "V")
    print("max Batery Voltage  : ", maxBateryVoltage, "V")
    print("min Batery Voltage  : ", minBateryVoltage, "V")
    # print("batery capacity : ",bateryCapacity, "%")
    # print("batery status : ",bateryStatus)
    print()
    time.sleep(2.0)
client.close()

代码工作正常,但我无法输入寄存器以从以下位置获取数据:

  • 负载电压
  • 负载电流
  • batery状态
  • 电池容量

Tags: importclientreadinputdatetimeunitresultcurrent