组合结构是由承受弯矩、剪力和轴力的梁式杆和只承受轴力的链杆组成的结构。在组合结构中,利用链杆的受力特点,能较充分地利用材料,并从加劲的角度出发,改善了梁式杆的受力状态,因而组合结构广泛应用于建筑中的屋架、吊车梁以及桥梁中的承重结构等较大跨度的建筑物中。......
2023-08-30
上两节分别解决了基本状态机的第1~5个问题,但是否具备一种模式能够综合队列型状态机模式和用户界面事件型模式的优点呢?这样可以同时避免基本状态机的第1~5个问题。答案是肯定的,本节将介绍如何将状态机与事件结构结合起来形成一种新的、稳定的模式。
状态机模式的基本构成元素是while循环和条件结构,而事件结构模式的基本构成元素是while循环和事件结构,因此新的模式应该由while循环、条件结构和事件结构组成。而while循环的目的是为了保证程序的持续运行,因此必须在最外层,这样就只剩下了图5-26所示的两种组合方式。
在第一种方式中,每次循环的运行需要经过一个事件结构才能够实现条件结构中各个分支的运行,那么到底需要多少个分支呢?一般而言不同的事件都会有不同的事件处理函数(这些函数可以在条件结构中共用),显然这是无法满足要求的,它从本质上而言仍然是一种事件结构。
在第二种方式中,程序的主体是一个状态机结构,不同的是在某一个状态分子中有一个事件结构。我们可以回忆状态机模式中的“空闲Idle”状态,这正是长时间占用CPU资源的源头,如果在Idle中加入一个事件结构后就有效地规避了这个问题。
图5-26中的第二种结构综合了状态机和事件结构的优点,有效地克服了基本状态机的第1~5个问题。此外,在例5-2中,按钮1USD、2USD和5USD的作用是相同的,唯一不同的是它们代表的币值不同。如果希望系统使用“币值相加”这个功能,即当这三个按钮任何一个被按下后都调用同一个函数(该函数的功能是将系统中原来的货币值与新加入的币值相加得到新的值)。这样,需要有一种途径把1USD、2USD和5USD代表的币值作为参数传递给函数。
图5-26 三种结构的组合方式
图5-27所示为带参数的状态机结构,在消息队列的状态机模式中,加入了一个变体型的变量作为状态传递的参数。实际上,可以把红色的部分做成子VI,不仅节省了程序框图的空间而且能够进行错误处理。程序中应该设置一个专门的错误处理状态,当任何一个状态运行后如果发生错误将直接转到错误处理状态。当然,也可以在图5-27的基础上做一些改进和变形,假定参数的数据类型为string型,这样就把Data参数和State合并起来,中间使用特殊符号(如@)隔开。
图5-27 带参数的状态机结构
本节的例程将使用“多列列表框”控件处理二维数组排序问题,前面板如图5-28所示。该Listbox用于显示系统中的各种采集数据值,分为5列。程序的功能是当单击Listbox的列头时,对数据以该列的升序/降序进行排序。单击“Stop”按钮或“×”按钮则停止程序运行。
图5-28 二维数组排序应用前面板
系统使用状态机和事件结构相结合的模式,如图5-29所示。程序分为8个状态,共有4类。各个状态的功能与消息队列型的状态机模式类似,程序加入了错误处理部分。在程序框图的循环中共享同一个“错误簇”结构的移位寄存器,当存在错误时程序将暂时停止运行其他的状态而优先进入错误状态(Error分支)。
图5-29 二维数组排序应用程序框图
在Idle状态中,事件结构可以防止CPU资源的长时间占用,也可以响应各种前面板事件,如图5-30~图5-37所示。
图5-30 Idle状态程序框图
图5-31 Idle状态中Exit分支程序框图
“Data”鼠标释放事件结构处理的是列表框控件的“鼠标释放”事件,此时只需要对内部的变量赋值即可,并且当该单击是有效单击时进入“DSort”状态进行排序操作。
图5-32 Idle状态中Data分支程序框图1
图5-33 Idle状态中Data分支程序框图2
图5-34 Initialize状态程序框图
图5-35 Error状态程序框图
图5-36 Exit状态程序框图
图5-37 Pinitialize状态程序框图
如图5-38所示,本例中引入了4个变量以供不同的状态分支调用。其中的意义如下所述。
1)Index:当前排序的列号,表示Listbox以哪一列为依据进行排序。
2)ASC:表示当前排序的方式,true表示升序,而false表示降序。
3)Column Header:表示Listbox的列头数据。
4)Data:表示Listbox的内容数据。
图5-38 Dinitialize状态程序框图
在图5-39所示的DSort状态中,根据内部变量的值对列表框赋值并更新列头的显示。
图5-39 DSort状态程序框图
DSort中调用了二维数组的排序函数DataSort_2DArray(String).vi,该函数的实现过程如图5-40所示。LabVIEW并没有提供二维数组的排序方式,只提供了一维数组的排序函数。本例充分利用了LabVIEW提供的排序函数功能,当然并不是唯一的,也可以使用LabVIEW实现常用的排序算法。
图5-40 二维数组排序
DClean用于恢复到初始状态,该函数的实现过程如图5-41所示。
图5-41 DClean状态程序框图
有关虚拟仪器与数据采集的文章
组合结构是由承受弯矩、剪力和轴力的梁式杆和只承受轴力的链杆组成的结构。在组合结构中,利用链杆的受力特点,能较充分地利用材料,并从加劲的角度出发,改善了梁式杆的受力状态,因而组合结构广泛应用于建筑中的屋架、吊车梁以及桥梁中的承重结构等较大跨度的建筑物中。......
2023-08-30
计算结果为正,表示ΔCx的方向与所设单位力的方向相同,即 ΔCx方向向右。 求图 5-17所示半圆弧三铰拱顶铰 C 两旁截面的相对转角。图5-17解:计算拱的位移,仅考虑弯矩对弯曲变形的影响,按公式计算。计算三铰拱受荷载及单位力偶作用时[见图 5-17、]的弯矩方程,应先求出支座反力,然后列出弯矩方程。此题由于三铰拱为对称结构,可只对拱的一半列出方程。......
2023-08-30
如果杆件除了在通过其轴线的纵向平面内受到垂直于轴线的荷载以外,还受到轴向拉(压)力,这时杆将发生拉伸(压缩)和弯曲组合变形。例如,如图8-3所示的烟囱,在自重作用下引起轴向压缩,在风力作用下引起弯曲,因此它是轴向压缩与弯曲的组合变形。这里首先推导(公论)扭弯组合变形的强度计算方法,计算原理和拉伸或压缩与弯曲的组合变形基本相似,本章就不作介绍。......
2023-06-16
轻钢结构的屋面,外观可以有多种组合,材料也有多种。轻钢结构房屋为确保达到保温效果,在建筑物的外墙和屋面中使用的保温隔热材料需要能长期使用并能保温隔热。轻钢结构房屋一个最关键的问题是防火技术的应用。轻钢结构房屋的耐火等级为四级。轻钢结构房屋以其建筑系统做法的灵活性和个性化,可完美实现多种建筑类型。图4-10轻钢结构房屋装配式建筑结构体系......
2023-08-29
组合式凹模是由两个或两个以上的零件组合而成的。因此,这种凹模主要用于形状复杂的塑件的成型。组合式凹模的组合形式很多,常见的有以下几种。......
2023-06-30
由图可见,使用组合夹具具有显著的经济效果且符合现代生产的环境保护要求。目前有两种类型组合夹具,即槽系组合夹具系统和孔系组合夹具系统,图2-30所示为两类组合夹具所用元件及夹具结构图。图2-33 槽系组合夹具组装流程1)熟读工件图样及有关技术要求。......
2023-06-26
状态机具有三个基本的要求:状态、事件和动作。2)状态机在控制状态的同时,与各个状态对应的事件也会随之触发。3)动作是事件的相应,当一个事件发生时,状态机会决定应该执行什么样的动作,这主要取决于目前所处的状态和发生的事件。......
2023-07-02
图2-56 事件结构示意图事件用来通知用户有异步活动发生。事件结构将等待直至某一事件发生,并执行相应条件分支从而处理该事件。为了响应多个事件的请求,要求在事件结构外面套加一个While循环,以便能够及时准确地响应每个事件。如果没有这个While循环,无论有多少事件发生只能对第一个发生的事件进行处理,处理完后程序将退出事件结构。 使用事件结构目的:创建一个VI,使用事件结构响应前面板事件。......
2023-07-02
相关推荐