APP下载

MCGS平台下51单片机驱动构件开发与应用

2011-07-26包建华张兴奎胡福年

自动化仪表 2011年11期
关键词:驱动程序调用组态

包建华 张兴奎 胡福年

(徐州师范大学电气工程及自动化学院,江苏 徐州 221116)

0 引言

工控组态软件(monitor and control generated system,MCGS)是指在数据采集和过程控制中使用的专用软件,它提供了监控层的软件平台和开发环境,一般用于自动控制系统的监控层,其灵活的组态方式,可使用户快速构建专业级的工业自动监控系统[1]。

工控组态软件是一套基于WindowsNT/2000/XP操作系统、可用来快速构造和生成上位机监控系统的组态软件系统。它为用户提供了从设备驱动、数据采集到数据处理、报警处理、流程控制、动画显示、报表输出等用来解决实际工程问题的完整方案和开发平台[2]。在实际应用中,由于所用设备的特殊性或实际工程的需要以及用户的个性化需求,MCGS提供了一套开放的、可扩充的接口规范和配套的高级开发工具包,允许用户根据自己的需要来开发设备驱动构件[3]。本文开发的基于MCGS的AT89C52单片机驱动构件可完成现场终端和上位机间的可靠通信,从而实现对房间温度的远程监测和报警限值的在线设置。

1 MCGS设备驱动构件概况

MCGS采用Active DLL构件的方式来实现设备驱动程序,并通过规范的对象链接与嵌入(object linking and embedding,OLE)接口,将Active DLL构件挂接到MCGS中,使其构成一个整体。由于设备驱动构件和MCGS运行在同一个进程内,故设备构件的运行速度快、可靠性高。OLE是一个可扩充的开放标准,用于实现不同软件之间的相互操作,因此,可以使用VB、VC、Delphi等语言来编制MCGS的设备驱动程序。鉴于Visual Basic的通用性和简单性,且VB6.0以上的版本是以二进制码来编译执行程序,其运行速度巳接近或超过VC,完全能满足设备驱动构件所需的速度要求,因此,本文采用VB6.0进行单片机驱动构件的开发。

与MCGS相连接的外部设备分为独立设备、父设备和子设备3类。独立设备是可独立工作、完成特定数据输入输出功能的设备,如用于模拟量输入输出、数字量输入输出的PC接口卡等;父设备是本身不直接处理数据输入输出,但能管理其他设备的工作,如串行口设备等;子设备是本身具有处理数据输入输出的功能,但只有和对应的父设备一起才能构成完整的工作系统的设备,如PLC设备、带智能通信功能的仪器仪表等。单片机是工作在串行口父设备下的子设备,MCGS提供了串行口父设备驱动构件,需要开发的是挂接在串行口父设备下的子设备驱动构件[4-5]。MCGS与单片机通信结构框图如图1所示。

图1 通信结构框图Fig.1 Block diagram of communication

MCGS设备驱动构件的实现方法和原理与标准VB的ActiveDLL基本一致,不同的是MCGS规定了一套接口规范,只有遵守这些接口规范的ActiveDLL,才能用作 MCGS的设备驱动构件。具体来说,开发MCGS设备驱动构件的过程就是根据通信协议制定的数据帧格式,对MCGS接口规范中的5个属性函数和8个方法函数进行定义、编程、调试和挂接,从而完成设备功能的配置。

2 MCGS设备驱动构件的开发

对MCGS设备驱动构件的开发可以采用以下两种方法加以完成:一种是利用开发向导生成框架,然后在Visual Basic编程环境中加入自己的驱动程序部分;另一种是利用现有的设备驱动程序进行移植。本文采用的是前一种方法。

2.1 通信协议与数据格式

数据交互涉及通信协议问题。MCGS设备驱动构件的帧格式如图2所示。51单片机串口集成了一个全双工通用异步接收发送器UART。这里采用UART工作在模式1下,按照字节传输数据,数据帧格式为1位起始位、8位数据位和1位停止位[6]。

