平面二包环面蜗杆接触线分析设计教材

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013届机械设计制造及其自动化毕业设计(论文)
目录
摘要 (1)
关键词 (1)
1 引言 (1)
1.1平面二包环面蜗杆的发展 (1)
1.2平面二包环面蜗杆的现状 (2)
2 平面二包环面蜗杆啮合分析 (3)
2.1平面二包环面蜗杆的形成 (3)
2.2坐标系的建立 (3)
2.3平面包络环面蜗杆传动分析 (6)
3 基于MATLAB蜗杆三维离散接触线分析 (7)
3.1 MATLAB简介 (7)
3.2母平面上的接触线 (8)
3.3蜗杆齿面上的接触线 (9)
4 基于Visual C++平面二包环面蜗杆接触线分析系统软件 (12)
4.1系统环境的基本介绍 (12)
4.2平面二包环面蜗杆接触线分析系统软件设计过程 (13)
5 结论 (21)
致谢语 (21)
参考文献 (22)
附录 (23)
I
2013届机械设计制造及其自动化毕业设计(论文)
平面二包环面蜗杆接触线分析系统
廖学海
重庆三峡学院机械工程学院机械设计制造及其自动化2009级重庆万州404000
摘要:平面二包环面蜗杆副传动具有双线和多齿接触,接触线总长度长,齿面诱导法曲率小,接触线与相对速度方向间夹角大等优点,其齿面接触应力小,易于形成动压油膜,是一种承载能力及传动效率高、齿面磨削量小的新型传动。

通过对平面二包环面蜗轮蜗杆的深入研究,推导出平面二包环面蜗杆接触方程,在理论上了解接触线分布。

基于推导出的接触线方程,完成对平面二包环面蜗杆轮廓的三维造型,利用VISUAL C6.0和MATLAB软件,通过MATLAB编制程序完成轮廓的三维显示,然后通过VISUAL C6.0完成平面二包环面蜗杆接触线分析系统。

在此基础上,通过啮合原理,完成平面包络接触线的绘制,进一步推导出参数对接触线的影响。

关键词:平面二包接触线分析系统
1 引言
平面二包环面蜗杆传动是一种新型的环面蜗杆传动,因为其在传动过程中具有蜗杆啮入端双线接触和多齿接触,接触线总长度长,齿面的诱导法曲率小,接触线和相对速度方向间夹角大等优点,其齿面接触应力小,易于形成动压油膜,使其传动效率高、齿面磨削小、承载能力大的效果。

现目前,在国内外已广泛的用于许多重型机械、轻工机械当中,产生了十分显著的经济效益。

1.1 平面二包环面蜗杆的发展[1]
1922年,美国人埃乃斯特·威尔德哈卜发明了直齿平面蜗轮包络环面蜗杆传动(一种平面一次包络环面蜗杆传动),被称为威氏蜗杆。

这种环面蜗杆齿面可以淬火并用平面砂轮磨削,蜗轮齿面是平面,制造工艺性好,且具有一般环面蜗杆传动的优点。

该传动由于蜗杆齿根根切的限制,一般只用于传动比较大的场合。

1951年,日本佐藤中一发明了斜齿平面蜗轮包络环面蜗杆传动(平面一次包络环面蜗杆传动),蜗轮齿面相对其轴线倾斜β 角,使这种传动装置由大传动比场合扩展到中、小传动比场合,并由植田(RIKEI)公司成功地用于减速器生产,产品商标为“PLANA WORM”。

1972年日本的酒井高男和牧充对交错轴齿轮传动中的第二次作用进行了研究,1976年完成了切齿及强度实验,日本住友重工以HEDCON为商标进行了成批生产。

自20世纪60年代中期开始,我国就对平面二次包络环面蜗杆副进行了大量的研究和探索。

早期的研究工作,主要集中在传统的基于啮合方程的理论研究。

