mcgs系统内部数据对象.docx

上传人:b****6 文档编号:11876741 上传时间:2023-06-03 格式:DOCX 页数:94 大小:104.03KB
下载 相关 举报
mcgs系统内部数据对象.docx_第1页
第1页 / 共94页
mcgs系统内部数据对象.docx_第2页
第2页 / 共94页
mcgs系统内部数据对象.docx_第3页
第3页 / 共94页
mcgs系统内部数据对象.docx_第4页
第4页 / 共94页
mcgs系统内部数据对象.docx_第5页
第5页 / 共94页
mcgs系统内部数据对象.docx_第6页
第6页 / 共94页
mcgs系统内部数据对象.docx_第7页
第7页 / 共94页
mcgs系统内部数据对象.docx_第8页
第8页 / 共94页
mcgs系统内部数据对象.docx_第9页
第9页 / 共94页
mcgs系统内部数据对象.docx_第10页
第10页 / 共94页
mcgs系统内部数据对象.docx_第11页
第11页 / 共94页
mcgs系统内部数据对象.docx_第12页
第12页 / 共94页
mcgs系统内部数据对象.docx_第13页
第13页 / 共94页
mcgs系统内部数据对象.docx_第14页
第14页 / 共94页
mcgs系统内部数据对象.docx_第15页
第15页 / 共94页
mcgs系统内部数据对象.docx_第16页
第16页 / 共94页
mcgs系统内部数据对象.docx_第17页
第17页 / 共94页
mcgs系统内部数据对象.docx_第18页
第18页 / 共94页
mcgs系统内部数据对象.docx_第19页
第19页 / 共94页
mcgs系统内部数据对象.docx_第20页
第20页 / 共94页
亲,该文档总共94页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

mcgs系统内部数据对象.docx

《mcgs系统内部数据对象.docx》由会员分享,可在线阅读,更多相关《mcgs系统内部数据对象.docx(94页珍藏版)》请在冰点文库上搜索。

mcgs系统内部数据对象.docx

mcgs系统内部数据对象

第一章MCGS的可扩充性4

1.1概述4

1.2可扩充的设备驱动构件6

1.3可扩充的功能构件7

1.4MCGS实时数据库对象8

1.5MCGS存盘服务对象10

1.6通过OLE自动化和其它应用程序交互12

1.7通过DDE和其它应用程序交互14

1.8直接操作MCGS的存盘数据库16

第二章开发MCGS功能构件17

2.1功能构件的实现方法17

2.2功能构件接口规范18

2.3利用开发向导生成框架19

2.4利用样例程序移植22

2.5测试和挂接功能构件25

第三章开发MCGS设备驱动27

3.1设备驱动构件的实现方法27

3.2设备驱动构件接口规范28

3.3利用开发向导生成框架32

3.4利用样例程序移植35

3.5测试和挂接设备驱动构件37

3.6IO端口的操作40

3.7串行口的操作43

3.8设备驱动构件的运行机制44

3.9增加设备构件的属性45

3.10定制设备属性设置对话框47

3.11编制简单的设备驱动构件48

第四章MCGS系统内部数据对象52

4.1$Year53

4.2$Month53

4.3$Day53

4.4$Hour53

4.5$Minute54

4.6$Second54

4.7$Week54

4.8$Date54

4.9$Time55

4.10$Timer55

4.11$RunTime55

4.12$PageNum55

4.13$UserName56

第五章MCGS系统内部函数57

5.1数学函数57

5.2字符操作函数59

5.3窗口操作函数61

5.4设备操作函数62

5.5策略操作函数63

5.6事件操作函数64

5.7报警操作函数64

5.8存盘操作函数67

5.9用户权限操作函数70

5.10系统操作函数71

第六章MCGS中提供的对象205

6.1实时数据库对象205

6.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:

改变数据对象所对应的存盘数据的存盘间隔

MoveSaveDat:

转储数据对象所对应的存盘数据

SaveData:

把数据对象对应的当前值存入存盘数据库中

SaveDataInit:

把数据对象的当前值作为初试值存入组态结果数据中作为初试值

1.5MCGS存盘服务对象

MCGS提供有一个存盘服务对象,用于设备驱动构件和功能构件保存构件内部需要保存的数据。

在构件中,通过操作该对象的方法来保存和读取数据,而数据具体放在什么地方由MCGS来管理(MCGS把这些数据和构件的其它属性一起保存在组态结果数据库中)。

注意:

MCGS把存盘服务对象作为一个参数通过构件的接口传送到设备驱动构件和功能构件内,供构件保存数据时使用。

下面详细列出存盘服务对象所提供方法:

方法:

SetStartPos

方法用途:

设置存储数据的操作方式。

使用范围:

可用于组态环境和运行环境。

语法形式:

SetStartPos(ByvalFlagasLong)asLong

返回值:

=0:

调用正常,<>0:

调用不正常。

参数说明:

Flag,长整型,操作标志,具体含义如下:

=0:

设置对数据的操作为读模式,使得GetDat从起始位置开始,顺序读取数据;

=1:

设置对数据的操作为写模式,使得PutDat从起始位置开始,顺序把数据存入。

方法:

GetDat

方法用途:

读取存储在MCGS内的数据。

使用范围:

