当前位置:网站首页>2837xd 代码生成——StateFlow(2)
2837xd 代码生成——StateFlow(2)
2022-07-02 06:35:00 【Quikk】
2837xd 代码生成——StateFlow(2)
3 Matlab-Function
StateFlow模块也可以调用Matlab-Function的功能,点击左侧栏的Matlab-Function图标,构建以下的函数模型:
双击Matlab-Function,可以直接进行相关的函数定义。函数定义方式参照,m语言的函数定义。
之后可以在上方的State中调用相关的函数,这里需要注意的是形参和实参不能重名。就是调用的时候不能使用x、y进行相关操作,会报错。x、y已经被函数使用。但是两个Matlab-Function函数模块可以使用相同的参数。
4 Graphical Function
在chart中加入Graphical Function模块:
对Graphical Function模块进行编辑:
右击模块,可以为模块加入Flow chart:
添加一个绝对值函数的实现,然后建立一个State进行调用。这里要注意调用时,其自变量和因变量也不能与函数中的参数一致。结果如下:
构建外围元件:
这里插播一个小现象,输入正弦波(50Hz):
1)采样频率:100Hz
2)采样频率:200Hz
3)采样频率:1000Hz
4)采样频率:2000Hz
5)采样频率:4000Hz
但是使用系统自带的abs模块进行转换,可以发现,在1000Hz时,系统波形就较好:
这一点可以看出,chart在执行效率上面有一定的差别。
5 Simulink Function
在chart模块页面中,加入Simulink Function,命名与上面所述的函数一致:
在State中可以进行函数调用,在上面输入了函数结构:**y=func(x)**之后,会自动根据表达式产生输入和输出的端口(x.y)。在Simulink Function中搭建相应的模型结构:
然后构建外围系统,如下图所示:
采样频率为4000Hz时:
可以看到,引入Simulink Function之后,系统因为进入Simulink Function中仍然是按照步长进行,所以执行效率会受到影响。
6 内部转移(历史节点)
如图构建如下的chart结构,放入read事件读取历史节点。这样当系统处于State2时,在read触发后,State状态下的历史节点记录的数值,read事件触发的这种转移被称为内部转移。
7 Box模块
1)在chart中建立一个box模块,box模块在并行模块下,可以让所包含内容有更高的优先级。执行box模块内部的函数时,需要给出作用域:
2)另外一种是可以使用原子Box对模型进行封装:
首先建立一个Library,构建如下的Chart模型:
Simulink Function里面构建一个Digtal clock输出实时仿真时间。
进行保存,修改命名,后新建一个Model类型的模型,将Library中的Chart复制到Model中的Chart模块中:
可以看到模型呈现一个Box的形状。此时的调用也需要符合Box中函数的调用规则:
然后给Model加入out管脚:
再新建一个Model模块,找到元件Model,将上述的Model导入后进行封装:
这样封装的好处是,可以方便的形成模块,快速调用。
8 自循环
外部自循环如图中所示,在du中写入自加语句:
可以发现du语句并没有执行。
在en写入自加语句:
在ex中写入自加语句:
这样便能够推测出来模块的执行顺序,存在外部循环时,模块会最优先执行外部循环。这是必然触发en与ex语句。只有当外部循环条件不满足时,才会执行du语句。
对于内部循环来说:
en语句自加结果:
du语句自加结果:
ex语句自加结果:
en语句时,会在程序开始时,进入执行一次所以为2。因为模型一直处于内部循环所以不会执行ex语句。因为一直在函数内部,所以du函数每个步长都执行。
9 枚举类型
StateFlow中可以根据枚举类型,显示更深层次的内容。注意:生成的枚举类型m文件需要放在模型文件一致的目录下。
10 矩阵
定义如下的模型。然后在Model Explorer中进行对数据的size进行定义即可:
同时State Flow中可以对矩阵数据进行访问,访问语法与设置的语言有关,选择c语言利用多维数组操作即可。选择Matlab语言利用m语言操作即可。
边栏推荐
- Knife4j 2. Solution to the problem of file control without selection when uploading x version files
- MySQL multi column in operation
- Fragmenttabhost implements the interface of housing loan calculator
- Chrome browser plug-in fatkun installation and introduction
- Required request body is missing: (cross domain problem)
- Operation and application of stack and queue
- CKEditor 4.10.1 上传图片提示“不正确的服务器响应” 问题解决
- Number structure (C language -- code with comments) -- Chapter 2, linear table (updated version)
- What are the waiting methods of selenium
- 定时线程池实现请求合并
猜你喜欢
Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别
Typeerror: X () got multiple values for argument 'y‘
保存视频 opencv::VideoWriter
MySQL multi column in operation
Image recognition - data augmentation
Chrome video download Plug-in – video downloader for Chrome
How to use pyqt5 to make a sensitive word detection tool
Redis installation and deployment (windows/linux)
Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd
2837xd Code Generation - stateflow (4)
随机推荐
Ckeditor 4.10.1 upload pictures to prompt "incorrect server response" problem solution
Chrome视频下载插件–Video Downloader for Chrome
Record personal understanding and experience of game console configuration
分布式锁的这三种实现方式,如何在效率和正确性之间选择?
Statistical learning methods - Chapter 5, decision tree model and learning (Part 1)
Knife4j 2.X版本文件上传无选择文件控件问题解决
How to use PHP spoole to implement millisecond scheduled tasks
int与string、int与QString互转
记录一下初次使用Xray的有趣过程
BugkuCTF-web24(解题思路及步骤)
Tinyxml2 reading and modifying files
View the port of the application published by was
记录下对游戏主机配置的个人理解与心得
分享一篇博客(水一篇博客)
道阻且长,行则将至
Supplier selection and prequalification of Oracle project management system
企业级SaaS CRM实现
互联网API接口幂等设计
YOLO物体识别,生成数据用到的工具
Read Day5 30 minutes before going to bed every day_ All key values in the map, how to obtain all value values