图2 帧格式Fig.2 Format of frame

2.2 串口操作函数

编写子设备驱动程序时,主要是对串行端口进行操作。MCGS把复杂的对串行端口的设置(如波特率、数据位长度、数据校验方式等)、初始化和读写操作全部封装在MCGS提供的串口父设备中。子设备按照通信协议将数据打包,然后调用串口父设备提供的标准串口读写函数,即可完成对数据的读取和发送工作[7]。常用的串行端口操作函数如下。

2.3 属性接口

MCGS提供的接口规范中共有5个属性接口,编程者可通过调用属性接口函数来对设备属性进行设置。通过设置这5个属性,可以标明设备的类型、类别、设备的通道个数、设备所用I/O地址的个数和设备所用I/O的基地址。由于是子设备,故单片机驱动构件不需占用系统I/O。本设计需要对某房间的温度、温度上/下限报警限值、房间灯盏进行远程监测与控制,因此,设定的通道个数为7个。5个属性接口设置代码具体如下。

2.4 方法接口

MCGS在组态环境和运行环境下需要调用方法接口来实现特定的功能,如实现初始化、数据的输入与输出、通道的数据类型说明等功能。

2.4.1 组态环境中调用接口的方法

GetDevName接口供MCGS读取设备的类型名称,MCGS将把这个名称显示在设备工具箱中。本文设置如下:GetDevName=“单片机控制器”;GetDevHelp接口用以显示设备构件的在线帮助;SetDevPage接口用以设置设备构件的内部属性页。当把设备从设备工具箱中选取到设备窗口中时,调用InitNewDev接口,设置设备的缺省属性值。

2.4.2 运行环境中调用接口的方法

运行环境中调用接口的方法具体如下。

①在MCGS运行环境启动时调用InitDevRun接口一次,用于对设备构件进行初始化工作。

②MCGS调用GetChlType接口读取设备各通道的数据类型和通道内容的文字描述,在设备属性设置窗口的通道连接属性页中所显示的内容来自本接口。本设计需设置7个通道,第1~4通道用于远程控制房间四盏灯的亮灭,使用51 单片机的 P1.0~P1.3;第 5 通道用于实时采集房间的温度值;第6、第7通道用于在线设置房间温度上/下限报警值。程序代码如下。

③在MCGS运行环境中,从设备采集数据或向设备输出数据通过定时调用CollectDevDat接口来完成。设备构件首先调用父设备的串口操作函数ComOutIn-Dat,把命令字写到串行端口,再输出到单片机控制器,单片机控制器收到命令字后发送数据到串行端口,串行端口读取返回的数据,再把数据存入到数组Output-Byte()中,然后将数组中的数据解包,把所需要的变量值存放到通道数组asngdatavalue()中,供MCGS进行处理。

按照通信协议,发送帧格式采用“#”+“地址编号”+“命令数据”+“!”,然后将该字符串转换为ASCII码发送至单片机控制器。数据接收帧格式与之类似。

在CollectDevDat接口中编制的程序代码如下。

在VB的程序模块DevBas.bas中编制的源程序代码如下。

通过调用父设备的串口操作函数ComOutInDat,实现与单片机控制器交互数据,相应的程序代码如下。

④在MCGS中,周期性读写参数都是在通道连接中实现的。因此,本设计中没有对RunDevCommand接口函数进行编程。

3 下位机的通信程序设计

本文选用Atmel公司的AT89C52单片机作为下位机,房间温度传感器选用 DALLAS公司的DS18B20。DS18B20采用1-Wire总线,可将温度直接转换成串行数字信号供微控制器处理,测温范围为-55~+125℃,最大分辨率可达0.0625 K[8]。

