VC++凸轮机构运动仿真编程示例

合集下载

机械原理凸轮编程

机械原理凸轮编程

s=351−10×3Ψ−ππ3+15×3Ψ−ππ4−6×3Ψ−ππ5v=−35ω1π330×3Ψ−ππ2−60×3Ψ−ππ3+30×3Ψ−ππ4a=−35ω12π2960×3Ψ−ππ−180×3Ψ−ππ2+120×3Ψ−ππ3fai0=80/180*pi;fai01=60/180*pi;fais=100/180*pi;fais1=120/180*pi;h=35;t1=0.:0.01:fai0;s1=h/2*(1-cos(pi*t1./fai0));t2=fai0:0.01:fai0+fais;s2=h;t3=fai0+fais:0.01:fai0+fais+fai01;s3=h*(1-10*((t3-fai0-fais)/fai01).^3+15*((t3-fai0-fais)/fai01).^4-6*( (t3-fai0-fais)/fai01).^5);t4=fai0+fais+fai01:0.01:2*pi;s4=0;t1=t1/pi*180;t2=t2/pi*180;t3=t3/pi*180;t4=t4/pi*180;subplot(1,2,1);plot(t1,s1);hold on;plot(t2,s2);hold on;plot(t3,s3);hold on;plot(t4,s4);grid on;%从动件位移,速度,加速度与凸轮转角fai的函数关系function [s,v,a]=wyh(fai)h=35; %行程fai0=80/180*pi; %升程运动角fai01=60/180*pi; %回程运动角fais=100/180*pi; %远休止角fais1=120/180*pi; %近休止角w=1; %令凸轮转动角速度为1rad/sif fai>=0 && fai<=fai0s=h/2*(1-cos(pi*t1/fai0));v=pi*h*w/(2*fai0)*sin(pi*fai/fai0));a=pi^2*h*w^2/(2*fai0^2)*cos(pi*fai/fai0);elseif fai>fai0 && fai<fai0+faiss=h;v=0;a=0;elseif fai>=fai0+fais && fai<=fai0+fais+fai01s=h*(1-10*((t3-fai0-fais)/fai01).^3+15*((t3-fai0-fais)/fai01).^4-6*((t3-fai0-fais)/fai01).^5);v=-h*w/fai01(30*((t3-fai0-fais)/fai01).2-60*((t3-fai0-fais)/fai01).^3+30*((t3-fai0-fais)/fai01).^4);a=-h*w^2/fai01(60*((t3-fai0-fais)/fai01)-180*((t3-fai0-fais)/fai01).^2+120*((t3-fai0-fais) /fai01).^3);elseif fai > fai0+fais+fai01 && fai <=fai0+fai01+fais+fais1s=0;v=0;a=0;endend%作从动件位移,速度,加速度曲线s=zeros(1,36001);v=zeros(1,36001);a=zeros(1,36001);for i=1:36001fai=(i-1)/36000*2*pi;[s(i),v(i),a(i)]=sva(fai);endfai=0:0.01:360;subplot(1,3,1);plot(fai,s);xlabel('凸轮转角φ(°)');ylabel('从动件位移s(mm)');title('位移曲线');grid on;subplot(1,3,2);plot(fai,v);xlabel('凸轮转角φ/°');ylabel('从动件速度v(mm/s)');title('速度曲线');grid on;subplot(1,3,3);plot(fai,a);xlabel('凸轮转角φ/°');ylabel('从动件加速度a(mm/s^2)'); title('加速度曲线');grid on;。

毕业论文-凸轮机构建摸,受力分析和运动仿真与分析研究

毕业论文-凸轮机构建摸,受力分析和运动仿真与分析研究

摘要凸轮是一具有曲面轮廓的构件,一般多为原动件(有时为机架);当凸轮为原动件时,通常作等速连续转动或移动,而从动件则按预期输出特性要求作连续或间隙的往复运动、移动或平面复杂运动。

本文主要介绍凸轮的大体概念与凸轮廓线的设计计算,以及后期使用Pro/E软件仿真其廓线。

凸轮轮廓曲线是凸轮机构设计的关键,常用的设计方法有解析法和图解法。

本文将对这两这种方法进行大致分析与应用设计,利用Pro/E软件绘制凸轮机构实体模型,并用Pro/E软件自带的Pro/MECHANICA Motion插件设计凸轮机构运动模型,进行机构运动学仿真分析,可以较准确掌握机械产品零部件的位移、速度和加速度等动力学参数,进而可分析机构动作的可靠性。

主要技术要求为:熟悉凸轮设计基本原理及相关理论计算;凸轮机构运动仿真及受力分析;指定内容的翻译和Pro/E软件的熟练应用。

本文将重点研究凸轮机构建摸,受力分析和运动仿真与分析。

通过理论上的计算和研究,结合图解以及解析的方法,算出凸轮廓线的大致数据,用Pro/E软件将其绘制出,进行运动仿真,记录和研究其位移、速度和加速度等动力参数,最后分析出机构动作的可靠性。

使以后工作中,可以更准确掌握机械产品零部件的动力方面个参数,减少事故的发生,降低设计的难度。

关键词:凸轮;廓线设计;Pro/E;三维造型;仿真。

