ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:481.65KB ,
资源ID:10676348      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10676348.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(从MatlabSimulink生成易读可重用代码.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

从MatlabSimulink生成易读可重用代码.docx

1、从MatlabSimulink生成易读可重用代码从Matlab-Simulink生成易读可重用代码1) 2) 3) 长,离散,可调参数,ERT目标,C语言,设置基本固定,未设置的地方保持默认。 solver options: type - Fixed step. solver - Discrete. optimization-signals and parameters: Default parameter behavior - tunable. Pass reusable subsystem outputs as -输出较多选用structure reference. hardware im

2、plementation: 按实际设hardware board, device, device details. code generation: System target file - ert.tlc, Language - C, generate code only. code generation objectives. comments: include comments, 默认全选,可按需要选择。 symbols: 命名规则设置,按各自代码规范设置。 interface: 设置整个模型生成代码的接口。 code interface package,可选择可重用,Pass root

3、 level I/O as,模型输入输出参数一般较多,一般选择结构体,structure reference,模型数据、输入、输出通过各自独立结构体传入参数;part of model data structure,一个结构体传入参数。也可选择不可重用。 configure model functions,点击进入,设置模型具体的C原型。get default configuration,可修改模型默认initialize/step函数名,及参数,各输入输出单独作为函数参数,这与结构体传参是矛盾的,不能同时设置。 code style: 设置代码风格。 Parentheses括号, - Nom

4、inal(readability),按可读性优化。 Casting mode 强制转换方式,Nominal. Code indentation 代码缩进, size - 4. Code placement: 代码放置,可设置变量定义或声明在单独文件还是和源代码放一起,头文件包含是还是 head.h 。 Data type replacement: 数据类型替换。4) 设置模型中每一个基本模块的属性。包括名称、值、数据类型、采样时间等。子模块或者引用模型等这类自定义模块,除了内部基本模块的属性外,还要设置各自的模块属性。模块中参数等值,必须按照设计配置;如果想使用可调参数,则将参数设置为变量,再

5、设置变量值。生成代码模型中的模块名设置,最好遵循目标语言的命名规则,因为生成代码中的一些名称可以从模块名继承。嵌入式应用大多无浮点单元,定点数据的设置在模块属性的代码生成栏。将图 1中各模块可按如下方式设置: inport,点击模块下方名称,设置模块名,将其设置为In;双击模块进入模块属性设置,main栏设置编号,编号会体现在子系统或引用模型上;signal attributes设置数据类型为定点数,16b字长10b小数部分fixdt(1,16,10)。其它模块设置方法类似。 view-model data,弹出model data窗口。simulink提供的model data窗口,用于显示

6、当前层级下的所有输入输出、信号、状态、参数,并将对应属性罗列成表格,而且表格可编辑部分属性。 Kp增益模块,双击模块,输出数据类型设置为同输入,参数数据类型设置为从Gain继承,Gain设置为Kp。 在model data窗口,参数栏,Kp模块,值变为Kp,其后出现create.链接字样。点击弹出create new data窗口,值选择Simulink.Parameter,位置选择Base Workspace,创建,弹出Simulink.Parameter: Kp属性窗口,设置值为10,数据类型为定点数fixdt(1,16,10),存储类型选择ExportedGlobal,确定。 Ki增益模

7、块,使用设置Kp的方法将simulink参数属性值设为1。 File-Model properties,弹出模型属性窗口,选择数据栏,将数据定义到数据字典,选择或新建一个数据字典文件,应用。建立在基本工作区的数据迁移到数据字典保存。后面该模型新建参数等数据,基本工作区的位置将被数据字典代替。保存在基本工作区的数据,关闭MATLAB不会自动保存,因此一些模型也采用脚本配置。位置也可选择模型工作区,但保存到模型工作区的参数,有效的存储类型会受到限制。 unit delay单位延时,初始条件设为0,状态名称按实际意义设置。 Outport,数据类型可选自动。信号名称,可到model data窗口统一

8、设置,该窗口中选中信号,模型区会用颜色标记对应标记。没有设置名称的信号,按照内部规则生成代码。模型相关设置,simulink还提供model explorer图形界面统一管理。点击图标可打开。5) 设置完成后,启用Advisor检查模型设置。选择检查项目,运行检查,修改不符合的项目。analysis - model advisor,针对模型,可选项目包括MISRA、ISO26262等。选中by task,右侧点击run selected checks。analysis - data type design - fixed point tool,进入设置后,左侧选择项目,右侧运行检查。code

9、- C/C+ code - code generation advisor,针对生成代码,可选项目有空间效率、执行效率、可追踪性、安全预警、MISRA C: 2012 guidelines等。检查项目可能会弹出一些警告,是之前手动设置的,这时选择忽略。比如内联参数有效率,但想要用可调参数,就只能忽略检查时的警告。6) 点击图标,编译模型生成代码。完成后可查看报告。算法代码如下:数据定义如下:1. Simulink生成代码相关工具在“1简单示例”一节,介绍了代码生成的详细过程。其中一些常用的工具及菜单,现罗列于表 1中。表 1. 常用工具及菜单图标名称最方便的位置功能Library Browse

