1 引言
山东招远招金集团是采、选、氰、冶综合配套的中型国家二级企业和国家金、银冶炼加工定点企业。计算机和自动化技术在招远矿冶过程中的应用尤其令人瞩目。其现有氰化处理能力已达到易选冶精矿400吨/日,复杂精矿100吨/日。本系统是一个大型的氰化车间,要采集数据的地点分布在整个厂区,而且数量也很多,在数据采集和传输方面需解决分布广,数量多的问题。为了解决这个问题,在传统的DCS系统上引进了现场总线技术,提出了基于现场总线PROFIBUS的DCS控制系统。 现场总线技术是当今工业自动化领域技术发展的热点,适用于现场仪表、控制系统和控制室之间的一种全分散、全数字化、智能、双向、互联、多点、多站的通讯系统。DCS技术是计算机技术、自动控制技术、通信技术和CRT显示技术竞相发展并紧密结合的产物,而通信技术在集散控制系统中占有重要地位。DCS是用分散的过程控制单元实现控制过程对象的目的,利用集中监视和操作管理单元来达到综合信息全面管理的目的。将过程控制单元(现场控制站)、监视操作单元(操作单元)和系统管理单元(工程师站)通过通讯网络构成一个完整的系统,从而实现分散控制集中管理的目的。
2 系统介绍
氰化工艺系统主要包括加料、磨矿、碱浸压滤、浸出、置换、浮选前压滤、综合回收、浮选尾矿压滤等几个主要工段,最终把金、银、铜、铅等分离出来;尾矿渣回收,用来提取其他非金属(硫等)。
本系统设有两个中央控制室,每个控制室CPU主站选用Siemens的Simatic S7-400的CPU414-2DP,每台CPU都有一个CP443-5通讯处理器,在正常情况下,CP443-5通讯处理器可以分担CPU-414-2DP的通讯任务,在非正常情况下,实现了系统的软冗余。上位机采用Simatic WinCC6.0作为上位监控软件。1#控制室400PLC主站配置6个ET200M子站。2#控制室400PLC主站配置2个ET200M子站。CPU414-2DP集成MPI通讯口和Profibus-DP通讯口,各子站与400PLC主站采用Profibus-DP[5]方式相连;同时400PLC主站通过MPI接口与上位机实现通讯。现场传感器的输出信号由各站信号模板采集、转化为相应的数字信号然后通过通讯模块送到400PLC主站,400PLC主站把各站送来的数据按要求进行各种运算、处理后通过MPI网络传到服务器。客户机和服务器之间通过OPC方式进行数据的传递。
3 OPC技术在本系统中的应用[1]
3.1 OPC概念意义
由于计算机和工控软硬件产品开发的渐进性与生命周期,今天的工控系统已经形成多厂商产品共存的异构环境。由于开发商的不同和设备、软件的不同,目前的各种自动化系统都设计了各自专用的接口,这样不同的开发商设计生产的产品就不能实现互相通信。而对集成大型自动化系统来说,在硬、软件组件的选择上受到很大的限制,不能利用现成的硬、软件资源,浪费了大量的劳动却不能保证所集成系统的质量。随着技术的发展,自动化系统要求实现大范围的信息共享及实时监控,因而对工业控制系统的开放性、快速性、安全性提出了越来越高的要求。正是这种应用需求的强烈驱使,由基金会OPC国际组织(OLE for Process Control)提出一种专门适用于工业控制过程的标准。OPC提供了访问工业控制中的站端数据的一种通用方式。按此标准设计自动化系统,可使不同厂家的产品实现通用化,使系统能够实现即插即用和无缝连接。
3.2 OPC技术原理
OPC是为了解决应用软件和各种设备驱动程序的通讯而产生的一项工业技术规范和标准。它采用客户/服务器体系,基于Microsoft的OLE/COM和DCOM(Distributed Component Object Model)技术,为硬件厂商和软件开发者提供了一套标准的接口。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性。OPC是一种标准接口,它能被连接到I/O装置、PLC(Prog- rammable Logic Control)、现场总线、组态软件等,该技术提供一种即插即用的硬、软件组件,用户很容易将它们集成为完整的自动化系统。利用OPC技术开发标准的OPC服务器来代替过去专用的I/O设备驱动器软件,并将各种应用设计成OPC的客户端,这样在OPC客户和OPC服务器之间就可进行通信和互操作,OPC硬件和软件制造商就能够在互联问题上花费很少的时间而将大量的精力放在应用问题上,从而减少大量的劳动。
OPC可以充当现场设备、数据传输和向上层的应用程序的接口。当作为下层现场设备的标准接口时它代替传统的“I/O驱动器”来完成与现场设备的通信。当OPC服务器向上层应用程序提供标准接口时,使上层的应用程序能够取到OPC服务器中的数据,从而向上实现互联,如图1所示。
图1 采用OPC前(1)后(2)的通信状况
(1) 优越性
基于先进的COM技术的OPC技术在过程控制中广泛使用是顺理成章的事情。
●系统开放
采用OPC的系统,是完全开放的系统。尽管各个厂家的硬件设备和系统有所不同,但只要采用统一的OPC接口,就可容易的接入,因此用OPC构成的系统是完全开放的系统;
●成本低
一是硬件可以选择价廉物美的产品,二是软件开发费用大幅度降低。三是人员的培训期短,费用低;
●构成容易使用灵活
用户可以根据自己的情况组成理想的系统,既便于组成新的系统,也便于原有系统的改造;
●即插即用
即插即用在设备制造厂和监控系统的销售商都支持OPC的场合。若用OPC构成一个监控系统的话,可以根据项目自身的特点选用最佳的设备、远程终端和监控组态软件,构成最合适的系统。图2是采用OPC接口的系统结构。
图2 采用OPC接口的系统结构
(2) OPC服务器的组成
OPC服务器由3类对象组成,相当于3种层次上的接口:服务器(server)、组(group)和数据项(item)。
服务器对象包含服务器的所有信息,同时也是组对象的容器。一个服务器对应于一个OPC Server,即一种设备的驱动程序。在一个Server中,可以有若干个组。
组对象包含本组的所有信息,同时包含并管理OPC数据项。OPC组对象为客户提供了组织数据的一种方法。组是应用程序组织数据的一个单位。客户可对其进行读写,还可设置客户端的数据更新速率。当服务器缓冲区内数据发生改变时,OPC Server将向客户发出通知,客户得到通知后再进行必要的处理,而无需浪费大量的时间进行查询。OPC规范定义了2种组对象:公共组(或称全局组,public)和局部组(或称局域组、私有组,local)。公共组由多个客户共有,局部组只隶属于一个OPC客户。
数据项是读写数据的最小逻辑单位,一个数据项与一个具体的位号相连。数据项不能独立于组存在,必须隶属于某一个组。组与项的关系如图所示。在每个组对象中,可以加入多个OPC数据项(Item)。
OPC数据项是服务器端定义的对象,通常指向设备的一个寄存器单元。OPC客户对设备寄存器的操作都是通过其数据项来完成的。通过定义数据项,OPC规范尽可能地隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强。OPC数据项并不提供对外接口,客户不能直接对其进行操作,所有操作都是通过组对象进行的。
应用程序作为OPC接口的Client方,硬件驱动程序作为OPC接口中的Server方。每一个OPC Client应用程序都可以连接若干个OPC Server,每一个硬件驱动程序可以为若干个应用程序提供数据。
(3) OPC的报警(alarm)和事件(event)
报警和事件处理机制增强了OPC客户处理异常的能力。服务器在工作过程中可能出现异常,此时,OPC客户可通过报警和事件处理接口得到通知,并能通过该接口获得服务器的当前状态。在很多场合,报警和事件的含义并不加以区分,两者也经常互换使用。从严格意义上讲,两者含义略有差别。
依据OPC规范,报警是一种异常状态,是OPC服务器或服务器的一个对象可能出现的所有状态中的一种特殊情况。例如,服务器上标记为FC101的一个单元可能有如下状态:高出警戒、严重高出警戒、正常、低于警戒、严重低于警戒。除了正常状态外,其他状态都视为报警状态。
事件则是一种可以检测到的出现的情况,这种情况或来自OPC客户,或来自OPC服务器,也可能来自OPC服务器所代表的设备,通常都有一定的物理意义。事件可能与服务器或服务器的一个对象的状态有关,也可能毫无关系。如高出警戒和正常状态的转换事件和服务器的某个对象的状态有关,而操作设备、改变系统配置以及出现系统错误等事件和对象状态就无任何关系。
(4) OPC的接口方式
OPC规范提供了2套接口方案,即COM接口和自动化接口。COM接口效率高,通过该接口,客户能够发挥OPC服务器的最佳性能,采用C++语言的客户一般采用COM接口方案;自动化接口使解释性语言和宏语言访问OPC服务器成为可能,采用VB语言的客户一般采用自动化接口。自动化接口使解释性语言和宏语言编写客户应用程序就很简单,然而自动化运行时需进行类型检查,这一点则大大牺牲了程序的运行速度。
(5) OPC的数据访问方式
OPC服务器本身就是一个可执行程序,该程序以设定的速率不断地同物理设备进行数据交互。服务器内有一个数据缓冲区,其中存有最新的数据值:数据质量戳和时间戳。时间戳表明服务器最近一次从设备读取数据的时间。服务器对设备寄存器的读取是不断进行的,时间戳也在不断更新。即使数据值和质量戳都没有发生变化,时间戳也会进行更新。
客户既可从服务器缓冲区读取数据,又可直接从设备读取数据,从设备直接读取数据速度会慢一些。一般只有在故障诊断或极特殊的情况下才会采用。
4 OPC技术在本系统中的应用
4.1 OPC应用设计
WinCC是西门子公司在自动化领域采用先进的技术与微软公司在共同开发的居于世界领先地位的工控综合软件平台。它集成的OPC服务器使得过程数据可由其它应用程序(OPC客户机)访问。
统计办公室的客户机,通过厂区的局域网与服务器相连。本项目在客户机上开发一个简单的WinCC应用程序,由于接下来用VB开发的应用程序中也要求显示监控画面,所以我们就没有在该客户机上的WinCC应用程序中建立监控画面,而仅仅只是利用WinCC内置的OPC进行数据的传递,把服务器上的实时数据读到该客户机上,方便VB应用程序的读取。由于通讯程序是WinCC内部集成的,所以省去了很多编程工作,极大的推动了工程的进展。具体的操作:在WinCC Explorer窗口中,右击Tag Management选择Add New Driver,在弹出的对话框中选择OPC.CHN打开,在Tag Management目录下就会添加OPC目录。打开OPC目录,下面会出现OPC GROUPS,右击它选择System Parameter,弹出OPC Item Managr对话框,点击computer按钮在弹出的对话框中输入服务器的计算机名,完成搜索,在服务器上打开的文件夹中,选择要读取的变量,完成OPC连接工作,配置如图3所示。
图3 OPC连接
工程开始时,我们也想省去这个中间环节,不借助WinCC的内置OPC功能,而直接编写一个VB通讯程序,实现客户机与服务器的通讯。但是通过对该系统一段时间的使用和观察,我们发现实际和理论之间确实存在着差距,在通讯程序运行过程中,总会出现一些我们理论上没有考虑周全的问题,使得通讯程序频频出错,造成很多数据的缺失,导致系统运行的不稳定。下面对方案的采纳和改进作一下具体的说明。
初期,在客户机与服务器的通讯方面,我们曾在Visual Basic的环境下开发了一个OPC客户端应用程序,利用该程序与服务器进行通讯,但是运行不久后,客户机出现死机的问题,通过日志文件的监测,发现死机时的服务器状态为ServerState =2,OPCFailed表示OPC服务器由于异常而停止,出现该错误的原因是,客户端程序中没有实现较为完善的容错和故障诊断的功能,当服务器出现短暂错误时,造成OPC连接中断,此时客户机不能及时的实现故障诊断,造成死机。
为了解决这一问题,提出第二种方案:即在客户端程序中加入诊断程序,通过不断连接服务器从而不断检测Sverstate参数来判断服务器是否出现故障,若服务器状态不正常,于是重新启动该系统软件,从而实现故障的诊断和处理。但是运行数周后,发现服务器资源被大量的消耗,经过查阅资料与反复试验发现这种现象是由于客户机与服务器频繁的连接与断开而引发,从而造成服务器资源被大量的消耗。于是提出了第三种方案。
第三种方案将OPC通讯分为两部分来做(如图4所示),第一部分也就是最重要的部分是客户机与服务器的通讯,这部分通讯我们利用了WinCC内部集成的OPC接口,也就是说在客户机上开发了一个小型的WinCC客户端应用程序,利用WinCC内部集成的OPC接口进行服务器和客户机之间数据的传输,把服务器上的数据传输入WinCC客户端应用程序中的标签内,这是考虑到了其内部集成的接口的稳定性与较完善的故障诊断与处理,这种方式可以应对服务器所出现的各种情况,彻底避免死机情况。第二部分是Visual Basic 和 客户机上的WinCC进行通讯,这一部分的通讯我们是利用了自己开发的一个OPC客户端应用程序来实现的,这个客户端程序是在Visual Basic6.0的开发环境下进行开发的,其作用就是把WinCC客户端应用程序中的标签内的数据通过OPC接口传输入该系统软件的界面上及数据库内,以便进行整个系统的开发。
图4 OPC通讯
WinCC在安装时提供了OPC的客户端控件:Siemens OPC DAAutomation 2.0(SOPCDAAuto.dll),这个控件就是我们在VB中要用到的控件,我们也可以使用通用的OPC客户端控件:OPC Automation 2.0[6][7]。OPC连接部分的程序设计思路如下图5所示。
图5 OPC程序设计
4.2 监测评估程序基本功能
系统要完成三部分的监测与管理的功能。监测部分要完成70多个量的实时监测与累计,并显示出各个瞬时量的实时曲线;管理部分要完成统计计算,统计报表,成本核算,数据分析,错误列表,数据备份,参数设置,导入Excel表等几大功能。要具备完善的数据汇总功能还要具有较完善的查询功能及数据库的维护功能,在此基础上,进行大量数据分析和网络数据库查询的设计。
系统完成如下功能:通过OPC客户端程序与本机上的WinCC客户端进行通讯,每当服务器上的数据有变化时,客户端的WinCC上的数据也随之发生变化,相应的管理软件上的数据也发生变化,从而进行实时的监测。每四分钟把所有的瞬时量读入4min数据库中,用来划出时实曲线,每半小时把所有量(包括瞬时量和累计量)读入半小时数据库,通过统计计算生成8小时数据库和天数据库。之所以要生成这两个中间数据库,是因为要对每个班次进行考核和满足日后的日查询功能。生产车间共分为甲、乙、丙3个班次,每个班次工作8小时,所以建立了8小时数据库;在今后的查询功能中都是以日查询为基础的,所以又建立了24小时数据库。通过这两个中间数据库,可对各个部门的数据按要求显示报表,计算各个部门的成本或消耗,并按条件选择进行数据计算,以供用户对各个部门生产状况进行分析比较,并可以以棒图和饼图两种方式形象的显示。在数据采集的过程中,各个监测量越限错误状态也被实时的写入错误列表,并可按选择的条件进行错误列表的查询。当进入新的一年时,可执行备份功能将不需要分析的数据备份至备份库中。为了方便对数据进行进一步的处理分析,还可将各个部门的数据按要求与EXCEL表链接,生成EXCEL表格式的文件。
5 项目中的技术难点
统计办公室要对各个部门进行月结考核,需要记录车间多个指标以及数据的变化并进行相应的数据处理,同时需要计算生产成本并打印详细月报表等。由于WinCC自身的很多性能特点,满足这么多细致的要求,工作量十分大。所以考虑到在统计报表及访问数据库方面Visual Basic 6.0具有强大的数据操作功能,该系统采用VB6.0结合Access数据库进行开发。在通讯方面客户机与服务器的通讯采用了服务器上的WinCC.Client与WinCC.Server上的WinCC内部集成的OPC互相通讯的方式,而客户机上的Visual Basic 6.0与本机上的WinCC.Client的通讯则是通过在VB中开发OPC客户端程序实现的。这样做的目的是为了更好的利用WinCC内部集成的OPC来进行比较复杂的通讯,只在简单部分使用VB的OPC客户端应用程序。
6 结束语
本系统现已投入运行,且运行情况良好。系统对工艺流程和相关设备进行了改造,使重金属的提取比例提高,使磨矿分级、氰化浸出、污水排放等工艺指标达到较高水平,不但为企业创造更大的经济效益而且减少了环境污染,同时也改善了工人的工作环境降低了工作强度。本系统的开放性和可扩展性也很好的适应了车间改良的需求,可根据用户的要求方便的链接多个从站,受到了用户的好评。
中国自动化网