基于MCGS的51系列单片机通用驱动程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Instrument Technique and Sensor
May.2010
—232通信的设备是子设备,不占用系统I/O. (2)读写属性:DevChannel标明设备的通道个数,默认是
16,用户也可以自行修改。 (3)MCGS为了用户在设置属性时能对设备属性进行组态
设置,可在编程时增加ActiveDLL属性。该设计为了编写通用 驱动程序,因此在编制设备驱动时增加了读写属性CldNumber 和Sendnag,编程如下:
l
开始符占用一个字符,通道号占用一个字符,数据位为7
个字符,结束符占用一个字符。开始符是用来表示每个数据帧
的开始,当下位机接收到开始符标志位时,开始判断下一位即
通道号,以辨别当前帧的数据是哪个通道的。当接收到结束符
标志位时,表示数据接收完毕。
1.2.3串口操作函数
基于单片机的外部设备通过计算机的串口与计算机进行
reOrder),0,64,35,1000)
’把从串行口读取的数据存放到变量s自rRetumData里面: For lnsIndn=0 To ln飒eadLen一1
strRc咖anData=strRemmData+Chr(bytOutput(hshdex)) Neat lnglndex 1.2.4接口函数的调用
Public ChlNumber As Integer’用于动态设定通道数 Public Sendflag As Integer’由于用多个设备,用于标识向哪个设 备发送命令字。 1.2.2数据的通讯格式 数据交互就要涉及到通讯协议问题,通讯协议如表l所示。
表1数据通信协议
l 开始符
通道号
数据
结束符
实现现场设备与MCGS的数据通信,可以有3种方式:DDE (动态数据交换)、OPC、驱动程序。采用DDE“软通道”的方式 快捷、方便…,但通信的实时性较差;利用OPC自动化接口与 MCGS OPC服务器进行数据交换,通用性很强,但是OPC服务 器的开发工作量大;MCGS提供了一套规范的设备驱动程序接 口,允许用户根据自己的需要来定制设备驱动程序。通过驱动 程序能实现现场设备与MCGS的数据通信旧J,但每种设备都必 须开发自己的驱动程序。
reorder。strRetumData) 把从串口读取的数据进行解包存放到通道中: asngDataVahe(i);Val(Mid(strRetumData,2))“i”为通道号; 基于驱动程序的通信流程图如图2所示。
2单片机的通信程序 厶1读写缓冲区的划分
为了实现通讯程序的通用性,单片机的通讯程序采用c语 言来编写,这样便于用户能根据自己的需要进行相应的修改。 参照MCGS的驱动程序,在单片机的存储区开辟了一段存储空 间(由于5l系列单片机片内RAM有限,这里只给发送和接受 个分配了一个缓冲区,用户若用其他单片机,也可自行分配空 间):1个用于存放MCGS发送过来的数据,1个存放准备发送 到MCGS的数据。这样便于用户对数据的处理,其空间定义如 下:
ComOutDat/ComlnDat,可完成各种功能通讯子设备驱动程序的
开发编程工作。标准串口读写函数comoutindat的目的是将读
数据的命令通过串口发送出去,并接收单片机发回来的数据,
编程如下:
Object,st触Ol'der Public Function FetchDataFormComm(ByVal InsCheckFl甥As Long,
MCGS在组态模式和运行模式下要调用接口函数来实现特
定的功能,如实现初始化、数据的输入与输出等功能。
(1)MCGS组态环境下,调用以下接口函数:
GetDevName接口为返回设备构件的类型名称;
InitNewDev接口为增加新设备时调用,用于初始化新设备;
万方数据
GetDevHelp接口为显示设备构件的在线帮助; SetDevPage接口为显示设备构件的特定属性页。 GetChlType接口:读取设备通道信息,包括通道数据类型和 通道内容的文字描述,显示在通道连接属性页中。当通道的数 据类型为负数时,表示该通道的作用是把设备中读取的数据输 入到MCGS中;为正数时,表示该通道的作用是MCGS中的数 据发送到设备,供设备处理使用。对应16个通道,默认设置是 0—7通道为发送数据,8—15通道为接收数据,用户也可以自 行修改。 (2)在MCGS运行环境中,设备构件开始采集之前调用一 次InitDevRun接口,用于对设备硬件进行的初始化工作。 (3)在MCGS组态模式和运行模式下,MCGS会按设定的 采集周期,调用CollectDevDat接口(需要定时采集的数据都通 过这个接口),从设备采集或向设备输出数据。 设备构件首先调用串行通信父设备函数ComOutinDat把命 令字写到串行端口输出到通信设备,通信设备收到命令字后, 发送数据到串行端口,串行端口读取返回的数据,再把数据返 回到bytOutput()数组中,然后把数组中的数据解包,把所需要 的变量值存放到通道数组asngI)ataValue()中供MCGS进行处 理、存储与管理。部分程序如下: ’数据的通讯格式为:开始符。·”+通道号+数据+结束符“#”
Dim strCommOrder As蛳’字符串形式,存放打包后的数据,用
于串口加函O数rd中er调=用cs;扛(1lII州h加e1)+CS口(asnsDataValue(1ng.
D"Ch咖d))+”#”
调用串口通讯函数:
lngRetI珊:F缸h【IataF锄C删(0,m—objCommPamnt,strCom.
中图分类号:TP29
文献标识码:B
文章编号:1002—1841(20lo)05—0037—04
Design of General Driver for 51 Series MCU Based on MCGS
WANG Xiao·guang,ZHENG Ping,MA Qi舯-juan,WANG Yu-fci,ZHANG Jian-gang (School of Electrical and Information Engineering,Xihn,q University,Chengdu 610039,China)
设备属性可以分为2类:读写属性与只读属性,共有5个 接口属性,程序可以通过调用属性接口函数来设置设备属性。
(1)只读属性:每个设备驱动程序都有4个只读属性。 DevType为1则属性接I=I标明设备类型为子设备;DevStyle为1 则属性接口标明设备种类为和串口父设备对应的子设备;DevI- ONuml地r为属性接口标明设备所占用系统I/O的个数,通过Rs
接收数据的存放地址:unsigned char re_dat[8]; 发送数据的存放地址:unsigned char send_dat[8]; 结合上述驱动程序,MCGS实时数据库的数据对象对应单 片机缓冲区的分配设置如表2所示。 数据对象为MCGS的实时数据库中的变量,每个数据对象 对应一个通道。单片机中的接收缓冲区负责存放当前通道的 数据,用户要将其即是取出处理,以免接收到下一个通道数据
2010年 第5期
仪表技术与传感器
Instrument Technique and Sensor
2010 No.5
基于MCGS的51系列单片机通用驱动程序设计
王晓光,郑萍,马巧娟,王玉飞,张建刚 (西华大学电气信息学院,四川成都610039)
摘要:在讨论工控组态软件与外部设备的数据交互途径的基础上,针对实际应用中现场设备多种多样,MCGS所提供
收稿El期:2009一10—19收修改稿日期:2009—12一II
万方数据
51单片机提供了一个全双工标准接口,通过电平转换芯片
MAX232及相关外围电路来实现’I’IL信号和RS一232电平信
号之间的转换,实现与计算机串口RS一232的硬件通信通道连
接,通过设计设备驱动程序,实现基于51单片机的设备与上位
但是通过此通用驱动程序,设计者只需经过简单的设置就 可以将基于5l单片机的仪表、设备接入MCGS,无需重新开发 驱动程序;推而广之,将所设计的驱动程序进行少量改动,即可 适应各种类型的设备,或可以和其他类型的单片机进行通信。 1基于MCGS平台的驱动程序的开发 1.1基于51单片机的设备与上位组态软件的连接
objco衄nP咖n As
As Sm%,mReamd)am As
stag)As Ions Dim bytOutput(0 To 2047)As Byte数据缓冲区,用来存放串口输出
的数据和从串口中读取的数据; lngReadLen=objCommPamnt.comoutindat(bytOutput().Len(啦C锄·
组态软件的数据交互。其接口结构图如图1所示。
M
C
鋈H曼H薹 G
51
S
量
组
片
态
机
软
件
盈1通信接口结构圈框图 1.2利用开发向导生成驱动程序的框架设计
MCGS用Active DLL构件的方式来实现设备驱动程序,通 过调用不同的接口函数来完成设备驱动所需的功能,并以规范 的OLE接口挂接到M发向导能在VB6.0开发环境下自动生成设备驱动程序的 框架,然后此基础上,针对具体设备的功能进行进一步的编程 和调试工作。 1.2.1 MCGs提供的接口规范
数据通信,如图l所示。在MCGS中与串口通信有关的设备,
必须调用一个串行通信父设备。MCGS把复杂的对串行端口的
设置(如波特率大小,数据位长度,停止位位数,有无奇偶校验
等)、初始化和读写操作全部封装在MCGS提供的串行通讯父
设备中,在编写通信子设备驱动程序时,主要使用的就是对串
行端口进行操作,通过调用父设备提供的标准串口读写函数
的设备驱动程序有限的状况,设计了基于应用极为广泛的5l系列单片机外部设备的通用驱动程序,并在步进电机控制系
统中对驱动程序进行了应用与调试,其结果证明所设计的驱动程序在具体的应用中可解决驱动程序的重复设计问题,具
有良好的通用性,并为一般的设备驱动程序设计提供了设计思路和程序框架。
关键词:数据通信;MCGS;单片机;驱动程序
Abstract:According to the fact that the variant practical application in field devices and the driver provided by MCGS is limit- ed,on the basis of the discussion with the way of data communication between the MCGS and external devices,the general device driver was designed based on the extremely widespread application ot"51 series MCU.Then the driver was debugged and applied in stepping motor control system.The result proved that the driver Can solve the problem of the driver repetition design in the concrete application,it has a good generality and provides the design ideas and the program frame for the design of general device driver.
Key words:data communication;MCGS;MCU;driver
0引言 目前,工业组态软件已经广泛应用于工业控制领域。用户
无需了解复杂的编程知识,就可以用工业组态软件在短时间内 完成一个具备专业水准的计算机监控系统的开发工作。MCGS 是一套基于Windows平台的、为工业过程控制和实时监测服务 的32位全中文界面组态软件系统。为了与现场设备进行交 互,它提供了国内外各种常用的工控设备的驱动程序;但在实 际应用中,现场设备多种多样,MCGS所提供的设备驱动程序有 限。这就涉及到新设备与MCGS的数据交互问题。