AbstractCam is a component with a surface profile is generally more dynamic pieces of the original (sometimes for the rack), when the cam piece to its original form, it is usually in a row for the constant rotation or move, and the follower output characteristics according to the requirements expected for continuous or reciprocating motion of the space, move, or the complexity of sports plane. This paper mainly introduces the general concept of the cam and cam profile design and calculation, and the latter the use of Pro / E software simulation of its profile.Cam cam curve design is the key to the design of methods commonly used analytical method and graphical method. In this paper, two such methods will be more or less analysis and application design, use of Pro/E software cam solid model rendering, and Pro / E software comes with the Pro/MECHANICA Motion cam plug design movement model, the kinematics Simulation can b a more accurate knowledge of machinery parts and components of displacement, velocity and acceleration, such as kinetic parameters, which can analyze the reliability of body movement.The main technical requirements are:familiar with the basic principles of cam design and related theoretical calculation; cam mechanism motion simulation and stress analysis; specify the contents of the translation and Pro/e application software proficiency.This article will focus on cam modeling, stress analysis and motion simulation and analysis. Through theoretical calculations and research, combined with graphical and analytical methods, calculate the approximate convex contour data, using Pro/E software to draw, simulation exercise, record and study the displacement, velocity and acceleration and other dynamic parameters, Finally, the reliability of the agency action. So after work, can be more accurate machinery parts and components of the dynamic parameters, to reduce accidents, reduce the difficulty of design.Keywords:Cam, Profile Design ,Pro/E, Three-dimensional shape,Simulation.目录1绪论 (1)1.1选题意义 (1)1.2 仿真技术的发展 (3)1.3 Pro/Engineer在机械制造中的应用 (5)1.3.1 Pro/Engineer软件介绍 (5)1.3.2Pro/E在我国机械行业中的应用 (8)2凸轮轮廓线的设计 (10)2.1绪论 (10)2.2 凸轮机构的分类 (11)2.2.1 按两活动构件之间的相对运动特性分类 (11)2.2.2 按从动件运动副元素形状分类 (11)2.2.3 按凸轮高副的锁合方式分类 (11)2.3从动件运动规律 (12)2.3.1 基本运动规律 (12)2.4 凸轮轮廓线的设计 (14)2.4.1凸轮轮廓曲线的计算 (14)2.5凸轮机构基本尺寸的确定 (17)2.5.1凸轮机构的压力角及许用值 (17)2.6.2凸轮理论轮廓的外凸部分。

机械原理凸轮VB编程

机械原理凸轮VB编程

