《状态机工具包》的使用方法.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《状态机工具包》的使用方法

《状态机工具包》的使用方法 状态机工具包提供了在LabVIEW开发环境下,根据程序的需求设计状态图,并将设计好的状态图转换成LabVIEW状态机架构。 “状态机”的概念大约出现在上个世纪30-40年代,在学习数字电路设计时也涉及到了状态机,在数字逻辑设计中,“状态机”是一个系统设计的规范方法。在程序设计中引入状态机的概念,可使复杂的程序看起来更清晰,程序修改起来更容易。由此可见,状态机是降低软件复杂度的最佳方法。 状态机的定义:状态机是一种具有指定数目的状态的概念机,它在某个指定的时刻仅处于一个状态。状态的改变是由输入事件引起的状态变化。作为对输入事件的响应,系统可能转变到相同或不同的状态,而输出事件可能是任意产生的。 ??????????? ——摘自A software engineering Approach to LabVIEW 的中文译本 “状态图”是用图示的方法来描述状态及状态之间的联系,有点类似于通常程序设计中的流程图。 “LabVIEW状态机架构”是指LabVIEW开发环境下的状态机机制的LabVIEW程序代码。 ? 本文主要讨论LabVIEW中“状态机”的概念、原理和架构以及如何使用状态机工具包实现程序设计。 “状态机”在LabVIEW那个版本中开始出现我无从考证,从检索到的资料看好像应该包含在LabVIEW 5中。现在发布的状态机工具包适用于LabVIEW 7以后的版本。 在我的“虚拟仪器设计方法之一”中提到的“轮询(polling)”的方式就是指“状态机”在GUI设计中的应用。当然,在较大的开发项目中,如果使用状态机工具包会进行设计,将会提供方便、简洁、灵活的应用程序架构。 由于状态机工具包是一个附加的工具包,只有NI Developer Suite中包含了这个工具包,所以绝大部分介绍LabVIEW的中文书籍中都没有包含这部分内容。考虑到它的实用性,觉得还是有必要将它简要的介绍给大家,正是基于这样的原因,这部分可能讲解得要相对细一些。另外,LabVIEW State Diagram Toolkit User Guide中会有更精确的描述,鉴于我的英文水平不高,所以没办法将其内容完整的表述给大家。本文的内容仅仅是我在使用中的体会,并且对它的应用也仅仅体现在程序架构设计中。其实在仪器控制(GPIB)等方面它应该更具有使用价值。 ? ? !--[if !supportLists]--一、???????????? !--[endif]--“程序”与“状态机”间的关系 “程序”是指挥计算机并通过计算机来表达或实现我们意念(想法、要求)的一堆代码;“状态机”是用来抽象地表示这堆代码的一种机制(方法)。 ? 实际上,我们可以将程序看作是有许多种状态的机器,这些状态相互连接,状态之间的转换是通过某些事件发生或状态结束来触发。 对于上面这种说教式的表述方式,很多初学者还是很难理解,那么就用一个生活事例来做进一步的说明吧。比如,我们早上起床后要把被子叠好,穿好衣服,拉开窗帘打开窗户置换室内的空气;然后跑到卫生间方便完,开始刮胡须、洗脸、刷牙;之后到餐厅边吃早餐边听广播;早餐后穿好外衣出门上班。基本上就是这么个程序(也可能比这个还复杂随你想象:比如把手机、钱包、带好等等)。 问题是:有没有这样的时候,连洗脸、刷牙都顾不上了,吃点东西赶紧出门上班,可能会有。 ????? :有没有这样的时候,连吃点东西都顾不上了,赶紧出门上班,可能会有。 你看到了吧,这套程序有多复杂!其实把它抽象化后很简单,就这么几件事:起床、洗漱、早餐、上班。图1给出了用状态机表述的状态图。 ???? ??? ??? ??? ??? ??? ??? ??? ??? 图1 ??生活事例——状态图 图1 中:绿色椭圆——初始化,每个状态机都要求必须有一个初始化状态,也是程序的开始,用绿色表示也说明与其它的状态不同。通常的测控程序开始工作时都要有一个初始化状态,避免发生瞬变或混乱。如:做系统复位操作,程序也是从初始化开始从新运行。本例中是由“闹钟响起”导致起床的,其实还可以是恶梦惊醒、生物钟的作用等等。 ??? 在此,为了使读者有更清晰的理解,有必要再重申一下:状态机不是程序,是从程序中抽象出来的程序构架,真正的程序应该在存在于状态椭圆中。如:在初始化状态椭圆中,导致起床的事件可能有:“闹钟响起”、“恶梦惊醒”、“生物钟的作用”、“内急”、“意外的响动”等等,可以有N个。所有这些事件源都应该包含在初始化状态中,它们中任何一个事件的发生都导致“起床”(从一个状态到另一个状态)。 而引导这一过程的是图1中两个状态圆间标记:default的线段。 ??????? 黄色椭圆——黄色椭圆有多少取决于满足程序要求的前提下对程序抽象的程度。如:可以把洗漱包含在起床这个状态中,那

文档评论(0)

love3892 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档