APP下载

单片机控制的电子钟组态设计

2018-05-10李生明黄宝玉

泰州职业技术学院学报 2018年1期
关键词:组态王子程序字节

李生明,黄宝玉

(1.清远职业技术学院 机电与汽车工程学院,广东 清远 511510;2.长江工程职业技术学院 学生工作部,湖北 武汉 430212)

单片机以其实时监控性能优秀广泛用于测控系统,通常采用数码管、液晶、点阵等作为其显示设备,自成体系。组态王是一种通用的工业监控软件,可以制作出精美的组态画面,设计简单,在工业控制系统中广泛使用。下面以单片机控制的电子钟为例,设计一个单片机的电子钟组态系统,完成时间和温度的实时通讯。

1 通讯协议介绍

组态王运行在上位PC机上,单片机作为下位机运行时钟控制程序,时钟数据要通过通讯线路传送到PC机上,在组态王中显示,通讯方式采用串行通信,如RS232、RS422、RS485,波特率可以选2400、4800、9600、19200bps。值得注意的是,它们之间的通讯均采用ASCII形式进行,因此单片机的数值在传送前均要转换成ASCII码。

1.1 组态王“读”单片机数据通讯格式

本系统中组态王要向单片机读取“时、分、秒”时钟和温度数据,因此要向单片机发送读命令,希望单片机能传回相应数据。读命令是组态王自动发出的,不需要在组态王中编程,只要在单片机程序中接收此命令,然后作相应处理。读命令的通讯格式如下:

格式说明;

(1)字头:@符号,即40H

(2)设备地址:1字节2个ASCII码,0~255(即0~ffH)

(3)标志:1字节2个ASCII码,具体各位的含义为:

bit0=0:读,bit0=1:写。

bit1=0:不打包。

bit3bit2=00,数据类型为字节。

bit3bit2=01,数据类型为字。

bit3bit2=1x,数据类型为浮点数。

(4)数据地址:2字节4个ASCII码,0000H~ffffH

(5)数据字节数:1字节2个ASCII码,1~100,实际读写的数据的字节数。

(6)异或:计算从设备地址到异或字节前的异或值,转换成2个ASCII码

(7)CR:回车符,0dH。

例如:本设计组态王要读取单片机的“时、分、秒”和温度信息,分别存放在组态王的X0、X1、X2、X3中予以显示。表1是以读取秒信息为例,取设备地址为6,组态王读取X2(秒)时所发数据。

1.2 单片机响应组态王“读”命令的通讯格式

单片机运行时,采用中断方式实时接收串口数据,当接收完一帧数据后,经过校验,若正确,再判断是不是“读”命令,若是,就应向组态王发送数据[1],单片机向组态王发送数据时要进行ASCII格式转换,转换方法同上例,其通讯格式为:

表1 数据表

?

2 时钟显示系统的组态设计

2.1 建立组态王设备

启动组态王后,在组态王的左侧导航树中选择“设备”,在右侧双击“新建”进入新建设(如图1)备向导,依次展开“设备驱动—智能模块—单片机—通用单片机ASCII—串口”,选择与单片机连接的COM口,在配置设备地址(如图2)时填写“6.0”,其中,6代表通讯协议中的设备地址,由用户定义,范围为0~255,即单片机地址号为6;0表示不打包。其他操作保持默认[2]。

图1 新建设备

图2 配置设备地址

2.2 建立数据词典

建立三个组态变量:时、分、秒、温度,均为IO整型变量,对应内部的寄存器X0、X1、X2和X3,用于与单片机交换数据。建立好的数据词典如图3所示。

图3 数据词典

2.3 建立组态王画面

如图4所示,应用“文本”工具建立文本标签和显示文本,其中“:”为分隔,运用“模拟值显示”动画连接,表达式分别对应数据词典中的时、分、秒、温度变量,用于显示“时:分:秒”和温度数据。运行时的截图如图5所示。

图4 组态画面

图5 组态王运行画面

3 单片机程序设计

运行组态王的PC机通过串口与单片机相连,编写单片机的监控程序与组态王通讯,程序由四个部分组成:主程序、时钟和温度采集程序、串行中断子程序、公共发送子程序。

3.1 主程序

主程序由两个部分组成:初始化部分和主循环部分。初始化部分完成定时器、串行口、中断系统的初始化;主循环部分根据接收缓冲区数组的数据构造发送缓冲区数组,并通过串口发送给组态王,来响应组态王的命令。具体工作是,当组态王发送来的是“读”命令时,构建组态王所要的数据,并将数值拆分转换成ASCII码,而且还要经过异或运算求校验码。关键程序如下(本程序忽略了校验处理):

3.2 时钟和温度采集程序

采用DS1302时钟芯片采集实时时间,数据保存在X0、X1和X2变量中;采用DS18B20芯片采集当前温度数据,存放在X3变量中。这样只要在处理程序中将X0~X3数据通过串行口发送出去就可以完成通讯。这两部分的程序比较经典,此处省略其程序。

3.3 串行中断子程序

这部分的主要工作是接收组态王发来的数据,并作必要的处理:更新发送缓冲区数组的部分数据、提取读写标记位。本部分的程序如下:

3.4 公共发送子程序

此子程序功能比较单一,就是构造一个灵活的发送程序,带两个形参,一个是发送缓冲区数组的指针,另一个是发送的数据个数[3]。具体程序如下:

4 小结

综上所述,单片机与组态王的结合,完美地实现了电子钟的组态设计,为系统提供了优良的画质效果,且编程工作量也不是太大,只要按规范的通讯协议编程即可完成。如果采用了无线模块,更高级的应用就是实现无线数据传输。

参考文献:

[1]刘守义.单片机应用技术[M].西安:西北电子科技大学出版社,2007.

[2]张永枫.单片机应用实训教程[M].北京:清华大学出版社,2008.

[3]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009.

猜你喜欢

组态王子程序字节
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击
基于组态王软件和泓格PIO-D64 板卡的流水灯控制
液压系统电气控制虚拟实验系统的开发
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
简化编程与子程序嵌套的应用
人类进入“泽它时代”