理论轮廓线与工作轮廓线Dim r0 As Double '定义基圆半径Dim e As Double '定义偏心距Dim h As Double '定义行程Dim f As Double '定义凸轮转角Dim ff As DoubleDim w As Double '定义凸轮角速度Dim f0 As Double '定义推程运动角Dim fs As Double '定义远休止角Dim f01 As Double '定义回程运动角Dim fs1 As Double '定义近休止角Dim s As Double '定义从动件位移Dim v As Double '定义从动件速度Dim a As Double '定义从动件加速度Dim x As Double '定义凸轮理论轮廓上点横坐标Dim y As Double '定义凸轮理论轮廓上点纵坐标Dim x1 As Double '定义凸轮实际轮廓上点横坐标Dim y1 As Double '定义凸轮实际轮廓上点纵坐标Dim rr As Double '定义滚子半径Dim pi As Double '定义圆周率Dim pa As Double '定义角度弧度转换中间变量Dim T As Double '定义中间变量Dim s0 As Double '定义中间变量Dim i As Double '定义中间变量Dim dsdf As Double '定义ds/dfDim dxdf As Double '定义dx/dfDim dydf As Double '定义dy/dfPrivate Sub push()If f >= 0 And f <= f0 / 2 Thens = 2 * h * (f / f0) ^ 2v = 4 * h * w * f / f0 ^ 2a = 4 * h * w ^ 2 / f0 ^ 2dsdf = 4 * h * f / f0 ^ 2End IfIf f >= f0 / 2 And f <= f0 Thens = h - 2 * h * (f0 - f) ^ 2 / f0 ^ 2v = 4 * h * w * (f0 - f) / f0 ^ 2a = -4 * h * w ^ 2 / f0 ^ 2dsdf = 4 * h * (f0 - f) / f0 ^ 2End IfEnd SubPrivate Sub back()If f >= f0 + fs And f <= f0 + fs + f01 / 2 Thens = h - 2 * h * (f - (f0 + fs)) ^ 2 / f01 ^ 2v = -4 * h * w * (f - (f0 + fs)) / f01 ^ 2a = -4 * h * w ^ 2 / f01 ^ 2dsdf = -4 * h * (f - (f0 + fs)) / f01 ^ 2End IfIf f >= f0 + fs + f01 / 2 And f <= f0 + fs + f01 Thens = 2 * h * ((f0 + fs + f01) - f) ^ 2 / f01 ^ 2v = -4 * h * w * ((f0 + fs + f01) - f) / f01 ^ 2a = 4 * h * w ^ 2 / f01 ^ 2dsdf = -4 * h * ((f0 + fs + f01) - f) / f01 ^ 2End IfEnd SubPrivate Sub pushstay()s = hv = 0a = 0dsdf = 0End SubPrivate Sub backstay()s = 0v = 0a = 0dsdf = 0End SubPrivate Sub Command1_Click()Picture1.ClsPicture1.Scale (-30, 110)-(390, -20)Picture1.Line (-30, 0)-(390, 0) 'XPicture1.Line (0, 390)-(0, -20) 'YFor i = 0 To 360 Step 30 'X轴坐标Picture1.Line (i, 2)-(i, 0)Picture1.CurrentX = i - 10: Picture1.CurrentY = 0Picture1.Print iNext iFor i = 10 To 110 Step 10 'Y轴坐标Picture1.Line (0, i)-(5, i)Picture1.CurrentX = -30: Picture1.CurrentY = i + 2Picture1.Print iNext iFor ff = 0 To 360 Step 0.1f = ffs0 = Sqr(r0 ^ 2 - e ^ 2)If f < f0 ThenCall pushElseIf f >= f0 And f < fs + f0 ThenCall pushstayElseIf f >= fs + f0 And f < fs + f0 + f01 ThenCall backElseIf f >= fs + f0 + f01 And f <= 2 * pi ThenCall backstayEnd IfPicture1.PSet (ff, s)Next ffEnd SubPrivate Sub Command2_Click()Picture1.ClsPicture1.Scale (-30, 30)-(390, -30)Picture1.Line (-30, 0)-(390, 0) 'XPicture1.Line (0, 390)-(0, -30) 'YFor i = 0 To 360 Step 30 'X轴坐标Picture1.Line (i, 0.5)-(i, 0)Picture1.CurrentX = i - 10: Picture1.CurrentY = 0Picture1.Print iNext iFor i = -100 To 30 Step 10 'Y轴坐标Picture1.Line (0, i)-(5, i)Picture1.CurrentX = -20: Picture1.CurrentY = i + 3Picture1.Print iNext iFor ff = 0 To 360 Step 0.1f = ffIf f < f0 ThenCall pushElseIf f >= f0 And f < fs + f0 ThenCall pushstayElseIf f >= fs + f0 And f < fs + f0 + f01 ThenCall backElseIf f >= fs + f0 + f01 And f <= 360 ThenCall backstayEnd IfPicture1.PSet (ff, v)Next ffEnd SubPrivate Sub Command3_Click()Picture1.ClsPicture1.Scale (-30, 10)-(390, -10)Picture1.Line (-30, 0)-(390, 0) 'XPicture1.Line (0, 10)-(0, -10) 'YFor i = 0 To 360 Step 30 'X轴坐标Picture1.Line (i, 0.25)-(i, 0)Picture1.CurrentX = i - 10: Picture1.CurrentY = 0Picture1.Print iNext iFor i = -10 To 10 Step 2 'Y轴坐标Picture1.Line (0, i)-(5, i)Picture1.CurrentX = -20: Picture1.CurrentY = i + 1Picture1.Print iNext iFor ff = 0 To 360 Step 0.1f = ffIf f < f0 ThenCall pushElseIf f >= f0 And f < fs + f0 ThenCall pushstayElseIf f >= fs + f0 And f < fs + f0 + f01 ThenCall backElseIf f >= fs + f0 + f01 And f <= 360 ThenCall backstayEnd IfPicture1.PSet (ff, a)Next ffEnd SubPrivate Sub Command4_Click()Picture1.ClsPicture1.Scale (-150, 150)-(150, -150)Picture1.Line (-150, 0)-(150, 0) 'XPicture1.Line (0, 150)-(0, -150) 'YFor i = -150 To 150 Step 10 'X轴坐标Picture1.Line (i, 2)-(i, 0)Picture1.CurrentX = i - 5: Picture1.CurrentY = 0Picture1.Print iNext iFor i = -150 To 150 Step 10 'Y轴坐标Picture1.Line (0, i)-(4, i)Picture1.CurrentX = -13: Picture1.CurrentY = i + 5Picture1.Print iNext if0 = f0 * pafs = fs * paf01 = f01 * paFor ff = 0 To 360 Step 0.1f = ff * paIf f < f0 ThenCall pushElseIf f >= f0 And f < fs + f0 ThenCall pushstayElseIf f >= fs + f0 And f < fs + f0 + f01 ThenCall backElseIf f >= fs + f0 + f01 And f <= 360 ThenCall backstayEnd IfPicture1.PSet (-dsdf, s)Next ffEnd SubPrivate Sub Command5_Click()Picture1.ClsPicture1.Scale (-200, 200)-(200, -200)Picture1.Line (-200, 0)-(200, 0) 'XPicture1.Line (0, 200)-(0, -200) 'YFor i = -200 To 200 Step 20 'X轴坐标Picture1.Line (i, 2)-(i, 0)Picture1.CurrentX = i - 10: Picture1.CurrentY = 0Picture1.Print iNext iFor i = -200 To 200 Step 20 'Y轴坐标Picture1.Line (0, i)-(5, i)Picture1.CurrentX = -10: Picture1.CurrentY = i + 2Picture1.Print iNext if0 = f0 * pafs = fs * paf01 = f01 * paFor ff = 0 To 360 Step 0.1f = ff * pas0 = 70If f < f0 ThenCall pushElseIf f >= f0 And f < fs + f0 ThenCall pushstayElseIf f >= fs + f0 And f < fs + f0 + f01 Then Call backElseIf f >= fs + f0 + f01 And f <= 2 * pi Then Call backstayEnd Ifx = (s + s0) * Cos(f) - e * Sin(f)y = (s + s0) * Sin(f) + e * Cos(f)dxdf = -(s0 + s) * Sin(f) - e * Cos(f)dydf = (s0 + s) * Cos(f) - e * Sin(f)x1 = x + rr * dydf / Sqr(dxdf ^ 2 + dydf ^ 2) y1 = y - rr * dxdf / Sqr(dxdf ^ 2 + dydf ^ 2)Picture1.PSet (x, y)Picture1.PSet (x1, y1)Picture1.PSet (r0 * Cos(f), r0 * Sin(f))Next ffEnd SubPrivate Sub Form_Load()pi = 3.1415926pa = pi / 180h = 80f0 = 90fs = 100f01 = 80fs1 = 90w = 10e = 40r0 = 80.623rr = 10End SubDim xB As Double 'B点x轴坐标Dim yB As Double 'B点y轴坐标Dim vxB As Double 'B点速度x轴分量Dim vyB As Double 'B点速度y轴分量Dim axB As Double 'B点加速度x轴分量Dim ayB As Double 'B点加速度y轴分量Dim xC As Double 'C点x轴坐标Dim yC As Double 'C点y轴坐标Dim vxC As Double 'C点速度x轴分量Dim vyC As Double 'C点速度y轴分量Dim axC As Double 'C点加速度x轴分量Dim ayC As Double 'C点加速度y轴分量Dim xD As Double 'D点x轴坐标Dim yD As Double 'D点y轴坐标Dim vxD As Double 'D点速度x轴分量Dim vyD As Double 'D点速度y轴分量Dim axD As Double 'D点加速度x轴分量Dim ayD As Double 'D点加速度y轴分量Dim xE As DoubleDim yE As DoubleDim vxE As DoubleDim vyE As DoubleDim axE As Double 'E点加速度x轴分量Dim ayE As Double 'E点加速度y轴分Dim xF As Double 'F点x轴坐标Dim yF As Double 'F点y轴坐标Dim vxF As Double 'F点速度x轴分量Dim vyF As Double 'F点速度y轴分量Dim axF As Double 'F点加速度x轴分量Dim ayF As Double 'F点加速度y轴分量Dim l1 As Double 'ab杆长Dim l2 As Double 'bc杆长Dim l3 As Double 'cd杆长Dim l4 As Double 'ef杆长Dim delt As DoubleDim delt1 As DoubleDim f1 As Double 'ab杆转角Dim w1 As Double 'ab杆角速度Dim e1 As Double 'ab杆角加速度Dim LBD As Double 'bd距离Dim val As Double 'cosCBDDim JCBD As Double '角BDEDim fDB As Double 'de角Dim f2 As Double 'bc杆位置角Dim f3 As Double 'cd杆位置角Dim e2 As Double ' bc杆角加速度Dim e3 As Double ' cd杆角加速度Dim C2 As DoubleDim C3 As DoubleDim S2 As DoubleDim S3 As DoubleDim G1 As DoubleDim G2 As DoubleDim G3 As DoubleDim w2 As Double 'bc杆角速度Dim w3 As Double ' cd角速度Dim f4 As Double 'ef杆位置角Dim l As DoubleDim lj As DoubleDim wj As DoubleDim ej As DoubleDim fj As Double 'eg转角Dim w4 As Double ' ef角速度Dim e4 As Double 'ef杆角加速度Dim xK As DoubleDim yK As DoubleDim vxK As DoubleDim vyK As DoubleDim axK As DoubleDim ayK As DoubleDim ss As DoubleDim vss As DoubleDim ass As DoubleDim A0 As DoubleDim Q1 As DoubleDim Q2 As DoubleDim Q3 As DoubleDim Q4 As DoubleDim Q5 As DoubleDim val1 As DoubleDim xp As Double 'p点x轴坐标Dim yp As Double 'p点y轴坐标Dim vxp As Double 'p点速度x轴分量Dim vyp As Double 'p点速度y轴分量Dim axp As Double 'p点加速度x轴分量Dim ayp As Double 'p点加速度y轴分量Dim pi As DoubleDim pa As DoubleDim i As DoubleDim fj1 As DoublePrivate Sub Command1_Click() '求点F的轨迹Picture1.Scale (0, 800)-(400, 0)Picture1.Line (0, 0)-(400, 0) 'XPicture1.Line (0, 800)-(0, 0) 'YFor i = 0 To 400 Step 50 'X轴坐标Picture1.DrawStyle = 2Picture1.Line (i, 0)-(i, 800)Picture1.CurrentX = i - 0: Picture1.CurrentY = 0 Picture1.Print iNext iFor i = 0 To 800 Step 50 'Y轴坐标Picture1.DrawStyle = 2Picture1.Line (0, i)-(400, i)Picture1.CurrentX = -20: Picture1.CurrentY = i + 7 Picture1.Print iNext iFor fj1 = 0 To 360 Step 0.01f1 = fj1 * paCall RRCall RRRCall RR1Call RRPPicture1.PSet (xF, yF)Next fj1End SubPrivate Sub Command2_Click() '求点F的速度Picture2.Scale (0, 800)-(400, -800)Picture2.Line (0, 0)-(400, 0) 'XPicture2.Line (0, 800)-(0, -800) 'YFor i = 0 To 400 Step 50 'X轴坐标Picture2.DrawStyle = 2Picture2.Line (i, 800)-(i, -800)Picture2.CurrentX = i - 10: Picture3.CurrentY = 0 Picture2.Print iNext iFor i = 0 To 800 Step 50 'Y轴坐标Picture2.Line (0, i)-(400, i)Picture2.CurrentX = -28: Picture2.CurrentY = i Picture2.Print iNext iFor fj1 = 0 To 360 Step 0.01f1 = fj1 * paCall RRCall RRRCall RR1Call RRPPicture2.PSet (fj1, vxF)Next fj1End SubPrivate Sub Command3_Click() '求点F的加速度Picture3.Scale (0, 3000)-(400, -5000)Picture3.Line (0, 0)-(500, 0) 'XPicture3.Line (0, 3000)-(0, -5000) 'YFor i = 0 To 360 Step 50 'X轴坐标Picture3.DrawStyle = 2Picture3.Line (i, 3000)-(i, -5000)Picture3.CurrentX = i - 10: Picture3.CurrentY = 0 Picture3.Print iNext iFor i = -5000 To 3000 Step 50 'Y轴坐标Picture3.Line (0, i)-(400, i)Picture3.CurrentX = -25: Picture3.CurrentY = i + 5 Picture3.Print iNext iFor fj1 = 0 To 360 Step 0.01f1 = fj1 * paCall RRCall RRRCall RR1Call RRPPicture3.PSet (fj1, axF)Next fj1End SubPrivate Sub Form_Load() '赋初值l1 = 150l2 = 600l3 = 500l4 = 600yF = 600w1 = 5.23l = 120xD = 400yD = 500vxD = 0vyD = 0axD = 0ayD = 0vyF = 0ayF = 0delt = 0delt1 = 0e1 = 0lj = 0fj = 0wj = 0ej = 0xK = 500yK = 600vxK = 0vyK = 0axK = 0ayK = 0pi = 3.14pa = pi / 180End SubPrivate Sub RR() 'RR基本杆组xB = l1 * Cos(f1 + delt)yB = l1 * Sin(f1 + delt)vxB = -w1 * l1 * Sin(f1 + delt)vyB = w1 * l1 * Cos(f1 + delt)axB = -w1 ^ 2 * l1 * Cos(f1 + delt) - e1 * l1 * Sin(f1 + delt)ayB = -w1 ^ 2 * l1 * Sin(f1 + delt) + e1 * l1 * Cos(f1 + delt)End SubPrivate Sub RRR() 'RRR基本杆组LBD = Sqr((xD - xB) ^ 2 + (yD - yB) ^ 2)If LBD > l2 + l3 And LBD < Abs(l2 - l3) ThenIf MsgBox("RRR杆组杆长不符合要求", vbOKOnly, "提示") = 1 Then EndElseEnd IfElseEnd IfIf LBD < l3 + l2 And LBD > Abs(l3 - l2) Thenval = (l2 ^ 2 + LBD ^ 2 - l3 ^ 2) / (2 * l2 * LBD)JCBD = Atn(-val / Sqr(-val * val + 1)) + 2 * Atn(1)ElseEnd IfIf LBD = l3 + l2 ThenJCBD = 0ElseEnd IfIf LBD = Abs(l3 - l2) ThenIf l2 > l3 ThenJCBD = 0ElseEnd IfIf l2 < l3 ThenJCBD = piElseEnd IfElseEnd IfIf xD > xB And yD >= yB Then '第一象限fDB = Atn((yD - yB) / (xD - xB))ElseEnd IfIf xD = xB And yD > yB ThenfDB = pi / 2ElseEnd IfIf xD < xB And yD >= yB Then '第二象限fDB = pi + Atn((yD - yB) / (xD - xB)) ElseEnd IfIf xD < xB And yD < yB Then '第三象限fDB = pi + Atn((yD - yB) / (xD - xB)) ElseEnd IfIf xD = xB And yD < yB ThenfDB = 3 * pi / 2ElseEnd IfIf xD > xB And yD <= yB Then '第四象限fDB = 2 * pi + Atn((yD - yB) / (xD - xB)) ElseEnd Iff2 = fDB + JCBDxC = xB + l2 * Cos(f2)yC = yB + l2 * Sin(f2)If xC > xD And yC >= yD Then '第一象限f3 = Atn((yC - yD) / (xC - xD))ElseIf xC = xD And yC > yD Thenf3 = pi / 2ElseEnd IfIf xC < xD And yC >= yD Then '第二象限f3 = pi + Atn((yC - yD) / (xC - xD))ElseEnd IfIf xC < xD And yC < yD Then '第三象限f3 = pi + Atn((yC - yD) / (xC - xD))ElseEnd IfIf xC = xD And yC < yD Thenf2 = 3 * pi / 2ElseEnd IfIf xC > xD And yC <= yD Then '第四象限f2 = 2 * pi + Atn((yC - yD) / (xC - xD))ElseEnd IfC2 = l2 * Cos(f2)S2 = l2 * Sin(f2)C3 = l3 * Cos(f3)S3 = l3 * Sin(f3)G1 = C2 * S3 - C3 * S2w2 = (C3 * (vxD - vxB) + S3 * (vyD - vyB)) / G1w3 = (C2 * (vxD - vxB) + S2 * (vyD - vyB)) / G1vxC = vxB - w2 * l2 * Sin(f2)vyC = vyB + w2 * l2 * Cos(f2)G2 = axD - axB + w2 ^ 2 * C2 - w3 ^ 2 * C3G3 = ayD - ayB + w2 ^ 2 * S2 - w3 ^ 2 * S3e2 = (G2 * C2 + G3 * S3) / G1e3 = (G2 * C2 + G3 * S2) / G1axC = axB - e2 * l2 * Sin(f2) - w2 ^ 2 * l2 * Cos(f2)ayC = ayB + e2 * l2 * Cos(f2) - w2 ^ 2 * l2 * Sin(f2)End SubPrivate Sub RR1() 'RR1基本杆组xE = xC + l * Cos(f2 + delt1)yE = yC + l * Sin(f2 + delt1)vxE = vxC - w2 * l * Sin(f2 + delt1)vyE = vyC + w2 * l2 * Cos(f2 + delt1)axE = axC - w2 ^ 2 * l * Cos(f2 + delt1) - e2 * l * Sin(f2 + delt1) ayE = ayC - w2 ^ 2 * l * Sin(f2 + delt1) + e2 * l * Cos(f2 + delt1)Private Sub RRP() 'RRP基本杆组A0 = ((yK - yE) * Cos(fj) - (xK - xE) * Sin(fj))val1 = A0 / l4f4 = Atn(val1 / Sqr(-val1 * val1 + 1)) + fjxp = xE + l4 * Cos(f4)yp = yE + l4 * Sin(f4)ss = (xp - xK) * Cos(fj) + (yp - yK) * Sin(fj)xF = xK + ss * Cos(fj)yF = yK + ss * Sin(fj)Q1 = vxK - vxE - wj * (ss * Sin(fj) + lj * Cos(fj))Q2 = vyK - vyE + wj * (ss * Cos(fj) - lj * Sin(fj))Q3 = l4 * Sin(f4) * Sin(fj) + l4 * Cos(f4) * Cos(fj)w4 = (-Q1 * Sin(fj) + Q2 * Cos(fj)) / Q3vss = -(Q1 * l4 * Cos(f4) + Q2 * l4 * Sin(f4)) / Q3vxp = vxE - w4 * l4 * Sin(f4)vyp = vyE + w4 * l4 * Cos(f4)vxF = vxK + vss * Cos(fj) - ss * wj * Sin(fj)vyF = vyK + vss * Sin(fj) + ss * wj * Cos(fj)Q4 = axK - axD + w4 ^ 2 * l4 * Cos(f4) - ej * (ss * Sin(fj) + lj * Cos(fj)) - wj ^ 2 * (ss * Cos(fj) - lj * Sin(fj)) - 2 * vss * wj * Sin(fj)Q5 = ayK - ayD + w4 ^ 2 * l4 * Sin(f4) + ej * (ss * Cos(fj) - lj * Sin(fj)) - wj ^ 2 * (ss * Sin(fj) + lj * Cos(fj)) + 2 * vss * wj * Cos(fj)e4 = (-Q4 * Sin(fj) + Q5 * Cos(fj)) / Q3ass = (-Q4 * l4 * Cos(f4) - Q5 * l4 * Sin(f4)) / Q3axp = axE - e4 * l4 * Sin(f4) - w4 ^ 2 * l4 * Cos(f4)ayp = ayE + e4 * l4 * Cos(f4) - w4 ^ 2 * l4 * Sin(f4)axF = axK + ass * Cos(fj) - ss * ej * Sin(fj) - ss * wj ^ 2 * Cos(fj) - 2 * vss * wj * Sin(fj)ayF = ayK + ass * Sin(fj) + ss * ej * Cos(fj) - ss * wj ^ 2 * Sin(fj) + 2 * vss * wj * Cos(fj)End Sub。

