摘 要:在工程实际中常遇到的流动、传热和燃烧等问题中, 大都为分布参数系统。针对该分布参数模型建模难的问题,结合 CFD 仿真软件 FLUENT 和系统仿真软件MATLAB 各自的优点,根据WinSock 网络通信原理,开发了 FLUENT/MATLAB 接口,建立了分布参数模型闭环控制快速原型的仿真平台,并且通过算例仿真验证了该方法的可行性与实用性。
关键词:FLUENT/MATLAB 接口;WinSock 网络通信;分布参数系统;仿真技术
中图分类号:TP391.9 文献标识码:A 文章编号:1004-731X (2008) 11-2851-04
Closed-loop Control Simulation Technology of Distributed Parameter System
Based on FLUENT/MATLAB Interface
BAO Wen, LI Wei-peng, CHANG Jun-tao, FU Hai-yang
(School of Energy Science and Engineering, Harbin Institute of Technology, Harbin 150001, China)
Abstract: The problems of fluxion, heat transfer and combustion which are frequently met in practical project are mostly distribution parameter system. In order to solve the difficulty in building the model of distribution parameter system, combined the advantage of CFD emulation software FLUENT and system simulation software MATLAB, according to WinSock network communication principle, the interface of FLUENT/MATLAB was developed, and a fast prototype simulation platform for the closed-loop control of distribution parameter system was established. And through calculation example, the practicality and the feasibility of this method were verified.
Key words: FLUENT/MATLAB interface; WinSock network communication; distributed parameter system; simulation technology
在工程实际中常遇到的流动、传热和燃烧等问题中, 大都为分布参数系统,其能量和质量在空间上是连续分布的,一般用偏微分方程描述其状态变化规律。此类系统动态过程的建模与仿真多采用简单易行的集总参数方法,但此方法难以反映系统参数的瞬态分布特性[1-3]。如果建立分布参数动态模型,存在建模难、计算量大的困难,并且许多模型仅限于零维或一维描述,往往不能反映符合实际的分布参数特性[4-7]。
目前,随着计算流体力学、计算热力学的发展和高速、大容量、低价格的计算机的相继出现,利用成熟的 CFD 商业软件(例如 FLUENT),对于工程中常遇到的非定常分布参数模型能够很好的模拟,并且其计算精度、可靠性和效率得到很大提高,在工程中的得到广泛的应用[8、9]。虽然商业CFD 软件具有建模简单、精度高等特点,但其不能实现对分布参数模型的闭环反馈控制,存在很大的局限。
本文结合 CFD 计算软件 FLUENT 和系统仿真软件MATLAB 各自的优点,利用网络通信协议实现了两者的接口,通过系统参数的实时同步传输,使得在 Simulink 中搭建的控制模块能够实时的控制 FLUENT 计算模型,建立了研究分布参数闭环控制的快速原型仿真平台,为研究分布参数系统仿真提供了新的思路。
收稿日期:2007-01-11
作者简介:鲍文(1970-),男,山东人泰安人,博士,研究方向为热能动力系统建模与控制、高超声速推进、智能信息处理等。
实现 FLUENT/MATLAB 接口技术关键在于解决两软件之间的数据传输,在保证 FLUENT 和 MATLAB 实时同步运行的前提下,两者的数据能够高效稳定的传输。应用 Internet网络通信传输数据的方法,在 Windows 仿真平台下,给同一台计算机上给两软件分配不同的网络端口,设计合理的网络通信函数嵌入两软件的接口函数中,通过控制网络通信协议传输数据的方式,就能够实现 FLUENT 与 MATLAB 的数据传输。
TCP/IP 协议是当今最为广泛应用的网络互联协议,包括应用层、传输层、互联网络层和网络接口层。传输层提供了节点间的数据传送服务,这一层负责传送数据,主要包括传输控制协议(TCP)和用户数据报协议(UDP)。在 TCP/ IP 协议组中,TCP 是一种面向连接的协议,为用户提供可靠的、全双工的字节流服务, 具有确认、流控制、多路复用和同步功能。UDP 协议则是无连接的,每个分组都携带完整的目的地址,各分组在系统中独立传送,它不能保证分组的先后顺序,不进行分组出错的恢复与重传。虽然 UDP 协议不保证传输的可靠性,但是提供高传输效率的数据报服务[10, 11]。由于 MATLAB/FLUENT 数据交互传输模型简单,并且为了提高数据传输效率并减小模拟仿真时间,采用 UDP协议。FLUENT 与 MATLAB 数据传输原理如图 1 所示。

