0 引言
在现代测控系统中,由于PC机具有强大的数据处理能力和良好的用户交互界面,单片机具有较强的现场抗干扰能力及良好的性价比,因此以PC机为上位机实施用户控制和以单片机为下位机进行实时数据采集的分布式智能化控制系统无疑具有很好的应用前景。本文中单片机实现了温度检测,具有较好的实时性;PC机完成了数据显示、存储及统计分析,绘制了实时温度曲线,并对系统目前所处状况做出了评判。两者之间以串行口进行通信联络。
l 数据采集系统的硬件基础
该系统的下位机选择Atreel公司的AT89S51单片机作为控制核心,负责采集现场温度值。温度传感器将温度转换为电压信号,经模/数转换器ADC0809转换成8位数字量,并经AT89S51的P1口进入单片机保存。上位PC机通过串行口与下位机联络,向下位机发送控制命令和接收下位机上传的数据以及进行人机交互。上位机采用VB 6.0进行人机交互界面设计,并利用其MSComm控件实现与下位机简单而高效的串行通信。充分发挥了单片机在实时数据采集和PC机对图形处理、显示以及数据库管理上的优点。使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而是形成了以网络为核心的分布式多点系统的发展趋势。由于上下位机串行口工作电平不一致,它们之间通过MAX232芯片将单片机TTL电平转换为RS 232电平,构成如图1所示的系统结构框图。
2 VB环境下串行通信的实现方法
VB可视化界面的设计风格具有简单、易学、高效的特点,已成为众多开发人员采用的工具,且被广泛应用到各个领域。VB的MSComm通信控件,只需用户编写少量的程序代码即可完成通信软件的开发过程。
2.1 MSComm控件简介
MSComm控件是Microsoft公司提供的串行通信ActiveX控件,MSComm控件通过串行口发送和接收数据,为应用程序提供串行通信功能。MS-Comm通信控件的主要属性如下:
(1)CommPort属性用于设置或返回通信连接端口。在设计时,CommPort属性值可以设置成从1~16的任何数(缺省值为1)。
(2)Settings属性用于设置初始化参数。以字符串的形式设置或返回联机速率、奇偶校验、数据位、停止位等4个参数。其格式为:“BBBB,P,D,S”。其中,BBBB表示联机速率;P表示奇偶校验位检查方式;D表示数据位数;S表示停止位数。该系统设其为“9600,N,8,l”。
(3)Portopen属性用于设置或返回通信串口的状态(开或关)。Portopen属性为Boolean类型,当值为True时,表示打开串口;当值为False时,表示关闭串口,并清空接收和发送缓冲区。
(4)Input属性用于从接收缓冲区读取数据。
(5)Output属性用于向发送缓冲区写入数据。
(6)InputMode属性用于读取或设置从接收缓冲区读取数据的格式,当InputMode=O时,数据以文字形式读取;当InputMode=1时,数据以二进制形式读取。
2.2 上位机程序设计
上位机主要负责发送控制命令,以及数据的接收、处理、计算、数据的显示等功能。上位机程序分为四个部分:界面设计、程序初始化、数据通信、数据处理。程序流程如图2所示。
主操作界面主要分为四个组成部分,如图3所示。为使界面清晰明了,用frame控件将其隔开。
其中,温度界限部分主要用来显示用户自己设定的温度上下限;数据接收部分采用外部控件MSFlexGrid来显示已经接收过来的数据;统计计算部分用来显示对数据分析后的结果,如最大值、最小值、平均值等,最后对当前系统状况作出综合评判;温度曲线部分显示当前所有温度的变化情况,每个温度值对应曲线突出的一点,其中两条虚线内的点代表温度值在界限范围内,两条虚线外的两个点则表示该温度值超出了界限范围。
进入主界面后,用户首先单击“开始联络”,此时上位机会向下位机发出联络信号,下位机受到预先设定的联络信号后,会将数据发送过来;然后单击“接收数据”命令,此时会在MSFlexGrid控件中按先后顺序依次显示接收到的数据;在进行数据处理之前,用户可根据自身需求进行温度界限的设定,仅单击“界限设置”命令即可实现;最后进行数据处理,单击相应命令按钮后,会在界面绘出当前温度曲线,并计算出各种统计参数。
2.3 串口通信初始化程序
该程序主要用于对数据缓冲区以及串口部分的初始化,如串口的选择、串口的数据格式等。这部分程序的代码如下:
2.4 上位机通信程序
该程序由数据发送(联络信号)和数据接收组成。两部分程序分别写在对应的命令按钮“开始联络”、“接收数据”的Click事件下。具体程序代码如下:
3下位机通信软件设计
下位机程序包括初始化部分、数据采集和接收联络信号部分、数据发送部分。
AT89S51单片机串行通信由定时器Tl作为波特率发生器,其波特率与PC机一致。数据的传送格式为8位数据位和1位停止位。采用查询方式发送和接收数据,定时器T1设置为工作模式2,串行口设置为工作方式1。该设计将通信速率设置为9 600 b/s,SMOD=0,单片机晶振频率为11.059 2 MHz,此时定时器T1的初值应被设为:
3.1 接收上位机命令程序
接收上位机命令程序:
3.2数据发送程序
数据发送程序:
4 结语
单片机与上位机的通信在工业控制现场的应用比较广泛,利用VB提供的通讯控件MSComm对上位机进行编程比使用API函数编程更简单灵活。本文通过具体实例分析了计算机与单片机之间的通信方法。调试结果证明,该方案切实可行,能够确保通信的稳定,具有重要的现实意义。