OPC协议见解

虽然目前大部分的厂商均支持OPC协议,并将其视为开放的标准。我曾长期从事实时数据库研发,并对OPC协议有深入研究。到目前为止,除了悲哀,只有一席不得不说的话。OPC真的很先进么?对于过去还一直靠编写串口协议研发非标产品的一些同仁来说,似乎刚刚感受到其带来的优点,为了接项目而编写一些OPC接口等等,也许感觉其神秘而高不可攀。其实,OPC就是基于微软DCOM技术的一套接口定义而已,在其设计的时候并没有考虑诸多工控必须的硬件条件因素,仅仅是将微软DCOM技术原封不动地搬到了工控领域而已。这几年,每年都有一些同仁公司联系SUPCON SOFT,希望能够获得解决OPC接口的问题,作为OPC基金会的首批会员和国内OPC基金会的倡导者,SUPCON对OPC十分了解,拥有大量可以开发OPC接口的程序员。但这并不意味着SUPCON会承接这些接口问题的服务。作为一个企业,其专业性在于提供自己专业的产品和核心价值所在的服务,而非其它。但这也从另一个侧面看出国人对OPC接口的误解和盲从。OPC真的很美么?从其应用至今,OPC带来的痛大过其带来的利益。DCOM是一套依赖微软技术极深的服务,仅一个OPC,就限制了目前工控领域操作系统的多样性。这也没什么,如果处于爱国,中国还真没有可圈可点的操作系统。但OPC的问题是在太多了:


※安全性配置复杂:对于对操作系统并不专业的工控人员,OPC的安全性配置已经过于专业和复杂了。这导致了好多实例中,OPC都不是通过系统启动后自激活的,而是需要有交互式用户去登录,这给系统带来了极大的不安全性。即每次系统重启都可能需要人为干预。虽然经过合理的DCOM配置可以避免,但不幸的是大部分工控从业同仁对此并不掌握;


※远程激活困难:如果两台计算机不再一个带有强烈微软技术特色的“域”里的时候,远程激活OPC就是一个噩梦,在很多项目上,仅这个配置就另很多工程人员痛心疾首。知道大部分项目中不同域之间的激活是怎么做到的吗?呵呵,好多同仁选择了两台机器通过相同的用户名和密码登录来破坏安全性;另一些掌握一些编程技术的同仁则通过在一台计算机中保存另一台计算机的用户名和密码;这些安全因患之所以不能排除,原因就是该死的OPC协议,这个吸附在微软的DCOM技术上的毒瘤;


※开发复杂:虽然笔者对DCOM技术掌握得较为熟练,但至今还能回忆起年轻时学习DCOM编程的黑暗日子,DCOM是一种经过一段时间痛苦,然后顿悟,发现原来所有写DCOM教材的人都在故弄玄虚,人为增加复杂度。同时,DCOM的内存管理和调用技术,往往需要较多经验,使本来容易的通讯开发,变得焦灼不堪。所以才有目前很多业界同仁委托其它公司开发OPC接口的事情;


※跨平台困难:连跨微软的多个操作系统,都会有些小问题,能在Linux和UNIX上使用OPC的人,更是寥寥;我至今只是闻名,未尝亲见这类高人;


那么为什么这么一个诟病甚多的协议会成为今天普遍接的标准呢?原因有二,一是时机,二是资本。当工业以太网时代还出于鸿蒙初开,各大自动化厂商还在为未来的总线争论得喋喋不休得时候,微软,这个操作系统的厂商,利用一种基于自己操作系统的分布式技术,在DCOM仿佛能够解决一切分布式问题的丧失理智的时代,推出了一种民不见经传的OLE for Process Control,没有引起任何一个自动化厂商的足够重视,而正是因为这种低调的入场,加上各大自动化厂商惯常的保守和对工业以太网技术发展前景的短视,OPC成长了起来。谁会将一个操作系统的厂商作为竞争对手呢?所以,OPC的开始是比较顺畅的。另一个强有力的吹鼓手是微软,他并没有鼓吹OPC无所不能,但它过分地鼓吹了DCOM,最终这种资本运作带来了浮躁,大家索性都不再研究其他开放的工业以太网传输协议了,OPC就是万能灵丹。历史再不断重演,今天的我们,又要被IBM等厂商所谓的SOA和Web2.0技术蒙住双眼。


另一个原因,就是崇洋,曾几何时,洋东西好得不得了,我还记得当时曾经定义一个内部的基于TCP数据传输协议,就有保守派在我耳边喋喋不休:协议这东西都是国外大公司制定得,如何如何神奇,如何如何专业,总之,中国人连制定一个企业的TCP传输协议的能力都没有了。不过最终证明,不但能够制定,只要对工业数据传输得需求把握得好,中国人可以制定出一样优秀得开放数据传输协议。但问题似乎总是出现:你制定了,谁拥护啊?你制定了,好吧,虽然是开放式协议,为啥是你A公司制定,不是我B公司制定?国人的问题多得不得了。中国目前也出了十多家有一定规模的自动化厂商,有没有成立一个多个企业的标准委员会,讨论一下国有开放标准?没有!这就是现实。我们不还以被美国仪器仪表协会承认而自豪么?我们不还为了能够达到欧洲标准而欣慰么?所以,在这样的土壤上,本土的种子难得开花结果。


