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

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

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

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


然后再生成一次代码,这部分内容之后在系统学习,目前还不是很理解。
边栏推荐
- CKEditor 4.10.1 上传图片提示“不正确的服务器响应” 问题解决
- Insight into cloud native | microservices and microservice architecture
- [go practical basis] how to verify request parameters in gin
- Mysql默认事务隔离级别及行锁
- Fragmenttabhost implements the interface of housing loan calculator
- Oracle delete tablespace and user
- 知识点很细(代码有注释)数构(C语言)——第三章、栈和队列
- VIM operation command Encyclopedia
- Microservice practice | load balancing component and source code analysis
- College Students' CET-4 and CET-6 composition template (self created version, successfully crossed CET-6)
猜你喜欢

Chrome video download Plug-in – video downloader for Chrome

How to use PHP spoole to implement millisecond scheduled tasks

Learn combinelatest through a practical example

c语言编程题

Difference between redis serialization genericjackson2jsonredisserializer and jackson2jsonredisserializer

Hystrix implements request consolidation

MySQL multi column in operation

一次聊天勾起的回忆

微服务实战|Eureka注册中心及集群搭建

Statistical learning methods - Chapter 5, decision tree model and learning (Part 1)
随机推荐
知识点很细(代码有注释)数构(C语言)——第三章、栈和队列
Required request body is missing:(跨域问题)
What are the differences between TP5 and laravel
QT信号槽总结-connect函数错误用法
vs+qt 设置应用程序图标
College Students' CET-4 and CET-6 composition template (self created version, successfully crossed CET-6)
Read 30 minutes before going to bed every day_ day3_ Files
Redis installation and deployment (windows/linux)
微服务实战|Eureka注册中心及集群搭建
Timed thread pool implements request merging
Solution to amq4036 error in remote connection to IBM MQ
Machine learning practice: is Mermaid a love movie or an action movie? KNN announces the answer
Amq6126 problem solving ideas
JVM指令助记符
MySQL multi column in operation
破茧|一文说透什么是真正的云原生
YOLO物体识别,生成数据用到的工具
Who is better for Beijing software development? How to find someone to develop system software
Chrome user script manager tempermonkey monkey
Operation and application of stack and queue