现在的位置: 首页 > 综合 > 正文

OPC学习(一)

2013年02月22日 ⁄ 综合 ⁄ 共 881字 ⁄ 字号 评论关闭

网上找些OPC Client、Server的Demo。

先来写OPC Client,实现一个OPC Explorer。

首先要知道那些标准的OPC接口的GUID,一,你可以从OPC基金会下载一个OPC Core Components SDK.msi,安装,安装后虽然有个“OPC Foundation”的目录,但是只是一些文字档,dll全部扔到system32去了,如OPCEnu,.exe,OPCProxy.dll,然后用delphi的"import type library..."功能汇入成一个*_TLB.pas。二,直接拿别人整理好的接口单元。

如何列举出本机已经安装的OPC Server,一是读注册表,二是使用OPC Core Components SDK.msi里面的OPCEnum.exe。

OPC把资料叫Item,Item的结构有树形结构和非树形结构,通过IOPCBrowseServerAddressSpace接口的QueryOrganization来查看OPC Server实现的是哪种结构。如果是OPC_NS_HIERARCHIAL那么就是树形的,树形就有分支,叫Branch,Branch下面再有Branch和Leaf。

Item可以加到Group中,然后激活Group和Item,并给一个CallBack接口,OPC Server会根据你Group设的ScanRate定时检查资料是否有变化,有变化就把资料送出。

测试发现,不同的OPC Server实现的水平和程度很不一样,一般的OPC Explorer都只能把Leaf加到Group中,不支持把Branch加到Group中,大部分OPC Server也是遵循这个原则,但是有的OPC Server比较创新,如我遇到的一个KEBA的控制器,它把Branch当成函数使用,对Branch写任何值,相当于就是调用了某个函数,然后这个Branch下有In和Out子Branch,然后Out下面的Leaf就可以读到函数返回的值。有点创意,否则一般的做法是使用自定义接口,但这样OPC Explorer不能基于OPC规则自动发现这些接口和函数。

抱歉!评论已关闭.