2

概括

我正在使用此 USB 转 RJ45 电缆将我的 Windows 10 开发人员工作站连接到EPEver Tracer 3210an 太阳能充电控制器

我正在使用带有minimalmodbus模块的 Python 3.8.6 来尝试连接到设备、检索数据和控制设备参数。

预期结果

充电控制器返回光伏 (PV) 面板的输入电压。

实际结果

MinimalModbus debug mode. Create serial port COM4
MinimalModbus debug mode. Will write to instrument (expecting 7 bytes back): '\x01\x041\x00\x00\x01?6' (01 04 31 00 00 01 3F 36)
MinimalModbus debug mode. Clearing serial buffers for port COM4
MinimalModbus debug mode. No sleep required before write. Time since previous read: 105406.00 ms, minimum silent period: 1.75 ms.
MinimalModbus debug mode. Response from instrument: '' () (0 bytes), roundtrip time: 1015.0 ms. Timeout for reading: 1000.0 ms.

Traceback (most recent call last):
  File "tempCodeRunnerFile.python", line 17, in <module>
    pv_voltage = ins.read_register(PV_VOLTAGE, 2, 4, False) 
  File "C:\Users\TrevorSullivan\scoop\apps\python\current\lib\site-packages\minimalmodbus.py", line 441, in read_register
    return self._generic_command(
  File "C:\Users\TrevorSullivan\scoop\apps\python\current\lib\site-packages\minimalmodbus.py", line 1170, in _generic_command
    payload_from_slave = self._perform_command(functioncode, payload_to_slave)
  File "C:\Users\TrevorSullivan\scoop\apps\python\current\lib\site-packages\minimalmodbus.py", line 1240, in _perform_command
    response = self._communicate(request, number_of_bytes_to_read)
  File "C:\Users\TrevorSullivan\scoop\apps\python\current\lib\site-packages\minimalmodbus.py", line 1406, in _communicate
    raise NoResponseError("No communication with the instrument (no answer)")
minimalmodbus.NoResponseError: No communication with the instrument (no answer)

代码

import minimalmodbus
import serial

ins = minimalmodbus.Instrument('COM4', 1, debug=True)

ins.serial.baudrate = 115200
ins.serial.bytesize = 8
ins.serial.stopbits = 1
ins.serial.parity = serial.PARITY_NONE
ins.serial.timeout = 1

ins.mode = minimalmodbus.MODE_RTU
ins.clear_buffers_before_each_transaction = True

PV_VOLTAGE = 0x3100

pv_voltage = ins.read_register(PV_VOLTAGE, 2, 4, False) 
print(pv_voltage)

我试过的

  • 改用pymodbus模块
  • 试过easymodbus模块
  • 将波特率更改为9600
  • 尝试使用ASCII模式而不是RTU(99% 确信它需要RTU模式)
  • 将串行设备上的 COM 端口从更改COM3COM4
  • 重新启动计算机
  • 将 MT-50 显示器连接到充电控制器(完美运行)
  • 将设置更改parity为其他值(偶数、奇数、空格等)

问题

  1. 如何成功地将我的开发人员工作站连接到充电控制器?
  2. 这条电缆有没有可能已经死了?
  3. 我还能做些什么来测试电缆以确保其正常工作?
  4. 我还能做些什么来测试充电控制器以确保其响应?
4

3 回答 3

3

与这些控制器(手册)的通信是通过 RS485(通过 RJ45 连接器提供)。这仅在手册中简要提及(技术规范部分中的“RS485 接口”)。

您使用的电缆似乎是路由器控制台电缆,我相信它使用 RS232 协议(请参阅 Cisco 的文档作为示例)。RS232 和 RS485 是不同的,不兼容,所以这条线是不行的。

该控制器的手册没有详细说明,我在EPEVER 网站上也找不到 modbus 手册。我使用 Tracer-BN 系列设备,epever 支持通过电子邮件向我发送了一份详细说明 modbus 设置的手册;因为您的设备还支持 MT50 远程仪表,所以我假设它的寄存器是相同的。您可能可以通过搜索“common software or MT50 LCD unit”(带引号)找到手册 - 我相信 2.5 版是最新的(注意:我没有发布链接,因为它似乎在官方网站所以点击风险自负!)

RJ45 接线(来自上述手册)是:

Pin  | Define 
-----|-------------------------------------
1    | Power supply output +5V or +7.5V 
2    | Power supply output +5V or +7.5V 
3    | RS-485-B 
4    | RS-485-B 
5    | RS-485-A 
6    | RS-485-A 
7    | Ground 
8    | Ground

注意:这些设备可以串联;如果您只是连接到一个使用引脚 3、5 和 7。我发现可靠的通信需要接地连接。

注 2:Epever 确实有一条“官方”USB 转 RJ45 电缆(CC-USB-RS485-150U);我有其中三个,但无法正常工作(当地经销商提到有类似问题)。这些电缆可从亚马逊购买(由于您的控制台电缆链接而选择它们)。

检查电缆是否正确接线的一个好方法是将其与充电控制器软件一起使用(我相信这使用了与单元通信的方式,但它们可能支持另一种协议)。

为了进行测试,我使用了一个便宜的 USB->RS485 适配器,如上所述(115200、n、8、1),它工作得很好(在现场有大约 10 个连接到内置 RS485 的设备)。我使用的USB->485 适配器 来自 Aliexpress(有 10 个并且没有问题),但您可以从 Amazon获得类似的东西(但如前所述,我认为您需要并非所有适配器都有的接地连接器 - 我无法得到这些使用两线连接可靠地工作)。我将标准网络引线切成两半并将其连接到此适配器(省去挖掘压接工具等);我还没有看到其他地方使用过这种接线设置,所以不要认为你可以买一个现成的(除 Epever 以外的)。

于 2020-10-08T00:19:17.107 回答
0

在关于如何使用 Python 和 InfluxDB 捕获和分析太阳能发电指标的文章中找到了该问题的完整解决方案。

于 2021-06-12T17:55:14.443 回答
0

Afaict,上面使用的正确术语是8P8C而不是RJ458P8C用于多种RJ 注册插孔类型。也许其中列出的一种类型对应于 Tracer 正在使用的类型?

于 2021-06-12T09:07:20.983 回答