FLUENT 软件采用基于完全非结构化网格的有限体积法,能够很好的模拟流体和传热分布参数模型的定常或非定常问题,它是用C 语言开发的,其常规功能不支持外部接口,但为用户提供了自定义函数(UDF),为 FLUENT 二次开发提供了条件。应用 UDF 的可以实现定制模型边界条件、定义材料属性、定义表面和体积反应率、添加输运方程中的源项、自定义标量输运方程等功能,同时也支持 Windows 库函数。因此, 应用 FLUENT 的 UDF 功能既可以定制和获取模型的系统参数,又能够编写接收和发送数据的通信函数。
Matlab 中的 Simulink 软件包集动态系统建模、仿真和综合分析于一身, 可以处理的系统包括:线性、非线性系统;离散、连续及混合系统; 单任务、多任务离散事件系统, 广泛地应用于控制领域。 MATLAB 由 C 语言开发的,在Simulink 中提供了 S-函数功能,用户可以根据需要编写函数,经过编译生成 MEX 动态链接文件,可以加载到 Simulink模块中。因此,通信函数可以通过 S- 函数编译加载到Simulink 模块中。

图 2 是 FLUENT 与 MATLAB 接口实现示意图,分别在S-函数和 UDF 中嵌入 UDP 网络通信函数,实现两个软件之间的数据传输,在保证两软件实时同步运行的前提下,那么就可以应用 Simulink 强大的系统仿真功能对FLUENT 模拟的分布参数模型进行控制,即可实现对仿真模型闭环反馈控制。
2.1 WinSock 数据报网络编程
WinSock(Windows Socket 的简称)是从 UNIX 系统的标准 TCP/IP 编程接口 Socket 演变而来,采用WinSock 实现应用程序数据通信的关系图如图 3 所示。WinSock 网络通信实现数据传输的基本单元是套接字,分为基于 TCP 协议的流式套接字和基于 UDP 协议的数据报套接字。数据报套接字比流式套接字模型简单,并且由于数据报套接字基于 UDP协议,传输效率高。

开发 MATLAB/FLUENT 数据通信接口,采用客户端与服务器(C/S)模式,数据传输采用基于 UDP 协议的数据报套接字。图 4 为采用数据报套接字服务器与客户端的通讯时序图,首先客户端和服务器端都要创建一个数据报套接字,然后通过 bind 函数绑定分配的端口,将套接字与本地地址相连。客户端和服务器端都可以使用 sendto 函数发送数据,使用 recvfrom 函数接受数据,完成数据报的传递。发送数据时,发送方除指定本地套接字号外,还需指定接受方的套接字号,从而在数据发送过程中建立全相关[12, 13]。

由于默认情况下 recvfrom 函数处于阻塞模式,在接受到数据前,程序将不会向下执行[14],这样就使得客户端与服务器端能够实时同步工作,满足了 FLUENT 与 MATLAB 在闭环反馈过程中实时同步运行。
2.2 FLUENT 客户端的实现
UDF 分为解释型和编译型,解释型不具备标准 C 编译器的所有功能,而编译型比解释型运行快,并且支持任何ANSI-compliant C 编译器,不存在 C 语言上的限制,因此使用编译型 UDF 建立网络通信函数。
编译型 UDF 需要安装 C 编译器(例如 VC++6.0),一旦编译好的 UDF 库文件在 FLUENT 链接运行后,与共享库相关的东西会保存到 case 文件中,那么只要读取 case 文件,编译的库文件会自动链接到 FLUENT 处理过程。编译型UDF 要在 FLUENT 安装目录下建立编译 UDF 库目录结构,如图 5 所示,编写好的源码放在 src 文件夹下,把 makefile和 user_nt.udf 两个文件复 制到相应版本的目录下,用文本文件编译 user_nt.udf 文件,设置 SOURCES 为编译好的用户自定义函数。在 MS-DOS 命令提示窗口,键入 nmake 建立目录,即可通过 UDF 面板进行链接。

