如何实现VBAI状态图设计和内部数据交互?



主要软件: Vision Builder for Automated Inspection
主要软件版本: 2011
主要软件修正版本: N/A
次要软件: Utility Software>>EPICS I/O Server

问题: 如何实现状态图的设置、状态间的跳转、状态图之间数据的传递、同一个状态中Step之间数据的传递;如何在VBAI中实现For循环,While循环,Case构?

解答:

这篇文档和大家探讨如何实现上面问题中提到的应用。方便起见,我们以一个例子来贯穿这篇文档,在这个例子中我们的需求:每次采集一张图像,然后测量一个ROI的强度值,如果这个强度值小于200,则认为是Low Intensity,反之则是High Intensity,如此累计测试100次,最后如果High Intensity的次数大于Low Intensity的次数,则测试结果为Pass。

      首先,我们根据需求设计总体的状态图。规划如下:根据需求,我们创建相应的变量,包括存储测试次数的变量Test number,存储测试强度值的变量Intensity,存储High Intensity次数的变量High number,存储Low Intensity次数的变量Low number。创建状态initialize,完成变量的初始化。然后进入测试状态test,采集图像,测量ROI的强度值,将测试结果赋给相应的变量。然后根据变量值跳转进入状态High或者Low。而High和Low状态功能很简单,就是为相应变量High number和Low number分别赋值,每次自增1,此外在这两个状态中,变量Test number的值都自增1。最后在状态Close中,比较High 和Low数值大小,得到测试结果。
1.创建变量
首先点击工具中的变量管理器
 
 
然后点击Add按钮,创建相关变量
 
 
在这个例子中,创建完毕的变量如下
 
 
2.创建状态图
打开VBAI,选择相应的Target,点击New Inspection,出来VBAI程序界面,点击右上角的切换视图按钮,从而切换到状态图模式
 
 
在状态图中,双击Inspect状态,改名为Initialize
 
随后在空白处右键,选择创建新的状态Test
类似的方法可以创建其他状态,并且通过拖拽图中带箭头的线(状态转换线),可以改变状态跳转的方向,最后的状态图如下:
 
双击各状态转换线,设置跳转条件,以Transition 1为例子,当Test中的强度值小于200,状态从Test跳转到Low
类似的,可以设置其他转换线的跳转条件,Transition 2的条件是变量Intensity的值不小于200.Transition 3和4的条件都是变量Test number等于100,即实现累计测试100次。而default线是不需要设置的,当其他跳转线的条件都不满足时,将按照default线的方向实现状态转换
3.状态编辑
然后实现功能,对各个状态进行编辑
(1)   Initialize
这个状态的功能是初始化变量的值,点击函数列表中的相应函数,在对话框中设置各个变量值
 
(2)   Test
这个状态中采集图像,然后测量ROI区域的强度值,最后将强度值存储在变量Intensity中
 
(3)   High和Low
这两个状态功能很简单,就是设置变量值,首先是状态High中的设置
然后是状态Low中的设置
(4)   Close
最后是状态Close,进行High number和Low number的比较,运用函数Calculator
 
在对话框中,按照提示,选择相应的输入和输出
 
 
之后可以像在LabVIEW中一样,做一些简单的运算,得到结果
 
 
         这样,我们按照最初的要求,完成了这次的功能实现,学习了状态图设计和实现以及状态图跳转,在VBAI中,并没有直接的For函数或者是While函数来实现循环,但是通过变量,状态转换线和Calculator函数,我们可以间接实现这样的功能,在这个例子中,我们实现的是For循环100次的功能。
         这里面需要注意的是,step与step之间的数据传递可以使用变量,但严格来说并没有必要,step与step之间涉及到数据传递的这类函数,本身在函数配置中,包含有前面步骤中的结果和参数。在Close状态加了Set Inspection Status这个step,这样切换到Inspection Interface时,可以看到不良率的统计饼状图


相关链接:

附件:

Template.zip






报告日期: 08/13/2012
最近更新: 08/13/2012
文档编号: 60C3DP54