基于Simulink的水灭火系统仿真研究

时间:2022-10-19 12:58:57

基于Simulink的水灭火系统仿真研究

摘要:该文提出一种新的基于Visual c++的水灭火系统仿真模型,通过将C++代码转换成C代码植入到仿真模型中,可以大大优化仿真模型的开发,该文中Simulink软件和VSULAL C++软件的优点在仿真模型中得到完整的体现。该文还详细讨论了水灭火仿真系统的开发和实现。

关键词:消防系统;Simulink;VC++

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)19-4530-05

Water Fire Fighting System Simulation Based on Simulink

DI Xiang, WANG Chun-ping

(Zhengzhou Fire Detachment, Zhengzhou 450000, China)

Abstract: This paper presents an approach to integrate simulation model with Visual C++ easily by translating simulation model to embedded C++ code. Then the advantages of Simulink and Visual C++ are fully used by this approach. According to a real example the development steps and realization of water fire fighting system based on this approach is discussed in detail.

Key words: Fire Fighting System; Simulink; VC++

1 概述

目前市场对消防系统的需求越来越高, 对系统的处理速度要求也是越来越快,因此,消防系统的开发面临着快速发展和设计全面之间的矛盾。如何同时进行系统的设计、实施、测试和生产,对于消防系统的发展至关重要。本系统开发软件中使用Matlab语言创建一个新的图形化建模工具,消除了程序代码造成的效率低下和复杂的编程,可以便捷地创建一个系统模型(例如,面向对象的系统模型,控制器模型),通过控制算法仿真观察到该仿真模型的性能;而且,如果设计的控制算法不理想,可以快速修改设计和重复本次实验,直到找到一个完美的控制方案。至于控制算法的具体实现不需要手动开发,通过建立在RTW工具Simulink_RTW仿真软件可以进行开发。RTW工具可以把仿真模型转换成C / C++代码,这就可以在Matlab环境下独立运行并且读取到内存中,从而大大减少了软件工程师的工作负载。Simulink仿真软件是一个著名的图形化建模与仿真工具, 其便捷及灵活的建模功能可以仿真电子、电路、控制工程、信号处理等领域的问题,广泛应用于控制系统设计和仿真。该文提出的水灭火仿真系统综合以上所示各种特点,只需要在工作站终端上运行,利用电力系统工作原理形象仿真灭火系统。

2 运行环境和仿真理论

2.1 运行环境

水灭火仿真系统的运行原理与电力系统的原理类似,电力系统的仿真技术是一项非常成熟的技术,因此,可以利用电力系统的工作原理仿真消防系统的运行环境。系统的运行软件环境包括:

1) MATLAB 7.0软件

2) Simulink 6.2软件

3) RTW 6.2软件

4) VC++6.0

2.2 仿真理论

对于水灭火系统的仿真,我们基于以下几点前提条件:

1) 假设水灭火系统中灭火的水是理想的流体,因此可以采用伯努利方程的动力学分析。

2) 水灭火系统中因高度差产生的水压力可以忽略不计。

3) 所有灭火的出水管道具有相同的剖面,各支管的剖面是相通的,消防栓也相同的大小。

4) 忽略管道弯曲造成的误差,根据伯努利工程:

[P+ρV22+ρ?g?h=C] (1)

我们能够得出下面两组结论:

1) 任何测量点的水压力等于消防泵的压力。

2) 与消防泵相连的任意剖面,其流量与剖面的面积成正比,图1表示消防系统的示意图:

图1 灭火系统仿真结构图

假设出水管道1的出口压力为0.7MPA,其最大的流量为350立方米每小时。管道2的参数与1相同。因此,根据以上两种管道的参数,我们可以得出一下结论:

1) 根据上述条件,每个消防栓的气压为0.7MPA。

2) 每个消防栓的水流量为140立方米每小时

在动力系统中,根据欧姆定律和电压电流关系式:

[I1+I2+I3+…=I] (2)

[U1=U2=U3=…=U] (3)

根据动力系统相关定律,假设电路的电压为0.7伏特,那么经过每个电阻的电流为140安。如果要利用电力系统仿真实时的水灭火系统,就需要有两套电力仿真系统。因为电路的电流与电路的电阻是密切相关的。如果我们需要形象的观察消防栓的水压,那么消防栓就必须认作是一个电压源。如果要观察通过消防栓的水流量,那么消防栓可以认为是一个电流源。

图2 电路仿真系统结构图

3 仿真模型

假设出水管作为电压源或者电流源,以电路的开发模拟消防栓的开关,如图3所示:

图3 电路仿真设备图

在图4中,以电阻表示灭火仿真系统中的消防栓:

图4 消防栓仿真示意图