10、r工具栏图标基本模块库,搭建模型的基本元素所在库。Model Configuration Parameters工具栏图标模型配置参数,模型仿真、生成代码所依赖的全局规则。Mode Data菜单View- -Mode Data列表显示当前层级模型的信号、参数、状态等,可以在此处集中编辑。Model Explorer工具栏图标树状结构的模型管理器,包括数据、配置、子模块等。从树状结构可以看出,每一个模型都单独包含数据数据、配置等元素。Model Advisor工具栏图标根据选定项,针对模型设计,进行检查,提供建议。用户根据建议修改自己的模型。Code Generation AdvisorModel

11、 Advisor-图标下拉根据选定项,针对代码生成设置,进行检查,提供建议。用户根据建议修改自己的模型。Fixed-Point Tool菜单Analysis - - data Type Design - Fixed-Point Tool针对定点数设计,进行检验,提供建议。用户可以根据建议修改自己的模型。Build Model工具栏图标根据配置,编译模型生成代码。图标下拉栏还有:编译备选子系统,嵌入式代码快速向导。快速向导按步骤生成新配置,并依次生成代码。Run工具栏图标模型仿真运行。一般首先会用仿真验证模型。2. Coder保留的默认名称在“1简单示例”一节,生成的代码中出现了一些固定的名称,

12、这些是代码生成器保留的默认名称,用户不能改变。为方便理解生成的代码,将这些默认名称及含义列于表 1中。表 2. 生成代码中的默认名称默认名称含义默认名称含义U整个模型的输入模块local局部变量加的前缀Y整个模型的输出模块rt全局变量的前缀,可设置B模块输出信号rtb局部模块输出的前缀,可设置P模块参数_T默认类型后缀,可替换DW离散模块状态step模型入口,可设置DefaultP默认参数initialize模型初始化,可设置Ext全局类型加的前缀3. 代码重用该部分将搭建一个稍微复杂模型,封装参数,生成可重用代码。7) 建立如图 2模型。图 2. PID模型8) 选中上面模型,右键,crea

13、te subsystem from selection进入子系统,按上面介绍的方法编辑各基本模块。为信号和状态起名,设置输入数据类型,输出数据类型和输入保持一致。参数设置为结构体,比如KpGain的值设置为pid.Kp,数据类型继承。9) 返回模型上一级,修改子系统名称为Dpid,选中子系统右键 - mask - edit mask,在parameter选项卡,编辑参数,将名称设为pid。10) 右键-subsystem parameters,勾选treat as atomic unit,function packing设为reusable,函数名设为UnSatIntPid。11) 打开mod

14、el explorer,在数据字典中添加simulink bus类,选中该类,右下角launch bus editor进入编辑,设置类名称为PidParaStrc,将参数按名称依次添加到类,并设置基本数据类型。12) 在数据字典中添加simulink parameter对象,将对象数据名称设为DpidPar,类型设为PidParaStrc,值设为struct,存储类型设为ExportedGlobal。在DpidPar值属性列,编辑与PidParaStrc类成员对应的参数名称,并赋值。将simulink参数DpidPar复制一份,编辑其参数值。13) 将子系统Dpid复制一份,名称改为Qpid,

15、设置mask参数为QpidPar,连上输入输出,最终模型如图所示。图 3. 代码重用演示模型14) 设置好模型配置参数,编译生成代码,查看生成的报告。整个模型的代码如下,调用两次UnSatIntPid函数,分别传入不同的参数。生成可重用的算法如下所示,函数名为设置的UnSatIntPid,函数参数有四个,依次是给定,反馈,子系统状态,PidParaStrc参数。4. 数据重用嵌入式应用多用查表的方式实现较复杂的数学函数,比如三角函数。而且为了保证精度,表格的数据一般较多。通常,如正弦函数,会充分利用周期性对称性,查找(0, pi/2)的sin表格。本部分将演示,将(0, pi/2)的sin表格

16、定义为全局const变量,单独放在一个文件,实现sin/cos函数。15) 建立如图 4模型实现sin查表。 图 4. sin查表模型模型输入为无符号短整型,执行环境下输入角度信号,ufix(16, 15)类型,1代表360度。输出为sfix(16, 15),为sin查表值。模型使用同一个0,pi/2)的sin表,表长256,表数据类型同输出。16) 设置查表模块名称为SinTab90d,右击设置属性,表格数据设置为SinTab90d,数据类型继承。对SinTab90d建立Simulink.Patameter对象,保存到数据字典。参数值设置为sin( 0 : pi/2/255 : pi/2 )

17、,数据类型设置为fixdt(1,16,15),存储类型设置为ConstVariable(Custom),定义文件、头文件设置为LkupTab。然后复制出其余四个查表模块。17) 将模型封装为可重用子模块。18) 按同样的方法,可利用0,pi/2)的sin表格实现cos查表。19) 最后建立如图 5模型,对算法进行仿真,验证算法输出是否没有错误。图 5. 正弦查表算法仿真验证仿真结果如图 6,从图中可看出,一个周期内计算结果均正确,算法得以验证。图 6. 正弦查表模型仿真波形20) 剔除仿真用的信号发生和示波器,接输入输出端口,设置,然后生成代码。整个模型的入口函数为:按配置,模型为表格生成单独的文件:生成可重用的LkupSin函数如下,函数第一个参数为输入,第二个参数为输出。更多使用方法,请参见MATLAB软件help。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1