OPC技术的简介,第1张

COM是Component Object Model的缩写,是所有OLE机制的基础。COM是一种为了实现与编程语言无关的对象而制定的标准,该标准将Windows下的对象定义为独立单元,可不受程序限制地访问这些单元。这种标准可以使两个应用程序通过对象化接口通讯,而不需要知道对方是如何创建的。例如,用户可以使用C++语言创建一个Windows对象,它支持一个接口,通过该接口,用户可以访问该对象提供的各种功能,用户可以使用Visual Basic,C,Pascal,Smalltalk或其它语言编写对象访问程序。在Windows NT40操作系统下,COM规范扩展到可访问本机以外的其它对象,一个应用程序所使用的对象可分布在网络上,COM的这个扩展被称为DCOM(Distributed COM)。

通过DCOM技术和OPC标准,完全可以创建一个开放的、可互操作的控制系统软件。OPC采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。 由OPC Task Force制定的OPC(OLE for Process Control)规范于1996年8月正式诞生了,随着1997年2月Microsoft公司推出Windows95支持的DCOM技术,1997年9月新成立的OPC Foundation对OPC规范进行修改,增加了数据访问等一些标准,OPC规范得到了进一步的完善。

“OPC 基于Microsoft公司的 Distributed interNet Application (DNA) 构架和 Component Object Model (COM) 技术的,根据易于扩展性而设计的。OPC规范定义了一个工业标准接口,这个标准使得COM技术适用于过程控制和制造自动化等应用领域。”OPC 基础委员会主席Dave Rehbein是这样描述的

OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。

应用程序与OPC服务器之间必须有OPC接口,OPC规范提供了两套标准接口:Custom标准接口,OLE自动化标准接口。通常在系统设计中采用OLE自动化标准接口。 OLE自动化标准接口,及采用OLE自动化技术进行调用,其技术为上节所述的OLE自动化技术。OLE自动化标准接口定义了以下三层接口,依次呈包含关系。

OPC Server:OPC启动服务器,获得其他对象和服务的起始类,并用于返回OPC Group类对象;

OPC Group:存储由若干OPC Item组成的Group信息,并用于返回OPC Item类对象。

OPC Item:存储具体Item 的定义、数据值、状态值等信息。

由于OPC规范基于OLE/COM技术,同时OLE/COM的扩展远程OLE自动化与DCOM技术支持TCP/IP等多种网络协议,因此可以将OPC客户、服务器在物理上分开,分布于网络不同节点上。

OPC规范可以应用在许多应用程序中,如它们可以应用于从SCADA 或者DCS系统的物理设备中获取原始数据的最低层,它们同样可以应用于从SCADA 或者DCS系统中获取数据到应用程序中。实际上,OPC设计的目的就是从网络上某节点获取数据。图422OPC的客户/服务器关系图同样描述了OPC在SCADA系统的应用。 在进行新型微机远动系统的研制中,各个计算机以及各个模块的数据交换应该按照OPC规范进行。这样做有以下好处:

OPC规范以OLE/DCOM为技术基础,而OLE/DCOM支持TCP/IP等网络协议,因此可以将各个子系统从物理上分开,分布于网络的不同节点上。

OPC按照面向对象的原则,将一个应用程序(OPC服务器)作为一个对象封装起来,只将接口方法暴露在外面,客户以统一的方式去调用这个方法,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。

OPC实现了远程调用,使得应用程序的分布与系统硬件的分布无关,便于系统硬件配置以及,使得系统的应用范围更广。

采用OPC规范,便于系统的组态化,将系统复杂性大大简化,可以大大缩短软件开发周期,提高软件运行的可靠性和稳定性,便于系统的升级与维护。

OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而实现系统的开放性,易于实现与其它系统的接口。

