这次我们再在前面的例子上加深一步,写个含有父状态的状态机,同时用ST语言描述。
控制描述
有一个电机,按下启动按钮后低速启动,按下加速按钮后切换成高速,按下减速按钮后再切换成低速,如果按停止按钮,直接停止。用状态机描述如下:
这个状态机我们简要说明一下。和上一篇有点不一样。包换了一个父状态running,在running里含有两个子状态runSlow和runFast,分别通过按钮speed_up、speed_down切换。前面我们讲过,只要子状态激活,它的父状态必然激活。如果父状态激活,那么也必需有一个子状态激活,这里我们设定runSlow为默认的状态,因为它的上面有个无条件转移线。
生成ST程序
我们先把需要用的变量列出来。他们都为bool型的,分别是输入变量start,stop,speedUp, speedDown, 和两个输出runSlow, runFast, 然后再加一个状态变量state,另加4个常量分别表示4个状态,stateStop, stateRunning, stateRunSlow, stateRunFast。这里我们简要讲一下变量的命名规则,写PLC程序的,变量的命名都喜欢用Pascal命名法或匈牙利命名法。尤其是匈牙利命名法,已在PC编程中被淘汰了,为啥呢?因为现在的IDE都支持类型提示,用变量名来显示类型,多此一举。如果以后修改了变量的类型,还要再次改变变量名称。我们用的博途IDE也是支持类型推导的,把鼠标放变量上,它会告诉你啥类型。没必要这么做。所以这里我们用峰驼命名法,首字母小写,后面每个单词的首字母大写。下面我们接着讨论写状态机。
变量声明<

本文介绍如何使用西门子PLC的ST语言设计一个包含父状态(running)和子状态(runSlow, runFast)的状态机。在运行状态下,电机根据speed_up和speed_down按钮切换速度,按下stop按钮则直接停止。文章详细阐述了状态机的逻辑,并提供了程序变量声明和状态切换的实现方法,同时也讨论了如何利用历史状态来保持设备的连续运行状态。"
127274680,7365510,Python Tkinter 实现桌面悬浮新闻阅读器,"['Python', 'GUI开发', '多线程', '桌面应用', '数据获取']
最低0.47元/天 解锁文章
1091

被折叠的 条评论
为什么被折叠?



