工业网关|基于中移OneMO DTU实现温湿度等工业数据上传
作者:互联网
前言
随着现代通讯技术发展及工业自动化控制系统及设备的效率越来越高,企业对自动化和信息化程度也越来越重视,但是现场控制器的通讯方式和通讯协议的多样化问题越来越突出,于是终端的互联互通问题越来越突出,采用传统常见的现场布线方式,往往涉及到铺设成本高,后期维护成本困难的问题,而现在工业采集器采用工业物联网网关的方式往往是更佳的选择方案。
近期公司承接了一个农业传感器方案板项目,用于监控农业大棚内的情况,客户需求把大棚内的温湿度数据、气压数据都上传到平台上,同时还需要报警信息和定位信息,而且数据还要发往不同的平台。我做为公司的软件开发工程师,这个项目确实有一定难度,客户需求是3个月进行交付,而我对物联网通信相关完全不了解。项目一筹莫展时,我选择逛逛论坛,找找灵感,偶尔在正点原子上看到关于中移OneMO DTU方案板的介绍,据他们介绍,这款方案板适用的行业包括了工业级物联网网关。我通过OneMO官网找他们技术工程师进行了技术对接,并获取了相应资料,在他们的建议和指导下,逐步对项目有了思路。
这款中移OneMO DTU方案板全面支持移动、联通和电信4G CAT.1通讯网络的数据传输设备,完成了串口设备与服务器之间、串口设备与串口设备之间的双向、透明、无线传输,物联网网关具有运用简单、本地/远程设置参数、远程维护等特色,通过TCP/IP协议转发、自动连接、串口工具可轻松进行配置和服务器平台对接,完成网关与平台的双向通信。
另外我发现这款DTU模组还具备套接字分发功能和LBS定位功能,我的方案板目前选用的MCU只有一路串口,但是我要把采集器收集的三类数据分别传输到三个平台,这就有点儿难度了。了解了这个套接字分发功能后,可以按照他们规定的协议传给模组,模组就能识别并完成数据的分发,解决了只有一路串口,但是要向多个服务器发数据的问题。另外我发现这款模组还要注册包和心跳包这些功能,这次项目上客户没有提这些需求,我想以后别的项目上也能用,个人感觉功能还是做的比较完善。他们工程师说他们也是耕耘行业多年,收集客户经常使用的需求,并做到了方案板里面。
DTU配置
1、硬件配置
在OneMO的线上商城购买了一个样品和开发底板,通过插入USB即可在电脑上调试,我看了下比较重要的是DC供电,串口TX/RX,GND,其余卡槽和天线接口他们都已经做在板子上了,还附带了三个信号灯。具体的引脚定义可以通过OneMO官网下载,双排插针间距为2.54mm,属于标准规格。这样对于我的主控板设计来说十分友好。他们的测试方案板如下:
2、软件配置
客户需求将三类数据:温湿度、气压数据、报警数据、定位数据分别发送到三个不同的平台,正好这款DTU支持套接字分发功能,我通过OneMO官网在线客服提供的资料说明进行配置,这里我简单说明一下。
套接字分发功能适合当MCU端只有1路串口进行透传,但是又必须将数据发到2个及2个以上的服务器,这时候就可以使用套接字分发功能。套接字中定义了一套协议,用于区分数据发往哪一个服务器和数据来源于哪一个服务器,并对数据加入了长度和数据校验,确认双方都是严格按照该协议通信的。
使用套接字功能主要有以下五个步骤:
1、打开套接字功能
2、确认服务器地址,我这里使用3路socket,于是对应A/B/C socket。配置好三路socket的IP地址和端口,并使能。
3、根据套接字协议的要求,将要发送的数据报文准备好,报文按照十六进制透传给模组,协议整体规定为:报头+长度+参数区+数据+和校验。这里起到关键性作用的是参数区,参数区分为常用参数区和备用参数区,常用参数区规定了序号:序号为 0x61代表发向Socket A, 0x62代表发向Socket B, 0x63代表发向Socket C,0x64代表发向Socket D 。和校验为参数区和数据的256累加校验和。
假设我的温度数据为26.4℃,湿度为55.8%rH,气压为953.8hPa,数据放大十倍(去掉小数点便于传输),十六进制表示分别为0x0108,0x022E,0x03B9;报警0x00代表正常,0x01代表报警;供电电压为22.5V。这里我准备了三条示例数据:
温湿度、气压:55FDAA 0008 6100 0108022E03B9 56 ——传输到socketA
报警信息:55FDAA 0003 6200 00 62 ——传输到socketB
供电电压:55FDAA 0003 6300 0C 6F ——传输到socketC
4、将数据发送给透传模块,查看服务器即可看到对应数据。这里DTU模块做得比较好的一点是:当数据格式错误、数据长度、和校验错误等报文错误的情况下,模组会直接回复相应的错误,可以按照错误码进行排查,且不会将数据进行发送。
温湿度、气压:
报警信息:
供电电压:
5、当服务器有下行数据时,模组将数据按照协议进行打包并输出到串口,和上行的协议是基本一样的,区别在于报头变成了0xAAFD55,参数区用于指示数据来源于哪一路,同样的0x61代表数据来自Socket A, 0x62代表来自Socket B, 0x63代表来自Socket C,0x64代表来自Socket D。
比如:下图数据包带有socket标识0x62,代表该数据来自socketB,数据为01234567890123456789。
平台展示
将三类数据分别发往平台后,可以看到数据展示:
温湿度、气压数据:
报警数据:
供电电压:
总结
客户原定3个月的交付时间,最后这个项目花了两个月时间成功交付给了客户。时间主要节约在了调试通信模组上,使用这款DTU方案板,大大节约了调试时间,插上就能用,简单配置几条指令就能完成通信,而且得益于方案板做好了套接字分发功能,可以将数据分发到各个服务器,完美匹配客户的需求。写此篇文章的目的。一是对整个项目做一下记录,二是分享下工业网关相关的物联网开发经验给大家,最后是想安利一下这款DTU方案板,希望行业内或者论坛内有优秀的、好的产品大家可以共同分享、共同交流。
欢迎大家评论区留言、讨论交流。
标签:网关,Socket,温湿度,OneMO,串口,接字,数据,DTU,模组 来源: https://www.cnblogs.com/onemo/p/16594292.html