基于Autodesk Inventor的共轭凸轮设计与运动仿真

基于Autodesk Inventor的共轭凸轮设计与运动仿真

基于Autodesk Inventor的共轭凸轮设计与运动仿真笔者结合工作中的实际案例——一位使用Inventor产品多年的印刷机械设备用户,困惑于如何借助3D软件提升设计能力——分析其设计难题,例如比较普遍的凸轮设计问题,其中一个共轭凸轮的机构设计尤为难以实现。

本文就是基于解决用户共轭凸轮设计难题的真实案例,介绍了借助Autodesk Inventor设计共轭凸轮的方法及思路。

一、设计要求用户设计某胶订机,其中一台设备使用到一对共轭凸轮,其中一个凸轮是顶升凸轮,带动机构在垂直方向运动,另一个凸轮带动一个连杆机构,连杆机构的末端带动一个滑块做水平运动,机构简图如图1。

T形结构FF’E中,端点E与凸轮1的从动件连结,连杆AB的端点A 连接在滑块上,沿FF’平面做水平往复运动,连杆BCD绕C点转动,D点与凸轮2从动件连结,凸轮1和凸轮2绕同一根轴旋转。

1.凸轮1(垂直运动)盘式顶升凸轮(沟槽)做垂直方向往复运动。

凸轮基圆半径为50mm,凸轮升程为30mm,带动T形结构做垂直方向运动,其在一个周期内的运动规律如表所示。