下位单片机通过串口和上位机交换数据,采用T1作为UART的波特率发生器。单片机晶振频率选为11.0592 MHz,设置 SMOD=0、TH1=0FDH,可得到波特率为9600 bit/s。这样获得的波特率误差率为0,提高了串口通信的可靠性。为提高数据交互的实时性,单片机收/发数据采用中断方式。按照前述数据通信协议约定,单片机串行口的中断服务程序流程如图3所示。

图3 中断服务程序流程图Fig.3 Flowchart of the interrupt service

4 驱动构件测试与应用

MCGS为设备驱动构件提供了一套在VB环境下进行在线调试的运行机制,使用户能够随时在VB源代码一级对构件的接口函数进行调试、测试,以验证编程正确性。编程调试工作完成后,经编译,生成*.dll文件,只要把此文件拷贝到D:MCGSProgramDrivers的目录下(假定MCGS系统安装时的目录为D:MCGS),即完成设备驱动构件的挂接工作[9]。

启动MCGS组态环境,在工作台中打开设备组态窗口,再通过设备工具箱的“设备管理”窗口,完成自主开发的单片机驱动构件在Windows中的登记工作。

本文开发的基于MCGS的51单片机驱动构件可实现对房间温度的实时监测,并能够在上位机中对房间温度的上/下限报警限值进行在线设置。系统运行中一旦温度超限,上位机监控可立即实现汉语语音报警,其中的声音文件由中科大讯飞信息科技公司“InterPhonic CN语音合成系统”产生,效果如真人发音[10]。同时,系统可实现在上位机上对房间的4个灯盏进行远程开启与关闭。

5 结束语

工控组态软件开发的计算机监控系统具有系统配置灵活、开发周期短、通用性强、可靠性高等特点,MCGS提供了一套规范的设备驱动程序接口,用户可方便灵活地开发设备驱动程序。熟练掌握MCGS设备驱动构件的开发方法不仅大大拓宽了硬件选型范围,也为开发基于MCGS的计算机监控系统提供技术保证。实际运行表明,本文开发的基于MCGS的51单片机驱动构件效果良好,数据交互及时可靠。

[1]曹辉,马栋萍,王暄,等.组态软件技术及应用[M].北京:电子工业出版社,2009:1.

[2]包建华,丁启胜,张兴奎.工控组态软件MCGS及其应用[J].工矿自动化,2007(3):92.

[3]邱小文,汪仁和.基于MCGS组态软件的设备驱动开发[J].露天采矿技术,2007(5):51.

[4]周杰,林沂杰.基于MCGS的51单片机驱动构件实现方法[J].微计算机应用,2009,30(11):76-77.

[5]邱小文,汪仁和.基于MCGS的凌阳单片机驱动程序的设计[J].微计算机信息,2006,22(7):113.

[6]王晓光,郑萍,马巧娟,等.基于MCGS的51系列单片机通用驱动程序设计[J].仪表技术与传感器,2010(5):38.

[7]潘峥嵘,张岩,郭凯,等.基于MCGS的C8051F020单片机驱动程序的设计与应用[J].微计算机应用,2009,30(2):49.

[8]李光飞,楼然苗,胡佳文,等.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004:105-115.

[9]马海瑞,周爱军.MCGS的可扩充性及其设备驱动构件[J].兵工自动化,2005,24(2):80.

[10]包建华,张兴奎.空压机组监控软件应用中的若干技术处理[J].工业控制计算机,2007,20(10):45.

猜你喜欢

驱动程序调用组态
基于PLC及组态技术的恒温控制系统开发探讨
核电项目物项调用管理的应用研究
阻止Windows Update更新驱动程序
系统虚拟化环境下客户机系统调用信息捕获与分析①
计算机硬件设备驱动程序分析
基于PLC和组态的智能电动拧紧系统
铸造行业三维组态软件的应用
基于PLC和组态的新型回转类测试设备的研制
利用RFC技术实现SAP系统接口通信
妙用鼠标驱动