版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用文档一、set_param函数的应用(一) 函数调用格式:set_param(object,param,value) ,其中 object 为模块句柄,param 为参数, value为参数值。(二) 举例(1) 启动模型仿真set_param(gcs,Simulatio nComma nd,start)(2) 精确控制模型仿真步长set_param(gcs, SimulationCommand, step),step 为仿真步长数。(3) 设置模块在模型中的位置set_param(mymodel/Gai n,Positio n,50 250 125 275)(4) 设置模块的回调函数se
2、t_param(mymodel/Gai n,Ope nFcn ,my_ope n_cb)(5) 设置模块的朝向set_param(mymodel/Gai n,Orie ntatio n,left)二、实时改变模块的参数单步仿真一次,改变一次参数的值,代码如下:set_param(gcs,Simulatio nComma nd,start)while 1set_param(gcs,Simulatio nComma nd,pause)set_param(你的模块名,Resistanee,你想改变的值);%这一句你替换一下参数即可set_param(gcs,Simulatio nComma nd,s
3、tep)end三、上次末状态作为本次初始状态进行仿真问:已经建立好一个数据仿真模型现在想单独改变一个参数去观察参数扰动对 结果的影响,例如参数变化范围是1000到1500,每7s的时间让参数变化100, 用什么方法可以实现? 答:分次仿真,每次仿真保存末状态,下一次仿真前更改参数,再倒入上次仿真 的末状态作为初始状态,设置如下图:idlHOpt血护比:一In如二1叩1赠;料in k:.诃潜肚迎 Sir,:o::冀tCxe :乳tni 口 壮&主疵?:比血u(id:ichfne血 Slrte. Oj.*Mmrn.iLoveHtteb.tJ四、模型加上标题问:怎么给模型加上标题?答:双击模型空白位
4、置,即可输入text文本,并可以设置字体大小颜色等。五、模型仿真时间与实际运行时间Simuli nk在Normal模式下的仿真时间是非实时的,如果希望得知自己的模 型转换为实际产品时的运行时间,需要将模型生成C代码,下载到硬件目标中去 运行并使用Profiler Timer 进行时间的记录。如处理器在环仿真 Processor in the Loop可以测出模型实际的运行时间。六、关于模块参数和模型解算配置的问题(一)模块参数的配置:根据用户算法要求来配置,具体参数意义与使用方法可 以双击模块打开对话框后在help按钮获取详细帮助。(二)模型结算方法配置:运行仿真的算法一般由解算器提供,分为变
5、步长解算器和固定步长解算器。默认模型选择变步长解算器的ode45算法,能够适应大多 数模型应用场景。如果用户求解刚性模型,需要使用ode23s之类算法。如果用户是使用simulink进行控制算法建模,那么用户一般使用固定步长解算器以模 拟与硬件芯片相同的时钟频率。七、激活stateflow 状态图方法(一)方法一:通过模型的调度时间周期性激活;(二)方法二:通过trigger 信号去激活。八、simulink 中过零问题讨论问:simulink中有哪些过零检测方法?是否有专门的过零检测模块?答:只有自适应与非自适应两种选择,没有专门模块,但是很多模块里有是否使用过零检测的 checkbox,如
6、 Relational Operator ,switch 模块等。九、模块采样时间与系统solver最大步长关系当模块的Sample time设置为-1时表示继承父层的采样时间,如果模块在 子系统里就继承子系统的采样时间,如果模块在最上层模型,就继承系统solver的步长作为采样时间间隔了。另外,如果模块的采样时间设置为-1以外的值,如0表示连续采样,这种时刻需要solver解算器类型支持连续状态解算;当模 块采样时间为0.5这样的数字表示离散采样时间,每隔0.5计算一次,这时要求 模块的采样时间必须是solver计算步长的整数倍。十、solver步长间隔对仿真的影响在变步长解算器中,采样时间
7、间隔(即步长)会根据前后两次计算值的误差动 态改变。如果设置了最大步长,那么每次的步长就不会超出设置的这个上限。十一、关于arduino连接测温模块驱动的问题问:在arduino上连接一个测温模块(如DS18B20,查看DS18B20的技术手册, 说是利用单总线通讯协议就可以读取温度,我想问问在有相关的库函数及读取温 度C程序的情况下,怎么用simulink去驱动测温模块工作,并通过串口将温度传 回PC?答:有相关的库函数和C例程的前提下,就把DS18B20初始化的API在 modelnitialize() 中调用,在model_step()中使用读取温度的API、当然,在 Model.c文件
8、中包含DS18B20库函数所需要的头文件。十二、使用S-Function创建自定义模块如何避免重复初始化问:使用S-Function创建了一个自定义模块,编写了有关的模块TLC文件,并 成功添加入Simulink函数库中,但是在使用时发现若同一模型文件中包含两个 以上该模块,代码生成时会重复进行初始化,即TLC文件中怕门ctio nStart(block, system) Output中的内容,如何解决?答:1.将这部分初始化放到BLockType的tlc函数中;2.使用全局变量对Start中的TLC语句进行判断,仅第一次调用时生成,第二次 以上屏敝。问:必须要在Start中进行,全局变量怎么
9、定义?在模块 TLC中进行定义吗? 答:是的,当这个变量为TLC_TRUE寸则不再执行Start函数,直接跳出。否则 执行。以保证此函数在整个编译过程中只执行一次。十三、关于代码空间的讨论问:在生成代码后,如何查看代码大概会占用多少RAM ROM还有需要多少堆栈空间?答:C代码看不出来的,在编译完之后生成了 ma文件,就可以看到了。十四、Embedded Code、Simulink Coder 的关系问:Embedded Coder 和Simulink Coder 有什么关系?答:如果你想将Simulink模型生成C代码,那么你需要使用Simulink Coder , 而Simulink Co
10、der的运行需要依赖MATLABCoder,所以,完整的讲,如果你需要 将Simulink 模型生成C代码,需要MATLAB Coder + Simulink Coder ;如果你想 将Simulink模型生成为嵌入式C代码,那么,除了上述两个Coder之外,你还 需要 Embedded Code。十五、关于测量算法在处理器上执行时间问题问:最近在看论文,看到作者利用示波器探针测量电机 MTPA算法在DSP上在线 计算时间。我现在做了一个标幺化定点后的电流指令表, 怎么用示波器测量算法 在处理器上执行时间?答:算法在目标处理器上的执行时间是一个非常重要的数据,我们更多时候关心这个数据的最大值,
11、示波器测量的方式,我觉得不一定能采集到最长时间的情形。 在使用MBD开发软件的时候,建议使用PIL获取这个时间值,可以通过大量的测 试用例,获得这个最大时间值。答:是的,matlab的help关于PIL的用处也讲到其中之一就是测量 execution time,把所需要的测量模块封装起来,给定一个输入向量,下载到目标板上,最 后在matlab窗口上输入命令,能够以图像形式给出关于在此输入向量下 average time maximum time 。十六、关于Simulink模型的比较问:在MBD项目的工程管理中,模型的比较和差分是一个常见的问题。国外一些公司设计了专门用来对Simulink模型
12、进行比较和充分的工具,比如德国的 medini unite。我想请教一下,各位在进行MBD设计时,模型比较和差分的问题 怎样解决,都有哪些好用的工具,是否有开放代码的工具。答:MATLAB产品提供了 Simulink Report Generator,这个工具具有模型比较功能,也能实现一些模型合并。十七、S-function builder参数传递问题问:怎么把s-function builder中定义的参数传递到所集成的C语言源文件中?答:在Data Properties的页面中定义参数的变量名何参数,如 pvar。然后在Outputs, Discrete Update等子页面中都可以使用变
13、量名和下标访问参数值,如pvar0。使用这个变量名编写C代码,完成所有配置之后点击build,就可以 将你写的C代码打包集成到生成的C文件中去了。十八、快速原型和硬件在环的区别问:快速原型和硬件在环的区别?答:快速原型,也就是控制器快速原型的简称,顾名思义,就是对 Simuli nk算 法进行控制器功能的快速实现。一般来讲,你可以通过工控机,快速实现控制算 法,而不必对控制算法进行代码生成相关的配置和设置。然后,你可以用这个工控机实现的控制器和被控对象相连,形成闭环,实现在真实被控对象上对控制算 法的验证或者参数调节。硬件在环,是对控制器进行测试的一个环节,在实现了 控制器软件和硬件的集成之后
14、,这时候我们并不能确保控制器一定是正确的,如果这个时候直接把控制器和一些被控对象连接,可能造成财产或者人身伤害,在这种情况下,我们一般会通过工控机去模拟一个被控对象,然后把控制器和这个工控机相连,进行控制器相关测试。十九、tlc文件该怎么编写问:tlc文件该怎么编写?答:在Simulink Browser中搜索S-Function,从example模块中找到带有tlc 的 例子,参考编写即可。另外可以阅读 EmbeddecCoder的User Guide里面详细介 绍了 tlc的编写方式。二十、C MEX S-Function 延时功能 问:现在需要做一个PWM波形输出的S函数,想利用延时功能
15、进行高低位的切换, 但是不知道C-MEX的S函数怎么写延时。答:1、利用状态变量记录输入,在下几个采样时间后再输出;2、直接输出,使用unit delay实现延时。二一、S-Fu ncti on生成代码如何添加自定义的头文件问:我用S函数做了一个简单的s12xdp512的Digital Output 的驱动模块,生 成代码时一直报错 Error Test.c: 28 undeclared identifier PORTA ErrorTest.c: 41 undeclared identifierDDRA。显示的“ PORT”和“ DDRA 都是在单片机的头文件mc9s12xdp512.h中完成
16、定义的,如何在tlc文件中定义该 头文件,以便生成代码时不会报错,代码生成后不用手动添加?答:PORT”和“DDRA都是在单片机的头文件mc9s12xdp512.h中完成定义的, 你的Test.c中有必要使用它们吗?当生成代码时 S函数主要完成将GUI用户设 定参数通过一系列中介文件传递到tic文件中去,最后生成的C文件跟已有头文 件Merge之后再使用IDE编译生成目标文件下载到硬件中去。二十二、PIL测试时主机和DSP的连接问题问:PIL测试时,主机和DSP的连接,到底是用串口, USB 口,还是下载程序的JTAG 口?答:串口和USB 口都是可以用的,串口的话需要提供DSP的串口驱动代码
17、,USB的话,PC端和DSP端的都需要编写,JTAG就不 确定了。二十三、simulink圭寸装的模块Initialization有什么作用问:simulink圭寸装模块Initialization有什么作用,如何写这个In itializati on?答:模块的In itializatio n Comma nds执行的时刻包括以下几个情况:1、 在 Icon draw Comma nds或 In itializatio nComma nds里更改圭寸装的参数时;2、当Icon draw Comma nds有内容时,翻转或旋转模块;3、 双击打开模块的参数对话框或点击参数对话框上的Apply/
18、OK/Cancel关闭对 话框时。二十四、simulink 生成C代码的问题问:如果在simulink 中通过将模型生成C代码,但又想通过其他软件如LabVIEW 调用此C代码,那么在simulink中生成的C代码需要进行一些手动修改,还是 说自动生成的C代码就可以进行使用?答:在选择系统TLC文件时要根据你的需要进行选择。如果是为了生成嵌入式C, 则选择ert.tlc 文件;如果是为了 VC+环境使用,则选择grt.tlc(forVC+),Labview里面你要调用此代码,是指调用其中某个函数吧,如model_step(),将 生成的代码放到可搜索路径下直接调用应该就可以了。二十五、simu
19、link 生成C代码再转化为DLL文件的问题问:通过simulink中编写仿真模型,再将模型生成为C代码,在VC中生成DLL文 件,最后通过LabVIEW调用DLL文件,以实现混合编程的目的,应该怎样实现?答:系统目标选择ert_shrlib.tlc,可以在生成代码的同时生成dll文件。二十五、Simulink多个模块生成代码顺序问题问:在自动代码生成的时候,把一个模块的代码放到最前面,想知道模块生成代码的放置顺序是通过什么来配置的?答:如果有信号线连接的话,执行顺序按照信号流向(前提是DirectFeedThrough 设置正确)。没有信号连接的模块,邮件属性可以设置 Priority 。数
20、字大表示优 先级低。二十六、如何封装手写底层代码问:有没有一种方法能够将手写的底层 c代码封装在matlab的库中,以后可以 与simuli nk自动生成的代码做接口的?答:TSP开发比较花费时间。Legacy CodeTool对既有驱动代码的耦合性有要求, 太过复杂的结构无法直接应用LCT但是可以手动开发。一般包括几个步骤:1. 模块和参数对话框制作2. 模块S函数开发3. 模块TLC文件开发除了驱动模块之外,还有系统目标文件和一系列回调函数的开发。共同构成支持某一个目标芯片的驱动库。二十七、生成代码该注意什么问题问:生成代码该注意什么问题答:要生成代码必须使用支持生成代码的模块,连续模块一
21、般不支持代码生成, 示波器等显示模块也不行。要生成代码,需要确定生成代码的类型,是嵌入式代 码还是一般Windows应用程序代码或其他类型代码,可以选择对应的SystemTarget File ,嵌入式通用代码选择ert.tlc, 快速原型代码使用grt.tlc. 如果 是为了使用各个芯片厂商提供的芯片,最好还要安装它们提供的TSP工具箱和工具链,那里面会有配套的tlc文件。二十八、编写S函数时,采样时间的设计问:在编写S函数时,初始化模块有关采样时间ts=x1 x2,连续系统时设置为 ts=O 0;如果是离散系统,采样时间为h,那么可以写为ts=h 0吗?例如20us 米样一次,该怎么设计呢
22、?答:系统solver设置为固定步长,设置为20us,然后在S函数里设置采样ts = -1,0来继承系统采样时间。二十九、连续状态是否支持自动代码生成问:连续状态是否支持自动代码生成?答1含有连续状态的模块不支持代码生成。因为要生成代码解算器必须是固定 步长的,但是此种解算器不支持连续状态解算。答2:定步长连续1阶积分好像可以生成代码,刚开始用dSPACE勺时候全选的是这个,后来才开始用离散。答3:是的,ode3等定步长算法也支持代码生成。 看来连续模块不能生成代码的 原因还需要讨论。三十、sine wave 模块中 Sample based 和 Time based 的区另问:sine wa
23、ve 模块中Sample based Time based 的区别在哪里?答:Sample based基于采样,Time based基于时间,两种计算正弦的数学公式, 根据你使用情况需要选择,如果你只有输入时间t采用基于时间。如果是离散系 统,一般使用采样点的序号来计算正弦。三一、simulink中如何输入带参数的传递函数问:如何输入分子为s+a,分母为sA2+2bs+bA2的传递函数? a,b其实不是变量, 只是由其他模块计算而来的。答:transfer fen模块支持输入变量,变量只要定义在 Workspace里即可。三十二、rtw文件与tle文件的生成顺序问:rtw文件与tle文件的生成
24、顺序是怎样的?答:先写C文件,编译成mex之后才可以被模型调用,S函数模块里的参数配置 要正确,之后build才能生产rtw。tle再从rtw里面获取信息,进行代码生成。三十三、M语言编写的S函数是否支持代码生成问:M语言编写的S函数是否支持代码生成?答:M语言编写的S函数也是有两种的,Level 1和Level2,Levell仅支持仿真, 不支持代码生成。Level2支持代码生成。三十四、如何在模型里面嵌入 C代码问:某部分内容是e代码封装的,如何在代码生成时把该部分代码直接连接添 加?答:可以使用eustom eode模块,直接添加C代码到模型中并生成到指定的位置, 不进行仿真也不确保代码
25、正确性。三十五、Stateflow 如何代码生成共用体问1: stateflow 的RTW自动代码生成,怎么设置才能生成e语言的共用体? 答1楼主可以在Custom code里面定义共同体,将此文件作为头文件包含,然 后在Stateflow 模型里使用此共同体变量或其成员,生成代码时会自动Merge在 一起。问2: Stateflow 使用的时候,signal 的属性怎么弄?比如:data type。答2: Stateflow 的运行都是要先生成C代码,再编译成动态链接库文件(meX, 然后才能运行的。所以,在custom code设置通过C代码或者C文件定义出来的 函数或者变量,只要符合C语
26、言语法规则,就可以被用到Stateflow 模型的各种 actio n 里。三十六、如何将simulink自动生成的代码中如何使用外部RAM 问:因为程序太大,想在SIMULINK自动生成代码时直接将PAGE1定位到外部RAM 请问如何设置?答:通过数据对象的方式定义各类数据,使其定义到期望的RAM区域。在手工编码的时候,遇到你说的这种情况,我们一般会通过在 link文件中定义RAM段, 然后在C文件中定义变量的时候,通过pragma关键字,把这些变量定义到预先 设定的地址段里。所以,你做自动代码生成的时候,也需要生成出来通过pragma 定义的变量,这需要你通过数据对象的方式实现,并且,这种
27、情况下,需要自定 义Package,以及package 里的类,在类的属性 storage class 里设置pragma。 然后生成的代码里,就可以有类似于以下的代码:#pragma sect ion_A beg in in t8_T var1;in t16_T var2;#pragma sect ion_A end这样var1、var2等就被定义到section_A 存储区域了。三十七、如何拆分生成的代码中 model_data.c里面定义的parameter结构体?问:在使用simulink embeddedcoder生成的代码中,会将模型中的lookup table、 constant常数等统一放在了一个叫parameter的结构体内(也就是在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机场综合交通枢纽配套工程初步设计
- 棚户区危旧房改造工程申请报告
- 2025福建中烟工业限责任公司校园招聘65人易考易错模拟试题(共500题)试卷后附参考答案
- 2025甘肃移动春季校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025甘肃电投常乐发电限责任公司招聘53人易考易错模拟试题(共500题)试卷后附参考答案
- 2025湖南衡阳市事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025湖南益阳南县城乡发展投资限公司招聘23人易考易错模拟试题(共500题)试卷后附参考答案
- 5G通信技术:网络架构优化路径研究
- 2025浙江金华金开招商招才服务集团限公司招聘劳动合同制工作人员67人易考易错模拟试题(共500题)试卷后附参考答案
- 2025浙江台州市黄岩西部资源开发限公司招聘劳务派遣工作人员2人易考易错模拟试题(共500题)试卷后附参考答案
- 酒店安全巡查日常检查记录表
- 初中数学教师培训讲座
- 新版膳食指南2025电子版
- T-GDPHA 001-2025 广州市非急救医疗转运管理标准
- 2025年教师招考教育心理学试题(附答案)
- 浙江国企招聘2025杭州市供销社社有企业春季招聘16人笔试参考题库附带答案详解
- 酒店餐饮销售培训课件
- 膜蒸馏海水淡化技术73课件
- 现场管理活动方案
- 2025至2030全球及中国转向泵行业产业运行态势及投资规划深度研究报告
- QGDW11008-2013低压计量箱技术规范
评论
0/150
提交评论