其实,最适合工业使用的以太网数据交互协议,绝对不是OPC,而应该是一种基于TCP/IP的,平台无关传输协议。这种协议得制定,只要兼顾了实时值、历史值、主动变化通知,考虑了批量数据读写和并发连接,考虑了不同设备处理速度得不同,就会变得即鲁棒又实用。而我们国人完全有能力制定自己的开放协议!


我深深的知道,问题虽然明显,但明天早晨,我仍然必须接受这个洋品牌和洋标准充斥的世界。OPC虽然不好,但未来5年恐怕还会被趋之若骛。我的力量虽有限,但有幸的是我在一家民族自动化企业就职,还可以一点点地身体力行以尽绵薄,希望国内业界同仁达成共识,有朝一日,可以共同推动由中国人制定的开放工业以太网实时数据传输标准,到那个时候,这个自动化的行业,才能因开放的标准而变得简单高效,四通八达。就脱离微软。


1、在控制领域中,系统往往由分散的各子系统构成;并且各子系统往往采用不同厂家的设备和方案。用户需要,将这些子系统集成,并架构统一的实时监控系统。 
  2、这样的实时监控系统需要解决分散子系统间的数据共享,各子系统需要统一协调相应控制指令。 
  3、再考虑到实时监控系统往往需要升级和调整。 
  4、就需要各子系统具备统一的开放接口。 
  5、OPC(OLE for Process Control) 规范正是这一思维的产物。 
  6、OPC 基于Microsoft公司的 Distributed interNet Application (DNA) 构架和 Component Object Model (COM) 技术的,根据易于扩展性而设计的。OPC规范定义了一个工业标准接口。 
  7、OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。 
  8、OPC定义了一个开放的接口,在这个接口上,基于PC的软件组件能交换数据。它是基于Windows的OLE——对象链接和嵌入、COM——部件对象模型(Component Object Model)和DCOM——分布式COM(Distributed COM)技术。因而,OPC为自动化层的典型现场设备连接工业应用程序和办公室程序提供了一个理想的方法。
  OPC应用领域
  1、工控解决方案用户 
  2、楼控解决方案用户 
  3、工控解决方案厂商 
  4、楼控解决方案厂商 
  5、工控解决方案集成商 
  6、楼控解决方案集成商 
  7、 All Automation Fields 
  OPC是为了连接数据源(OPC服务器)和数据的使用者(OPC应用程序)之间的软件接口标准。数据源可以是PLC,DCS,条形码读取器等控制设备。随控制系统构成的不同,作为数据源的OPC服务器即可以是和OPC应用程序在同一台计算机上运行的本地OPC服务器,也可以是在另外的计算机上运行的远程OPC服务器。
  OPC接口既可以适用于通过网络把最下层的控制设备的原始数据提供给作为数据的使用者(OPC应用程序)的HMI(硬件监督接口)/SCADA(监督控制与数据采集),批处理等自动化程序,以至更上层的历史数据库等应用程序,也可以适用于应用程序和物理设备的直接连接。所以OPC接口是适用于很多系统的具有高厚度柔软性的接口标准。
  OPC解决了什么?
  OPC诞生以前,硬件的驱动器和与其连接的应用程序之间的接口并没有统一的标准。例如,在FA(FactoryAutomation)——工厂自动化领域,连接PLC(Programmable Logic Controller)等控制设备和SCADA/HMI软件,需要不同的FA网络系统构成。根据某调查结果,在控制系统软件开发的所需费用中,各种各样机器的应用程序设计占费用的7成,而开发机器设备间的连接接口则占了3成。此外,在PA(Process Automation)——过程自动化领域,当希望把分布式控制系统(DCS——Distributed Control System)中所有的过程数据传送到生产管理系统时,必须按照各个供应厂商的各个机种开发特定的接口,例如,利用C语言DLL(动态链路数据库)连接的DDE(动态数据交换)服务器或者利用FTP(文件传送协定)的文本等设计应用程序。如由4种控制设备和与其连接的监视、趋势图以及表报3种应用程序所构成的系统时,必须花费大量时间去开发分别对应设备A,B,C,D的监视,趋势图以及表报应用程序的接口软件共计要用12种驱动器。同时由于系统中共存各种各样的驱动器,也使维护运转环境的稳定性和信赖性更加困难。
  而OPC是为了不同供应厂商的设备和应用程序之间的软件接口标准化,使其间的数据交换更加简单化的目的而提出的。作为结果,从而可以向用户提供不依靠于特定开发语言和开发环境的可以自由组合使用的过程控制软件组件产品。
  利用OPC的系统,是由按照应用程序(客户程序)的要求提供数据采集服务的OPC服务器,使用OPC服务器所必需的OPC接口,以及接受服务的OPC应用程序所构成。OPC服务器是按照各个供应厂商的硬件所开发的,使之可以吸收各个供应厂商硬件和系统的差异,从而实现不依存于硬件的系统构成。同时利用一种叫做Variant的数据类型,可以不依存于硬件中固有数据类型,按照应用程序的要求提供数据格式。
  利用OPC使接口标准化可以构成如图5所示的系统。从图5可此看出,用户可以不依存于设备A,B,C,D的内部结构及它的供应厂商,来选用监视,趋势图以及表报应用程序。

你可能感兴趣的:(OPC协议见解)