kaiyun官方网站举例一部电动机共有正转、回转、停转这 3 种景况-Kaiyun体育官方入口

发布日期:2025-02-10 05:17    点击次数:79

kaiyun官方网站举例一部电动机共有正转、回转、停转这 3 种景况-Kaiyun体育官方入口

本文来说一下景况机编程kaiyun官方网站。

什么是景况机?

景况机(state machine)有5个身分:

景况(state)挪动(transition)事件(event)动作(action)条目(guard)

景况:一个系统在某一时代所存在的褂讪的责任情况,系统在通盘责任周期中可能有多个景况。举例一部电动机共有正转、回转、停转这 3 种景况。

一个景况机需要在景况鸠集中中式一个景况算作开动景况。

挪动:系统从一个景况转动到另一个景况的经过称作挪动,挪动不是自动发生的,需要外界对系统施加影响。停转的电动机我方不会转起来,让它转起来必须上电。

事件:某一时代发生的对系统有道理的事情,景况机之是以发生景况挪动,即是因为出现了事件。对电动机来讲,加正电压、加负电压、断电即是事件。

动作:在景况机的挪动经过中,景况契机作念出一些其它的行动,这些行动即是动作,动作是景况机对事件的反映。给停转的电动机加正电压,电动机由停转景况挪动到正转景况,同期会启动电机,这个启动经过不错看作念是动作,也即是对上电事件的反映。

条目:景况机对事件并不是有问必答的,有了事件,景况机还要沸腾一定的条目智力发生景况挪动。也曾以停转景况的电动机为例,天然合闸上电了,然而要是供电解析有问题的话,电动机也曾不成转起来。

举个例子

要顾问的问题

电路如下图:

器件包括单片机MCU、一按键K0、LED灯L1和L2。

达奏效力描摹:

L1L2景况调遣轨则OFF/OFF--->ON/OFF--->ON/ON--->OFF/ON--->OFF/OFF通过按键扫尾L1L2的景况,每次景况调遣需衔接按键5次L1L2的开动景况OFF/OFF

景况调遣图

在景况机编程中,正确的轨则应该是先有景况调遣图,后有方法,方法应该是凭据盘算好的景况图写出来的。

底下这张按键扫尾活水灯景况调遣图,是用UML(调解建模说念话)的语法元素画出来的,语法不是很方法,但拿来解说问题弥漫了。

上图中,圆角矩形代表景况机的各个景况,内部标注着景况的称呼。

带箭头的直线或曲线代表景况挪动,起于初态,止于次态。

图中的笔墨实质是对挪动的证实,花样是:事件[条目]/动作列表(后两项可选)。

“事件[条目]/动作列表”要证实的兴味是:要是在某个景况下发生了“事件”,而且景况机

沸腾“[条目]”,那么就要践诺这次景况转动,同期要产生一系列“动作”,以反映事件。在这个例子里,我用“KEY”示意击键事件。

图中有一个玄色实心圆点,示意景况机在责任之前所处的一种不可知的景况,在运行之前景况机必须强制地由这个景况挪动到开动景况,这个挪动不错有动作列表(如图1所示),但不需要事件触发。

图中还有一个包含玄色实心圆点的圆圈,示意景况机人命周期的扫尾,这个例子中的景况机生生不休,是以莫得景况指向该圆圈。

方法代码

底下是凭据上述景况调遣图写成的代码:

void main(void)

先看一下fsm_active()这个函数,g_stFSM.u8KeyCnt = 0;这个语句在switch—case里共出现了 5 次,前 4 次是算作各个景况挪动的动作出现的。从代码简化培育效率的角度来看,咱们完满不错把这 5 次统一为 1 次放在 switch—case 语句之前,两者的终结是完满一样的,代码里之是以这么啰嗦,是为了了了地标明每次景况挪动中所有这个词的动作细节,这种方式和上头景况调遣图所要抒发的意图是完满一致的。

再看一下g_stFSM这个景况机结构体变量,它有两个成员:u8LedStat和 u8KeyCnt。用这个结构体来作念景况机或者有点儿啰嗦,咱们能不成只用一个像 u8LedStat 这么的整型变量来作念景况机呢?

天然不错!咱们把上图中的这 4 个景况各自拆分红 5 个小景况,这么用 20 个景况相似能达成这个景况机,而且只需要一个 unsigned char 型的变量就弥漫了,每次击键齐会激发景况挪动, 每挪动 5 次就能改变一次 LED 灯的景况,从外面看两种方法的终结完满一样。

假定我把功能要求改一下,把衔接击键5次改变L1L2的景况改为衔接击键100次智力改变L1L2的景况。这么的话第二种方法需要4X100=400个景况!而且函数fsm_active()中的switch—case语句里要有400个case,这么的方法还有法儿写么?!

相似的功能变嫌,要是用g_stFSM这个结构体来达成景况机的话,函数fsm_active()只需要将if(g_stFSM.u8KeyCnt>3)改为if(g_stFSM.u8KeyCnt > 98)就不错了!

g_stFSM结构体的两个成员中,u8LedStat不错看作是质变因子,非常于主变量;u8KeyCnt不错看作是量变因子,非常于援救变量。量变因子的冉冉积贮会激发质变因子的变化。

像g_stFSM这么的景况机被称作Extended State Machinekaiyun官方网站。



热点资讯

相关资讯

Powered by Kaiyun体育官方入口 @2013-2022 RSS地图 HTML地图