autocoder自动代码生成器_1.simulink coder与embeded coder代码生成的区别

87a0f1bd646ffb6eb9243b6b068aee4d.png

8aeb01658024803bb9b75d8396e441d1.png

我们来看一下mathworks公司的c代码生成工具,可以看到我们有三个c代码生成工具,embeded coder,Simulink coder,matlab coder,而我们今天研讨会的主题是和embeded coder相关,因为我们要讨论生成嵌入式代码,并且我们主要是从simulink生成嵌入式代码,所以我们不仅需要embeded coder,还需要similink coder,embeddedcoder 是依赖于matlab coder以及simulinkcoder的,我们也可以用simulinkcoder生成代码,但这样是没办法用于嵌入式系统的。我门如果只有matlab coder,要生成嵌入式代码,那么我们只需要有matlab coder,以及embeded coder即可

695f28f2608d9500cc8599efd888a5fb.png

好的,下面我们来看一下今天我们要涉及的主要内容

19f904a937e4e0c57997d57de80a6333.png

我首先会给大家做个演示,先使用simulink coder以及embeded coder生成代码,在用embeded coder生成代码时,会有以下几个方面,使用数据对象进行数据管理,我们会去进行代码生成优化设置,我们会去控制模型级算法函数的原型,同时我们还介绍子系统算法函数以及函数生成文件的控制,接下来我们会介绍如何从自定义库生成可重用的代码,再往下我们会介绍平台化模块的代码生成,最后我们会介绍代码的等效性测试。也就是我们常说的sl测试和pl测试。我们先打开matlab,我们先看一下这个简单的demo

d4f856d2e8335786f9ec63c2cde446ec.png

我这边有两个输入一个输出,输入输出的关系是这样的,两个输入先求和,再乘上一个k,那么这样一个模型来生成代码,我们先用simulinkcoder生成代码去看一下,

d2599326c6682b6694a093f11939a950.png

5dba7458e46ce59fc6ad98e0cfe715e7.png

首先我们需要对k做一个定义,k=2,下面我们就可以用来进行代码生成了,我们先要设置一下配置。

9a481c88d3bd417ab5d0de662d82820f.png

59934d5612f25ef830c1f5e72c3a87ab.png

对求解器进行设置,我们把求解器类型设置为定步长求解器,求解器设置为离散求解器,因为我们的计算机控制系统是一个离散的控制系统,并且我们的控制算法一般是通过定时中断和定时调度去完成的。我们把这个算法设置为10ms调度一次,接下来再去做一个代码生成设置,主要是把系统目标文件设置为grt.tlc,这个呢就是使用代码生成工具时使用simulink coder,

844625bfc4ae3f45d79d7f8722d1cbb2.png

a4d7f9868bb7a202083a024a2dc4943d.png

这边有一个report,我会把这两个report勾勾给勾上去,这样的话在我们代码生成之后会自动生成一个report出来,让我门看到我们生成的代码,那么做完这些设置之后,我就可以按下这个按钮,来自动生成代码了。当然这个按钮我们也可以通过快捷方式去实现,在simulink窗口下按下ctrl+B实现。就可以帮助我们build这个模型去生成代码

2a17cf2d06aa9e6cffa692e45ca6bca6.png

2c8cc2edc50f1273b770a4203fe5d886.png

我们看到这个简单的模型有这么多代码,模型的算法实现文件在这个模型里,这个文件里有一个step函数,这里面呢就实现了我们的算法。所以很多人在做到这个步骤的时候得出一个结论,simulink生成的代码嵌入式系统是没办法用的。的确,用simulinkcoder生成代码嵌入式系统是没法用的。

be9862881573bac4719d9a147fec04e5.png

那么如果我们想生成嵌入式代码我们需要去做什么样地工作。我们应该选择embededcoder生成代码,而不应该是使用simulink coder生成代码。我们需要把系统目标文件设置为ert.tlc或者是由ert.tlc派生出来的文件。比如autosar.tlc就是从ert.tlc派生出来的。我们选择这个ert.tlc之后呢,我们同样按一下generate coder看看生成的代码,看看有什么不一样。

fb05f6941f22927c3803f067cd606d66.png

88f532119025df6d3ab5ba91bc543a5e.png

我们现在看生成的代码从文件数量上就少了很多是吧。然后我们看这个模型的实现文件,同样我们发现一个step函数,step函数只有一行代码,完整的表达了我们的算法实现,这一块代码是非常简洁的,应该是可以在单片机或者dsp上去使用的。

b54c33aec313e03f0764c42b088d7e5b.png

当然可能很多人心里会有疑问,我希望通过一些设置变成z=(x+y)*k这样的形式。我可以定义我的函数变量的名字,我可以定义我的参数的名字。让他生成一个我们更容易接受的更好看的一个代码。如果是手写的话,我们可能也会写这样的代码是吧。我们找到simulink模型,先来定义一下信号,在信号线上双击,输入信号名x,y,z,这样就是定义信号的信号名。有了这样一个信号名之后,我们希望看到这个生成的代码是这个样子的z=(x+y)*k。那么怎么去实现呢,这就是我们接下来介绍的数据管理。

迎使用autoCode =================== 项目介绍 ------------------- > **autoCode介绍** > - autoCode是一个代码生成工具。基于velocity模板引擎,采用SpringMVC + mybatis + FDUI + mysql > - 此工具只负责生成代码文件,不会生成完整功能的应用程序. > **其特点主要有** > - 用户登陆 - 每个用户有他自己独立的数据库连接配置和模板配置; > - 数据源配置 - 可以配置多个数据源,多种数据库类型(目前支持Mysql,MSServer数据库,可以扩展); > - 模板配置 - 定义自己的模板,采用velocity模板语法.这样可以根据模板来生成不同的代码,如POJO,Dao,mybatis配置文件等; > - 操作简单 - 生成代码只需三步:1. 选择数据源;2. 选择表;3. 选择模板。 > - 提供简单的客户端操作,能将代码直接生成到本地 > **部署程序步骤:** > 1. Maven构建eclipse工程,运行Maven命令:mvn eclipse:eclipse,完成后导入到eclipse中 > 2. 导入数据库(MYSQL),SQL文件在项目根目录下,名为autoCode.sql,运行里面的内容即可 > 3. 修改数据库连接参数,配置文件在src/main/resources/config.properties > 4. 启动项目,运行Maven命令:mvn jetty:run > 5. 浏览器输入http://localhost:8088/autoCode 登录用户名密码均为admin 端口默认用了8088,如需修改,前往pom.xml,找到maven-jetty-plugin插件的port参数. jetty安装配置 ------------------- 从 http://download.eclipse.org/jetty/ 中下载jetty 文件,命令 unzip 解压zip文件 在eclipse help->install new software 中通过地址http://run-jetty-run.googlecode.com/svn/trunk/updatesite/ 安装jetty插件 安装好插件后,可以通过 点击项目 -》右键-> run configuration-->jetty webapp 项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值