2.凸轮2(水平运动)凸轮驱动连杆机构运动,连杆机构的末端连结到一个滑块,滑块的设计要求为一个往复行程为400mm,为配合机构的运动要求,其速度按照如图2所示规律运动。

本文重点在于说明设计的思路,对于机构的具体尺寸以及系统转速等不做说明,上述的设计参数也仅作示意,不代表实际设计数值。

二、设计分析常见的凸轮形式,包括线性凸轮、盘式凸轮及圆柱凸轮三大类,很多CAD软件没有直接提供凸轮设计工具,需要用户去创建凸轮的轮廓线(通过创建公式曲线,以数据点拟合样条曲线),而轮廓的几何外形仅仅表达了凸轮的位移变化,还无法满足对凸轮性能分析的需求(速度曲线、加速度曲线和压力角变化等)的分析,造成用户设计效率低下,凸轮优化困难。

Inventor凸轮设计模块集凸轮设计、计算校验于一身,支持上述三种凸轮,其自带了多达13种拟合函数,最高支持七阶多项式,无需用户推导解析函数,即能生成高质量的凸轮轮廓。

常用机构的运动仿真(20个例程)

常用机构的运动仿真(20个例程)

常用机构的运动仿真一名资深机构设计师的话:机构设计是机械设计中的灵魂,一种独特、新颖的机构设计体现了设计者的智慧与创新的精神。

