重磅推荐
【前言】

2010年,我研一,当Math(MATLAB中文论坛独立创始人)大哥首次倡导MATLAB中文论坛版主们合力出书之时,我怦然心动,出书!?个念头是兴奋,从未想到还在读书的自己竟能有机会出书;第二是惶恐,自己的知识储备还很不足,写书需要厚积薄发,我积累的足够吗?明明很多技术点还不清楚呢,能够写出对得起自己对得起读者的书吗?在这两个念头的碰撞与纠缠中,我选择了退出,我告诉自己我还没有准备好,我应该以学业为重,以导师的研究方向为重。

如今,MATLAB中文论坛已经发展为有近百万注册会员的国内超重量级专业学术讨论基地,也成为了MathWorks官方中文社区。我呢,还是那个我吗?当然是,这五年来我虽然走出校园走上了工作岗位,但是始终都不曾忘记Math大哥的鼓励,无时无刻不期待着今天这样一个时刻,因为五年前没能坚持下去我是心有不甘的。感谢中文论坛,感谢math大哥的引荐,感谢北京航空航天大学出版社陈守平编辑的指导,也感谢我这些年来不曾间断过的积累。此刻的我不仅是写书,也是在书写我自己的成长记录。

我使用Simulink已经5年了,虽然接触它的时间相对MATLAB要晚两年,但是使用频率绝不比MATLAB低。抛开工作不说,早接触它是在本科毕业论文时——使用Simulink对乙醇发酵过程进行建模和仿真,相信很多朋友也看过我的那篇论文,里面真实地反映了我首次接触Simulink时的摸索和成长记录。从那之后,遇到问题多了一个思路,学会了像Simulink建模那样将问题分类归总,理出步骤,模块化之后再根据优先度一个一个解决。这本书的编写也是这样一个思路,从入门,到进阶,打好了足够的基础之后,再来攻克代码生成的难题。

本书主体是Simulink的基础技术及代码生成技术,但是由于它跟MATLAB是密不可分的,很多章节会使用M语言来自动控制模型,以减轻用户的操作负担,提高效率。如果读者朋友拥有一定的MATLAB基础,那么相信学习起来一定得心应手;如果对MATLAB不熟悉也没有关系,可跟着这本书一步一步实践起来,慢慢学到新的函数,积累各种用法。

下面概述本书内容:

第1章介绍了Simulink的基本操作方法,教会读者如何启动Simulink,如何拖曳出个模块,如何建立并保存个模型。

第2~4章分别介绍了Simulink的模块、信号和子系统,讲解了三者的分类、特性及属性等。这三者互相依赖、相辅相成,共同构成Simulink模型。

第5章讲解Simulink模型的仿真,包括仿真的启动方法、模型仿真的调试方法、数据记录及绘图方法,以及如何提高模型仿真的速度。

第6章解决一个常见的问题——如何将模型框图保存为高清晰图片,让读者在发表论文或制作PPT时能将成果展示得更加明了。

第7章介绍Simulink中所有的回调函数,包括模型仿真过程中的回调函数、模块动作(尺寸变化、复制、删除等)的回调函数、端口连接的回调函数及模块GUI上各个控件的回调函数。

第8章重点讲解MATLAB的M语言如何控制Simulink,能够解决读者朋友关于如何在仿真过程中改变参数,如何自动配置模型等问题。

第9章讲解如何使用Simulink模型实现高级编程语言中经常使用的流控制,让读者能够更好地发挥想象,更好地将既有的编程经验发挥到Simulink建模中去。

第10章是的Simulink核心——S函数,此部分从S函数的功能、分类、构成要素及原理各个方面进行深刻、全面的讲解,让读者在深刻理解Simulink运行机制的基础上能够使用M语言和C语言构建自定义模块,而且更深入地教会读者掌握S函数的编写模式,通过配置S-Function Builder和Legacy Code Tool可自动生成S函数。

第11章重点教会读者封装子系统或S函数模块,包括手动封装及编程自动封装,深入讲解Simulink模块参数对话框GUI的控件构成和Simulink.Mask类的使用。

第12章介绍M语言注释的书写方式及自动生成html文件的方法,通过该章节读者能够学会开发自定义模块的Help文档的方法。

第13章介绍Simulink中自定义模块库的方法。

第14章介绍Simulink中自定义环境的方法,包括菜单栏自定义、目标硬件的自定义及Configuration Parameter控件属性的编辑方法。

第15章通过乙醇连续发酵工业流程的建模和仿真,介绍了基于发酵动力学理论微分方程组的建模及数值求解方法、Simulink与GUI结合仿真的方法,以及通过将Simulink模型编译为C代码执行,从而加速仿真的方法。

