OPC自动化服务器对象的研究 点击:1372 | 回复:3



opcfan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:62帖 | 58回
  • 年度积分:0
  • 历史总积分:667
  • 注册:2004年9月29日
发表于:2007-02-12 12:32:00
楼主
开发OPC客户端程序时,首先应该生成OPC服务器支持的OPC对象,然后就可以使用OPC对象支持的属性和方法,对其进行各种操作。这样使得客户程序可以像使用自己支持的数据和功能一样,去使用服务器对象支持的数据和功能。在Visual Basic 6.0里,是以对象为单位对OPC服务器进行访问的。通过OPC自动化服务器的对象模型,可以得知OPC自动化接口由以下四种对象所定义。
1 OPCServer服务器对象
OPCServer的一个实例,OPC服务器自动含有一个OPC组集合对象,并可在其基础上生成一个OPC浏览器对象。OPCServer服务器对象在使用其它OPC对象前必须生成,也就是说在引用其他对象之前必须先创建OPCServer。OPCServer对象提供了对数据源访问和通信的方法,其提供了“Connect”方法来连接OPC自动化服务器。
主要的属性有:
StartTime(只读属性,服务器启动运行的时间)、CurrentTime(只读属性,返回服务器显示的当前时间)、LastUpdateTime(对于本OPC应用程序的最后数据更新时间)、MajorVersion(只读属性,OPC服务器的主版本号)、MinorVersion(只读属性,OPC服务器的次版本号)、Bandwith(只读属性,返回OPC服务器的不敏感区的百分比)、ServerState(只读属性,返回服务器的运行状态,这个属性是比较重要的,方便客户端程序查询服务器的状态,从而达到排除故障的目的)、ServerName(只读属性,返回客户程序所要连接的服务器名,也就是OPC服务器的ProgID)、ServerNode(服务器所在计算机名或者计算机的IP,用于连接远程的计算机)等。
主要方法有:
GetOPCservers(获得己经注册的OPC服务器的程序标识符,即ProgID)、Connect(用来建立与OPC数据存取服务器的连接)、Disconnect(断开与服务器的连接)、CreatBrowser(创建OPC浏览器的对象)等。
事件:
只有一个ServerShutDown(关闭服务器,这个事件在服务器即将关闭之前发生,OPC服务器以此通知OPC客户程序预告即将关闭,OPC客户程序应该在接到此事件通知后,立即清除所有的OPC组并断开与OPC服务器的连接)。
2 OPCGroups组集合对象
OPC组的容器,包含所有客户端创建的OPCGroup对象的自动化集合。这个对象的用途是添加、清除和管理OPC组
主要的属性有:
DefaultGroupIsActive(新添加的OPC组的活动状态的默认值。默认初始值是活动状态)、DefaultGroupUpdateRate(新添加的OPC组的默认数据更新周期,默认初始值是1000毫秒)、DefaultGrouPDeadband(新添加的OPC组的默认不敏感区的默认值,即能引起数据变化的最小数值百分比,默认值是0%)、DefaultGroupLocaleID(新添加的OPC组区域标识符的默认值)、DefaultGroupTimeBias(新添加的OPC组的时间偏差的默认值)等。
主要方法:
Item(OPC组集合的默认方法。返回由集合索引指定的OPC组对象)、Add(在OPC组集合对象中添加一个组对象)、GetOPCGroup(返回指定的OPC组)、RemoveAll(为服务器关机作准备,删除所有组和标签)、Remove(删除一个指定的组)、ConnectPublicGroup(连接到公共组)等。
事件:
AllGroupsDataChange(由多个OPC组的数据变化而引发的事件)。
3 OPCGroup组对象
OPC组对象,OPCGroup的一个实例,它包含自身的信息,同时向OPCItems对象提供数据获取服务,它自动含有一个Items集合对象,允许客户端来组织它们需要访问的数据。OPCGroup可以作为一个单元来进行激活或停止激活操作。
主要属性:
Name(OPC组的名称)、IsPublic(判断是否公共组)、IsActive(控制组的激活状态。只有活动状态的OPC组才进行定期的数据更新)、IsSubscribed(控制组的订阅状态)、ClientHandle(客户句柄是由客户端程序指定的用于识别某个OPC组的长整型数。当进行数据访问或询问OPC组状态时,服务器将这个数值和结果一起返回给OPC客户程序)、TimeBias(数据采样时间的时间偏差值,用于调整设备时间和OPC服务器时间的偏差)、DeadBand(不敏感区,只有数据变化超过此不敏感区时,服务器才触发数据变化事件发生)、UpdateRate(数据更新周期)、OPCItems(OPC组的默认属性,OPC标签集合对象)。
主要方法:
SyncRead(同步读OPC组内单个或多个OPC项的数据值、质量标志和采样时间)、Syncwrite(同步写入OPC组内单个或多个OPC项的数据值)、AsyncRead(异步读)、Asyncwrite(异步写)、AsyncRefresh(触发数据变化事件发生,刷新OPC组内所有活动的OPC标签的数据。结果有数据变化事件DataChange返回)等。
主要事件:
DataChange(在OPC组内任何OPC项的数据值或质量标志变化时触发的事件)、AsyncReadComplete(异步读结束时发生的事件)、AsyncWriteComplete(异步写结束时发生的事件)等。
4 OPCItems项集合对象
OPCItems项集合对象也就是标签集合对象,是OPC项对象的容器,自动化客户程序创建的OPCGroup对象所包含的所有OPCItems对象的自动化集合。
属性:
Parent(返回所属的OPC组对象)、DefaultRequestedDataType(添加OPC项时,默认的要求的数据类型。初始值是控制设备的固有数据类型,既是VT_Empty)、DefaultAccessPath(添加OPC项时,默认的数据访问路径。初始值是空)、DefaultIsActive(添加OPC项时,默认的激活状态,初始值是真)、Count(集合对象的固有属性。OPC项集合中的OPC项数)。
方法:
Item(返回OPC标签集合中由集合索引指定的OPC标签)、GetOPCItem(返回OPC项集合中由服务器句柄指定的OPC项)、Addltem (在OPC项集合中添加新的OPC项)、Remove(删除指定的项)、Aalidate(检查项创建的有效性)、SetActive(分别设置项为活动或非活动状态)、SetClientHandles(设置OPC项的客户句柄)、SetDataTypes(设置OPC项要求的数据类型)。
5 OPCItem项对象
OPC项对象表示与OPC服务器内某个数据的连接。各个项包含了数据值、质量标志以及采样时间。数据值的类型为VARIANT。
主要属性:
ClientHandle(客户句柄是由客户端程序指定的用于识别某个OPC组的长整型数。当OPC组事件发生时,服务器将这个客户句柄和结果一起返回给OPC客户程序)、ServerHandle(服务器句柄是有OPC服务器设置的用于识别某个OPC标签的一个全局唯一长整型数)、AccessPath(返回OPC客户程序指定的访问路径)、AccessRights(返回OPC项的访问权)、ItemID(返回识别这个OPC项的标识符)、IsActive(用以控制OPC项的活动状态)、RequestedDataType(获取项的值的数据类型)、Value(返回从OPC服务器读取的最新数据值)、Quality(返回从OPC服务器读取的最新数据值的质量标志)、TimeStamp(时间戳)等。
主要方法:
Read(从服务器读取OPC项的数值)、Write(向服务器写入OPC项的数值)。
6 OPC浏览器对象
OPC浏览器对象OPCBrowser是OPC服务器名称空间的枝和叶的集合,可以浏览服务器配置中项的名字,一个OPCServer对象实例中只能有一个OPCBrowser对象的实例。浏览器功能是选用功能,OPC服务器不支持浏览器的时候,即使执行CreateBrowser也不生成这个对象。
主要属性:
Organization(OPC服务器的名称空间的类型,有平面型和树型两种类型)、Filter(使用ShowBrancher或ShowLeafs方法时的浏览对象过滤器,使用这个过滤器可以缩小被浏览的名称范围)、DataType(使用ShowLeafs方法时,希望浏览的标签的数据类型)、Count(浏览结果中的浏览标签数)。
主要方法:
Item(返回浏览结果中按集合索引ItemSpecifier指定的对象)、ShowBranches(将现在位置下的所有符合过滤条件的枝加入到浏览结果中)、ShowLeafs(将现在位置下的所有符合过滤条件的叶加入到浏览结果中)、MoveUp(向现在位置的上一层移动)、MoveToRoot(向名称空间的最上层移动)、MoveDown(向现在位置的下一层移动)、MoveTo(向浏览器的绝对位置移动)、GetItemID(由浏览标签的名称返回OPC标签的标识符)。