当前位置:网站首页>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)。其中可以看到应用头文件的语句:

下面尝试着进行一下代码的管理,代码管理之前:

首先将输入和输出全部替换成端口:

然后找到如下的工具(注意在信号上面已经有了标号):


然后再生成一次代码,这部分内容之后在系统学习,目前还不是很理解。
边栏推荐
- Probability is not yet. Look at statistical learning methods -- Chapter 4, naive Bayesian method
- Alibaba / popular JSON parsing open source project fastjson2
- zk配置中心---Config Toolkit配置与使用
- AMQ 4043 solution for errors when using IBM MQ remote connection
- Methods of classfile
- 图像识别-数据采集
- 概念到方法,绝了《统计学习方法》——第三章、k近邻法
- The channel cannot be viewed when the queue manager is running
- CKEditor 4.10.1 上传图片提示“不正确的服务器响应” 问题解决
- YOLO物体识别,生成数据用到的工具
猜你喜欢

Navicat 远程连接Mysql报错1045 - Access denied for user ‘root‘@‘222.173.220.236‘ (using password: YES)

Break the cocoon | one article explains what is the real cloud primordial

Machine learning practice: is Mermaid a love movie or an action movie? KNN announces the answer

How to use PHP spoole to implement millisecond scheduled tasks
![[go practical basis] how to customize and use a middleware in gin](/img/fb/c0a4453b5d3fda845c207c0cb928ae.png)
[go practical basis] how to customize and use a middleware in gin

微服务实战|声明式服务调用OpenFeign实践

vs+qt 设置应用程序图标

kinect dk 获取CV::Mat格式的彩色RGB图像(openpose中使用)

微服务实战|微服务网关Zuul入门与实战

Typeerror: X () got multiple values for argument 'y‘
随机推荐
每天睡觉前30分钟阅读_day4_Files
View the port of the application published by was
C语言之做木桶
微服务实战|原生态实现服务的发现与调用
每天睡前30分钟阅读Day5_Map中全部Key值,全部Value值获取方式
vs+qt 设置应用程序图标
图像识别-数据采集
C语言之到底是不是太胖了
How to install PHP in CentOS
别找了,Chrome浏览器必装插件都在这了
上班第一天的报错(Nessus安装winpcap报错)
Watermelon book -- Chapter 5 neural network
c语言编程题
Chrome浏览器插件-Fatkun安装和介绍
Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd
Discussion on improving development quality and reducing test bug rate
C语言之判断直角三角形
Who is better for Beijing software development? How to find someone to develop system software
Alibaba / popular JSON parsing open source project fastjson2
数构(C语言)——第四章、矩阵的压缩存储(下)