基于OneNET的单片机控制系统设计

2018-02-25 11:54夏春飞
电子技术与软件工程 2018年11期
关键词:总线联网定义

夏春飞

摘要 本文将51单片机通过485总线接入计算机,由计算机将数据上传到中移物联网云平台,并通过计算机及Android手机实现远程监控,将传统的控制技术引入远程监控,为职业院校的机电专业或信息类专业引入物联网技术提供了技术参考。

[关键词]OneNET 51单片机 modbus协议C#Android

单片机控制技术是自动控制领域的核心技术,各职业院校的机电技术专业都建设了相应实训室,而随着物联网的兴起,如何将新技术引入到传统专业,培养新时代合格的机电类高技能人才,成为了职业院校教师需要思考的问题。本文以LM35温度传感器采集信号为例,将LM35通过AD转换接入51单片机,单片机通过485总线接入计算机,再通过计算机将数据上传到中移动物联网云平台,通过手机实现远程监控。具体实现过程如下:

1 51单片机通过485总线接入计算机

1.1 单片机硬件设计

本设计单片机芯片采用STC12C5A60S2,因它价格便宜,且和8051指令、管脚完全兼容,并且内部自带高达60K FLASHROM。通信采用TTL转RS-485模块,在Modbus通讯中单片机作为从机,PC机作为主机.通过RS232-485接口实现通讯。

1.2 485通信技术

485总线是常用的一种工业总线,采用平衡发送和差分接收方式实现通信,有极强的抗共模干扰的能力,最大的通信距离约为1219m,一般采用MODBUS/RTU通讯协议,根据Modbus协议中的RTU模式实现读写寄存器等多个功能。本程序可实现01、02、03、04、05、06、15、16功能码,且修改方便灵活。具体实现如下:

1.2.1 单片机485从机通信程序

本文的Modbus从机通信程序有resister.h、Modbus.e及maln.e文件,程序编写说明如下。

resister.h文件:定义可实现的功能码,如可读可写离散寄存器定义为#defineRWSTATUESO O,可实现功能码01、05、15;保持寄存器定义为#define RWDATO40000,可实现功能码03、06、16;其他的寄存器可根据需要灵活定义,从而可实现01、02、03、04、05、06、15、16功能码。

Modbus.e文件:首先定义接收数组ucharreceBuf[50];发送数组ucharsendBuf[50],再定义接收数据个数变量receCount及发送数据个数变量sendCount。根据需要定义数据区如3个只读整型ucharROdat[3],3个可读可写整型uintRWdat[3],只读线圈bit ROstatus0=0,可读可写线圈bitRWstatus0=0。然后编写各功能码的实现函数,如05功能码的实现函数程序流程图见图1,其余的根据需要写出。有了功能码实现函数,则写checkCommOModbus()函数,主要是根据查询串口接收的数据包内容执行相应的功能码动作,实现程序流程框图见图2。

1.2.2 编写LM35传感器通过AD转换获取温度

先编写控制函数adzh(),LM35通过ADC0809将转换后的数据存入RWdat[0],因ADC0809的参考程序较多,这里不再重复。将编写好的控制函数加入循环函数扫描,主函数的流程框图如图3。另外计算出modbus协议中该数据的读取命令,并通过串口助手测试。如RWstatus[0]为O,则modbus读取RWdat[0]的命令为01 03 00 0000 01 84 0A。

2 电脑与云平台的通信程序

(1) OneNET是中国移动物联网有限公司面向公共服务自主研发的开放云平台,学生自己注册即可使用。先新建设备,并得到appkey=”xxxxxxxx”,DeviceID=”xxxxx”,添加数据流wendu,给后边的程序使用,最后针对HTTP协议,下载OneNET提供的c#语言SDK。

(2)编写单片机控制类Dpjcs.cs。首先定义好获取温度命令byte[] onWendu= newbyte[]{ Ox01, Ox03, Ox00, Ox00, Ox00, Ox01,Ox84,OxOA),具体获取温度的GetWendu()函数流程图见图4,串口程序部份省略。

(3)上传温度值到云平台并查看数据,流程图如图5。当点击上传数据按钮,则实例化单片机控制类Dpjcs.cs,调用类中的GetWendu0函数获取温度,再调用己下载SDK中的方法上传数据。获取温度数据显示见流程图。

(4)最终生成的运行界面如图6,通过左边的发送及接收按钮可对单片机进行测试。通过上传数据按钮可将采集后的温度间隔1秒持续上传数据。点击获取按钮以1S的时间间隔采集云平台数据并显示在文本框间中。

3 Android手机与云平台的通信

(1)在OneNET文档中心,根据查看单个数据流的API文档,写相应实体类。

(2)主程序利用異步线程AsyncTask类,用OkHttp访问网络获取数据,用gson进行解析后,将获取数据返回给UI界面中的文本框。AsyncTask类中dolnBackground回调方法的程序流程见图7,onPostExecute的回调方法只须将解析出的温度值赋值给文本框即可。最终生成的手机运行界面如图8,可以实时查看温度。

4 结论

本文通过对51单片机加入modbus协议从机程序,PC作为主机,用Visual C#进行编程进行数据获取并上传到中移动物联网云平台,再使用手机查看相应信息。为学生及相关学习者学习使用云平台上传及查看数据提供了一种方法,经实践证明,效果良好。但本文主要针对学习,所以用PC机作为了网关使用,在应用中还须根据实际情况选择合适的产品。

参考文献

[1]中国移动物联网开放平台OneNet文档中心https: //open. iot. 10086. cn/,

[2]《c#入门典(第5版)》Karli Watson,Christian Nagel(美国)著齐立波(译)[M].北京:清华大学出版社,2015.

[3]陈文.深入理解Android网络编程:技术详解与最佳实践[M].机械工业出版社.2014.

猜你喜欢
总线联网定义
“身联网”等五则
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
抢占物联网
多通道ARINC429总线检查仪
可再生能源与物联网
得MCU者得物联网天下
基于EtherCAT总线的ROV控制系统设计
修辞学的重大定义
山的定义