当前位置:网站首页>2837xd 代码生成——StateFlow(3)
2837xd 代码生成——StateFlow(3)
2022-07-02 06:35:00 【Quikk】
2837xd 代码生成——StateFlow(3)
11 True Table
在Chart中加入True Table模型。
然后在真值表中进行加入相应的元素:
真值表分为条件表和动作表,如条件表D1所示意思为,当shift==1时,执行动作1。而D3所示为只要shift不为1或者2都执行第三个动作。然后需要在Model Explorer中添加相应的输入和输出变量,再此之前要把True Table的名称修改,不然会报错。
然后需要为chart定义输入和输出,调用方式与函数一致:
构建外部元件进行DEBUG即可:
12 复数的使用
复数的使用和定义,跟语言的选择(m或c)有关系。比如matlab中的内置函数abs()可以接收复数求模,但是c语言中的abs则没有这个功能。此时若在c语言的编译环境下,可以借助Matlab Function进行调用matlab中的abs()函数进行求取。以下编译环境都是matlab语言。
构建外围后,DEBUG可以得到如下:
这里要注意,默认Model Explorer中complexity为off,如果所接收的数据为复数,需要自行开启(on或者inherited根据需要进行选择)。
13 输出size改变的数据
在Chart中确保勾选了,支持变数据大小:
然后搭建如下的Simulink Function进行调用:
构建外围元件,设置相关的变量参数,size一定要设置与最大输出size相同,不然会报错。
可以观测到结果如下,out输出了变size的数据:
14 隐式事件
Chart中有四个隐式事件:1)change(chg)、enter(en)、exit(ex)、tick(wakeup)
构建如下的chart,state1与state2是并行执行关系,state2中的状态转移与y的数值有关(当y发生改变时,state2状态发生改变)。
仍旧是并行关系,此时换成en与ex隐式事件:
C、D的状态切换与state1.B的状态进入和退出密切相关。
tick事件的观测:
after(5,tick)意思发生五次转换请求后才允许真正发生状态转移。
采用定步长仿真(0.5s):
可以发现每2.5s进入一次state2,每在state2中停留1.5s后进入state1。
15 结构体操作
Simulink中可以利用BUS元件构建结构体,BUS与MUX不同之处就在于BUS会生成结构体,而MUX只是让多个数据流采用一条线传输。
注意要将信号的编号进行设置,默认是Signaln。然后构建一个Chart模块:
这里mydata和indata都是结构体,其操作和结构体的点运算一模一样。重点是需要在Model Explorer中对结构体进行相应的定义:
首先选中,Base Workspace,点击Add,选中Simulink Bus加入结构体。
然后点击Launch Bus Editor
为Bus添加对象,这里我选择和Bus中的对象名称保持一致,不一致也可以通过。
然后分别设置每个对象的维数:
之后将chart中的变量(mydata、indata)改为刚刚设置好的Bus:
后面的步骤与其他chart模型搭建一致。
下面介绍用c语言引入结构体的方式:
首先建立一个.h文件放入在模型文件的保存地址:
然后在Configuration Parameters中进行定义:
构建如下的chart:
然后在Model Explorer中进行相关的定义,注意这里不需要对mydata进行定义,因为在头文件中已经进行了定义,最后输出结果如下:
如果仿真没问题,可以按Ctrl+B进行生成代码,这时候需要将输出换程端口(Out)。其中可以看到应用头文件的语句:
下面尝试着进行一下代码的管理,代码管理之前:
首先将输入和输出全部替换成端口:
然后找到如下的工具(注意在信号上面已经有了标号):
然后再生成一次代码,这部分内容之后在系统学习,目前还不是很理解。
边栏推荐
- Mathematics in machine learning -- point estimation (I): basic knowledge
- 图像识别-数据采集
- Matplotlib swordsman line - first acquaintance with Matplotlib
- Machine learning practice: is Mermaid a love movie or an action movie? KNN announces the answer
- Watermelon book -- Chapter 5 neural network
- idea查看字节码配置
- Microservice practice | declarative service invocation openfeign practice
- Chrome用户脚本管理器-Tampermonkey 油猴
- Activity的创建和跳转
- TD联合Modelsim进行功能仿真
猜你喜欢
数构(C语言)——第四章、矩阵的压缩存储(下)
Supplier selection and prequalification of Oracle project management system
The channel cannot be viewed when the queue manager is running
Number structure (C language -- code with comments) -- Chapter 2, linear table (updated version)
微服务实战|微服务网关Zuul入门与实战
分享一篇博客(水一篇博客)
图像识别-数据增广
[go practical basis] how to customize and use a middleware in gin
MySQL事务
Learn combinelatest through a practical example
随机推荐
kinect dk 获取CV::Mat格式的彩色RGB图像(openpose中使用)
VIM操作命令大全
BugkuCTF-web21(详细解题思路及步骤)
MySQL multi column in operation
洞见云原生|微服务及微服务架构浅析
C语言之分草莓
Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别
别找了,Chrome浏览器必装插件都在这了
图像识别-数据清洗
微服务实战|负载均衡组件及源码分析
Read Day6 30 minutes before going to bed every day_ Day6_ Date_ Calendar_ LocalDate_ TimeStamp_ LocalTime
Operation and application of stack and queue
Knife4j 2. Solution to the problem of file control without selection when uploading x version files
每天睡觉前30分钟阅读_day4_Files
Methods of classfile
Solutions to Chinese garbled code in CMD window
Oracle modify database character set
JVM instruction mnemonic
Chrome browser plug-in fatkun installation and introduction
BugkuCTF-web16(备份是个好习惯)