那么这种情景在状态机中如何表示呢,我们前天简单介绍RS指令在场馆机中怎么处理的

而是到原点后才停止,而是到原点后才停止

俺们先天大概介绍RS指令在场所机中怎么处理的。有些设备按下截止按钮后,没有当即平息,而是到原点后才结束,那么这种气象在状态机中怎么样表示呢?大家以案例表达之,下边是我们的控制描述。

我们前几天简短介绍RS指令在场地机中怎么处理的。有些设备按下停止按钮后,没有立即平息,而是到原点后才停下,那么这种情状在状态机中如何表示呢?我们以案例申明之,下边是我们的控制描述。

支配描述

小车从左位最先,从左向右行使,到达右位后停5秒,然后从右向左运行,到达左位后停3s,继续向右运行。当按下截至按钮后,小车不是当下平息,而是到达左位后才停止。大家假诺左侧的做到信号位isOnLeftPos,右侧的做到信号为isOnRightPos,向左的运行动作为GoLeftPos,向右的运行动作为GoRightPos,启动截止按钮分别为start和stop。

对于如此的操纵任务,我们该怎么作吗?难点在于处理stop按钮信号,小车运行中,按下stop按钮,不是即时截至,而是要到达左位后才打住。这里大家用了状态机的互相结构。Signals状态处理stop信号,Logic状态处理逻辑动作。

图片 1

这一张图是先后的一体化,图左边的OnRightPos和OnLeftPos是有益大家着眼左右位的意况,实际运用中可以不用输出。

图片 2

这张图是实际的主宰。左边处理stop信号,左侧处理小车控制逻辑。此外这里大家要表明一下命名规则:大写起来的是指各状态,比如OnLeftPos,Signals等等,小写起来的是原则,比如isOnRightPos,
stop.
倘若小车的当前情况处于GoRightPos,按下stop按钮,Stop的子状态Set就激活,那么〔in(Signals.Stop.Set)]条件满意,但近来景色不在OnLeftPos,没有暴发转移,此时小车继续运行,等小车到达OnLeftPos状态时,OnLeftPos状态才起来转移到Idle状态,此时〔in(Logic.Idle)]基准满意,Stop的子状态从Set转移到Reset。

操纵描述

小车从左位起头,从左向右行使,到达右位后停5秒,然后从右向左运行,到达左位后停3s,继续向右运行。当按下终止按钮后,小车不是随即截至,而是到达左位后才截至。大家只要左侧的做到信号位isOnLeftPos,左侧的姣好信号为isOnRightPos,向左的运行动作为GoLeftPos,向右的运行动作为GoRightPos,启动截至按钮分别为start和stop。

对于如此的主宰任务,我们该怎么作吗?难点在于处理stop按钮信号,小车运行中,按下stop按钮,不是当时平息,而是要到达左位后才截至。这里大家用了状态机的竞相结构。Signals状态处理stop信号,Logic状态处理逻辑动作。

图片 3

这一张图是程序的全体,图右边的OnRightPos和OnLeftPos是便利我们着眼左右位的气象,实际利用中可以不用输出。

图片 4

这张图是实际的操纵。左侧处理stop信号,左边处理小车控制逻辑。此外这里我们要表明一下命名规则:大写起来的是指各状态,比如OnLeftPos,Signals等等,小写起来的是基准,比如isOnRightPos,
stop.
假诺小车的眼前情况处于GoRightPos,按下stop按钮,Stop的子状态Set就激活,那么〔in(Signals.Stop.Set)]标准满意,但近日气象不在OnLeftPos,没有爆发转移,此时小车继续运行,等小车到达OnLeftPos状态时,OnLeftPos状态才起来更换来Idle状态,此时〔in(Logic.Idle)]标准化满意,Stop的子状态从Set转移到Reset。

支配程序

这一次的控制程序和原先稍有两样,用个互相状态处理stop信号,在第一篇博客中,我们也用一个互相状态处理上升沿问题。整个程序多了一段case,一段描述Signals,一段描述Logic,方法和从前一样,也是相比较简单的,等下次我们在此状态机的基本功上,介绍完历史图景后,一并写出程序。此外,为了方便,我们之后就用ST语言写了。

操纵程序

本次的操纵程序和原先稍有例外,用个相互状态处理stop信号,在首先篇博客中,我们也用一个互相状态处理上升沿问题。整个程序多了一段case,一段描述Signals,一段描述Logic,方法和在此以前一样,也是相比较简单的,等下次我们在此状态机的基础上,介绍完历史情形后,一并写出程序。其它,为了方便,我们之后就用ST语言写了。