第16章带领读者进入一个全新的篇章——基于模型的设计,此章介绍了世界各地各公司或学校使用MATLAB/Simulink进行基于模型的设计的成功实例。

第17章重点教会读者关于嵌入式C代码的生成技术、基于模型设计的开发流程及模型生成代码时的配置方法与技巧。核心内容包括代码生成的流程、模型系统目标文件的工作原理、模型生成代码的结构和优化方法、自定义存储类型和数据对象的使用方法,以及实时任务调度的原理及代码实现。

第18章讲解目标语言编译器TLC语言的语法和编写方法,有了它,读者可以给自己的模块编写代码生成规则,让自定义模块也能支持代码生成功能。

第19章重点讲解目标支持包Target Support Package(简称TSP)的构成和功能,通过实例讲述如何在TSP的协助下快速实现应用层与驱动层的结合,并自动实现工程的生成、编译和下载,从而加速嵌入式控制应用的开发。

写书的过程艰苦而漫长,这离不开家人的支持,领导的培养,朋友们的鼓励。在漫长的9个月里,每晚能静下心来心无旁骛地准备书稿,全依靠我的家人给我创造的美好环境,他们是我一生重要的人。

个人的成长离不开所在的环境。南京富士通南大软件技术有限公司(FNST)的同事,他们的独特视野、技术热情和丰富经验让我这个初出茅庐的人领略到了Model Based Design这个方向的深邃和博大,感谢林有华、徐波、沙骁骅、陈锦程、黄开彬、尹燕和瞿果在我困难时给予的帮助,让我在FNST这个温暖的大家庭中迅速进步,领会了团队的强大凝聚力,也让我学会了如何去担当自己的责任。我忘不了攻克难题时一直陪伴在我身边的小伙伴们,是你们的信任和支持让我拥有足够的勇气面对苦难,感谢王浩、赵利、卢宝忠、汪大伟、周冲、杜宏伟、林艺文、王庆和程莉莉,希望以后的工作和生活因你们而更精彩。

后感谢我的导师杨小建教授和指导我的李荣雨博士,让我在学生时代能够建立良好的兴趣导向并坚持不懈地朝着自己坚信的方向努力,感谢你们的鼓励,使我在毕业以后的生活中依旧保持着进取和钻研之心。

后感谢读者朋友们,希望这本书能够为你们在学业或工作中贡献一些力量。
【书摘与插画】

【作者简介】

孙忠潇(hyowinner),南京富士通南大软件技术有限公司(FNST)主任工程师,主要负责ARM芯片的Hardware Support Package开发团队以及电源控制软件开发团队的管理工作,有5年的MATLAB/Simulink应用经验。

