赖禹能,周平,吴静奇
博世华域转向系统有限公司,上海 201821)
近几年随着汽车项目与产品的增加,转向系统产品开发过程中的试验报告也成倍增加。由于转向系统各个项目规范要求差异较大,撰写报告时需要根据不同规范统计数据并出具不同的试验报告,人工方式整理数据以及撰写报告消耗了大量时间,数据处理与报告整理错误率较高。转向系统试验报告主要涉及EPSc管柱、机械管柱以及中间轴产品,所涉及的试验报告按照试验阶段涉及转向系统送样、DV、PV试验以及型式试验。将工程师从众多繁琐的数据整理与报告撰写事物中解脱出来,转向系统试验报告自动化具有重大实用价值。
转向系统报告自动化软件能够在主流配置的计算机上运行,要求已安装6.5版本以上MATLAB软件,或者已安装7.13版本的程序运行环境MATLAB Compiler Runner。使用MATLAB Compiler Runner作为运行环境时,该软件根据计算机操作系统不同分为32位与64位两种,应根据实际情况下载安装并使用对应版本的转向系统报告自动化软件。采用MATLAB的调用Word Com组件能力[1-4],软件自动读取处理数据后,输出到Word文档中,自动完成文字键入、数据表格填充以及数据图片粘贴。
转向系统报告自动化软件是Windows XP/Vista/Win7环境下的软件程序,用以解码、处理和评估实验室测试系统下载的测试数据文件(*.wwt),并自动生成基于不同产品规范的试验报告。试验数据范围覆盖功能试验、强度试验、疲劳试验。用户可以使用该软件设计不同产品规范的软件计算策略,用于自动判断测试数据是否满足规范要求;加载测试数据路径、测试规范、报告信息库后,该软件可以自动加载处理数据,一键生成用户自定义格式的Word试验报告,判断数据是否合格,批量显示数据曲线。可在人机交互界面中自由设置、保存以及加载不同产品规范,根据自定义的产品规范生成对应的数据表格;报告形式可选择数据汇总报告或者标准报告;不同样件的数据曲线可选择叠加显示或者分开显示[5]。图1为MATLAB GUI 自动生成报告过程。
图1 MATLAB GUI 自动生成报告过程
数据处理步骤包括:选择1级文件夹,读取该文件夹下包含的所有2级子文件夹,然后分别读取各子文件夹下的所有数据。关键的几个程序命令如下:
findpath = uigetdir(); %打开文件夹选择对话框
files = dir(findpath); %获得指定文件夹下的所有子文件夹和文件
if files(i).isdir==1%判断是否有文件夹
samplelen=samplelen+1;
end%统计文件夹数量
name100=strfind(files(i,1).name,′100%′);%统计包含100%的文件夹
rangeinfor{1}=get(handles.edit51,′String′); %获取面板中最大助力设置值
filepath=[findpath,′′,Sample(1:(namecount0(i)-1))];%文件夹路径
files = crawler(filepath, [′.*orsion.*tiffn.*.wwt′], 1); %读取符合关键字要求的文件
FILE=fopen(filename,′r′,′l′,′latin1′);%打开wwt格式文件
HEADER.COMMENT1 = (fread(FILE,length_comment,′*char′))′;%读取wwt格式文件数据
数据读取出来后,需要根据试验规范计算出统计值,并将所有数据点绘制成曲线图。
cmpmax=Pfinder(Angle_M,P_end,0.01); % 读取某个数据点的数据排列序号
p1 = figure(Pcn); %打开显示图框
plot(Lenkwinkel, Dss,′color′,c{linenum},′LineWidth′,linesize)%显示数据点曲线图
MATLAB首先需要判断Word服务器是否已经打开,如果打开了服务器,再判断是否有空文档已经打开。通常服务器打开,一般有空文档打开,若没有打开,MATLAB将会新建一个空文档用于输出报告。参考以下命令:
Try
%若Word服务器打开,返回其句柄Word
Word = actxGetRunningServer(′Word.Application′);
Catch %否则,创建一个Microsoft Word服务器,返回句柄Word
Word =actxserver(′Word.Application′);
end;
Word.Visible = 1; %若测试文件存在,打开该测试文件,否则,新建一个文件,并保存,文件名为测试.doc
if exist(filespec_user,′file′);
Document = Word.Documents.Open(filespec_user);
else
Document = Word.Documents.Add;
Document.SaveAs2(filespec_user);%用于word文档的输出
end
空文档新建好后,需要设定页面大小,以下命令用于设定页面大小:
Document.PageSetup.TopMargin = -133; % 设置上边缘位置
Document.PageSetup.BottomMargin = 40.7;
Document.PageSetup.LeftMargin = 63.4;
Document.PageSetup.RightMargin = 28.3;
标准报告需要生成首页信息栏,如图2所示,包括了试验名称、项目名称、零件号码、产品状态、客户信息、工程师名、测试规范、接受标准、样件号码、签名栏、试验时间与试验结果等信息,这些信息中一部分来自预先保存好的Project Information的Excel表格中,其他信息直接来自于试验数据的判断,比如试验时间、样件号码与试验结果。设置表格以及填充基本信息如下:
Specpath=[findpath,′Project
information.xlsx′];%路径名称
[~, ~, Spec] = xlsread(Specpath,
′Specification′); %读取预先保存好的Excel表格中的规范
DTI.Borders.OutsideLineStyle = ′wdLineStyleSingle′; %设置外边框的线型
DTI.Borders.OutsideLineWidth = ′wdLineWidth075pt′; %设置线宽
DTI.Borders.InsideLineStyle = ′wdLineStyleSingle′; %设置内边框的线型
DTI.Rows.Alignment = ′wdAlignRowLeft′; % 设置行对齐方式
DTI.Columns.Item(1).Width = 140;
DTI.Columns.Item(2).Width = 350;
%设置单列宽度
DTI.Cell(2,2).Range.Text =cell2mat(Information(9,2)); %表格中填充基本信息
handle = Document.Shapes.AddPicture(which(′sign.tif′), [], [], 10, 0, 455, 92); %添加签字栏图片
Selection.Start = Content.end; %定义开始的位置
标准报告的页眉中中需要添加公司名称、标识与报告号,设置如下:
Document.ActiveWindow.ActivePane.View.SeekView=′wdSeek
CurrentPageHeader′; % 光标进入页眉区域准备编辑
Selection.Range.Paragraphs.Alignment=′wdAlignParagraphLeft′; %光标往左靠齐
try handle=Selection.InlineShapes.AddPicture(which(′BoschHUAYU.tif′)); %添加公司名称图片
handle=Selection.InlineShapes.AddPicture(which(′Bosch.tif′)); %添加公司标识图片
end
Selection.Text=′TRP-VR-S001-V1.1′; %添加文字描述
Selection.Font.Size=12; %设置文字大小
Document.ActiveWindow.ActivePane.View.SeekView=′wdSeek
CurrentPageFooter′; % 光标进入页脚设置区域
Document.ActiveWindow.ActivePane.View.SeekView=′wdSeek
MainDocument′; % 光标退出页脚区域,进入主文档
图2 Word标准报告首页
生成数据表格需要包括样件号、接受标准、数据值,并且具有判断数据超差提示功能。生成数据表格主要用到的命令如下:
Tables= Document.Tables.Add(Selection.Range,Sn1+2,NumC);%生成需要的表格
DTI.Cell(i,j).Range.Text=word_data{i,j,10};%填充数据值
DTI.Cell(i,j).Range.Font.ColorIndex =6; %设置数据字体颜色
DTI.Cell(i,j).Shading.BackgroundPatternColorindex=7;%设置表格背景颜色
示例见图3,数据首列根据接受标准判断,数据超差则采用黄色背景红色字体提示。
图3 报告数据表格
数据图片批量生成后,将图片粘贴至Word文档中,命令如下:
hgexport(zfd(i,j), ′-clipboard′); %复制图片句柄
Selection.Paste;%粘贴图片
Selection.EndKey;%光标移至尾部
close(figure(i));%粘贴完后关闭图片
首先启动MATLAB GUI转向系统报告自动化软件.exe,见图4,生成正式报告需要在文本框中输入报告基本信息,生成数据汇总报告可以直接选择EPSc&i-shaft、机械管柱、疲劳、强度按键。保存报告基本信息点击保存按键选择数据文件保存路径。如果之前已经定义好了报告基本信息,可以点击加载按键选择数据文件加载路径。
在程序主界面点击EPSc&i-shaft按键,进入EPSc&i-shaft报告自动化界面,如图5所示。黄色单选按钮ON:sub;Off:QS,软件默认生成QS数据汇总报告,点击则生成Sub标准报告。规范设置内容包括了EPSc与I-shaft,分别涉及基本功能数据的接受标准与取值范围。软件默认设置了一些基本规范,可以快速用于产品数据的判断汇总。使用者可以根据项目规范自定义接受标准,点击规范保存按键保存;点击规范加载按键加载已经保存过的规范。规范设置空格可以识别数字,以及字母NA(不统计该项)与FYI(该项仅供参考)。生成EPSc报告,点击选择EPSc单选按键(软件默认);生成I-shaft报告,点击选择I-shaft单选按键。
图4 转向系统报告自动化软件界面
图5 EPSc&i-shaft报告自动化界面
I-shaft TTR下Range文本框中可以自定义扭矩读取角度范围;I-shaft 扭转间隙下filter文本框中可以自定义扭转间隙wwt数据的读取关键词,默认读取lash。以下以生成I-shaft QS数据汇总报告为例。点击选择I-shaft单选按键,生成I-shaft报告。点击分开显示单选按键,可以设置数据曲线单独显示,默认设置数据曲线叠加显示。点击数据加载按键选择数据加载路径,选择文件夹i-shaft test,其中包括了6个子文件夹,子文件夹通过有无50%与100%关键词命名可以识别不同疲劳阶段复测的功能数据,即0%、50%与100%三个阶段。每个子文件夹下保存了wwt格式的中间轴功能数据。点击开始按键,开始生成QS数据汇总报告,分别包括了0%与100%的功能数据表格。
点击转向系统报告自动化软件界面的机械管柱按键,打开机械管柱报告自动化界面,如图6所示;点击疲劳按键,打开疲劳报告自动化界面,如图7所示;点击强度按键,打开强度报告自动化界面,如图8所示。
图6 机械管柱报告自动化界面
图7 疲劳报告自动化界面
本文作者采用MATLAB GUI开发的转向系统报告自动化软件,解决了根据不同试验规范设置数据读取要求、批量处理与判断试验数据是否满足产品规范以及自动生成各种类型报告的问题,大大提高了试验报告出具效率以及数据处理准确性。