书籍作者:孙忠潇 | ISBN:9787512442146 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:3622 |
创建日期:2024-05-06 | 发布日期:2024-05-06 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
工业数字化时代已经到来,基于模型的系统工程和设计已经成为工业“智”造的必备手段。数字化设计在汽车行业的需求体现得尤为明显,模型作为数字化设计的主线索已经贯穿于从产品概念、系统需求、软件架构、软件实现到软件组件测试、软件集成验证、系统集成验证、产品交付的各个环节。本书既从广度上重点介绍了Simulink工具平台在各个工业领域上的广泛应用,又从深度上剖析了Simulink从架构、建模、仿真、代码生成、自动化测试与验证到硬件生态建设这样一条完整的产品建设思路。
本书是面向汽车电子、航空电子、工业控制、智能家电、无人机系统、机器人控制、电力电子等多个工业领域而撰写的专业著作,可供相关行业的公司、研发团队、工程师以及高校师生参考。
孙忠潇,Hyowinner校长,曾担任MathWorks官方论坛——MATLAB中文论坛的超级版主,负责Simulink代码生成版块。有多年国产自主工业软件产品设计经验、车载控制器产品研发经验,以及国际半导体制造商代码生成工具链研发经验。作为咨询专家指导过多家半导体公司和汽车电子产品公司的研发团队,受邀参加过数十次行业峰会并发表演讲。曾编撰书籍《Simulink仿真及代码生成技术入门到精通》,该书一直为多行业工程及多专业科研工作提供助力,在汽车、航空航天、高铁、工业控制、白色家电、机器人等行业也被推广借鉴,知网上参考此书的学术论文达到238篇、期刊论文达到92篇。作者曾获北京航空航天大学出版社“优秀作者”称号;此外,作者已入选姑苏重点产业紧缺人才计划及苏州市工业软件专家库,作为第一发明人申请发明专利16项。
Hyowinne新作、已得到近5万人肯定的Simulink经典畅销书+长销书的升级版本,基于MATLAB R2021b,语言通俗易懂,图文并茂,实例丰富,Stateflow、MBD等应有尽有。MathWorks推荐用书。书中程序源代码+模型可免费下载。
第2版前言
其实我并不知道有多少读者会阅读前言,因为有时我读书也会直接从第1章开始阅读,而忽略前言等部分内容。但是这次我希望读者能够从此处开始,因为这里不仅为读者介绍了我编写本书的背景,而且还对自己近几年的成长历程做了一个总结,希望能够帮助到读者。
几年前我很荣幸受北京航空航天大学出版社邀请编写了《Simulink仿真及代码生成技术入门到精通》(第1版),将我在学生时代使用Simulink仿真建模以及生成嵌入式C代码部署硬件的一些笔记整理成册,于2015年10月出版,并在出版后不久这一消息便不胫而走,成为当时国内MBD电控软件工程师所喜爱的书籍,也使得“Hyowinner校长”成为了我在国内MBD工程圈内的一个称呼。
我很幸运,我的书对很多人都有所帮助。通过阅读第1版,有的读者解决了学习、工作中的实际问题;有的读者完成了从技术细节“点”到技术体系“面”的思维方式转换,实现其在职场上的迅速提升;还有的读者从学生成为了高校教师走上讲台,将自己所学所感向更多莘莘学子进行传播……一想到我的书对这么多有思想有技术的人产生了积极影响,就不禁感觉自己很幸运,而这种幸运,会促使我更加持续地去学习和了解行业以及技术的进步,以使我能够继续跟大家交流并提供有效的帮助。有很多读者通过出版社、微博、B站、网易云课堂等社交工具找到我的联系方式,他们表达了对本书第1版的认可,也跟我分享了他们自己专注的领域以及所做的工作和成果。我结识了非常多的优秀读者,他们在不断学习,从而也迫使我不能停下学习的步伐。
在技术革新日益加速的今天,我们所掌握的技术总会过时,那么在被新技术取代之前,不如细致地将其总结出来、明快地分享出来,帮助别人,结识朋友,成就自我。我在编写第1版的过程中已经深深体会到,这本书我会再优化一遍。
第2版是对第1版读者心声的积极反馈,读者说第1版所使用的MATLAB版本太老了,于是我在第2版中从头到尾均使用了MATLAB 2021b版;读者说第1版没有状态机的建模讲解,所以在第2版增加了一整章来讲解Stateflow状态机建模及案例(见第9章);读者说集成手写C代码为模块时使用S函数和LCT工具都不是很方便,于是在第2版中添加了C Caller模块的使用方法及案例(见第3章);读者说希望能了解基于模型进行CAN报文的解析与打包,于是在第2版中添加了CAN Pack/CAN Unpack模块的使用方法和案例(见第3章);读者说希望了解模型架构设计方案,于是在第2版中添加了模型的架构(见第6章);读者说希望能读到一个完整的MBD案例,于是在第2版中添加了VTOL的设计与验证过程(见第16章)。此外,我还在本书中添加了很多更新的细节,等待细心的读者细细斟酌。持续学习,未来有你!
作者
2023年8月于独墅湖畔
第1章引言1
第2章Simulink界面介绍5
2.1Simulink是什么5
2.2Simulink的启动及Simulink Library Browser的介绍6
2.3模型的建立9
2.4打开既存模型10
2.5向模型中添加模块11
第3章Simulink模块13
3.1Simulink模块的组成要素13
3.1.1模块概述13
3.1.2Simulink模块的数据元素构成14
3.1.3Simulink模块的朝向15
3.1.4Simulink模块的属性及参数15
3.1.5Simulink模块的注解22
3.1.6Simulink模块的虚拟性23
3.1.7Simulink模块的采样时间23
3.2Simulink常用模块库26
3.2.1In/Out模块26
3.2.2Constant模块30
3.2.3Scope模块30
3.2.4四则运算模块36
3.2.5延时模块42
3.2.6Relational Operator模块46
3.2.7Logical Operator模块47
3.2.8Switch模块49
3.2.9积分模块52
3.2.10Saturation模块63
3.2.11Ground模块64
3.2.12Terminator模块65
3.2.13信号合并与分解模块65
3.2.14Bus Creator模块和Bus Selector模块70
3.2.15Vector Concatenate模块72
3.2.16Data Type Conversion模块73
3.2.17Subsystem模块75
3.3其他常用模块76
3.3.1信号源模块77
3.3.2信号接收模块88
3.3.3查找表模块93
3.3.4其他模块97
3.3.5用户自定义模块102
3.3.6不同速率的转换模块——Rate Transition模块107
3.3.7String模块库109
3.3.8Merge模块115
3.3.9C语言调用C Caller模块116
3.3.10CAN报文处理模块——CAN Pack/CAN Unpack模块121
第4章Simulink信号128
4.1Simulink信号概述128
4.2Simulink信号的操作128
4.2.1信号的创建与连接128
4.2.2信号的命名129
4.2.3信号的分支129
4.2.4信号的删除130
4.3Simulink信号的分类130
4.3.1Scalar信号130
4.3.2Vector信号131
4.3.3Matrix信号131
4.3.4Bus信号131
4.3.5FunctionCall信号132
4.3.6尺寸可变信号132
4.3.7未连接信号133
4.4Simulink信号的属性133
4.5Simulink信号的传播139
第5章Simulink子系统142
5.1Simulink子系统详解142
5.1.1子系统概述142
5.1.2Simulink模型的运行顺序143
5.1.3各种子系统的特点与功能145
5.2Simulink子系统实例147
5.2.1虚拟子系统与非虚拟子系统147
5.2.2触发使能子系统(条件子系统)148
5.2.3函数调用子系统(条件子系统)153
5.2.4While Iterator子系统(动作子系统)157
5.2.5变体子系统(选择子系统)160
5.2.6可配置子系统(选择子系统)162
第6章Simulink模型的仿真165
6.1模型的配置仿真165
6.1.1求解器165
6.1.2参数的配置169
6.2模型仿真数据记录178
6.2.1信号日志179
6.2.2仿真数据观察器181
6.3仿真的调试184
6.3.1Debugger的启动184
6.3.2Debugger的单步方法186
6.3.3Debugger的断点设置方法190
6.4仿真的加速195
6.5模型的架构195
6.5.1顶层196
6.5.2触发层196
6.5.3结构层197
6.5.4数据流层198
第7章Simulink的回调函数199
7.1什么是回调函数199
7.2回调跟踪199
7.3模型回调函数200
7.4模块回调函数202
7.5端口回调函数205
7.6参数回调函数206
7.7回调函数使用例程207
7.7.1打开模型时自动加载变量207
7.7.2双击一个模块来执行MATLAB脚本207
7.7.3开始仿真前执行命令208
7.7.4提示模块端口的连线情况209
7.7.5统计模型中所有模块的信息209
第8章Simulink模型操作自动化212
8.1M语言控制模型的仿真212
8.1.1sim控制模型进行仿真及参数配置212
8.1.2set_param控制模型仿真过程216
8.2M语言修改模块属性218
8.3M语言自动建立模型220
8.3.1模型的建立及打开220
8.3.2模块的添加、删除及替换221
8.3.3信号线的添加及删除223
8.3.4M语言自动创建模型223
第9章Stateflow建模226
9.1状态机建模要素226
9.2Stateflow状态与迁移——电梯控制实例229
9.3Stateflow之Simulink State和Simulink Function236
9.4Stateflow转移与节点应用案例——用状态机逐个处理字符240
9.5Graphical Function+并行状态机实现无人机遥控状态设计244
9.6Entry与Exit使跨层次转移避免接触父层状态边界253
9.7状态机事件应用——RT-Thread线程状态管理实例256
9.7.1实时操作系统原理简介257
9.7.2RT-Thread线程管理状态机案例258
9.8选择/循环语句建模方式261
9.8.1选择语句261
9.8.2循环语句264
第10章S函数268
10.1S函数概述268
10.2S函数的类型268
10.3S函数的要素269
10.4S函数的组成及执行顺序270
10.5不同语言编写的S函数272
10.5.1Level 1 M S函数273
10.5.2Level 2 M S函数278
10.5.3C MEX S函数286
第11章模块的封装313
11.1Mask Editor封装模块313
11.1.1封装模块构成的子系统314
11.1.2封装S函数编写的模块327
11.2编程自动封装模块329
11.2.1模块的属性329
11.2.2使用set_param和get_param封装模块332
11.2.3使用Simulink.Mask类封装模块336
11.3使用GUIDE封装模块345
第12章Simulink创建自定义库350
第13章Simulink自定义环境354
13.1Simulink环境自定义功能354
13.2Simulink工具栏菜单自定义354
13.3Simulink Library Browser菜单栏自定义357
13.4Simulink目标硬件自定义359
13.5Simulink参数对话框控制362
第14章Simulink代码生成技术详解364
14.1模型生成代码技术基础364
14.1.1Simulink模型的C代码生成364
14.1.2模型生成代码的优化365
14.1.3代码的有效性验证365
14.1.4其他验证方法367
14.2Simulink代码生成流程及技巧367
14.2.1传统代码生成配置方法368
14.2.2新版本代码生成配置方法381
14.2.3代码生成的流程392
14.2.4代码生成方法与技巧398
第15章TLC语言444
15.1TLC的作用444
15.2TLC的语法445
15.2.1基本语法445
15.2.2常用指令446
15.2.3注释446
15.2.4变量值扩展符446
15.2.5条件分支446
15.2.6开关分支447
15.2.7循环448
15.2.8文件流451
15.2.9记录451
15.2.10变量清除454
15.2.11语句换行连接454
15.2.12访问范围455
15.2.13输入文件控制455
15.2.14输出格式控制456
15.2.15指定模块生成代码的语言种类456
15.2.16断言457
15.2.17函数457
15.2.18变量类型458
15.2.19操作符和表达式459
15.2.20TLC内建函数461
15.2.21TLC命令行464
15.2.22TLC调试方法465
15.2.23tlc文件的覆盖度468
15.2.24TLC Profiler469
15.3为S函数编写tlc文件471
15.3.1支持代码生成的S函数472
15.3.2模块tlc文件的构成474
15.3.3模块TLC函数实例481
第16章基于模型设计487
16.1垂直起降飞行器488
16.1.1特点概述488
16.1.2案例飞行器介绍489
16.2需求分析491
16.3架构设计493
16.4功能设计495
16.5代码生成496
16.6功能验证498
16.6.1设置测试模型498
16.6.2设置测试文件500
16.6.3测试结果分析504
16.7集成验证507
16.7.1MIL仿真507
16.7.2SIL仿真511
16.7.3PIL仿真513
16.7.4HIL仿真517
16.8试飞验证517
写在最后的话519
参考文献520