从1971年开始,对于平面二次包络环面蜗杆副,人们主要集中在基于普通机床改装及相关工艺装备的蜗杆副制造技术,及其工艺装备的制造技术研究。

1971年,首钢机械厂在重庆大学张光辉等的协助下制造了我国第一套平面二次包络环面蜗杆传动,它的问世推动了学术界对齿轮啮合原理的研究。

张光辉等研究了平面二次包络环面蜗杆传动的齿面啮合状态;韦云隆分析了平面二次包络环面蜗杆传动的摩擦和润滑性能,并提出了产形母面
1
廖学海平面二包环面蜗杆接触线分析系统
为指锥面的二次包络环面蜗杆传动。

1986年,王丽竹分析了存在误差时的平面二次包络环面蜗杆传动的接触特性;甘正清分析了直线齿弧面蜗杆传动存在误差情况下的接触特性。

1993年,秦大同分析了二次包络环面蜗杆传动在加工和安装误差的条件下齿面的啮合状态,接触点邻域的几何结构和运动传递误差等,提出利用失配啮合的方式调整控制接触状态及齿面接触区在齿面上的位置,以降低对误差的敏感性。

1996年,颜佳等提出从平面包络环面蜗杆齿面的坐标测量值提取制造时的参数调整误差,进行补偿加工的高精度制造方法。

王树人研究了ZCl蜗杆的可控曲率修形。

使初始啮合区域偏向蜗轮的出口方向,在工艺上减少蜗轮副装配的修形工作量。

石万凯等根据误差补偿原理,提出了基于齿面三坐标测量数据的ZCl蜗杆的高精度制造。

1.2 平面二包环面蜗杆的现状[1]
平面二次包络环面蜗杆副的加工工艺已比较成熟,但是传统的加工方法存在蜗轮滚刀设计、制造周期长,加工误差较大等问题。

随着现代先进的计算机、数控加工等技术的发展,制造中存在的各种问题将逐步解决。

误差检测分析方面,目前关于平面包络环面蜗杆传动的误差测量及补偿研究还处于初期阶段。

重庆大学张光辉教授在平面包络环面蜗杆的误差检测与分析方面进行了长期的研究。

对平面二次包络环面蜗杆传动系统、深入的理论研究和实践证明:在啮合原理方面,该传动具有瞬时双线接触,多齿同时啮合,接触线法向速度和综合曲率半径大等优点;在制造工艺方面,由于蜗杆齿面可以淬火、并作完全符合啮合原理的精确磨削,因此齿面硬度高、表面光洁度好,蜗轮滚刀可以制造,蜗轮能够用滚刀滚切,共轭性好。

此外,该传动可实现的传动比范围大,可达到8~100,传递功率高,因而在国防和民用工业领域得到了日益广泛的应用。

综上所述,目前对平面二次包络环面蜗杆传动的理论分析已经趋于完善。

2
2013届机械设计制造及其自动化毕业设计(论文)
3
2 平面二包环面蜗杆啮合分析
2.1 平面二包环面蜗杆的形成
平面二包环面蜗杆副分别经过两次包络运动形成的。

其中第一次包络形成平面二包环面蜗杆,将第一次包络产生的蜗杆在制作成蜗轮滚刀,以第一次包络运动相同的运动切除蜗轮毛胚,形成平面二包环面蜗轮。

由于在制造的过程中,通过母面为平面的的工具,经过两次包络,所以此类蜗杆副称为平面二包环面蜗杆副。

如图1所示,第一次包络以砂轮平面Σ0为工具母面,与蜗杆毛胚齿面Σ1啮合。

Σ0围绕基圆锥以ω2的角速度滚动,同时蜗杆绕自身的轴线以ω1的角速度转动。

这样便在此运动下展成蜗杆齿面Σ1。

