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

    文章

    290

    浏览量

    11923
  • 初始化
    +关注

    关注

    0

    文章

    50

    浏览量

    11932
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    逻辑异或和逻辑或的比较分析

    逻辑异或(Exclusive OR,简称XOR)和逻辑或(OR)是数字逻辑和编程中两种基本的逻辑运算,它们各自具有独特的功能和应用场景。以下是对逻辑
    的头像 发表于 11-19 09:48 493次阅读

    Matlab/Simulink/Stateflow建模开发及仿真测试

    matlab 模拟仿真 熟悉Matlab/Simulink/Stateflow建模开发及仿真测试,熟悉V模型开发流程。 熟悉自动代码生成,能够编写或者配置自动代码生成脚本。
    发表于 10-24 17:23

    浅谈逻辑分析仪的技术原理和应用领域

    或时序)开始捕获信号。这些触发条件可以根据工程师的需求进行设置,以实现灵活的信号捕获和分析。 信号分析:存储的信号数据可以通过逻辑分析仪的软
    发表于 09-12 15:04

    分析组合逻辑电路的设计步骤

    和可靠性。 需求分析 需求分析是设计组合逻辑电路的第一步,也是最重要的一步。在这个阶段,我们需要明确电路的功能、输入输出信号、性能要求等。需求分析的目的是确保电路设计满足实际应用的需求
    的头像 发表于 07-30 14:39 853次阅读

    multisim中逻辑分析仪怎么连接

    在这篇文章中,我们将详细介绍如何在Multisim中使用逻辑分析仪(Logic Analyzer)。Multisim是一款功能强大的电子电路仿真软件,它可以帮助我们设计、仿真和测试各种电子电路。
    的头像 发表于 07-18 09:15 2300次阅读

    逻辑分析仪multisim的应用

    电子电路。 逻辑分析仪是一种用于测试和分析数字电路的仪器,它可以捕获和显示数字信号的波形,帮助用户诊断电路问题。Multisim中也包含了逻辑分析
    的头像 发表于 07-18 09:13 1017次阅读

    24M的逻辑分析仪怎么用的

    24M逻辑分析仪是一种用于数字信号测试和分析的仪器,它可以帮助工程师和技术人员对数字信号进行捕获、存储、显示和分析。以下是关于24M
    的头像 发表于 07-17 16:40 714次阅读

    组合逻辑控制器的基本概念、实现原理及设计方法

    广泛应用于计算机、通信、控制等领域。 本文将详细介绍组合逻辑控制器的基本概念、实现原理、设计方法、应用场景等方面的内容,以帮助读者全面了解组合逻辑控制器。 基本概念 1.1 组合
    的头像 发表于 06-30 10:26 2393次阅读

    如何实现PLC的自动化控制逻辑

    地提高了生产效率和设备运行的稳定性。本文将详细介绍如何实现PLC的自动化控制逻辑,包括PLC的基本概念、编程工具、逻辑实现方法以及实际应用案
    的头像 发表于 06-15 16:44 1287次阅读

    逻辑分析仪的使用说明

    系统的运行状况。本使用说明旨在详细介绍逻辑分析仪的基本功能、使用方法、操作技巧及注意事项,以助于用户更好地利用该仪器进行数字系统的调试和分析
    的头像 发表于 05-16 15:37 2984次阅读

    arduino如何停止loop循环

    退出这个循环。本文将详细介绍如何在Arduino中停止loop循环。 在Arduino中,可以通过使用一个布尔变量或条件语句来实现停止loop循环
    的头像 发表于 02-14 16:24 4694次阅读

    循环指令loop规定循环次数

    循环指令是计算机编程中非常重要的概念,它允许程序重复执行一段代码块,使得程序可以更有效地处理大量数据和重复性任务。在本文中,我们将详尽、详实、细致地介绍循环指令的相关概念、语法和应用场
    的头像 发表于 02-14 16:10 1806次阅读

    逻辑非运算——NOT电路分析

    NOT门可以将输入的逻辑状态进行反转。当需要将逻辑信号反转为相反的状态时,NOT门可以很方便地实现这一功能。
    的头像 发表于 02-03 10:59 3770次阅读
    <b class='flag-5'>逻辑</b>非运算——NOT电路<b class='flag-5'>分析</b>