OPC Server 开发的交流与学习 点击:6355 | 回复:43



gongkongedit

    
  • 精华:1063帖
  • 求助:0帖
  • 帖子:14249帖 | 54470回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2008年9月08日
发表于:2004-03-01 09:54:00
楼主
希望对OPC Server开发有兴趣的各位朋友响应一下,让我们一起交流学习合作攻下这个堡垒! 无论大家使用什么开发工具及编程语言,希望大家都已具备了COM/DCOM及相关的功底,让我们把讨论的焦点放在OPC规范的本身,而不是解决语言及工具的某些问题。 作为开始,我先介绍一下自己。 我,C/C++程序员,应用开发方面具组态软件的开发经验,驱动开发方面具备Windows NT/9x及Unix内核模式驱动开发的经验。关于OPC Server的开发,是刚刚接触,打算尽快拿下!由于是刚刚开始OPC Server的开发,其DA规范粗略的看过一遍,现开始从新仔细研究。



kking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 116回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年7月09日
发表于:2004-05-13 13:53:00
21楼
COM 在 OPC 中解决的,无非是客户服务器之间的数据交互问题,不是 IPC 吗?这不是我归的类,MSDN 的 Platform SDK 里说得很清楚。:) RPC 不完善,而 DCOM 离不开 RPC,出问题了跟用户说“DCOM没问题,要怪就怪RPC”用处似乎不大。 不过说再多也没用,OPC已经是业界标准,也有不少可取之处。想办法克服其弱点更实际一些。不过有时自己琢磨,如果在我们自己的产品中制定类似规范的话,我想是不是可以做一个基于 socket 之类的SPC?可能在数据格式、解码方面比 OPC 复杂,但可移植性好,底层协议稳定,效率也绝对不弱于OPC。请多指教。:)

昆西

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2002年10月29日
发表于:2004-05-13 14:07:00
22楼
To:kking COM/DCOM是不是IPC的一种方式(总觉得拿DCOM仅用作IPC就太浪费效率了),就不讨论了,呵呵。这不影响我们其他方面的讨论。 “OPC已经是业界标准”,是呀,而且我想随着它被不断的发展,会越来越好的。 你说的基于Socket(TCP/UDP)的数据交换用在工控领域的想法,真的也是不错的呀,(“还挺有想法的嘛”: ),这里面就只涉及数据流和命令流了,Modbus Ethernet 不就是一种类似的协议么,呵呵,数据格式、解码方面的复杂性,可以通过软件发行各平台下的辅助软件来封装解决呀!

deng_lp

  • 精华:5帖
  • 求助:0帖
  • 帖子:65帖 | 2669回
  • 年度积分:0
  • 历史总积分:2876
  • 注册:2001年6月19日
发表于:2004-05-13 17:03:00
23楼
标准是人定的,好不好大家都可以评说. com/dcom 在几个软件商的努力下已能实现跨平台. 但总的感觉还不如socket.或intouch 中的suitelink 协议. 只是后者不是业界首推的标准. 正如两位所说,如果socket能 用公开的方式进行封装,把数据流进行定义归类。再带上时标不就可以实现"SPC"了吗? 如果intouch 把suitelink协议公开化,不就是一个现存的公用标准? 作一个通用的标准关键是有没有人去推广.有没有实用的价值 opc的通讯质量不是最快最可靠的,面对多变复杂的现场环境,还是TCP最后,因为一切尽在掌握之中. 个人观点,大家一起切磋.

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-05-13 21:37:00
24楼
感觉 COM 的跨平台类似于在 UNIX 上架虚拟机跑 windows,研究和娱乐的成分大些。MS 就没想推广。 另外工控界对新技术的反应一向较慢,OPC基金会N年前就推出的标准时至今日似乎只有 DA 规范被采用得多些,而且很多厂家仍停留在1.0版本。倒是第三方的客户/服务器工具、开发包搞得很热闹。

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-14 09:55:00
25楼
to 昆西 我想请问以下您在开发OPC SERVER 中对于数据结构的处理有没有什么好的建议,需要自己怎样去定义一个数据结构呢???OPC 规范中已经把函数等都定义好了。。或者是说是在OPC 规范中的那些函数中去实现自己的数据结构呢??

