Java通过socket和DTU,RTU连接工业传感器通信

1 篇文章 0 订阅
1 篇文章 1 订阅

目录

总体架构图

工业名称解释

思路整理

结尾


现在做DTU传感器监测数据一块,给大家分享如何通过socket技术连接到DTU,并能和DTU下面的传感器通信的,分享一下自己的心得和体会。

总体架构图


先来看下整体网络结构图。

工业名称解释


传感器:能够采集数据机器,电脑端通过下发指令通过DTU发给传感器,传感器通过DTU返回相应的数据给电脑端,比如雨量计能实时反馈雨量,这很好理解。

RTU:远程传输单元,可以是一台plc(程序过程控制),通俗理解就是能够编程的还可以将数据传输服务器的工具。RTU内部是包含通讯模块的,RTU仪表配置服务器后,他可以通过socket将采集器的数据转发到服务器。咦?你刚才不讲说的DTU吗?现在怎么是DTU了,接下来我们看看。

DTU:数据传输单元,他主要的功能是能将IP数据和串口数据进行等价转化。对比上面RTU的功能,如果说RTU能进行数据处理和数据传输,那么DTU就只能进行数据传输了。像DTU因为没有任何的数据处理动作,所以一般业界叫“透传”即透明传输。所以RTU的价格一般比DTU贵很多,因为有软件编程的成本。

RS485:RS485是一个物理接口,DTU和传感器就是通过RS485接口进行连接的。

Modbus协议:标准的串行工业协议。可以支持RS485,RS232接口。那既然是协议,就需要遵循一定的规范,举个简单的例子,读取雨量计的命令是16进制的0E04000000027134

那么0E 04 00 00 00 02 71 34 分别对应的该传感器的通信id,功能码等。如下图,这是一串指令,能够读取雨量的具体数据。

网络:DTU可以配置服务器,通过socket技术通信。

服务器:服务器解析数据并存入数据库。

当然,雨量传感器也能返回一串标准16进制数据DTU,0E0404326640BCDA52,具体解析格式如下,如果返回正确我们需要读取5,6字节进行解析。

这个是我任意举的一个案例,是为了更好说明Modbus协议只要支持能modbus的传感器都类似,需要我们对照具体的传感器通讯协议文档进行转化解析,一般都会有说明。

思路整理


楼主在刚开始接到任务不理解这些工业,接口,协议的概念,走了一些弯路。因为我们项目是需要从RTU换成DTU做数据采集的,已有项目RTU是能够主动推送数据到服务器的,当时比较困惑有几个点,顺便整理下思路。

  1. DTU能够主动推送数据给你吗?如果不能,我需要如何做?

不能,DTU既然是透传的,说明我们需要通过DTU给传感器下发指令。‘

  1. 发什么指令?

这里的指令就是modbus指令,上面有类似指令说明,指令需要到相应的传感器通信协议去获取,一般都有说明,如果是新手,就找传感器厂家支持下,顺便说一句,他们都是搞硬件的,软件他们可能也不太清楚,这个时候就需要你的正确方向的判断了。

  1. 如何下发指令?如何调试下发指令正确性?

我因为当时是新手,我只懂程序,调试都是通过自己写的程序调试的,一直执行程序没有调试出来,最终才知道usb连接串口转485工具再直接连接传感器,通过串口工具就可以直接发送命令,返回对应的数据,一目了然,串口工具我用的是sscom。这个问题给我的感触很深,可以先不写代码,直接先在工具上分析结果。我主要用的是下面这三个工具。

  1. 如何打通socket和DTU连接的传感器?

最后一步就比较简单了,通过socket,拿到二进制数据后直接转16进制进行解析得到结果,我贴部分代码。

结尾


好的,今天就到这里,希望这边文章能对您有所帮助,有不懂的地方可以给博主留言哦,分享让我们共同成长,喜欢的请点赞加关注哦。点关注,不迷路,我是【叫练公众号,微信号【jiaolian123abc】边叫边练。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 要实现Java和4G DTU设备之间的通信,可以通过以下步骤: 1. 首先,确保Java程序中有相应的串口通信库,例如rxtx或JavaComm。这些库可以让Java程序通过串口与设备进行通信。 2. 确保4G DTU设备正确配置,配置包括设置串口参数(如波特率、数据位、校验位和停止位),并确保设备与计算机通过串口连接。 3. 在Java程序中,使用串口通信库打开与设备相连的串口,可以通过指定串口号或设备名称来打开串口。 4. 建立与设备的通信会话。可以通过向设备发送指令或数据来与设备进行通信,例如读取设备状态、发送控制命令等。 5. 在Java程序中,接收和解析来自设备的响应。可以通过读取串口缓冲区的数据来获取设备的响应,然后解析响应以获取所需的信息。 6. 根据需要,可以在Java程序中实现对设备进行控制的功能。这可以通过向设备发送控制命令或数据来实现。 7. 最后,在与设备通信完成后,记得关闭串口并释放相应的资源,以确保程序的正确执行。 综上所述,通过使用相应的串口通信库,可以在Java程序中实现与4G DTU设备的通信。通过打开串口,发送和接收数据,解析响应等步骤,可以实现与设备的通信,并根据需要进行相应的控制操作。 ### 回答2: 要实现 Java 和 4G DTU 设备之间的通信,我们可以采用以下步骤: 1. 确定设备接口:首先,我们需要了解 4G DTU 设备的通信接口类型,例如串口、以太网等。根据接口类型,我们选择适当的 Java 库和插件来实现通信。 2. 连接设备:使用 Java 提供的串口通信库或者网络通信库,我们可以建立 Java 程序与 4G DTU 设备之间的连接。如果是串口通信,我们需要指定正确的端口和波特率;如果是网络通信,我们需要指定正确的 IP 地址和端口号。 3. 通信协议:在建立连接后,我们需要确定设备所使用的通信协议。4G DTU 设备通常使用 Modbus、MQTT 或者自定义的协议进行通信。根据设备的协议,我们可以使用相应的 Java 库来解析和封装数据。 4. 数据读取和写入:通过 Java 程序与 4G DTU 设备之间的连接,我们可以实现对设备的数据读取和写入。根据设备的协议,我们可以发送合适的指令或者请求来获取设备的数据,同时也可以发送指令来向设备写入数据。 5. 异常处理:在通信过程中,可能会出现各种异常情况,例如通信中断、超时等。我们需要使用异常处理机制来捕获和处理这些异常,以保证程序的稳定运行。 6. 数据解析和处理:获取到设备的数据后,我们可以利用 Java 提供的数据处理和计算功能对数据进行解析和处理。根据具体的应用场景,我们可以把数据存储到数据库、进行数据分析或者其他操作。 需要注意的是,以上步骤仅提供了一个基本的通信框架,具体实现还需要根据具体的设备和应用场景进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值