离散信号事件驱动的自动测试系统仿真验证方法与实现
2023-08-03唐小峰
唐小峰
(成都天奥测控技术有限公司,成都 611731)
0 引言
自动测试系统(ATS,automatic test system)是指以计算机为控制核心,通过程序控制完成某一测试任务的测试仪器和其他设备的有机整体[1]。ATS广泛应用于航空、航天、船舶和电子等领域,是现代化高端装备的重要保障设备。ATS一般由自动测试设备(ATE,automatic test equipment)、测试程序集(TPS,test program set)和TPS软件开发工具(即软件平台)三大部分组成[2]。其中TPS是ATS的重要组成部分,TPS的开发和调试工作在ATS总成本中占有很大比重。由于通用ATS一般被设计为满足多型被测设备(UUT,unit under test)的自动化检测需要,这些UUT的TPS目前必须在成熟度较低的情况下依次排队在紧缺的实物测试平台上进行调试,形成了严重的资源挤占。此外,ATE本身的设计制造也只能通过漫长的TPS调试过程来充分验证,因此极大影响了ATS的研制进度和交付效率,增加了ATS的研发成本。
随着信息技术的发展,针对ATS的离散信号事件系统特性采用计算机建模与仿真手段解决ATS开发、调试和验证问题成为一个值得探索的方向。离散事件系统规范(DEVS,discrete event system specification)[3]是一种通用的复杂动态系统建模与仿真范式,近年来获得了广泛关注。唐俊等[4]证明了DEVS模型的封闭特性;林清泉等[5]结合DEVS和智能体模型描述,提出一种复杂产品行为模型的多分辨率模型框架。此外,DEVS还被广泛用于柔性制造系统PLC程序的辅助设计[6]、机械加工过程碳排放过程动态分析、预测与定量评估[7]、构建网格世界等环境中智能体的交互行为和学习行为[8]以及电力电子系统的仿真和校正[9]等。
针对自动测试系统,目前还未见采用离散事件建模方法对其进行全要素系统级仿真验证的报道。刘宏伟[10]针对智能电网抄表业务设计了一种基于半实物仿真的自动测试平台;韩伟[11]介绍了变电站的仿真自动测试系统,使用软件程序模拟实际的报文数据;赵昕红等[12]通过Simulink建模工具为旋翼电动折叠系统构建了虚拟实验系统。其他的相关研究包括基于LabVIEW的虚拟仪器技术应用[13-14]等。
本文基于DEVS基本概念并结合ATS的特点对其进行了适应性改进,研究了针对自动测试硬件实体的多分辨率仿真模型描述,给出了UUT、电缆、适配器、仪器设备和系统集成的具体建模方法,提出了一种离散信号事件驱动的仿真调度算法,给出了一个C/S架构的支持远程交互的仿真验证实现方案,并最终通过两个实验对所提模型和方法的有效性进行了验证。
1 多分辨率仿真模型描述
1.1 模型框架
DEVS中的原子模型表示单分辨率的最小描述单元,其行为具有自治性。耦合模型包含原子模型的组合与连接,根据嵌套层次的不同又可分为一阶耦合模型和高阶耦合模型。耦合模型分辨率正比于其阶数。
如图1所示为离散事件系统的多分辨率模型层次框架示意图,其中底层的m1、m2和m3方框为原子模型实例;m4和m5所示的斜方框表示一阶耦合模型实例,其构成元素只含原子模型;m6所在的重叠斜方框表示高阶耦合模型实例,其中至少包含一个其他耦合模型。
图1 多分辨率模型层次框架
1.2 原子模型
离散事件系统的原子模型可以定义为一个九元组结构体:
mA=
(1)
上述原子模型要素中,输入信号集X、输出信号集Y和端口集P构成了模型的接口;状态特征集S(包括其初始状态s0)和故障模式集F构成了模型的属性;状态转移函数δ、输出函数λ和时间推进函数ta则描述了模型的行为。
原子模型端口是新引入的一个概念,在后续的仿真算法实现过程(详见第3节相关内容)中具有重要作用,端口的形式化定义如下所示:
(2)
1.3 耦合模型
考虑耦合模型的原子特性,可将其定义为一个三元组结构:
mC=
(3)
综上所述,可得如图2所示的耦合模型结构,若其中虚线框中的模型要素为空,则该模型即退化为一个原子模型。
图2 耦合模型结构
2 自动测试系统建模方法
本节基于上述多分辨率模型描述方法,针对自动测试系统中的典型硬件实体构建其仿真模型。一个完整的自动测试系统如图3所示,其中主要包含UUT、电缆、适配器、仪器设备以及由这些仪器设备集成得到的ATE。电缆和适配器的作用是将UUT的接口连接到ATE的外部接口,使得ATE具备测试多个不同型号UUT的通用化能力。ATE中的控制计算机通过各类测控总线(如GPIB、PXI、VXI、LXI和串口等)与仪器设备的程控端口相连。仪器设备的功能接口通常通过ATE的外部接口转接实现互连或与适配器端口相连,从而间接地连接到UUT接口。
图3 典型自动测试系统组成结构
自动测试系统的基本工作原理为由控制计算机运行当前UUT的TPS,其间通过调用仪器驱动程序:①控制开关的闭合和断开,在UUT和仪器设备之间建立和切换信号通路;②控制信号源输出激励信号(如供电信号、通信控制信号、射频信号和离散量信号等),该信号通过适配器和电缆传递到UUT,从而对UUT的工作状态施加控制和影响;③控制测量仪读取UUT输出信号的测量值,然后将结果逐层返回给驱动程序和TPS,进行后续的判读或处理。
2.1 UUT建模
首先根据UUT的接口控制文件梳理UUT模型的端口P和信号(X和Y)。例如由两个针脚XS1-DD和XS1-GND构成UUT的直流供电输入端口,输入信号类型为DC_POWER,其主要信号属性为电压幅度和电流限,也可包含关于信号质量的描述,如允许的电压浮动范围或电压精度等。在面向信号的测试中,上述信息是UUT测试需求的重要组成部分[15]。
UUT的内部状态S与其具体的设计规范相关,例如静态属性Ss中包含该设备的型号、名称、序号等信息;状态变量Sd则可能涉及上电状态、工作电流、工作模式、工作参数以及当前工况下的性能指标等。UUT的故障模式F可参考其故障模式、影响及危害性分析报告进行设置。
考虑到离散事件模型具有耦合封闭性特点,即耦合模型总能转化为一个等价的原子模型[4],在进行UUT建模时可根据掌握资料的详细程度确定其模型分辨率以及行为描述的实现方式(包括δ、λ和ta)。若能获取较详细的内部设计信息,则采用耦合模型(即M≠φ)将更加清晰和直观。
2.2 电缆和适配器建模
电缆和适配器主要用于转接信号,它们的模型特点是:①端口和信号数量较多(即|P|和|X|+|Y|的值较大);②动态的状态变量为空(Sd=φ);③故障模式F主要涉及接触不良等连接型故障,这些故障模式直接影响信号的输出函数λ;④行为模式较为单一,通常是简单地将一端的输入信号从另一端输出,只有输出函数λ(其中可以对信号属性进行简单处理,如功率衰减等),无状态转移函数δ,信号传输的时间可忽略不计(即时间推进函数ta的值恒为0)。电缆和适配器的建模以使用单分辨率的原子模型为主。
2.3 仪器设备建模
仪器设备主要用于产生激励、测量信号和切换信号通路(开关类仪器)。在自动测试系统中它们通常是可程控的,因此具有与控制计算机进行通信的端口pctrl∈P。其他端口主要用于输出激励信号或接收测量信号。普通仪器的建模过程与UUT类似,不再赘述。值得注意的是,在描述仪器的控制信号和行为时应充分参考相关开发手册或使用说明,增强模型的拟真度。
开关作为一类比较特殊的仪器,其模型特点是:①由于通道数一般较多,故端口和信号数量较大;②状态变量Sd记录当前所有开关单元的连接和断开状态;③故障模式F与电缆和适配器特点相似,主要是连接型故障;④状态转移函数δ主要受程控端口输入信号事件触发,用于更新指定开关单元的开闭状态;⑤输出函数λ依据连接关系传递端口上的信号;⑥时间推进函数ta主要作用于状态转移过程,用于模拟开关动作时延,而信号在开关内部传输的时间可以忽略不计。
开关模型中有输入信号在开关单元闭合前和闭合后到达端口的两种情况。前者需要将该信号暂存在端口的缓存p.buff中,开关闭合后再从中取用信号并输出;后者则可以直接从相连的另一端输出该信号。开关模型通常为原子模型,但若开关是由多个开关子模块拼接而成(例如大型矩阵开关)则更宜采用耦合模型。
2.4 系统集成
自动测试系统模型的集成涉及两个层面,一是ATE的集成(即将仪器设备模型集成到一起,形成一个ATE耦合模型),二是测试系统的集成(即UUT+电缆+适配器+ATE)。系统集成的过程就是将相同层次的模型实例端口相互连接(即内部耦合)或连接到高层次模块的外部端口(即外部输入或输出耦合),从而构成一个整体。
集成后的ATE可能是一阶耦合模型,也可能是高阶耦合模型,这主要取决于其中仪器设备模型的实现方式。并且,从通用化的工程经验看ATE模型中主要是外部耦合,即仪器设备模型之间直连的情况较少(除了控制计算机与仪器设备程控端口的连接)。整个测试系统则是一个典型的高阶耦合模型,且其中以内部耦合为主。
3 仿真调度算法
自动测试系统仿真算法实质上是离散信号件驱动的仿真调度过程,需要解决端口信号事件的产生和处理、行为函数触发执行以及输出延时等问题,既能模拟硬件的并行行为特征,又能高效利用仿真时钟。
仿真调度算法的基本原理如图4所示,下面结合该原理图对算法过程的详细步骤进行说明。
图4 仿真调度算法基本原理
1)状态初始化。加载系统模型时对各级模型实例的状态S进行初始化,即S←s0。
2)仿真启动。令X0为原始输入信号集,通过将其中的信号依次施加到原始输入端口集P0来启动仿真过程。
4)行为函数触发执行。受端口上的输入信号事件调度,行为函数执行时通过状态转移函数δ根据输入信号的属性值和当前状态S更新状态变量Sd。然后,输出函数λ根据当前输入或状态产生输出信号。函数δ和λ需要根据对象的行为特点编写计算机代码实现。
7)仿真结束。当TE=φ时,仿真结束,系统进入稳态。
4 自动测试系统仿真验证实现
自动测试系统仿真验证的目的有三个:1)验证TPS的逻辑是否满足UUT测试需求;2)验证仪器驱动程序的调用是否正确;3)验证ATE的行为是否符合预期的设计规范。
TPS是一组可执行的程序或脚本,通常需要在开发阶段进行调试,因此将TPS的仿真验证与程序调试进行结合是比较自然的思路。驱动程序是受TPS执行过程中调用的计算机程序,可与TPS的调试同步执行,对传参和测量值返回显示功能进行验证;ATE的设计验证主要关注仿真过程中各种信号是否沿着正确的路径传输并被处理。
为提高实现方案的灵活性以及满足远程仿真验证等需求,采用了如图5所示的C/S架构,其中TPS(及其执行器)和驱动程序运行于客户端进程,用于模拟图3中所示的控制计算机模型。自动测试系统模型的仿真在服务端运行。前后端通过HTTP协议经仿真服务接口进行交互。表1中所示为主要的通信接口描述。
图5 自动测试系统仿真验证实现原理
表1 仿真验证实现的网络通信接口描述
当TPS启动执行时,向后端发送模型初始化指令,加载对应的系统模型。TPS执行过程中可以通过发送UUT控制指令并通过仿真服务接口转入UUT模型的控制端口,触发UUT模型行为执行,得到的响应数据再依次返回给执行器和TPS,进行判读、显示或其他处理。当TPS执行过程中需要控制仪器设备时,通过调用相应的驱动程序,结合传参内容构造仪器程控指令(如标准的SCPI指令或模拟的接口函数调用等),然后发送到仪器模型的程控端口,触发其产生信号、进行测量或切换开关等动作,响应后的数据同理逐层返回到TPS。
5 实验及结果分析
仿真验证实验基于自主研发的自动测试系统软件平台产品(SCATS V1.0)实现,它具备测试系统建模、测试程序开发/调试、测试程序执行、仪器驱动辅助开发和故障诊断等功能,并且能够在主流的国产CPU计算机和国产操作系统上进行安装、部署和使用。SCATS为TPS调试功能提供了一个“模型仿真”的选项,能够基于本文所提方法对自动测试系统进行全要素的仿真验证[16]。
下面通过两个实验演示本文所研自动测试系统仿真验证方法和实现的效果。实验一是一个较为简单的示例,主要用于对所提方法进行进一步的举例说明;实验二是针对一个真实的航空机载设备UUT开展的应用验证,用于证明本文研究的实用性。
5.1 实验一
本实验以如图6所示的自动测试系统为例(简洁起见其中省略了测试电缆),其测试需求为通过局域网控制UUT先后产生一个正弦波信号x1和方波信号x2,然后通过射频开关的切换,分别将两个信号输入到频谱仪和示波器测量它们的幅值。
图6 自动测试系统实例
图6中的UUT、适配器、频谱仪、示波器和射频开关均为原子模型。以射频开关为例,它的输入和输出信号为图中所示的正弦波和方波信号,即X,Y={x1,x2};该模型有7个端口P={IN1,IN2,OP1, ,OP4,COM},其中IN1和IN2为输入端口,OP1~OP4为输出端口,COM为串口控制端口;主要静态属性Ss=
表2 射频开关模型中的故障模式
射频开关的射频信号输入端口IN1(IN2同理)关联一个名为“sig_handle”的行为函数(即IN1.func=“sig_handle”)。信号输入时,该函数通过判断当前K1和K2的状态,调用λ从正确的端口输出该信号,同时令其他端口输出一个空信号(模拟信号被断开的情况)。程控端口COM关联一个名为“write”的行为函数(即COM.func=“write”),该函数对程控指令进行解析,从而调用δ更新开关单元的状态。例如程控指令为“INIT”(初始化)或“RST”(复位)时,则分别置k1←1和k2←1。同时,该函数还检查IN1.buff是否有缓存的信号,若有则调用λ输出信号,实现与真实射频开关行为的一致。
图6中的ATE是一个一阶耦合模型,它的端口J1-1和J1-3是入口,J1-2是出口;组件集M={频谱仪,示波器,射频开关};连接集CP={(ATE.J1-3,射频开关.IN1),(射频开关.OP4,ATE.J1-2), ,(射频开关.OP1,示波器.IN1), },其中所列元素分别表示外部输入耦合、外部输出耦合和内部耦合。
基于该自动测试系统开发的TPS中包含20个测试步骤。以“模型仿真”模式启动TPS调试,在测试程序执行到第4行时,经信号路由搜索算法计算得到需要闭合K1的第1掷和K2的第4掷才能将正弦波信号输入到频谱仪测量。假设控制K2的指令内容为“CON K2 4”,通过TPS执行器调用射频开关的驱动程序将该指令发送到服务端的射频开关程控端口COM,调用上述“write”函数对其进行解析后置状态k2←4。执行TPS第5行时执行器向UUT模型发送指令,控制它从端口X1-1输出一个中心频率为100 MHz,功率为-35 dBm的正弦波信号x1。该信号分别通过端口TA1-1和入口J1-3到达射频开关的IN1端口,触发上述“sig_handle”函数执行(当前仿真时刻t=6 T),完毕后时钟事件列表TE中包含一个事件e=<7 T,{射频开关.OP4},x1>。根据仿真算法,下一个仿真时刻t=7 T时(即延时Δt=1 T),将从射频开关的端口OP4输出x1,进入与OP4相连的端口J1-2触发新的输入信号事件和行为,直到TE=φ,系统进入稳态。
在TPS的第10行和第20行设置两个断点。正常情况下在第一个断点处,开关状态为k1=1和k2=4,频谱仪接收到UUT端口X1-1输出的有效正弦波信号,因此x1幅度测量值正常(≈-35 dBm);由于该信号不能通过开关到达示波器的两个端口,因此示波器返回的幅值为零。在第二个断点处,UUT端口X1-4输出方波信号,开关状态被切换到了k1=2和k2=1,因此示波器端口IN1(通道1)接收到有效的信号x2,返回正常的测量值(≈5 V);而频谱仪没有接收到信号,返回一个很低的噪声幅值(假定为-120 dBm)。
表3所示为模拟各种正常和故障状态下TPS执行到两个断点处在调试面板界面上观察到的测试结果数据(粗体表示当前时机下的异常值)。表中数据在标称值附近随机小幅变化是因为在频谱仪和示波器模型的行为函数中增加了一个随机扰动来近似模拟测量误差。
表3 TPS仿真验证实验结果
分析表3中的数据,当故障代码为“0001”(K1固定在CH1)时,在第一个断点处与正常情况所需的状态k1=1相同,因此不会产生影响;在第二个断点处k1的值本应为2但仍然保持为1,导致示波器IN1端口接收到的不是方波信号,而是从UUT端口X1-1输出的正弦波信号,测得其幅值为3.98 mV(假定阻抗为50 Ω条件下-35 dBm的转换值),与正常的5 V有明显差异。
再如当故障代码为“0008”(控制电路故障)时,不能通过程控指令改变射频开关的状态,即始终保持在初始状态k1=1和k2=1,从而导致两个断点处的测量值完全相同。
最后,模拟了适配器中接线错误的情形。使用SCATS的适配器建模工具将内部连线修改为TA1-1连接到J1-4和TA1-2连接到J1-3。在断点1处由于K1的状态为k1=1,故信号x1无法到达频谱仪端口;断点2处示波器IN1实际收到的是信号x1,而不是预期的x2,表3中最末一项测试数据正确地反映了上述结果。
采用类似的方法分析其他状态情况,可见仿真验证的结果与预期均一致,意味着在这种“模型仿真”模式下调试TPS能够感知测试系统设计或状态的变化,是对当前TPS调试验证手段的重要改进[15]。
5.2 实验二
本实验针对的是一个真实的航空直流发电机控制器UUT,并且在一个实物ATE验证平台上对其进行了实际测试。表4中所示为该UUT自动测试所需的仪器资源,基于Python 3.6.5编程语言分别构建了这些仪器资源的原子模型和耦合模型(其中的矩阵开关由四个模块拼接而成),并集成得到了整个测试系统的模型。
表4 仪器资源列表
根据UUT的实际测试需求,使用SCATS软件平台开发了它的TPS,其中包含电压调节测试、过压保护测试和启动维护BIT等7个测试项目,共计301个测试步骤,37个功能和性能指标。
本实验中ATE的控制计算机采用了国产飞腾CPU(FT-2000/4@2.6 GHz)和统信UOS20操作系统。底层仪器驱动程序采用了自研的国产VISA IO库和IVI-C接口规范。基于上述特点,在仿真验证的网络通信接口中(参见表1)将仪器/开关的程控指令内容格式设计为对底层标准化驱动函数接口调用相关的信息,例如{“funcname”:“viScanf”,“params”:{“vi” :1,“viString”:“%[^ ]”,“buf”:“ ”* 256},“ret”:“params/buf”}是一个获取测量值的指令,其中的“vi”为仪器资源的虚拟标识;由仪器模型返回的虚拟测量值保存在“buf”中;“ret”属性为解析返回的测量值提供了路径信息。这种设计的好处是使得仿真模式下驱动程序的实现代码与真实物理测试下的仪器驱动代码具有较高的相似性和对应关系,进一步提高了仿真验证的拟真度。
如图7所示为在“模型仿真”模式下运行TPS产生的部分日志内容,其中记录了各个模型实例的行为动作以及信号在系统中的转接流动等信息。通过将这些信息(包括各个指标的测试结果)按测试步骤逐条与实测情况进行对比,结果表明模型行为与实际系统一致性较高,仿真验证的可信度满足工程应用要求。
图7 部分仿真验证日志信息
此外,由于仿真模式下可以忽略等待物理设备状态或信号稳定的时间,因此能够大幅提升TPS验证的执行效率。本实验在无软件界面参与条件下(仅使用TPS执行器程序)对“模型仿真”模式下的TPS执行时间和实际物理测试时间进行了对比,前者用时约为4.6秒,后者用时为3分41秒,前者仅为后者的2.1%。在UUT测试需求更复杂的情况下(例如有的UUT完整测试时间长达数十分钟),效率提升效果将更加明显。
6 结束语
全要素的自动测试系统仿真验证对于提高系统的研发效率、降低成本具有重要意义。本文系统地研究了自动测试系统的多分辨率模型定义、建模方法、仿真算法和实现方案,通过实验证明了仿真验证的一致性、高效性和实用性,为进一步在未来复杂自动测试系统型号上的推广应用奠定了基础。决定仿真验证应用效果的关键是模型的精确性,高质量模型的构建是一个较为费时的工作。为更好在自动测试行业中实现所研成果的产业化,模型的标准化研究和参考模型库(如仪器模型库)的构建是下一步的主要工作方向。