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

最新文章

  1. [转载]我的Java后端书架 (2016年暖冬4.0版)
  2. innerHTML 与 innerText 的区别
  3. Pycharm 使用配置
  4. 解决li在ie,firefox中行高不一致问题
  5. java复制File文件操作
  6. *[hackerrank]Sam and sub-strings
  7. jQuery基础学习1
  8. Redis HyperLogLog
  9. IBatis.net在asp.net MVC下的使用
  10. CV牛人牛事简介之一
  11. 关于$GLOBALS['ecs']->table()的问题?
  12. Linux中的cron计划任务配置方法(详细)
  13. 九度OJ 1068 球半径和数量 (模拟)
  14. html标签详解
  15. OpenLayer实现路径运动
  16. 图像频谱图画图——matlab
  17. mysql正则表达式无法识别\d
  18. keycloak 调研资料
  19. mac电脑使用,开发环境配置指南
  20. 【奇技淫巧】绕过waf写文件

热门文章

  1. LVS本地实验环境搭建
  2. windows下mysql5.7.17配置
  3. Linux命令集锦之·字符截取命令
  4. Android App性能测试之adb命令
  5. Ordering the Soldiers 题解
  6. Python - //和/的区别
  7. Intel® QAT加速卡之编程demo框架
  8. Coreos配置docker镜像加速器
  9. Request请求对象
  10. windows操作系统和java常识