首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法通过串行/ Modbus从Windows 10连接到EPsolar Tracer 3210a充电控制器

无法通过串行/ Modbus从Windows 10连接到EPsolar Tracer 3210a充电控制器
EN

Stack Overflow用户
提问于 2020-10-07 19:38:14
回答 3查看 1.7K关注 0票数 2

摘要

我使用这个USB到to 45电缆将我的Windows10Developer工作站连接到EPEver Tracer 321 A太阳能电荷控制器

我使用Python3.8.6与minimalmodbus模块一起尝试连接到设备、检索数据和控制设备参数。

预期结果

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

实际效果

代码语言:javascript
运行
复制
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)

代码

代码语言:javascript
运行
复制
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端口从COM3更改为COM4
  • 重启动计算机
  • 将MT-50显示器连接到充电控制器(工作正常)
  • parity设置更改为其他值(偶数、奇数、空间等)

问题

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-10-08 00:19:17

与这些控制器(手册)的通信通过RS485 (通过RJ45连接器传递)进行。这只是在手册(技术规范部分中的“RS485接口”)中简要提到的。

您使用的电缆似乎是一个路由器控制台电缆,我相信,它使用RS232协议(见文件来自思科作为一个例子)。RS232和RS485是不同的,而且不兼容,所以这种电缆不能工作。

此控制器的手册没有详细说明,我也无法在EPEVER网站上看到modbus手册。我使用Tracer系列单元和epever支持,给我发了一份详细说明modbus设置的手册;由于您的单元也支持MT50远程仪表,我假设它的寄存器是相同的。您可能可以通过搜索“通用软件或MT50液晶显示单元”(带有引号)找到手册--我相信2.5版是最新的(注意:我没有发布链接,因为官方网站上似乎没有可用的链接,所以请自己冒险点击!)

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

代码语言:javascript
运行
复制
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。我已经发现,地面连接是需要可靠的通讯。

Note2: Epever确实有一个“正式的”USB到RJ45电缆(CC-USBRS485-150U);我有三个这样的电缆,无法工作(当地的经销商提到有类似的问题)。这些电缆可以从亚马逊获得(由于您的控制台电缆链接而选择它们)。

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

为了进行测试,我使用了上面(115200,n,8,1)有线的一个廉价的USB-> as 485适配器,它工作得很好(在这个领域,大约有10个连接到内置RS485的设备上)。USB->485 adapter I use来自Aliexpress (got 10,没有问题),但您可以获得类似的来自亚马逊 (但正如我提到的,您需要接地连接器,并不是所有适配器都有-我无法通过两线连接可靠地工作)。我将一个标准的网络引线切成两半,并将其连接到这个适配器(保存、挖掘、压缩工具等);我还没有看到在其他地方使用的这种布线设置,所以不要认为您将无法购买现成的(然后从Epever)。

票数 3
EN

Stack Overflow用户

发布于 2021-06-12 09:07:20

Afaict,上面使用的正确术语是8P8C而不是RJ458P8C用于多种注册千斤顶类型。也许这里列出的一种类型与Tracer正在使用的类型相对应?

票数 0
EN

Stack Overflow用户

发布于 2021-06-12 17:55:14

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64251163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档