欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年Simulink一些知识总结.docx

    • 资源ID:12804741       资源大小:72.32KB        全文页数:11页
    • 资源格式: DOCX        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年Simulink一些知识总结.docx

    学习资料收集于网络,仅供参考一、set_param 函数的应用(一)函数调用格式:set_paramobject,param,value,其中 object为模块句柄, param 为参数,value为参数值;(二)举例(1) )启动模型仿真set_paramgcs,'SimulationCommand','start'(2) )精确掌握模型仿真步长set_paramgcs, 'SimulationCommand', 'step',step为仿真步长数;(3) )设置模块在模型中的位置set_param'mymodel/Gain','Position',50 250 125 275(4) )设置模块的回调函数set_param'mymodel/Gain','OpenFcn','my_open_cb'5 设置模块的朝向set_param'mymodel/Gain','Orientation','left' 二、实时转变模块的参数单步仿真一次,转变一次参数的值,代码如下:set_paramgcs,'SimulationCommand','start' while 1 set_paramgcs,'SimulationCommand','pause'set_param 你的模块名, 'Resistance',你想转变的值 ;%这一句你替换一下参数即可set_paramgcs,'SimulationCommand','step' end三、上次末状态作为本次初始状态进行仿真问:已经建立好一个数据仿真模型现在想单独转变一个参数去观看参数扰动对 结果的影响, 例如参数变化范畴是 1000 到 1500,每 7s 的时间让参数变化 100, 用什么方法可以实现 ?答:分次仿真,每次仿真储存末状态,下一次仿真前更换参数,再倒入上次仿真的末状态作为初始状态 , 设置如下图 :学习资料四、模型加上标题问:怎么给模型加上标题?答:双击模型空白位置,即可输入 text文本,并可以设置字体大小颜色等;五、模型仿真时间与实际运行时间Simulink 在Normal 模式下的仿真时间是非实时的, 假如期望得知自己的模型转换为实际产品时的运行时间, 需要将模型生成 C 代码,下载到硬件目标中去运行并使用 Profiler Timer 进行时间的记录;如处理器在环仿真 Processor in the Loop 可以测出模型实际的运行时间;六、关于模块参数和模型解算配置的问题(一)模块参数的配置: 依据用户算法要求来配置, 具体参数意义与使用方法可以双击模块打开对话框后在 help按钮猎取具体帮忙;(二)模型结算方法配置: 运行仿真的算法一般由解算器供应, 分为变步长解算器和固定步长解算器; 默认模型挑选变步长解算器的 ode45 算法,能够适应大多数模型应用场景;假如用户求解刚性模型,需要使用ode23s 之类算法;假如用户是使用 simulink进行掌握算法建模,那么用户一般使用固定步长解算器以模 拟与硬件芯片相同的时钟频率;七、激活 stateflow状态图方法(一)方法一:通过模型的调度时间周期性激活;(二)方法二:通过 trigger信号去激活;八、simulink中过零问题争论问: simulink中有哪些过零检测方法?是否有特地的过零检测模块?答:只有自适应与非自适应两种挑选, 没有特地模块, 但是许多模块里有是否使用过零检测的 checkbox,如Relational Operator,switch模块等;九、模块采样时间与系统 solver最大步长关系当模块的 Sample time设置为 -1时表示继承父层的采样时间,假如模块在 子系统里就继承子系统的采样时间, 假如模块在最上层模型, 就继承系统 solver 的步长作为采样时间间隔了;另外,假如模块的采样时间设置为-1以外的值, 如0 表示连续采样,这种时刻需要 solver解算器类型支持连续状态解算;当模块采样时间为 0.5这样的数字表示离散采样时间, 每隔0.5运算一次, 这时要求模块的采样时间必需是 solver运算步长的整数倍;十、solver步长间隔对仿真的影响在变步长解算器中, 采样时间间隔 即步长 会依据前后两次运算值的误差动态转变;假如设置了最大步长,那么每次的步长就不会超出设置的这个上限;十一、关于 arduino连接测温模块驱动的问题问:在arduino上连接一个测温模块(如 DS18B2)0 ,查看DS18B20的技术手册,说是利用单总线通讯协议就可以读取温度,我想问问在有相关的库函数及读取温度C 程序的情形下, 怎么用simulink 去驱动测温模块工作, 并通过串口将温度传回PC?答:有相关的库函数和 C 例程的前提下,就把 DS18B20初始化的 API 在model_initialize中调用,在 model_step 中使用读取温度的 API、当然,在Model.c文件中包含 DS18B20库函数所需要的头文件;十二、使用 S-Function创建自定义模块如何防止重复初始化问:使用S-Function创建了一个自定义模块, 编写了有关的模块 TLC 文件, 并胜利添加入 Simulink函数库中,但是在使用时发觉如同一模型文件中包含两个 以上该模块,代码生成时会重复进行初始化,即TLC 文件中%functionStartblock, system Output中的内容,如何解决? 答: 1. 将这部分初始化放到 BLockType 的tlc函数中;2. 使用全局变量对 Start中的TLC 语句进行判定, 仅第一次调用时生成, 其次次以上屏蔽;问:必需要在 Start中进行,全局变量怎么定义?在模块 TLC 中进行定义吗?答:是的,当这个变量为 TLC_TRUE时就不再执行 Start函数,直接跳出;否就执行;以保证此函数在整个编译过程中只执行一次;十三、关于代码空间的争论问:在生成代码后,如何查看代码大致会占用多少RAM RO,M仍有需要多少堆栈空间?答: C 代码看不出来的,在编译完之后生成了map文件,就可以看到了;十四、 Embedded Code、rSimulink Coder的关系问: Embedded Coder 和Simulink Coder有什么关系?答:假如你想将 Simulink模型生成 C 代码,那么你需要使用 Simulink Coder, 而SimulinkCoder的运行需要依靠 MATLABCoder,所以,完整的讲,假如你需要将Simulink模型生成 C 代码,需要 MATLAB Coder + Simulink Coder ;假如你想将Simulink模型生成为嵌入式 C 代码,那么,除了上述两个 Coder 之外,你仍需要Embedded Code;r十五、关于测量算法在处理器上执行时间问题问:最近在看论文,看到作者利用示波器探针测量电机MTPA算法在 DSP 上在线运算时间;我现在做了一个标幺化定点后的电流指令表, 怎么用示波器测量算法在处理器上执行时间?答:算法在目标处理器上的执行时间是一个特别重要的数据, 我们更多时候关怀这个数据的最大值, 示波器测量的方式, 我觉得不肯定能采集到最长时间的情形;在使用 MBD开发软件的时候, 建议使用 PIL 猎取这个时间值, 可以通过大量的测试用例,获得这个最大时间值;答:是的,matlab的help关于PIL 的用处也讲到其中之一就是测量execution time ,把所需要的测量模块封装起来,给定一个输入向量,下载到目标板上,最终在matlab窗口上输入命令,能够以图像形式给出关于在此输入向量下 average time maximum time;十六、关于 Simulink模型的比较问:在MBD项目的工程治理中, 模型的比较和差分是一个常见的问题; 国外一些公司设计了特地用来对 Simulink模型进行比较和充分的工具,比如德国的 medini unite ;我想请教一下,各位在进行 MBD设计时,模型比较和差分的问题怎样解决,都有哪些好用的工具,是否有开放代码的工具;答: MATLAB产品供应了 Simulink Report Generator,这个工具具有模型比较功能,也能实现一些模型合并;十七、 S-function builder参数传递问题问:怎么把 s-function builder中定义的参数传递到所集成的 C 语言源文件中?答: 在Data Properties的页面中定义参数的变量名何参数,如 pvar ;然后在Outputs, Discrete Update等子页面中都可以使用变量名和下标拜访参数值, 如pvar0 ;使用这个变量名编写 C代码,完成全部配置之后点击 build ,就可以将你写的 C 代码打包集成到生成的 C 文件中去了;十八、快速原型和硬件在环的区分问:快速原型和硬件在环的区分?答:快速原型,也就是掌握器快速原型的简称,顾名思义,就是对Simulink算法进行掌握器功能的快速实现; 一般来讲, 你可以通过工控机, 快速实现掌握算法,而不必对掌握算法进行代码生成相关的配置和设置;然后, 你可以用这个工控机实现的掌握器和被控对象相连, 形成闭环, 实现在真实被控对象上对掌握算法的验证或者参数调剂; 硬件在环, 是对掌握器进行测试的一个环节, 在实现了掌握器软件和硬件的集成之后, 这时候我们并不能确保掌握器肯定是正确的, 假如这个时候直接把掌握器和一些被控对象连接,可能造成财产或者人身损害, 在这种情形下, 我们一般会通过工控机去模拟一个被控对象, 然后把掌握器和这个工控机相连,进行掌握器相关测试;十九、 tlc文件该怎么编写问: tlc文件该怎么编写?答:在Simulink Browser 中搜寻S-Function, 从example 模块中找到带有 tlc 的例子,参考编写即可;另外可以阅读 EmbeddedCoder 的User Guide 里面具体介绍了tlc 的编写方式;二十、 C MEX S-Function 延时功能问:现在需要做一个 PWM波形输出的 S 函数,想利用延时功能进行高低位的切换, 但是不知道 C-MEX的S 函数怎么写延时;答:1、利用状态变量记录输入,在下几个采样时间后再输出;2、直接输出,使用unit delay实现延时;二十一、 S-Function生成代码如何添加自定义的头文件问:我用 S 函数做了一个简洁的 s12xdp512 的Digital Output 的驱动模块,生成代码时始终报错 Error Test.c: 28 undeclared identifier PORTA' ErrorTest.c: 41 undeclared identifier DDRA';显示的“ PORT”A 和“ DDRA”都是在单片机的头文件 "mc9s12xdp512.h" 中完成定义的,如何在tlc 文件中定义该头文件,以便生成代码时不会报错,代码生成后不用手动添加?答:PORT”A 和“DDR”A 都是在单片机的头文件 "mc9s12xdp512.h" 中完成定义的 ,你的Test.c中有必要使用它们吗?当生成代码时 S 函数主要完成将 GUI 用户设定参数通过一系列中介文件传递到 tlc文件中去,最终生成的 C 文件跟已有头文件Merge 之后再使用 IDE 编译生成目标文件下载到硬件中去;二十二、 PIL 测试时主机和 DSP 的连接问题问:PIL 测试时,主机和 DSP的连接,究竟是用串口, USB 口,仍是下载程序的JTAG 口?答:串口和 USB 口都是可以用的,串口的话需要供应DSP 的串口驱动代码, USB 的话, PC 端和DSP端的都需要编写, JTAG 就不确定了;二十三、 simulink封装的模块 Initialization有什么作用问: simulink封装模块 Initialization有什么作用,如何写这个Initialization?答:模块的 Initialization Commands执行的时刻包括以下几个情形:1、在 Icondraw Commands或 InitializationCommands里更换封装的参数时; 2、当 Icon draw Commands有内容时,翻转或旋转模块;3、双击打开模块的参数对话框或点击参数对话框上的Apply/OK/Cancel关闭对话框时;二十四、 simulink生成C 代码的问题问:假如在 simulink中通过将模型生成 C 代码 ,但又想通过其他软件如 LabVIEW 调用此C 代码,那么在 simulink中生成的 C 代码需要进行一些手动修改,仍是 说自动生成的 C 代码就可以进行使用?答:在挑选系统 TLC 文件时要依据你的需要进行挑选; 假如是为了生成嵌入式 C, 就挑选 ert.tlc文件; 假如是为了 VC+ 环境使用, 就挑选 grt.tlcforVC+, Labview 里面你要调用此代码, 是指调用其中某个函数吧, 如model_step ,将生成的代码放到可搜寻路径下直接调用应当就可以了;二十五、 simulink生成C 代码再转化为 DLL 文件的问题问:通过simulink中编写仿真模型, 再将模型生成为 C 代码,在VC 中生成 DLL 文件,最终通过 LabVIEW调用DLL 文件, 以实现混合编程的目的, 应当怎样实现?答:系统目标挑选 ert_shrlib.tlc,可以在生成代码的同时生成 dll文件;二十五、 Simulink多个模块生成代码次序问题问:在自动代码生成的时候, 把一个模块的代码放到最前面, 想知道模块生成代码的放置次序是通过什么来配置的?答:假如有信号线连接的话, 执行次序依据信号流向 (前提是 DirectFeedThrough 设置正确);没有信号连接的模块,邮件属性可以设置 Priority ;数字大表示优先级低;二十六、如何封装手写底层代码问:有没有一种方法能够将手写的底层c 代码封装在 matlab的库中,以后可以与simulink自动生成的代码做接口的?答:TSP 开发比较花费时间; Legacy CodeTool 对既有驱动代码的耦合性有要求, 太过复杂的结构无法直接应用 LCT;但是可以手动开发;一般包括几个步骤:1. 模块和参数对话框制作2. 模块S 函数开发3. 模块TLC 文件开发除了驱动模块之外, 仍有系统目标文件和一系列回调函数的开发; 共同构成支持某一个目标芯片的驱动库;二十七、生成代码该留意什么问题问:生成代码该留意什么问题答:要生成代码必需使用支持生成代码的模块,连续模块一般不支持代码生成,示波器等显示模块也不行; 要生成代码, 需要确定生成代码的类型, 是嵌入式代码仍是一般Windows 应用程序代码或其他类型代码,可以挑选对应的System Target File,嵌入式通用代码挑选ert.tlc,快速原型代码使用 grt.tlc.假如是为了使用各个芯片厂商供应的芯片,最好仍要安装它们供应的TSP 工具箱和工具链,那里面会有配套的 tlc文件;二十八、编写 S 函数时,采样时间的设计问:在编写 S 函数时,初始化模块有关采样时间 ts=x1x2 ,连续系统时设置为ts=00; 假如是离散系统,采样时间为 h,那么可以写为 ts=h0 吗?例如 20us 采样一次,该怎么设计呢?答:系统 solver设置为固定步长,设置为 20us,然后在S 函数里设置采样 ts = -1, 0来继承系统采样时间;二十九、连续状态是否支持自动代码生成问:连续状态是否支持自动代码生成?答1:含有连续状态的模块不支持代码生成;由于要生成代码解算器必需是固定步长的,但是此种解算器不支持连续状态解算;答2:定步长连续 1 阶积分似乎可以生成代码,刚开头用 dSPACE的时候全选的是这个,后来才开头用离散;答3:是的, ode3 等定步长算法也支持代码生成; 看来连续模块不能生成代码的缘由仍需要争论;三十、 sine wave模块中Sample based 和 Time based的区分问: sine wave模块中Sample based Time based 的区分在哪里?答:Sample based 基于采样, Time based 基于时间, 两种运算正弦的数学公式, 依据你使用情形需要挑选, 假如你只有输入时间 t 采纳基于时间; 假如是离散系统,一般使用采样点的序号来运算正弦;三十一、 simulink 中如何输入带参数的传递函数问:如何输入分子为 s+a,分母为 s2+2bs+b2的传递函数? a,b其实不是变量, 只是由其他模块运算而来的;答: transfer fcn模块支持输入变量,变量只要定义在 Workspace 里即可;三十二、 rtw文件与tlc文件的生成次序问: rtw文件与tlc文件的生成次序是怎样的?答:先写C 文件,编译成 mex 之后才可以被模型调用, S 函数模块里的参数配置要正确,之后 build才能生产 rtw ;tlc再从rtw里面猎取信息 , 进行代码生成;三十三、 M 语言编写的 S 函数是否支持代码生成问: M 语言编写的 S 函数是否支持代码生成?答:M 语言编写的 S 函数也是有两种的, Level 1和Level2 ,Level1仅支持仿真,不支持代码生成; Level2支持代码生成;三十四、如何在模型里面嵌入 C 代码问:某部分内容是 c 代码封装的,如何在代码生成时把该部分代码直接连接添加?答:可以使用 custom code 模块,直接添加 C 代码到模型中并生成到指定的位置, 不进行仿真也不确保代码正确性;三十五、 Stateflow 如何代码生成共用体问1: stateflow的RTW自动代码生成,怎么设置才能生成 c 语言的共用体?答1:楼主可以在 Custom code 里面定义共同体,将此文件作为头文件包含,然后在Stateflow模型里使用此共同体变量或其成员, 生成代码时会自动 Merge 在一起;问2: Stateflow使用的时候, signal的属性怎么弄?比如: data type;答2:Stateflow的运行都是要先生成 C 代码,再编译成动态链接库文件 (mex), 然后才能运行的;所以,在 custom code 设置通过 C 代码或者 C 文件定义出来的函数或者变量, 只要符合 C 语言语法规章, 就可以被用到 Stateflow模型的各种action里;三十六、如何将 simulink自动生成的代码中如何使用外部 RAM问:由于程序太大,想在 SIMULINK自动生成代码时直接将 PAGE1定位到外部 RAM,请问如何设置?答:通过数据对象的方式定义各类数据, 使其定义到期望的 RAM区域;在手工编码的时候,遇到你说的这种情形,我们一般会通过在link文件中定义 RAM段, 然后在C 文件中定义变量的时候,通过 pragma 关键字,把这些变量定义到预先设定的地址段里; 所以,你做自动代码生成的时候, 也需要生成出来通过 pragma 定义的变量,这需要你通过数据对象的方式实现,并且,这种情形下,需要自定义Package,以及 package 里的类,在类的属性 storage class里设置 pragma;然后生成的代码里,就可以有类似于以下的代码:#pragma section_A begin int8_T var1;int16_T var2;.#pragma section_A end这样var1 、var2等就被定义到 section_A储备区域了;三十七、如何拆分生成的代码中 model_data.c 里面定义的 parameter结构体?问:在使用 simulink embedded coder生成的代码中,会将模型中的 lookup table 、constant常数等统一放在了一个叫 parameter的结构体内 也就是在model_data.c里面定义的数据 ;由于整个模型中的 lookup table许多,导致这个结构体及其巨大,初步估量有7K byte大小;请问有没有方法拆分这个结构体的体积?答:使用数据对象定义这些参数,就可以不用放到model_data.c文件了;三十八、目标文件 ert.tlc与grt.tlc的区分问: grt与ert的区分在哪里?各自作用如何?答: grt中的g 表示general ,ert中的e 表示embedded,两个文件都是系统目标文件,使用 grt.tlc作为系统目标文件,生成的代码可以用作快速原型,而ert.tlc生成的代码可以用于嵌入式系统; ert.tlc生成的是更高效的代码;三十九、关于触发子系统的总结当系统内部不存在积分环节时:1. 触发子系统内外不能使用 goto和from模块传递信号,这是由 atomic子系统属性打算的2. 触发子系统内的模块采样时间只能是 inf或者-1 ,即继承采样时间;当子系统内部有信号源时需留意该点3. 触发子系统的工作特性是在触发的一瞬时输出系统内该时刻的值,然后保持; 触发子系统只可挑选 held信号,而不能 reset信号;4. 触发子系统有信号源与外界接入信号源成效是一样的,但是内部信号源要修改采样时间为 -15. 子系统内的信号显示很有意思,是第一次触发开头的值到最终一次触发终止 的值;中间数值都是保持状态; 当系统内部存在积分环节时: 触发子系统内部有积分环节并且需要转变积分初值,这个问题没有解决例如testforsubsystems中triggered subsystem; 四十、关于使能子系统的总结1. 当系统内部不存在积分环节时: 使能触发子系统相当于一个触发子系统, 使能环节的作用应包含在了触发子系统之内;2. 当系统内部存在积分环节时: 使能触发子系统解决了触发子系统的有积分环节时不能解决的问题;四十一、 switch的使用说明该模块共有三个输入,其中其次个(即u2)为掌握信号的输入,将其与阀值或者0 进行判定,判定类型有:大于等于阀值、大于阀值、不等于0 三种类型,默认判定为真时输出第一个信号,否就输出第三个信号;

    注意事项

    本文(2022年Simulink一些知识总结.docx)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开