昆西

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2002年10月29日
发表于:2004-05-14 19:24:00
26楼
To: xuexixuexi OPC定义的一些接口,是关于你的程序(OPC Server)和外部(OPC Client)怎样交换数据的一个基本框架。而具体的数据传递方式以及你的程序(OPC Server)的结构(包括数据结构)在设计上都有非常大的灵活性的。在设计你的程序结构(包括定义数据结构)时,我的经验和建议是: 重点考虑,你的OPC Server对应的设备的特性,尤其是设备的数据相关的方面。你的OPC Server的上沿是OPC接口,下沿是与你的设备(可能是虚拟设备或其它软件)的数据交换,下沿交换的数据的结构、组织方式等等直接影响你程序中数据结构的设计,例如哪些是实时的哪些是参数量,它们是怎么组织和采集的。经过分析这些定下来了,那么你OPC Server的Address Space的组织方式就基本定下来了,你程序的主要数据结构也就定下来了。 一些常见类型的设备,如PLC等,其数据及OPC Server地址空间的组织方式都已经形成了一些定势了(“事实标准”),如果你是做这类设备的,一定要参考一下,不然用户可能会觉得你的Server难用,虽然你可能设计得更好。 关于OPC Server内部地址空间,在OPC DA规范中有很不错的几段话,看看、想想也很有用处的。

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-17 10:56:00
27楼
to 昆西 首先谢谢您的回答!我现在正在学习开发OPC SERVER,关于COM的书我也看了不少了,可对于开发OPC SERVER总有一种无从入手的感觉,这可能是初学者都要经历的一个过程吧? 我想问您一下,开发一个OPC SERVER的时间大概是多长呀?假定就是实现最简单的功能,如从客户端能看到从OPC SERVER传来的一个或一串数据,或者是从客户端能写一个或一串数据通过OPC SERVER传出去,您认为就只完成这个功能对于一般没接触过COM的人要花多长的时间呀??您能推荐一些好的书籍或者是一些好的学习方法呢?? 谢谢您!!

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-17 11:06:00
28楼
我来给出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
29楼
http://www.opcfoundation.org/WebUI/DownloadFile.aspx?CM=1&RI=67

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-05-17 20:26:00
30楼
TO: xuexixuexi 无从下手的感觉,是因为你对COM/DCOM的开发不熟的的原因,如果对COM/DCOM很熟,对OPC规范也很熟的话,要写出一个像你说的那种测试型的小OPCServer,只要一两天就够了。你的OPC Server开发和学习要费些时间和精力的地方就是对COM的学习和对OPC规范的学习了,掌握COM思想和技术,不是一朝一夕的事情,随着时间的投入,你会对它的认识越来越深,最后掌握其本质。所以说,你学OPC SERVER开发的时间,就将是你学习COM的时间。如果你的C++语言功底好、面向对象的理解也不错,那对COM的学习会很有帮助的。关于COM,我向你推荐几本书,其他的书你先不用看,等看完了这些书后,你就会自己找书了: 1。COM组件对象模型 (英文版名称:Inside COM) 是微软的书,看中文版就可以了,这本书是红色的封面,价格正好50元,它是你COM的最佳人们书。三五天可以拿下。 2。COM技术原理与应用 潘爱民的, 看这本书的时候要开始动手编码实践了,而且要对COM的各个方面进行熟悉。 3。ATL Internals 如果你打算用ATL进行更多更深入的实践,或者你想看看ATL是怎么样为用户提供对COM开发的深入支撑的,可以看看这本书,否则这本书,你可以放后再看。 4。COM本质论 DonBox写的,有了一定的代码实践基础后,通过这本书提升一下自己对COM思想、原理、一些方面的细节等等的认识。 除了这几本书外,就是MSDN Library中关于组件开发的那几部分,也是你迟早要看的。 COM技术并不像某些人说的会过时,学习他会使你有极大的收获,使你,对函数、接口、类型以及封装有更进一步、二进制级别的认识,也会让你明白为什么会出现.NET技术,为你以后掌握.NET技术作出更好的准备。学习过程中,你会发现,COM真的不难、也不复杂。是个很理性很“物理”的东西。 呵呵。学习中,有什么问题,可以来论坛问,很多人都会愿意帮助你的。

情人节

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 4回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2004年2月15日
发表于:2004-05-18 15:01:00
31楼
TO :昆西 能否给我发一个简单的OPC程序,能编译就行.我在做毕业设计,手上的程序都不完整,请帮帮我~谢谢~ lifei.11@163.com

