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

    文章

    311

    浏览量

    12591
  • 初始化
    +关注

    关注

    0

    文章

    51

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

    逻辑IC是用于实现基本逻辑运算和复合逻辑运算的集成电路, 广泛应用于各种电子设备和系统中,成为现代电子设备智能化、高效化的关键所在。
    的头像 发表于 11-04 17:47 1063次阅读
    长晶科技<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 337次阅读

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

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

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

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

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

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

    实用电子电路设计(全6本)——数字逻辑电路的ASIC设计

    由于资料内存过大,分开上传,有需要的朋友可以去主页搜索下载哦~ 本文以实现高速高可靠性的数字系统设计为目标,以完全同步式电路为基础,从技术实现的角度介绍ASIC逻辑电路设计技术。
    发表于 05-15 15:22

    技术干货驿站 ▏深入理解C语言:嵌套循环循环控制的底层原理

    大家好!在上一节中,我们学习了C语言中的基本循环语句,如for、while和do...while循环。今天,我们将进一步探讨嵌套循环循环控制,这些技巧可以帮助我们
    的头像 发表于 02-21 18:26 1045次阅读
    技术干货驿站  ▏深入理解C语言:嵌套<b class='flag-5'>循环</b>与<b class='flag-5'>循环</b>控制的底层原理

    汽轮机热力循环分析

    汽轮机热力循环是热力工程中的重要部分,以下是对其进行的分析: 一、热力循环概述 热力循环是指工质从某一状态点开始,经过一系列状态变化又回到原来这一状态点的封闭变化过程。在这个过程中,工
    的头像 发表于 02-06 16:52 1762次阅读

    可靠性温度循环试验至少需要几个循环

    温度循环作为自然环境的模拟,可以考核产品在不同环境条件下的适应能力,常用于产品在开发阶段的型式试验、元器件的筛选试验。一、温度循环测试介绍温度循环试验,也称为热
    的头像 发表于 01-23 15:26 995次阅读
    可靠性温度<b class='flag-5'>循环</b>试验至少需要几个<b class='flag-5'>循环</b>?

    请问关于ADS5407内部寄存器有没有相关的中文介绍的?

    请问关于ADS5407内部寄存器有没有相关的中文介绍的?其中有几个寄存器的功能不是特别明白,麻烦啦
    发表于 01-17 07:36

    CMOS逻辑IC应用中的噪声问题和解决对策

    前面两期的芝识课堂,我们介绍了大量关于CMOS逻辑IC应用的一些细节事项,本期课堂让我们进入实际的应用案例,解决电路设计中的噪声问题。
    的头像 发表于 01-13 10:30 1903次阅读
    CMOS<b class='flag-5'>逻辑</b>IC应用中的噪声问题和解决对策