智能虚拟控件组态性保证了控件实现具体仪器运算或控制的独立功能,还提供对整个系统设计和演化过程的相应控制。其组态性既包括控件本身的界面组态和功能组态,也包括仪器系统层面的宏观逻辑描述——即通信组态。
功能组态最终的目的就是实现仪器功能的积木式拼搭,由一些基本的函数功能组合出特定的仪器功能,并使虚拟控件具有这种仪器功能,因此在这一系统中,功能组态和界面组态通常是结合在一起的。
对于仪器中的一个虚拟控件来讲,应该配置两类参数,一类是物理属性,一类是功能属性(动作)。图9-12为一个按钮控件的基本属性。
图9-11 智能虚拟控件的制作过程
图9-12 一个按钮控件的基本属性
前面已指出,智能虚拟控件的组态性设计使得每类控件都具有输入输出参数。下面以按钮控件为例,详细说明其功能组态。
按钮本身可产生两个动作:下压和弹起,如表9-1所示。这两个动作可用一个布尔变量Button1标示,所对应的数据值分别为0或1。它能够配置的功能有两类,一类是功能库中的功能;另一类是一种称为“信号量”的全局变量。如果在仪器中需要由该按钮控制某个布尔量标志状态,则直接配置该按钮的输出数据Button1为全局变量,然后在仪器其他相应位置使用该全局变量即可,这时“功能”表项为“信号量”。
表9-1 按钮的两个动作
如果该按钮直接对应某个仪器功能,则从功能库中选择所需功能配置到“功能”表项,如表9-1中的“幅值谱”,此时按钮的动作仅触发所赋予的功能,其输出参数变量或者为空,或者作为内部数据使用。如果所配置的功能有输入输出参数,则动作页面中还将出现相应功能的参数配置。还是以“幅值谱”(这里不讨论高度集成的仪器功能)为例,假如其功能组态表如表9-2所示。
表9-2 “幅值谱”功能组态表(www.xing528.com)
输入参数有:输入缓冲区Buff1,存储输入的时间信号,对应为实时数据池中的缓冲区,为全局变量;长度len,表示输入缓冲区数据长度,为全局变量;采样频率fs,对应输入信号采样频率,为全局变量;窗函数Window,为一个固定的参数,不是全局变量,即只在该按钮控件内部有效,这样,在运行过程中将不可修改;平均bAver,表示该幅值谱功能是否对谱进行平均,不是全局变量,只在该按钮控件内部有效,但其默认值为Button1,即按钮的输出参数,表示幅值谱的平均参数同时由按钮控制。这样一来,按钮具有触发“幅值谱”功能,同时其输出值作为“幅值谱”功能的一个参数。对于全局变量,其默认值是联动的,即如果在仪器中某个地方修改其值,则在所有地方的值都相应被修改。
输出参数:输出缓冲区Buff1存储幅值谱幅度,也为全局变量,且和输入缓冲区同名,则表示输入输出使用相同的缓冲区;长度len2存储幅值谱有效数据长度。
对于输入输出缓冲区来讲,其数据类型并不仅仅单纯是诸如float∗的数据类型,有时可能是某种结构形式的类型,如:
Struct Buffer
{
float∗x;
float∗y;
}
如表9-2中的输入输出缓冲,若是上述结构类型,则对于输入参数来讲,为一个复变量类型,x表示输入信号的实部,y表示输入信号的虚部;对于输出参数来讲,则x表示幅值谱频率,y表示幅值谱幅度。
功能组态中,全局数据的定义和使用时至关重要的,用户可以在组态过程中临时增删全局数据,也可以在数据组态时设置。
对于界面组态,首先是每个控件都有一个基本的界面模型,设计时,用户根据自己的需要对其基本的物理参数进行设置,即可完成界面设置。也可以对控件的物理属性设置全局变量,运行过程中动态的改变相关控件的物理属性,从而在整个仪器系统内部进行控件界面的设置。例如,在仪器某个运行状态,按钮A可见,按钮B不可见;而在另一个状态下,按钮B可见,按钮A不可见。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。