随着电子技术的迅速发展,电子设备的性能得到了很大的提高。模拟电路是电子设备中最易发生故障的薄弱环节,所以对其进行故障诊断具有重要意义。模拟电路故障诊断中最基本的是故障样本数据的获取。最常用的是利用Matlab和PSpice联合仿真提取故障样本数据。PSpi ce是一款电路仿真软件,可以得到精确的仿真结果;Matlab由主开发环境、工具箱、simulink仿真环境等内容组成,具有强大的数据处理功能。将PSpice和Matlab结合,利用各自优势完成模拟电路故障样本的获取,为故障特征提取做准备。
PSpice软件运行的数据结果以。out或。txt文本形式输出,包括输入文件,元件模型参数等内容。吴昊用的方法是先用Str2num函数去掉。out文件中不相干内容,再通过textread函数读取所需内容。满高华先用任选项设置(options)来简化。out文件内容,再用feof等函数读取有价值数据。杨博文先将。txt文件中的第一行字段名删除并保存为。dat格式,再用importdat函数提取有用数据。
上述方法都需要等PSpice仿真文件形成以后再进行数据操作,且后续操作的前提是电路文件不变。如若用故障字典法、神经网络或遗传算法等方法来进行模拟电路故障诊断,需要一次次的手动注入故障再进行仿真获取故障样本数据。尤其是利用遗传算法时需要成千上万次的样本提取,会消耗大量时间,所以故障注入及故障样本数据获取的自动化显得尤为重要。文中采用基于SLPS的模拟电路故障样本获取技术,实现了故障注入,样本提取的自动化。
1 基于SLPS的模拟电路故障样本获取流程
1.1 SLPS功能简介
SLPS是Cadence Design Systems公司针对PSpice模拟仿真器与Mathworks公司的Matlab建模工具推出的接口软件。该接口可用于电路系统的仿真。SLPS主要是链接PSpice至Matlab中的simulink仿真器。对于完整的机电系统的电子仿真,用户可通过一个原型来实现一个系统设计。
1.2 故障样本获取技术流程
故障样本获取技术流程图如图1所示。
图1 故障样本获取技术流程图
1)在PSpiee中建立正常电路
在PSpice内部绘制电路图,设置参数选项。并运行一次仿真,产生。cir文件。
2)建立simulink子系统,加入SLPS模块
在Matlab中新建model文档,打开slpslib,加入SLPS模块,链接其输入输出,运行产生。mdl文件。并产生相应的SLPS_*.cir、SLPS_ *.net文件。在Matlab的Command Window窗口中输入open_system(*)即可打开系统查看,并手动修改设置参数。simulink中simulation-confignration parameters选项可按电路设置slover、max step size,仿真时间等参数,确定仿真时间内的采样点数。数据结果输出的方式可在simulink下sink中选择,选择simout将仿真数据输出到workspace工作区浏览器进行处理。
3)建立电路故障表
按照电路元件编号有序列出所有可能存在的故障,建立电路故障表。
4)运行程序自动读取故障表获取故障样本数据编写。m文件,运行程序自动读取故障表,调用子系统生成故障电路样本数据。
2 程序设计实现流程
上述流程中1)~3),是自动获取技术实现前的准备工作,而4)是自动获取技术的关键步骤。具体的程序设计实现流程如图2所示。
图2 程序设计流程图
1)读取故障表并进行故障注入 读取故障表,按照故障表逐个设置故障。研究发现。cir文件中又调用了。net文件,实验证明,直接修改。net文件内容即可修改元器件名称及参数形成故障电路。编写。m文件,用fopen语句打开。net文档并修改其元件参数,形成故障电路。
2)在Matlab中调用系统并运行 用load_system命令重新载入修改参数后的系统,sim命令运行系统。
3)输出故障样本数据 将输出的故障样本数据存储在一个矩阵中,每一列为一个故障样本,行数由周期内采样点数和采样时间决定。矩阵列数由故障表内故障个数决定,为故障样本个数。
4)恢复正常电路 将故障表中的故障作为变量,调用子程序,将故障电路参数修改回正常电路参数。为下次的故障设置做好准备。
3 应用实例分析
文中采用实例验证上述方法的可行性及样本数据的精准性。实例采取元件级仿真电路,图3电路为低通滤波电路。此电路是Intemation al Test Conference(ITC'97)中发布的一个模拟电路基准测试电路。
图3 低通滤波电路
在PSpice中画好此电路图,并进行瞬态仿真。建立testmodel系统,加入SLPS模块,双击SLPS模块,打开SLPSsetting,将sine wave代替PSpice中原本的输入,选择simout方式输出到Matlab中。Testmodel系统如图4所示。
图4 Testmodel系统
设置输入VAMPL为1 V,FREQ为1 k的信号源。maxstep size为1 μs,仿真时间设为2 ms,即仿真两个周期。系统建立完成后根据电路图建立故障表。文中以硬故障为例,每个元件有短路、开路、正常3种状态,现考虑R1、R2、R3、C4 4个元件,一共是34=81种状态,其中80种故障,一种正常状态。在PSpice中不得出现节点悬空,否则无法通过编译,所以故障建模时开路状态选用99 999kΩ的电阻表示,短路则用0.0 05 5μΩ的电阻表示。打开Matlab运行程序,每个状态能在workspace中得到2002x1的样本数据矩阵,即单个故障样本。故障表为81种状态,则最后得到2002x81的矩阵,即电路样本数据集。
画图对比验证样本数据获取的准确性。举例设置故障电路:R1开路,R2开路,R3短路,C4正常,将此故障电路在PSpice中画出,同样设置最大步长为1μs,仿真时长为2 ms,并进行瞬态仿真得出图5.在matlab中运行系统,得到的样本数据用plot(tout,testvout)命令画出波形图如图6所示。由对比图可见,文中采用的方法可以获得正确的样本数据。且程序运行结果表明本文采用的方法获得的数据精准度高,且程序运行一次完成81种故障样本数据的采集。从修改电路到完成仿真,获取故障样本仅需不到30s的时间。
图5 PSpice中故障电路波形图
图6 自动获取技术波形图
4 结论
经实例验证,文中采用的方法操作简便,收集到的样本数据精准,自动化程度高。此方法大大提高了模拟电路故障样本获取的速度,为建立故障字典及模拟电路故障诊断提供了极大的方便。
全部0条评论
快来发表一下你的评论吧 !