版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MCGS高级开发指南symbol105\f"Marlett"\s9page222symbol105\f"Marlett"\s9目录TOC\o"1-2"第一章MCGS的可扩充性 41.1概述 41.2可扩充的设备驱动构件 61.3可扩充的功能构件 71.4MCGS实时数据库对象 81.5MCGS存盘服务对象 101.6通过OLE自动化和其它应用程序交互 121.7通过DDE和其它应用程序交互 141.8直接操作MCGS的存盘数据库 16第二章开发MCGS功能构件 172.1功能构件的实现方法 172.2功能构件接口规范 182.3利用开发向导生成框架 192.4利用样例程序移植 222.5测试和挂接功能构件 25第三章开发MCGS设备驱动 273.1设备驱动构件的实现方法 273.2设备驱动构件接口规范 283.3利用开发向导生成框架 323.4利用样例程序移植 353.5测试和挂接设备驱动构件 373.6IO端口的操作 403.7串行口的操作 433.8设备驱动构件的运行机制 443.9增加设备构件的属性 453.10定制设备属性设置对话框 473.11编制简单的设备驱动构件 48第四章MCGS系统内部数据对象 524.1$Year 534.2$Month 534.3$Day 534.4$Hour 534.5$Minute 544.6$Second 544.7$Week 544.8$Date 544.9$Time 554.10$Timer 554.11$RunTime 554.12$PageNum 554.13$UserName 56第五章MCGS系统内部函数 575.1数学函数 575.2字符操作函数 595.3窗口操作函数 615.4设备操作函数 625.5策略操作函数 635.6事件操作函数 645.7报警操作函数 645.8存盘操作函数 675.9用户权限操作函数 705.10系统操作函数 71第六章MCGS中提供的对象 2056.1实时数据库对象 2056.2存盘服务对象 223第一章MCGS的可扩充性1.1概述MCGS组态软件是一套功能丰富、简单易用的组态软件,大部分工程师都可以很容易的使用这套组态软件来完成一个完整的工程项目。但是,当用户熟练的掌握了这套组态软件以后,用户必然会寻求在这套组态软件上进一步开发的能力。以实现有自己风格的界面、自己设计的控制算法和与自己硬件相匹配的驱动程序。其他一些长期使用VisualBasic、C++、Delphi的高级工程开发人员,为了充分利用自己的编程特长和已有的程序积累,也希望能够把自己编写的程序装配到MCGS组态软件中。大部分面向工程应用的工程人员,虽然没有时间和精力开发自己的专有模块,但是,却希望能够从MCGS开发组或第三方的专业、业余开发者那里获得为自己定制的特殊模块,并且能够很方便的装配到现有的MCGS组态软件上。而对硬件开发商和一些高级的开发人员,都希望能够开发出自己的设备驱动模块和专业化、行业化的模块以充分利用MCGS软件的组态功能,当然,对于这些专业化的高品质模块,位于工程一线的工程人员也是具有非同一般的兴趣的。为了满足用户的这些要求,MCGS提供一套可扩充的接口规范和配套的高级开发工具包。使用接口规范和工具包开发出来的扩充构件,具有很优越的特点:安全保密。扩充构件是编译成二进制代码的,可以很好的保护您的工作。非法用户不可能通过反编译你的扩充构件来获得你独有的设备驱动构件、特殊的运算构件和特殊的窗口界面。你更可以使用扩充构件来进行自己的加密,以防止你制作的工程被任意拷贝,保护你自己的利益。简单快速。MCGS组态软件高级开发包中提供了常用的数据后处理构件源代码。初级用户可以直接使用这些数据后处理构件,但高级用户则可以修改这些构件的源代码,以满足自己特殊的要求。众所周知,工控工程的数据后处理部分具有各自不同的要求,因此一般的组态软件,都要求用户自己使用例如Excel、Access等软件来完成自己的特殊的后处理。但是MCGS组态软件除了可以用类似的方法处理外,还提供了另外一种不同的处理方法。那就是高级用户可以修改MCGS组态软件高级开发工具包中所提供的后处理构件源代码,然后生成自己的扩充构件,装配到MCGS组态软件上,就可以组成自己独有的后处理系统。性能优异。使用这种方法开发出来的MCGS组态软件的扩充构件具有很高的速度和性能。据微软公司测试,使用VisualC++软件开发出来的程序,只比使用VisualBasic开发出来的速度高百分之十,有时甚至还低于VisualBasic。而使用VisualBasic开发的方便性和易用性又是VisualC++所远远不能比拟的。在编写MCGS组态软件的扩充构件时,VisualBasic确实是一种最佳选择。任务明确。MCGS的这种扩充构件具有清晰的结构,你完全可以向MCGS组态软件的开发组或第三方的开发人员提出要求,为你编写一个定制的扩充构件。而不会存在功能纠缠不清,任务确定不明的问题。MCGS组态软件的高级开发,基本上是基于微软公司的OLE标准,利用了最新的ActiveX技术。这种新技术保证能够方便地使用当前各种先进的开发工具来开发自己的扩充构件。如:VisualBasic、VisualC++以及其它公司的各种编程软件也可以方便地开发MCGS组态软件的扩充构件。但是,MCGS为使用微软公司的VisualBasic准备了丰富的样例程序和功能强大的高级开发向导。这个高级开发向导可以帮助你很方便的生成各种扩充构件的框架结构,使你能够快速的进入自己的编程工作。在MCGS组态软件高级开发工具包中,还提供了给开发员使用的一个源代码级调试程序。因此,MCGS强烈建议使用微软公司的VisualBasic软件来开发MCGS的扩充构件。在本书中,主要介绍如何使用VisualBasic来开发MCGS组态软件扩充构件。但由于它是基于OLE技术标准的,所以如果你能够熟练地使用VisualC++、Delphi等软件,你也可以按照本书中给出的OLE界面标准,来制作自己的组态软件扩充构件。为了能够使用MCGS组态软件高级开发工具包,你应该具有如下条件:硬件方面:必须具有Pentium以上的CPU,以及十六兆以上的内存。软件方面:应使用微软的Windows’95或Window’NT4.0操作系统,安装了微软的VisualBasic6.0专业版或企业版。还应安装了MCGS光盘上的MCGS组态软件和MCGS组态软件高级开发工具包。使用MCGS组态软件高级开发工具包和微软VisualBasic软件来开发MCGS组态软件扩充构件,要求你应该大致了解VisualBasic软件的功能和使用方法。如果你对VisualBasic软件不太了解,那麽就应该首先学习和了解一下VisualBasic软件。我们建议采用如下的方法进行学习:首先,你应该仔细阅读《VisualBasic联机手册》这本书中的“程序员指南”这一章。其次,你应该仔细读懂VisualBasic安装后附带的三到四个例子,这些例子安装在VisualBasic目录下的\Samples目录中。在这期间你可参考和阅读“程序员指南”这一章中的“VB基础”这一节中的有关菜单、窗体、构件等的描述。通过大约经过一个星期的学习,你就可以在MCGS组态软件高级开发包中的高级开发向导的帮助下,制作一些你自己的简单的扩充构件。也可以从高级开发包中的样例程序出发,通过修改相应的部分,来生成自己的扩充构件。MCGS组态软件的可扩充性主要有以下几个方面组成:挂接定制的设备驱动构件。挂接定制的功能构件。在其它应用程序中通过OLE直接操作MCGS所提供的对象。通过DDE连接,建立MCGS和其它应用程序间的数据传递。MCGS可扩充构件的提出和设计都经过了长期的工程实践的检验和考虑,能够确保实现工程进一步开发中的所有任务,而且具有结构简单、功能齐备的特点。1.2可扩充的设备驱动构件可扩充的设备驱动构件能实现多种设备驱动的方式。你可以使用独立的设备驱动构件形式,如:A/D、D/A板采集驱动构件。也可以使用父子设备驱动结构形式,如:使用串口为父设备,使用挂接在串口上的各个PLC为子设备。这已经涵盖工控工程中常用的板卡采集、现场总线等等设备硬件连接模式。在设备驱动构件中,你可以使用查询的工作方式,查询的周期从十毫秒到任意长的时间。也可以使用中断的方式,来高效完成设备驱动的任务。尤其在使用串口等低速率传送的设备时,使用中断方式来采集数据,可以充分利用等待串口通讯的时间来完成诸如图形动画等其它工作,以保证动画的平滑运动和界面反应的灵敏性。在使用板卡采集的时候,由于板卡采集速度较快,而且设备驱动运行都处在各自独立的线程内,一般都采用查询采集的方式来处理设备驱动的工作。在设备驱动构件中,你还可以实现设备热更换的功能。MCGS组态软件可以从设备驱动构件的返回值中得到设备运行状态的,对于有错误的设备,MCGS组态软件将自动停止其采集,但是,每隔十个采集周期,MCGS组态软件将自动重新驱动设备驱动构件一次,再重新确定设备驱动构件的工作状态。因此设备驱动构件可以利用这个功能。在被驱动采集时,如果当前设备的上一次工作状态测试为设备失效,这时就可以重新测试工作状态,如果工作状态已经正常,就可以向MCGS组态软件返回工作状态正确的返回值,使MCGS组态软件重新开始正常设备驱动采集。准备了这样的功能后,在父子设备采集中,就可以动态的卸载和挂接子设备。MCGS组态软件会自动在子设备卸载时自动暂停设备采集,在子设备挂接时自动开始设备采集。设备驱动构件的概念还可以扩充到所有的高可靠性要求、数据输入输出、执行命令等任务方面。在MCGS组态软件中,就实现了一个使用网络在两台计算机之间共享数据对象的设备驱动构件。实际上,像网络数据库、多台计算机、各个程序间的通讯等等类似的任务,都可以使用设备驱动构件的方法来完成。本手册的第十九章专门讲述开发MCGS设备驱动构件的具体方法和步骤,请参阅。1.3可扩充的功能构件可扩充的功能构件主要用于实现用户定制的和用户特殊的功能模式。如参数出入窗口、特殊的操作画面、特殊的数据处理等等。功能构件提供了一个使用户可以实现自己独有的人机界面的手段,可以完成特殊的用户交互的工作。并且,可以完成一些MCGS组态软件所不适宜完成的工作。如体现事务性操作的任务,象填写输入表单,填写发票等任务需要填好后一次提交,要么所有修改全部完成,要么所有修改被全部退回,这种任务就与MCGS组态软件所运行的实时监控模式不一致,这种任务就适宜于使用功能构件来完成。还有一些任务,诸如从存盘文件中恢复各个变量的设定值,或选定一组设定值,也可以在功能构件中通过读取存盘文件中的数据,并用MCGS组态软件的自动化功能写入MCGS组态软件中的各个变量来完成。MCGS系统的报警信息浏览、存盘数据浏览、存盘数据提取等部分的功能就是用VisualBasic6.0来编程实现的功能构件,并且随系统提供了部分源代码,目的是因为这几个部分的灵活性比较大,用户的需求也各不一样,这样可方便用户在这些源代码的基础上,快速修改完成自己需要的功能。本手册的第二十章专门讲述开发MCGS功能构件的具体方法和步骤,请参阅。1.4MCGS实时数据库对象实时数据库是MCGS的核心,MCGS把整个实时数据库作为一个对象封装起来,提供一系列的方法和属性,使外部程序通过这些方法和属性能对MCGS进行各种操作。MCGS运行起来后,实时数据库对象被暴露出来,在其它应用程序中,通过OLE自动化操作,就可取到实时数据库对象,从而做到在外部应用程序直接操作MCGS的目的。注意:MCGS分为组态环境和运行环境两个部分,每个部分作为一个独立的整体都有一个对应的实时数据库对象,两个对象的方法和属性都相同,只是有些方法在不同的对象内的表现不同,如CreateNewData方法在组态环境的实时数据库对象中是创建一个新的数据对象,而在运行环境的实时数据库对象中该方法不进行任何操作。因此,在实际应用中,用户要根据需要选择是对哪个实时数据库对象进行操作。注意:MCGS的实时数据库对象及其对应的属性和方法仅供扩充构件和外部应用程序在编程时使用,在MCGS内(脚本程序和表达式中)不能直接使用。实际上,实时数据库的大多数方法在MCGS内都提供了对应的内部函数,脚本程序和表达式中应使用内部函数完成有关操作。下面列出MCGS实时数据库对象所提供的属性和方法,关于它们的详细含义和用法请参阅《MCGS参考手册》中的说明。MCGS实时数据库对象的属性WinVer:当前操作系统的版本标志McgsVer:MCGS的版本号McgsDataNum:当前工程的实时数据库中数据对象的个数McgsStgyNum:当前工程中运行策略的个数McgsWinNum:当前工程中用户窗口的个数McgsDevNum:当前工程中设备构件的个数McgsSetName:当前工程的名称McgsSaveName:当前工程存盘数据库文件的名称SvrPackage:存盘服务对象MCGS实时数据库的方法CreateNewData:在实时数据库中产生一个新的数据对象GetDataFromName:通过数据对象的名称取到数据对象的其它属性值GetDataFromID:通过数据对象的ID号取到数据对象的其它属性值GetDataName:通过数据对象的ID号取到数据对象的名称GetDataType:通过数据对象的名称取到数据对象的类型GetDataID:通过数据对象的名称和类型取到数据对象的ID号SetDataDlg:调用显示组态环境中的对象浏览对话框GetDbIDFromID:通过数据对象ID号读取数据对象在数据库中的存储位置号GetIDFromDbID:通过数据对象在数据库中的存储位置号读取数据对象的ID号GetAlmDatName:读取定义有报警信息自动存盘属性的所有数据对象名称GetSaveDatName:读取定义有数据存盘属性的所有数据对象名称的集合GetGroupObj:读组对象的所有成员的ID号GetValueArray:根据数据对象ID号成组读取多个类型相同的数据对象的当前值SetValueArray:根据数据对象ID号成组写入多个类型相同的数据对象的当前值GetValueFromID:根据数据对象的ID号读取数据对象的当前值GetValueFromName:根据数据对象的名称读取数据对象的当前值SetValueFromID:根据数据对象的ID号写入数据对象的当前值SetValueFromName:根据数据对象的名称写入数据对象的当前值GetDeviceName:根据序列号读取设备构件的名称GetDeviceState:读取设备构件的当前工作状态SetDevice:对指定的设备进行操作GetWindowName:根据序列号读取用户窗口的名称GetWindowState:读取指定用户窗口的状态SetWindow:对指定的用户窗口进行操作GetStgyName:根据序列号读取运行策略的名称SetStgy:执行指定运行策略DelAlmDat:删除数据对象对应的报警存储数据。DelAllAlmDat:删除数据对象对应的所有报警存储数据MoveAlmDat:转储数据对象所对应的报警存盘信息SetAlmValue:设置数据对象DatName对应的报警限值GetAlmValue:读取数据对象的报警限值DelSaveDat:删除数据对象对应的存盘数据DelAllSaveDat:删除数据对象对应的所有存盘数据ChangeSaveDat:改变数据对象所对应的存盘数据的存盘间隔MoveSaaveDaat:转储储数据对象象所对应的的存盘数据据SaveDaata:把把数据对象象对应的当当前值存入入存盘数据据库中SaveDaataInnit:把把数据对象象的当前值值作为初试试值存入组组态结果数数据中作为为初试值1.5MMCGS存存盘服务对对象MCGS提供供有一个存存盘服务对对象,用于于设备驱动动构件和功功能构件保保存构件内内部需要保保存的数据据。在构件件中,通过过操作该对对象的方法法来保存和和读取数据据,而数据据具体放在在什么地方方由MCGGS来管理理(MCGGS把这些些数据和构构件的其它它属性一起起保存在组组态结果数数据库中)。注注意:MCCGS把存存盘服务对对象作为一一个参数通通过构件的的接口传送送到设备驱驱动构件和和功能构件件内,供构构件保存数数据时使用用。下面详详细列出存存盘服务对对象所提供供方法:方法:SettStarrtPoss方法用途:设设置存储数数据的操作作方式。使用范围:可可用于组态态环境和运运行环境。语法形式:SSetSttartPPos(ByvaalFllagaasLoong))asLongg返回值::=0:调用用正常,<<>0:调调用不正常常。参数说明:FFlag,长长整型,操操作标志,具具体含义如如下:=0:设置对对数据的操操作为读模模式,使得得GetDDat从起起始位置开开始,顺序序读取数据据;=1:设置对对数据的操操作为写模模式,使得得PutDDat从起起始位置开开始,顺序序把数据存存入。方法:GettDat方法用途:读读取存储在在MCGSS内的数据据。使用范围:可可用于组态态环境和运运行环境。语法形式:GGetDaat(VValueeasVariiant)assLonng返回值::=0:调用用正常,<<>0:调调用不正常常。参数说明:VValuee,Variiant型型,返回读读取的值,也也可以使用用具体的数数据类型和和数组来返返回数据。方法:PuttDat方法用途:把把数据存入入到MCGGS内。使用范围:可可用于组态态环境和运运行环境。语法形式:PPutDaat(VValueeasVariiant)assLonng返回值::=0:调用用正常,<<>0:调调用不正常常。参数说明:VValuee,Variiant型型,要存入入的值,也也可以使用用具体的数数据类型和和数组来存存入数据。MCGS存盘盘服务对象象使得在设设备驱动构构件和功能能构件中,能能使用“流化”的方式来来编程实现现保存和读读取存盘数数据,GeetDatt和PutDDat的使使用一定要要配对。如如在某接口口中编写的的保存数据据代码如下下:dimIasllong,,jaasloong,msgassstrinng,Daat(100)asssinngleSaveObbj.SSetSttartPPos11SaveObbj.PuutDattISaveObbj.PuutDattjSaveObbj.PuutDattmsggSaveObbj.PuutDattDatt则对应的读取取数据的代代码应如下下:dimIasllong,,jaasloong,msgassstrinng,Daat(100)asssinngleSaveObbj.SSetSttartPPos00SaveObbj.GeetDattISaveObbj.GeetDattjSaveObbj.GeetDattmsggSaveObbj.GeetDattDatt1.6通过过OLE自动动化和其它它应用程序序交互MCGS组态态软件本身身的自动化化功能可以以帮助用户户在其它应应用程序中中很方便地地操纵MCCGS组态态软件的运运行。比如如说,用户户可以在一一个程序里里指挥MCCGS运行行环境打开开某个窗口口、执行某某个策略、或或者向某个个设备发出出命令等等等。基本上上,在MCCGS组态态软件中用用户脚本程程序可以完完成的功能能也都可以以通过MCCGS组态态软件的自自动化功能能来完成。MCGS把其其核心作为为一个对象象包装起来来,把MCCGS的大大多数功能能作为对象象的属性和和方法暴露露出来,使使其它的应应用程序通通过OLEE自动化来来操作MCCGS,在在VisuualBBaiscc、Exceel、Acceess和、Dellphi中中都可以通通过OLEE自动化来来取得MCCGS实时时数据库对对象,编程程操作MCCGS提供供的属性和和方法。在VisuaalBaasic中中操作MCCGS假定MCGSS运行环境境正在运行行一个工程程,且该工工程有200个数值型型数据对象象,其名称称为Datt01到Dat220。要求求用VB编制一一个应用程程序,该程程序的界面面如下图所所示,按“从MCGSS读数据”按钮时,能能把MCGGS中Dat001到Dat110的值读读回显示在在左列文本本框内,按按“向MCGSS写数据”按钮时,能能把右列文文本框内输输入的数据据写到MCCGS的Dat111到Dat220数据对对象中。DimDaatObjjAsObjeectPrivatteSuubFoorm_LLoad(()OnEErrorrRessumeNexttSetDatOObj==GettObjeect(,,"MccgsRuun.DaataCeentree")IfEErrTThenMMsgBoox(""请先启动动MCGSS运行环境境!")EEndEndIfEndSuubPrivatteSuubCmmd_Reead_CClickk()DimmsgAsSStrinng,tttAssVarrianttFori=1Too10msg="DDat"+Foormatt$(i,,"000")DatOObj.GGetVaalueFFormNNamemsg,,ttTxt((i)==Forrmat$$(tt))NexttiEndSuubPrivatteSuubCmmd_Wiirte__Clicck()DimmsgAsSStrinng,tttAssVarrianttFori=1Too10msg="DDat"+Foormatt$(i,,"000")tt==Vall(Txtt(i++10)))DatOObj.SSetVaalueFFormNNamemsg,,ttNexttiEndSuub在Assesss、Exceel中都有有对应的VVB程序可可以编程,实实现对MCCGS的各各种操作,其其方法和在在VisuualBBasicc中基本相相同,可参参考上面的的代码进行行。1.7通通过DDEE和其它应应用程序交交互MCGS提供供了动态数数据交换((DDE))方式和其其它应用程程序进行数数据交换,不不同于OLLE自动化化操作,DDDE方式式只能传递递数据,不不能直接对对MCGSS进行操作作,而且DDDE方式式数据传递递的速度较较慢,可靠靠性也不如如OLE,建建议采用OOLE来代代替DDEE。下面举例说明明如何在MMCGS和和Exceel中建立立DDE连接接,要求在在Exceel表单Sheeet1第第1行到第100行的第一一列显示MMCGS数数据对象DDat011到Dat110的值,把把表单Shheet11的第1行到第100行的第二二列输入的的值送到MMCGS数数据对象DDat111到Dat220中。要要使用DDDE和其它它应用程序序进行交互互,首先应应在MCGGS中进行行一些定义义工作。在在MCGSS组态环境境的“工具”菜单中选选取“DDE连接接管理”菜单项,弹弹出如下窗窗口:在DDE连接接管理窗口口中,把DDat011到Dat110设置为为DDE输出出(选中各各数据对象象对应的DDDE输出出选项框);;把Datt11到Dat220设置为为DDE输入入,同时对对服务节点点进行如下下配置:按“服务节点点配置”按钮,弹弹出如下配配置窗口按“增加”按按钮,弹出出如下配置置窗口,把把服务节点点名设为“Exceel表单”,把服务务名设为“Exceel”,主题名名设为“Sheeet1”(当把Exccel应用用软件作为为DDE服务务器时,服服务名永远远为“Exceel”,主题名名为对应表表单--SSheett的名称)配置好服务器器节点后,把把Dat111到Dat220的连接接节点都设设为“Exceel表单”,连接项项目分别设设为R1CC2到R10CC2。运行Exceel,在表表单Sheeet1的的R1C11到R10CC1中输入入McgssRun||DataaCenttre.DDat011到McgssRun||DataaCenttre.DDat100,这样就就完成了所所有的DDDE连接设设置工作。当当进入MCCGS运行行环境后,MCGS数据对象Dat01到Dat10的值就显示在Excel的表单Sheet1的第一列中,同时,当改变表单Sheet1的第二列值时,MCGS中数据对象Dat11到Dat20的值也随之而改变。1.8直直接操作MMCGS的的存盘数据据库MCGS运行行时的存盘盘数据是保保存在标准准Acceess7..0数据库库中,所有有报警数据据信息对应应存盘数据据表名为MMCGS__AlarrmInffo,MCGSS组对象对对应的存盘盘数据表名名为:组对对象名称++“_MCGGS”。用户可可以在外部部应用程序序中直接对对MCGSS的存盘数数据库进行行操作,编编制独立的的后处理软软件。MCGS的脚脚本程序中中有一个名名为“Shelll”的内部函函数,可以以启动一个个外部应用用程序。通通过在MCCGS脚本本程序中使使用Sheell函数数,可以使使外部应用用程序和MMCGS看看起来是一一个整体。第二章开开发MCGGS功能构件MCGS提供供了一套运运行策略机机制,使用用户能根据据实际应用用的需要,对对工作流程程进行精确确的控制。运运行策略由由不同的策策略块组成成,而策略略块又由多多个策略行行组成,每每个策略行行分为条件件和功能两两个部分,以以实现“在什么条条件下执行行什么功能能”的机制。MMCGS提提供了大多多数应用所所必须的功功能构件,同同时也提供供了一套开开放的可扩扩充接口,允允许用户能能根据自己己的需要,定定制特定的的功能构件件,达到扩扩充MCGGS功能的的要求。本章下面各节节将详细介介绍开发MMCGS功功能构件的的方法和步步骤,请在在开始之前前,先安装装VisuualBBasicc6.0(中文文专业版或或企业版)),然后安安装MCGGS高级开开发工具包包,建议你你按下面各各节介绍的的方法和步步骤来一步步一步地学学习开发MMCGS功功能构件。2.1功功能构件的的实现方法法MCGS用AActivveDLLL构件的的方式来实实现功能构构件,通过规范范的OLEE接口挂接接到MCGGS中,使其构成成一个整体体。由于功功能构件和和MCGSS运行在同同一个进程程内,故功功能构件的的运行速度度快,可靠靠性高,即即使构件本本身有问题题,也不会会影响到MMCGS的的可靠运行行。同时,OLE是一个可扩充的开放标准,用于实现不同软件之间的相互操作,而不管软件本身是使用什么编程语言。因此,只要遵守MCGS的接口规范,可以使用VB、VC、Delphi等语言来编制MCGS的功能构件。鉴于VisualBasic通用性和简单性,建议使用VB来开发MCGS的设备驱动程序,本书也只讲解使用VB进行开发的技术问题。由于VB6.0以上版本是以二进制码来编译执行程序,其运行速度已接近或超过VC,完全能满足功能构件所需的速度要求。MCGS提供的大多数功能构件就是使用VB来编程的,开发工具包中提供了部分功能构件的源代码,可在其基础上修改,实现比MCGS功能更完善的功能构件。2.2功功能构件接接口规范MCGS设备备构件的实实现方法和和原理与标标准VB的ActiiveDLLL完全一一致,但MMCGS规规定了一套套接口规范范,只有遵遵守这些接接口规范的的ActiiveDLLL才能用用作MCGGS的功能能构件。MMCGS功功能构件必必须具有如如下4个接口::接口:SvrrMenuuCommmand 组态时调调用,执行行菜单命令令接口:SvrrStgyySetOOperaator 组态时调调用,设置置构件的属属性接口:SvrrStgyyRunOOperaator运行时调调用,执行行构件的功功能接口:SvrrChecck 组态中,编编译查错时时时调用开发MCGSS功能构件件的过程,实实际上就是是根据功能能构件的特特性和含义义来完成44个接口功功能的编程程过程。下下面详细讲讲述各个接接口的含义义和用法::接口:SvrrMenuuCommmand接口作用:本本接口用于于在MCGGS组态环环境中增加加一个用户户自定义的的菜单项。本本接口在组组态环境装装载时被MMCGS组组态环境调调用,检查查是否有有有对应的菜菜单要求,如如有,在MMCGS的的“工具“菜单中增增加一菜单单项。组态态环境运行行时,当用用户选取增增加的菜单单项时,也也调用本接接口。语法形式:SSvrMeenuCoommannd(sttrNammeAssStrring,,bQuueryAsLLong,,DattObjAsOObjecct)AAsLoong返回值::=0,调用用成功;==1调用失失败。参数说明:sstrNaame,返返回用于显显示在“工具“菜单中的的菜单项的的名称;如如为空,表表示本功能能构件不增增加菜单。bQueryy,MCGSS初试化时时调用本接接口时,把把本参数的的值设置为为1,在菜单单中调用本本接口时,把把本参数的的值设置为为0;DatObjj,MCGSS实时数据据库数据对对象。接口:SvrrStgyySetOOperaator接口作用:本本接口的作作用是读取取功能构件件的类型名名称、注释释和所对应应的图标资资源的IDD号以及组组态时设置置构件的属属性时调用用。语法形式:SSvrSttgySeetOpeeratoor(sttrNammeAssStrring,,strrNoteesAssStrring,,iIcconAAsLoong,DatOObjAAsObbjectt,SaaveObbjAssObjject,,bQuueryAsLLong))AsLongg返回值::=0,调用用成功;==1调用失失败。参数说明:sstrNaame,返返回功能构构件的类型型名,显示示在功能构构件列表框框中;strNottes,返返回功能构构件的注释释,显示在在策略行的的右边;iIcon,返回功功能构件所所对应的图图标资源的的ID号,该该图标显示示在策略行行的功能构构件块上。如如ID=00,表示没没有对应的的图标,MMCGS显显示缺省图图标;bQueryy,MCGSS初试化时时调用本接接口时,把把本参数的的值设置为为1,在设置置构件属性性调用本接接口时,把把本参数的的值设置为为0;DatObjj,MCGSS实时数据据库数据对对象。SavObjj,存盘盘服务对象象,接口程程序中通过过该对象来来保存和读读取数据。接口:SvrrStgyyRunOOperaator接口作用:本本接口在运运行环境中中,当需要要执行本构构件的功能能时调用。语法形式:SSvrSttgyRuunOpeeratoor(DaatObjjAsObjeect,SaveeObjAsOObjecct)AAsLoong返回值::=0,调用用成功;==1调用失失败。参数说明:DDatObbj,MCGSS实时数据据库数据对对象;SavObjj,存盘盘服务对象象,接口程程序中通过过该对象来来保存和读读取数据。接口:SvrrChecck接口作用:本本接口在组组态环境中中,当MCCGS进行行查错和编编译调用。语法形式:SSvrChheck((DatOObjAAsObbjectt,ChheckFFlagAsLLong))AsLongg返回值::=0,调用用成功;==1调用失失败。参数说明:DDatObbj,MCGSS实时数据据库数据对对象;CheckFFlag,标标志位。2.3利利用开发向向导生成框框架MCGS提供供了一个高高级开发工工具包,能能快速为用用户生成功功能构件的的源程序框框架,在此此基础上编编程既快速速,可减少少出错的可可能性。请请按如下步步骤来生成成功能构件件的框架::确保MCGSS的高级开开发工具包包已安装正正确;启动VisuualBBasicc6.0(中文文专业版或或企业版);;选择“外接程程序”菜单,单单击该菜单单下的MCCGS开发发向导菜单单项;弹出出开发向导导窗口后,按“下一步”按钮,弹出如下图所示窗口:选择扩展构件件的类型为为运行策略略功能构件件,按“下一步”按钮,弹弹出如下图图所示的窗窗口:设置构件工程程名为“MyDLLL”,构件类类型名为“我的构件”。构件工工程名为功功能构件在在VB下源程程序的工程程名,编译译生成的AActivveDLLL构件的的名称为MMyDLLL.DLLL。构件类类型名用于于标识对应应的构件,最最后可显示示在MCGGS的设备备工具箱中中。按“下一步”按钮,出出现如下图图所示的窗窗口,设置置生成目录录和输出目目录都为“D:\AAddInn”,使开发发向导自动动生成的源源程序和编编译生成的的构件都位位于同一目目录下。在在一此按“下一步”按钮,然然后按“完成”按钮,MCCGS即开开始自动生生成功能构构件的源程程序框架。开发向导完成成工作后,自自动生成一一个名位“MyDLLL”的工程组组,如下图图所示,在在VB的工程程组窗口中中可以看到到该工程组组包含如下下二个VBB工程:MyDLL工工程对应于于设备驱动动构件,该该工程包含含一个类模模块和一个个程序模块块。类模块块AddIInObjj完成了功功能构件所所需的所有有接口。TestDLLL工程只只用于在VVB环境下下对功能构构件进行调调试,该工工程包含两两个窗体和和两个程序序模块,在在实际编程程时,无需需对该工程程进行任何何修改工作作。MCGS开发发向导生成成的所有源源程序代码码和编译生生成的输出出文件都放放在D:\\AddIIn目录下下。注意:MCGGS开发向向导只是生生成构件的的源程序框框架,没有有任何具体体的功能,要要完成特定定的功能,还还需要在此此基础上,针针对具体要要求进行进进一步的编编程和调试试工作。2.4利利用样例程程序移植MCGS把部部分功能驱驱动构件的的源程序代代码都随系系统一起提提供,在实实际应用中中,开发定定制自己的的功能构件件的最好方方法就是在在MCGSS提供的源源程序代码码的基础上上进行。由由于OLEE技术本身身的复杂性性,建议按按照本节给给定的方法法和步骤来来进行你的的开发工作作,避免产产生不可预预料的错误误。如果你你能严格按按照本节的的步骤进行行开发工作作,则可省省去对AcctiveeDLLL编程技术术及有关概概念的学习习和了解,直直接集中精精力实现功功能构件的的功能。从MCGS高高级开发工工具包中找找到你所需需的样例源源程序代码码,假定安安装开发工工具包时所所选的安装装目录为DD:\Mccgssddk,则源源程序位于于D:\MMcgsssdk\ssamplles\AAddInn目录下,而而且按功能能构件的名名称来命名名对应的目目录,如::报警数据据处理构件件源代码的的目录为AAlmAdddIn。为为方便说明明,下面各各步骤中假假定选取报报警数据处处理构件为为样例程序序。建立一个新目目录:D::\MyDDLL,把把ALmAAddInn目录内的的所有内容容拷贝到DD:\MyyDLL目目录下。新新功能构件件的源程序序将位于本本目录下。每个功能构件件源代码中中都一个后后缀为“.vbgg”的工程组组文件,本本例中为TTestDDLL.vvbg。启启动VissualBasiic6.0,打开开该文件。如如下图所示示,在VBB工程组窗窗口中,包包含有二个个工程:AAlmAdddIn、TesstDLLL。先在工程组窗窗口中选中中工程AllmAdddIn(被被选中的工工程下面显显示为蓝条条),用鼠鼠标右键弹弹出下拉菜菜单或从“工程”菜单中,单单击“AlmAAddInn属性”,打开该该工程的属属性设置窗窗口。如下下图所示,把“通用”和“生成”两个属性页中的AlmAddIn改为MyDLL(修改工程名称)。在“部件”属属性页中,把“版本兼容”中的选项设置成“不兼容”。修改完成后,按“确认”按钮返回。注意:对工程属性页中的其它属性不要做任何修改。在VB的“文文件”菜单中,单单击“AlmAAddInn.vbpp另存为”菜单,把把工程另存存为MyLLL.vbbp。在VB的“文件”菜单中,单单击“生成AlmmAddIIn.dlll”菜单,弹弹出“生成工程”窗口,对对工程继续续编译,把把要生成的的文件名改改为“MyDLLL.dlll”,按“确定”按钮开始始编译。编译完成后,打打开工程MMyDLLL的属性窗窗口,如下下图所示,在“部件”属性页中,把“版本兼容”中的选项设置成“二进制兼容”,同时把其下面的输入框中的内容由AlmAddIn.dll改为MyDLL.dll。按“确认”按钮返回打开类模块AAddInnObj的的编程窗口口,对接口SvvrStggySettOperratorr进行如下下修改:strNamme=”我的功能能构件”strNottes=”我的功能能构件”选中工程TeestDLLL,在VB“工程“菜单中,单单击“引用”菜单项,把把工程TeestDLLL对于AlmmAddIIn的引用用取消,改改为对工程程MyDLLL的引用用。上述步骤完成成后,把整整个工程组组存盘,就就完成了开开始移植前前所有必须须的准备工工作。接下下来,你就就可以在源源程序的基基础上进行行修改,实实现你自己己特定功能能的设备构构件。对通讯子设备备,如欧姆姆龙PLCC对应的设设备驱动程程序进行移移植时,基基本方法和和步骤上面面所述相同同。2.5测测试和挂接接功能构件件MCGS为功功能构件提提供了一套套在VB环境下下进行在线线调试的运运行机制,使使用户能随随时对所做做的修改进进行测试调调试、检验验其正确性性,其简单单程度和方方便性是其其它组态软软件系统所所无法比拟拟的。MCCGS的这这一机制,使使得大多数数普通工程程用户都能能动手编制制自己的功功能构件。使用MCGSS开发向导导生成的程程序框架或或系统提供供的样例源源代码中,都都包含有一一个用于在在VB下进行行测试的工工程--TTestDDLL,通通过该工程程模拟MCCGS的工工作状态,直直接调用功功能构件的的接口函数数,从而做做到对构件件的每个接接口函数在在VB源代码码一级进行行测试,实实际应用中中不要对该该工程进行行任何修改改工作。下面详细介绍绍测试和挂挂接设备驱驱动构件的的方法和步步骤:按照前节所讲讲述的步骤骤,用开发发向导生成成一个设备备驱动构件件的框架,生成的源程序所在目录为--D:\AddIn,构件工程名为--MyDLL,构件的类型名为--我的功能构件。完成自动生成后,在VB的工程组窗口中会看到二个工程:MyDLL和TestDLL。启动MCGSS的组态环环境,并打打开或新建建一个MCCGS工程程。注意::进行在线线调试时,必必须启动MMCGS,且且要保证MMCGS中中有一个打打开的工程程,否则,在在VB中无法法进行在线线调式。在VB环境下下,按F55键运行工工程组,出出现如下图图所示的调调试窗口,该该窗口中的的三个按钮钮分别用于于调用组态态环境接口口和运行环环境接口和和菜单调用用接口;中中间的输入入框用来显显示功能构构件的类型型名称。按不同的按钮钮可对功能能构件的接接口进行测测试,根据据构件所需需的功能,不不断进行调调试测试,直直到完成所所有工作和和没有错误误产生为止止。完成所有的编编程调试工工作以后,把工程MyyDLL重重新编译一一遍,生成最后后可以使用用的Acttivedll文文件:MyDLLL.dlll,把这个文文件拷贝到到目录D::\MCGGS\Prrograam\AddIIns下(假定MCGGS系统安安装时的目目录为D::\Mcggs。注意意:编译和和拷贝功能能构件的文文件时,一一定要先退退出MCGGS系统),同同时要修改改AddIIns目录录下的AdddInss.ini文件,在在该文件中中增加一行行:MyDDLL.ddll。完完成上述步步骤后,就就完成了用用户功能构构件的编制制、调试和和挂接工作作,下面介介绍如何在在MCGSS系统下使使用定制的的功能构件件。启动MCGSS组态环境境,在“工具”菜单下,将将会显示出出“我的菜单单项”一项,选选取该菜单单项,MCCGS将调调用功能构构件的菜单单接口,显显示对应的的窗口(如如不需要菜菜单项,则则应把功能能构件的SSvrMeenuCoommannd接口中中的所有代代码去掉)。打开一个运行行策略的组组态窗口,在在运行策略略功能构件件箱内,将将回显示出出“我的功能能构件”一项。把把该构件选选入到策略略行中,用用鼠标双击击该构件,MCGS调用构件的组态环境接口,以便用户在组态环境中对构件的属性进行设置。进入运行环境境后,当组组态环境组组态的对应应策略行被被执行时,MCGS调用构件的运行接口,执行构件所实现的功能。第三章开开发MCGGS设备驱驱动虽然MCGSS提供了大大多数常用用设备的驱驱动程序,但但在实际应应用中,或或因为所用用设备的特特殊性、或或因为实际际工程的需需要,MCCGS所提提供的设备备驱动程序序总会有些些不尽人意意。为解决决这些问题题,MCGGS提供了了一套规范范的设备驱驱动程序接接口,允许许用户根据据自己的需需要来定制制设备驱动动程序。在学习完本章章之前,你你可能会觉觉得开发设设备驱动程程序是件难难事,而编编制能在WWin955和WinNNT下能同同时运行的的设备驱动动程序更是是不可思议议。MCGGS设备驱驱动的开发发既不需用用复杂的汇汇编语言,也也不需用难难懂的C语言,而而只须使用用简单易用用、大多数数工程人员员都会使用用的VissualBasiic。MCGSS把和操作作系统底层层打交道的的内容全部部包装起来来,以函数数调用的方方式提供给给你,同时时,MCGGS的高级级开发向导导能为你自自动生成设设备驱动程程序的框架架,MCGGS大多数数设备驱动动程序的源源程序代码码也都随系系统提供给给你。只要要你会VBB,熟悉你你所使用的的硬件设备备,你就完完全可以按按照你自己己的需要来来开发定制制你自己的的设备驱动动程序。本章下面各节节将详细介介绍开发设设备驱动程程序的方法法和步骤,请请在开始之之前,先安安装VissualBasiic6.0(中文文专业版或或企业版)),然后安安装MCGGS高级开开发工具包包,建议你你按下面各各节介绍的的方法和步步骤来一步步一步地学学习开发设设备驱动程程序。3.1设设备驱动构构件的实现现方法MCGS用AActivveDLLL构件的的方式来实实现设备驱驱动程序,通通过规范的的OLE接口口挂接到MMCGS中中,使其构构成一个整整体,所以以MCGSS把设备驱驱动程序叫叫做设备驱驱动构件。由由于设备驱驱动构件和和MCGSS运行在同同一个进程程内,故设设备构件的的运行速度度快,可靠靠性高,不不存在传统统DDE方式式连接设备备驱动时的的数据流通通不畅和数数据传输速速度慢等问问题。同时时,OLEE是一个可可扩充的开开放标准,用用于实现不不同软件之之间的相互互操作,而而不管软件件本身是使使用什么编编程语言。因因此,只要要遵守MCCGS的接接口规范,可可以使用VVB、VC、Delpphi等语语言来编制制MCGSS的设备驱驱动程序。鉴鉴于VissualBasiic通用性性和简单性性,建议使使用VB来开发发MCGSS的设备驱驱动程序,本本书也只讲讲解使用VVB进行开开发的技术术问题。由由于VB6.0以上版版本是以二二进制码来来编译执行行程序,其其运行速度度已接近或或超过VCC,完全能能满足设备备驱动构件件所需的速速度要求。MCGS把实实际外部设设备分为独独立的设备备、父设备备和子设备备三类,独独立的设备备是可独立立工作、完完成特定数数据输入输输出功能的的设备,如如用于模拟拟量输入输输出、数字字量输入输输出的PCC接口卡等等;父设备备是本身不不直接处理理数据输入入输出,但但起到管理理其它设备备工作的设设备,如串串行口设备备、IDCCN-8993的通讯讯卡等;子子设备是本本身具有处处理数据输输入输出的的功能,但但只有和对对应的父设设备一起才才构成完整整工作系统统的设备::如PLCC设备、带带智能通讯讯功能的仪仪器仪表等等;不同类类型的设备备的工作方方式有所不不同,其对对应的设备备驱动程序序的处理方方法也有所所不同。本本章只重点点介绍独立立设备(PC接口卡卡)和通讯类类子设备设设备驱动程程序的开发发,如需要要进行父设设备和其它它类型子设设备的设备备驱动程序序的开发,请请和MCGGS开发小小组联系。3.2设设备驱动构构件接口规规范MCGS设备备构件的实实现方法和和原理与标标准VB的ActiiveDLLL完全一一致,但MMCGS规规定了一套套接口规范范,只有遵遵守这些接接口规范的的ActiiveDLLL才能用用作MCGGS的设备备驱动构件件。MCGGS设备驱驱动构件必必须具有如如下5个属性和和8个方法::属性:DevvTypee 标识设备备的类型属性:DevvStylle 标识设备备的类别属性:DevvChannnel 标识设备备的通道个个数属性:DevvBaseeIO 标识设备备所用IOO的基地址址属性:DevvIONuumberr 标识设备备所用IOO地址的个个数方法:GettDevNName 读取设备备构件类型型名称方法:GettDevHHelp 调用设备备构件的在在线帮助内内容方法:SettDevPPage 调用设备备的内部属属性页方法:IniitNewwDev 初试化设设备的初试试值方法:GettChlTType 读取设备备构件各通通道的数据据类型和注注释方法:IniitDevvRun 运行时对对设备进行行初试化工工作方法:RunnDevCCommaand 执行指定定的设备命命令方法:ColllecttDevDDat 定时操作作设备,采采集或输出出数据开发MCGSS设备驱动动的过程,实实际上就是是根据设备备的特性和和含义来完完成8个方法功功能的编程程过程。下下面详细讲讲述各个接接口的含义义和用法::属性接口:DDevTyype接口作用:本本接口用于于Mcgss确定设备备构件的类类型。对独独立的设备备构件固定定为0;对通讯讯子设备,固固定为1。本属性性为只读属属性。语法形式:PPubliicPrroperrtyGGetDDevTyype())AsLongg属性接口:DDevSttyle接口作用:本本接口用于于Mcgss确定设备备构件的类类别。对独独立的设备备构件固定定为0;对通讯讯子设备,固固定为1。本属性性为只读属属性。语法形式:PPubliicPrroperrtyGGetDDevSttyle(()AssLonng属性接口:DDevChhanneel接口作用:本本接口用于于Mcgss确定设备备构件通道道个数。一一般把本属属性设置为为只读属性性。语法形式:PPubliicPrroperrtyGGetDDevChhanneel()AsLLong属性接口:DDevIOONumbber接口作用:本本接口用于于Mcgss确定设备备构件所用用IO地址的的个数。本本属性为只只读属性语法形式:PPubliicPrroperrtyGGetDDevIOONumbber())AsLongg属性接口:DDevBaaseIOO接口作用:本本接口用于于Mcgss确定设备备构件所用用IO基地址址。本属性性为读写属属性,在设设备属性页页中以166进制数表表示语法形式:PPubliicDeevBasseIOAsLLong或或PubllicPPropeertyGetDevBBaseIIO()AsLLong注意:对不占占用IO地址的的设备,把把本属性设设置为只读读属性,且且属性值为为0。方法接口:GGetDeevNamme接口作用:本本接口在组组态环境装装载时被MMCGS组组态环境调调用,返回回设备构件件对应的设设备类型名名称,比如如“Omroon2000PLLC”等。MCGGS组态软软件将把这这个名称显显示在设备备工具框中中。对于不不同的设备备,应该返返回不同的的设备类型型名称。语法形式:GGetDeevNamme()assstrinng返回值::设备类型型名称。参数说明:无无。方法接口:IInitNNewDeev接口作用:当当用户在组组态环境的的设备组态态新增加一一个设备时时调用本接接口,用于于初始化新新设备的缺缺省参数值值。语法形式:IInitNNewDeev(SaavObjjAsObjeect)asLLong返回值::=0:设备备初始化成成功,<>>0:设备备初始化失失败。参数说明:SSavObbj,存存盘服务对对象,接口口程序中通通过该对象象来保存和和读取数据据。方法接口:SSetDeevPagge接口作用:本本接口在组组态环境中中当用户要要修改设备备的内部属属性时被调调用,他将将打开设置置设备构件件内部属性性的对话框框,并设置置设备构件件的属性。语法形式:SSetDeevPagge(SaavObjjasObjeect)asLLong返回值::=0:属性性设置有效效,要保存存,=1:属性性设置无效效,不保存存。参数说明:SSavObbj,存存盘服务对对象,接口口程序中通通过该对象象来保存和和读取数据据。方法接口:GGetChhlTyppe接口作用:本本接口在组组态环境中中调用,读读取设备通通道的数据据类型及通通道内容说说明当用户户要修改设设备的内部部属性时被被调用,他他将打开设设置设备构构件内部属属性的对话话框,并设设置设备构构件的属性性。语法形式:GGetChhlTyppe(DaatAssVarriantt,mssgAssVarriantt)AssLonng返回值::=0:设备备通道有效效,=1:设备备通道无效效。参数说明:DDat,长长整型数组组,标识设设备各通道道的数据类类型和输入入输出类型型。=1开关型型;=2数值型型;=3字符型型;大于00表示把设设备通道的的数据采集集到MCGGS中,小小于0表示把MCCGS中的的数据输出出到设备构构件中;msg,字符符型数组,标标识各设备备通道内容容注释。方法接口:IInitDDevRuun接口作用:本本接口在MMCGS运运行环境启启动设备构构件开始采采集之前被被调用一次次,用于对对设备硬件件进行初始始化工作。语法形式:IInitDDevRuun(SaavObjjAsObjeect,DatOObjAAsObbjectt)asslonng返回值::=0:设备备工作正常常,=11:设备工工作不正常常,MCGGS运行环环境将弹出出对话框,提提示用户设设备出错。参数说明:SSavObbj,存存盘服务对对象,接口口程序中通通过该对象象来保存和和读取数据据。DataObbj,实时时数据库对对象,接口口程序中通通过该对象象来操作实实时数据库库对象的属属性和方法法。方法接口:CColleectDeevDatt接口作用:本本接口由MMCGS运运行环境在在每一次设设备采集中中调用,运运行时,按按设定的时时间周期定定时调用本本方法采集集数据,并并送入实时时数据库,或或把实时数数据库中的的数据送进进来,供设设备驱动构构件处理。语法形式:CColleectDeevDatt(DattFAssVarriantt,DaatAssVarriantt,mssgAssVarriantt)asslonng返回值::=-11:设备故故障;=0:采集数数据有效,但但只对返回回的输入数数据进行处处理;=1:采集数数据有效,但但对返回的的输入输出出数据都进进行处理;;=2:采集数数据无效,不不须进行处处理。参数说明:DDatF,,长整型型数组,标明对应应设备通道道有效,==0无效,=11有效;Dat,浮浮点数组,,存放设设备通道的的数值型或或开关型数数据;Msg,字字符数组,,存放设设备通道的的字符型或或事件型数数据。方法接口:RRunDeevCommmandd接口作用:本本接口在MMcgs运运行环境中中,当在设设备策略构构件、用户户脚本程序序或OLEEAuttomattion调调用中要求求执行特定定的设备命命令时,被被调用。语法形式:RRunDeevCommmandd(DattObjAsOObjecct,BByVallCmddAsStriing)asLLong返回值::=0:命令令正确执行行,Mcggs将对返返回的输入入输出数据据进行处理理;=1:命令执执行错误,Mcgs不对返回的输入输出数据进行处理;=2:无效的的设备命令令,Mcggs不对返返回的输入入输出数据据进行处理理。参数说明:DDataOObj,实实时数据库库对象,接接口程序中中通过该对对象来操作作实时数据据库对象的的属性和方方法;Cmd,字字符型,下达给设设备的设备备命令字符符串。3.3利利用开发向向导生成框框架MCGS提供供了一个高高级开发工工具包,能能快速为用用户生成设设备驱动构构件的源程程序框架,在在此基础上上编程既快快速,又可可减少出错错的可能性性。请按如如下的步骤骤来生成设设备驱动构构件的框架架:确保MCGSS的高级开开发工具包包已安装正正确;启动VisuualBBasicc6.0(中文文专业版或或企业版);;选择“外接程程序”菜单,单单击该菜单单下的MCCGS开发发向导菜单单项;弹出出开发向导导窗口后,按“下一步”按钮,弹出如下图所示窗口:选择扩展构件件的类型为为设备驱动动构件,且且设置设备备驱动构件件为独立设设备;按“下一步”按钮,弹弹出如下图图所示的窗窗口:设置构件工程程名为“MyDeev”,构件类类型名为“我的设备备构件”。构件工工程名为设设备构件在在VB下源程程序的工程程名,编译译生成的AActivveDLLL构件的的名称为MMyDevv.DLLL。构件类类型名用于于标识对应应的构件,最最后可显示示在MCGGS的设备备工具箱中中。按“下一步”按钮,出出现如下图图所示的窗窗口,设置置生成目录录和输出目目录都为“D:\DDev”,使开发发向导自动动生成的源源程序和编编译生成的的构件都位位于同一目目录下。在在一此按“下一步”按钮,然然后按“完成”按钮,MCCGS即开开始自动生生成设备驱驱动构件的的源程序框框架。开发向导完成成工作后,自自动生成一一个名位“MyDeev”的工程组组,如下图图所示,在在VB的工程程组窗口中中可以看到到该工程组组包含如下下二个VBB工程:MyDev工工程对应于于设备驱动动构件,该该工程包含含一个类模模块和一个个程序模块块。类模块块DevOObj完成成了设备构构件所需的的所有接口口。TestDeev工程只只用于在VVB环境下下对设备构构件进行调调试,该工工程包含两两个窗体和和两个程序序模块,在在实际编程程时,无需需对该工程程进行任何何修改工作作。MCGS开发发向导生成成的所有源源程序代码码和编译生生成的输出出文件都放放在D:\\Dev目目录下。程程序模块DDevBaas是包含含一些和硬硬件设备操操作相关的的常量、数数据结构的的定义和外外部子程序序的定义。注意:MCGGS开发向向导生成的的只是设备备驱动构件件的源程序序框架,没没有任何具具体的功能能,要完成成特定的设设备驱动,还还需要在此此基础上,针针对具体设设备的功能能进行进一一步的编程程和调试工工作。通讯讯子设备驱驱动构件程程序框架的的自动生成成方法和上上述步骤相相同。3.4利利用样例程程序移植MCGS把大大多数设备备驱动构件件的源程序序代码都随随系统一起起提供,在在实际应用用中,开发发定制自己己的设备驱驱动程序的的最好方法法就是在MMCGS提提供的源程程序代码的的基础上进进行。由于于OLE技术术本身的复复杂性,建建议按照本本节给定的的方法和步步骤来进行行你的开发发工作,避避免产生不不可预料的的错误。如如果你能严严格按照本本节的步骤骤进行开发发工作,则则你可以省省去对AcctiveeDLLL编程技术术及有关概概念的学习习和了解,直直接集中精精力实现设设备构件的的功能。从MCGS高高级开发工工具包中找找到你所需需要的样例例源程序代代码,假定定安装高级级开发工具具包时所选选的安装目目录为D::\Mcggssdkk,则对应应的源程序序位于目录录D:\MMcgsssdk\ssamplles\DDevicce下,而而且按设备备的名称来来命名对应应的目录,如如:中泰PPC63119接口卡卡对应的设设备驱动程程序源代码码的目录为为ZTPCC63199,欧姆龙龙PLC对应应的设备驱驱动程序源源代码的目目录为OmmronPPLC。为为方便说明明,下面各各步骤中假假定选取中中泰PC66319接接口卡的设设备驱动程程序为样例例程序。建立一个新目目录:D::\MyDDev,把把ZTPCC63199目录内的的所有内容容拷贝到DD:\MyyDev目目录下。新新的设备驱驱动构件的的源程序将将位于本目目录下。启动VisuualBBasicc6.0,打开工程程组该文件件(本例中为为TesttDev..vbg)。如下图图所示,在VB工程组组窗口中,包含有二二个工程::DevZZT63119、TesstDevv。先在工程组窗窗口中选中中工程DeevZT66319(被被选中工程程下面显示示蓝条),用用鼠标右键键弹出下拉拉菜单或从从“工程”菜单中,单单击“DevZZT63119属性”,打开该该工程的属属性窗口,如如下图所示示,把“通用”和“生成”两个属性性页中的DDevZTT63199改为MyDDev(修修改工程名名称)。在“部件”属属性页中,把“版本兼容”中的选项设置成“不兼容”。修改完成后,按“确认”按钮返回。注意:对工程属性页中的其它属性不要做任何修改。在VB的“文文件”菜单中,单单击“ZT63319.vvbp另存存为”菜单,把把工程另存存为MyDDev.vvbp。在在VB的“文件”菜单中,单单击“生成ZT66319..dll”菜单,弹弹出“生成工程”窗口,对对工程继续续编译,把把要生成的的文件名改改为“MyDeev.dlll”,按“确定”按钮开始始编译。编译完成后,打打开工程MMyDevv的属性窗窗口,如下下图所示,在“部件”属性页中,把“版本兼容”中的选项设置成“二进制兼容”,同时把其下面的输入框中的内容由ZT6319R.dll改为MyDev.dll。按“确认”按钮返回打开类模块DDevSeetObjj的编程窗窗口,对接接口GettDevNName进进行如下修修改:GetDevvNamee=“我自己的的设备构件件“选中工程TeestDeev,在VB“工程“菜单中,单单击“引用”菜单项,把把工程TeestDeev对于DevvZT63319的引引用取消,改改为对工程程MyDeev的引用用。上述步骤完成成后,把整整个工程组组存盘,就就完成了开开始移植前前所有必须须的准备工工作。接下下来,你就就可以在源源程序的基基础上进行行修改,实实现你自己己特定功能能的设备构构件。对通讯子设备备,如欧姆姆龙PLCC对应的设设备驱动程程序进行移移植时,基基本方法和和步骤上面面所述相同同。3.5测测试和挂接接设备驱动动构件MCGS为设设备驱动构构件提供了了一套在VVB环境下下进行在线线调试的运运行机制,使使用户能随随时对所做做的修改进进行测试调调试、检验验其正确性性,其简单单程度和方方便性是其其它组态软软件系统使使用汇编或或C语言编制制设备驱动动通过DDDE挂接设设备驱动的的方式所无无法比拟的的。MCGGS的这一一机制,使使得大多数数普通工程程用户都能能动手编制制自己的设设备驱动程程序。使用MCGSS开发向导导生成的程程序框架或或系统提供供的样例源源代码中,都都包含有一一个用于在在VB下进行行测试的工工程--TTestDDev,通通过该工程程模拟MCCGS的工工作状态,直直接调用设设备驱动构构件的接口口函数,从从而做到对对构件的每每个接口函函数在VBB源代码一一级进行测测试,实际际应用中不不要对该工工程进行任任何修改工工作。下面详细介绍绍测试和挂挂接设备驱驱动构件的的方法和步步骤:按照前节所讲讲述的步骤骤,用开发发向导生成成一个设备备驱动构件件的框架,生成的源程序所在目录为--D:\Dev,构件工程名为--MyDev,构件的类型名为--我的设备构件。完成自动生成后,在VB的工程组窗口中会看到二个工程:MyDev和TestDev。启动MCGSS的组态环环境,并打打开或新建建一个MCCGS工程程。注意::进行在线线调试时,必必须启动MMCGS,且且要保证MMCGS中中有一个打打开的工程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借款合同保证书
- 对赌协议合同注意事项
- 商业服务合同的社交媒体营销
- 总价合同与单价合同的差异性解读
- 论文质量自我检查
- 面料订购协议范例
- 专业外包服务合同详解
- 土方承包合同规定
- 方木购入合同格式
- 品牌年度服务合同的续签策略
- 井下绳索取芯的自动化与智能化发展研究
- 10kV电力电缆熔接中间接头制作
- 《高职院校体育与健康教程》课程标准
- 水果店应急预案范本
- 贺银成总结的病例分析诊断公式及各科金口诀
- 整理我的小书桌(课件)小学劳动二年级通用版
- 应急救援知识培训教育记录
- 论文《英汉语对比研究的基本方法与创新》-阅读汇报PPT
- 公司万用表校准
- 走进人工智能-AI发展史及人工智能的应用
- 《果树生产技术》实习指导手册
评论
0/150
提交评论