人在仿真软件金宝app

金宝app仿真软件和基于模型的设计

Stateflow活动状态输出

本周,科里Lagunowich在这里讨论一个非常有用的Stateflow功能,活动状态的输出。

活动状态输出

你知道Stateflow,可以监控状态是目前活跃,并使用这些信息在其他仿真软件模型?金宝app这一特性被命名为活动状态输出。下面的屏幕快照展示了如何做到这一点的一个图表的示例使用在时序逻辑功能

使活动状态输出

复选框创建一个新的输出端口在你的图块,其价值(模拟)枚举类型的值相匹配的名字的孩子。

与并行分解时做了一个图表,活动状态输出为每个单独平行状态,需要启用,每个平行状态对应一个单独的输出端口。(sf_car示范使用这个输出当前齿轮选择逻辑转移到其传播模式)

我们也可以利用这个特性来完成一些特别生成的代码从Stateflow图表。

Stateflow在生成的代码(默认行为)

当使用嵌入式编码器从Stateflow图表生成代码,创建图表的默认美国宏使用#定义指令。例如,这是一个从生成的代码片段从上面所示的图表。

/ *命名常量图表:“< Root > /时序逻辑”* /#定义sf_tlat_IN_NO_ACTIVE_CHILD ((uint8_T) 0 u)#定义sf_tlat_IN_State ((uint8_T) 1 u)/ *命名常量图表:“< Root > /无时序逻辑”* /#定义sf_tlat_IN_A ((uint8_T) 1 u)#定义sf_tlat_IN_B ((uint8_T) 2 u)#定义sf_tlat_IN_C ((uint8_T) 3 u)

宏被组合在一起的图在识别注释行,但没有本质区别,他们所属的图表。

Stateflow州枚举

如果你想有一个更有组织的分组?具体地说,如果你想要你的国家是一个枚举的成员吗?

正如你可能已经猜到的,我们需要启用活动状态输出。但是我们需要做两件事为了得到这个枚举不错,干净,独立的形式。首先,打开信号属性来自活动状态的信号输出端口,给信号的一个名字。第二,设置信号的存储类ExportedGlobal(在代码生成选项卡)。

为活动状态配置生成的代码输出

现在,在* _type。h文件生成的代码,将会有一个枚举定义,如下所示:

typedef枚举{listofStates_None = 0,/ *默认值* /listofStates_A、listofStates_B listofStates_C} listofStates;

在为模型生成的c代码,宏定义的图表不再;相反,全球(信号)的名称listOfStates类型的声明:

/ * * /出口阻塞信号listofStates现状后;/ * < Root > /无时序逻辑的* /

进一步下降,c代码文件,你会发现一个切换实例实现的逻辑语句没有时序逻辑图,如下所示:

开关(现状后){情况下listofStates_A:打破;情况下listofStates_B:打破;默认的:打破;

最后一个注意

当你启用活动状态输出,您还可以检查“手动定义枚举类型”框,点击帮助链接自动创建一个模板定义枚举类型的m文件。

这个文件的顶部你会发现一个枚举声明与所有国家名称的列表。诱人,因为它可能是,你不能改变这些名字也在这里,除非你改变他们的图表本身。然而,你可以使用这个文件来改变使用方法,遵循其他一些行为(但这是一个博客帖子一天)。

现在轮到你了

你已经使用活动状态输出吗?给这一个尝试和让我们知道你的想法你的意见这里的评论

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。