首先声明,是zz的,我对原文的观点是:分布式系统的规范不是那么容易搞出来的。所以OPC-DA暂时是不可替代的,OPC-XMLDA是跨防火墙的新技术,但是实时性差一点。这篇文章的出处是另一篇批评opc的文章的评论。(原文的链接是http://blogcechinamagcom/sup_zoux/9284/messageaspx#3648,被评论的文章标题是OPC——资本和崇洋豢养的病态协议)zz文章如下:

楼主似乎对OPC相当的熟悉,但似乎又不是很懂OPC。

首先OPC是一种协议,OPC协议里只是定义了接口,OPC的不好是由于他建立在了DCOM的基础之上,大多数的诟病来源于DCOM本身而不是OPC协议本身,至少这篇文章对OPC的不满也几乎都来源于DCOM。那么楼主更应该骂微软,或是OPC基金会妥协与微软,而不是OPC协议本身。楼主是希望把OPC协议制定成为像modbus之类的协议,还是提出要建立一套分布式框架替代DCOM呢。这两者完全不是一个层面上的东西。如果是前者,我劝楼主应该站在更高的层次上,而不是盲目的准备去做无用功,如果是后者本人倒是颇感兴趣,本人才疏学浅,分布式框架只知道DCOM 、Cobra 、JMI、Net Remoting、SOAP。其中JMI和Net Remoting目前还是依赖于平台,而Cobra则是看起来很美,SOAP像是以后的发展方向,目前OPC 30协议已经是基于SOAP的了,性能问题导致他还不能大规模推广。

第二,OPC协议存在也有不少年头了,站在现在的观点对一个陈旧的东西妄加批评似乎有点过分和小肚鸡肠。就像我们不能现在说DDE是一种多么简陋的IPC技术啊,毕竟他是一个时代的产物,在OPC产生的年代,windows上的主流技术难道不是DCOM吗,除非一开始就脱离微软。

第三,“资本和崇洋豢养”这个词显得楼主太过于愤青,如果说用OPC就是“资本和崇洋豢养”,那么我们绝大多数用电脑的人都是“资本和崇洋豢养”,因为我们用的windows、linux、unix、solaris都是洋人给我们的,假如有一天真的有一种真正好的替代OPC的协议产生我第一个支持,如果目前还没有出来,还是希望楼主遵循“多谈些问题,少谈些主义”的原则,真正的能够为中国的自动化协议做些贡献。

最后送给楼主一句话,“师夷长技以治夷”,治夷之前是师夷而不是鄙夷

原文如下:

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和Web20技术蒙住双眼。

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

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

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

你问的这几个问题可以出一本书了 呵呵

1\现场仪表的知识讲述:挑几个讲讲就行

这个比较广泛 可以讲 压力\流量\液位\物位

具体压力有压力变送器\绝压变送器\差压变送器\高静压\表压\远传==

流量有电磁 \差压\超声波==

还有压力表\热电阻\热电偶\执行器(气动\电动)\电动门(可调\不可调)\分析仪表=====

2 DCS组态软件这个也有好多

组态软件:一般英文简称有三种分别为HMI/MMI/SCADA,对应全称为Human and Machine Interface/Man and Machine Interface /Supervisory Control and Data Acquisition,中文翻译为:人机界面/监视控制和数据采集 软件。目前组态软件的发展迅猛,已经扩展到企业信息管理系统,管理和控制一体化,远程诊断和维护以及在互联网上的一系列的数据整合。

1 组态软件产生的背景

“组态”的概念是伴随着集散型控制系统(Distributed Control System简称DCS)的出现才开始被广大的生产过程自动化技术人员所熟知的。在工业控制技术的不断发展和应用过程中,PC(包括工控机)相比以前的专用系统具有的优势日趋明显。这些优势主要体现在:PC技术保持了较快的发展速度,各种相关技术已臻成熟;由PC构建的工业控制系统具有相对较低的拥有成本;PC的软件资源和硬件资丰富,软件之间的互操作性强;基于PC的控制系统易于学习和使用,可以容易地得到技术方面的支持。在PC技术向工业控制领域的渗透中,组态软件占据着非常特殊而且重要的地位。

组态软件是指一些数据采集与过程控制的专用软件,它们是在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。组态软件应该能支持各种工控设备和常见的通信协议,并且通常应提供分布式数据管理和网络功能。对应于原有的HMI(人机接口软件,Human Machine Interface)的概念,组态软件应该是一个使用户能快速建立自己的HMI的软件工具,或开发环境。在组态软件出现之前,工控领域的用户通过手工或委托第三方编写HMI应用,开发时间长,效率低,可靠性差;或者购买专用的工控系统,通常是封闭的系统,选择余地小,往往不能满足需求,很难与外界进行数据交互,升级和增加功能都受到严重的限制。组态软件的出现,把用户从这些困境中解脱出来,可以利用组态软件的功能,构建一套最适合自己的应用系统。随着它的快速发展,实时数据库、实时控制、SCADA、通讯及联网、开放数据接口、对I/O设备的广泛支持已经成为它的主要内容,随着技术的发展,监控组态软件将会不断被赋予新的内容。

2 组态软件在我国的发展及国内外主要产品介绍

组态软件产品于80年代初出现,并在80年代末期进入我国。但在90年代中期之前,组态软件在我国的应用并不普及。究其原因,大致有以下几点:

①国内用户还缺乏对组态软件的认识,项目中没有组态软件的预算,或宁愿投入人力物力针对具体项目做长周期的繁冗的上位机的编程开发,而不采用组态软件;

②在很长时间里,国内用户的软件意识还不强,面对价格不菲的进口软件(早期的组态软件多为国外厂家开发),很少有用户愿意去购买正版。

③当时国内的工业自动化和信息技术应用的水平还不高,组态软件提供了对大规模应用、大量数据进行采集、监控、处理并可以将处理的结果生成管理所需的数据,这些需求并未完全形成。

随着工业控制系统应用的深入,在面临规模更大、控制更复杂的控制系统时,人们逐渐意识到原有的上位机编程的开发方式。对项目来说是费时费力、得不偿失的,同时,MIS(管理信息系统,Management Information System)和CIMS(计算机集成制造系统,Computer Integrated Manufacturing System)的大量应用,要求工业现场为企业的生产、经营、决策提供更详细和深入的数据,以便优化企业生产经营中的各个环节。因此,在1995年以后,组态软件在国内的应用逐渐得到了普及。下面就对几种组态软件分别进行介绍。

①InTouch:Wonderware的InTouch软件是最早进入我国的组态软件。在80年代末、90年代初,基于Windows31的InTouch软件曾让我们耳目一新,并且InTouch提供了丰富的图库。但是,早期的InTouch软件采用DDE方式与驱动程序通信,性能较差,最新的InTouch70版已经完全基于32位的Windows平台,并且提供了OPC支持。

②Fix:Intellution公司以Fix组态软件起家,1995年被爱默生收购,现在是爱默生集团的全资子公司,Fix6x软件提供工控人员熟悉的概念和操作界面,并提供完备的驱动程序(需单独购买)。Intellution将自己最新的产品系列命名为iFiX,在iFiX中,Intellution提供了强大的组态功能,但新版本与以往的6x版本并不完全兼容。原有的Script语言改为VBA(Visual Basic For Application),并且在内部集成了微软的VBA开发环境。遗憾的是,Intellution并没有提供61版脚本语言到VBA的转换工具。在iFiX中,Intellution的产品与Microsoft的操作系统、网络进行了紧密的集成。Intellution也是OPC(OLE for Process Control)组织的发起成员之一。iFiX的OPC组件和驱动程序同样需要单独购买。

③Citech:CiT公司的Citech也是较早进入中国市场的产品。Citech具有简洁的操作方式,但其操作方式更多的是面向程序员,而不是工控用户。Citech提供了类似C语言的脚本语言进行二次开发,但与iFix不同的是,Citech的脚本语言并非是面向对象的,而是类似于C语言,这无疑为用户进行二次开发增加了难度。

④WinCC:Simens的WinCC也是一套完备的组态开发环境,Simens提供类C语言的脚本,包括一个调试环境。WinCC内嵌OPC支持,并可对分布式系统进行组态。但WinCC的结构较复杂,用户最好经过Simens的培训以掌握WinCC的应用。

⑤组态王:组态王是国内第一家较有影响的组态软件开发公司(更早的品牌多数已经湮灭)。组态王提供了资源管理器式的操作主界面,并且提供了以汉字作为关键字的脚本语言支持。组态王也提供多种硬件驱动程序。

⑥Controx(开物):华富计算机公司的Controx2000是全32位的组态开发平台,为工控用户提供了强大的实时曲线、历史曲线、报警、数据报表及报告功能。作为国内最早加入OPC组织的软件开发商,Controx内建OPC支持,并提供数十种高性能驱动程序。提供面向对象的脚本语言编译器,支持ActiveX组件和插件的即插即用,并支持通过ODBC连接外部数据库。Controx同时提供网络支持和WevServer功能。

⑦ForceControl(力控):大庆三维公司的ForceControl(力控)从时间概念上来说,力控也是国内较早就已经出现的组态软件之一。只是因为早期力控一直没有作为正式商品广泛推广,所以并不为大多数人所知。大约在93年左右,力控就已形成了第一个版本,只是那时还是一个基于DOS和VMS的版本。后来随着Windows31的流行,又开发出了16位Windows版的力控。但直至Windows95版本的力控诞生之前,他主要用于公司内部的一些项目。32位下的10版的力控,在体系结构上就已经具备了较为明显的先进性,其最大的特征之一就是其基于真正意义的分布式实时数据库的三层结构,而且其实时数据库结构可为可组态的活结构。在1999~2000年期间,力控得到了长足的发展,最新推出的20版在功能的丰富特性、易用性、开放性和I/O驱动数量,都得到了很大的提高。在很多环节的设计上,力控都能从国内用户的角度出发,即注重实用性,又不失大软件的规范。另外,公司在产品的培训、用户技术支持等方面投入了较大人力,相信在较短时间内,力控软件产品将在工控软件界形成巨大的冲击。

其他常见的组态软件还有GE的Cimplicity,Rockwell的RsView,NI的LookOut,PCSoft的Wizcon以及国内一些组态软件通态软件公司的MCGS,也都各有特色。

3 组态软件的功能特点发展方向

目前看到的所有组态软件都能完成类似的功能:比如,几乎所有运行于32位Windows平台的组态软件都采用类似资源浏览器的窗口结构,并且对工业控制系统中的各种资源(设备、标签量、画面等)进行配置和编辑;都提供多种数据驱动程序;都使用脚本语言提供二次开发的功能,等等。但是,从技术上说,各种组态软件提供实现这些功能的方法却各不相同。从这些不同之处,以及PC技术发展的趋势,可以看出组态软件未来发展的方向。

31数据采集的方式

大多数组态软件提供多种数据采集程序,用户可以进行配置。然而,在这种情况下,驱动程序只能由组态软件开发商提供,或者由用户按照某种组态软件的接口规范编写,这为用户提出了过高的要求。由OPC基金组织提出的OPC规范基于微软的OLE/DCOM技术,提供了在分布式系统下,软件组件交互和共享数据的完整的解决方案。在支持OPC的系统中,数据的提供者作为服务器(Server),数据请求者作为客户(Client),服务器和客户之间通过DCOM接口进行通信,而无需知道对方内部实现的细节。由于COM技术是在二进制代码级实现的,所以服务器和客户可以由不同的厂商提供。在实际应用中,作为服务器的数据采集程序往往由硬件设备制造商随硬件提供,可以发挥硬件的全部效能,而作为客户的组态软件可以通过OPC与各厂家的驱动程序无缝连接,故从根本上解决了以前采用专用格式驱动程序总是滞后于硬件更新的问题。同时,组态软件同样可以作为服务器为其他的应用系统(如MIS等)提供数据。OPC现在已经得到了包括Interllution、Simens、GE、ABB等国外知名厂商的支持。随着支持OPC的组态软件和硬件设备的普及,使用OPC进行数据采集必将成为组态中更合理的选择。

32脚本的功能

脚本语言是扩充组态系统功能的重要手段。因此,大多数组态软件提供了脚本语言的支持。具体的实现方式可分为三种:一是内置的类C/Basic语言;二是采用微软的VBA的编程语言;三是有少数组态软件采用面向对象的脚本语言。类C/Basic语言要求用户使用类似高级语言的语句书写脚本,使用系统提供的函数调用组合完成各种系统功能。应该指明的是,多数采用这种方式的国内组态软件,对脚本的支持并不完善,许多组态软件只提供IF…THEN…ELSE的语句结构,不提供循环控制语句,为书写脚本程序带来了一定的困难。微软的VBA是一种相对完备的开发环境,采用VBA的组态软件通常使用微软的VBA环境和组件技术,把组态系统中的对象以组件方式实现,使用VBA的程序对这些对象进行访问。由于VisualBasic是解释执行的,所以VBA程序的一些语法错误可能到执行时才能发现。而面向对象的脚本语言提供了对象访问机制,对系统中的对象可以通过其属性和方法进行访问,比较容易学习、掌握和扩展,但实现比较复杂。

33组态环境的可扩展性

可扩展性为用户提供了在不改变原有系统的情况下,向系统内增加新功能的能力,这种增加的功能可能来自于组态软件开发商、第三方软件提供商或用户自身。增加功能最常用的手段是ActiveX组件的应用,目前还只有少数组态软件能提供完备的ActiveX组件引入功能及实现引入对象在脚本语言中的访问。

34组态软件的开放性

随着管理信息系统和计算机集成制造系统的普及,生产现场数据的应用已经不仅仅局限于数据采集和监控。在生产制造过程中,需要现场的大量数据进行流程分析和过程控制,以实现对生产流程的调整和优化。现有的组态软件对大部分这些方面需求还只能以报表的形式提供,或者通过ODBC将数据导出到外部数据库,以供其他的业务系统调用,在绝大多数情况下,仍然需要进行再开发才能实现。随着生产决策活动对信息需求的增加,可以预见,组态软件与管理信息系统或领导信息系统的集成必将更加紧密,并很可能以实现数据分析与决策功能的模块形式在组态软件中出现。

35对Internet的支持程度

现代企业的生产已经趋向国际化、分布式的生产方式。Internet将是实现分布式生产的基础。组态软件能否从原有的局域网运行方式跨越到支持Internet,是摆在所有组态软件开发商面前的一个重要课题。限于国内目前的网络基础设施和工业控制应用的程度,笔者认为,在较长时间内,以浏览器方式通过Internet对工业现场的监控,将会在大部分应用中停留于监视阶段,而实际控制功能的完成应该通过更稳定的技术,如专用的远程客户端、由专业开发商提供的ActiveX控件或Java技术实现。

36组态软件的控制功能

随着以工业PC为核心的自动控制集成系统技术的日趋完善和工程技术人员的使用组态软件水平的不断提高,用户对组态软件的要求已不像过去那样主要侧重于画面,而是要考虑一些实质性的应用功能,如软件PLC,先进过程控制策略等。

软PLC产品是基于PC机开放结构的控制装置,它具有硬PLC在功能、可靠性、速度、故障查找等方面的特点,利用软件技术可将标准的工业PC转换成全功能的PLC过程控制器。软PLC综合了计算机和PLC的开关量控制、模拟量控制、数学运算、数值处理、通信网络等功能,通过一个多任务控制内核,提供了强大的指令集、快速而准确的扫描周期、可靠的操作和可连接各种I/O系统及网络的开放式结构。所以可以这样说,软PLC提供了与硬PLC同样的功能,而同时具备了PC环境的各种优点。目前,国际上影响比较大的产品有:法国CJ International公司的ISaGRAF软件包、PCSoft International公司的WinPLC、美国Wizdom Control Intellution公司的Paradym-31、美国Moore Process Automation Solutions公司ProcessSuite、美国Wonder ware Controls公司的InControl、SoftPLC公司的SoftPLC等。国内推出软PLC产品的组态软件还不见有,国内组态软件要想全面超过国外的竞争对手,就必须搞创新,推出类似功能的产品。

随着企业提出的高柔性、高效益的要求,以经典控制理论为基础的控制方案已经不能适应,以多变量预测控制为代表的先进控制策略的提出和成功应用之后,先进过程控制受到了过程工业界的普遍关注。先进过程控制(Advanced Process Control,APC)是指一类在动态环境中,基于模型、充分借助计算机能力,为工厂获得最大理论而实施的运行和控制策略。先进控制策略主要有:双重控制及阀位控制、纯滞后补偿控制、解耦控制、自适应控制、差拍控制、状态反馈控制、多变量预测控制、推理控制及软测量技术、智能控制(专家控制、模糊控制和神经网络控制)等,尤其智能控制已成为开发和应用的热点。目前,国内许多大企业纷纷投资,在装置自动化系统中实施先进控制。国外许多控制软件公司和DCS厂商都在竞相开发先进控制和优化控制的工程软件包。据资料报道,一个乙烯装置投资163万美元实施先进控制,完成后预期可获得效益600万美元/年。从上可以看出能嵌入先进控制和优化控制策略的组态软件必将受到用户的极大欢迎。

4结束语

用户的需求促使技术不断进步,在组态软件上这种趋势体现得尤为明显。未来的组态软件将是提供更加强大的分布式环境下的组态功能、全面支持ActiveX、扩展能力强、支持OPC等工业标准、控制功能强、并能通过Internet进行访问的开放式系统。

HMI是Human Machine Interface的简称。

HMI其实广义的解释就是“使用者与机器间沟通、传达及接收信息的一个接口”。

举个例子来说,在一座工厂里头,我们要搜集工厂各个区域的温度、湿度以及工厂中机器的状态

等等的信息透过一台主控器监视并记录这些参数,并在一些意外状况发生的时候能够加以处理。

这便是一个很典型的SCADA/HMI的运用,一般而言,HMI系统必须有几项基本的能力:

实时的资料趋势显示——把撷取的资料立即显示在屏幕上。

自动记录资料——自动将资料储存至数据库中,以便日后查看。

历史资料趋势显示——把数据库中的资料作可视化的呈现。

报表的产生与打印——能把资料转换成报表的格式,并能够打印出来。

图形接口控制——操作者能够透过图形接口直接控制机台等装置。

警报的产生与记录——使用者可以定义一些警报产生的条件,

比方说温度过度或压力超过临界值,在这样的条件下系统会产生警报,通知作业员处理。

3 电气设备或电路出现故障进行检修时,一般应拉下电闸断电工作以保证安全。在某些情况下,需要带电检修作业时,维修人员应具有一定的带电维修基础知识.并注意以下安全事项:

1.带电检修要有人监护,万一发生意外事故.监护人可立即拔掉电源插座。或拉断刀闸开关。另外,监护人发现操作者有可能触及带电体时,可及时提醒.以防造成触电事故。

2.带电工作应使用带绝缘把柄的工具.站立在干燥的木板、凳子、竹梯等绝缘物上进行,并戴上线手套,穿上胶鞋或塑料鞋。注意不要站在铁、铝等金属制作的梯子、凳子上工作。

3.带电检修时.一般不要带负载工作,即操作前应把负载(如家用电器、照明灯等)的电源开关关闭。

4.检修时,人体不得同时接触到两根线头,养成单手操作的习惯。另一只手可戴上手套,握住设备的绝缘部分或做一些辅助工作。

5.检修时。注意人体不要接触墙壁、金属支架等,头部不要碰触屋顶天花板或其他导电物体,以免造成触电事故。

6.站立的梯子、凳子等要安置稳固,为防止上面作业的人滑跌下来,下面要有人帮忙扶好,但注意不要接触检修人员的身体,以免造成二入的触电事故。

7.处于高处的检修人员需地面他人传递工具用品时.应将手离开导线或带电体,不得在手握导线或接触带电体时传接工具,以免造成二人同时触电。

一准备工作:

下载opc基金会的OPC Proxy DLL然后按照说明进行安装。这些动态库是opc程序运行所必须的。

1 将下列文件拷贝至要运行OPC服务器和OPC客户端的机器上的SYSTEM32目录下

copy opcproxydll C:\WINDOWS\system32

copy opccomn_psdll C:\WINDOWS\system32

copy opc_aepsdll C:\WINDOWS\system32

copy opchda_psdll C:\WINDOWS\system32

copy aprxdistexe C:\WINDOWS\system32

copy opcenumexe C:\WINDOWS\system32

2 注册这些 dll 文件

REGSVR32 opcproxydll

REGSVR32 opccomn_psdll

REGSVR32 opc_aepsdll

REGSVR32 opchda_psdll

3 如果在windows 系统(\WINDOWS \system32)目下不存在actxprxydll,运行aprxdistexe

4 安装 opcenumexe

opcenum /regserver

二opcserver开发

1 新建vc工程。比如建一个控制台工程。在工程中包含如下头文件

#include "opcdah"

#include "opc_aeh"

#include "WTOPCsvrAPIh"

#include "WtOPCsvrEXTapih"

以上头文件在例子程序中都能找到,拷贝到自己的工程下。

WTOPCsvrAPIh是开发包动态库提供的导出函数文件。里面有每个函数的具体说明,调用的时候看一下说明。

2 在cpp中定义一个GUID这个guid是用来标识opcserver的唯一id可以通过操作系统的工具生成,也可以编一个。格式如下。

const GUID

CLSID_OPCSimSvr = {0x99b8f472, 0xc037, 0x11d2, {0x80, 0xb8, 0x0, 0x60, 0x97, 0x58, 0x58, 0xbe}};

3 在工程中加入对WtOPCSvr动态库的连接。

WTOPCsvr动态库的有关文件都在之前的例子包里面能找到。

WTOPCsvrlib WTOPCsvrdll是对应lib和dll

4 初始化

(1)调用UpdateRegistry()函数完成注册。下面是一个调用参考例子代码

BOOL COPCSimSvrApp::InitInstance()

{

TCHAR szTokens[] = _T("-/ ");

CString HelpPath;

CString SvrName, SvrDescrip;

int i;

HelpPath = AfxGetApp()->m_pszHelpFilePath;

i = HelpPathReverseFind('\\');

HelpPath = HelpPathLeft(i+1);

HelpPath += "OPCSIMSVREXE";

//

// Self-Registration code

// (look for cmdline options to register & unregister server)

//

SvrName = "WinTECHOPCServer";

SvrDescrip = "WinTECH Software OPC Server Simulator";

CString tempCmdLine(m_lpCmdLine);

LPTSTR lpszToken = _tcstok(tempCmdLineGetBuffer(1), szTokens);

while (lpszToken != NULL)

{

if (_tcsicmp(lpszToken, _T("UnregServer"))==0)

{

UnregisterServer ((BYTE )&CLSID_OPCSimSvr, SvrName);

return (FALSE);

}

else if (_tcsicmp(lpszToken, _T("RegServer"))==0)

{

UpdateRegistry ((BYTE )&CLSID_OPCSimSvr,

SvrName,

SvrDescrip,

HelpPath);

return (FALSE);

}

lpszToken = _tcstok(NULL, szTokens);

}

(2)调用InitWTOPCsvr完成开发包dll初始化。

以上两个步骤不可颠倒。

5 创建item

这里的item是服务器所有的item,这些item通过opc库户端能浏览到。创建item的函数为CreateTag()

Opc有两种地址空间形式:扁平和多层结构的。

比如调用创建的点为item1、item2、item3这类结构就是扁平的。各个点类似与文件系统中的文件。

比如调用创建的点为testitem1、testitem2、testitem3这种点名,开发包会自动形成多层的点结构。Test类似与文件系统中的文件夹,item类似与文件系统中的文件夹下的文件。扁平式和多层结构在客户端浏览点名时体现。

多层结构的点名之间默认是用“”分隔。为了简单可以将我们的opcserver设计为扁平结构。

创建一个点时会返回一个handle用来标识这个点。我们程序需要自己建立这个handle和数据库中保存设备实时值的对应关系。这部分可以参考例子代码。

6 建立一个定时器采集设备数据

定时从数据库中取得各个handle对应的item的值。然后比较各个item的值是否和上一次读取的值有变化,如果有变化调用UpdateTagToList放入对应的队列。开发包会自动将变化的值送到客户端。

大致流程为

(1) 从数据库中采集一遍所有点的实时值。

(2) 调用StartUpdateTags()

(3) 循环读取每个item在数据库中的数据,和上一次读取到的进行比较。如果有变化调用UpdateTagToList()

(4) 最用调用EndUpdateTags()完成所有item的更新。

7 客户端控制

客户端写tag的值的时候,在opcserver是通过一个回调函数来响应的。

在服务器端必须调用EnableWriteNotification()来指定写值的回调函数。回调函数的格式为:

typedef VOID (CALLBACK WRITENOTIFYPROC)(HANDLE, VARIANT, DWORD);

然后在回调函数内部实现从HANDLE指定的tag写到具体的控制设备对应的变量中。

8 其它常用函数

RequestDisconnect()一般在opcserver在关闭时调用,用来通知客户端opcserver自己要关闭。

NumbrClientConnections()用来计算当前有多少个客户端连接到了opcserver

UninitWTOPCsvr()程序退出时清理

SetVendorInfo()设置厂商信息

三opc客户端测试

下面以本机opcquickclientexe为例说明服务器和客户端之间的应用关系。

1 运行opcquickclientexe

2 点击edit->new server connection 菜单。弹出server properties对话框。从中展开opc data access server version 20会浏览到本机安装的所有opcserver。选中我们自己开发的opcserver,点击确定。完成与服务器的连接

3 点击edit->new group 用默认值添加组。

4 点击edit->new item 弹出如下对话框。(下图是一个多层结构地址空间的例子,单层的更简单)选中左侧的某个父节点,右侧会显示出各个子tag。选中要向opcserver查询的tag,点击add leaves。然后点击ok

5 在客户端主界面上能看到刚才要查询的tag。它会自动跟随opcserver端数据的变化而变换。

6 右键要控制的tag,在菜单中选择同步写或者异步写(一般建议用异步,避免阻塞客户端的正常运行)。键入要写入的值。查看设备上是否动作。从而检验opcserver是否编写的正确。

 用户的建立及配置

在服务器计算机上建立一个用户,如OPCUser,可以是一般用户,服务器计算机在运行OPC服务器时必须以这个用户登录。

在服务器计算机上建立一个用户组,如OPCClients。

在OPC客户计算机中,建立OPCUser用户,口令也要与服务器上的一致,可以设为普通用户以保证安全。

在客户和服务器计算机上都建立ClientA、ClientB等用户,且密码一致。

在服务器计算机上将ClientA、ClientB等用户都加入到OPCClients组中。客户计算机用这些用户登录。

OPC服务器计算机的DCOM设置,运行dcomcnfg,进行如下设置:

默认属性:启用DCOM;

默认身份验证级别:连接

默认模拟级别:标识

至少要保证OPCClients组允许访问,也可放宽至Everyone;

                默认启动权限:至少保证允许INTERACTIVE用户调用;

                默认配置权限:一般情况下不需修改。

               默认协议:保证面向连接的TCP/IP在最上。

OPC服务器配置:

常规:身份验证级别为默认值;

位置:在这台计算机上运行;

安全性:使用默认的访问和启动权限,配置权限不要修改;

身份标识:交互式用户。

终结点:不修改。

 客户计算机的DCOM配置:为了保证OPC数据订阅等回调机制能正常运行,需要对客户计算机的DCOM权限进行配置。 默认属性、默认协议的配置和服务器端基本一致;默认安全机制只需要修改默认访问权限。保证允许OPCUser访问。也可放宽至Everyone。

系统设置

防火墙:

        对于安装了第三方防火墙软件的计算机,可尝试配置允许OPC客户及服务器程序通过,或直接停止防火墙服务。

        对于启用了操作系统(XP SP2、Server 2003等)自带防火墙的情况,可按OPC基金会提供的文档《Using OPC via DCOM with XP SP2》中描述的进行配置,或直接关闭防火墙。

        注意:客户、服务器计算机都要配置。

 

安全策略:(XP、Server 2003等)

        “控制面板 -> 管理工具 -> 本地安全策略 -> 本地策略 -> 安全选项”中,

        “网络访问:本地帐户的共享和安全模式”项设置为:

        “经典 - 本地用户以自己的身份验证”

注意事项:

连不通时首先检查网络是否正常;

用户密码不要设置为空。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » OPC技术的简介

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情