2017-02-03 588 views
1

我需要通过USB端口(使用USB至RS-485转换器)通过RS-485接口从Data Aggregator设备读取数据以用于JavaFX上的桌面应用程序,所以我一直在检查连接并获取适当的值。如何从通过USB连接的RS-485获取数据

Data Aggregator Device收集有关PV模块(太阳能)产生的电流,功率等信息。该设备具有唯一的RS-485端口。当我从文档中读取时,它使用Modbus RTU协议(设置:9600-8N1)。

说实话,这是我第一次使用COM端口和设备。这就是为什么我不知道我是否正确连接引脚。我读了很多与RS-485,Modbus有关的东西。但是,我仍然处于第一步。

所以,我用简单的UTP电缆连接。而我做了什么:

  1. This is how I connect USB-to-RS485 converter
  2. And this is about Data Aggregator Device

的Windows虚拟找到 “COM3” 端口,USB连接到电脑后。然后我试着通过Bray检查与终端1.9的连接。我尝试发送一些东西。而作为接收消息,它也给我发送了一些数据。但是,这并不意味着一切都连接良好。终端也显示我一些帧错误。我知道,基于“主从”方案的Modbus协议。因此,作为客户端的PC是“主”,而作为服务器的设备是“从”。我必须向奴隶发送一些请求以获得一些预期的回应。但是,怎么样? 请检查我的连接!我不知道下一步该怎么做。

回答

1

RS-485是差分的,只需要两根导线,您可以安全地移除接地导线(GND)。然后,将电线连接到USB至RS485转换器上的R +和R-上。

做完了,我可以问你,你是如何尝试发送一些东西的? Modbus需要最后一个字节,这是很难用手确定的CRC。你创建了一个有效的modbus数据包吗?

一个有效的Modbus包需要一个接收器的地址,有效载荷长度,数据本身和最终CRC

+0

非常感谢您的回复! 我已经移除了GND。所以,如果我理解正确,而不是USB转换器上的A和B,我必须将电线连接到R +和R-?那么该设备呢?我需要这样做吗? – catscoolzhyk

+0

我刚刚发送了任何东西。当然,这不是一个好例子。我只是想看看虚拟端口的反应。我不知道如何发送。我知道这个数据包包含头部,PDU,校验和。如果你将展示一些基本的例子,如何发送适当的数据包将会很棒! P.S .:我想用Java来创建我的项目,那么是否可以使用Java来创建它?我找到了很多库。但是最好的是什么? PSS:http://forum.easyelectronics.ru/download/file.php?id=30525&sid=a73ca588be24d221b7ffe32118de379a&mode=view我在终端 – catscoolzhyk

+0

中所做的一切首先需要找出太阳能预期的确切数据包格式逆变器。检查手册,应该在那里 –

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的具体采用的解释视频和终端。

+0

非常感谢你@Vladimir!这是一开始就非常重要的信息。因为我不明白它是如何工作的,并且每天都打破我的想法:)不幸的是,制造此设备的公司不想分享协议规范。这就是为什么我的下一步被拒绝。 – catscoolzhyk