可用于组态环境和运行环境。

语法形式:

GetDat(ValueasVariant)asLong

返回值:

=0:

调用正常,<>0:

调用不正常。

参数说明:

Value,Variant型,返回读取的值,也可以使用具体的数据类型和数组来返回数据。

方法:

PutDat

方法用途:

把数据存入到MCGS内。

使用范围:

可用于组态环境和运行环境。

语法形式:

PutDat(ValueasVariant)asLong

返回值:

=0:

调用正常,<>0:

调用不正常。

参数说明:

Value,Variant型,要存入的值,也可以使用具体的数据类型和数组来存入数据。

MCGS存盘服务对象使得在设备驱动构件和功能构件中,能使用“流化”的方式来编程实现保存和读取存盘数据,GetDat和PutDat的使用一定要配对。

如在某接口中编写的保存数据代码如下:

dimIaslong,jaslong,msgasstring,Dat(10)assingle

SaveObj.SetStartPos1

SaveObj.PutDatI

SaveObj.PutDatj

SaveObj.PutDatmsg

SaveObj.PutDatDat

则对应的读取数据的代码应如下:

dimIaslong,jaslong,msgasstring,Dat(10)assingle

SaveObj.SetStartPos0

SaveObj.GetDatI

SaveObj.GetDatj

SaveObj.GetDatmsg

SaveObj.GetDatDat

1.6通过OLE自动化和其它应用程序交互

MCGS组态软件本身的自动化功能可以帮助用户在其它应用程序中很方便地操纵MCGS组态软件的运行。

比如说,用户可以在一个程序里指挥MCGS运行环境打开某个窗口、执行某个策略、或者向某个设备发出命令等等。

基本上,在MCGS组态软件中用户脚本程序可以完成的功能也都可以通过MCGS组态软件的自动化功能来完成。

MCGS把其核心作为一个对象包装起来,把MCGS的大多数功能作为对象的属性和方法暴露出来,使其它的应用程序通过OLE自动化来操作MCGS,在VisualBaisc、Excel、Access和、Delphi中都可以通过OLE自动化来取得MCGS实时数据库对象,编程操作MCGS提供的属性和方法。

在VisualBasic中操作MCGS

假定MCGS运行环境正在运行一个工程,且该工程有20个数值型数据对象,其名称为Dat01到Dat20。

要求用VB编制一个应用程序,该程序的界面如下图所示,按“从MCGS读数据”按钮时,能把MCGS中Dat01到Dat10的值读回显示在左列文本框内,按“向MCGS写数据”按钮时,能把右列文本框内输入的数据写到MCGS的Dat11到Dat20数据对象中。

DimDatObjAsObject

PrivateSubForm_Load()

OnErrorResumeNext

SetDatObj=GetObject(,"McgsRun.DataCentre")

IfErrThen

MsgBox("请先启动MCGS运行环境!

")

End

EndIf

EndSub

PrivateSubCmd_Read_Click()

DimmsgAsString,ttAsVariant

Fori=1To10

msg="Dat"+Format$(i,"00")

DatObj.GetValueFormNamemsg,tt

Txt(i)=Format$(tt)

Nexti

EndSub

PrivateSubCmd_Wirte_Click()

DimmsgAsString,ttAsVariant

Fori=1To10

msg="Dat"+Format$(i,"00")

tt=Val(Txt(i+10))

DatObj.SetValueFormNamemsg,tt

Nexti

EndSub

在Assess、Excel中都有对应的VB程序可以编程,实现对MCGS的各种操作,其方法和在VisualBasic中基本相同,可参考上面的代码进行。

1.7通过DDE和其它应用程序交互

MCGS提供了动态数据交换(DDE)方式和其它应用程序进行数据交换,不同于OLE自动化操作,DDE方式只能传递数据,不能直接对MCGS进行操作,而且DDE方式数据传递的速度较慢,可靠性也不如OLE,建议采用OLE来代替DDE。

下面举例说明如何在MCGS和Excel中建立DDE连接,要求在Excel表单Sheet1第1行到第10行的第一列显示MCGS数据对象Dat01到Dat10的值,把表单Sheet1的第1行到第10行的第二列输入的值送到MCGS数据对象Dat11到Dat20中。

要使用DDE和其它应用程序进行交互,首先应在MCGS中进行一些定义工作。

在MCGS组态环境的“工具”菜单中选取“DDE连接管理”菜单项,弹出如下窗口:

在DDE连接管理窗口中,把Dat01到Dat10设置为DDE输出(选中各数据对象对应的DDE输出选项框);把Dat11到Dat20设置为DDE输入,同时对服务节点进行如下配置:

●按“服务节点配置”按钮,弹出如下配置窗口

●按“增加”按钮,弹出如下配置窗口,把服务节点名设为“Excel表单”,把服务名设为“Excel”,主题名设为“Sheet1”(当把Excel应用软件作为DDE服务器时,服务名永远为“Excel”,主题名为对应表单--Sheet的名称)

配置好服务器节点后,把Dat11到Dat20的连接节点都设为“Excel表单”,连接项目分别设为R1C2到R10C2。

运行Excel,在表单Sheet1的R1C1到R10C1中输入McgsRun|DataCentre.Dat01到McgsRun|DataCentre.Dat10,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2