一种批处理导弹数据包络的测试方法
张钦顾仰 余海鸣 游红 孟逸东 郭飞
上海航天电子技术研究所 上海 201109
中图分类号:V19 文献标识码:A 文章编号
一、概述
近年来我国周边地缘政治日益复杂,国际形势日趋紧张。在此大环境下,我国武器装备批产数量也随之逐年上升,原本通过人力分析和处理测算武器装备测试数据的简单方式无法应对现在几何级上升的试验报告测试数据,开发一种能对庞大测试数据进行批处理的方法迫在眉睫。
目前我接触到的数据分析主要包括对每一发导弹的飞行数据的多项指标进行数据判读,并最终汇总在一个 excel 中,然后通过 excel 绘制出这一批次所有产品的数据包络图,看看数据分布情况,以及数据最大值和最小值时候超出要求的极限值。
这意味着在过去,一个批次的产品,我可能只需要打开十个excel 文件,人工判断产品是否合格,然后摘取出其中需要对比分析的数据,然后将数据处理汇总到一个excel 中,最后绘制出数据包络图输出,但现在,一个批次的产品动辄四五百,甚至上千的大批次也屡见不鲜,光靠人工处理费时又费力,显然是不现实的。所以我设计了一套自动测试设备,并通过 C#语言编写了一款能同时对多个excel 进行数据处理并绘图的软件。
二、测试流程
2.1 流程介绍
测试流程主要分为四个环节,包括数据采集,数据分析,数据整合和数据输出。原测试方法中除了数据采集外,后三个部分都由人工完成,采用此方法后可通过软件一键完成。
数据采集模块:通过各类传感器采集产品数据。
数据分析模块:写入产品合格与否的数据判读依据,将数据不合格的产品编号列出,将合格的产品数据保存到工作目录。
数据整合模块:将每个产品的测试数据整合汇总到一个excel 总表中,通过所有产品的数据分布图分析整个批次的产品综合数据。
数据输出模块:将本批次所有产品的测试数据绘制数据包络图并输出。
图1 处理流程

2.2 数据采集模块
数据采集模块主要沿用之前的采集模块。因为之前使用的软件是用CVI语言编写的,而本测试方法是使用C#编写,本测试方法在原来的程序基础上做了相应的适应性移植更改,嵌入C#主程序中。
2.3 数据分析模块
由于excel表格内能比较直接的填入筛选条件,筛选出不合格数据。数据分析模块主要是通关软件来操作excel,自动填入各项数据指标的合格判读条件。
首先是通过C#打开excel程序,进行初始化,以第一批次500套武器装备为例。
Excel.Application myApp = new Excel.Application(); //创建excel应用程序
string strdata = @"D:\VS\data\P01_001.xlsx";//定义excel文件地址
string name = P01_001;//记录产品号
int number = 500;//批次产品数量
Excel.Workbook wbdata = myApp.Workbooks.Open(strdata);//打开目录下excel文件
Excel.Worksheet wsdata = wbdata.Worksheets[1];//打开sheet1
再通过excel内置的IF函数判读数据的合法性。Excel中IF语句的逻辑是:
=IF(logical_test,value_if_true,value_if_false)
将各项数据的判读条件填入logical_test的位置,逻辑为真返回原值,逻辑为假返回null,然后将逻辑为假的产品号记录下来。就可以将不合格产品标记并移除返修,留下合格产品数据等待整合。
最后再通过for循环,循环500次。即可将本批次500套武器装备的测试数据进行分析判读。
2.4 数据整合模块
数据整合模块主要是将500个excel文件依次打开,复制摘取出其中关键数据,汇总到一张excel总表中。
通过C#来新建一个汇总表
Excel.Workbook wbnew = myApp.Workbooks.Add();//新增一个excel
通过以下语句实现单元格的复制和黏贴
Excel.Range rang = (Excel.Range)wsdata.Cells[X1, Y1];
wbnewcom.Cells[X2,Y2] = rang;
最后再通过for循环,循环500次。即可将本批次500套武器装备的测试数据进行数据整合。
2.5 数据输出模块
数据输出模块只要是将汇总表中的数据绘制成包络图。
Excel.Chart wccom;
wccom = wbcom.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
wbcom.ActiveChart.ChartType = Excel.XlChartType.xlXYScatter;//设置图形类型
wbcom.ActiveChart.SetSourceData(wscom.get_Range("A1", "D" + number.ToString()), Excel.XlRowCol.xlColumns);//设置取值范围
wbcom.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject, wscom.Name);//图标指定位置
wbcom.ActiveChart.Legend.Position = Excel.XlLegendPosition.xlLegendPositionTop;//图例指定位置
wbResizeRange = (Excel.Range)wscom.Rows.get_Item(10, Missing.Value);
wscom.Shapes.Item(chart1).Top = (float)(double)wbResizeRange.Top;//调图表的位置上边距
wbResizeRange = (Excel.Range)wscom.Columns.get_Item(6, Missing.Value);
wscom.Shapes.Item("chart1").Left = (float)(double)wbResizeRange.Left;//调图表的位置左边距
wscom.Shapes.Item(chart1).Width = 400;//图标宽度
wscom.Shapes.Item(chart1).Height = 250;//图标宽度
wccom.PlotArea.Width = 1400; //图标大小和位置
wccom.PlotArea.Height = 600;
wccom.PlotArea.Top = 60;
wccom.PlotArea.Left = 15;
//坐标轴设定
Excel.Axis xAxis = (Excel.Axis)wbcom.ActiveChart.Axes(Excel.XlAxisType.xlCategory,Excel.XlAxisGroup.xlPrimary);
xAxis.TickLabelPosition = Excel.XlTickLabelPosition.xlTickLabelPositionLow;
xAxis.MinimumScale = 0;
xAxis.MaximumScale = number+100;
//xAxis.HasTitle = true;
//xAxis.AxisTitle.Text = "X";
xAxis.TickLabels.Font.Name = "宋体";
xAxis.TickLabels.Font.Size = 9;
wbcom.ActiveChart.ChartType = Excel.XlChartType.xlXYScatter;//设置图形类型
Excel.Chart wccomsave = wbcom.ActiveChart;
wccomsave.Export(@"D:\VS\data\" + number + ".jpeg", "jpeg", false);//输出
三、结束语
最近,电子行业的快速发展和电子芯片性能的提升为遥测系统的小型化一体化提供了可能。通过将测试设备集成进同一个设备,通过软件实现一键检查,大大减少了安装步骤和测试步序,此外还可以做到数据内部传输,保证测试数据的安全和隐匿。
本文通过一种软件级联的方式,将原先的四道工序缩减为一道工序,为武器装备测试数据分析,生成数据包络图提供了一种更加便捷的方式。
参考文献
[1]林涓,贺峥光.载人火箭的遥测系统[J].导弹与航天运载技术,2006(04):8-13.
[2]郭强.液晶智能显示终端[J].电子技术应用,1994(07):26-28.
[3]杨光.小型一体化火灾报警器[J].电工技术,1994(11):40-42.
[4]杨润生.汽车发动机电子控制系统故障自检方法[J].汽车电器,1997(03):24-25.
[5]沈义民.无线遥测的简单实现[J].电测与仪表,2000(06):47-49.
[6]张华栋,吴国辉,代冀阳.遥测调制体制研究[J].计算机工程与设计,2013(02):339-343.