1 引言
2 铣削力试验数据处理原理与步骤
- 回归方程的建立
- 由金属切削原理可知,铣削力与铣削用量的经验公式为
式中:Fe——铣削力在横向进给方向上的分力(N)Fe/z=CFeaek1 d0k2 fzk3 apk4 (1) - z——铣刀齿数
- CFe——Fe铣削分力公式的系数
- ae——铣削宽度(mm)
- d0——铣刀直径(mm)
- fz——每齿进给量(mm/z)
- ap——铣削深度(mm)
- k1、k2、k3、k4——待定参数
- 将式(1)两边取对数,可得
- ln(Fe/z)=lnCFe+k1lnae+k2lnd0+k3lnfz+k4lnap
- 设:y=ln(Fe/z),k=lnCFe,z1=lnae,z2=lnd0,z3=lnfz,z4=lnap。可得方程式
y=k+k1z1+k2z2+k3z3+k4z4 - 此方程为y对z1、z2、z3、z4的线性方程,可利用多元线性回归分析法进行处理。若进行N次试验,则第i次试验的数据为yi、z1i、z2i、z3i、z4i( i=1,2,…,N)。
- 设k^、k^1、k^2、k^3、k^ 4分别为参数k、k1、k2、k3、k4的最小二乘估计,则上式的回归方程为
y^=k^+k^1 z1+k^2z2+k^3z3+k^4z4 (2) - 各因素水平确定与编码
- 若上述四个因素的变化范围分别为aemin~aemax、d0min~d0max、fzmax~fzmin、apmin~apmax,通过线性变换,可用不同的无量纲编码代替因素的不同水平,以简化计算。设因素的上下水平为zjmax、zjmin;零水平为zj0=(zjmax+zjmin)/2;变化区间为j=(zjmax-zjmin)/2,则相应的无量纲编码为xj=(zj-zj0)/j。这样就建立了因素zj与编码值xj的一一对应关系,因此,y对z1、z2、z3、z4的回归问题即转化为y对x1、x2、x3、x4的回归问题。式(2)经编码整理后为
y^=b0+b1 x1+b2 x2+b3 x3+b4 x4 (3) - 回归系数的计算
- 采用最小二乘法确定式(3)中的系数b0、b1、b2、b3、b4。首先,使公式Q=∑a(ya-y^a)2=∑a(ya-b0-b1xa1-b2xa2-b3xa3-b4xa4)2为最小,然后对b0、b1、b2、b3、b4分别求一阶偏导数并令其等于零,可得一线性方程组,解之即可求得回归系数。为减少试验次数,选用L8(27)正交表。根据正交性原理,上述线性方程的系数矩阵中除对角线元素外,其它元素均应为零。故回归系数为
b0=∑aya/N=B0/N 由此可对回归方程式(3)求解。然后将xj值代入式(3)并取反对数,即可求得所需数学模型。
bj=∑axajya/∑aajx2=Bj/dj- 回归方程的检验
- 由于线性回归模型采用逼近算法得出,存在逼近误差,因此在求出线性回归方程后,还需对其进行统计检验。本软件可对回归方程进行显著性检验和失拟检验。
- 由金属切削原理可知,铣削力与铣削用量的经验公式为
3 软件的设计
- 对象模型图
- 铣削力试验数据处理软件的对象模型如图1所示。
- 软件功能设计及实现
- 铣削力试验数据处理软件系统主要由以下具有特定功能的子系统构成:
- 文件操作子系统
- 文件操作子系统具有新建、打开、保存、删除文件四项功能。由于软件系统需要保存的数据较多,为便于管理,借鉴了VC++中建立工程文件的方式,为每次新建的试验项目均建立一个项目文件夹,所有与该次试验相关的数据均按类存放于该文件夹中。当需要打开以前建立的试验项目时,只需在打开的对话框中点击该试验项目文件夹下与其同名的文件即可,该文件是一个虚文件,只起提供数据保存路径的作用,实际数据均保存于项目文件夹中的data文件夹下。data 文件夹中存储的文件内容包括试验材料的名称、数量及处理顺序编号;各种材料对应的经验公式中的系数和指数;各因素水平值和各种刀具齿数;每种材料在处理过程中需要保存的数据等。新建、打开和保存文件这三项功能分别由函数onNew()、onOpen()和onSave()来实现。
- 试验条件子系统
- 试验条件子系统的主要功能有:①输入试件名称及各因素的上下水平,检查合法后自动产生零水平并予以保存;②输入、保存试验所用3 把铣刀对应的铣刀齿数;③随时添加、删除和保存参与试验的材料名称。
- 上述功能由CTestCondition 类实现。为在图形控件中输入各因素水平值,从CStatic 类继承出一个子类CtestRequire。通过单击鼠标左键,在该继承类的消息响应函数onLButtonDown()中加入自编的网格控件代码,可在输入和编辑记录位置动态地产生编辑框,待用户输入完成后,自动销毁编辑框并保存数据。具体实现方法是通过读取鼠标在图形控件中单击位置的坐标,用“if…else”语句实现不同的坐标对应不同的条件代码,即可将在不同位置输入的数据传送到对应的数据存储单元中,同时自编的网格控件可保证软件的稳定性和安全性。
- 系统采用左右互移方式添加或删除试件材料名称。用户单击“移入> >”键,对应的消息响应函数代码即可获取备选材料组合框中的字符串,并将其添加到试件材料列表框。当单击“移出< <”键时,则可从试件材料列表框中删除所选项目。整个操作由单击“移入> >”、“移出< <”键时激发的BNCLICKED消息完成。传送数据由结构体MaterialProperty 的字符串列表成员CStringListmaterial 实现。
- 试验设计子系统
- 试验设计子系统构成该软件的主窗口界面,分布着所有功能按钮、试件材料组合框和铣削分力组合框,并使各子系统之间协同工作。同时它也是显示试验计划表、调入采集的铣削力数据和显示回归方程系数的窗口载体。子系统功能由主窗口类CMillingDlg 实现。
- 每个按钮对应一个消息响应函数,包括新建onNew()、打开onOpen()、保存onSave()、打印onPrint()、退出onQuit()、调入数据onCallData()、数据处理onDataHandle()、经验公式onExperienceFormula()、显著性检验onSignificanceLevel()和失拟检验onMatchCapability()。
- 主窗口类中的数据显示由试验设计类(CTestDesign)承担,它继承自静态类CStatic,具有如下功能:①将试验条件类(CTestCondition)中输入的试件名称及各因素水平值传递到该类并显示;②选择试验材料,调入对应的试验数据并显示;③在手工输入数据模式下可方便地编辑力值数据,进行输入数据的合法性检查;④将数据处理得到的回归方程系数传递到该类并显示。
- 由于在CTestDesign 中需引用CMillingDlg 的成员数组level[12],而CmillingDlg 又是CTestDesign 的父类,因此需要在该类中获得父类指针,其代码为(CMillingDlg*)pMillingDlg=(CMillingDlg*)(this-> GetParent()),其中pMillingDlg 是所要获得的父类指针,因此用代码pMillingDlg->level[i]即可方便地访问其中任意一个元素,这是类间数据传递的一种有效方法。
- 本软件实现了输入试件名称等相关信息的共享。当在试验条件对话框中输入完各因素水平值并退出后,主窗口中原来显示的编码值(1,-1,0)即被实际值所替代和显示,因此便于在试验现场进行数据处理。
- 数据处理子系统
- 数据处理子系统采用正交回归算法处理铣削力试验数据,具有如下功能:①从文件调入(或手工输入)试验数据并进行合法性检验;②用回归分析法对铣削力数据进行处理,求得回归方程的系数;③对回归方程进行显著性检验;④对回归方程进行失拟检验;⑤求解各种试验材料的经验公式。
- 定义了材料属性类CMaterialProperty,将每种试验材料实例化为该类的一个对象,并将调入的试验数据经处理后得到的中间结果和最终结果(包括回归方程的系数bj、经验公式指数ki、显著性水平、总偏差平方和、回归偏差平方和、剩余偏差平方和、各因素的F值、回归方程的F值、失拟检验用的t值等)寄存在该对象中,待系统需要时调用。
- 采用MFC提供的串行化(Serialize)存储方式将数据从内存变量保存到硬盘上。在类中重载自己的Serialize()函数,当需要存储或读取数据时,可直接在程序中调用Serialize()函数;数据处理和检验由函数onDataHandle()完成;由回归系数求解经验公式的指数是将经验公式变换为线性回归方程的逆过程,由函数onExperienceFormula()实现;经验公式的生成和显示由CExperienceExpress 类实现;显著性检验和失拟检验结果的产生和显示由CSignificanceLevel类和CMatchCapability 类实现,为适应材料数量和种类的变化,采用了CTableCtrl 类,可点击标签进行查看。
图2 铣削力数据采集分析系统框图表1 因素水平表 因素水平 上水平 下水平 零水平 ae 70.00 50.00 59.16 d0 125 80 100 fz 0.032 0.02 0.025 ap 3 1 1.732 - 打印铣削力试验报告子系统
- 打印铣削力试验报告子系统由继承自CScrollView类的CReportView类实现。利用CScrollView类的滚屏功能和打印程序,可实现编辑和显示切换时无闪烁的视觉效果和“所见即所得”的铣削力试验报告打印方式。具体实现方法是在CReportView 类的onDraw()函数中添加代码,在其设备环境上画出整个报告,在onLButtonDown()函数中加入网格控件代码,使用户可在相应位置单击、输入和编辑打印铣削力试验报告对话框中所需的数据。打印程序可自行调用onDraw()函数代码,不同的是在打印机中输出,而不是在屏幕上显示。试验报告由多页组成,每页均设有单独的起始点坐标变量,可以根据需要设置每页打印内容及在该页中的排版位置。
- 试验条件子系统的主要功能有:①输入试件名称及各因素的上下水平,检查合法后自动产生零水平并予以保存;②输入、保存试验所用3 把铣刀对应的铣刀齿数;③随时添加、删除和保存参与试验的材料名称。
- 铣削力试验数据处理软件系统主要由以下具有特定功能的子系统构成:
图1 对象模型图




