网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
仪器驱动

监控软件设备驱动程序编制原理与实现李晓春,方彦军(武汉大学自动化系,湖北武汉 430072)  摘 要:以MCGS监控软件为例,详细介绍了监控软件与PLC、采集板卡、智能仪表等进行数据通信的设备驱动程序的编制原理与实现。????关键词:驱动程序;监控软件;原理;实现0 前言  在专业监控软件出现以前,自动控制系统集成人员的一个重要任务就是编写专门的系统上位监控程序。但是,在实际工程中我们发现:一方面,由于各编程人员的水平参差不齐,许多软件的功能与可靠性都存在问题;另一方面,由于每个编程人员的编程习惯与编程思路都不同,程序的可读性与功能的扩展性都比较差。因此,功能强大、实用面广的专业监控软件就应运而生。如MCGS监控软件、组态王控软件等。由于现场智能仪表、采集板的多种多样,监控软件自带的设备驱动程序毕竟有限,因此编制设备驱动程序就成了自控系统集成工程师的重要工作之一。  本文以北京昆仑通态公司开发的MCGS为例来说明监控软件设备驱动程序的一般思路。MCGS是基于Windows95与Windows NT平台,为用户提供了从数据采集到数据处理、报警处理、流程控制、动画显示、报表输出等解决实际工程问题的完整方案与操作工具。MCGS允许用户在Visual Basic中操作MCGS中的对象,提供了一套开放的可扩充接口,用户可根据自己的需要用VB编制特定的功能构件来扩充系统的功能。1 接口原理??? 许多组态软件提供了设备驱动程序软件开发包,支持用户用VB、VC、Delphi等高级编程语言编制设备驱动程序。MCGS组态软件驱动程序编程原理框图如图1所示:  几乎所有的PLC、智能仪表、采集板卡都提供了驱动软件,有的在说明书中还提供了驱动软件的核心代码、函数或数据结构。而监控软件也提供了开放性的可扩充接口,一般包括属性函数、方法函数、IO端口操作函数与串口操作函数等。在运行模式下,监控软件定时或在事件激发时调用设备驱动程序,而设备驱动程序根据需要,再调用设备核心函数。  例如,MCGS在组态模式下按“在线帮助”按钮就会调用GetDevHelp接口,显示设备构件的在线帮助;按“内部属性”按钮时就会调用SetDevPage接口,显示设备构件的特定属性页。在运行环境下,MCGS首先调用一次InitDevRun接口对设备进行一些必须的初始化工作。然后MCGS按设定的采集周期调用CollectDevDat接口,从设备采集数据或向设备输出数据。运行时,当用户在脚本程序中调用!SetDevice函数或在运行策略中调用设备操作功能时,MCGS调用RunDevCommand接口,以执行设备的特定功能。2 编程实现  常用设备驱动程序包括采独立板卡类驱动程序与智能仪表类驱动程序。2.1 独立板卡类  独立板卡类包括模数(A/D)转换板、数模(D/A)转换板、开关量输入输出板(DI/DO),通信板卡等。它们一般直接插入计算机的总线槽里,通过ISA或PCI总线扩展槽与计算机进行数据通信。每块板都有一个基地址范围为:000H-3FFH,计算机通过该基地址来向采集板输入输出数据,没有通信协议的概念。  在MCGS组态软件运行时,MCGS会定时调用接口函数:Public Function CollectDevDat(DatFAs Variant,DatAs Variant msg As Variant)As Long。所以需要定时采集的数据都通过这个接口来采集,采回来的数据都放在数组dat中。  对于那些不需要定时采集的数据,如设备的量程上下限,或其他一些参数,只有用户改变了后,才需要重新读回来,还有一些往设备输出的参数,也是不定时的,MCGS为这些特殊的情况定义了一个接口函数:Public Function RunDevCommand(DatObj As Object,ByVal Cmd As String)As Long。在MCGS的脚本程序里执行函数!SetDevice(“子设备名”,6,“带有参数的命令名”),MCGS就会调用RunDevCommand函数,并把“带参数的命令”传给了字符串变量“cmd”。如以天辰PID控制仪为例,用户想改变仪表的设定值(SV值),我们就可以定义一条这样的命令,SetValue(dat1,dat2),这时MCGS就把命令传到了cmd中,cmd=“SetValue(Dat1,Dat2)”。使用字符串函数把命令中的两个参数取出来,两个参数的意思是,dat1表是设定在仪表中存放的地址,dat2为要设定的值,获得了这两个参数的值后,就可以根据协议的规定发送一条设定(SV值)的命令来改变SV值。其他的参数设定也是类似的。至此设备的驱动程序就基本完成。  还有一个接口函数:Public Function GetChlType(Dat As Va

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档