【问题标题】:How to get data from RS-485 connected by USB如何从通过 USB 连接的 RS-485 获取数据
【发布时间】:2017-06-21 05:45:26
【问题描述】:

我需要通过 USB 端口(使用 USB-to-RS-485 转换器)通过 RS-485 接口从一些 Data Aggregator Device 读取数据,用于 JavaFX 上的桌面应用程序,因此我一直在检查连接并获取正确的值.

数据聚合器设备从 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

在将 USB 连接到 PC 后,Windows 找到了虚拟“COM3”端口。然后我尝试检查 Bray 与 Terminal 1.9 的连接。我尝试发送一些东西。在接收消息时,它也向我发送了一些数据。但是,这并不意味着一切都很好。终端还向我显示了一些 FRAME ERROR。 我知道,基于“主从”方案的 Modbus 协议。因此,作为客户端的 PC 是“Master”,作为服务器的设备是“Slave”。我必须向从站发送一些请求以获得一些预期的响应。但是,怎么办?! 请检查我的连接!我不知道下一步该做什么。

【问题讨论】:

    标签: java usb javafx-8 rs485


    【解决方案1】:

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

    做到了,请问您是如何尝试发送内容的? Modbus 需要最后一个字节,即很难手动确定的 CRC。您是否创建了有效的 modbus 数据包?

    有效的 modbus 数据包需要接收器地址、有效负载长度、数据本身和最终的 CRC

    【讨论】:

    • 非常感谢您的回复!我已经移除了 GND。所以,如果我理解正确的话,不是USB转换器上的A和B,我必须将电线连接到R+和R-?那设备呢?我也应该这样做吗?
    • 我刚刚发送了任何东西。当然,这不是一个好案例。我刚刚尝试查看虚拟端口的反应。不知道怎么寄。我知道数据包包括标头、PDU、校验和。如果您将展示一些如何发送正确数据包的基本示例,那就太好了! P.S.:我想用Java制作我的项目,那么可以用java制作吗?我找到了很多图书馆。但什么是最好的? P.S.S:forum.easyelectronics.ru/download/…我在终端做了什么
    • 首先您需要找出太阳能逆变器所期望的确切数据包格式。看说明书,应该有的
    • 我从他们的手册中发现只有这些: 第三部分的生成信息包括以下项目。光伏组件:直流电压、直流电流、RT 功率、RT 温度、状态说明 汇流箱:组串电压、直流电流、组串功率、状态说明 逆变器:系统电压和电流、系统发电量、状态说明 电流表:发电量、系统当前环境监视器:风标、光照强度、温度、湿度 此外,它们还包括连接设置:9600-8N1。仅此而已。这是我的设备gnetek.com/en/product.php?tid=8
    • 逆变器的具体型号?最好的方法是让专有软件运行并嗅探数据包,然后查看数据包并制定协议,它肯定是 modbus 的变体
    【解决方案2】:

    我不知道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 专门采用的解释视频和终端。

    【讨论】:

    • 非常感谢@Vladimir!这是一开始就非常重要的信息。因为我不明白它是如何工作的,每天都让我心烦意乱 :) 不幸的是,制造这个设备的公司不想分享协议的规范。这就是为什么我的下一步被拒绝了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多