摘要
我使用这个USB到to 45电缆将我的Windows10Developer工作站连接到EPEver Tracer 321 A太阳能电荷控制器。
我使用Python3.8.6与minimalmodbus模块一起尝试连接到设备、检索数据和控制设备参数。
预期结果
电荷控制器返回光伏(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模块9600ASCII模式而不是RTU模式(99%的人认为它需要RTU模式)COM3更改为COM4parity设置更改为其他值(偶数、奇数、空间等)问题
发布于 2020-10-08 00:19:17
与这些控制器(手册)的通信通过RS485 (通过RJ45连接器传递)进行。这只是在手册(技术规范部分中的“RS485接口”)中简要提到的。
您使用的电缆似乎是一个路由器控制台电缆,我相信,它使用RS232协议(见文件来自思科作为一个例子)。RS232和RS485是不同的,而且不兼容,所以这种电缆不能工作。
此控制器的手册没有详细说明,我也无法在EPEVER网站上看到modbus手册。我使用Tracer系列单元和epever支持,给我发了一份详细说明modbus设置的手册;由于您的单元也支持MT50远程仪表,我假设它的寄存器是相同的。您可能可以通过搜索“通用软件或MT50液晶显示单元”(带有引号)找到手册--我相信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。我已经发现,地面连接是需要可靠的通讯。
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)。
发布于 2021-06-12 09:07:20
发布于 2021-06-12 17:55:14
在关于如何用Python和InfluxDB捕获和分析太阳能发电度量的文章中找到了这个问题的完整解决方案。
https://stackoverflow.com/questions/64251163
复制相似问题