simulink怎么生成vxworks的执行程序_Matlab/Simulink基础了解(五):基础Simulink模型搭建及Embedded基础使用...
为了方便大家阅读,从这章开始在章节名中添加该章节要讲的主要的东西。
本章给大家讲一个最简单的Simulink模型:
在处理应用逻辑时常常会判断车速信号来得到车是否静止,如果车已经跑起来了,很多功能都会被禁用,比如诊断,开关门等。
以上模型就是一个最简单的车速判断逻辑,int16型数据VehicleSpeed(单位km/h)先得到其绝对值然后再和Constant数3做比较,如果绝对车速大于等于3km/h那么车是Driving状态。如果小于3km/h那么车即可认定为静止状态。
我们来生成以下代码,看看代码是怎么样的:
点击APP下的Embedded Coder,
点击Quick Start,
点击next,
这里可以选择整个Model或者选择Model下的某一个子系统,这里直接选择整个Model,点击next,
当前只是看下基本代码,直接选择C Code 和 单Instance(Instance及autosar相关的选项都是AUTOSAR下相关的属性及配置,后续会有基于AUTOSAR下模型开发的文章)。点击next,
点击next,
这里选择一些基本类型的内存长度,直接选择默认的,点击next,
这里是选择执行最快或者RAM最少,为了让逻辑看起来更明了,选择执行最快,点击next,
直接点击next,
点击finish,
回到Simulink,
点击build,
代码就生成了,
生成了上图的四个.c,.h文件
进入Demo.h
typedef struct {int16_T VehicleSpeed; /* '<Root>/VehicleSpeed' */
} ExtU;/* External outputs (root outports fed by signals with default storage) */
typedef struct {boolean_T VehicleIsDriving; /* '<Root>/VehicleIsDriving' */
} ExtY;/* External inputs (root inport signals with default storage) */
extern ExtU rtU;/* External outputs (root outports fed by signals with default storage) */
extern ExtY rtY;/* Model entry point functions */
extern void Demo_initialize(void);
extern void Demo_step(void);
可以看到,Embedded Coder将模型的输入做了一个结构体,对输出也做了一个结构体,这样出来的代码结构比较清晰,在代码debug的过程中会很方便地跟踪这些变量。同时生成了Demo_initialize(void)和Demo_step(void)两个函数,这两个函数在嵌入式RTOS系统用中是很重要的函数,每个SWC(Software component)都必须有这两个函数,Demo_initialize(void)一般用在系统startup时,Demo_step(void)会被assign到一个固定的task中周期执行。
再看下Demo.c
#include "Demo.h"/* External inputs (root inport signals with default storage) */
ExtU rtU;/* External outputs (root outports fed by signals with default storage) */
ExtY rtY;/* Model step function */
void Demo_step(void)
{int16_T tmp;/* Abs: '<Root>/Abs' incorporates:* Inport: '<Root>/VehicleSpeed'*/if (rtU.VehicleSpeed < 0) {tmp = (int16_T)-rtU.VehicleSpeed;} else {tmp = rtU.VehicleSpeed;}/* End of Abs: '<Root>/Abs' *//* Outport: '<Root>/VehicleIsDriving' incorporates:* RelationalOperator: '<Root>/Relational Operator'*/rtY.VehicleIsDriving = (tmp >= 3);
}/* Model initialize function */
void Demo_initialize(void)
{/* (no initialization code required) */
}
代码中可以清楚地看出,其先用了一个temp得到VehicleSpeed的绝对值,然后在和3做比较并输出给VehicleIsDriving
打开rtwtype.h
/*=======================================================================** Fixed width word size data types: ** int8_T, int16_T, int32_T - signed 8, 16, or 32 bit integers ** uint8_T, uint16_T, uint32_T - unsigned 8, 16, or 32 bit integers **=======================================================================*/
typedef signed char int8_T;
typedef unsigned char uint8_T;
typedef short int16_T;
typedef unsigned short uint16_T;
typedef int int32_T;
typedef unsigned int uint32_T;
typedef long long int64_T;
typedef unsigned long long uint64_T;/*===========================================================================** Generic type definitions: boolean_T, char_T, byte_T, int_T, uint_T, ** ulong_T, ulonglong_T. **===========================================================================*/
typedef unsigned char boolean_T;
typedef int int_T;
typedef unsigned int uint_T;
typedef unsigned long ulong_T;
typedef unsigned long long ulonglong_T;
typedef char char_T;
typedef unsigned char uchar_T;
typedef char_T byte_T;
rtwtype.h是simulink的Realtime Workshop的type定义,提供给各个SWC.h做基本类型引用。在嵌入式系统中,每个SWC在代码生成是都会生成一个rtwtype.h,最终只包含一个大家通用就行了。
最后ert_main.c(Embedded realtime target)没什么用,其只为生成一个示例去调用Demo_initialize(void)和Demostep(void)两个函数,在实际的实时嵌入式系统中,我们会将swc.c, swc.h加入工程中,用系统中提供的task_init(), task_xxms()来调用这两个函数。当然大家也可以将ert_mian.c及swc.c swc.h rtwtype.h加入visual studio工程中进行验证(不过用处不是很大,仅限学习使用)。
以上便是simulink基本模块的搭建以及Embedded coder的基本使用相关的内容,需要提的是不同的simulink版本在simulink的搭建方面是一样的,但是其Embedded coder变化较大,本文在是基于R2020a版本的Embedded coder讲解的,大家在生成代码过程中有什么问题可以自行百度。
simulink怎么生成vxworks的执行程序_Matlab/Simulink基础了解(五):基础Simulink模型搭建及Embedded基础使用...相关推荐
- simulink怎么生成vxworks的执行程序_从EPB模型谈谈Simulink代码生成
前段时间有读者朋友问代码生成的例子,说他正在做EPB的仿真模型,但总是和应用串不到一块去,我这里就从一个简单EPB控制模型来谈谈simulink代码生成,总结代码生成方法的同时也顺便回答他的问题. 1 ...
- simulink怎么生成vxworks的执行程序_让天下没有难改的Simulink模型
相信不少用Simulink建模的朋友平时或多或少都会碰到这些情况 拿到几个同事搭的模型做集成,有些同事喜欢用红色设置inport,有些同事喜欢用蓝色设置constant,各种颜色设置,五花八门 如果要 ...
- Matlab/Simulink自动生成C代码实验
目录 0. 概要 1. Matlab /Simulink/Embedded Coder关系与区别 2. 搭建Simulink模型及仿真 2.1 搭建模型 2.2 仿真 3. 生成代码 3.1 求解器设 ...
- simulink自动生成STM32代码详解
1.开发软件 STM32-MAT/TARGET_V5.6.0 STM32CubeMX_V5.6.0 JAVA 64_bit MATLAB_2018b MDK-ARM_V5 下图是STM32-MAT/T ...
- EPB电子驻车制动系统Simulink模型(参考VDA305_100标准进行模型搭建)
EPB电子驻车制动系统Simulink模型(参考VDA305_100标准进行模型搭建) 版本:matlab2018a,可生成低版本 模型包括:有刷直流电机+执行器模型,电机参数m文件,SSM模块,PB ...
- 智能车辆路径跟踪:carsim和simulink联合仿真,基于车速的变权重多点预瞄驾驶员模型个例
@基于轨迹预测的多点预瞄驾驶员模型,适合初学者学习,carsim&simulink联合仿真,模型搭建. 一.预瞄-控制基本原理 二.casim模型的搭建 三.联合仿真结果分析 前言 本文主要是 ...
- Simulink仿真入门到精通(五) Simulink模型的仿真
本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记. 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulin ...
- Matlab基础学习笔记(五)—— Simulink仿真
听万门的一个Matlab实践课做的笔记 知识结构 笔记链接(点我) 知识点比较零散记得比较概括,用幕布看可能更清晰一点 本节内容只是做个简单记录,具体使用某个库再进行具体学习 顺便放个邀请注册链接,可 ...
- 倒立摆的simulink模型搭建
倒立摆的simulink模型搭建 1.倒立摆基本背景: 倒立摆,Inverted Pendulum ,是典型的多变量.高阶次 ,非线性.强耦合.自然不稳定系统.倒立摆系统的稳定控制是控制理论中的典型问 ...
最新文章
- ASP.NET中Cookie的使用(实战教程)
- c++两数组合并算法
- 日均百亿级日志处理:微博基于 Flink 的实时计算平台建设
- 硬盘根目录里的Msdia80.dll文件是干什么用的
- IDEA2019.3新版本 报错 Cannot resolve column 'ID'
- opencv阈值操作threshold以及图像二值化
- 固态U盘能装linux么,用u盘在固态硬盘上安装linux 多重开启系统
- python学习之编写学员管理系统
- 日语动词的て形歌,歌词
- 小程序开发之全栈开发(一)
- 使用朴素贝叶斯对电影评论分类
- 不带www的域名强制跳转到www域名,Nginx服务器rewrite重写
- 中介者(Mediator)
- Windows关于文件句柄数的限制
- Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!
- 安徽省计算机二级各部分分值分布,计算机二级各部分分值
- 阿里巴巴达摩院发布2019十大科技趋势
- C语言if选择练习题
- 科普文章-另一个视角解读计算机编码(修订版)【一个吊丝的个人理解】
- 气象ts评分_中国气象局广东省区域数值天气预报重点实验室
热门文章
- delphi image 编辑器_照片拼图编辑器app下载-照片拼图编辑器下载 v1.0.0 安卓版
- 如何将四元数方向转化为旋转举证_是否有将四元数旋转转换为欧拉角旋转的算法?...
- idea java主题_IDEA变身超级形态,需要这个酷炫主题
- 光纤收发器的选购原则介绍
- 【渝粤教育】国家开放大学2018年秋季 0233-22T学前儿童语言教育 参考试题
- [渝粤教育] 西南科技大学 农业推广学 在线考试复习资料
- 【渝粤题库】国家开放大学2021春3607矿井瓦斯灾害防治题目
- c语言open参数,ifstream :: open()的C类型参数
- php如何禁用浏览器的缓存,php如何禁止浏览器使用缓存页面
- pojo java_什么是POJO,JavaBean?