从OPCServer采集数据? 点击:2340 | 回复:13



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-04-27 21:15:00
楼主
各位opc高手: 我有一个小问题想请教,我想在客户端从服务器采集各种数据,是不是必须在客户端起动线程周期性地调用read函数去主动读取?能否让服务器每隔一定时间主动发送数据给客户端的callback函数?(要任意数据类型,不光dwEUType)



whistlezl

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2003年12月14日
发表于:2004-04-28 00:34:00
1楼
我也在学习做OPC Server,我认为是可以的: OPC 客户实现IOPCDataCallback::OnDataChange(...)接口,这样OPC服务器在发现数据有变化后,就会主动向OPC客户发出通知和变化的数据。传送的数据类型是VARIANT类型的。该函数的详细信息在OPC DA Specification中有说明。 我是初学,以上仅供参考。

topgrass

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 12回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2002年12月12日
发表于:2004-04-29 13:41:00
2楼
当然可以了,只要与服务器建立回调,OPC 2.0以上支持 IConnectionPointContainer\IOPCDataCallBack接口,就是解决你说的问题的,1.0的还是很老的通报连接IDataObject\IAdviseSink。

seaman

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 29回
  • 年度积分:0
  • 历史总积分:185
  • 注册:2001年11月21日
发表于:2004-04-29 19:09:00
3楼
能,我知道一种方式,服务器的数据变化时会把数据callback给客户端

seaman

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 29回
  • 年度积分:0
  • 历史总积分:185
  • 注册:2001年11月21日
发表于:2004-04-29 19:09:00
4楼
能,我知道一种方式,服务器的数据变化时会把数据callback给客户端

刘清

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 16回
  • 年度积分:0
  • 历史总积分:70
  • 注册:2003年12月10日
发表于:2004-04-30 09:13:00
5楼
你们说的我知道,但那些数据点好像是dwEUType类型的,即该数据点有上下限,可我想做的是任何数据类型,包括BOOL型,如何做?请赐教。谢谢!

yuer

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2004年4月21日
发表于:2004-05-06 16:10:00
6楼
whistlezl:,我现在的问题是无法将RSLinx OPC Server的数据读到VB开发的OPC Client中,我想问题的关键是没有获得服务器的接口指针,是这样吗?那又是如何实现的呢?请帮一下忙,谢谢!

whistlezl

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2003年12月14日
发表于:2004-05-11 00:05:00
7楼
yuer:Sorry,我是初学OPC,RSLinx OPC Server没有用过。 但我认为如果你没有读到数据,并不是没有获得服务器的接口指针,因为如果没有获得服务器的接口指针,你的VB客户端程序中,在连接服务器的时候(也就是调用Connect方法时)就会出错。 VB程序在与COM对象(如OPC服务器)进行通讯时是由VB虚拟机通过IDispatch接口进行。

whistlezl

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2003年12月14日
发表于:2004-05-11 00:06:00
8楼
吼吼吼!!! 为什么我上次回复刘清的帖子不见了,这个论坛是怎么回事,经常出现丢帖,回帖回不了的情形。

whistlezl

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2003年12月14日
发表于:2004-05-11 00:07:00
9楼
重贴一下上次回复刘清的帖子: 以下仅供参考: 一、为了支持回调,OPC服务器和客户端必须具备的条件 OPC服务器:实现IConnectionPointContainer接口,并且拥有一个连接点(IConnectionPoint),支持IOPCDataCallback回调接口。 OPC客户端:为了能够使用连接点,通常需要创建一个对象(AAA),该对象支持IUnknown和IOPCDataCallback接口。 二、OPC服务器和客户端的协作过程 1.客户程序首先获得服务器的IConnectionPoint接口指针,然后通过IConnectionPoint::Advise()将对象AAA的IUnknown接口指针传给服务器。 2.服务器在接收到该指针后,将通过AAA的QueryInterface()获得IOPCDataCallback接口,并保存IOPCDataCallback接口指针。 3.服务器在适当的时候(如果是自己开发服务器,想什么时候就什么时候了)会调用AAA所实现的IOPCDataCallback::OnDataChange(),IOPCDataCallback::OnReadComplete,IOPCDataCallback::OnWriteComplete,IOPCDataCallback::OnCancelComplete四个函数。 三、关于数据类型 请看OPC 规范中IOPCDataCallback::OnDataChange的定义: HRESULT OnDataChange( [in] DWORD dwTransid, [in] OPCHANDLE hGroup, [in] HRESULT hrMasterquality, [in] HRESULT hrMastererror, [in] DWORD dwCount, [in, size_is(dwCount)] OPCHANDLE* phClientItems, [in, size_is(dwCount)] VARIANT* pvValues, //注意此处的数据类型 [in, size_is(dwCount)] WORD* pwQualities, [in, size_is(dwCount)] FILETIME* pftTimeStamps, [in, size_is(dwCount)] HRESULT* pErrors ); 显然,服务器发送给客户程序的数据类型是VARIANT类型的数组,也就是说基本上是任意的数据类型了,包括BOOL类型! 注:以上内容我参考的是 OPC DA Specification 3.0,该规范在www.OPCFoundation.org上可以免费下载。

刘清

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 16回
  • 年度积分:0
  • 历史总积分:70
  • 注册:2003年12月10日
发表于:2004-05-11 13:02:00
10楼
whistlezl:你好! 你说的我也看到了,但是在我的实验中,凡是OPCServer中该数据点(Item)有上下限说明的都可以通过callback自动接受数据,但是BOOL型却始终无法接受,必须我自己启动一线程去主动采集,不知你是否做过试验,如果可以实现,望告诉具体做法。不过这一实验结果倒是符合opcda.2.05说明书上所阐述的。另外,请说明一下dwEUType到底是一个什么东东。

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-14 10:29:00
11楼
不知楼上的OPC DA 3.00在OPCFOUNDATION中哪个地方下的,能否给出具体的网址,谢谢。。

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-17 11:06:00
12楼
我来给出3.0的下载地方把 到了这里后你可能还要注册以下才可以下的,呵呵! http://www.opcfoundation.org/WebUI/DownloadFile.aspx?CM=1&RI=67

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-17 11:08:00
13楼
http://www.opcfoundation.org/WebUI/DownloadFile.aspx?CM=1&RI=67

热门招聘
相关主题

官方公众号

智造工程师