UDF 函数的编写具有规定的格式,程序前要包含 udf.h头文件,通过 UDF 规定的宏命令读写模型参数。WinSock通信函数嵌入在 UDF 中,需包含 stdafx.h 、winsock.h 、 windows.h 、stdio.h 、stdlib.h 几个头文件,UDF 通信程序流程如图 6 所示,基本步骤为:
(1) 首先要定义变量,创建套接字并根据指定的端口填充本地地址,然后绑定套接字,验证是否与服务器端建立关联,从而判断程序是否向下进行。
(2) 在创建和绑定套接字无误后,通过 UDF 特定的宏命令提取 FLUENT 模型的控制参数变量,利用宏命令可以获取位置坐标、温度、压力、速度等参数及其不同方向的梯度,在本文的实例中用到,thread_loop_f( ) 、begin_c _loop( )和 C_T( )三个宏函数,其中 thread_loop_f( ) 、 begin_c_loop( )作用是循环单元面和控制体, 用 C_T( )获取单元面的温度.
(3) 将获取的变量数据发送到指定的服务器端口,发送数据后,通信函数处于阻塞状态,FLUENT 迭代计算不会向下运行,直到接受到 MATLAB 发送的数据。
(4) 发送到 Simulink 接收端的数据,与目标值比较,经控制器调节,输出量由 Simulink 发送端向 FLUENT 接收端口发送,并判定是否接收到数据。
(5) 在确认接受无误后,通过 UDF 宏赋值到模型边界或其它模型属性,例如反应速率、材料特性等。本文实例中用到 F_PROFILE( )宏函数把接收到的数据赋值为进口边界的温度。
(6) 判断是否达到迭代次数,如果迭代完成则跳出循环,并释放套接字;否则进入 FLUENT 流场求解计算,然后再调用 UDF 通信函数。
2.3 MATLAB-Simulink 服务端的实现
Simulink 为用户提供了 S-函数模块,可以根据不同的需要编写外部接口程序。图 7 为 S-函数的运行流程图,依照 S-函数的编写格式,把套接字的初始化和绑定程序编写在 S-函数的初始化函数里,数据的接受和发送程序写在 mdlOutputs 函数中, 最后释放套接字。分别编写接收和发送 S-函数,通过循环运行不断的与客户端传输数据。

在加载 Simulink 网络通信函数前首先运行 mex -setup或 mbuild -setup 命令来对编译环境进行设置,确定编译器为VC+ +6.0,然后对编写好的 cpp 文件进行编译,生成动态链接库文件,即可加载到 Simulink 模块中调用。仿真采用定步长,设置 Simulink 与 FLUENT 相同的时间步长和迭代次数,仿真开始首先启动 MATLAB 服务端。
为验证 FLUENT/MATLAB 通讯的可靠性,构建了混合器模型,如图 8 所示。混合器两进口初始温度分别为 350K和 290K,速度均为 10m/s,出口初始平均温度为 320.3K 。现在的问题是,在其他边界调节不变的情况下,如何构建闭环仿真,进而设计合理的控制器调节进口 1 的温度使得出口的平均温度快速的达到在目标温度 325K。

应用 MATLAB/FLUENT 接口技术,选用简单的 PI 控制器,在 Simulink 中搭建控制器和数据速度接发模块,如图 9所示。

尝试调节PI 参数,观测出口平均水温的变化规律,获得较好的系统动态特性。图10给出了四种不同PI参数被控量的变化规律,当Kp=1和Ki=25时,超调小,具有较好的动态特性,出口水温在0.6s后达到预定温度。

