摘要:为解决组态网络中存在的下位机兼容性差、数据共享难及客户端展示方式单一性的问题,提出了一种面向中间件的组态王数据采集模型。该模型依据组态软件具有强大的网络连接功能和二次可开发的特点,以通用组态王软件为例,通过深入分析组态软件原理,结合通信中间件与通信协议,定义组态王的设备信息、变量信息,绘制组态王的展示界面对当前组态网络存在的问题进行验证。验证结果表明,该模型相比较于传统的组态网络模型提高了组态网络数据采集模型的可扩展性及兼容性,可以应用于数据共享与客户端的多样展示,有助于组态类软件与物联网技术的融合。
关键词:组态王;组态网络;中间件;物联网;组态软件
中图分类号:TP399 文献标志码:A
0引言
随着工业现代化的发展,工业化与信息化深度融合,工业生产过程的实时监视和控制显得尤为重要。组态软件作为一种用户可定制的二次开发平台,以其简易的开发过程、友好的监控界面、实时的控制性能,实现对工业现场的监控和控制,当前在各个行业和领域中得到了广泛的应用[1-2]。目前国内外应用最多的组态软件有Wonderware公司的InTouch、GeFanuc公司的IFix、组态王(KingView)、监视与控制通用系统(MonitorandControlGeneratedSystem,MCGS)、E-Form++等。这些组态软件在国内外都得到了广泛的应用,能够设计出精美的动画模拟画面,并可达到对工业现场实时监控和自动控制的目的,其中组态王是当前国内用户量最多的一款组态软件[3]。传统上的组态网络习惯于通过组态软件与下位机进行直接的通信来实现数据的采集与传输控制,通过驱动将组态软件与硬件结合起来,其耦合性相对较强,这不利于组态网络的进一步扩展,软件系统的可移植性相对较差。因而用户更倾向于用中间件方式在组态网络中实现对数据的采集,从组态软件面向硬件的形式转移到面向软件的形式。中间件为组态软件与硬件之间提供了一种松耦合方式[4]。本文以国内目前使用最为广泛的组态王软件为设计平台,设计了一种面向中间件的组态王数据采集模型,提高组态软件的可扩展性和兼容性,方便用户对组态软件应用的进一步拓展,移植于不同的设计平台,扩大组态软件的应用范围。
1组态软件驱动程序框架
组态软件(SupervisoryControlandDataAcquisition)是一种数据采集与过程控制的专用软件,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的工具且具有二次开发的特点。组态软件通过计算机信号对自动设备或过程进行监视、控制和管理。目前国内外使用较为普遍的组态软件有组态王、MCGS、InTouch等,组态软件在工业生产活动中发挥着越来越重要的作用。组态王是由北京亚控科技发展有限公司所设计的一款面向现代工业控制和监控的组态软件。该软件具有设计图形界面、构建同类型的数据库、制作工业现场模拟动画、支持多种数据采集通信协议、记录历史数据、全面报警、支持ActiveX控件、Web实时数据发布及各个工控点的组网功能[5]。该软件在国内相关行业中得到了广泛的运用。同样由北京昆仑通态自动化软件科技有限公司研发的基于Windows平台的MCGS及Wonderware公司生产的InTouch都具有类似的动态画面制作、多访问权限、报警及历史曲线和支持多通信协议等特点。同类软件都在工业自动控制和监视中得到广泛运用。组态软件是数据采集与过程控制的专用软件,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。国内外的组态软件具有很多的共性特点,其主要特点表现为:1)延续性和可扩充性。用通用组态软件开发的应用程序,当现场或用户需要发生改变时,不需作很多的修改而能够完成组态软件的更新或升级。2)封装性。通用组态软件使用一种方便用户使用的方法包装,无需高级编程语言技术就能完成一个复杂工程的所有功能。3)通用性。用户可根据工程需要,利用通用组态软件提供的底层设备驱动、开放式的数据库和画面制作工具就能完成动画、实时数据处理、历史数据显示、多媒体和网络等功能。组态软件的功能与特点大致相同,因而本次以组态王为例对面向中间件的组态网络模型进行探讨。组态王的驱动程序类型主要有查询式串口驱动、实时上发式非重叠I/O(Input/Output)串口驱动、实时上发式非重叠I/O驱动、TCP/UDP(TransmissionControlProtocol/UserDatagramProtocol)客户端型驱动和TCP/UDP服务端型驱动[5]。驱动程序类型及对应的主要功能虽有所不同,但其组态软件调用驱动程序的执行过程和实现机制大致相同,本文采用TCP/UDP客户端型的驱动方式。组态王调用驱动程序的一个调用过程可分为4个步骤,分别为设备初始化与校验、变量初始化与校验、变量组包(变量与外界交互类型可自由定义,本文主要讲述应用最为广泛的组包方式)和基于Socket的数据通信。组态王与驱动交互的数据主要是由两个COM接口实现,分别是IprotocolImp和IProtocolImp2接口,可将以上组态王驱动程序调用过程表示成如图1所示。设备及变量的初始化与校验主要是用于配置组态王与外部连接设备并对配置信息的合法性进行校验。变量组包则用于统一管理组态王与外部设备交互的变量。Socket数据通信的目的是实现组态王与外部应用设备的数据帧交互,通信中所采用的是Socket进程通信机制,通过双方建立的端点、链路来完成数据通信[6-7]。组态王正是通过接口完成以上4个功能模块实现与外部设备的通信。组态王通过IprotocolImp和IProtocolImp2接口来实现数据交互,而这两个接口是由CPr0驱动工程类、CDev设备类、CNetCom网络通信类继承与相互调用完成的。程序的辅助类主要由三大类构成,分别是CHelper帮助类、CDebug调试类和CCheck校验类,可将类关系表示成如图2所示。组态王调用接口来实现相应的功能,其中接口IprotocolImp由驱动工程类(CPro)的方法实现。驱动工程类中方法的具体实现是通过调用设备类完成,设备基类(CDevBase)主要实现设备信息、变量信息的校验与相应的信息存储,设备子类实现变量的组包与数据通信。数据通信是由设备类调用通信类(CNetCom)完成与外界的数据通信。辅助类则用于编程中的数据处理与信息输出。
2面向中间件的组态王数据采集模型
中间件是一种独立的服务程序,连接两个独立应用程序或独立系统的软件,位于客户机或服务器的操作系统之上,管理计算机资源和网络通信。中间件为程序或系统等的开发提供了一种相对独立、松耦合的开发环境,便于运行在一台或多台机器上的多个软件通过网络进行交互,借助这种软件可在不同的技术之间共享资源[8]。中间件应用广泛,目前应用较多的有数据库中间件、远程过程调用中间件、面向消息中间件、基于对象请求代理的中间件等。中间件已经成为大型网络应用系统开发、集成、运行和管理的关键支撑软件[9]。工业组态网络中组态软件多采用客户端/服务端(Client/Server)方式与不同种类不同型号的下位机进行数据通信,因而要求组态网络具有较强兼容性和可扩展性,为此本文提出了基于对象请求代理中间件(ObjectRequestBroker,ORB)[10]的面向中间件的组态软件数据采集模型。ORB是对象之间建立客户端/服务端关系的中间件,客户端可以透明地通过本地或网络远程调用服务对象的方法,在异构环境下为不同设备上的应用提供较强的互操作性;同时能够集成多种对象系统。ORB的优越性为当前组态网络存在的兼容性和扩展性问题提供了一种很好的解决思路,因此本文采用类似于ORB中间件数据采集模型,为公共对象请求代理体系结构的应用提供可能。该模型结构设计如图3所示。模型中不同类型的下位机通过基站(BaseStation,BS)、核心网(CoreNetwork)、Internet与中间件进行数据交互。客户端使用不同的设备Phone、PC、组态王(KingView)来实现数据监测与实时控制。客户端通过路由器(Router)、BS、Internet与中间件进行数据交互。中间件是数据交互的核心部件,图中的中间件属同一部件,模型采用分布式的方法,以降低各监测区的耦合程度,降低维护成本,提高模型的健壮性及数据处理效率。相比传统的组态软件与下位机直接连接的方式即组态软件面向硬件,组态王数据采集模型在采用中间件形式即组态软件面向软件,能够有效地拓展组态网络中终端之间数据的互联互通,扩展组态网络的应用领域,增强组态网络的功能,以便满足用户对组态网络多样性的需求,提高组态网络的市场竞争力。而中间件在这一模型中起到了至关重要的作用,中间件为组态网络提供一种基本的通信框架,透明地在异构分布计算环境中传递对象请求。对于不同种类的下位机如传感器、嵌入式设备等,可通过对中间件提供的标准接口进行具体的功能重载来将其接入网络。这有利于组态网络实现对工业现场的实时数据采集和控制,为组态网络的维护和部署提供了极大的方便,提高了组态网络的兼容性。不仅如此中间件在这个模型中对前台和后端起到了很好的隔离和缓冲作用。组态软件只需根据通信协议通过中间件发布控制命令来控制下位机,当下位机功能结构发生变化时,不会严重地影响组态软件的整体结构,只需作部分的修改,这将大大有利于整体数据采集系统的维护,降低系统的维护成本。通过分析当前主流的组态软件如组态王、MCGS、Intouch等国内外组态软件,可知组态软件都具有强大的网络连接功能,支持TCP/IP通信,而面向中间件的组态王数据采集模型正是基于这种强大的组态软件网络连接功能,因而对其他的组态软件如MCGS、Intouch等软件也能够应用该模型。下位机通过硬件配置,使其具备网络连接功能,便可实现中间件对下位机的无缝连接。该模型有力地提高了组态软件的可扩展、兼容性,为组态软件的进一步应用提供有效的支持。
3面向中间件的组态王驱动程序设计过程
面向中间件的组态王驱动程序设计主要分成3部分,分别是组态王与中间件进行数据通信的设备与变量信息定义、变量组包设计与TCP/IP通信。设备与变量信息的定义实现组态王与中间件设备的绑定与数据的承载,变量组包规定数据采集组织形式以便于数据管理,面向中间件的TCP/IP通信则实现组态王与中间件之间的对象消息请求、数据交互与解析,通过这3部分最终实现数据的显示与动画展示。
3.1面向中间件设备的绑定与变量信息的定义
组态王与外部设备进行通信时需要绑定外部设备的相关信息,建立相应的联系,因而组态王与中间件所在的设备需要建立一定的连接。组态王通过设备类CDev来具体完成与中间件设备的绑定与信息校验。在组态王的驱动程序中完成设备初始化与校验的具体执行函数是StrToDevAddr()。组态王与中间件的连接具体需要定义组态王与中间件数据交互的驱动程序,中间件所在设备的地址,其中地址内容包括IP、端口和设备ID及使用的通信方式,以此完成组态王与中间件的绑定。组态王与中间件的数据交互单元是通过定义组态王I/O变量实现。其中I/O变量需定义与外部中间件的数据交换属性、交换频率,规定数据在组态王显示界面的最大值、最小值、精度及用于管理的ID和变量名。I/O变量各种属性的定义是由组态王开发界面中的数据词典完成。所定义的变量通过校验,存储于PLCVAR和ID_NO这两个类中。PLCVAR类存储所定义的变量信息,ID_NO类定义了PLCVAR成员变量及组态王内部的变量ID和通道号,这为通信数据的组织提供便利。
3.2面向中间件的变量组包设计
由于组态网络下位机所使用的设备种类、型号繁多,致使组态王与中间件的数据交互协议相对较为复杂,因而组态王与中间件的数据通信对变量的组织采用包设计形式。变量组包主要实现的是将同一采集速率、同一状态的变量加入到包中对外部中间件进行数据交互,组态王提供的这一组包方式有利于简化数据的解析与存储。组包时组态王将变量的ID按从小到大的顺序依次排队,放入此次数据采集的变量队列中,变量ID在组态王建立变量时唯一确定。变量队列如图4所示。变量加入包的过程是有条件的,在组态王中建立的与中间件交互数据的I/O变量均按建立的顺序依次存储于varlist成员变量中。组态王每次对中间件数据交互时都要根据所建立变量的交互属性和交互频率进行组包。以变量的采样频率为时间轴,在包中自动生成本次组包变量的交互属性与交互频率,变量的数据交互频率是在建立变量时设定。寻址varlist中符合本次组包类型的变量,在队列中根据符合组包类型变量的ID号大小依次排队等待本次包所属交互频率的到来交互数据。以下是根据一实例组态王通过中间件采集和控制下位机温度、AD(AnalogtoDigital)转换值、上下限的变量组包例子,变量组包实例过程如图5所示。这样便可完成一次组态王对同一采样频率、同一变量状态的变量进行数据采集。变量组包程序流程如图6所示。变量组包后可通过调用varlist.GetNext()函数依次取出包中的变量,根据通信协议对所获得的数据帧进行解析,完成与外部中间件的数据交互。
3.3面向中间件的TCP/IP通信
组态软件与中间件的数据交互是建立在既有的Internet,因而模型采用目前应用最为广泛的TCP/IP通信协议,其中TCP/IP传输控制协议通过应用程序接口(ApplicationProgrammingInterface,API)Socket具体实现[11]。TCP应用于传输层,IP应用于网络层,建立客户端与服务器之间的连接是通过三次握手来实现,在TCP/IP协议下,服务端与客户端建立通信的过程如图7所示。组态软件与与中间件建立连接,帧数据结构根据通信协议存储数据到m_bySndBuf和m_byRecBuf缓存,实现发送和接收相应的数据帧。
4面向中间件的组态模型测试结果
测试面向中间件的组态模型需要对组态王的设备、变量、界面及驱动作相应的设置。设备信息包括设备类型、逻辑名、使用的通信方式及连接中间件的地址,其中地址信息包括中间件所在的设备的IP、端口、设备ID等。变量的定义主要包括变量名、采样频率、使用的寄存器方式及数据类型等。最终的设置样式如图8所示。组态王与外部中间件数据通信的帧结构包括帧头、数据区长度、功能码、时间戳、数据区及帧尾等,其具体结构如图9所示。功能码主要定义本次数据交互的指令功能,如01功能码用于表示组态王向中间件读取数据,设备ID表征本次数据交互的来源且增加时间戳标明数据来源时的具体时间以满足工业中对数据处理的需要。数据区主要承载交互的数据,表明数据的区号、地址及数据值,如0区的数据表示各开关当前使用状况,3区的数据表示电机功率、转速等。根据上述的面向中间件的组态王数据采集模型及制定的通信协议,编写相应的组态王驱动,运用远程数据采集模块对开关、水库水量库存状况、发电机及各相输入功率及转速的数据,最终面向中间件的组态模型测试结果如图10~11所示。开关量0和1表示当前开关所处的状态,通过相关的仪表展示发电机的转速、功率等并可对数据的精度进行调整。开关状态中0代表开关关闭,1代表该开关开启,用测量仪展示当前发电机相关的数据数据。以上数据可以根据下位机现场实时采集到的数据验证其正确性。组态王所采集的数据是由下位机通过通用分组无线服务(GeneralPacketRadioService,GPRS)技术先将数据发送到中间件,通过中间件的处理,最终组态王交互中间件中的数据并对其进行解析供前台展示。组态王与中间件的数据交互是以包的方式进行传输,每个包的平均大小为50B,上位机、中间件及客户端的数据传输采用透传的方式,经100次测试,数据传输时的第一个包耗时约5ms,而其他包的耗时均小于1ms。第一个包需要从数据库检索相关信息然后建立转发链路所需要使用的时间相对较多,在链路建立后,后续的包则采用透传的方式传输,与数据包的具体长度关系不大,因而耗时相对较少。从实测结果也可以看出,中间件在组态网络中的应用,对组态网络传输延时影响很小,可近似忽略,组态网络传输的实时性不会受到影响。上面的测试结果表明面向中间件的组态王数据采集模型能够实现对下位机的数据采集工作并易于对下位机设备进行组态,且对其进行展示,符合组态网络对远程数据的采集和工业现场实时控制要求。
5结语
本文提出了一种基于组态软件具有的强大网络通信功能和二次可开发特点面向中间件的数据采集方法,在组态王上实现面向中间件的数据采集模型,并理论结合实际论证了该模型在提高组态网络通过性、可扩展性和延续性等性能方面的有效性。该模型有效地解决了组态网络面向硬件设计方法中存在的关于组态软件与下位机耦合度高、组态软件客户端数据展示样式及设备的单一和设备数据共享的问题。该模型不再仅仅局限于使用组态软件来展示数据、实时监控,而是可以采用多样的展示设备如手机、Pad等,不仅如此,该模型不但能够很好地兼容下位机,而且不再局限于特定的设备驱动,不但能够扩展不同组态软件的数据共享,而且能够从单一组态软件的应用到多组态软件的共同管理,做到一个工程,多组态软件共同开发。通过研究扩展,可将该模型应用到客户机和服务器(Client/Server,C/S)、浏览器/服务器(Browser/Server,B/S)等开发中与现代的互联网技术相结合,进一步提高组态网络的性能,扩大其应用领域。
参考文献:
[1]LUOY,ZHANGS.Currentsituationandtrendsofindustrialcontrolconfigurationsoftware[C]//Proceedingofthe2011IEEEInterna-tionalConferenceonAutomationandLogistics.Washington,D.C.:IEEEComputerSociety,2011:309-313.
[2]程刚.监控组态软件框架及其实时数据库的研究与开发[D].武汉:武汉理工大学,2010:7-10.(CHENGG.Researchontheframeworkandreal-timedatabaseoftheconfigurationsoftware[D].Wuhan:WuhanUniversityofTechnology,2010:7-10.)
[3]刘力.组态王软件在交通灯控制系统中的应用[J].装备制造技术,2012,34(4):58-59.(LIUL.Applicationofkingviewintraf-ficlightscontrolsystem[J].Equipmentmanufacturingtechnology,2012,34(4):58-59.)
[4]郑树泉,王倩,丁志刚.基于Web服务以物为中心的物联网中间件的研究设计[J].计算机应用,2013,33(7):2022-2025.(ZHENGSQ,WANGQ,DINGZG.ResearchanddesignofWebservice-basedmatter-centricmiddlewareinInternetofthings[J].Journalofcomputerapplications,2013,33(7):2022-2025.)
[5]北京亚控科技发展有限公司.组态王655用户手册[M].北京:北京亚控科技发展有限公司,2011:1-41.(BeijingAsia-Technol-ogyDevelopmentCo.Ltd.Kingview6.55usersmanual[M].Beijing:BeijingAsia-TechnologyDevelopmentCo.Ltd.,2011:1-41.)
[6]王堃,于悦,张玉华,等.面向物联网应用平台的Socket设计与优化[J].吉林大学学报(工学版),2012,42(S1):291-293.(WANGK,YUY,ZHANGYH,etal.IoTplatform-orientedsock-etdesignandoptimization[J].JournalofJilinuniversity(engineer-ingandtechnologyedition),2012,42(S1):291-293.)
[7]周乐钦,燕彩蓉,苏厚勤.基于Web-socket协议的推送数据技术在监控系统中的应用研究[J].计算机应用与软件,2013,30(5):230-232.(ZHOULQ,YANCR,SUHQ.AnapplicationstudyonWeb-socketprotocol-basedpush-sendingdatatechniquesinmoni-toringsystem[J].Computerapplicationsandsoftware,2013,30(5):230-232.)
[8]PEDROM,BRUNOA,RAQUELM,etal.Self-organisedmiddle-warearchitecturefortheInternet-of-things[C]//Proceedingsofthe2013IEEEInternationalConferenceonGreenComputingandCom-municationsandIEEEInternetofThingsandIEEECyberPhysicalandSocialComputing.Washington,D.C.:IEEEComputerSocie-ty,2013:445-451.
[9]邵华钢,程劲,王辉,等.面向物联网的系统及其中间件设计[J].计算机工程,2010,36(9):84-86.(SHAOHG,CHENGJ,WANGH,etal.DesignofInternetofthings-orientedsystemanditsmiddleware[J].Computerengineering,2010,36(9):84-86.)
[10]WUJ,LIUH.Thestudyofconfigurationsoftwareandmanagementinformationsystemsintegration[C]//Proceedingsofthe2010In-ternationalConferenceonComputerDesignandApplications.Washington,D.C.:IEEEComputerSociety,2010:144-147.
[11]严童,谢吉华,温立超,等.智能变电站TCP/IP通信网络的安全解决方案[J].电气自动化,2013,35(5):44-45.(YANT,XIEJH,WENLC,etal.ThesecuritysolutionsforTCP/IPcommuni-cationnetworkofsmartsubstation[J].Electricalautomation,2013,35(5):44-45.)BackgroundThisworkispartiallysupportedbytheSurfaceProgramofNationalNaturalScienceFoundationofChina(41471329).LIUXueduo,bornin1991,M.S.candidate.HisresearchinterestsincludeInternetofthings.JIAODonglai,bornin1977,Ph.D.,associateprofessor.Hisre-searchinterestsincludegeographicinformationsystem,Internetofthings,spatialinformationvisualization.JIFeng,bornin1990,M.S.candidate.Hisresearchinterestsin-cludeInterneto商业机电论文fthings.YANGHao,bornin1969,Ph.D.,associateprofessor.Hisre-searchinterestsincludeInternetofthings,machinevision.
作者:刘学多 焦东来 吉峰 杨浩 单位:南京邮电大学 电子科学与工程学院 南京邮电大学 地理与生物信息学院