2.2 坐标系的建立
如图2建立平面包络环面蜗杆的坐标系:
),,;(S 11111k j i O 为与蜗杆齿面相固连的转动坐标系;
),,;(S 33333k j i O 为与工具母面相固连的转动坐标系;
),,;( S 1k j i O 为固定坐标系与蜗杆相固连;
),,;(S p p p p p k j i O 为固定坐标系与工具母面相固连;
各个坐标系之间的转换关系如下:
图2-1蜗杆形成过程
廖学海 平面二包环面蜗杆接触线分析系统
4 ①由坐标系S 变换到坐标系p S 的系数矩阵为:
⎪⎪⎪⎭⎫ ⎝⎛-=γγγγ
cos sin 0sin cos 00
01M po ②由坐标系p S 变换到坐标系S 的系数矩阵为:
⎪⎪⎪⎭
⎫ ⎝
⎛-=γγγγ
cos sin 0sin cos 0001M 0p ③由坐标系1S 变换到坐标系S 的系数矩阵为: ⎪⎪⎪⎭
⎫ ⎝
⎛-=1000cos sin 0sin cos M 111101ϕϕϕϕ ④由坐标系S 变换到坐标系1S 的系数矩阵为: ⎪⎪⎪⎭
⎫ ⎝
⎛-=1000cos sin 0sin cos 111110ϕϕϕϕM ⑤坐标系p S 变换到坐标系3S 的系数矩阵为: ⎪⎪⎪⎭
⎫ ⎝⎛-=1000cos sin 0sin cos M 33333ϕϕϕϕp 为了简化计算且不影响整体计算,取rad/s 1=1ω,3=ω31i 。

(2)工具母面及其法矢:工具母面Σ3与动坐标系S 3固连,与半径为r 的基圆相切(图3),与元轴相交于切点T ,与3k 轴平行或相交。

当其与3k 轴平行时,形成直齿平面包络蜗杆:与3k 轴相交时,则形成斜齿平面包络蜗杆。

刀具齿面习Σ3与3k 轴的交角β称为齿斜角。

图3在动坐标系S 3中,工具母面Σ3上任意点P 的径矢为:
333333
r x i y j z k =++ (1.1)
2013届机械设计制造及其自动化毕业设计(论文)
5
则P 点在图1.4中的坐标为: ⎪⎩⎪⎨⎧=-==ββcos sin 3
33v z r v y u x b (1.2) 其中u ,v 为齿面参数,它表示在刀齿平面上的任意点的坐标。

由于刀具齿面为平面,故其上任意点的法矢彼此平行。

所以由图2-3可确定单位法矢3n
为: ⎪⎩⎪⎨⎧=-==ββ
sin cos 0333z y x n n n (1.3)
(3)相对运动的计算:在坐标系p S 中,工具母面与蜗杆齿面在接触点M 的相对运动速度p
V 的计算公式为:
0)1()3()31(
a r V p p p p ⨯+⨯=ωω (1.4)
其中:p r
是M 点在坐标系p S 中的径矢; 0a 是)31(p ω 的作用点1O 在坐标系p S 中的径矢;
p p j -=)1(ω; (1.5)
图2-2 主坐标系 图2-3 辅助坐标系
廖学海 平面二包环面蜗杆接触线分析系统
6
p p p k i j 31)31(+=ω (1.6) p p k i 31)
3(=ω; (1.7) )3(33)3(r M r p p ⨯= (1.8)
其中:
⎪⎪⎪⎭
⎫ ⎝⎛-=33331000cos sin 0sin cos 3ϕϕϕϕp M (1.9)
得到:
⎪⎩⎪⎨⎧=+=-=3
33333
333cos sin sin cos z z y x y y x x p p p ϕϕϕϕ (1.10) 将(1.5)(1.6)(1.7)(1.8)(1.10)代入(1.4)中得:
⎪⎩⎪⎨⎧+-==-=0
)
31(31)
31(31
)
31(a x V i x V i y z V p zp p yp p p xp
(1.11) 将在坐标系p S 中的相对运动速度转换为在坐标系3S 中表示,进行如下的变换:
)
31(3313p p V M V *=)(
(1.12) 将(1.9)、(1.11)代入(1.12),能够得到:
⎪⎩⎪⎨⎧+)-(+-=-=+--=0
33αϕβϕϕβϕββsin sin cos sin cos cos cos
)sin ()
31(3331)
31(33
31)
31(3b z y b x r v u V v ui V v r v i V (1.13)
2.3 平面包络环面蜗杆传动分析
在齿面啮合的过程中,共轭齿面在啮合点处应该满足啮合方程:
0)
31(33=⨯V n
(1.14) 相应的啮合函数应该为:
)
31(33V n
⨯=Φ
(1.15) 将(1.3)、(1.13)代入(1.15)得到:
0=---+33βϕϕϕββsin )sin (sin )cos sin cos (0331b r a v i u

1.16)
瞬时接触线在3S 中的方程为:
2013届机械设计制造及其自动化毕业设计(论文)
7
⎪⎪⎩⎪⎪⎨⎧=-==0=---+33βββϕϕϕββcos sin sin )sin (sin )cos sin cos (3
330331v z r v y u x r a v i u b b (1.17) 将瞬时接触线转换到坐标系1S 中即可得到蜗杆的齿面方程:
⎪⎪⎩⎪⎪⎨⎧+--=--++-=-+-+=0=---+3
33131313133ϕϕβϕϕϕϕβϕϕβϕϕϕϕϕϕβϕβϕϕβϕϕϕββcos cos sin sin sin )sin ()cos cos sin sin (sin cos sin cos )sin ()sin cos sin sin (cos cos cos sin )sin (sin )cos sin cos (101
1033113110331b b b b r v u z a r v u y a r v u x r a v i u (1.18)
3 基于MATLAB 蜗杆三维离散接触线分析
3.1 MATLAB 简介
MATLAB 是由美国mathworks 公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C 、Fortran )的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB 和Mathematica 、Maple 、MathCAD 并称为四大数学软件,它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB 来解算问题要比用C ,FORTRAN 等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple 等软件的优点,使MATLAB 成为一个强大的数学软件。