谁掌握、了解的机构越多,在研发设计新产品时就越主动,越有办法。

但是,熟练的掌握各种机构的设计并非易事,并非一日之功。

它又是一种“隐性知识”,不是刚刚毕业就可以掌握的知识。

需要日积月累,不断从实践、生活中学习,结合理论不断的总结,才能逐步地掌握。

但对于那些刚刚从事机械设计的人,才走上机械设计岗位的人,是否有一条稍微快捷的办法呢?我想尝试下面所述的方法:利用三维软件的运动仿真技术,把在实践中用到的、见到的以及在书本上学到的,常用的机构,绘制成三维模型仿真运动,让那些枯燥的平面图形变成实物一样的机构模型,并让他“动”起来,像看动画片一样。

轻松地、在较短的时间里了解各种机构的运动原理,并大大地加深印象和记忆,用这样的办法来“缩短”掌握机构的时间。

在老师的帮助下,首先完成了下面几个常用机构的仿真运动并作了简单的说明,方法是否可行?等候读者的消息。

20个常用机构的运动仿真案例1、风扇摇头机构图1是风扇摇头机构的原理模型。

该机构把电机的转动转变成扇叶的摆动。

红色的曲柄与蜗轮固接,蓝色杆为机架,绿色的连架杆与蜗杆(电机轴)固接。

电机带扇叶转动,蜗杆驱动蜗轮旋转,蜗轮带动曲柄作平面运动,而完成风扇的摇头(摆动)运动。

机构中使用了蜗轮蜗杆传动,目的是降低扇叶的摆动速度、模拟自然风。

图 1 风扇摇头机构2、用摆动扇形齿轮实现间接送料机构图2 是一个曲柄摇杆机构。

绿色的可调曲柄可作整周旋转。

并驱动扇形齿轮(摇杆)摆动,扇形齿轮又使蓝色小齿轮正反转动,若小齿轮与电磁离合器或超越离合器结合可完成间歇转动,可完成间断送料。

图 2 摆动扇形齿轮机构3、量筒开盖落料机构图3 用于电子秤自动计量的设备上,绿色的量筒挂在电子秤上(图中未显示),当充填的物料达到设定的要求时,秤重传感器发出信号,通过电磁阀接通单作用气缸,活塞杆伸出推动摇杆转动,打开量筒盖,物料下落;气缸复位,红色的配重块自动关盖。

基于Creo的凸轮机构三维参数化设计及运动仿真

基于Creo的凸轮机构三维参数化设计及运动仿真

基于Creo的凸轮机构三维参数化设计及运动仿真刘鹏冯立艳李静卢家宣蔡保杰冷腾飞苗伟晨(华北理工大学以升创新基地河北·唐山063210)摘要本文主要介绍用Creo对凸轮机构进行参数化设计并以圆柱槽状凸轮机构为例进行运动仿真,再通过C#软件完成人机交互,即操作人只需在程序界面输入槽状凸轮相应参数即可完成凸轮的三维建模,从而绘制出相应的位移、速度、加速度曲线进入仿真和分析环节。

