2022年Simulink一些知识总结 .pdf
《2022年Simulink一些知识总结 .pdf》由会员分享,可在线阅读,更多相关《2022年Simulink一些知识总结 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习资料收集于网络,仅供参考学习资料一、set_param 函数的应用(一)函数调用格式:set_param(object,param,value),其中 object为模块句柄, param 为参数,value 为参数值。(二)举例(1)启动模型仿真set_param(gcs,SimulationCommand,start) (2)精确控制模型仿真步长set_param(gcs, SimulationCommand, step),step 为仿真步长数。(3)设置模块在模型中的位置set_param(mymodel/Gain,Position,50 250 125 275) (4)设置模块的
2、回调函数set_param(mymodel/Gain,OpenFcn,my_open_cb) (5) 设置模块的朝向set_param(mymodel/Gain,Orientation,left) 二、实时改变模块的参数单步仿真一次,改变一次参数的值,代码如下:set_param(gcs,SimulationCommand,start) while 1 set_param(gcs,SimulationCommand,pause) set_param( 你的模块名, Resistance, 你想改变的值 ); % 这一句你替换一下参数即可set_param(gcs,SimulationComma
3、nd,step) end 三、上次末状态作为本次初始状态进行仿真问:已经建立好一个数据仿真模型现在想单独改变一个参数去观察参数扰动对结果的影响, 例如参数变化范围是1000 到 1500,每 7s 的时间让参数变化100,用什么方法可以实现?答:分次仿真,每次仿真保存末状态,下一次仿真前更改参数,再倒入上次仿真的末状态作为初始状态 , 设置如下图 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 学习资料收集于网络,仅供参考
4、学习资料四、模型加上标题问:怎么给模型加上标题?答:双击模型空白位置,即可输入text 文本,并可以设置字体大小颜色等。五、模型仿真时间与实际运行时间Simulink 在Normal 模式下的仿真时间是非实时的, 如果希望得知自己的模型转换为实际产品时的运行时间,需要将模型生成 C 代码,下载到硬件目标中去运行并使用 Profiler Timer 进行时间的记录。如处理器在环仿真Processor in the Loop 可以测出模型实际的运行时间。六、关于模块参数和模型解算配置的问题(一)模块参数的配置: 根据用户算法要求来配置, 具体参数意义与使用方法可以双击模块打开对话框后在help 按
5、钮获取详细帮助。(二)模型结算方法配置: 运行仿真的算法一般由解算器提供,分为变步长解算器和固定步长解算器。 默认模型选择变步长解算器的ode45 算法,能够适应大多数模型应用场景。如果用户求解刚性模型,需要使用ode23s 之类算法。如果用户是使用 simulink 进行控制算法建模,那么用户一般使用固定步长解算器以模拟与硬件芯片相同的时钟频率。七、激活 stateflow 状态图方法(一)方法一:通过模型的调度时间周期性激活;(二)方法二:通过trigger 信号去激活。八、simulink 中过零问题讨论问:simulink 中有哪些过零检测方法?是否有专门的过零检测模块?名师资料总结
6、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 学习资料收集于网络,仅供参考学习资料答:只有自适应与非自适应两种选择,没有专门模块, 但是很多模块里有是否使用过零检测的 checkbox,如Relational Operator,switch 模块等。九、模块采样时间与系统solver 最大步长关系当模块的 Sample time 设置为 -1 时表示继承父层的采样时间,如果模块在子系统里就继承子系统的采样时间,如果模块在最上层模型, 就继
7、承系统 solver 的步长作为采样时间间隔了。另外,如果模块的采样时间设置为-1 以外的值,如0 表示连续采样,这种时刻需要solver 解算器类型支持连续状态解算;当模块采样时间为 0.5 这样的数字表示离散采样时间, 每隔0.5 计算一次,这时要求模块的采样时间必须是 solver 计算步长的整数倍。十、solver 步长间隔对仿真的影响在变步长解算器中, 采样时间间隔 ( 即步长 )会根据前后两次计算值的误差动态改变。如果设置了最大步长,那么每次的步长就不会超出设置的这个上限。十一、关于 arduino 连接测温模块驱动的问题问:在arduino 上连接一个测温模块(如 DS18B20
8、 ),查看DS18B20 的技术手册,说是利用单总线通讯协议就可以读取温度,我想问问在有相关的库函数及读取温度C 程序的情况下, 怎么用 simulink 去驱动测温模块工作, 并通过串口将温度传回PC ?答:有相关的库函数和 C 例程的前提下,就把 DS18B20 初始化的 API 在model_initialize()中调用,在 model_step() 中使用读取温度的 API、当然,在Model.c 文件中包含 DS18B20 库函数所需要的头文件。十二、使用 S-Function 创建自定义模块如何避免重复初始化问:使用S-Function 创建了一个自定义模块, 编写了有关的模块
9、TLC 文件, 并成功添加入 Simulink 函数库中,但是在使用时发现若同一模型文件中包含两个以上该模块,代码生成时会重复进行初始化,即TLC 文件中%functionStart(block, system) Output 中的内容,如何解决?答:1. 将这部分初始化放到 BLockType 的tlc 函数中;2. 使用全局变量对 Start 中的TLC 语句进行判断, 仅第一次调用时生成, 第二次以上屏蔽。问:必须要在 Start 中进行,全局变量怎么定义?在模块TLC 中进行定义吗?答:是的,当这个变量为TLC_TRUE 时则不再执行 Start 函数,直接跳出。否则执行。以保证此函数
10、在整个编译过程中只执行一次。十三、关于代码空间的讨论名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - 学习资料收集于网络,仅供参考学习资料问:在生成代码后,如何查看代码大概会占用多少RAM ROM,还有需要多少堆栈空间?答:C 代码看不出来的,在编译完之后生成了map 文件,就可以看到了。十四、 Embedded Coder 、Simulink Coder 的关系问:Embedded Coder 和Simulink Coder
11、有什么关系?答:如果你想将 Simulink 模型生成 C 代码,那么你需要使用 Simulink Coder ,而Simulink Coder的运行需要依赖 MATLAB Coder,所以,完整的讲,如果你需要将Simulink 模型生成 C 代码,需要 MATLAB Coder + Simulink Coder;如果你想将Simulink 模型生成为嵌入式 C 代码,那么,除了上述两个Coder 之外,你还需要Embedded Coder 。十五、关于测量算法在处理器上执行时间问题问:最近在看论文,看到作者利用示波器探针测量电机MTPA 算法在 DSP 上在线计算时间。我现在做了一个标幺化
12、定点后的电流指令表,怎么用示波器测量算法在处理器上执行时间?答:算法在目标处理器上的执行时间是一个非常重要的数据,我们更多时候关心这个数据的最大值,示波器测量的方式, 我觉得不一定能采集到最长时间的情形。在使用 MBD 开发软件的时候, 建议使用 PIL 获取这个时间值, 可以通过大量的测试用例,获得这个最大时间值。答:是的,matlab 的help 关于PIL 的用处也讲到其中之一就是测量 execution time ,把所需要的测量模块封装起来,给定一个输入向量,下载到目标板上,最后在matlab 窗口上输入命令,能够以图像形式给出关于在此输入向量下average time maximu
13、m time。十六、关于 Simulink 模型的比较问:在MBD 项目的工程管理中, 模型的比较和差分是一个常见的问题。国外一些公司设计了专门用来对 Simulink 模型进行比较和充分的工具,比如德国的medini unite 。我想请教一下,各位在进行MBD 设计时,模型比较和差分的问题怎样解决,都有哪些好用的工具,是否有开放代码的工具。答: MATLAB 产品提供了 Simulink Report Generator,这个工具具有模型比较功能,也能实现一些模型合并。十七、 S-function builder 参数传递问题问:怎么把 s-function builder 中定义的参数传
14、递到所集成的C 语言源文件中?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - 学习资料收集于网络,仅供参考学习资料答: 在Data Properties 的页面中定义参数的变量名何参数,如pvar 。然后在Outputs, Discrete Update 等子页面中都可以使用变量名和下标访问参数值,如pvar0 。使用这个变量名编写 C代码,完成所有配置之后点击build ,就可以将你写的 C 代码打包集成到生成的 C 文件中
15、去了。十八、快速原型和硬件在环的区别问:快速原型和硬件在环的区别?答:快速原型,也就是控制器快速原型的简称,顾名思义,就是对Simulink 算法进行控制器功能的快速实现。一般来讲, 你可以通过工控机, 快速实现控制算法,而不必对控制算法进行代码生成相关的配置和设置。然后,你可以用这个工控机实现的控制器和被控对象相连,形成闭环,实现在真实被控对象上对控制算法的验证或者参数调节。 硬件在环, 是对控制器进行测试的一个环节,在实现了控制器软件和硬件的集成之后, 这时候我们并不能确保控制器一定是正确的,如果这个时候直接把控制器和一些被控对象连接,可能造成财产或者人身伤害, 在这种情况下, 我们一般会
16、通过工控机去模拟一个被控对象,然后把控制器和这个工控机相连,进行控制器相关测试。十九、 tlc 文件该怎么编写问:tlc 文件该怎么编写?答:在Simulink Browser 中搜索 S-Function, 从example 模块中找到带有 tlc 的例子,参考编写即可。另外可以阅读Embedded Coder 的User Guide 里面详细介绍了tlc 的编写方式。二十、 C MEX S-Function 延时功能问: 现在需要做一个 PWM 波形输出的 S 函数, 想利用延时功能进行高低位的切换,但是不知道 C-MEX 的S 函数怎么写延时。答:1、利用状态变量记录输入,在下几个采样时
17、间后再输出;2、直接输出,使用unit delay 实现延时。二十一、 S-Function 生成代码如何添加自定义的头文件问:我用 S 函数做了一个简单的 s12xdp512 的Digital Output 的驱动模块,生成代码时一直报错 Error Test.c: 28 undeclared identifier PORTA Error Test.c: 41 undeclared identifier DDRA 。显示的“ PORTA ”和“ DDRA ”都是在单片机的头文件 mc9s12xdp512.h 中完成定义的,如何在 tlc 文件中定义该头文件,以便生成代码时不会报错,代码生成后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Simulink一些知识总结 2022 Simulink 一些 知识 总结
限制150内