模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法目录摘要 IVABSTRACT V前言 1第一章 绪论 31.1 课题的意义与研究的背景 31.2 本文的主要工作 51.3 本章小结 5第二章 组态软件的扩展方法 62.1 基于OPC技术的组态软件扩展方法 62.1.1 OPC技术及接口 62.1.2 OPC技术在过程控制中的应用 82.1.3 OPC技术的具体实现 102.2 基于ACTIVEX控件技术组态软件扩展方法 102.2.1 设计思想 102.2.2 ActiveX 控件的制作及使用方法 102.3 基于COM组件技术组态软件扩展方法 122.3.1 COM组件技术 122.3.2 基于组件技术的组态软件 122.3.3 基于COM技术的监控组态软件分析设计 132.4 基于DDE技术的组态软件扩展方法 162.4.1 DDE动态数据交换协议 162.4.2 DDE技术的具体实现 162.5 本章小结 20第三章 INTOUCH中模糊控制功能的扩展 223.1 组态软件INTOUCH简介 223.1.1 InTouch 的基本结构及功能特点 223.1.2 InTouch 应用软件功能 223.1.3 InTouch 应用软件的结构 223.1.4 InTouch 应用软件编制步骤 233.2 模糊控制算法 243.2.1 模糊控制理论的产生 243.2.2 模糊控制理论的发展概况 243.2.3 模糊控制器的工作原理和基本结构 253.3 模糊控制算法在INTOUCH中的实现 263.3.1 在MATLAB环境下编写的模糊控制器 263.3.2 模糊控制器在InTouch中的实现 303.4 本章小结 31第四章 INTOUCH模糊控制功能扩展的具体实施 324.1 总体方案设计 324.1.1 设计思想 324.1.2 系统被控对象的确定 324.2 基于MATLAB的模糊控制器的设计 334.2.1 隶属度函数及模糊控制规则的确定 334.2.2 运用M文件编写模糊控制器并进行仿真 354.3 监控组态界面的设计 364.3.1 整体结构设计 364.3.2 主界面的设计 374.3.3 登录界面,实时趋势界面和历史趋势界面的设计 414.4 组态软件INTOUCH和MATLAB的通信 454.4.1 InTouch的DDE接口设置 454.4.2 MATLAB和INTOUCH之间的通信 464.5 本章小结 47第五章 调试及仿真结果分析 485.1 初始数据不变时的调试仿真结果及分析 485.2 改变参数的情况下调试仿真结果分析 515.3 本章小结 53结论 55总结与体会 56谢辞 57参考文献 58附录 60附录一:英文翻译原文 60附录二:英文翻译译文 66附录三:源程序代码106
先进控制在组态软件中的扩展与应用
组态软件实现其功能扩展的方法主要有COM组件技术、OPC技术、ActiveX组件嵌入技术、DDE技术等。本文根据动态数据交换(DDE)技术和组态软件在测控系统中的应用情况,分析了DDE和组态软件结合的必要性。
本文以模糊控制功能在InTouch软件平台扩展为实例,研究并提出了采用DDE技术在组态软件中扩展先进控制功能的方法。实例以Matlab和InTouch软件为平台,用Matlab完成模糊控制算法的计算任务,用InTouch工控软件完成数据采集、控制信息输出以及友好的用户交互等功能。二者通过DDE协议进行数据交换,把模糊控制这种先进的控制算法方便地应用到InTouch组态控制系统当中。
仿真实验表明,这种功能扩展方法是可行的,并且具有较好的开放性和灵活性。
关键词:模糊控制,MATLAB ,InTouch,DDE
Abstract
The method to expand the function of the configuration software mostly include COM component technology,OPC technology, ActiveX control technology,DDE technology and so on.This article analysis the necessity of combining DDE and configuration together according the application of Dynamic Data Exchange technology and configuration software in the control system,then take the expansion of fuzzy control function in the InTonch flat for example,reseach and propose the method that use DDE technology to expand the advanced control function in the configuration software.The example based on Matlab and InTouch,use Matlab to complete the calculating of the fuzzy control algorithm,and use InTouch to complete the data gathering,output information controlling and friendly communication between the users.The two section complete their data exchange through DDE agreement,then made the advanced control algorithm namely fuzzy control could be used in InTouch configuration system conveniencely.
The result of the simulation experiment shows,this method of function expansion is feasible and have better opening and flexibility.
Keywords: fuzzy control; Matlab; InTouch; DDE
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
前言
工业控制计算机(简称工控机)在计算机控制领域占据越来越重要的地位,在基于工控机的控制系统中,基本上都采用组态软件实现系统的开发和监控。目前,较为流行的工控组态软件有Heuristics公司的ONSPEC、Intellution公司的Fix、Wonderware公司的InTouch、昆仑通态公司的MCGS以及亚控公司的组态王等。工控组态软件具有丰富的图形功能、强大的与硬件通信的能力、灵活的可组态性和良好的可开发性,但它计算能力较弱,难以实现复杂的控制算法。随着工业现场生产规模的扩大和过程复杂程度的提高,简单的用组态控制系统由于其控制算法的局限性已经不能满足工业生产的需求,因此出现了将先进控制算法嵌入到组态软件中扩展其控制功能的方法,目的是使组态软件的控制功能更强大以更好的适应工业控制系统的需求。
本次设计选用的组态软件是InTouch。 InTouch是美国Wonderware公司出品的专业组态软件。它具有可视化编程、使用简单、组态灵活、组网方便、与流行的数据库有良好的接口、可以和许多应用程序很好的协同工作等优点。但是由于其在控制算法上的局限性,需要引入先进控制算法以扩展其控制功能。
先进控制是对那些不同于常规的回路控制,并且具有比常规控制更好控制效果的控制策略的统称。它的任务是解决用传统的控制方法无法解决的问题.本次设计选用的先进策略是模糊控制,在MATLAB 6.5的环境下实现。
MATLAB和InTouch通过动态数据交换协议DDE来进行二者之间的数据交换。InTouch实现现场数据的采集并通过DDE传送到MATLAB中进行计算后再将计算结果传回到InTouch中,以实现两者之间的数据交换。
本文以组态软件InTouch 9.5和MATLAB 6.5为平台,主要涉及的内容有:组态画面的总体结构设计,模糊控制算法及其在MATLAB下仿真,组态软件和MATLAB之间的DDE通信等等。具体安排如下:第一章 绪论,主要介绍了课题的意义及研究背景。第二章组态软件的扩展方法,简单介绍了几种常见的扩展组态软件的方法。第三章: InTouch中模糊控制功能的扩展,主要介绍了模糊控制理论的发展,原理以及如何在组态软件中实现模糊控制算法。第四章: InTouch模糊控制功能扩展的具体实施,主要介绍了针对一个确定的对象的具体方案的实施。第五章:仿真结果分析,通过仿真分析结果是否与预期结果符合,是否达到控制效果。第六章:结论,总结设计过程中出现的问题并得出结论。
全文由黄君婷编写,李俊丽老师详细审阅,并提出了很好的意见和建议。尽管如此,由于时间仓促,限于作者水平,本文的不足之处在所难免,欢迎老师、同学批评、指正。
第一章 绪论
1.1 课题的意义与研究的背景
现代工业的飞速发展,促进了工业控制的专业化,系统化,现代的生产方式对工业控制系统提出了很高的要求,不仅仅是需要高度的智能化、还有很强的综合性、稳定性。自进入20世纪90年代以来,自动化技术发展很快,作为自动化技术重要组成部分的过程控制技术正在为实现各种最优技术经济指标、提高经济社会效益等方面起着巨大的作用。
工业现场的智能控制系统的一项主要任务就是实时的监控工业现场的每个状态,并通过判断其状态变化趋势来下达控制指令,达到稳定生产、保证产品质量、节能增效的目的.对于大型的智能控制系统还有总体调度优化控制的任务,因此智能过程控制系统在工业生产中起着至关重要的作用,对智能过程系统的开发与研究具有重大的实用价值。
组态软件是近几年来在工业自动化领域兴起的一种新型的软件开发工具。它是一类关于数据采集和过程控制的专用软件,是自动化控制系统监控层一级的软件平台和开发环境,能以灵活多变的组态方式提供良好的用户开发界面和间接的使用方法,它将硬件系统上的工程化特点引入到软件设计中来,使软件设计呈现出工程化特点。开发人员通常不需要编制具体的指令和代码,只要利用组态软件包中的工具,通过硬件组态(硬件配置)、数据组态、图形图像组态等工作即可完成所需应用软件的开发工作。然而由于生产规模的扩大和过程复杂程度的提高,工业控制软件面临着巨大的挑战,那就是要集成数量和种类不断增多的现场信息。组态软件其控制算法功能比较缺乏,往往只能实现独立的单回路PID调节和开关量的时序控制,对整个系统多参数综合优化控制问题二次开发困难。因此组态最大缺陷在于它算法处理上功能不强,难于二次开发,很多工业现场不能直接简单的用组态系统满足要求,无法满足目前工业实时现场控制的要求。如何利用更好的算法开发工具,与工业软件结合起来以实现更加复杂的过程控制,把现有的成熟控制算法很快的应用到现场,是一个需要急切解决的问题。因此,使先进控制算法在工业监控中实现有十分重要的意义。
如果要在工业控制中应用高级算法的话,会涉及到矩阵处理、数学运算和一些图形操作,这时开发人员只能将许多精力放在基础的数据的读取和计算上。由于没有标准的计算子程序库和函数库的支持,这种开发工作是冗长而易于出错的,更不用说复杂的数学运算了。MATLAB是MathWorks公司开发的一款致力于为开发人员提供可靠的矩阵运算函数库,简化算法处理中的矩阵运算和数学计算的软件。它的首创者Moler博士把它命名为MATrixLABoratory(矩阵实验室)。由于采用了开放式的开发思想MATALB不断吸收了各学科领域权威人士编写的应用程序。目前,MATLAB是信号处理和图形图像处理首选的软件之一,集数值分析、矩阵运算、信号处理、系统仿真和图形处理于一体,拥有大量稳定可靠的函数库,及规模庞大、覆盖面极广的三十多个工具箱,其内容包括最基本的初等函数,大量复杂的高级函数和算法,如贝赛尔(Bessel)函数、快速傅立叶变换、矩阵逆运算等;还有通讯(Communications)、控制系统(Control System)、曲面拟合(Curve Fiting)、信号处理(Signal Processing)、图像处理(Image Processing)、小波分析(Wavelet).鲁棒控制(Robust Control)、系统辨识(System Identification)、非线性控制(Non-linear Control)、模糊逻辑(FuzzyLogic)、神经网络(Neural Network)、优化理论(Optimization)、统计分析(Statistics).虚拟现实(Virtual Reality)等大量现代工程技术学科内容。正因为MATLAB是一套如此优秀的数值计算、算法开发、系统仿真软件,并且同时兼具简洁、便捷、功能强大和可靠性等优点,使得工程人员对MATLAB提出了更高的期望,希望程序运行更快、适应范围更广,希望在自己开发的应用程序中调用MATLAB的功能以简化程序的开发等等。但是MATLAB语言本身是一种解释性执行语言,运算速度较慢,而且对运行环境的要求非常高,占用了庞大的系统资源,生成实用的人机对话界面的能力不强。
MATLAB下的先进算法在工业过程中的应用就是在这种背景下被提出来的。如果能够解决算法复杂,尤其是矩阵运算的难题,把一些较为成熟的算法,如模糊控制算法、神经网络控制算法等,有效地应用到现场。把组态软件优秀的可视化画面制作技术与MATLAB丰富的算法相结合,二者相互补充缺点、最大限度发挥各自的优点,既可以实现实用的人机对话界面、应用多种高级算法,又可以使系统开发效率大大加快,开发的程序更加稳定可靠,也可以按照要求变化更新算法。二者结合从理论上说是十分有利于系统控制的。
1.2 本文的主要工作
本文选用的组态软件是InTouch9.5,选用的先进控制策略是模糊控制,组态软件实现生产现场信息采集和显示功能, MATLAB算法程序根据系统的实时信息计算并决定控制输出,并通过DDE协议在InTouch和MATLAB之间进行通信,达到现场信息和控制信息实时交换的目的.以便对工业生产过程进行更好的控制。
本文以组态软件InTouch 9.5和MATLAB 6.5为平台,主要涉及的内容有:组态画面的总体结构设计,模糊控制算法及其在MATLAB下仿真,组态软件和MATLAB之间的DDE通信等等。其中核心部分是组态软件和MATLAB之间的动态数据交换。
1.3 本章小结
本章主要介绍了目前组态软件在工业生产过程中的应用,并分析了它们的优缺点。由此引出课题的意义,由于组态软件控制算法的局限性,将先进控制算法嵌入到组态软件中以实现其功能扩展是十分有必要的。另外还简要的介绍了课题的背景及发展现状以及本次设计所要做的主要工作。
先进控制在组态软件中的扩展与应用
第二章 组态软件的扩展方法
工控组态软件具有丰富的图形功能、强大的与硬件通信的能力、灵活的可组态性和良好的可开发性。目前,较为流行的工控组态软件有Heuristics公司的ONSPEC、Intellution公司的Fix、Wonderware公司的InTouch、昆仑通态公司的MCGS以及亚控公司的组态王等。但是随着工业生产复杂程度的提高,组态软件由于其控制算法的局限性,难以实现日益复杂的控制策略。因此,在工业控制领域,如何更有效地实现控制算法一直是人们普遍关心的问题。本章介绍了几种常见的实现组态软件的扩展的方法,例如运用COM组件,Active X控件嵌入组态软件的方法,运用OPC技术或DDE技术实现其功能算法扩展等等,具体介绍如下。
2.1 基于OPC技术的组态软件扩展方法
2.1.1 OPC技术及接口
图形界面中的对象必须同外界的数据联系起来,才能反映它所代表的现场实物的运行情况。如何用最方便的方法采集数据并利用它所需要的数据呢? 我们这里用到了OPC(OLE for Process Control) 规范。
OPC规范提供了客户与服务器之间进行数据通讯和交换的通用工业标准机制。通过OPC 接口,各OPC客户(应用软件) 与OPC服务器(设备数据源) 之间形成即插即用的链接关系,而不依赖于软件和设备的特定属性,客户与服务器可无缝隙地交换数据。OPC服务器并不关心具体某个客户,而由OPC客户根据需要,接通或断开与OPC 服务器的链接。各种类型的硬件设备,只要具有OPC 接口,就可以任意更换和增加。OPC技术是解决应用程序及设备间的通讯的理想手段。因此如果为现场设备的驱动程序加一个OPCServer 的外壳,那么其它应用程序只要遵循OPC 规范就可以访问并改写这些数据。如果我们做一个OPCClient 控件,插入图形界面中,在该控件中添加一个组,访问本地或者异地的OPCServer ,把需要的数据项加入到该组中,然后根据这些组中的数据项,配置其暴露给外界的属性;而图形界面中的对象则可以通过控件的自动化接口,访问它的属性。这个OPCClient 控件在某种意义上执行了一部分实时数据库的功能。
OPC技术的实现由两部分组成,OPC服务器部分及OPC客户应用部分。其应用模式如图2-1所示。OPC服务器是一个典型的现场数据源程序,它收集现场设备数据信息,通过标准的OPC接口传送给OPC客户端应用。OPC客户应用是一个典型的数据接收程序,如人机界面软件(HMI) 、数据采集与处理软件(SCADA) 等。OPC客户应用通过OPC标准接口与OPC服务器通信,获取OPC服务器的各种信息。符合OPC标准的客户应用可以访问来自任何生产厂商的OPC服务器程序。
图2-1 OPC服务器的应用模式
OPC标准以微软公司的OLE 技术为基础,它的制定是通过提供一套标准的OLE/ COM 接口完成的。在Windows下,微软公司通过OLE 1 技术使相对独立的不同应用程序结合到一起成为可能,向用户软件模块化迈进了关键一步。在OPC技术中使用的是OLE 2 技术,微软不仅对OLE 1进行了扩展,还引入了一种新的深层次结构,使得在微软Windows 下开发软件的思维方式有所改变,OLE 标准允许多台微机之间交换文档、图形等对象。COM 是所有OLE 机制的基础。COM 是一种为了实现与编程语言无关的对象而制定的标准,该标准将Windows 下的对象定义为独立单元,可不受程序限制地访问这些单元。这种标准可以使两个应用程序通过对象化接口通讯,而不需要知道对方是如何创建的。例如,用户可以使用C语言创建一个Windows 对象,它支持一个接口,通过该接口,用户可以访问该对象提供的各种功能,用户可以使用Visual Basic ,C ,Pascal ,Smalltalk 或其他语言编写对象访问程序。在Windows NT410 操作系统下,COM规范扩展到可访问本机以外的其他对象,一个应用程序所使用的对象可分布在网络上,COM的这个扩展被称为DCOM。通过DCOM 技术和OPC标准,完全可以创建一个开放的、可互操作的控制系统软件。很多国际先进的自动化软件供应商均以OPC 技术作为核心,开发出了多种功能的自动化软件,如ICONICS、PCSOFT 等公司。同时,具有OPC标准接口的自动化软件组件,遵守统一的数据访问标准,配置灵活,方便了软件集成,如ICONICS公司的具有软逻辑(Soft Logic) 功能的ControlWorX32 组件,通过OPC标准可以自由的集成在HMI/ SCADA 软件中。
OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口;自定义接口。自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用VisualBasic、Delphi、PowerBuilder 等编程语言开发OPC服务器的客户应用。而自定义接口是专门为C等高级编程语言而制定的标准接口。OPC服务器的访问方式与接口如图2-2 所示。若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn 图2-2 OPC服务器的访问方式
2.1.2 OPC技术在过程控制中的应用
1) OPC 数据采集技术 OPC 技术通常在数据采集软件中广泛使用。现在众多硬件厂商提供的产品均带有标准的OPC 接口,可以编制符合标准OPC 接口的客户端应用软件完成数据的采集任务。随着软件组件化的发展,过去提出的搭积木方式在工控软件中成为现实,用户可以通过各种软件模块完成控制应用的实现。因此,提出了创建OPC 数据采集ActiveX 控件方式完成OPC服务器的数据采集任务。通过OPC 数据采集控件,用户可以方便的编写数据采集监控程序,同时也可以为原有的数据采集系统添加新的功能。OPC 数据采集控件的想法来自于VisualBasic 编程环境中的数据库
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
(Data) 控件,数据库控件的主要作用是连接各种数据库,为用户进行数据库编程提供方便。OPC 数据采集控件提供类似数据库控件的功能,使用方式与数据库控件相仿,通过数据订阅和数据的动态绑定,为具有数据绑定功能的所有ActiveX 控件提供数据源,用户甚至无须编程就可显示来自OPC 服务器的实时数据。
2) OPC 服务器冗余技术 在工控软件开发中,一项最为重要的技术就是冗余技术,优秀的软、硬件冗余技术是系统长期稳定工作的保障。目前流行的工控软件也都具有冗余功能。OPC标准的制定为软件冗余提出了新的思路,我们可以通过OPC 技术更加方便的实现软件冗余。在实践应用中,我们开发了OPC 冗余服务器,解决了对任何厂商的OPC 服务器冗余问题。OPC 冗余技术的结构如图2-3 所示。
若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn 图2-3 OPC服务器的冗余结构
OPC 客户应用程序可以是任何符合OPC 标准的客户端应用,如用户自己编写的采集监控程序或其他软件厂商开发的符合OPC 标准的HMI、SCADA 应用。OPC 冗余服务器通过主/ 备份OPC 服务器采集数据,同时通过标准的OPC接口为客户端应用提供数据信息。因此,OPC 冗余服务器既是OPC 服务器的客户端应用,同时又是符合OPC 标准的服务器程序。由于OPC 冗余服务器采用OPC 标准,具有开放性和可互操作性,可以和任何符合OPC 标准的软件无缝集成,真正作到了即插即用。OPC冗余服务器可以根据用户配置的检测时间定时检测OPC 服务器的连接关系,在主从服务器之间自动切换,也可以按照用户指定的切换目标进行切换,方便了设备的维护,使系统的运行更加平稳。
2.1.3 OPC技术的具体实现
在图形界面开发环境中, 插入一个OPCClientLinkServer 控件,负责访问现场中移动的物体的位置信息,并暴露出它所需输出的属性数据或者方法;然后客户就可以通过IDispatch 接口,根据DISPID 和对应的VARIANT 所支持的数据类型调用InVoke 方法或者GetProperty 方法;当然,最好这个控件也实现OPCServer 接口功能,这样该控件提供的数据就能被进程之间的所有遵循OPC规范的应用程序访问。
我们开发的图形界面通过建立一个模态对话框,在对话框资源中插入自己的OPCClient 控件(没有实现OPCServer 接口功能) ,该控件暴露了两个long 型的属性。这两个控件属性由控件自身根据控件所建立的组(OPC Group) 中所建立的项(Item) 中的数据来动态配置。这样我们可以根据OPC 规范从OPCServer 上获得数据,将根据该控件所建组中的项的数据动态设置而暴露出的属性作为输出数据。而后客户设置一个定时器,定时根据所提供的DISPID 的值以及对应的VARIANT 所支持的数据类型调用Get Property 方法,获得输出的数据。
2.2 基于ActiveX控件技术组态软件扩展方法
2.2.1 设计思想
所谓ActiveX控件是基于COM标准的能够被外部自动调用的OLE对象,有时简称OCX。组态软件为便于工业自动化控制,提供了图形界面系统,实时数据库系统,控制功能组件等方便的工具,但其本身提供的功能函数和控件是有限的,时常不能满足设计人员的要求,而如Visual Basic,Visual C++等的计算机编程软件,为用户提供了各种功能丰富的函数和控件。通过这些函数或控件封装成ActiveX控件,便可将它们可移植到组态软件。由于ActiveX控件基于COM标准,与计算机编程语言无关,实际上它是定义了可重用组件的标准接口,组态软件通过这个接口调用那些函数和控件,而不受编程环境的限制,这样可以极大地丰富组态软件的功能,同时实现程序模块化,增强了代码的重用性。ActiveX控件实现接口功能的结构图如图2-4所示。
2.2.2 ActiveX 控件的制作及使用方法
ActiveX 控件作为组态软件与其他计算机编程软件之间的接口,其状态分2个阶
图2-4 ActiveX 控件实现接口功能的结构图
段:设计阶段和执行阶段。设计阶段是指在设计窗口中编辑ActiveX 控件的阶段;而执行阶段是指ActiveX 控件在其他应用程序中调用执行的阶段。
以使用Visual Basic 6.0(简称VB 6.0)为例定制ActiveX 控件,并在力控组态软件中调用。例如,力控中MsgBox(Message)函数产生信息框的形式是固定的:提示信息和“是”与“否”两个按钮。在实际项目中时常需要形式更灵活的信息框,这里以制作信息框控件并在力控中使用为例,介绍ActiveX 实现接口功能的具体方法。
1) ActiveX 控件的制作
ActiveX 控件处于设计阶段,具体的制作过程是这样的:
第一步,在VB6.0的编程环境下新建一个ActiveX 控件工程。
第二步,在一个类似Form的UserControl对象上设计控件界面,可添加各种控件,由于这里封装的是函数,因此不需要添加其他控件。
第三步,编写程序代码,读者可以使用两种方法为ActiveX 控件添加属性、事件和方法。
若采用手动方式,则与在VB的标准EXE工程中的类似,通过“添加过程”对话框来添加属性、事件和方法。或者读者也可以在“ActiveX 控件接口向导”引导下,来快速的创建控件的属性、事件和方法。
第四步,将ActiveX 控件工程编译成OCX文件发布。
2) ActiveX 控件在组态软件中的注册和调用
当编译成OCX文件后,ActiveX 控件进入了执行阶段。
ActiveX 控件在组态软件中的注册与调用方法依使用的组态软件的不同而不同。在力控中调用ActiveX 控件之前,首先要在“ActiveX 控件管理器”对话框中,对该控件进行注册,并将已注册好的ActiveX 控件添加到常用控件列表中。
之后,读者可以在力控的任何一个窗体中插入该控件,对控件进行命名,调用它的属性和方法,调用格式如下:
调用属性———#ActiveX 控件名.属性名;
调用方法———#ActiveX 控件名.方法名(参数列表)。
读者还能通过“控件属性/方法”列表框,查看ActiveX 控件的属性和方法。
2.3 基于COM组件技术组态软件扩展方法
2.3.1 COM组件技术
COM(Component Object Model)组件技术是构造二进制兼容软件的规范, 通过它可以建立能够相互传输数据的组件, 其服务器-客户机结构非常适合工控软件应用程序的开发。组件是完成一定功能的软件块,可以被其它程序使用,而且容易替换。为了使每个人编写的组件具有可移植性,必须建立一个标准, 保证其兼容性和可互换性。COM正是这样一种标准,遵循COM规则就可以建立能够相互交换数据的组件。
2.3.2 基于组件技术的组态软件
现代工业对生产自动化和各种信息的集成要求越来越高,基于微机的组态软件因其灵活开发、高可靠性、分散控制和集中监控等特点得到广泛的应用。目前国内外主要的通用组态软件有:WonderWare公司的InTouch,Intellution公司的iFix、北京
亚控科技发展有限公司的组态王和北京三维力控组态软件等,通过对这些软件的使用、研究和对比可以发现,对于一般的工业监控系统,例如中小型企业的低成本自动化系统,系统的结构框架基本固定;而要适合不同企业复杂的工艺过程,更多的要依靠软件的灵活性。传统的国内组态软件的各种功能都集中在一个程序里,组态性能较差,被控对象稍有变动就必须修改其源程序,升级困难;而国外较成熟的组态软件则价格昂贵且汉化性能一般。
组件技术是面向对象技术的最新发展,它具有开放性、灵活性、安全性和透明性等特点,它能将复杂的控制系统软件设计成为一个由许多个小的、功能单一的组件对
先进控制在组态软件中的扩展与应用
象,每个组件都通过标准的接口同其它组件交流,可以轻易地用相同接口的新组件来替代原有组件,在不必重新编译整个系统的情况下实现系统的升级,极大实现了系统性能的扩展,并缩短了软件的开发周期。目前主流的组件技术标准有:Microsoft公司的COM,OMG组织的COBRA以及Sun公司的EJB,它们相互借鉴相互竞争,各有利弊。COM的发展过程是先有主导产品后成为标准,以使用性强为特点,产品具有较好的一致性,并且是作为Microsoft开发专利创建的,因而在Windows32平台上采用COM规范实现分布组件应该是首选的。
近年来,组态软件基本上以PC/Windows为开发平台,国内外的一些商业化组态软件公司开始注意自己软件的灵活性,纷纷采用COM技术构建自己的软件框架,例如iFix软件采用了动态显示、报警、趋势、控制策略、控制网络通信等组件,提供了一个友好的用户界面,使用户在不需要编写大量代码的情况下便可以生成自己需要的应用软件;而组态王采用COM组件编写的驱动程序与外围设备进行数据交换,提高了软件的灵活性。在此,本文针对监控组态软件在分析其框架的基础上,把其分解成许多小的组件进行单独开发。
2.3.3 基于COM技术的监控组态软件分析设计
1)软件设计流程
基于COM的监控组态软件的设计就是从监控组态框架中抽取组件模型,进行单独开发而后集成系统。流程如图2-5所示。
图2-5 基于COM 组态软件的设计流程
2)监控组态软件的框架剖析
监控系统主要指工厂生产自动化运行系统、智能楼宇监控系统,以及与此相似的由传感器、执行机构、PLC、电缆、PC、通信网络组成的基于个人计算机,能够采集现场信号并执行控制指令的数字系统。其组织形式分为决策管理层、监视操作层、现
场控制层。监控组态软件一般工作于监视操作层或者管理层,根据其任务特点,可以划分为三个部分:数据I/O、过程逻辑、人机界面。其框架如图2-6所示。
若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn
图2-6监控组态软件的框架图
监控组态软件通过前置通信模块从现场设备获取实时数据,对数据进行必要的加工后,一方面以图形的方式直观地显示在计算机屏幕上;另一方面按照组态要求和操作人员的指令将控制数据传送给现场设备,对执行机构实施控制或调整控制参数。对监控组态软件进行进一步的剖析,得出其具体的实现包括如下模块:
实时数据库模块:能够完成I/O设备的数据采集与回送、输入输出处理、报警处理、保存历史数据、存储数据等功能。
监控画面模块:首先生成一个图元库,然后采用图元组件制作画面。当系统运行时,画面通常需要动态实时的显示各种采集信号的数据和状态,因此需要图元组件具有与数据库动态的连接属性。
控制模块:包括控制算法、算法参数等。
通信模块:包括用于和I/O设备通信的驱动程序等。
图表模块:包括图表的数据源、颜色、坐标、实时趋势曲线和历史趋势曲线。
报表模块:配置报表的数据源、报表数据的统计方法、格式、打印方式等。
3) 监控组态的组件化实现
组件的提取应遵守以下规则:组件应尽可能简单,便于复用;接口设计既要满足信息隐藏的要求,又要符合互操作的要求;应有较高的通用性和灵活性,满足不同系统的要求。依据以上准则,从组态框架中抽取所需的组件,如数据库访问的数据组
件、通信组件、控制组件、报表组件、图表组件和图元组件等。
在设计相应组件的模型时,应该合理考虑组件本身的可复用性和移植性及系统的可扩充性和兼容性,因此设计时关键是定义哪些属性是对用户公开的,哪些是封装的。
4) 组态软件的组件集成
利用COM技术开发出各种各样的功能专一的软件“积木块”(组件),在设计中只要保证接口的规范性,然后将它们按照需要“搭”起来,就构成基于COM组件的组态软件,如图2-7 所示。在应用框架中,各个组件之间通过接口相互通信,而组件之间的程序不相互干扰,可以大大提高软件的可靠性,并且组件功能可以扩展,保证了软件的灵活性。
图2-7 基于COM构架的组态软件
利用COM组件二进制兼容性、平台独立性,可以将多软件平台开发的COM组件对象融合在一起,不仅加快了软件的开发进程,而且便于软件的升级更新,开发试验表明这一技术的引进对于加快分布式通用型组态软件的设计开发,保证必要的软件生命周期十分有利。
2.4 基于DDE技术的组态软件扩展方法
2.4.1 DDE动态数据交换协议
动态数据交换(Dynamic Date Exchange)是Windows进程间的一种通讯方法。进程间的通讯(IPC)包括进程之间及同步事件之间的数据传递。在Windows环境下,DDE是应用程序之间实时交换数据的有效方法,它是不同应用程序之间共享数据的一一个协议。DDE应用程序分为四类:客户程序、服务程序、客户/服务器程序、监视器。客户程序与服务器程序之问的数据交换称为会话,发起会话者称为客户程序(Client),它从服务器获得数据.响应者称为服务器程序(Server),它维护其他应用程序可能使用的数据,客户/服务器程序表示既是客户程序也是服务程序。监视器主要用于调试。当客户程序向服务器程序请求数据时,客户程序发送一条称为WM—DDE—INITIATE的消息给当前运行的所有Windows应用程序,这条消息不但包含了它所需要的服务器名(Service)和主题名(Topic),而且指明了它所希望的数据类型。其中服务器名标识了客户程序希望建立的会话对象,一般是不带扩展名的可执行文件名。例如:MATLAB的服务器名是MATLAB;而主题则定义了会话的题目,例如: MATLAB支持的两个主题是System和Engine;主题所支持的数据类型称为项目(Item),一般一个主题至少支持一个项目或者更多。收到WM—DDE—INITI—ATE消息的应用程序通过判别服务器名和会话主题决定是否应答。
交换数据的方法常常和连接方式有关。由客户申请数据、服务器发送数据的这种方式称为冷链(cold link)。服务器的数据有变化时,服务器通知客户。再由客户来取数据,这种方式称为温链(warm link)。服务器的数据有变化时,服务器直接把数据送给客户,由客户对这些数据进行处理,这种方式称为热链(hot link)。
2.4.2 DDE技术的具体实现
以组态软件InTouch和MATLAB之间的DDE通信为例。
1)InTouch和MATLAB的DDE接口
InTouch和MATLAB都提供了标准的DDE接口,通过DDE接口,可以方便地实现它们之间直接的通讯。动态数据交换DDE是进程间的通讯方法。进程间的通讯( IPC)包括进程之间及同步事件之间的数据传递。DDE使用共享内存来实现进程之间的数据
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
交换及使用协议达到传递数据的同步。DDE协议可应用两种类型的DDE应用程序,第一种是基于消息的DDE应用程序,第二种是动态数据交换管理库(DDEML)应用程序。DDE应用程序可分为4种类型,客户、服务器、客户/服务器、监视器。其中,客户应用程序从服务器应用程序请求数据或服务;服务器应用程序响应客户应用程序的数据或服务请求。DDE应用程序采用3层识别系统从其他的DDE应用程序来识别它们本身,这3层分别是:应用程序名(进行DDE对话的双方名称) ,主题(被讨论的数据域) ,项目(被讨论的特定数据对象)。通过3层识别进行初始化并建立会话,进行会话的交换,交换结束后便是会话的中止,客户应用程序或者服务器应用程序都能终止会活。
2)InTouch的DDE接口
InTouch既可以作为服务器也可以作为客户端,当它作为服务器时,当另一WINDOWS应用程序从InTouch中请求数据值时,它必须知道3个I/O地址项:应用程序名(VIEW),主题名(TAGNAME),项目名(ActualTagname)。当InTouch作为客户端时,它提供的DDE函数有WWExecute,WWPoke,WWRequest。其中,WWExeute将要发送的命令字符串发送到指定的应用程序和主题;WWPoke将TextValue的值被发送到指定的应用程序、主题和项目,必要时使用tringFrom Intg或StringFromReal函数对其进行转换; WWRequest将特定应用程序、主题和项目中的DDE值将返回给ValueMsg_Tag,值将作为字符串返回给消息型标记,如果该值为一个数字,可以使用StringToIntg或StringToReal函数对其进行转换。
3)MATLAB的DDE接口
MATLAB同样既可以做服务器也可以做客户端,当MATLAB做服务端时,其应用程序名为Matlab;其主题分为两类,分别为System和Engine;每类主题又包含几个不同的项目,最常用的是Engine主题和它所包含的EnEvalString(客户把指令发进MATLAB计算)、EngStringResult (索取文字结果)、EngFigureResult (索取图形结果) 3个项目。当Matlab做客户端时,它提供了7个客户端函数: ddeinit、ddeadv、ddeexec、ddepoke、ddereq、ddeterm、ddeunadv。使用ddeinit函数建立与服务器的对话通道;在所建立的通道上采用ddereq函数向服务器所要数据,返回值是存有数据的矩阵;使用ddeexec函数发出给服务器应用程序执行的命令;使用ddepoke函数向服务器发送数据;使用ddeadv和ddeunadv分别是建立和删除热链接(热链:服务器的数据有变化时,服务器直接把数据送给客户,由客户对这些数据进行处理) ;使用ddeterm函数终止与服务器之间的DDE会话。
4)InTouch和MATLAB通讯的实现
InTouch和MATLAB都既可以做客户端又可以做服务器。由于InTouch提供的脚本程序中函数较少,且函数的应用功能远不如MATLAB提供的强大,提供的DDE接口函数,也没有MATLAB提供的函数应用方便。所以,本文采用MATLAB做客户端, InTouch做服务器,分别采用M文件,和S函数(采用M语言编写)来实现它们之间的通信,如图2-8,并通过实例说明其通讯原理。
图2-8 INTOUCH和MATLAB之间的通信
实例:在开发船舶电站模拟器时,采用InTouch进行人机界面的开发,采用MATLAB进行相关运算及建立电站的数学模型。例如监视某负载的功率,需要InTouch实时采集其电流和电压信号,在MATLAB环境里将InTouch采集的电流和电压信号相乘,得到的瞬时功率值返回给InTouch,在InTouch中以图形方式(功率表)直观显示出来。
方法一,采用M文件实现InTouch与MATLAB通讯。
M文件编写如下:
chann = ddeinit (‘view’, ’tagname’) ; %建立Matlab与InTouch之间的通
讯通道
…
while switch = = 1 %通过循环实现Matlab对InTouch的数据采集
pause (0.01) ; %暂停
rc = ddereq ( chann, ’current’) ; %采集InTouch中标记名为current的值
rv = ddereq ( chann, ’voltaga’) ; %采集InTouch中标记名为voltaga的值
w = rc*rv;
ra = ddepoke ( chann, ’power’,w) ; % w的值赋给InTouch中标记名为power的变量
…
end
ddeterm ( chann) ; %关闭对话通道chann
方法二,采用S函数实现InTouch与MATLAB通讯。
使用S函数实现InTouch与MATLAB通讯,是在MATLAB的SIMULINK环境下进行的,它分为两个模块,一个是MATLAB采集InTouch中的数据,另一个是MATLAB向InTouch发送数据,通过这两个模块共同作用来实现InTouch与MATLAB之间的数据通讯。下面
分别给出S函数部分源码并通过注释介绍如何来实现通讯。
MATLAB从InTouch中采集数据的S函数:
function [ sys, x0, str, ts ] = InTouch2simulink ( t, x, u, flag,
chann) %chann是S函数传递的参数
switch flag,
case 0
[sys, x0, str, ts] =mdlInitializeSizes( t, x, u, chann) ;
% S函数的初始化
case 3
sys =mdlOutputs( t, x, u, chann) ; % S函数的输出
case {1, 2, 4, 9}
sys = [ ]; %没有定义的flag
otherwise
error ( [‘Unhandled flag = ’, num2str ( flag) ] ) ;
% 容错处理
end;
function [ sys, x0, str, ts] =mdlInitializeSizes( t, x, u, flag, chann)
…
sizes. NumOutputs = 2; %输出参数的数量
sizes. Num Inputs = 0; %输入参数的数量,没有u所以为零
sizes. DirFeedthrough = 0; %没有直接馈通所以为零
…
function sys =mdlOutputs( t, x, u, chann) %输出所调用的函数
if chann = = 0
disp (‘DDEfaild! ’) ;
else
rq (1) = ddereq ( chann,‘current’) ; %采集INTOUCH中标记名为current变量的数据
rq (2) = ddereq ( chann,‘voltaga’) ; %采集INTOUCH中标记名为voltaga变量的数据
for i = 1: 2
sys( i) = rq ( i) ;
end
end
当Matlab向InTouch发送数据时,除mdlOutput函数不同外(采用ddepoke函数) ,其他的基本相似。
将以上函数进行封装便可以在SIMULINK环境中运行。在运行时,首先打开InTouch的windowviewer,并向MATLAB命令窗口输入chann = ddeinit (‘view’,‘tagname’)来建立MATLAB与InTouch的连接。
2.5 本章小结
本章介绍了几种实现组态软件扩展的方法,对每种方法都进行了较为详细的说明和介绍,并附有一些实际运用的例子,成功实现了组态软件控制算法的扩展。着重介绍了DDE协议,并以InTouch和MATLAB之间的动态数据交换为例详细的介绍两种实现通信的方法,InTouch实现现场的数据采集通过DDE协议传到MATLAB中,在MATLAB中计算出结果后再将数据传回InTouch中。
基于美国Wonderware公司出品的InTouch专业组态软件具有可视化编程、使用简单、组态灵活、组网方便、与流行的数据库有良好的接口、可以和许多应用程序很好的协同工作等优点,本次设计选用组态软件是InTouch。选用的先进控制策略是模糊控制,在MATLAB的环境下实现。采用DDE技术实现二者之间的通信,在MATLAB中编写M文件来实现两者之间的数据交换,达到扩展组态软件的控制算法的目的
先进控制在组态软件中的扩展与应用
第三章 InTouch中模糊控制功能的扩展
由美国Wonderware公司推出的InTouch是监控软件中应用较广泛的工控组态软件之一, 该软件功能强大、组态方式灵活, 是当前工控领域中简便易行的“ 快速应用程序生成器” , 特别是在生产过程参数的监控中, 更显示出它巨大的优点。但是在处理复杂数据时, 计算功能却受到了一定的限制,本章的主要讲解了如何把先进控制(即本文所选的模糊控制算法)嵌入到InTouch中以扩展其控制功能以更好的适应工业生产的需要。
3.1 组态软件InTouch简介
3.1.1 InTouch 的基本结构及功能特点
一个完整的InTouch 软件包包括3个部分: 软件开发环境WindowMaker, 软件运行环境WindowViewer, 运行记录本Wonderwareloger软件开发环境WindowMaker 用于制作所需要的应用软件。应用软件是一组特定的文件, 运行时由一个可运行文件加以解释, 产生所设计的目的。这个可运行文件就是软件运行环境WindowViewer。而Wonderwareloger用于记录InTouch 应用软件一次运行过程中所发生的一切事件。
3.1.2 InTouch 应用软件功能
用InTouch开发的实时监控应用软件可以实现下列功能: ①色彩多样、形态逼真的二维动态效果的实物体和画面。InTouch具有很强的绘图功能, 利用InTouch绘图工具箱可以方便地绘出工艺流程控制图, 并用调色板对所画图进行着色, 再把绘制好的图形与预先定义标记过的参数进行“连接”, 就可形成色彩多样、形态逼真的动态画面。②具有数据报警功能。这种报警功能包括数据报警、偏差报警和速率报警等多种报警方式。③绘图工具提供的制作实时曲线图、历史趋势图的功能, 为实时数据、历史数据的显示、存储、利用提供了在线帮助。用于生成生产报表、查询生产状况等。④多种用户数据输入方式。
3.1.3 InTouch 应用软件的结构
一个InTouch应用软件主要由四部分构成: ①标记名数据字典: 标记(Tag) 是InTouch特有的概念。其含义类似编程语言中的变量。每一个标记具有不同的类型,其名字和类型由应用设计者在软件设计时定义。应用软件运行时, InTouch根据每个标记的类型, 在内存中分配相应长度的单元存储标记值, 标记值可在软件运行时动态更新。InTouch常利用标记记录生产过程和软件运行时的状态数据。②图形界面: InTouch应用软件运行时的各种显示界面均可在开发环境中绘出。InTouch提供了
丰富的绘图功能。另外根据工业控制的特殊需要, 还提供了实时、历史数据趋势图, 多级报警显示等图形对象。用户可以方便地在自己的显示界面中加入这些应用, 而不需专门绘制。③动画连接: 将绘制好的图形与预先定义过的参数进行“连接”操作, 就给图形赋予了具体的意义。其实质就是通过使目标或图形符号的外形发生变化, 以反映标记名数据字典的变量值的变化或使标记名和其他符号的表达式的变化。④逻辑: 所谓“逻辑”, 实际上指一组用文本编写的逻辑判断和动作执行语句, 由InTouch在应用软件运行时加以解释, 从而让用户建立各动作与“逻辑”的各定制系统函数之间的联系。“逻辑”中提供了很多函数, 丰富了它的编辑功能, 也为使用其他软件来弥补它自身的不足创造了条件。
3.1.4 InTouch 应用软件编制步骤
InTouch应用软件的编制过程应包括以下步骤:
(1) 了解用户需要, 熟悉控制对像。设计显示界面, 列出控制过程中的所有状态变量, 以及生产过程中可能出现的情况及处理方法。
(2) 定义标记。根据列出的状态变量定义所需标记。
(3) 绘制界面。包括全厂工艺流程控制图、局部工艺控制图和单台设备控制图等。(4) 定义动画连接。把所定义标记的状态变量和图形“连接”上。
(5) 编写“逻辑”。
(6) 用其他语言编写与之联系的扩展功能的软件。
InTouch是一个非常实用的人——机接口软件,编程工作量非常小, 而且强大的绘图能力可节省不少时间; 它的动画连接功能方便地实现了动态数据检测、显示、报警等功能。
3.2 模糊控制算法
3.2.1 模糊控制理论的产生
随着科学技术的迅猛发展,各个领域对自动控制系统控制精度,响应速度,系统稳定性与适应能力的要求越来越高,所研究的系统也日益复杂多变。然而由于一系列原因,诸如被控对象或过程的非线性,时变性,多参数间的强烈耦合,较大的随机干扰等等,难以建立被控对象的精确模型。对于那些难以建立数学模型的复杂被控对象,采用传统的控制方法,往往不如一个有实践经验的操作人员所进行的手动控制效果好。因为人脑有能力对模糊的事物进行识别与判决,看起来似乎不确切的模糊手段常常可以达到精确的目的。操作人员通过不断地学习,积累操作经验来实现对被控对象的控制,这些经验包括对被控对象特征的了解,在各种情况下相应的控制策略以及性能指标判据。这些信息通常是以自然语言的形式表达的,其特点是定性的描述,所以具有模糊性。由于这种特性使得人们无法用现有的定量控制理论对这些信息进行处理,需要探索出新的理论与方法,于是出现了模糊控制理论。
3.2.2 模糊控制理论的发展概况
模糊集合和模糊控制的概念是有美国加利福尼亚大学著名教授L.A.Zadeh在其Fuzzy Sets, Fuzzy Algorithm和A Rationale for Fuzzy Control等著名论著中首先提出的。模糊集合的引入,可将人的判断,思维过程用比较简单的数学形式直接表达出来,从而使对复杂系统做出合乎实际的,符合人类思维方式的处理成为可能,为经典模糊控制器的形成奠定了基础。
为了加快模糊控制理论的研究,1972年,以日本东京大学为中心,发起成立了“模糊系统研究会”。1974年在加利福尼亚大学的美日研究班上,进行了有关“模糊集合及其应用”的国际学术交流。1978年在国际上开始发行Fuzzy Sets and Systerms专业杂志。1984年IFSA(International Fuzzy Systerm Association)正式成立,并已召开了几届国际模糊系统会议。从1992年起,IEEE Fuzzy Systerms国际会议每年举办一次。1993年,IEEE Trans.on Fuzzy Systerms开始出版。尽管模糊理论的提出至今只有30多年,但其对于控制理论的研究与发展具有重大意义。
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
3.2.3 模糊控制器的工作原理和基本结构
(1)模糊控制器的工作原理
采用模糊控制器的系统称为模糊控制系统。模糊控制的特点是:不需要建立控制过程的精确的数学模型,而是完全凭人的经验知识“直观”的进行控制。如图3-1所示,是典型含模糊控制器的系统框图.该系统的核心部分是模糊控制器。
Fuzzy 控制器
图3-1 含模糊控制器的系统方框图
(2)模糊控制器的基本结构若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn
图3-2 模糊控制器的结构图
模糊控制器(如图3-2所示)主要由4个部分组成:
(1)模糊化。其作用是将输入的精确量转换成模糊化量。其中输入量包括外界的参考输入、系统的输出或状态等。模糊化的具体过程如下:①对这些输入量进行处理以变成模糊控制器要求的输入量。常见的情况是计算偏差值e=r-y 和偏差率e=de/dy,其中r表示参考输入,y表示系统输出,e表示误差。②将上述已经处理过的输入量进行尺度变换,使其变换到各自的论域范围。③将已经变换到论域范围的输入量进行模糊处理。使原先精确的输入量变成模糊量。并用相应的模糊集合来表示。
(2)知识库。知识库中包含了具体应用领域中的知识和要求的控制目标 它通常由数据库和模糊控制规则库两部分组成。数据库主要包括各语言变量的隶属度函数。尺度变换因子以及模糊空间的分级数等:规则库包括了用模糊语言变量表示的一系列控制规则.它们反映了控制专家的经验和知识。
(3)模糊推理。模糊推理是模糊控制器的核心,它具有模拟人的基于模糊概念的推理能力。该推理过程是基于模糊逻辑中蕴含关系及推理规则来进行的。
(4)清晰化。清晰化的作用是将模糊推理得到的控制量(模糊量)变换为实际用于控制的清晰量。它包含两部分内容:①将模糊的控制量经清晰化变换变成表示在论域范围的清晰量;②将表示在论域范围的清晰量经尺度变换变成实际的控制量。
3.3 模糊控制算法在InTouch中的实现
3.3.1 在MATLAB环境下编写的模糊控制器
模糊控制器可以在MATLAB环境下编写并进行仿真。MATLAB是MathWorks公司推出的高性能的数值计算软件。它以矩阵运算为核心,集数值分析、信号处理和图形显示等功能于一体,构成了一个界面友好、使用方便的用户环境。MATLAB还包括了不同的工具箱,用来实现各种学科的问题的计算、仿真和数据处理,这些工具箱具有可扩展性、易学易用性和高效性。由于MATLAB具有如此之多的优点,它已成为数学、控制理论、信息处理、社会经济等学科的基本研究工具,被广泛应用于国内外各教学和科研部门。但是,MATLAB生成复杂的人机交互式图形界面的能力并不强,与硬件系统的交互能力更弱,这就限制了其应用于实际生产的能力。长期以来,人们一直将它视为一种纯粹的仿真软件。组态软件和MATLAB在功能和特点上的互补启发人们将两者结合起来,构成一个具有良好人机界面和强大计算能力的计算机控制系统。
在MATLAB中,可以通过两种途径建立一个模糊控制器。一种是通过MATLAB提供的模糊逻辑工具箱(Fuzzy Logic Toolbox)编辑隶属函数、控制规则来实现的;另一种是通过在M文件编辑器里编写S-function来实现的。这两种方法各有特点,它们分别适用于不同的控制对象和系统,设计和实现方法都简单直观、方便易行。下面就两种方法举例说明。
方法一:基于模糊逻辑工具箱的控制器设计并利用SIMULINK进行仿真
(1)隶属度函数的确立。
选择偏差E和偏差变化率EC作为控制器的输入,控制量U为输出。取E、EC和U的模糊子集为{NB,NM,NS,ZO,PS,PM,PB},它们的论域为{-3,-2,-1,0,1,2,3}。在MATLAB的命令窗口输入命令Fuzzy,进入模糊逻辑编辑窗口。取输入量E、EC的隶属函数为高斯型(gaussmf),输出U的隶属西数为三角形(trimf)。如图3-3,3-4所示。若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn
图3-3 输入E,EC的隶属函数曲线
图3-4 输出U的隶属函数曲线
(2)模糊控制规则与决策方法的确立。根据隶属函数和控制经验设计的控制规则如表3-1所示。
表3-1 模糊控制规则表
E
EC
NB
NM
NS
ZO
PS
PM
PB
NB
NB
NB
NM
NM
NM
NS
NS
NM
NB
NM
NM
NS
NS
ZO
PS
NS
NM
NM
NS
NS
ZO
PS
PM
ZO
NM
NM
NS
ZO
PS
PM
PM
PS
NM
NS
ZO
PS
PS
PM
PM
PM
NS
ZO
PS
PS
PM
PM
PM
PB
PS
PS
PM
PM
PM
PB
PB
以 “if…then”的形式在RuleEditor窗口输入这49条规则,这样就完成了控制规则的编辑。在本控制器中,模糊决策采用Mamdani型推理算法,逆模糊用重心平均法(centroid)。这样就利用模糊逻辑工具箱建立了一个FIS型文件,取文件名为f.fis,再建立一个名为flc.m的M文件,其内容为:flcs=readfis(‘f.fis’),这样就完成了FIS型文件同SIMULINK的连接,为下一步的系统仿真打下了基础.
在SIMULINK环境下将相应的模块拖入到新建的空白框里并连接好,如图3-5所示,在将已经编写好的模糊控制器导入到工作空间就可以进行仿真了。
图3-5 模糊控制系统
方法二:运用M文件编写模糊控制器并进行仿真
对于一个二维模糊控制器,当输人变量E、EC和输出量U的论域等级划分相同时,引人描述控制规则的解析表达式
U=-[aE+(1-a)EC] a ∈(0,1) (3-1)
通过调整a值便可以调整控制规则。a的大小直接反映对误差E和误差变化率EC的加权程度,这恰好体现了人们进行控制话动的思维特点。同时依此产生的控制规则
先进控制在组态软件中的扩展与应用
也体现了人脑推理过程的连续性和单值性等特点。
对一个常规的二维控制器而言,在控制过程的初始阶段,系统的误差较大,控制系统的主要目的是消除误差,这时希望误差值的加权系数太一些;反之,当控制过程趋向稳定时,系统误差已经较小,控制系统的主要任务是减小超调量,使系统尽快稳定,这就需要增大误差变化率的加权系数,为此采用两个可调因子 , 的方法,如
U=-[ E+(1- )EC] 当|E|≤m/2时
U=-[ E+(1- )EC] 当|E|>mr2时 (3-2)
其中 、 ∈(0,1), < ,m为输入量E、EC的论域最大值。
基于以上的分析,在M文件编辑器里编写相应模糊控制器的S-function,如下所示:
function[sys,x0]=fics(t,x,u,nag)
ke=19;
kc=4;
ku=30;
al=0.8;
a2=0.2:
if
abs(flag)==3
E=round(ke*u(1));
EC=round(kc*u(2));
e=u(1);
if e>0.04
sys=ku*(al*E+(1—a1)*EC);
else
sys=ku*(a2*E+(1—a2)*EC);
end
else if flag==0
sys=[0;0;1;2;0;0];
else
sys=[];
end
这样就完成了对控制规则可调整的模糊控制器的S-function描述.取文件名为fics.m。
3.3.2 模糊控制器在InTouch中的实现
在MATLAB环境下编写好模糊控制器后,需要通过DDE协议进行MATLAB和InTouch之间的通信。DDE是程序间数据交换的主流技术,它使用Windows消息和共享的内存,使相互合作的应用程序能够交换数据。
要实现DDE通信,首先打开InTouch中Windowmaker中的特别-访问名设置访问名,访问名为DDE_MATLAB,应用程序名为matlab,主题名为Engine,要使用的协议选用DDE协议。
然后是MATLAB如何实现与InTouch通信,MATLAB作为DDE客户机程序的工作过程如下:首先。是用ddeinit函数与服务器建立对话,建立成功则该函数返回一个通道号。以后的操作均对这个通道号进行。然后用ddeadv请求建立热链。ddereq向服务器索要数据,返回值是存有数据的矩阵。ddepoke函数向服务器发送数据。在本文中,INTOUCH编制的主控程序将数据送到MATLAB程序进行仿真计算。计算后将结果返回INTOUCH。下面是MATLAB与服务器连接的程序结构:
channel=ddeinit(view ,tagname); 建立与服务器的对话,并返回通道号。
rc=ddereq(channel,tagname); 从InTouch中获取数据。
rc=ddepoke(channel, item ,result);请求向服务器发送数据。
rc=ddeterm(channe1); 请求解除与服务器已建立的对话。
其中rc是返回值,1表示成功,0表示操作失败。channel是由ddeinit函数得到的通道号 item是DDE会话的主题。在M文件需要从InTouch中获得数据的地方运用ddereq函数,InTouch中的标记名要与MATLAB中要进行运算的变量名一一对应,计算后的结果通过函数ddepoke传回到InTouch中,此处的变量也要和组态软件中的表示结果的标记名相对应。以上程序与服务器建立连接后,进入等待状态。只要服务器数据发生变化,就会将新的数据传到MATLAB中进行计算并传回新的计算结果。
3.4 本章小结
本章首先简单的介绍了组态软件InTouch,较为详细的介绍了模糊控制理论的原理并通过具体例子描述了模糊控制器的实现方法以及在MATLAB环境下实现和仿真,本章介绍了两种方法,即运用M文件和运用SIMULINK进行仿真。最后说明了如何将模糊控制器和InTouch联系起来以实现二者之间的数据交换,本章以MATLAB作为客户端,需要在InTouch设置好访问名,在MATLAB里面利用不同的函数来实现与InTouch的通信,最终达到将模糊控制算法嵌入到InTouch中的目的。
本文选用编写模糊控制器的方法是利用M文件来实现并进行仿真,具体实现方法将在下一章中详细讲到。
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
第四章 InTouch模糊控制功能扩展的具体实施
4.1 总体方案设计
4.1.1 设计思想
如图4-1所示,输入的测试信号及其它一些要用于计算的参数由InTouch中给出并传入MATLAB中进行计算,再将结果传回InTouch中,二者之间的通信由DDE协议来完成。若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn
图4-1 MATLAB 和InTouch之间的通信
4.1.2 系统被控对象的确定
假设一典型二阶系统的传递函数为
(4-1)
以这个二阶系统作为被控对象,测试信号为阶跃信号,现利用MATLAB设计模糊控制器并对该控制系统进行仿真。在InTouch环境中设计相应的控制界面,并可以改变其中一些参数。
当MATLAB和InTouch之间的通信连接起来以后,测试信号从InTouch中传入MATLAB,并且通过改变InTouch界面上的参数,MATLAB中的计算结果做出相应的改变并传回到组态界面中显示出来。
4.1.3系统总体结构图
系统总体结构图设计如图4-2,核心部分为模糊控制器,测试信号为阶跃信号。
图4-2 系统总体结构图
其中设置了三个限幅,限幅器1、限幅器2的限幅范围是[-6,6],其作用是把控制系统的误差及误差导数由基本论域变换到模糊控制器输入变量的论域。假设被控对象允许的最大输入是±20,因而在被控对象的前面设置了限幅器3,其限幅范围是[-20,20]。
通过反复试验设定输入e的量化因子k1初始值为30,ec的量化因子k2初始值为0.3,输出u的比例因子k3的初始值为60.通过模拟示波器来观察仿真后的结果。
4.2 基于MATLAB的模糊控制器的设计
4.2.1 隶属度函数及模糊控制规则的确定
设控制系统的输入为阶跃信号r,输出为y,误差为e1,误差导数为ec1,被控对象的输出为u1。模糊控制器与e1、ec1对应的输入分别为e、ec,与u1对应的输出为u。e,ec,u的论域取[-6,+6],语言值取5个,分别为“负大NB”,“负小NS”,“零ZR”,“正小PS”和“正大PB”。NB、NS、PS、PB取梯形隶属度函数,ZR取三角形隶属度函数。e、ec、u的隶属函数均相同,设置如下:e、ec、u [-6 6],NB [-8 -6 -5 -3] trapmf,NS [-5 -3 -2 0] trapmf,ZR [-2 0 2] trimf,PS [0 2 3 5] trapmf,PB [3 5 6 8] trapmf。e、ec、u的隶属度函数如图4-3所示。
图4-3 e/ec/u的隶属函数曲线
根据经验,可以得到用“if…then…”形式表达的25条模糊控制规则:
1.if(e is NB)and(ec is NB)then(u is NB)
2.if(e is NB)and(ec is NS)then(u is NS)
3.if(e is NB)and(ec is ZR)then(u is NS)
.
.
.
23.if(e is PB)and(ec is ZR)then(u is PS)
24.if(e is PB)and(ec is PS)then(u is PB)
25. if(e is PB)and(ec is PB)then(u is PB)
以上模糊控制规则共计25条,这些控制规则可以总结归纳成表4-1:
表4-1 模糊控制规则表
ec
e
NB
NS
ZR
PS
PB
NB
NB
NS
NS
ZR
PS
NS
NB
NS
ZR
ZR
PS
ZR
NS
NS
ZR
PS
PS
PS
NS
ZR
ZR
PS
PB
PB
NS
ZR
PS
PS
PB
建立好的模糊控制规则曲面如图4-4所示。
图4-4 模糊控制规则曲面
4.2.2 运用M文件编写模糊控制器并进行仿真
打开MATLAB中M文件编辑器,部分源程序如下:
clear all;
close all;
a=newfis('w1'); % 定义模糊控制器
. % 定义输入输出变量e,ec u
.
. % 模糊控制规则定义
a=addrule(a,rulelist); % 将模糊控制规则加到a中
a1=setfis(a,'DefuzzMethod','centroid'); % 解模糊的方法设置为centroid
writefis(a1,'w1'); % 将a以w1命名写到磁盘中
a2=readfis('w1'); % 从磁盘中读出并保存在工作空间中
ts=0.01; % 设置采样时间
sys=tf(9,[10,11,1]); % 被控对象的传递函数
dsys=c2d(sys,ts,'z'); % 将被控对象的传递函数离散化为差分方程
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
[num,den]=tfdata(dsys,'v'); % 将差分方程的分子赋给num,分母赋给den
.
.
.
for k=1:1:300 % 循环开始
time(k)=k*ts;
rin(k)=1; % 设置输入值
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; % 计算输出
error(k)=rin(k)-yout(k); % 计算偏差
ei=ei+error(k)*ts;
u(k)=evalfis([e_1 ec_1],a2);
u(k)=60*u(k); % 乘以比例因子
if u(k)>20 % 加限幅
u(k)=20;
end
if u(k)<-20
figure(1);
plot(time,rin,'r',time,yout,'k'); % 显示输入输出图形
xlabel('Time(second)');ylabel('rin,yout');
4.3 监控组态界面的设计
4.3.1 整体结构设计
总体结构分为四个界面,首先是登录界面,输入密码后进入主界面,通过主界面上的触动按钮分别可以进入实时趋势界面和历史趋势界面或者退出系统。
另外通过主界面上的方框还可以改动相应的参数。同理在历史趋势或者实时趋势界面上也可以通过相应的按钮进行各个界面之间的互相切换。
监控界面总体流程图如图4-5所示。若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn
图4-5 监控界面流程图
4.3.2 主界面的设计
(1)新建一个程序并制定其路径后,打开InTouch的Windowmaker,新建一个窗口,如图4-6所示,定义名称为“mian”,点确定,出现一个窗口。
图4-6 设置窗口属性
利用相应的绘图工具在新建的窗口中绘出系统框图,系统主界面总体结构框图如图4-7所示。
图4-7 系统总体结构框图
(2)定义标记名字典,打开工具栏-特别-标记名字典,如图4-8所示,点新建,输入相应的标记名名称并进行设置,保存。
图4-8 定义标记名字典
其他的标记名如上步骤定义如表4-2.
表4-2 标记名的定义
标记名
类型
初始值
最小值
最大值
访问名
注释
DISC
内存实型
0
0
5
-----
入口密码
TAG_JY
I/O整型
3
0
5
DDE_MATLAB
阶跃信号
TAG_XY
I/O整型
0
0
8
DDE_MATLAB
输出响应
TAG1
I/O实型
30
20
40
DDE_MATLAB
量化因子K1
TAG2
I/O实型
0.3
0.1
0.5
DDE_MATLAB
量化因子K2
TAG3
I/O整型
60
50
80
DDE_MATLAB
比例因子K3
HistTrend1
历史趋势
-----
-----
-----
-----
历史趋势
(3)动画连接
双击“改变阶跃信号”后面的“#”符号,出现如图4-9所示的对话框。
图4-9 设置动画连接
选择值显示-模拟,在出现的对话框中表达式的空白处双击,出现如图4-10所示的对话框,选择标记名TAG_JY,点确定。完成对输入阶跃信号终值的动画连接的设置。
图4-10 选择标记
以此类推,双击K1,K2,K3后面的“##”符号,打开值显示-模拟,分别选择标记TAG1,TAG2,TAG3来完成动画连接。
在主界面中,双击“历史曲线”那个方框,出现动画连接的对话框,选择触动按钮-显示窗口,出现如图4-11的对话框。选择窗口history,点确定。
图4-11 触动时窗口的动画连接
同理,双击“实时趋势”或者“退出系统”按以上步骤设置便可以在触动相应的按钮时切换到相应的界面。主界面的动画连接基本设置完毕。
在运行时,可以在主界面中完成量化因子K1,K2,和比例因子K3以及阶跃信号的改变设置,并可以通过最下面的方框按钮切换到相应的界面。
先进控制在组态软件中的扩展与应用
4.3.3 登录界面,实时趋势界面和历史趋势界面的设计
(1)登录界面的设计
新建一个窗口,定义为“entrance”,按下图画出界面。如图4-12所示。若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn
图4-12 登录界面
双击“密码”后面的“####”符号,选择用户输入-模拟,出现如图4-13所示对话框,双击标记名空白处选择标记DISC1,点确定。
图4-13 入口密码的标记名设置
双击“进入主界面”后的箭头,选择触动按钮-动作,出现触动的动作脚本,如图4-14所示。在空白框内写好脚本IF DISC1 ==1111 THEN Show"mian"; ENDIF;点确定,完成此处动画连接。
图4-14 触动动作脚本
在运行后,输入密码为“1111”后回车 ,点箭头便可以切换到窗口“mian”,即主界面中。
(2)实时趋势界面的设计
新建一个窗口命名为“tendency”,选择工具栏最右边的实时趋势,在窗口中拉出一个实时趋势框图,如图4-15所示。
双击实时趋势中的空白处,出现如图4-16的对话框,设置如下,双击“笔”的空白部分,并选定“笔1”标记为TAG_JY,“笔2”标记为TAG_XY,将笔宽设置为2。
图4-15 实时趋势图
将样本间隔设置为100毫秒,时间跨度设置为1秒,时间跨度必须是样本间隔的倍数,点确定。则实时趋势配置完毕。
图4-16 实时趋势的设置
运行时,实时趋势中将显示输入阶跃信号和输出响应的实时变化曲线。
最下一列的方框按钮的设置与主界面中设置原理相同,按下相应的方框按钮时会切换到相应的界面。
(3)历史趋势界面的设计
新建一个窗口命名为“history”,选择工具栏-向导-趋势-含指示器和刻度的历史趋势,点确定,在窗口中拉出一个历史趋势框图。如图4-17.
图4-17 历史趋势
选择工具栏中特别-配置-历史记录,会出现如图4-18对话框。选择“启用历史记录”,点确定。选择工具栏中特别-标记名字典,分别选择标记TAG_JY和TAG_XY,在“记录数据”前的方框里打钩并确定。
图4-18 启用历史记录
双击历史趋势空白处,出现如图4-19的对话框。选择历史标记HistTrend1,初始时间跨度为30秒,初始值显示模式为最小/最大。“笔1”对应的标记名为TAG_JY,“笔2”对应的标记名为TAG_XY,将笔宽设置为2,点确定完成设置。
图4-19 设置历史趋势
运行时可以通过选择时间段来显示某个时间段的输入阶跃信号和输出响应变化情况。历史趋势界面最下面的按钮方框设置与主界面相同,当运行时按下相应的方框按钮会切换到相应的界面窗口。
4.4 组态软件InTouch和MATLAB的通信
4.4.1 InTouch的DDE接口设置
打开InTouch中Windowmaker中的特别-访问名设置访问名,访问名为DDE_MATLAB,应用程序名为matlab,主题名为Engine,要使用的协议选用DDE协议。如图4-20.
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
图4-20 设置访问名
打开特别-标记名字典,选择需要与MATLAB进行数据交换的标记名并将其访问名设置为DDE_MATLAB,所需要设置的标记名如上表4-2所示。
4.4.2 MATLAB和InTouch之间的通信
本文选择用编写M文件的方法使二者之间进行数据交换,部分M文件程序如下:
chann=ddeinit('view','tagname'); 建立通道号,若返回值为0,则建立失败,若返回值不为0,则建立成功
r1=ddereq(chann,'TAG_JY'); 从InTouch中获取与标记名TAG_JY对应数据,即获得输入阶跃信号
r3=ddereq(chann,'TAG1'); 从InTouch中获得与标记名TAG1对应的数据,即量化因子K1
r4=ddereq(chann,'TAG2'); 从InTouch中获得与标记名TAG2对应的数据,即量化因子K2
r2=ddereq(chann,'TAG3'); 从InTouch中获得与标记名TAG3对应的数据,即比例因子K3
.
.
.
r5=ddepoke(chann,'TAG_XY',yout(k)); 将以上这些从InTouch里面的采集的数据在MATLAB里面经过计算后再将结果传回InTouch中标记名为TAG_XY的标记,即系统的输出响应并通过趋势图显示出来
ddeterm(chann); 取消通道号,终止通信
通过以上这些函数就可以实现MATLAB和InTouch之间的动态数据交换,InTouch
实现现场数据采集功能,并将采集好的数据通过DDE协议传到MATLAB中进行计算,
再将计算结果传回并在组态界面中显示出来。完成了InTouch和MATLAB之间的通信。
4.5 本章小结
本章主要针对一个具体的二阶对象进行了总体方案设计,首先在MATLAB环境下用M文件实现模糊控制器的编写并进行仿真,然后设计好相应的组态监控画面并通过DDE协议实现二者之间的动态数据交换,通过具体的实例实现了将先进控制算法即模糊控制算法嵌入到组态软件中扩展了其控制功能。仿真结果及分析在下章中会详细讲到。
第五章 调试及仿真结果分析
5.1 初始数据不变时的调试仿真结果及分析
打开InTouch并运行,出现登录界面“entrance”,如图5-1,输入密码“1111”回车,点击下面的箭头登录进入主界面。
若图片无法显示请联系QQ3710167,先进控制在组态软件中的扩展与应用系统免费,转发请注明源于www.lwfree.cn 图5-1 运行时的登录界面
进入主界面如图5-2所示,参数可以在界面上的浮动方框内设置变动,但是对参数的变化范围进行了限定,当参数在小范围内变化的时候,模糊控制规则仍然能够满足期望输出。初始参数如图所示,阶跃信号为3,量化因子K1,K2分别为30和0.3,比例因子K3为60.
打开MATLAB-open file,选择fuzz1.m打开。选择工具栏中Debug-Run进行仿真,MATLAB程序中的输入信号和用来计算的参数如量化因子比例因子等等均是从InTouch中传过来的.
仿真结果如图5-3所示。通过图5-3可以看出,响应曲线在经过一段时间的超调后恢复平稳,模糊规则基本符合控制要求,各个参数也顺利的从InTouch中传入MATLAB中并完成了计算。
图5-2 运行时的主界面
图5-3 仿真结果图
在组态软件主界面中,选择实时趋势切换到实时趋势界面中,由此可以观察到在实时趋势框中,输出响应在一段时间的超调震荡后趋于稳定。
选择历史趋势进入到历史趋势界面中,通过设置时间段可以观察到该时间段的历史趋势曲线,时间的设置如图所5-4所示。将显示模式设置为“最小/最大”,图标范围设置如图,“最小”设置为0%,“最大”设置为100%,最上排的时间对应于仿真和通信程序运行的时间。由于仿真的时间较短,所以图标长度的设置不能太长,一般都选择以秒为单位。
图5-4 历史趋势时间设置
设置好时间后,可以在历史趋势界面中看到这段时间的历史趋势曲线,如图5-5所示。通过图5-5可以看出,从InTouch中传入MATLAB里进行计算的参数进行计算后顺利的将计算结果传回给InTouch中相应的标记名并在图中显示出来。
图中红色曲线对应的标记名是TAG_XY,代表的是输出响应,黑色的曲线对应的标记名是TAG_JY,代表的是输入阶跃信号。观察该趋势曲线可以看出,输出响应在经过一段时间的超调后恢复平稳,和输入信号合为一条直线,渐渐趋于稳定,基本和期望结果一致。
图5-5 历史趋势曲线
5.2 改变参数的情况下调试仿真结果分析
进入主界面的步骤如5.1所示,输入密码进入主界面。在主界面中修改输入阶跃响应,比例因子及量化因子的值如表5-1所示:
表5-1 修改后的新参数值
输入阶跃信号
2
量化因子 K1
20
量化因子K2
0.35
比例因子K3
70
在主界面上修改参数如图5-6所示。由于参数的变化设置了上下限,所以新的参数必须在这个范围之内变动,可以通过小键盘输入的方式修改参数值。
图5-6 在主界面中修改参数
修改参数后在MATLAB中的仿真结果如图5-7所示。
图5-7 修改参数后的仿真结果
在主界面中点击“历史趋势”切换到历史趋势界面,设置好相应的时间段,可
先进控制在组态软件中的扩展与应用
图5-8 修改参数后的历史趋势图
通过这些图可以看出,若参数在小范围内波动,其结果仍然符合预期结果,响应曲线在震荡后趋于平稳。
实验结果表明,在InTouch界面上修改好新的参数以后,这些新的设置好的参数也可以顺利传到MATLAB中进行计算并将新的计算结果传回InTouch中显示出来。表明二者之间的通信顺畅无误。
5.3 本章小结
本章主要对调试及仿真的结果进行了分析,从仿真结果可以看出,模糊规则符合期望结果,并且在InTouch中修改参数后,新的参数值也能够顺利的传到MATLAB中进行计算,MATLAB也能准确将新的计算结果传回。结果表明MATLAB和InTouch之间的通信无误,二者之间能进行顺利的动态数据交换。本章用实验结果进一步证明了将模糊控制算法嵌入到InTouch中扩展其功能是可以实现的,用事实印证了利用先进控制策略嵌入组态软件中以扩展其控制功能是可行的。
结论
本文通过对一个二阶系统设计模糊控制算法程序并进行仿真,最后通过DDE通信协议将已经设计好的模糊控制算法嵌入到组态软件InTouch中,实现了将先进控制算法(即模糊控制算法)嵌入到组态软件(即InTouch)中扩展了组态软件的控制功能。
模糊控制算法在MATLAB6.5的平台上实现,设计好适合对象的模糊控制规则并通过编写M文件进行仿真,仿真结果如第五章所示,结果表明,本文所设计的模糊控制规则符合期望结果。组态界面的设计在InTouch9.5的平台上实现,通过设置动画连接可以在运行界面上直接修改参数,InTouch和 MATLAB的通信程序嵌在MATLAB中模糊控制算法的仿真程序中,当二者之间的通信连上以后,InTouch向MATLAB发送数据,在MATLAB中进行计算后将结果传回。当InTouch这边界面上的参数改变,传入MATLAB中的数据也会做相应的改变,在计算出新的结果之后再将结果传回,实验结果表明,二者之间的通信顺畅无误,能够成功的实现InTouch和MATLAB之间的动态数据交换。这样一来,MATLAB强大的算法功能弥补了InTouch在控制算法功能上的不足,成功实现了利用模糊控制算法扩展InTouch的控制功能。
综上所述,利用先进控制扩展组态软件的功能是可以实现的,先进控制算法和组态软件二者互补,各自发挥所长,使组态软件的功能更为强大以更好的适应工业生产的需求。
总结与体会
本设计圆满完成了任务书中的要求和开题报告中的计划安排。仿真结果基本符合预期结果,并且成功的将先进控制算法嵌入到组态软家中实现了二者之间的动态数据交换。
完成本次毕业设计使我有了很大的收获。让我对一个工程项目从立项、审题、实际调研、确定计划书,到建立整体框架、进行各部分的设计和开发,再到整体的运行调试这一完整的流程有了清楚的认识。在设计开始的初步阶段,由于对所要用的软件不熟悉不确定用哪些方案做设计等等原因而屡次受挫,在通过不断的查阅资料过程不断学习的过程中慢慢对课题有了一个明确清晰的认识。在老师的悉心指导下逐渐解决了碰到的一个个问题。从开始的毫无头绪到后来慢慢熟悉了软件的使用经历了一个艰难的过程,但是这个过程却让我获益良多,培养了我发现问题解决问题的能力,这是一个将理论转化成实践的过程,是对所学知识的累积和巩固。除此之外,我还明白一个道理,万事开头难,任何事情只有自己通过刻苦的钻研和学习,百折不挠,遇到问题不是一味退缩而是去寻求解决的办法,才能真正掌握该方面的知识,达到自己的预期目标。
通过本次设计使我受益匪浅,我还深刻体会到团队合作的重要性,有了团队的合作,可以取得事半功倍的效果,这对我今后走入工作岗位有非常大的帮助!
谢辞
本次论文是在信息工程与自动化学院李老师的指导下完成的。在做论文的过程中,李老师耐心的指导我怎么使用工控组态软件以及提供给我许多给本次设计有帮助的书籍,随时都和我们保持联系并督促我的设计进度,使我能顺利并且及时的完成本次论文。
在做设计的过程中,老师严谨的治学态度和废寝忘食的工作精神给了我深刻的启发,也给了我很大的触动,让我明白在以后的学习生活中要更加严于律己。在此,对老师在工作和生活中给予的指导和关心致以最真诚的谢意。
同时在这里还要感谢昆明理工大学信息工程与自动化学院自动化系给予我们的关心和支持,感谢自动化系给予我们上机实验方便。
感谢同组的杨,李,普和刘等同学在这段时间对我的帮助,在我受到挫折的时候给予的关心和支持,感谢自动化系里其它的一些同学在设计过程中对我的关心鼓励。
我们即将毕业,在此,再一次向四年中在学习和生活中给予过我帮助的老师和同学致谢,感谢他们在这四年的学习和生活中给予我的鼓励和支持,感谢学校给予我们大家在一起相聚的机会,让我感受到校园里老师的关爱和同学们的亲切,在这里我真心祝愿我的老师和同学们都有一个美好的未来。
模糊控制功能在InTouch平台DDE技术在组态软件中扩展先进控制功能的方法
参考文献
[1] 章卫国,杨向忠.模糊控制理论与应用[M].西安:西北工业大学出版社,2004
[2] 马正午,周德兴.过程可视化组态软件InTouch应用技术[M].北京:机械工业出版社,2006
[3] 孙庆.模糊控制综述.控制工程[J].1995(3):8~13
[4] 李友善,李军.模糊控制理论及其在过程控制中的应用[M].北京:国防工业出版社,1996
[5] 李士勇.模糊控制、神经控制和智能控制理论[M].哈尔滨:哈尔滨工业大学出版社,1996
[6] 惠磊, 肖民.基于DDE技术实现Matlab与InTouch通讯研究[J].江苏科技大学学报(自然科学版) ,Vol.20(4),2006,8:42-45
[7] 冯冬青,张希平,费敏锐.一种基于MATLAB的模糊控制器综合优化设计方法[J].系统仿真学报,Vol.16(4),2004,4:849-852
[8] 张翼飞,杨辉,邓方林.二阶系统模糊变结构控制器设计及稳定性分析[J].系统工程与电子技术,Vol.27(2),2005,2:312-315
[9] 候北平,卢佩,陈峰军.MATLAB下模糊控制器的设计与应用[J].测控技术,Vol.20(10),2001:40-42
[10] 候志祥,刘振闻.基于MATLAB的模糊控制器的设计与仿真[J].微计算机信息,Vol.17(12),2001:78-81
[11] 胡建平.用Matlab实现空调温度模糊控制器的设计与仿真[J].上海工程技术大学学报,Vol.20(1),2006,3:117-121
[12] 吴新忠,陈更林.DDE技术在基于组态软件的测控系统中的应用[J].国外电子测量技术,Vol.24(12),2005,12:234-240
[13] 李修亮,张宏建,胡亦鹰.基于动态数据交换的组态软件与Matlab应用程序间的通信[J].自动化仪表,Vol.24(12),2003,12:55-58
[14] 石红瑞,刘俊霞,孙洪涛,马智宏.先进控制在RSView32 平台上的扩展及应用[J].控制工程,Vol.11(3),2004,5:43-46
[15] 张勇,邵一舟.利用DDE 技术实现组态软件功能的扩展[J].微计算机信息,Vol.21(12-1),2005:111-116
[16] 崔艳芳.ActiveX控件在组态软件中的应用[J].工业控制计算机,Vol.18(5),2005:243-247
[17] 林跃,张彦武.OPC 技术及其在工控组态软件中的应用[J].基础自动化,Vol.8(2),2001,4:89-93
[18] Wonderware公司官方网站.www.wonderware.com.cn
[19] Wonderware公司InTouch9.5软件用户指南
先进控制在组态软件中的扩展与应用
英文翻译译文
三容水箱系统的模糊控制
摘要:运用模糊关系等式来实现的模糊反向推理可以用来确定与期望过程输出相应的控制动作,作为被控对象的三容水箱有两个输入,因此描述对象动态过程的模糊关系是一个两变量决定的方程,算法程序只适用于求解单变量方程。本文提出了一种方法,将两变量的模糊关系方程分解为单变量变量,这样一来原有的算法程序就可以用来对对象产生控制作用。
关键词:模糊逻辑 反推理 过程控制
参数名称:
阀门Ⅰ的开度
A 水箱的横截面积
A, , C, 模糊集
, , , 模糊集
g 万有引力常数
水箱Ⅰ的液位
对于时间的导数
, , 描述对象的参数
, , 对应于参数的模糊变量
最大超调量
水箱Ⅰ的入口流量
矩阵 ’的元素
矩阵 的元素
, ’, , ’ 模糊关系矩阵
出口管的横截面积
连接管的横截面积
第Ⅰ个控制回路的控制动作
矩阵X的元素
多变量决定的模糊关系输入矩阵
, , , 模糊变量
第Ⅰ个控制回路的输出响应
过程输出的模糊化
ε 稳态误差
τ 上升时间
1.引言
模糊推理可以分为模糊前向推理和模糊反向推理。模糊前向推理致力于寻找出给定情况的因果关系,首先,它将给定情况和模糊规则的先行条件进行比较,如果他们相匹配,则模糊规则的结论将作为给定情况的结果。模糊反推理的目的是为称为目标的给定结论确定一个充分条件。它通过模糊关系A=>C寻找一个充分条件“A’”,如果A’找到了,则证明所给的目标是正确的,模糊反推理可以表达如下:
对 象:y is C’
模糊关系:If x is A Then y is C
充要条件:x is A’ (1)
假设给定目标是一个期望的过程输出,充分条件源于控制动作,则模糊反推理可以用来为具体的过程输出确定控制动作。这种运用模糊反推理确定控制动作的技术称为模糊反推理控制或者模糊后向推理控制(FBRC)。在模糊反推理控制中,模糊关系表示被控过程动态特性。控制过程的输出用模糊关系等式表示出来,例如:
(2)
此处的R是一个模糊关系X=>Y表示过程的动态变化,X是一个控制动作,Yd是给定目标。为了获得适合于对象Yd的控制动作X,模糊反推理通过求解模糊关系等式来实现。
模糊反推理确信已产生的控制动作一定能得到期望的输出。解决线性模糊推理等式的算法还包括用一个判断变量来获得合适的控制动作。
三容水箱对象是一个多输入多输出对象。在描述该对象的动态特性时,模糊关系的先行条件部分必然包括两个以上的输入,因此在相应的模糊关系等式中会包含多个决定动作的变量,并且现有的算法不足以判断决定控制动作。
本文介绍了一种利用模糊反推理控制实现多输入多输出系统控制,例如三容水箱系统控制的方法。这个想法是将描述多输入多输出系统的模糊关系等式分解为单变量判决的等式并运用合理的算法推导出控制动作。本文后续部分安排如下:第二部分描述了用来解释阐明所提出方法的三容水箱对象。第三部分讨论了不同变量之间存在相互作用的多输入多输出系统的分解。第四部分给出了获得的实验结果。
2.三容水箱对象
如图1所示,所有的水箱的横截面相同,它们用导管连接起来。水箱的液位通过控制入口水流量来控制。若图片无法显示请联系QQ3710167,三容水箱系统的模糊控制系统免费,转发请注明源于www.lwfree.cn
图1 三容水箱对象
此处有两个入口水流,一个到水箱Ⅰ(最左的水箱),另一个进入水箱Ⅱ(最右边的水箱)。两个水泵P1和P2。从蓄水池里面抽水以控制入口流量,连接水箱Ⅰ、Ⅱ和中间水箱Ⅲ的导管中的水流由操作阀门V1、V3来控制。从与水箱Ⅱ连接的导管流出的水流是对象的输出水流,用阀门V2控制出口水流,对象的干扰是水箱的渗漏。这些渗漏分别有阀门V4、V5、 V6控制。压力传感器用来测量液位。
当水箱通过连接导管耦合在一起时,则q1 q2的效果将彼此相互影响,例如,假设对象的初始状态稳定,设定水箱Ⅰ新的期望液位高于现有液位。水箱Ⅱ的液位h2保持不变,变量q1必须增加以使得水箱Ⅰ的液位值h1到达其新设定值,这是一个q1对h1的直接影响,但是因为水箱被耦合在一起,q1也会影响h2。因此需要减小q2来补偿因q1的影响而产生h2增加。同样q2的减小会使h1降低,这称作q1对h1的间接影响,这些相互影响可以从以下对象的数学模型中看出来。
(3a)
(3b)
(3c)
其中aZi表示第I个阀门的开度,A是水箱的横截面,Sn是连接导管的横截面面积,S1是出口导管的横截面面积。q1和q2之间的相互影响使得模糊反推理控制很难实施,这将在下一部分中讨论,
3.模糊反推理控制的维数分解
这个对象可以被看成是一个双输入双输出过程,两个输入是q1和q2,两个输出是h1和h2,描述过程动态的模糊关系等式是一个由两个变量确定的非线性等式。在运用模糊反推理算法之前,需要把这个等式转化成线性单变量决定的等式。
解决复杂问题的常用方法是假设一些未知参数已知来降低问题的复杂性。假如
三容水箱系统的模糊控制在一个两变量确定的等式[X1 X2]oR=Y中,假设X2已知,X1和Y1之间的模糊关系就构造出来了,表示为R´。因此,模糊关系等式变成了X1oR´=Y。这就是一个线性单变量确定的等式,当X1和X2存在相互影响时,这种直接的简化关系就不能实现。
在传统控制中解耦概念就是将多输入多输出对象中的相互影响分解。解耦器消除了控制动作对单回路控制的影响,即Uk(t)对另一个回路输出yi(t)的影响,因此分解Uk(t)和Ui(t)(i≠k)之间的相互影响。解耦器通过作出一个Uk(t)作用于yi(t) (i≠k)的附加动作来补偿Uk(t) 对yi(t) (i≠k)的影响。在这个时间范围内,当Uk(t)(i≠k)变化时yi(t)仍然保持等于yi(t-1)不变。
基于解耦器的概念,为三容水箱对象设计两个模糊反推理控制器,一个以q1作为输入变量,h1作为输出变量,它也有两个辅助变量h1和h3,这个控制器里的模糊关系是q1 h2 h3与h1之间的关系,表示为R1,控制器的模糊关系为:
[Q1 H1 H3]*R1=H1 (4)
其中,Q1 H1 H3和H1是对应于q1 h1 h3和h2的模糊变量。当选择了新的设定点h1sp时,等式h1(t+1)≌h1sp-h1(t)就会被计算一遍,并生成目标结果H1。 通过求解等式(4),可以推断出控制动作q1,当h1(t+1)被计算了一次,而辅助变量h3保持不变,则控制器产生了一个额外的效果来抵消q1对h3的影响,从而消除了q1对h1的间接影响。
辅助模糊变量H1和H3是由实测数据h1 h3算出,因此等式(4)可以重新写为线性等式,取名为 (5)
其中 R1′由R1,H1,H3算出。
一个三维矩阵定义为X=[Q1 H1 H3],输入Xijk=q1i ∧h1j∧ h3k表示模糊规则的先行部分,“if Q1 is A and H1 is B and H3 is Ck,Then H1 is Dl”,其中q1i h1j 和h3k分别是模糊矩阵Ai,Bj和Ck的元素的隶属度.
模糊关系矩阵R1是一个四维矩阵。R1的元素rijk是给定模糊规则的确定程度。
由等式(4),模糊矩阵D的元素的隶属度 计算为:
将Xijk用q1i ∧h1j∧ h3k替代,并且用t规范和t(∧和V)的结合律
和交换律来重组等式(6)如下: (8)
将以上步骤用于H1的所有元素h1l(l=1.2…L)推到出二维的模糊关系矩阵
当 完全定义后,给出一个新的设定点h1sp就可以用算法来解出线性模糊关系等式(5)并产生控制动作q1
另一个模糊反推理控制器具有类似的结构,它将变量q2作输入变量h2作为输出,辅助变量是h2和h3,仍然通过解耦技术来实现模糊反推理并从具体的设定点h2sp中获得控制动作。
4.实验结果
设计好的模糊反推理控制器用来在不同的操作条件下控制液位。首先,对象必须如下设置:三个水箱都是空的并完全连接在一起,出口阀门开度处于中间位置。设没有渗漏并且设定值h1sp和 h2sp为200mm,系统的初始状态稳定,设定值突然改变为h1sp=h2sp=400mm,突然给水箱Ⅱ增加20%的水流量来来模拟扰动,并维持120s直到对象重新恢复稳态.
以下为所有不同操作条件下的设计要求
稳态误差(ε)≤2.50% (9a)
上开时间( )≤90s (9b)
最大超调(Mp)≤5% (9c)
三容水箱模糊控制系统
图2 三容水箱在设定值从0变化为200mm时的响应
图2画出了液位h1和h2的时域响应,从图中可以看出,模糊反推理控制以很好的控制这些液位并能满足设计要求。
图3给出了设定点改变时的结果。和前一种情况相比较,对象需要更长时间才能到达更高的设定点。闭环系统的上升时间表示为 , 和设定点的高度不成比例。这是因为控制球阀的非线性。对象在不同的设定点都保持稳定。当水箱Ⅰ和水箱Ⅱ的设定点分别为200mm和400mm时系统稳态误差低于1.20%和0.65%。
若图片无法显示请联系QQ3710167,三容水箱系统的模糊控制系统免费,转发请注明源于www.lwfree.cn
图3 三容水箱设定值从0变化到400mm时的反应
水箱Ⅱ加扰动后的结果如图(4),图4(a)说明了控制器产生了一个小动作来克服扰动。图4(b)指出扰动对水箱的液位产生的影响,可以看出扰动使液位起了变化。
图4 加干扰的情况下三容水箱的响应
作为比较,传统的模糊控制器(FLC)的发展基于人们对相同三容水箱对象的控制经验。在这个控制器中设定值为200mm和400mm时对象的反应结果分别如图2图3所示,尽管传统的模糊控制器和模糊反推理控制器表现的结果很相近。但是这需要一个具有丰富模糊逻辑控制理论的工程师花了两天时间来获得所需要的知识并将它转换为模糊控制规划,另一方面通过模糊反推理的控制结构来实现只需要15分钟,可以预见,对于更多复杂对象开发时间上的区别将会更大。这些明确的证实了模糊反推理理论的优越性。
5.结论
三容水箱对象是一个多输入多输出对象,因此描述它动态过程的模糊关系等式是一个多变量决定的等式。本文提出的模糊反推理控制方法,首先将它的模糊关系等式转化成线性单变量确定的等式。运用合适的算法将等式解出并推导出合适对象的控制输入,通过实验可以看出模糊反推理控制器可以达到满意的稳态和暂态响应,并且能成功的克服扰动和系统设定值改变所造成的影响。
先进控制在组态软件中的扩展与应用源程序代码
%Fuzzy Controller
clear all;close all;
a=newfis('w1'); %定义模糊控制器
f1=1.0;
a=addvar(a,'input','e',[-6*f1,6*f1]); % 输入变量e定义
a=addmf(a,'input',1,'NB','trapmf',[-8*f1,-6*f1,-5*f1,-1*f1]);
a=addmf(a,'input',1,'NS','trapmf',[-5*f1,-3*f1,-2*f1,0]);
a=addmf(a,'input',1,'ZR','trimf',[-2*f1,0,2*f1]);
a=addmf(a,'input',1,'PS','trapmf',[0,2*f1,3*f1,5*f1]);
a=addmf(a,'input',1,'PB','trapmf',[3*f1,5*f1,6*f1,8*f1]);
f2=1.0;
a=addvar(a,'input','ec',[-6*f2,6*f2]); % 输入变量ec定义
a=addmf(a,'input',2,'NB','trapmf',[-8*f2,-6*f2,-5*f2,-1*f2]);
a=addmf(a,'input',2,'NS','trapmf',[-5*f2,-3*f2,-2*f2,0]);
a=addmf(a,'input',2,'ZR','trimf',[-2*f2,0,2*f2]);
a=addmf(a,'input',2,'PS','trapmf',[0,2*f2,3*f2,5*f2]);
a=addmf(a,'input',2,'PB','trapmf',[3*f2,5*f2,6*f2,8*f2]);
f3=1.0;
a=addvar(a,'output','u',[-6*f3,6*f3]); % 输出变量u定义
a=addmf(a,'output',1,'NB','trapmf',[-8*f3,-6*f3,-5*f3,-1*f3]);
a=addmf(a,'output',1,'NS','trapmf',[-5*f3,-3*f3,-2*f3,0]);
a=addmf(a,'output',1,'ZR','trimf',[-2*f3,0,2*f3]);
a=addmf(a,'output',1,'PS','trapmf',[0,2*f3,3*f3,5*f3]);
a=addmf(a,'output',1,'PB','trapmf',[3*f3,5*f3,6*f3,8*f3]);
rulelist=[1 1 1 1 1; % 模糊控制规则定义
1 2 2 1 1;
1 3 2 1 1;
1 4 3 1 1;
1 5 4 1 1;
2 1 1 1 1;
2 2 2 1 1;
2 3 3 1 1;
2 4 3 1 1;
2 5 4 1 1;
3 1 2 1 1;
3 2 2 1 1;
3 3 3 1 1;
3 4 4 1 1;
3 5 4 1 1;
4 1 2 1 1;
4 2 3 1 1;
4 3 3 1 1;
4 4 4 1 1;
4 5 5 1 1;
5 1 2 1 1;
5 2 3 1 1;
5 3 4 1 1;
5 4 4 1 1;
5 5 5 1 1;];
a=addrule(a,rulelist); %将模糊控制规则加到a中
a1=setfis(a,'DefuzzMethod','centroid'); %解模糊的方法设置为centroid
writefis(a1,'w1'); %将a以w1命名写到磁盘
a2=readfis('w1'); %从磁盘中读出并保存在工作空间中
ts=0.01; %设置采样时间
sys=tf(9,[10,11,1]); %被控对象传递函数
dsys=c2d(sys,ts,'z'); %将被控对象的传递函数离散化为差分方程
需要完整内容的请联系QQ3710167,本文免费,转发请注明源于www.lwfree.cn
%初始化实际输出
error_1=0; %初始化误差,误差变化率
e_1=0.0;
ec_1=0.0;
ei=0;
%----------------------------------------
% Start of Control
%----------------------------------------
for k=1:1:300 %循环开始
time(k)=k*ts;
chann=ddeinit('view','tagname'); %连接通道号
r1=ddereq(chann,'TAG_JY'); %从INTOUCH中获取输入阶跃信号
rin(k)=r1; %设置输入值
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; %计算输出
error(k)=rin(k)-yout(k); %计算偏差
ei=ei+error(k)*ts;
先进控制在组态软件中的扩展与应用源代码
u(k)=evalfis([e_1 ec_1],a2);
r2=ddereq(chann,'TAG3'); %从INTOUCH中获取比例因子
u(k)=r2*u(k); %乘以比例因子
if u(k)>20 %加限幅
u(k)=20;
end
if u(k)<-20
u(k)=-20;
end
u_3=u_2;
u_2=u_1;
u_1=u(k);
y_3=y_2; %y(3),y(2),y(1)分别保存最近三次的实际输出
y_2=y_1;
y_1=yout(k);
r3=ddereq(chann,'TAG1'); %从INTOUCH中获取量化因子
e_1=r3*error(k); %乘以量化因子
if e_1>=6 %加限幅
e_1=6;
end
if e_1<=-6
e_1=-6;
end
r4=ddereq(chann,'TAG2'); %从INTOUCH中获取量化因子
ec_1=r4*(error(k)-error_1)/ts; %乘以量化因子
if ec_1>=6 %加限幅
ec_1=6;
end
if ec_1<=-6
ec_1=-6;
end
error_2=error_1; %保存最近两次的误差
error_1=error(k);
r5=ddepoke(chann,'TAG_XY',yout(k));
ddeterm(chann);
end %循环结束
figure(1);
plot(time,rin,'r',time,yout,'k'); %显示输入输出图形
xlabel('Time(second)');ylabel('rin,yout');