这样即缩短了凸轮的设计周期提高了设计质量,并且解决了凸轮教学课程存在的设备成本高、设备数量少、实验时间和空间受限等难题。

关键词凸轮Creo参数化仿真中图分类号:TP391.9文献标识码:A1基于Creo软件下的凸轮三维建模1.1Creo环境下槽状凸轮机构三维参数化造型基本思路(1)参数化过程需准备可变参数包括行程、推程角、远休角、回程角、近休角、外径、壁厚、基底高度、凸轮高度、槽深、槽宽,以上变量成为参数组。

(2)通过根据凸轮不同运动规律编写推程、远休止、回程、近休止段凸轮轮廓线方程,本例应用的凸轮推程回程为正弦加速度运动规律。

(3)分段绘制出理论轮廓曲线,将各段曲线首尾相连封闭,即为完整的凸轮理论廓线。

(4)生成凸轮实体;加入参变量,实现参数化。

1.2三维建模具体步骤Creo是如今今应用最广的三维绘图软件之一,主要用于参数化实体设计,它所提供的功能包括实体设计、曲面设计、零件装配、建立工程图、模具设计、、电路设计、装配管件设计、加工制造和逆向工程等。

其系统特性主要包含单一数据库、全参数化、全相关、基于特征的实体建模等,不仅能实现零件的参数化设计,也可以方便地建立各零部件的通用件库和标准件库,从而提高设计的效率和质量。

1.2.1槽状凸轮机构的三位参数化建模自行设定初步参数组,注意推程角、远休角、回程角、近休角之和为360,(2)运行creo软件,新建零件,进入界面。

(3)选择【工具:程序】,出现菜单管理器,选择编辑设计,出现记事本,在IN PUT和END PUT语句中间输入语句,然后存盘,确认将所做的修改体现到模型中,最后在菜单管理器中输入设定的初步参数值。

用proe做机构仿真 ---凸轮机构

用proe做机构仿真 ---凸轮机构

用proe做机构仿真---凸轮机构使用proe做一个凸轮机构本文介绍用proe做机构的方法。

做一个最简单的凸轮机构需要三个实体(如图一)。

凸轮cam、滑块block,承载板base。

如果不想画这三个part,可下载。

开始制作:1、设置工作目录。

2、新建一个asm组合件。

3、安装基板base:Component-Assemble-从弹出的对话框中选择base.prt-open,从图二所示的装配面板中选择-选OK。

即完成第一个另件base的装配。

4、安装凸轮:Component-Assemble-从弹出的对话框中选择cam.prt-open,从图二所示的装配面板中点选Connections出现连接面板(图三)。

(图三)5、接上一步做销钉Pin连接:从绘图区点选凸轮上的圆柱体的圆柱面、接着点选base上10mm孔的圆柱机,紧接着分别点选凸轮与基板的两个接触平面,在连接面板输入值为0。

应该象下图这个样子后先OK完成销钉的连接。

好了,到这一步我们终于做完了第一个机构了。

事实上用这两个part就可做动画了。

下面先试一下一个关键帧动画。

proe提供两种方式做动画,一个是纯动画,好象Flash那样使用关键帧。

另一种是使用驱动方法,下面先介绍一下纯动画的制作方法。

我们要做的事情是使这个凸轮转动。

a、从菜单上选Applications,从下拉菜单中选择Animation(注:如果没有出现Animation,是因为没有安装动画模块,那么这一步做不成,请先安装好动画模块),出现如图动画控制工具箱。

b、点选动画工具箱中的拖拽工具,出现Drag面板如下图。

在Drag面板中点选照相机按钮,这样就创建好了第一个原始位置的关键帧照片。

再拍一次,作为最后一帧。

c、在绘图区直接拖拽凸轮,使其顺时针旋转90度左右,然后点相机按钮拍一次照。

d、重复第上一步分别在180度270度拍一次照。

e、在Drag面板中将Snapshot2改为Snapshot6.-close。

凸轮机构参数化动画仿真的实现

凸轮机构参数化动画仿真的实现

凸轮机构参数化动画仿真的实现
朱保利
【期刊名称】《计算机与现代化》
【年(卷),期】2001(000)002
【摘要】为了适应教学改革,满足机械原理课程多媒体教学的需要,本文应用Visual Basic6 .0语言设计开发出凸轮机构的参数化设计及动画仿
真。

%Describes the references design and the animated em ulator of Cam mechanism, which are based on VB6.0 computer language, for Multi- media CAI of Machinery Theory.
【总页数】3页(P91-93)
【作者】朱保利
【作者单位】南昌航空工业学院机械工程系,
【正文语种】中文
【中图分类】TP391.9
【相关文献】
1.盘形凸轮的参数化设计及凸轮机构的运动仿真 [J], 陆伟;刘炼
2.基于参数化机构动画仿真的齿轮—连杆机构轨迹图谱的研究 [J], 葛文杰;陈作模
3.基于CREO的对心盘形凸轮机构参数化设计与仿真 [J], 黄伟
4.基于VB的凸轮机构的参数化设计及其动画仿真 [J], 罗世民;杨春辉
5.基于VB的凸轮机构的参数化设计及其动画仿真 [J], 罗世民;杨春辉
因版权原因,仅展示原文概要,查看原文内容请购买。

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

VC++凸轮机构运动仿真编程示例 一. 机构运动原理 1. 推杆从动件的运动规律(仅列出常用的四种运动规律) 表1-1 从动件的运动方程式 行程 运动 类型 推 程 回 程

等速运动 sh0

vh0

a0

sh

00

vh0

a0

等加速等 减速运 动

前半程 sh2202



vh40

2

ah4202



shh2202



vh40

2

ah4202



后半程 shh2

020

2

vh4002 ah4202 sh20202 vh4

00

2

ah4202



余弦加 速度运动

shvhah212200022020cos

sincos







shvhah212200022020cossincos







正弦加 速度运动





shvhah00002002221222sincossin





shvhah122122200002002sincossin