同时,当Kp=1和Ki=25时,在混合器模型的中线上选取四个温度测点,在 FLUENT 中设置观测器记录测点温度随时间的变化规律,如图11所示。图12为不同时刻温度场的分布图,可以看出整个温度场的变化趋势,另外利用FLUENT可以做成视频动画文件,能够更详细的观测模型各参数的变化规律。

本例中不仅可以控制出口的平均温度,通过编写合理的UDF 程序,还可以选取模型中任意位置的温度、压力等参数作为被控量,通过网络通信与 Simulink 传输数据,同样调节量可以是某边界的温度、压力或速度等, 也可以设置多参数调节。由此可知,FLUENT/MATLAB 技术适用于更复杂的分布参数系统,可以推广到更广泛的应用领域。
4 结论
本文针对该分布参数模型建模难的问题,结合 CFD 仿真软件 FLUENT 和系统仿真软件 MATLAB 各自的优点,根据网络通信原理,开发了 FLUENT/MATLAB 接口,有效合理的结合了两软件的优点,建立了分布参数模型闭环控制快速原型的仿真平台,为研究分布参数模型闭环控制仿真提供了研究平台,算例仿真验证了该方法的可行性与实用性,可以推广到更广泛的应用领域。
Simulink设计某一实验对象模型,充当辨识对象,仿真真实的实验对象即可。而这里的关键是构造仿真对象的数学模型。一旦模型确定,仿真的实验对象就有了。由于不需要真实设备,整个实验不需要购买设备,因此可大大节省设备投入资金。这也是虚拟辨识实验的一大优势。 引擎文件包括辨识对象的模型文件和辨识函数文件。辨识函数文件将由VLabServer调用,来控制仿真的过程。在此我们以文献[7]中提到的水槽对象为仿真辨识对象。此辨识对象由三个液位对象即三个透明有机玻璃液位槽组成。它们可单独工作,也可以串联工作。一个水槽可以看成一阶惯性系统,三个水槽的串联可以看成三个一阶惯性环节串联而成。模型如图7。

