labview状态机基本类型顺序结构
时间:10-02
整理:3721RD
点击:
前文介绍了LV编程的重要概念---状态机,状态机是个基本概念或者说理论,其具体表现形式多种过样,很难具体分类,我根据个人在编程实践中的体会,归纳几种常见类型.
一、顺序结构
LV本身是有顺序结构的,而且有两种方式,STACKED (堆叠)和FLAT FRAME(平铺)。
顺序结构的状态机更象是堆叠顺序结构,不过二者的区别在于LV本身的顺序结构是强制的,无法中间退出的,而状态机的顺序结构是采用的循环扫描的方式.我举一个例子来说明一下:
一个加工零件的程序,过程如下:
等待启动按钮--->主轴启动--->滑台快进---->滑台工作进给--->终点延时--->滑台快速返回原位-------->等待启动按钮(下一次循环)
这里的启动按钮可以是界面上的按钮也可以是操作台上的按钮.用普通顺序结构应该是(我们用平铺更容易理解)
我们注意到,每个动作(FRAME)内部都是一个循环结构,需要等待一定条件后,如果条件满足,转入下一个FRAME,我们没有任何办法改变它,比如我们有一个急停按钮,则需要在每一个FRAME中检测急停,如果急停生效,退出本FRAME,转入下一个FRAME,依然要判断急停,直到所有的FRAME都完成才能退出,
在这个过程中,外层循环需要所有动作完成后才执行下一循环,对它改造一下,就可以形成顺序状态机结构.
我曾经提到过,严格类型的枚举是状态机的核心要素,我们先构造一个严格类型的枚举.枚举变量有一个特点,当最后的元素执行加一操作时返回第一个元素.
这个状态机的功能和上面的顺序结构完成的功能是相同的,区别在于每个CASE不存在循环等待了,
整个循环过程都是在外层循环中实现的,外层循环不断地更新,如果转换条件(事件未发生),下一次循环仍然执行前一个CASE(状态不变),如果转换条件满足(事件发生),采取加一的动作(ACTION),转入下一个状态.
这样做和上面的顺序结构比较,好处是显而易见的,整个过程只有一个循环,而上面的顺序结构实际每个FRAME都是一个循环,这样,如果有急停按钮,我们可以在CASE外面检测急停,如果急停,可以马上停止循环,而在顺序结构中,需要在每个FRAME检测,并逐个退出.
顺序结构的状态机是非常简单的,但是实际控制中又是比较常见的,后续我将介绍其他类型的状态机
一、顺序结构
LV本身是有顺序结构的,而且有两种方式,STACKED (堆叠)和FLAT FRAME(平铺)。
顺序结构的状态机更象是堆叠顺序结构,不过二者的区别在于LV本身的顺序结构是强制的,无法中间退出的,而状态机的顺序结构是采用的循环扫描的方式.我举一个例子来说明一下:
一个加工零件的程序,过程如下:
等待启动按钮--->主轴启动--->滑台快进---->滑台工作进给--->终点延时--->滑台快速返回原位-------->等待启动按钮(下一次循环)
这里的启动按钮可以是界面上的按钮也可以是操作台上的按钮.用普通顺序结构应该是(我们用平铺更容易理解)
我们注意到,每个动作(FRAME)内部都是一个循环结构,需要等待一定条件后,如果条件满足,转入下一个FRAME,我们没有任何办法改变它,比如我们有一个急停按钮,则需要在每一个FRAME中检测急停,如果急停生效,退出本FRAME,转入下一个FRAME,依然要判断急停,直到所有的FRAME都完成才能退出,
在这个过程中,外层循环需要所有动作完成后才执行下一循环,对它改造一下,就可以形成顺序状态机结构.
我曾经提到过,严格类型的枚举是状态机的核心要素,我们先构造一个严格类型的枚举.枚举变量有一个特点,当最后的元素执行加一操作时返回第一个元素.
这个状态机的功能和上面的顺序结构完成的功能是相同的,区别在于每个CASE不存在循环等待了,
整个循环过程都是在外层循环中实现的,外层循环不断地更新,如果转换条件(事件未发生),下一次循环仍然执行前一个CASE(状态不变),如果转换条件满足(事件发生),采取加一的动作(ACTION),转入下一个状态.
这样做和上面的顺序结构比较,好处是显而易见的,整个过程只有一个循环,而上面的顺序结构实际每个FRAME都是一个循环,这样,如果有急停按钮,我们可以在CASE外面检测急停,如果急停,可以马上停止循环,而在顺序结构中,需要在每个FRAME检测,并逐个退出.
顺序结构的状态机是非常简单的,但是实际控制中又是比较常见的,后续我将介绍其他类型的状态机
看看哈
需要悟
学习
学习 学习 感谢辛苦
看看吧
学习了。
kankan
学习,可是还是要悟啊。。,。,[POIUGFDCGHJKLOXZP; V[C]FA[PODIHJBNKWLFGPREDY89T7GUHEJIO21R0FGWREB8 G7Y[08HFIRPOMD[,EL
PFODUZH‘ OBJDWQK,SLD]QW、HEB’P OUA/LK;DE
小编太好了,给我们介绍下,消息队列状态机吧
学习。
真心是好东西。
好东西啊。
谢谢小编,学习中
下午集中学习一下状态机
小编能解释一下数据驱动与事件驱动的状态机有什么区别吗?
小白提问,请您见谅
还是要靠自己理解
这是不错的帖子,对于技术人员来说是有帮助的,特别是初学者来说。分享是一种美德!谢!
好难理解的东西
刚玩labview,不是很明白啊
感谢您~的分享~~~~~~~~谢谢
感谢分享,谢谢,学习了
很不错的资料,学习了
状态机,好东西,谢谢分享