我需要通过USB端口(使用USB-to-RS-485转换器)通过RS-485接口读取某些Data Aggregator设备上的数据,用于JavaFX上的桌面应用程序,所以我已经堆叠在检查连接并获取正确的值。
Data Aggregator Device从PV模块(太阳能)收集有关产生的电流,功率等的信息。该设备具有唯一的RS-485端口。当我从文档中读到它时,它使用Modbus RTU协议(设置:9600-8N1)。
说实话,这是我第一次使用COM端口和设备。这就是为什么即使我正确连接引脚也不知道的原因。我读了很多与RS-485,Modbus相关的东西。但是,我仍处于第一步。
所以,我使用简单的UTP电缆进行连接。我做了什么:
Windows将USB连接到PC后找到虚拟“COM3”端口。然后我尝试检查Bray与终端1.9的连接。我尝试发送一些东西。接收消息时,它也向我发送了一些数据。但是,这并不意味着一切都很好。终端还显示了一些 FRAME ERROR 。 我知道,Modbus协议基于“主从”方案。因此,作为客户端的PC是“主”,而作为服务器的设备是“从属”。我必须向奴隶发送一些请求以获得一些预期的响应。但是,怎么样?! 请检查我的连接!我不知道接下来该做什么。
答案 0 :(得分:1)
RS-485是差分式,仅需要两根电线,您可以安全地移除接地线(GND)。然后,将电线连接到USB-to-RS485转换器上的R +和R-
完成后,我可以问你是怎么尝试发送的吗? Modbus需要最后一个字节,CRC很难手工确定。你有没有创建一个有效的modbus数据包?
有效的modbus数据包需要接收器地址,有效负载长度,数据本身和最终CRC
答案 1 :(得分:1)
我不知道java,但如果你有设备协议的规范,你肯定可以使用终端程序向modbus发送消息并回读消息。这样你就可以进行协议测试了,以后不应该很难制作自定义软件。但是,在您使用终端软件发送消息并获取有意义的消息之前,我建议您坚持下去。
此YouTube视频将提供有关modbus RTU数据包格式的基本知识:https://www.youtube.com/watch?v=OvRD2UvrHjE
最困难的部分是每次计算CRC。但幸运的是,您可以下载Docklight终端。它实际上有一个选项可以自动为modbus计算CRC并将其添加到数据包的最后位置。 您可以在他们的主页下载免费版本。
docklight.de
使用起来非常简单。与您使用的Bray终端相同..这里是如何为每个包设置modbus CRC计算的示例。 https://docklight.de/manual/sendingmodbuscommandswithc.htm
我知道他们也有很大的支持。 成功将消息发送到设备并获得答案后,事情将变得更加容易,因为您将了解协议的实际工作方式。 Modbus RTU是非常成熟的协议,但仍然使用它,因为许多现有系统使用它,并且将它添加到某些设备非常简单。所有设备需要的是串行端口(UART)以连接到modbus。因此,理解并使用它并不难。请查看我在此消息中给出链接的modbus特别采用的解释视频和终端。