shylsz

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2004年5月09日
发表于:2004-05-18 17:07:00
32楼
昆西兄,能否给我也发个OPC客户端的程序,谢谢了!

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-05-19 09:17:00
33楼
shylsz007@sina.com

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-22 13:59:00
34楼
to 昆西 谢谢您给我的回答和您的建议 您说的COM组件对象模型这本书我已看完,个人感觉是这本书很容易理解,写得很简单,但内容不是很全面,COM 的一些特性没有介绍,后面的几章写得不是很清楚,我原来是想买着本书的,但没买到,后来在网上下了电子版的,已经学完了,但是没有书中的代码例子程序,不知您有这本书没有,如果有的话能把这本书的代码例子发给我吗??谢谢了 jiangjin007@sohu.com 我个人认为COM技术原理与应用这本书是写得最好的,书的内容写得全面,并且易懂,我现在就在反复研读这本书。 而ATL Internals 我个人认为要达到一定的ATL的水平才可以去学习,要不然可能看得摸不着边,我稍微翻了一下这本书,觉得以后水平提高了再去看 而COM本质论我看了前面的几章,虽然听说DonBox是COM的权威,但我觉得可能是中西方文化的差异,所以使得翻译后的书看起来不是很适合中国人的习惯,感觉内容写得很难理解,语言很晦涩。 书我是看了不少了,可能是代码写得太少,所以我还得加紧学习,学习再学习,但有时感觉没人请教,很困惑。在以后的学习中,希望能向您多学习,不知您现在是从事那个行业的??不知能向您请教吗??能给您的邮箱地址吗,有小问题能发给您向您学习吗??谢谢!!

xuexixuexi

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 41回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月05日
发表于:2004-05-22 14:05:00
35楼
TO 昆西 我想问一下,开发OPC SERVER需要看那么多的COM原理吗??以及COM 的高级特性,底层的COM原理方面的东西太烦琐,涉及到的API太多,太麻烦,我觉得COM就是提供一个框架,然后我们自己来实现具体的功能,但开发OPC SERVER 我也知道难点是在功能的具体实现上,但现在在看这么多COM的原理是不是有点浪费时间了,个人感觉很困惑??????

darkplus

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2012年5月02日
发表于:2012-06-11 14:36:21
36楼
谢谢各位大吓,小弟弟正在学习中,你们的介意很好,请问对OPC SERVER整个框架简单的描述,和一个经验性的开发意见吗?

尐お槑孨/叶宏

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2012-06-30 20:38:05
37楼

我OPC客户端 已解决,用C++BUILDER访问一个OPC SERVER不成问题,并且很简单。

但 OPC  SERVER终始没找到开发模板或源框架,没法编,已多年没解决这个问题,

百度上我搜搜看,以前是没有OPC服务端例子的。

wgj123123

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2012年7月04日
发表于:2012-07-04 15:21:33
38楼
我对于opc server开发非常感兴趣。不知道有没有朋友愿意提供一个开发工具给我。发送到邮箱779865885@qq.com,,在下在这里谢谢了

wgj123

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:44
  • 注册:2006年9月15日
发表于:2012-07-11 10:13:24
39楼

谁能提供一个opc server的开发工具啊??小弟感激不尽啊。。。如果有的话发到我 的邮箱779865885@qq.com。。非常非常的感激。

蒋勇

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 62回
  • 年度积分:0
  • 历史总积分:311
  • 注册:2006年2月08日
发表于:2012-07-13 16:26:04
40楼

OPC Server的开发其实相当简单,前提是你写过COM/DCOM程序(不是用ATL和MFC框架写的,是直接在COM SDK下写的)。

使用以下几个文件:

    opccomn.idl
    opcda.idl
    OPC DA 2.05a Specification.pdf
    opc-da-3-specification.pdf

注意其中2.0异步使用了IConnectionPointContainer接口,其实就是远程回调,很好理解。

只需要OpcServer和OPCGroup两个对象即可。

 

不用ATL和MFC开发如下,使用C++的多重继承:

OpcServer对象包含接口:

    class COPCServer :
 public IOPCServer, // Server接口
 public IOPCCommon, // 公共接口,主要是本地语言设置
 public IOPCItemProperties, // 标签属性接口
 public IOPCBrowseServerAddressSpace, // 标签枚举接口
 public IConnectionPointContainer // 连接点容器接口,含IOPCShutdown通知

 

Group对象

    class COpcGroup :
 public IOPCItemMgt, // item管理接口
 public IOPCGroupStateMgt,//组状态管理接口
 public IOPCSyncIO2, // 同步接口2.0,从IOPCSyncIO派生而来,含1.0版IOPCSyncIO接口
 public IOPCAsyncIO3, // 异步3.0,从IOPCAsyncIO2派生而来,含IOPCAsyncIO2接口
 public IConnectionPointContainer // 连接点容器接口,含有IOPCDataCallback通知。

    注:除1.0异步(IOPCAsyncIO,剪切板数据交换,该接口已经淘汰)外,其他都实现了。客户端优先选用2.0和3.0的异步方式。

 

把COM的类厂加上,注册表按照OPC规范加上即可。

无需代理/存根(因为安装OPC发行基础包后就有了)


热门招聘
相关主题

官方公众号

智造工程师