孔友 刘军
摘要:随着工业IT技术的不断发展和应用过程中,组态软件测试技术逐渐成为工业自动化系统的主要组成应用技术。组态软件测试技术下是面向数据采集与过程控制的软件平台工具,具有丰富的设置项目,灵活的操作方式、强大的功能,目前已广泛应用于电力系统、石油、化工等领域的数据采集与监视控制等多个领域。由于组态软件测试技术应用领域的多样性,给组态软件的性能指标、使用方式以及驱动程序都提出了更高的要求。最新的组态软件安全报告表明,超过90%已发现的安全问题主要在于驱动程序,比存在安全漏洞的组态软件更可怕的是驱动程序因运行状态变化而产生的异常情况,造成数据丢失。在这种情况下,对应用的组态软件测试技术下驱动程序进行异常检测变得越来越重要。
关键词:组态软件测试;电力系统;程序缺陷;检测仿真
1组态软件测试下电力系统程序缺陷检测原理
引入组态软件测试技术下驱动程序时间序列有效分数向量作为检测统计量,利用小波分析统计量的方法克服电力程序缺陷检测过程中存在延时的缺陷,采用李氏指数以及小波变换关系实现在一个检测框架内同时在线监测软件驱动电力程序缺陷以及突变点,使得检测结果更符合缺陷存在的实际情况,具体过程如下所述:
利用时间序列建模算法对组态软件测试技术下驱动程序时间序列进行在线建模,即
其中,o表示驱动程序时间序列模型阶次,et表示拟合残差,遵从高斯分布,即N(μ,σ2)。当驱动程序时间序列x1,x2,…中没有出现缺陷时,构建的模型为g(·),假设在某个监测时段τ内出现缺陷,即τ时段之后的时间序列不再符合模型g(·)。假设仍然利用该模型对时段τ后的数据进行拟合,将会出现拟合残差,可将这种情况视为et,t≥τ遵从高斯分布的方差发生的变化。依据此分析以及式(1),重新给出假设
H0:σ2=σ02,对于全部观测值μ未知;
从上式中可以看出,由于只对高斯分布中的方差σ2感兴趣,统计量Wk在后续进行在线缺陷检测过程中仅是一个参数方差的统计量。
考虑到监驱动程序时间序列数据量较大,需要对其进行在线缺陷检测的要求,利用在线递推小波分解方法对统计量Wk进行在线小波分析,利用下式给出递推小波的母小波函数
其中, 。最后推导出的小波分解式为
其中,Wx,Φ(kT,f)表示kT时段、频率f下的小波系数,T表示驱动程序时间序列采样周期,k表示整数标记采样点,δ1,…,δ5表示小波分量,λ1,…,λ5表示常数。
由式(4)可知,仅需计算出多个小波系数Wx,Φ,就可以采用前5个时段的信号x以及前6个时段的小波系数计算出当前的小波系数,实现组态软件测试技术下驱动程序时间序列小波分解,以满足缺陷在线检测的要求。
综上所述为电力程序缺陷检测原理,根据该原理完成组态软件测试技术下驱动电力程序缺陷的检测。
2组态软件测试技术下电力程序缺陷检测方法
2.1驱动程序时间序列多分量特征提取
利用大数据方法将组态软件测试技术下驱动程序时间序列分解成周期分量、趋势分量、随机误差分量以及突发分量等多个不同分量,对不同的时间序列分量进行特征提取,并对分量特征提取结果进行奇异点检测,具体过程如下所述:
根据组态软件测试技术下驱动程序时间序列周期特点,结合大数据处理方法来确定驱动程序时间序列周期L,利用下式对驱动程序时间序列X{x1,…,xM}进行差分计算获得矩阵A,即
对矩阵A的各行进行线性拟合,(a1,…,am-1)、(b1,…,bm-1)分别表示参数,将矩阵A中的各行带入相应的Y=aN+b中获得矩阵A',利用下式进行表示:
利用最小二乘法计算A与A'各行最小误差,将每次出现最小误差的行数描述为周期L,即
软件驱动程序时间序列周期分量特征的正确提取是进行趋势分量特征提取的前提条件,根据驱动程序周期分量特征提取获得周期L,将驱动程序时间序列X'按照周期L进行划分获得矩阵B,xM表示驱动程序时间序列X'的最终数据,xM之后的数据描述为空值NA。
根据驱动程序时间的实际情况来确定随机误差分量的分布函数,将矩陣B中的各行逐次取出,获得共计N″个时间序列,通过对X进行统计分析,获得驱动程序时间序列X的分布模型,对于全部的软件驱动程序时间序列Ni,依据F(x)分布模型可获得一组新的时间序列N'1,…,N'N,对于本身就有的序列N1,…,NN内元素根据从小到大排序,并将其与序列N'1,…,N'N内元素逐次相减,获得N个随机误差序列,将其标记为Rt(i)。采用Rt(i)可获得驱动程序时间序列Ni的随机误差分布模型,即
通过误差随机分布模型,可获得软件驱动程序时间序列X的随机误差分布区间,为后续判别奇异点是否为缺陷做好准备工作。
2.2基于似然比检验的驱动电力程序缺陷判决
根据驱动程序时间序列奇异点检测结果为基础,量化待检测软件驱动程序时间序列点的异常程序,结合驱动程序的故障模型,利用似然比检验对该软件驱动程序当前时刻是否异常做出判定。具体过程如下所述:
将待检测驱动程序时间序列点与奇异点在测量时间序列上的差值进行加权求和,作为对组态软件测试技术下η当前时刻异常程度的度量,通过在正常工作时驱动程序时间序列之间的近似程序计算加权系数,利用下式计算
9其中,An,Δt表示待检测时间序列点v(t)n与奇异点 之间的测量差的加权系数,An,m表示待检测程序序列点v(t)n与奇异点v(t)m之间的测量值之差的加权系数。通过对组态软件测试技术下测量数据的平稳性假设,利用前一时刻的驱动程序历史测量数据采用Gauss函数计算上式给出的加权系数将以上两式带入式(9)中,即可计算获得待检测序列点vn(t)的异常程序值。
对于待检测驱动程序时间序列点vn(t),假设H0表示软件η在t时段正常工作,H1表示组态软件测试技术下η在t时段为缺陷,程序节点的测量值sn(t)为实际值与测量偏差的线性叠加,采用Δs描述故障驱动程序的测量偏差,则在H1下,程序节点vn(t)的测量值满足下式
利用似然比检验的方法对驱动程序节点进行判决
其中, 用于描述节点异常程度值xn(t)相应的似然比,γ(λ',t)表示似然比对应的判决门限,具体驱动电力程序缺陷检测步骤以及似然比和判决门限通过以下过程计算:
计算在H0假设下驱动程序节点异常程度值xn(t)的分布,假定在软件驱动程序正常工作时,其相应的测量数据遵从Gauss分布。由于异常程序值为不同时间序列点测量值的线性组合,在H0假设下xn(t)遵从Gauss分布
式中,期望μn(t)与σn(t)方差可以结合软件驱动程序历史时间序列,利用极大似然无偏估计器获得
在H1假设下,故障软件驱动程序的测量值是实际值与测量偏差的叠加,故障程序的测量偏差Δs遵从均值为μe,方差为σe的Gauss分布,此分布与方差由驱动程序的实际运行情况决定,其中Δs的分布可描述为
结合式(15)和式(16)以及式(17)可计算出软件驱动时间序列异常程序值xn(t)的似然比
假设软件驱动程序故障达到时间遵从负指数分布,则依据软件驱动程序单位时间内平均故障次数λ',获得程序在t时段出現故障的概率 。随着软件驱动程序工作时间的增加,其出现故障的概率逐渐增大,对电力程序缺陷的判决门限将随着软件驱动程序的使用时间而逐步调整。给定驱动电力程序缺陷检测结果的置信区间为α',选择的判决门限为γ(λ',t),应当遵从以下约束条件
根据上式,结合组态软件测试技术下驱动程序当前时刻的缺陷检测结果为
根据以上步骤完成电力程序程序的缺陷检测。
结论
量化待检测软件驱动程序时间序列点的异常程序,结合驱动程序的故障模型,利用似然比检验对该软件驱动程序当前时刻是否异常做出判定。弥补了传统阈值判断方法的不足,提高了检测成功率、降低了误检率。进一步的改进之处是在于软件驱动程序故障模型的完善以及方法对缺陷判决门限的普适性。
参考文献
[1]张晓风,张德平.基于不平衡数据集的软件缺陷预测[J].计算机应用研究,2017,34(7):2027-2031.
[2]陈翔,等.静态软件缺陷预测方法研究[J].软件学报,2016,27(1):1-25.
(作者单位:国网安徽省电力有限公司淮南供电公司)