基于VI服务器与队列的程序架构.pptVIP

  • 24
  • 0
  • 约4.39千字
  • 约 48页
  • 2017-02-16 发布于湖北
  • 举报
基于VI服务器与队列的程序架构 Cedar 2009-09-03 应用领域 自动化测试系统(ATE) 挑战 以往的教材中着重强调了某一个功能的实现,但是在实际应用中一个完整的自动测试系统(ATE)往往有很多功能要求实现。 由于ATE(auto test system)使用的设备非常昂贵,所以要尽量减少单位产品所消耗的ATE工时。 针对以上要求,笔者利用队列和VI-server创建测试软件。 使用产品 Labview8.6 关键词 Labview VI-server 并行测试 队列 错误处理 介绍 本文基于labview中的VI-server和queue的组合,开发出可并行测试多个功能的测试软件。 由于可根据测试软件本身特点可以修改config文件,形成可测试不同产品的程序,从而大幅度缩短项目开发周期。 正文 Labview是一种图形化编程语言,比文本编程语言开发时间短。 在当今降低成本要求越来越高的时代,尽量将测试项目集成到一个程序已是大势所趋。 为了缩短项目开发时间,尽量利用以前的代码也不为是一个节约成本的好办法。 测试结构 一般的测试程序可以被分为: 初始化 等待运行指令 进入测试 保存测试数据 退出测试 测试流程 测试流程 初始化设备:测试之前往往要首先刷新整个ATE,使得所有的测试设备能够符合被测品(DUT)的要求。 等待运行指令:当外围准备好了方能进入测试,比如被测品有没有安装到位?保护措施有没有打开?等等,而程序必须在此步等待操作者确认完毕后方能进入下步操作。 测试流程 进入测试:此时PC将按照测试计划(testplan) 规定流程,逐步对被测品进行各项测试,要求的测试项往往很多,如按照串行顺序测试将消耗很多工时,这时如将互不影响的测试项并行测试将大大减少工时。 保存数据:为了方便统计分析,往往要求对测试数据进行保存,一般的情况是本机(local)要求一份,服务器要求一份。 退出测试:所有测试项完成且保存完数据后将ATE进入保护状态以防止更换被测品带来损伤。 基本测试程序架构 测试程序架构比较 测试程序架构比较 第二种:状态机 定义:状态机是一种具有指定数目的状态的概念机,在某个时刻仅处于一个状态。状态的转变是由输入事件引起的状态变化的,作为输入事件的相应,系统可能转变到相同或不同的状态,而输出事件可能是任意产生的。 就以《软件工程在labview中的应用》书中的洗衣机为例。流程图见下图 测试程序架构比较 测试程序架构比较 上图是洗衣机的分层结构图,可选择每个状态和输出条件。 测试程序架构比较 上图显示的就是状态机基本结构,开始条件输入进移位寄存器,然后将之传送给case语句。 测试程序架构比较 测试程序架构比较 另一种状态机 测试程序架构比较 上图所示的结构是很多ATS使用的结构,此结构比error-handle结构优秀,特别是其中的错误处理功能。 但笔者在实际使用中,发现此结构还是有一定的缺陷: 第一,如果要新增test3测试项,只有打开mainvi增加代码,虽然只是简单的增加一个case结构但是也需要重新debug整个程序,其中就隐含了不确定因素增加了风险; 第二,如果test1和test2两个测试项互不影响可以并行测试,但这种结构只能串行测试浪费了宝贵的测试时间。 测试程序架构比较 针对以上两个问题笔者使用两种方法解决 第一,使用vi-server避免修改mainvi,vi-server是labview独有的技术,将代码调入内存执行,执行完成后释放内存,(具体可参考清华出版《Labview高级程序设计》)笔者将所有的testvi做成标准格式,每个测试项功能相当于状态机中的一个case结构,这样可以将testvi和mainvi分离,两者之间使用 vi-server衔接,如果测试项修改,增加,删除。只需要更改config文件,不需要更改mainvi,避免了风险的产生。代码见下图 测试程序架构比较 其中的LOG,FMT,result,error out各有用处,下一部分将对此详细讲解。 测试程序架构比较 测试程序架构比较 下图为一个标准的testvi样板,必须要有FMT,LOG,result,error out几个输入项。把testvi统一成一个样式,这样可以方便mainvi的调用。 测试程序架构比较 第二;针对并行测试,我们可以创立两个线程:masterthread;slavethread. 测试程序架构比较 上图创建了两个队列masterthread;slavethread 把可以并行测试的测试项组成两个字符串数组,写入两个队列,由于labview是自动实现多线程的,所以可以达到并行测试目的。 必须将vi-server这个vi设置为“preallocate done for each in

文档评论(0)

1亿VIP精品文档

相关文档