为了适应对象辨识过程的反复性及辨识算法的多样性,辨识函数文件分为主函数文件和算法函数文件。主函数文件只有一个,算法函数文件有多个。VLabServer虚拟实验服务器中设置多个子实验。实验时每个子实验调用其对应的算法函数文件。并且,每个实验所需要的参数,由主函数文件统一传递。主函数的定义如下式:
function[A,B,C,D,E,F,G]=labtank(subLabName, para1, para2, para3, para4, para5, para6, para7 )
其中:labtank为主函数名,这个函数名将在虚拟实验服务器配置中使用。SubLabName为子实验名,这个名字对应客户所设计的子实验名称。在辨识实验中,它共有AUTOCHECKING、SAMPLEDATA、IDENTIFICATION、模型阶次、DATAPREPROCESS、MODELCOMPARE六个子实验名。para1、para2、…、para7 为参数列表。由于每个子实验调用labtank函数时所用的参数个数不一样,因此其数量取决于参数最多的子实验。
本文介绍了系统辨识虚拟实验平台的软硬件结构、系统辨识客户端程序设计,VLabServer虚拟实验服务器程序设计和科学计算引擎文件设计等。由于采用B/S结构,用户能随时随地(Any Time and Any Where) 通过因特网访问系统。
系统集客户端程序、WEB服务器、虚拟实验服务器和Matlab/Simulink为一体,构建了一个切实可行的辨识虚拟实验平台。平台具有较强的扩展能力,增加实验对象的模型文件,就可增加辨识实验数量。三阶水槽对象的辨识虚拟实验的实现,验证了平台设计的可行性。
[1] C C Ko, B M Chen, S H Chen, V Ramakrishnan, R Chen, S Y Hu, Y Zhuang. A large scale web-based virtual oscilloscope laboratory experiment [J]. IEEE Engineering Science and Education Journal (S0963-7346), 2000, 9(2): 69-76.
[2] C C Ko, B M Chen, J Chen, Y Zhuang, K C Tan. Development of a web-based laboratory for control experiments on a coupled tank apparatus [J]. IEEE Transactions on Education (S0018-9359), 2001, 44(1): 87-104.
[3] 李仁发, 李方敏. 虚拟实验室网络体系结构研究[J]. 系统仿真学报, 2002, 14(3): 359-362, 393.
[4] 刘萍先, 俞立, 杨马英, 郑笑建. 控制系统网络虚拟实验室方案设计[J]. 计算机仿真, 2004, 21(2): 151-154.
[5] 郑笑键, 杨马英, 刘萍先. 控制系统网络虚拟实验室[J]. 计算机工程与应用, 2004, 40(10): 146-149.
[6] 方崇智, 萧德云. 过程辨识[M]. 北京: 清华大学出版社, 2002.
[7] 谢启. 预测函数控制技术及其应用研究[D]. 浙江工业大学硕士学位论文, 2002.
[1] 陈红,何祖威. 一维流体相变过程的统一分布参数模型及数值仿真方法[J]. 系统仿真学报,2005, 17(3): 571-573.
[2] 于达仁, 崔涛, 鲍文. 高超声速发动机分布参数控制问题[J]. 航空动力学报,2004, 19(2): 259-264.
[3] 宣宇清,胡益雄. 基于分布参数的房间空调蒸发器的数学模型及其仿真研究[J]. 制冷与空调, 2004, 3(4): 32-35.
[4] 初云涛,周怀春. 蒸发系统分布参数特性动态仿真研究[J]. 中国电机工程学报,2006, 26(11): 17-22.
[5] 董芄, 洪梅, 秦裕琨. 大型煤粉锅炉炉膛传热工程化三维数值计算方法及其应用[J]. 动力工程,2000, 20(2): 606-610.
[6] 朱金荣,章臣樾. 直流锅炉炉内传热及蒸发工况的实时数学模型[J]. 中国电机工程学报, 1991, 11(1): 63-72. (Zhu Jingrong, Zhang Chenyue. A Real-Time Mathematical Model for the Heat Transfer in The Furnace and The Evaporating Condition of An Once-Through Boiler [J]. Proceedings of the CSEE, 1991, 11(1): 63-72. (in Chinese).)
[7] Niu Z S, Wong K V. Adaptive simulink of boiler unit performance [J]. Energy Conversation Management, 1998, 39(13): 1383-1394.
[8] 赵兴艳,苏莫明. CFD 方法在流体机械设计中的应用[J]. 流体机械,2000, 28(3): 22-25.
[9] Kai Zhang, Jiyu Zhang, Biiang Zhang. CFD Model of Dense Gas2solid Systems in Jetting fluidized Beds. [J]. Chemical Research in Chinese Universities, 2002, 18(2): 117-120.
[10] 黄焕,黄赞. 一种基于 TCP协议的点对点通信方法[J]. 计算机与现代化, 2005, 9: 62-64.
[11] 胡延平,陈志刚,王志春,王建新. 基于UDP协议的语音聊天系统的设计与实现[J]. 计算机工程与设计, 2002, 23(12): 58-60.
[12] 庞文尧. 基于 C/S模式的远程控制系统研究开发 [D]. 浙江大学, 2003, 38-40.
[13] 冯长江, 古兆兵, 赵月飞, 赵盼. 基于 WinSock的远程控制技术的研究[J]. 仪表技术,2006, 1: 44-47.
[14] 殷肖川,刘志宏,姬伟锋,万映辉. 网络编程与开发技术[M]. 西安:西安交通大学出版社. 2003.
免责声明:
本页面/内容部分素材来源于互联网公 开 信 息,旨在传递更多信息,不代表本平台立场。
版权归原作者或机构所有,如涉及侵权,请通过平台联系我们,我们将在核实后第一时间处理。
本平台对转载内容的真实性、准确性不作任何保证,用户需自行判断并承担使用风险。