在新的版本中也加入了对C ,FORTRAN ,C++,JAVA 的支持。

可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB 函数库中方便自己以后调用。

一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点。

正如同FORTRAN 和C 等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB ,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。

MATLAB 的最突出的特点就是简洁。

MATLAB 用更直观的、符合人们思维习惯的代码,代替了C 和FORTRAN 语言的冗长代码,MATLAB 给用户带来的是最直观、最简洁的程序开发环境。

以下简单介绍一下MATLAB 的主要特点:(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。

MATLAB 程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。

由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。

可以说,用MATLAB 进行科技开发是站在专家的肩膀上。

(2) 运算符丰富。

由于MATLAB 是用C 语言编写的,MATLAB 提供了和C 语言几乎一样多的运算符,灵活使用MATLAB 的运算符将使程序变
廖学海 平面二包环面蜗杆接触线分析系统
8 得极为简短。

MATLAB 既具有结构化的控制语句(如for 循环、while 循环、break 语句和if 语句),又有面向对象编程的特性。

语法限制不严格,程序设计自由度大。

例如,在MATLAB 里,用户无需对矩阵预定义就可使用。

程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

MATLAB 的图形功能强大。

在FORTRAN 和C 语言里,绘图都很不容易,但在MATLAB 里,数据的可视化非常简单。

MATLAB 还具有较强的编辑图形界面的能力。

(7) MATLAB 的缺点是,它和其他高级程序相比,程序的执行速度较慢。

由于MATLAB 的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

3.2 母平面上的接触线
母平面上的接触线就是在一次包络过程中蜗轮齿面上的接触线。

由上一章可知,母平面上的接触线即为接触线在3S 中的方程:
⎪⎪⎩⎪⎪⎨⎧=-==0=---+33βββϕϕϕββcos sin sin )sin (sin )cos sin cos (3
330331v z r v y u x r a v i u b b (2.1) 在这个方程中,我们给定一个3ϕ值,就能够确定一个准确的蜗杆的位置,以及这个位置上的一条接触线。

在给定一个3ϕ值之后,(2.1)方程可以简化为一个线性方程,因此可以确定接触线为一条直线。

3.2.1母平面上接触线的计算
给定母平面上接触线计算的主要参数(参数的计算公式见附录):中心距mm a 3000=,蜗杆头数11=z ,蜗轮齿数402=z ,蜗杆分度圆直径mm d 1001=,蜗轮分度圆直径:mm d 5002=,蜗轮压力角25︒=α,蜗轮端面模数5.12=t m 。

在上述参数中,蜗杆对蜗轮的包容齿数为4,那么只要绘制出4条母平面上的接触线就能够表现在一个蜗轮吃面上啮合过程中接触线的变化和分布规律,也表现了蜗杆副处于某一位置时啮合齿的齿面上的接触线位置。

对这个蜗杆副的计算蜗轮转角3ϕ为一下数值时的接触线:
① 9.025° ② 18.025° ③ 27.025° ④ 36.025°
因为其接触先方程为线性方程,故假设mm u 170=和mm u 200=,再通过公式(1.16)计算出相应的v 值。

3.2.2 MATLAB 母平面上接触线绘制
通过以上计算参数,在MATLAB 中新建一个M 文件,编制母平面上接触线绘制的程序,部分重要程序如下:
for fi3=9.025*pi/180:9*pi/180:36.025*pi/180; //以步距角为步长进行接触线绘制
u1=170;
u2=200;
v1=(1/i10*u1*cos(beta)+sin(beta)*(u1*cos(fi3)+rb*sin(fi3)-a))/sin(fi3); // u 和v 关系式 v2=(1/i10*u2*cos(beta)+sin(beta)*(u2*cos(fi3)+rb*sin(fi3)-a))/sin(fi3);
u=[u1,u2]; // 将得到的u 和v 的值放入矩阵 v=[v1,v2];
plot(v,u,''); // 绘制母平面上接触线 hold on; end;
运行程序,得到母平面上的接触线,如图3-1所示。

3.3 蜗杆齿面上的接触线
从啮合理论可知,在一对共轭曲面之间每一瞬时的接触线都是一一对应的。

在上一节中,我们己经通过MATLAB 程序绘制出了母平面上的四条接触线,这四条接触线应该分别对应蜗杆上的四条接触线。

而在描述蜗杆齿面的过程中仅仅只绘制出四条接触线是不够的。

由图3-1明确表示出在第一条接触线与第四条接触线之间都是啮合区,其间分布着无数条接触线,它们都与蜗杆齿面上的接触线一一对应。

3.3.1 蜗杆齿面上接触线的计算
绘制蜗杆齿面上的接触线,从微分几何的理论上说,即是将母平面上的接触线进行坐标变换到坐标系1S 中即可。

所以蜗杆齿面上的接触线公式为:
⎪⎪⎩⎪⎪⎨
⎧+--=--++-=-+-+=0
=---+3
33131313133ϕϕβϕϕϕϕβϕϕβϕϕϕϕϕϕβϕβϕϕβϕϕϕββcos cos sin sin sin )sin ()cos cos sin sin (sin cos sin cos )sin ()sin cos sin sin (cos cos cos sin )sin (sin )cos sin cos (1011
033113110331b b b b r v u z a r v u y a r v u x r a v i u (2.2) 由附录可知,3ϕ的转角范围为a f f ϕϕϕϕ23+≤≤,其中a f ϕϕ、为起始角和工作半角。

在母平面
上u 的取值范围为2
22222b a b f r r u r r -≤≤-。

绘制蜗杆齿面接触线的步骤:
图3-1 母平面接触线
(1)确定蜗轮的工作角的范围和蜗杆工作角的范围;
(2)确定在工作角内的离散步长;
(3)计算接触线上的两点绘制一条接触线;
(4)增加一个步长,绘制下一条接触线;
(5)如此循环到绘制出蜗杆接触线。

3.3.2 蜗杆齿面上的三维离散模型
以上节中给定的参数为例,在MATLAB中编制程序,绘制出蜗杆齿面上的三维离散模型。

(1)MATLAB中绘制蜗杆甲面
在MATLAB中绘制蜗杆甲面的部分重要程序如下:
x=t;
y=(2*x-pf-8)*(ra2-rf2)/(pa+14-pf)+rf2;
x1=x.*cos(phi)-y.*sin(phi);
y1=(x.*sin(phi)+y.*cos(phi)-a).*cos(phi1)+a;
z1=-(x.*sin(phi)+y.*cos(phi)-a).*sin(phi1);
plot3(x1,y1,z1);
hold on;
MATLAB运行程序生成的蜗杆甲面如图3-2。

图3-2 蜗杆甲面
(2)MATLAB中绘制蜗杆乙面
在MATLAB中绘制蜗杆乙面的部分重要程序如下:
xx=-t;
yy=(2*x-pf-8)*(ra2-rf2)/(pa+14-pf)+rf2;
x2=xx.*cos(phi)-yy.*sin(phi)+15;
y2=(xx.*sin(phi)+yy.*cos(phi)-a).*cos(phi1)+a;
z2=-(xx.*sin(phi)+yy.*cos(phi)-a).*sin(phi1);
plot3(x2,y2,z2,'b');hold on;
MATLAB运行程序生成的蜗杆甲面如图3-3。

图3-3 蜗杆乙面
3.3.3 蜗杆三维模型
在上节中,通过蜗杆接触线的计算以及在MATLAB中进行编程,生成了蜗杆甲面和乙面的三维离散模型,从而获得了平面包络的精确数字模型,实现了通过数据矩阵实现三维离散模型的表达模式。

通过进一步的加工,我们能够获得蜗杆三维实体模型。

在MATLAB中绘制蜗杆实体模型的部分重要程序:
xa=[x1(1,:);x2(1,:)];
ya=[y1(1,:);y2(1,:)];
za=[z1(1,:);z2(1,:)];
surf(xa,ya,za,'LineStyle','-');
xd=[x1(11,51:251);x2(11,1:201)];
yd=[y1(11,51:251);y2(11,1:201)];
zd=[z1(11,51:251);z2(11,1:201)];
surf(xd,yd,zd,'LineStyle','-');
colormap('copper');
axis equal;
MATLAB运行程序生成的蜗杆模型如图3-4和图3-5。

图3-5 蜗杆模型图3-6 蜗杆模型
4 基于Visual C++平面二包环面蜗杆接触线分析系统软件
4.1 系统环境的基本介绍
平面二包环面蜗杆接触线分析系统主要基于Visual C++作为编译环境,以MFC作为界面设计的基础上,通过调用MATLAB软件来实现软件的基本功能。

4.1.1 Visual C++简介
Visual C++,(简称Visual C++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。

VC++整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。

Microsoft VisualC++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。

它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。

它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。

比如,它允许用户进行远程调试,单步执行等。

还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。

这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著。

4.1.1 MFC简介
MFC是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。

VC++是Windows 下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC 就是挂在它之上的一个辅助软件开发包。

MFC作为界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建、销毁),而是一些在Windows(用MFC编写的程序绝大部分都在Windows中运行)
中实现内部处理的类,如数据库的管理类等。

4.2 平面二包环面蜗杆接触线分析系统软件设计过程
在平面二包环面蜗杆接触线分析系统软件设计过程中,主要包括了软件工作空间的创建、VC 调用MATLAB引擎、MFC界面设计、界面控件所对应事件编程、软件调试等。

4.2.1 创建软件设计工作空间
(1)设置VC头文件和库文件的搜索路径
打开VC软件,在【工具】—【选项】中如图4-1和图4-2设置VC头文件和库文件的搜索路径。

4-1 VC头文件搜索路径

(2)建立软件工程
在【文件】—【新建】弹出的对话框中,选择【MFC AppWizard[exe]】,工程名称为平面二包环面蜗杆接触线分析系统,如图4-3所示,然后选择【确定】—【完成】—【确定】,建立好一个工程文件。

图4-3 新建工程文件
(3)添加源文件
选择【文件】—【新建】,在弹出的对话框中选择【文件】选项卡下面的【C++ Source File】,在文件名处输入文件名,如图4-4所示。

图4-4 新建源文件
4.2.2 软件界面设计
(1)素材准备
在界面设计的过程中,需要一些图片作为素材插入到软件界面中。

在【ResourceView】选项卡中选中【Bitmap】右键引入需要的btm格式的图片和ico格式的图标文件,如图4-5所示。

图4-5 素材引入
(2)登入界面设计
在【Dialog】中插入一个【IDD_DIALOG1】作为登入界面。

在界面上插入登录界面的图片、登入系统和退出系统的控件,并将界面标题更改为“欢迎使用平面二包环面蜗杆接触线分析系统”,如图4-6所示。

图4-6 登入界面
(3)简介界面设计
在【Dialog】中插入一个【IDD_ABOUTBOX】作为简介界面,在界面上插入简介图片,图片的属性选择【凹陷】,并调节好图片合适的大小,达到界面简洁、美观的效果,界面标题设置为“关于分析系统”,如图4-7所示。

图4-7 简介界面
(4)分析系统界面设计
分析系统界面是整个软件系统的核心,它承载了对于平面二包环面蜗杆接触线的主要分析程序,是系统与用户之间交流的主要界面。

分析系统的界面主要包括了数据录入部分、程序运行部分和退出系统部分,所以这个界面主要插入编辑框以便用户录入数据、插入按钮以便执行相应的程序功能,该界面如图4-8所示。

图4-8 分析系统界面
4.2.3控件执行程序写入
(1)登入界面控件程序
在登入界面中只有两个按钮,主要执行进入系统和退出系统的功能。

进入系统按钮主要效果就是进入下一个界面即分析系统界面,退出系统按钮要实现的主要功能就是退出整个程序。

进入系统的主要程序如下:
void login::Onlogin()
{
CDialog::OnOK();
}
退出系统的主要程序如下:
void login::Onlogin2()
{
CDialog::OnCancel();
}
(2)建立类向导
在分析系统中,需要将编辑框里面的数据传递给MATLAB进行数据处理。

在进行数据传递之前,需要将编辑框建立类向导以便数据读取。

在编辑框中右键选择【建立类向导】,选中相应编辑框的名称,然后选择【Add Variable】—【Value】,将其命名为m_num1,选择【Control】,将其命名为m_edit1,如图4-9所示,其余编辑框设置类似。

图4-9 建立类向导
(3)VC将数据传递给MATLAB
在MATLAB引擎函数中,所有与变量有关的数据类型都是mxArray类型,在VC中,所有和MATLAB的数据交互都是通过mxArray来实现的,在使用mxArray类型的程序中,应包含头文件
matrix.h,不过在引擎程序中,一般会包含头文件engine.h。

所以需要创建一个1×1的数组作为编辑框中数据的载体,然后将编辑框的数据放入载体中,再将载体的数据传递给MATLAB,实现此功能的程序就拿传动比的编辑框为例,其程序如下:
mxArray *i10=NULL;
i10=mxCreateDoubleMatrix(1,1,mxREAL);
double p1[1][1];
UpdateData();
p1[0][0]=m_num1;
memcpy(mxGetPr(i10),p1,sizeof(double));
engPutVariable(wm,"i1",i10);
(4)接触线生成按钮程序
接触线生成按钮程序是用来生成图3-2中蜗杆齿面上的接触线即蜗杆甲面的三维离散模型,其主要程序如下:
engEvalString(wm,"a=r1+r2; // 向MATLAB传递变量参数
alpha=alph*pi/180;
alpha1=pi*20/180;
rb=r2*sin(alpha);
z1=1;z2=i1;
d2=2*r2;
mt=d2/z2;
i10=z2/z1;
phi2=2*pi/40;
p=r2*phi2/2;
pa=p*2/2.25;
pf=p*2-pa;
rf1=r1-1.25*mt;
ra1=r1+mt;
rf2=r2+1.25*mt;
ra2=r2-mt;");
engEvalString(wm,"[phi,t]=meshgrid(-alpha1:pi/1000:alpha,pf/2+4:(pa/2+7-pf/2)/10:pa/2+11); phi1=phi*i10; // 向MATLAB传递接触线生成命令
x=t;
y=(2*x-pf-8)*(ra2-rf2)/(pa+14-pf)+rf2;
x1=x.*cos(phi)-y.*sin(phi);
y1=(x.*sin(phi)+y.*cos(phi)-a).*cos(phi1)+a;
z1=-(x.*sin(phi)+y.*cos(phi)-a).*sin(phi1);
plot3(x1,y1,z1);hold on;");
(5)蜗杆生成按钮程序
蜗杆生成程序按钮程序是用来生成图3-5中的蜗杆三维模型,其主要程序如下:engEvalString(wg,"a=r1+r2; // 向MATLAB传递接触线生成命令
alpha=alph*pi/180;
alpha1=pi*20/180;
rb=r2*sin(alpha);
z1=1;z2=i1;
d2=2*r2;
mt=d2/z2;
i10=z2/z1;
phi2=2*pi/40;
p=r2*phi2/2;
pa=p*2/2.25;
pf=p*2-pa;
rf1=r1-1.25*mt;
ra1=r1+mt;
rf2=r2+1.25*mt;
ra2=r2-mt;");
engEvalString(wg,"[phi,t]=meshgrid(-alpha1:pi/1000:alpha,pf/2+4:(pa/2+7-pf/2)/10:pa/2+11); phi1=phi*i10; // 向MATLAB传递接触线生成命令
x=t;
y=(2*x-pf-8)*(ra2-rf2)/(pa+14-pf)+rf2;
x1=x.*cos(phi)-y.*sin(phi);
y1=(x.*sin(phi)+y.*cos(phi)-a).*cos(phi1)+a;
z1=-(x.*sin(phi)+y.*cos(phi)-a).*sin(phi1);
surf(x1,y1,z1,'LineStyle','-');hold on;"); //将接触线生成甲面
engEvalString(wg,"xx=-t;
yy=(2*x-pf-8)*(ra2-rf2)/(pa+14-pf)+rf2;
x2=xx.*cos(phi)-yy.*sin(phi)+15;
y2=(xx.*sin(phi)+yy.*cos(phi)-a).*cos(phi1)+a;
z2=-(xx.*sin(phi)+yy.*cos(phi)-a).*sin(phi1);
surf(x2,y2,z2,'LineStyle','-'); //将接触线生成乙面
xa=[x1(1,:);x2(1,:)];
ya=[y1(1,:);y2(1,:)];
za=[z1(1,:);z2(1,:)];
surf(xa,ya,za,'LineStyle','-');"); //生成蜗杆齿顶面
engEvalString(wg,"xd=[x1(11,51:251);x2(11,1:201)];
yd=[y1(11,51:251);y2(11,1:201)];
zd=[z1(11,51:251);z2(11,1:201)];。

相关文档
最新文档