孙忠潇已获得MathWorks MATLAB Associate资格认证,并任MATLAB中文论坛(http://www.ilovematlab.cn/forum.php)“Simulink基础”“Simulink代码生成”版块的版主。在MATLAB中文论坛的*答案超过1000个,长期稳居论坛会员排行榜的第2名。
【免费在线读】

  在2015年人大和政协会议的政府工作报告中,总理针对产业发展提到了一个新概念:要实施“中国制造2025”,坚持创新驱动、智能转型、强化基础、绿色发展,加快从制造大国转向制造强国。
  工信部部长苗圩在两会期间接受记者采访时指出,“中国制造2025的切入点就是智能制造”。
  我认为,智能制造首先是实现智能工厂。通过推行自律系统的开发及智能监控系统,让工厂内外的事物都通过物联网(TheInternetofThings,IoT)连接到互联网,以激发管理模式和商业模式的创新,同时也赋予产品新的价值。
  产生这样的连锁效应的前提是工厂生产的所有关联信息要互联互通,统一管理。通过信息物理系统(CyberPhysicalSystems,CPS),将CRM(Customer
  RelationshipManagement,客户关系管理)、PDM(ProductDataManagement,产品数据管理)、PLM(ProductLifecycleManagement,产品生命周期管理)、CAD
  (ComputerAidedDesign,计算机辅助设计)等各种信息进行集成,统一管理。
  这里面的关键技术就是信息通信技术(InformationCommunicationTechnology,ICT)。具体说就是通过互联网相互连接的信息设备之间自律的协调工作M2M(MachinetoMachine),通过分析从互联网得到的各个终端的大数据得到信息,再与开发/销售/ERP(EnterpriseResourceManagement)/PLM/SCM(SupplyChainManagement)等业务系统进行连携等类似的应用。
  在这个大系统中,工程师们会更加关注与产品开发环节相关的PLM系统。几乎所有的工业制造会用到MATLAB/Simulink,来让开发内容可视化,通过数学模型及控制模型的计算仿真,可以快速地验证创新设计的效果,并以此提高开发品质,降低开发成本,缩短开发周期。MATLAB/Simulink在汽车和工业控制领域取得的成功案例已经不胜枚举。此外,通信领域、金融领域、半导体及电力电子领域也都在使用MATLAB/Simulink加速数据分析、设计和仿真。
  不积跬步无以至千里。要实现“中国制造2025”的战略目标,必须在各个环节引入先进的方法和工具,培养相关的人才。
  此书旨在让更多的研发工程师和在校大学生认识和了解MATLAB/Simulink,为迎接智能制造的挑战做好知识储备。
  陈锦程2015年4月20日


【内容简介】

本书围绕Simulink软件的仿真和代码生成技术,从原理上展开阐述,把握整体,注重细节,让读者深刻认识Simulink的运行原理。结构化的章节安排和丰富多彩的案例展示了Simulink在模型建立、工业流程仿真及嵌入式控制等方面的应用技巧和方法。本书不拘泥于界面操作,而结合MATLAB脚本语言展示其自动控制模型仿真、代码生成过程的强大功能,带领读者把握宏观架构,攻克细节问题。

全书共19章,分为入门篇、进阶篇和高级篇3个篇章。入门篇介绍Simulink软件及其基本操作和构成要素;进阶篇讲解Simulink的运行机制和原理、自定义模块及模块封装、自定义模块库的建立和Simulink环境的编辑等功能,并讲解如何使用M语言为模块发布help文档,以及通过工业实例展示综合应用GUI控制Simulink进行仿真的方法及代码生成的应用方法;高级篇重点介绍“基于模型设计”的开发流程、嵌入式C代码生成技术原理及TLC语言编写方法,并展示如何在嵌入式应用中使用TSP。

本书可作为高等院校计算机、电子、自动化类专业计算机仿真及嵌入式课程的教学用书,也可供嵌入式系统研发工程师、软件公司研发工程师及其他有关专业科研人员参考。


【目录】

入门篇

第1章Simulink界面介绍

1.1Simulink是什么

1.2Simulink启动及Simulink Library Browser介绍

1.3模型的建立

1.4打开既存模型

1.5向模型中添加模块

第2章Simulink模块

2.1Simulink模块的组成要素

2.1.1模块概述

2.1.2Simulink模块的构成

2.1.3Simulink模块的朝向

2.1.4Simulink模块的属性及参数

2.1.5Simulink模块的注解

2.1.6Simulink模块的虚拟性

2.2Simulink常用模块库

2.2.1输入/输出模块

2.2.2常数模块

2.2.3波形显示模块

2.2.4四则运算模块

2.2.5延时模块

2.2.6关系操作模块

2.2.7逻辑运算模块

2.2.8Switch模块

2.2.9积分模块

2.2.10限幅模块

2.2.11接地模块

2.2.12终止模块

2.2.13信号合并与分解模块

2.2.14总线创建与总线选择模块

2.2.15向量连接模块

2.2.16数据类型转换模块

2.2.17子系统模块

2.3Commonly Used Blocks以外的常用模块

2.3.1信号源模块

2.3.2信号接收模块

2.3.3查表模块

2.3.4其他常用模块

2.3.5用户自定义模块

第3章Simulink信号

3.1Simulink信号概述

3.2Simulink信号的操作

3.3Simulink信号的分类

3.3.1Scalar信号

3.3.2Vector信号

3.3.3Matrix信号

3.3.4Bus信号

3.3.5Functioncall信号

3.3.6尺寸可变信号

3.3.7未连接信号

3.4Simulink信号的属性

第4章Simulink子系统

4.1Simulink子系统详解

4.1.1子系统概述

4.1.2Simulink模型的运行顺序

4.1.3各种子系统的特点与功能

4.2Simulink子系统实例

4.2.1虚拟和非虚拟(原子)子系统

4.2.2触发使能子系统

4.2.3函数调用子系统(条件子系统)

4.2.4While子系统(动作子系统)

4.2.5可变子系统(选择子系统)

4.2.6可配置子系统(选择子系统)

第5章Simulink模型的仿真

5.1模型的配置仿真

5.1.1解算器

5.1.2参数的配置

5.2模型仿真数据记录

5.3仿真过程的调试

5.3.1Debugger的启动

5.3.2Debugger的单步方法

5.3.3Debugger的断点设置方法

5.4仿真的加速

第6章Simulink模型保存为图片

6.1截图保存方式

6.2拷贝视图方式

6.3使用saveas函数保存

6.4使用print函数保存

进阶篇

第7章Simulink的回调函数

7.1什么是回调函数

7.2回调跟踪

7.3模型回调函数

7.4模块回调函数

7.5端口回调函数

7.6参数回调函数的使用

7.7回调函数使用例程

7.7.1打开模型时自动加载变量

7.7.2双击模块执行MATLAB脚本

7.7.3开始仿真前执行命令

7.7.4提示模块端口的连线情况

7.7.5统计模型中所有模块信息

第8章M语言对Simulink模型的自动化操作及配置

8.1M语言控制模型的仿真

8.1.1sim控制模型仿真及参数配置

8.1.2set_param控制模型仿真过程

8.2M语言修改模块属性

8.3M语言自动建立模型

8.3.1模型的建立及打开

8.3.2模块的添加、删除及替换

8.3.3信号线的添加及删除

8.3.4M语言自动创建模型

第9章Simulink的流控制

9.1Simulink 流控制分类

9.2While 流控制

9.3For 循环控制

9.4If else控制

9.5Switch Case控制

第10章S函数

10.1S函数概述

10.2S函数的类型

10.3S函数的要素

10.4S函数的组成及执行顺序

10.5使用不同语言编写S函数

10.5.1Level 1 M S函数

10.5.2Level 2 M S函数

10.5.3C Mex S函数

第11章模块的封装

11.1Mask Editor封装模块

11.1.1封装模块构成的子系统

11.1.2封装S函数编写的模块

11.2编程自动封装模块

11.2.1模块的属性

11.2.2使用set_param和get_param封装模块

11.2.3使用Simulink.Mask类封装模块

11.3使用GUIDE封装模块

第12章Publish发布M文件

12.1M文件的注释

12.2Cell模式

12.3注释的Publish

12.3.1正文

12.3.2字体控制

12.3.3小标题

12.3.4插入超链接

12.3.5插入可执行代码

12.4注释发布功能的应用场景

第13章Simulink创建自定义库

第14章Simulink自定义环境

14.1Simulink 环境自定义功能

14.2Simulink 工具栏菜单自定义

14.3Simulink Library Browser菜单栏自定义

14.4Simulink目标硬件自定义

14.5Simulink参数对话框控制

第15章Simulink在流程工业中的仿真应用

15.1工业乙醇生产与计算机仿真

15.2工业乙醇发酵流程

15.3乙醇发酵动力学方程

15.4发酵动力学方程组的MATLAB求解

15.5发酵动力学方程组的Simulink求解

15.6乙醇连续发酵流程的Simulink仿真

15.7乙醇连续发酵的仿真软件设计

15.7.1GUIDE介绍

15.7.2乙醇连续发酵程序仿真软件界面

15.7.3Simulink动态仿真控制器制作

15.7.4基于代码生成的模型仿真加速

15.8总结

高级篇

第16章Simulink基于模型设计的工业应用概述

16.1Simulink用途概述

16.2Simulink的工业应用

16.2.1Airbus使用基于模型的设计为 A380 开发出燃油管理系统

16.2.2马自达加快开发下一代应用创驰蓝天技术(SKYACTIV TECHNOLOGY)的

发动机

16.2.3特斯拉电动跑车Roadster

16.2.4罗斯胡尔曼理工学院使用Simulink和SimDriveline设计混合动力汽车动力

总成系统

16.2.5三星(英国)利用Simulink开发出4G无线系统

16.3总结

第17章Simulink代码生成技术详解

17.1基于模型的设计

17.1.1需求文档

17.1.2根据需求进行设计

17.1.3需求与设计的挂接

17.1.4模型的仿真

17.1.5模型的性能分析及修正

17.1.6模型效率分析与优化

17.1.7模型的代码生成

17.1.8模型生成代码的优化

17.1.9代码的有效性验证

17.1.10其他验证方法

17.2Simulink代码生成流程及技巧

17.2.1代码生成时的模型配置方法

17.2.2代码生成的流程

17.2.3代码生成方法与技巧

第18章TLC语言

18.1TLC的作用

18.2TLC的语法

18.2.1基本语法

18.2.2常用
【编辑推荐】

这本书由MATLAB中文论坛的权威版主hyowinner(孙忠潇)写成。与其说这是一本关于Simulink/MATLAB的书,不如说这是一本作者的成长手册

——从入门,到进阶,先夯实了基础,再来攻克代码生成的难题,作者前进的脚步一直踏踏实实稳稳当当的。作者凭借这些能成功,你学完这些也不会差!

全书所有知识点的讲解通俗易懂,数以千计的小例子助读者全面学习并应用Simulink/MATLAB知识。作者本人的Simulink功力深厚,跟着本书,相 信读者很快就能感受到Simulink的博大精深和无穷魅力。本书在MATLAB中文论坛有专门的“在线交流”平台 (http://www.ilovematlab.cn/forum-249-1.html),读者在学习过程中遇到问题,不妨过来跟hyowinner交流交流,收获也许会超乎你的想象。
返回顶部