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

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

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

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


然后再生成一次代码,这部分内容之后在系统学习,目前还不是很理解。
边栏推荐
- QT QLabel样式设置
- Oracle modify database character set
- Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd
- Demand delineation executive summary
- Solutions to Chinese garbled code in CMD window
- 机器学习实战:《美人鱼》属于爱情片还是动作片?KNN揭晓答案
- Chrome user script manager tempermonkey monkey
- 大学生四六级作文模板(自创版,成功跨过六级)
- The channel cannot be viewed when the queue manager is running
- Amq6126 problem solving ideas
猜你喜欢

Redis installation and deployment (windows/linux)

图像识别-数据采集

The channel cannot be viewed when the queue manager is running

Don't look for it. All the necessary plug-ins for Chrome browser are here

Mysql 多列IN操作

Chrome browser plug-in fatkun installation and introduction

YOLO物体识别,生成数据用到的工具

自定義Redis連接池

Solution to amq4036 error in remote connection to IBM MQ

微服务实战|Eureka注册中心及集群搭建
随机推荐
How to install PHP in CentOS
破茧|一文说透什么是真正的云原生
微服务实战|负载均衡组件及源码分析
Bold prediction: it will become the core player of 5g
Who is better for Beijing software development? How to find someone to develop system software
图像识别-数据增广
The channel cannot be viewed when the queue manager is running
分布式锁的这三种实现方式,如何在效率和正确性之间选择?
C语言之最小数
Supplier selection and prequalification of Oracle project management system
道阻且长,行则将至
一次聊天勾起的回忆
Fragmenttabhost implements the interface of housing loan calculator
hystrix 实现请求合并
概念到方法,绝了《统计学习方法》——第三章、k近邻法
Discussion on improving development quality and reducing test bug rate
Redis installation and deployment (windows/linux)
c语言编程题
Read Day6 30 minutes before going to bed every day_ Day6_ Date_ Calendar_ LocalDate_ TimeStamp_ LocalTime
Hystrix implements request consolidation