2. 偏置直动尖顶推杆盘形凸轮机构 如图所示,凸轮逆时针方向转动,导路偏置于凸轮转动中心A,导路距转轴A的垂直距离为偏距e。以偏距e为半径作的圆为偏距圆。当凸轮转动时,凸轮上的偏距圆也随之转动,但其始终与导路轴线相切。凸轮转动时不便求解其上的廓线方程,故采用反转法。反转法是建立在推杆与凸轮的相对运动与参考系无关这一原理上的。所谓反转法,即给整个机构一个与凸轮转向相反的角速度-1,则凸轮静止不动,而从动件随机架反转且沿凸轮廓线相对运动,导路的反转角即凸轮的转角。如图所示,此时导路由BK00转到BK。由于AKBK000

AKBK,所以KAK0,此时导路BK与基圆和凸轮廓线的交点BB间的长度,即从动件的位移sBB。由几何关系知BKABKA00'',所以s0BKreb2212。选取坐标 系xAy,B0点为凸轮廓线起始点。当凸轮转过角,由反转法知此时从动件位于BK。则B点的坐标为 XsseYsse00sincos

cossin

 (1-1)

式(1-1)即为尖顶推杆凸轮廓线的方程式,也称为理论廓线方程。





2

3

 y

x e K B'' B

B0 rb

s K0

s0

1

e A

3. 偏置直动滚子推杆盘形凸轮机构 大多数推杆在尖顶B处装有滚子,以提高推杆的使用寿命。显然,只要使滚子中心B沿理论廓线曲线上运动,即可保证推杆预期的运动规律。如图所示,此时凸轮的轮廓曲线不是理论廓线,而是处处与滚子相切的另一条曲线,这条曲线称为凸轮的实际廓线。因为实际廓线与理论廓线在法线方向的距离处处相等,且等于滚子半径rr,故当已知廓线上任一点

Bxy,时,只要沿理论廓线在该点法线方向取距离为rr,即得实际廓线上的相应点Bxy,。由此可见,理论廓线上作一系列滚子圆的包络线即实际廓线。因此实际廓线是理论廓线的等距曲线。该等距曲线有两条,即内等距曲线和外等距曲线。 盘状槽形凸轮的廓线即该两条等距曲线。由高等数学知识可求得理论廓线B点处法线n-n的斜率(与切线斜率互为负倒数)应为

tanddddddxyxy (1-2)

式(1-2)中的dx/dy与dy/dx可根据式(1-1)求出,代入式(1-2)后有 

tansincossincos

ddsess

ssse0

0 (1-3)

式(8-10)中的角可在0360~变化,其值要根据分子、分母的正负号所决定的tan

所在象限来计算。求出角后,可计算Bxy,的坐标值: xxryyrrrcossin

 (1-4)

式中“-”号为内等距曲线,“+”号为外等距曲线。式(8-11)即为凸轮的实际廓线方程式。此时实际廓线的基圆半径r0等于理论廓线的基圆半径rb与滚子半径rr之差: rrr0br

r0 

A

理论轮廓线

实际轮廓线 B

0

B(x,y)

n

B'(x',y') n

 rr

K K0 rb

x

y

4. 机构运动的基本原理 前面计算出了凸轮机构的坐标点,当凸轮转动时,其相对于原点的坐标值要改变。此处可参考《机械原理》教材第六章“平面连杆机构”第三节“机构综合的位移矩阵法”所讲述的内容。

设凸轮上一点原来的坐标为:),(yx,当凸轮转动θ角以后,其坐标变为:

),(yx,则有以下关系:

cossinsincosyxyyxx

在做机构动画时,让θ角从0度到360度等量增加,则可以画出一系列凸轮的位置,形成连续的动画。 二. 编程步骤 1. 项目类型选择MFC AppWizard(exe),项目名取为“TuLun”。

2. 在程序向导的第1步选择建立一个单文档的应用程序,点击“Finish”结束向导。 3. 点击菜单项“Insert → Resource”,插入一个对话框资源,这个对话框将来作为凸轮机构的参数输入窗口。 4. 在参数输入对话框上右键点击,弹出属性对话框,设定其ID号为IDD_PARAMETER,设定其标题Caption为“参数输入对话框”。然后在对话框上添加控件如下图所示,为每一个控件指定ID号。 推程运动规律 一组单选钮:IDC_TUI_1;IDC_TUI_2;IDC_TUI_3;IDC_TUI_4 回程运动规律 一组单选钮:IDC_HUI_1;IDC_HUI_2;IDC_HUI_3;IDC_HUI_4 推程角:IDC_TUI_ANGL;回程角:IDC_HUI_ANGLE; 远停角:IDC_FAR_REST_ANGLE 基圆半径:IDC_BASE_CIRCLE; 行 程:IDC_COURSE;偏 距:IDC_SETOVER 推杆滚子半径:IDC_ROLLER_RADIUS;凸轮转动速度:IDC_CAM_VELOCITY

5. 为对话框添加一个类:在对话框的空白区域处双击鼠标,弹出ClassWizard窗口,在添加一个新类对话框中点击OK按钮,将新类命名为CParameterDlg,其余选择默认值,点击OK按钮确定。 6. 为对话框中的控件添加相应的成员变量:点击菜单“View →ClassWizard” ,点击“Member Variables”标签项,为对话框中的控件添加对应的成员变量如下图所示。

7. 在资源视图(ResourceView)中打开主菜单资源IDR_MAINFRAME,添加顶层菜单项“输入”,弹出菜单项“凸轮机构参数”,并如图设置ID号及标题等。 8. 点击菜单“View →ClassWizard” 为菜单项命令添加消息映射函数。在Class name中选择“CTuLunView”类,目标ID号中选择“ID_INPUT_SIZE”,在“Messages”中选择“Command”,双击,弹出“添加成员函数”对话框,点击“OK”,确认函数名为“OnInputSize”。

9. 在CTuLunView类中定义凸轮相关的成员变量如下: public: //与盘形凸轮相关的数据与变量 int m_Hui_Rule; int m_Tui_Rule; double m_Base_Radius; double m_Course; double m_Setover; int m_Tui_Angle;

相关文档
最新文档