logo资料库

stateflow建模教程,张威!清晰版.pdf

第1页 / 共322页
第2页 / 共322页
第3页 / 共322页
第4页 / 共322页
第5页 / 共322页
第6页 / 共322页
第7页 / 共322页
第8页 / 共322页
资料共322页,剩余部分请下载后查看
第一章 概述
第二章 创建状态图
第三章 状态图的方针
第四章 流程图
第五章 有限状态系统—层次化建模
未标题
第六章 有限状态系统-并行机制
第七章 stateflow Coder 目标编译
第八章 可服用图形结构
第九章 Stateflow API
Stateflow 逻辑系统建模 张 威 编著 西安电子科技大学出版社 2 0 0 7
内 容 简 介 本书详细介绍了 MATLAB 产品体系中用于动态逻辑系统建模仿真的 Stateflow 产品的应用 方法。本书的前六章内容是 Stateflow 的基础,重点介绍了有限状态系统中状态、状态转移、连 接节点、历史节点、动作、数据对象、事件等各种概念在Stateflow 产品中的实现方法,还着重 介绍了层次化系统建模、并行机制、事件广播、隐含事件和时间逻辑等有限状态系统的建模方 法。本书的后三章内容涉及Stateflow 的高级话题,涵盖了 Stateflow Coder 代码生成、真值表、 Embedded MATLAB Function以及 Stateflow API的使用方法等内容。 本书内容丰富、全面、系统而且权威,对 Stateflow 有限状态系统中的每一种语法现象都进 行了详尽的介绍,并列举了丰富的应用实例,便于读者掌握具体工具的使用方法。 本书既可作为需要完成动态逻辑系统建模和仿真的工程人员的参考书,也可作为在校本科 生、硕士研究生和博士研究生的教材,还可作为 MATLAB相应产品培训课程的教材。 图书在版编目(CIP)数据 Stateflow 逻辑系统建模/张威编著. —西安:西安电子科技大学出版社,2007.10 ISBN 978-7-5606-1852-4 Ⅰ. S… Ⅱ. 张… Ⅲ. 计算机辅助计算—软件包,Stateflow Ⅳ. TP391.75 中国版本图书馆 CIP 数据核字(2007)第 083728 号 邮 编 710071 策 划 毛红兵 责任编辑 阎 彬 毛红兵 出版发行 西安电子科技大学出版社(西安市太白南路 2 号) 电 话 (029) 88242885 88201467 http: //www.xduph.com E-mail: xdupfxb@pub.xaonline.com 经 销 新华书店 印刷单位 西安文化彩印厂 版 次 2007 年 10 月第 1 版 2007 年 10 月第 1 次印刷 开 本 787 毫米×1092 毫米 1/16 印 张 20.5 字 数 482 千字 印 数 1 ~4000 册 定 价 30.00 元 ISBN 978-7-5606-1852-4/TP·0963 XDUP 2144001-1 ***如有印装问题可调换*** 本社图书封面为激光防伪覆膜,谨防盗版。
前 言 MATLAB 软件最早成为商品化软件是在 1984 年,那时由 MathWorks 公司推出了 MATLAB 的第一个版本。在编写本书的时候,MATLAB 的最新版本是 7.3,即 MATLAB Release 2006b 。MATLAB产品提供了丰富的应用函数,并且具有易扩充的开放性结构。在 不断地吸收各行各业专家、学者、工程师的经验之后,MATLAB 已成为了国际上优秀的工 程应用软件之一。目前,该软件涵盖了控制系统设计与仿真、数字 信号处理设计与仿真、 数字图像处理、嵌入式系统设计与实现、通信、神经网络、小波理论分析、优化与统计、 偏微分方程、动态系统实时仿真等多学科专业领域,其应用行业包括航空航天、汽车、兵 器与国防工业、通信、医药卫生、化工工业、生物遗传工程、大学教育、国家政府机关以 及金融财经等。在全球,MATLAB 的正式用户已经达到六十余万,遍布世界上 100 多个国 家和地区。而自从 20 世纪 90 年代 MATLAB 进入中国起,MATLAB 软件在国内已经拥有 了众多用户。目前在国内很多高校已经在本科教学阶段将 MATLAB作为一门必(选)修课程, 并把它作为应用数学、控制、信号处理、通信等专业博士研究生、硕士研究生、本科生必 须掌握的工具软件之一。 基于模型的系统级设计是 MathWorks 公司近年来大力倡导的一种系统设计方法,它定 义了从系统设计、仿真到具体实现的一系列工具以及应用方法。基于模型的系统级设计的 核心工具是 MATLAB软件族当中以 Simulink 为基础的模块集合和相应的工具。而 Stateflow 是 MATLAB 产品体系中非常重要的一个分支,它是在基于框图的动态系统建模仿真环境 ——Simulink 的基础上完成动态逻辑系统建模与仿真的可视化开发平台。Stateflow 能够对 那些基于有限状态机理论的事件驱动系统进行建模和仿真,也能够针对复杂逻辑系统进行 建模和仿真。结合 Simulink 的动态系统建模和仿真能力,MATLAB产品为广大用户提供了 多领域系统建模和仿真的统一开发环境。目前,Stateflow 产品主要被用来完成下列系统中 动态逻辑部分的建模和仿真工作: ■ 嵌入式系统应用: 航空电子设备; 车辆设备,例如中控门锁逻辑、电动车窗逻辑等; 电信设备,例如路由算法; 通信系统,例如计算机外设; 可编程逻辑控制器(PLCs); 工业机械设备。 ■ 人机交互界面(MMI):图形化用户界面(GUI)的控制逻辑。 ■ 复杂系统:例如航空空管通信系统,其中包含了 DSP、控制系统以及人机界面的开 发等。 本书详细介绍了使用 Stateflow 进行动态逻辑系统建模和仿真的方法。本书的内容组织 如下:
第 1 章对 MATLAB 产品体系以及 Simulink 的应用进行简要的回顾,是学习 Stateflow 动态逻辑系统建模和仿真的基础。 第 2 章介绍 Stateflow 图形对象的创建方法,详细介绍状态、状态转移、连接节点等常 用图形对象的使用方法。 第 3 章介绍 Stateflow 非图形对象——数据对象、事件等的使用方法以及如何完成简单 事件驱动系统的建模和仿真。 第 4 章介绍 Stateflow 创建流程图的方法。 第 5 章介绍 Stateflow 层次化有限状态系统的建模与仿真方法。 第 6 章介绍 Stateflow 层次化框图的并行运行机制。 第 7 章介绍 Stateflow 的各种代码生成目标及 Stateflow Coder 产品的使用方法。 第 8 章介绍 Stateflow 的真值表和 Embedded MATLAB Function的应用方法。 第 9 章介绍利用 Stateflow API 在 MATLAB 命令行中实现 Stateflow 框图模型的创建 方法。 本书的附录中还详细总结了 Stateflow 的语法等内容,供大家在使用相应工具时参考。 本书的前六章内容是掌握 Stateflow 产品的必修内容,其中第 1~3 章是第 4~6 章的基 础,而掌握了第 4~6 章的内容就基本掌握了各种动态逻辑系统的建模和仿真方法。从第 7 章开始的后三章内容涉及 Stateflow 的高级话题。建议初学者从第 1 章开始循序渐进地学习 到第 6 章,这样就能够基本掌握 Stateflow 产品的应用方法。而后三章的内容可以快速地浏 览一下,等需要时再仔细学习。另外,要掌握 Stateflow 并且能灵活地应用,还需要用户对 Simulink 产品的应用有足够的了解,因此,对于没有 Simulink 应用基础的读者,作者建议 先学习掌握 Simulink 产品的应用方法。如果读者已经有 Simulink 甚至 Stateflow 的应用基础, 则可以直接从本书的第 4 章开始学习。 本书是在作者收集了国内外大量的最新权威资料,总结了自身丰富的动态系统建模与 仿真的开发经验和 MATLAB产品技术支持、培训教学以及应用经验的基础上编写而成的, 内容详实、全面、权威,示例丰富,便于读者学习具体工具的使用方法。 本书既可作为需要完成动态逻辑系统建模和仿真的工程人员的参考书,也可作为在校 本科生、硕士研究生和博士研究生的教材,还可作为 MATLAB相应产品培训课程的教材。 本书的编写前前后后历经了三年的时间,期间 MATLAB软件几次升级,Stateflow 模块 的特性也多次发生变化,而作者本人也经历了不少事情以及意外。在本书的编写过程中, 得到了西安电子科技大学出版社毛红兵编辑的大力支持,在这里对她表示衷心的感谢。还 要感谢北京九州恒润科技有限公司以及北京赛四达科技有限公司的全体员工,特别是这两 家公司的工程技术人员。和他们在一起共同学习、钻研 MATLAB软件以及研究实时仿真、 系统仿真应用的日子让我终生难忘。更要感谢父母、兄长以及我的妻子余志鸿,我花费了 太多的时间在计算机前而没能很好地尽到自己应尽的义务和责任,如果没有父母、兄长多 年来对我的培养和教育,没有家人对我的关心、支持和鼓励,也就没有了今天这本书的 出版。 Stateflow 涉及的内容比较丰富,在这样一本 300 多页的书籍中不可能将每个技术细节 都介绍到。不过,希望此书能够发挥引路者的作用,带领大家进入 Stateflow 逻辑系统建模 的大门。需要提醒读者的是,学习 Stateflow 的基础是 Simulink,如果读者对 Simulink 不甚
了解,可以阅读作者编写的《Simulink 动态系统建模与仿真基础》一书。 由于时间仓促,书中难免存在一些不妥之处,诚望广大读者谅解,并且提出宝贵的意 见和建议,以便我们在再版时改进。 本书没有为读者提供任何示例源文件,希望读者在使用本书学习 Stateflow 的过程中能 够边学习边动手,在实践的过程中掌握 Stateflow 产品的应用方法。如果对本书的内容有任 何疑问或者想法,可以通过 E-mail 与作者直接联系:way.buaa@gmail.com,或者登录作者 的博客 matlabworld.tianyablog.com。 作 者 2007年8月
第 1 章 概 述 ·1· 第 1 章 概 述 MATLAB 产品是用来解决工程与科学实际问题的应用软件,该产品包含了 很多产品模块和工具箱。本书介绍的 Stateflow 是其产品体系中非常重要的产品 之一。不过,在正式介绍 Stateflow 产品之前,作为本书的基础,首先简要回顾 一下 MATLAB产品的概况以及 Simulink 产品的使用方法。如果读者对MATLAB 产品体系和 Simulink 模块的使用方法比较熟悉,则可以快速浏览本章的内容, 甚至可以跳过本章,学习后面的内容。 本章的主要内容包括: ■ MATLAB产品简介。 ■ Simulink 回顾。 ■ Stateflow 概述。 ■ 安装配置 Stateflow。 1.1 MATLAB 产品简介 MATLAB 的名称源自 Matrix Laboratory ,它的首创者是在数值线性代数领域颇有影响 的 Cleve Moler 博士,他也是生产经营MATLAB产品的美国 MathWorks 公司的创始人之一。 MATLAB 是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计 算和强大的数据可视化功能集成在一起,提供了大量的内置函数,因而被广泛地应用于科 学计算、控制系统、信息处理等领域的分析、仿真和设计工作中;而且利用 MATLAB产品 的开放式结构,可以非常容易地对 MATLAB的功能进行扩充,从而在不断深化对问题的认 识的同时,不断完善 MATLAB产品以提高产品自身的竞争能力。 目前,MATLAB产品族可以完成以下功能: ■ 数值分析。 ■ 数值和符号计算。 ■ 工程与科学绘图。 ■ 控制系统的设计与仿真。 ■ 数字图像处理。 ■ 数字信号处理。 ■ 通信系统设计与仿真。 ■ 财务与金融工程。 编写本书时,作者使用的 MATLAB 版本为 MATLAB 7.3 ,MathWorks 公司将其称为 MATLAB Release 2006b。
·2· Stateflow 逻辑系统建模 提示: 对于 MATLAB的版本,国内习惯以 MATLAB产品体系中核心模块——MATLAB模块的 版本号作为整个产品体系的版本号。例如有的读者可能使用的 MATLAB 核心模块版本是 MATLAB 7.2,而 MathWorks公司对 MATLAB 产品使用的是以产品发布次数计数的版本号, 对应 MATLAB 7.2的是 MATLAB Release 2006a,是 MATLAB产品体系第 15 次正式发布版。 每个MATLAB核心模块都对应一个完整的版本号,这里将常见的MATLAB版本对照总结如下: MATLAB 5.3 MATLAB 6.0 MATLAB 6.1 MATLAB 6.5 MATLAB 6.5.1 MATLAB 6.5.2 MATLAB 7.0 MATLAB 7.0.1 MATLAB 7.0.4 MATLAB 7.1 MATLAB 7.2 MATLAB 7.3 MATLAB 7.5 MATLAB Release 11 MATLAB Release 12 MATLAB Release 12.1 MATLAB Release 13 MATLAB Release 13 Service Pack 1 MATLAB Release 13 Service Pack 2 MATLAB Release 14 MATLAB Release 14 Service Pack 1 MATLAB Release 14 Service Pack 2 MATLAB Release 14 Service Pack 3 MATLAB Release 2006a MATLAB Release 2006b MATLAB Release 2007a 根据 MathWorks 公司 2006 年初发表的声明,从 2006 年开始 MATLAB每年将进行两次 产品发布,以发布的年份作为版本号,3 月份发布的版本为 a 版本,9 月份发布的版本为 b 版本,因此 2006 年 3 月份该公司发布了 MATLAB Release 2006a,而 2006 年 9 月份该公司 发布了 MATLAB Release 2006b。 请读者核对自己所使用的 MATLAB 产品版本,不同版本的 MATLAB 产品有诸多特性 上的差别。如果需要了解特性上的差别,请读者自行查看相应版本的 Release Notes 信息。 MATLAB 产品由若干个模块组成,不同的模块可完成不同的功能。这些模块有: = MATLAB = MATLAB Toolboxes = MATLAB Compiler = Simulink = Simulink Blocksets = Real-Time Workshop (RTW) = Stateflow 这些产品大体上可以分为以 MATLAB为基础的产品和以 Simulink 为基础的产品两大分 支,由这些模块构成的 MATLAB产品体系如图 1-1 所示。 其中,MATLAB 模块是 MATLAB 产品家族的基础,它提供了基本的数学算法,例如 矩阵运算、数值分析算法等。MATLAB集成了 2D 和 3D 图形功能,可以完成相应数值可视 化的工作,并且提供了一种交互式的高级编程语言——M 语言。用户利用 M 语言可以通过 编写脚本或者函数文件来实现自己的算法。
第 1 章 概 述 ·3· 独立可执行 应用程序 MATLAB 桌面应用 程序开发工具 工具箱(Toolboxes) 数据源 数据获取工具 Simulink Stateflow ® Blocksets 代码生成 学生版产品 MathWorks 第三方产品 图 1-1 MATLAB 产品体系 C/C++ MATLAB 的桌面应用程序开发工具是以 MATLAB Compiler 为核心的一组编译工具。 MATLAB Compiler 能够将那些利用 MATLAB提供的编程语言——M 语言编写的函数文件 编译生成函数库或者可执行文件。这样就可以扩展 MATLAB 功能,使 MATLAB 能够同其 他高级编程语言(例如 C/C++语言)进行混合应用,取长补短,以提高程序的运行效率,丰富 程序开发的手段。从 MATLAB Release 14 开始,MATLAB Compiler 4 能够支持所有 M 语 言特性,可以将大 多数工具箱函数都编译生成为独立可执行应用程序,这极大地提高了 MATLAB 的应用范围。 另外,MATLAB除了能够和 C/C++语言集成开发以外,还提供了和 Java 语言接口的能 力,并且还支持 COM 标准,能够和任何支持 COM 标准的软件协同工作。特别是从 Release 13 开始,包含了 MATLAB Compiler 的扩展产品——MATLAB Builder 能够将 MATLAB 的 函数文件打包成 COM 组件或者 .NET 组件、Excel 插件,甚至可以打包成 Java 对象,这样 就能够将 MATLAB应用程序算法集成到相应的开发工具或者应用软件中。 MathWorks 公司及其他厂商利用 M 语言还开发了相应的 MATLAB 专业工具箱函数供 用户直接使用。这些工具箱应用的算法是开放的、可扩展的,用户不仅可以查看其中的算 法,还可以针对一些算法进行修改,甚至开发自己的算法来扩充工具箱的功能。目前, MATLAB 产品的工具箱有四十多种,分别涵盖了数据采集、科学计算、控制系统设计与分 析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。 MATLAB 的数据采集工具可以将各种数据源提供的信号直接读入 MATLAB 环境,无 论工程师使用的是 PC 插卡式的数据采集卡或图像采集卡,还是基于总线协议的高端仪器仪 表设备以及各种关系型数据库,MATLAB都提供了与其进行数据 I/O 的交互工具、函数等。 利用 MATLAB开放的集成环境还能够引入更加丰富的数据 I/O 能力。 MATLAB 的主要工具箱和产品模块包括: ■ 数学与数据分析: ● Optimization ● Statistics
分享到:
收藏