0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于Stateflow实现循环逻辑的相关分析和介绍

MATLAB 来源:djl 2019-09-17 10:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

循环逻辑

要得到:

y1 = 0;

for(inx = 0; inx <10; inx++)

{

y1 = u1[inx] + y1;

}

或者

while(flag && (num_iter <= 100)

{

flag = func ();

num_iter ++;

}

怎么做:

Stateflow 有相应的流程图向导可以直接使用,自动生成对应的流程图结构。

For循环

1. 模型

在 Stateflow 里有各种控制流的构造向导,如下图。如果对 Stateflow 的流程图构建不熟悉的话,可以使用它来自动生成,再在它的基础上进行修改:

关于Stateflow实现循环逻辑的相关分析和介绍

从而得到所需要的框图:

关于Stateflow实现循环逻辑的相关分析和介绍

2. 数据

定义 Stateflow 模块的端口和本地变量,输入端口 u1,输出端口 yy1,以及本地变量 inx 如下:

关于Stateflow实现循环逻辑的相关分析和介绍

在 Base Workspace 里定义输入输出信号 u1,yy1 的 Data Object:

关于Stateflow实现循环逻辑的相关分析和介绍

3. 关联

在信号线上右键,设置信号属性,勾选 “Signal name must resolve to Simulink signal object”,将信号与 Base Workspace 的数据对象关联在一起。关联输入输出信号后,会看到如图的蓝色小叉子:

关于Stateflow实现循环逻辑的相关分析和介绍

4. 代码

Ctrl+B,它所自动生成的代码:

关于Stateflow实现循环逻辑的相关分析和介绍

While循环

1. 模型

下图就通过向导构造的,得到跟 for 循环类似的流程图:

关于Stateflow实现循环逻辑的相关分析和介绍

这里的func作为一个 事件Event ,触发外面的 function call 子系统 func 计算flag:

关于Stateflow实现循环逻辑的相关分析和介绍

2. 数据

Stateflow 内的数据定义如下图,输入端口名称 u1,输出端口名称 yy2,本地变量 num_iter。flag 由外部函数 func 来更新而作为输入。另外, func 事件触发调用外部的 func 函数。( inx 这里没有用)

关于Stateflow实现循环逻辑的相关分析和介绍

在 Base Workspace 里定义相应的数据对象。因为这个 Simulink 模型的信号线上已经命名为 u2,所以定义的数据对象名称要跟信号线的名字一致: u2,yy2,flag。

并设置 flag 的初始值为 true。将数据对象与 Simulink 信号线关联。

关于Stateflow实现循环逻辑的相关分析和介绍

3. 生成代码

Ctrl+B,生成的代码如下图所示。设置了 func()子系统的属性,把它变成一个子函数来调用。没有截图显示,但是func() 函数里修改了全局变量 flag 的值。

关于Stateflow实现循环逻辑的相关分析和介绍

代码正常生成,但此时会得到如下的警告:

关于Stateflow实现循环逻辑的相关分析和介绍

也就是说,我们之前对数据对象 flag 所设置的初始值是没用的,会被模型中 func 子系统的输出端口 Out1 的初始值所覆盖。

默认情况下 Out1 端口的初始值为 0 ,所以看下图的初始化函数里, flag 被初始化为 false,我们之前所设置的初始值 true 没有发生作用。

关于Stateflow实现循环逻辑的相关分析和介绍

主程序里的 while(flag&(inx<100)) 都不会被执行。这个问题,通过仿真也会测出来。

所以,需要双击 func 子系统的 Out1 端口,设置初始值为 true,仿真才能得到正确的结果。同时,也会最后得到下面的初始化代码。

关于Stateflow实现循环逻辑的相关分析和介绍

do while循环

使用流程图的向导,选择 do while 模式,把 Chart 里面的流程图改改就行了。另外,被调用的 func 函数,也可以写在 Chart 里面。

Stateflow 有相应的流程图向导可以直接使用,自动生成对应的流程图结构。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 输出信号
    +关注

    关注

    0

    文章

    312

    浏览量

    12877
  • 初始化
    +关注

    关注

    0

    文章

    52

    浏览量

    12442
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    导热凝胶热循环测试结果对比与分析

    铬锐特实业|东莞厂家|导热凝胶热循环测试结果深度对比:1000次-40℃~125℃循环后,高性能导热凝胶热导率衰减率仅5%以内,远优于普通硅脂。详细分析其稳定性与实际应用价值,为高端电子设备提供可靠散热解决方案。
    的头像 发表于 04-09 00:28 254次阅读
    导热凝胶热<b class='flag-5'>循环</b>测试结果对比与<b class='flag-5'>分析</b>

    知识分享 | 如何通过建模规范轻松掌控Stateflow开发

    Stateflow为用户提供了强大的建模功能,但如果使用不当,也可能带来风险。通过使用MXAM,遵循这些最佳实践,可以构建稳健、高效且易于维护的Stateflow模型,并实现与Simulink和TargetLink的无缝集成。
    的头像 发表于 03-26 14:27 1471次阅读
    知识分享 | 如何通过建模规范轻松掌控<b class='flag-5'>Stateflow</b>开发

    锁相放大器的软件实现与仿真分析:基于相关检测技术的微弱信号提取

    在精密测量与信号处理领域,锁相放大器(Lock-in Amplifier)因其卓越的噪声抑制能力,被广泛应用于从强噪声背景中提取微弱周期性信号。本文围绕锁相放大器的软件实现方式,结合仿真分析,探讨其
    的头像 发表于 02-24 15:17 394次阅读
    锁相放大器的软件<b class='flag-5'>实现</b>与仿真<b class='flag-5'>分析</b>:基于<b class='flag-5'>相关</b>检测技术的微弱信号提取

    关于MT6901的直线DEMO介绍

    关于MT6901的直线DEMO介绍
    的头像 发表于 01-30 10:54 898次阅读
    <b class='flag-5'>关于</b>MT6901的直线DEMO<b class='flag-5'>介绍</b>

    【「龙芯之光 自主可控处理器设计解析」阅读体验】--LoongArch逻辑综合、芯片设计

    流程,关于逻辑综合流程的步骤及实现过程,可以参考书籍相关部分。 二.可测试型设计 可测试性设计(Design For Testability,DFT)主要是通过在芯片中加入可测试性
    发表于 01-18 14:15

    有源逻辑探头的具体应用

    有源逻辑探头依托内置放大电路、高输入阻抗及低噪声核心特性,专注于数字电路中逻辑电平(如0/1信号)的精准捕获与分析,广泛适配研发验证、故障调试、设备维修等全流程数字电路相关场景。以下是
    的头像 发表于 12-16 10:29 343次阅读
    有源<b class='flag-5'>逻辑</b>探头的具体应用

    关于NFC镍锌铁氧体片的介绍

    关于NFC镍锌铁氧体片的介绍
    的头像 发表于 12-04 10:52 626次阅读
    <b class='flag-5'>关于</b>NFC镍锌铁氧体片的<b class='flag-5'>介绍</b>

    长晶科技逻辑芯片产品矩阵介绍

    逻辑IC是用于实现基本逻辑运算和复合逻辑运算的集成电路, 广泛应用于各种电子设备和系统中,成为现代电子设备智能化、高效化的关键所在。
    的头像 发表于 11-04 17:47 1520次阅读
    长晶科技<b class='flag-5'>逻辑</b>芯片产品矩阵<b class='flag-5'>介绍</b>

    关于系统链接脚本的介绍

    一、队伍介绍 本篇为蜂鸟E203系列分享第四篇,本篇介绍的内容是系统链接脚本。 二、如何实现不同的下载模式? 实现三种不同的程序运行方式,可通过makefile的命令行指定不同的链接脚
    发表于 10-30 08:26

    vivado时序分析相关经验

    vivado综合后时序为例主要是有两种原因导致: 1,太多的逻辑级 2,太高的扇出 分析时序违例的具体位置以及原因可以使用一些tcl命令方便快速得到路径信息
    发表于 10-30 06:58

    AES加解密算法逻辑实现及其在蜂鸟E203SoC上的应用介绍

    这次分享我们会简要介绍AES加解密算法的逻辑实现,以及如何将AES算法做成硬件协处理器集成在蜂鸟E203 SoC上。 AES算法介绍 AES算法属于对称密码算法中的分组密码,其明文/
    发表于 10-29 07:29

    温度循环测试后如何进行数据记录和分析

    温度循环测试后的数据记录和分析是验证电能质量在线监测装置精度稳定性、功能完整性、硬件可靠性的核心环节,需围绕 “数据溯源可查、分析逻辑闭环、结论依据充分” 展开,结合测试标准(IEC
    的头像 发表于 09-26 14:22 753次阅读

    Stateflow模型测试典型问题分享——不可达的分支

    问题描述: Stateflow条件存在互斥情况,导致部分工况不可达。 造成的影响: 较多的互斥结构将无法满足ASIL C/D等级覆盖度要求,并存在安全隐患。
    的头像 发表于 09-23 16:33 789次阅读
    <b class='flag-5'>Stateflow</b>模型测试典型问题分享——不可达的分支

    人工智能行业如何使用for循环语句进行循环

    人工智能行业可以使用以下是关于for循环在不同编程语言中的基本用法说明: Python中的for循环: 主要用于遍历序列(列表、元组、字符串等) 典型结构:for item in sequence
    的头像 发表于 09-10 12:55 743次阅读

    【M-K1HSE开发板免费体验】相关源码之阅读和分析1-使用XComponent + Vsync 实现自定义动画

    介绍 XComponent 提供了应用在 native 侧调用 OpenGLES 图形接口的能力,本文主要介绍如何配合 Vsync 事件,完成自定义动画。在这种实现方式下,自定义动画的绘制不在 UI
    发表于 09-03 16:05