写点什么

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

用户头像
叫练
关注
发布于: 刚刚
Java通过socket和DTU,RTU连接工业传感器通信

现在做 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】边叫边练。



发布于: 刚刚阅读数: 2
用户头像

叫练

关注

我是叫练,边叫边练 2020.06.11 加入

Java高级工程师,熟悉多线程,JVM

评论

发布
暂无评论
Java通过socket和DTU,RTU连接工业传感器通信