以前是做C++视频监控方向的,初入OPC行业,最近接手一个任务是封装一个QT风格的OPC客户端库。我的疑问可能表达的不清楚,所以有点啰嗦。见谅。
疑问一:OPC客户端所谓的建立服务,添加group。和服务器上的数据的树形结构是相互独立的吗?
(就是说,客户端这边建立的树形结构是不是可以理解成server,group和服务器的server,group 没任何关系,只是客户端的item和服务器的item是一一对应的。)
疑问二:服务器端的所有item都可以被客户端这边进行修改吗?服务器里的item的值是在随时变化的,服务器如何知道我修改了值。
疑问三:我应该怎么知道服务端的group信息,是有接口可以查询还是查询了item之后通过item的名字来分析获得group。
疑问四:如果一个客户端要同时连接多个服务器,有哪些资源会产生冲突,我需要对哪些资源进行加锁?
暂时就这么多,希望前辈指点一下。
1:建立连接服务,实际上你可以理解为一个TCP连接,以前的DA是用的DCOM,现在的UA使用的是TCP。增加一个GROUP,实际上就是对应了服务器中的GROPU,这个是必须的
SERVER
GROUP
ITEM
这三个都是一一对应的。实际上,你也只有通过这三个对象,才能找到你需要 ITEM。没有SERVER,你是找不到ITEM的。
如果把OPC SERVER的数据ITEM看做是一棵苹果树上的苹果的话。那么苹果树干就可以看做SERVER,枝桠看做GROUP,ITEM看做苹果。你想要找到ITEM这个苹果,没有先找到树干和枝桠那是不行的。
2:客服端可以修改服务器端的ITEM,这是必须的,这用到了OPC中的一个机制,这个机制就是当修改客服端中ITEM值得时候,你可以使用一个OPC规定的一个命令来传递给SERVER,那么SERVER就知道了这个事情,这就是传说中的Write命令。
3:第一条说了,有专门的命令来查询ITEM,但要先找到SERVER,再找到GROUP,最后 找到ITEM,
4:说实话,客户端比较好写,难点在于服务器端,但你的任务好像没有服务器端吧。你理解一下TCP连接就知道了。OPC基金会有一个说明书,你详细看看吧。