灭火仿真系统中的喷水管可以认为是电力系统中的电线,消防阀门可以开关表示,如图5表示:

图5 电路系统仿真示意图

在仿真系统中,喷水压力计以电压表表示,以电流表表示水的流动值,如下图所示:

图6 电压电流仿真示意图

4 利用Simulink软件生成C++代码

为了实现以上仿真性能,我们创建两个电力仿真系统结构, 通过程序调试后, Simulink软件便可以将目标信号的参数设为仿真模型中的全局变量,模型就可以自动生成的仿真系统的可执行代码,并在线调试模型参数和信号情况。根据上述思路,我们做了以下仿真试验:

选择Simulink模型,设置好信号和电压参数等。

图7 信号参数设置

如图7所示,将信号量设置为全局变量。那么Simulink软件可以自动生成代码,并分为两个部分:一个是模型代码;另一个是接口代码(运行时间接口)。为了管理仿真系统的项目开发,Simulink软件将源代码切成许多代码文件, 通过VC软件可以打开的文件和编译,在仿真系统中所有的安装源文件可以复制。

5 将代码植入模型

根据VC软件实现模型代码的集成相对简单,将所有仿真系统的计算模块文件应该都添加到VC程序中。因此,我们完成以下步骤:

图8 仿真模型的接口函数

1)在VC程序源文件中可以设置头文件编译的默认选项,这样的设置必须是手动设置。具体的操作方法如下:

首先,选择项目VC菜单- >选择“设置项对话框”;其次,在类别选择―预编译头文件里选择C / C++中的etr_main.cpp文件,如图9:

图9 仿真系统参数设置

2)在预定义的SXF.h文件中定义MODEL= * *,RT,NUMST = 2,TID01EQ = 1,NCSTATES = 4,MT= 0,USE_RTMODEL;

3)为了在VC调用过程模拟代码接口功能,必须定义全局变量。在VC程序类头文件中添加下面应用程序的代码。

extern void sxf_initialize (boolean_T firstTime);

extern void sxf_terminate (void);

extern void rt_oneStep ();

这个代码是涵盖所有仿真功能。仿真软件一般包括人机界面、数据采集模块、仿真计算模块和数据处理模块。灭火系统流程图的仿真结构如图10所示。

图10 仿真系统架构图

6 模块的实现

6.1 人机接口模块的实现

人机接口模块是VC程序的主线程,主要目标是完成实时变量显示,参数调整,参数控制和程序操作控制和其他同步功能。系统变量参数与实时显示包括消防泵的压力、消防泵流量、消防栓的压力、消防栓的通量、阀门和管道状况。考虑到设计更友好的人机交互界面,消防泵、阀门、消息框、功能按钮的设计一定要充分利用面向对象的封装性和继承性。

6.2 仿真计算模块

仿真模型计算模块完成计算,也是整个系统的核心。为满足实时仿真的要求,Simulink仿真模型采用同步控制仿真的设计思路,每2毫秒调用函数模型代码接口rt_OneStep,以确保整个仿真正常运行。

6.3 数据处理模块的实现

数据数据处理模块的目的是为完成仿真实时记录和节省时间。为了满足真正的时间数据记录,仿真程序使用一个多线程技术。一方面数据支持鼠标设备相应的属性,另一方面通过系统编辑框显示每个设备的属性。因此,通过性能的设备,计算消防系统灭火管可以工作的数量和良好率。

最终的仿真平台构建通过仿真软件的RTW实现如图11所示。

图11 水灭火仿真系统工作流程图

7 总结

本文详细介绍了利用Visual c++和simulink软件的水灭火仿真系统的开发实例,首次利用simulink仿真软件可视化功能建模仿真系统,并利用RTW工具包将翻译仿真软件模型编译成嵌入式的C++代码。最后,在Visual C++编程环境下, 仿真模型自定义成一个实时的仿真系统,并且在Visual C++环境中调试成功。本仿真系统的开发优化了灭火系统的仿真模型,简化了开发难度。

参考文献:

[1] GB50084-2001火灾自动喷水灭火系统代码设计[M].北京:中国计划出版社,2001.

[2] Mathworks Company.Real-Time Windows Target User’s Guide Version 2[M/CD].U.S.PP:213-214.

[3] Mathworks Company.Writing S-Functions Version 6 [M/CD].U.S.PP:32-34.

[4] David J.Kruglinski. Technology Inside Visual C++(Fourth Edition)[M]. Press QingHua Univ.1999:156-159.

[5] Taiwan.ADVANTECH Co.Ltd.PCI-1780 User Manual[M/CD].2005:106-107.

上一篇:TM遥感影像几何精校正方法试验与分析 下一篇:求解TSP问题的人工鱼群算法