版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章计算机辅助机构设计与分析12.1计算机辅助机构设计与分析的特点及分类12.2平面连杆机构的计算机辅助设计12.3平面连杆机构的运动分析和仿真12.4凸轮机构的计算机辅助设计12.1计算机辅助机构设计与分析的特点及分类机构的设计与分析过程较为复杂。在前面的章节中介绍了机构设计与分析的图解法和解析法。用图解法对机构进行分析,只能分析一个位置,若要求对机构多个位置,如对应原动件360个不同位置进行全面的运动分析,其作图量非常大。随着工程上对机构设计和分析的精度要求越来越高,图解法作图精度有时难以保证。解析法的优点是精度高,但计算工作量大,在早期曾一度限制了它的应用。近几十年来,随着计算机科学的发展,机构设计与分析的解析法与计算机科学相结合,形成了一门新的机构学分支,这就是机构的计算机辅助设计与分析。近年来,机构的计算机辅助设计与分析的研究趋势主要有:(1)将机构的设计与分析作为计算机辅助设计与制造(CAD/CAM)的研究基础。(2)研究包括间隙、构件的变形、摩擦与阻力、振动等复杂问题的分析与设计,以及机构的优化设计等。(3)利用计算机的绘图功能显示和模拟机构的运动。(4)为缺乏经验的设计者开发计算机辅助设计形式的综合方法,其中包括专家系统和人工智能方法。(5)快速发展适用于微型计算机机构分析与设计的软件。机构的计算机辅助分析与设计,其主要优点是:(1)计算机的快速计算能力提高了分析与设计的效率和时间。(2)计算机计算精度高和优化设计方法的采用,提高了分析与设计的质量。(3)机构的计算机辅助设计与分析作为计算机辅助设计与制造的一部分,可以直接利用数据库中的数据,并可将分析与设计的结果送入数据库,便于集成化的生产和管理。由于具有上述这些优点,机构的计算机辅助设计与分析的应用已渐成趋势。用计算机对机构进行设计与分析,最终要通过计算机软件来完成。由于机构设计与分析的内容和方法很多,因此编制的程序也不一样。目前利用计算机进行分析与设计的方法大致可分为三类:一类是针对具体的机构,用解析法推导出所有的计算公式,然后按公式编制相应的程序进行计算,如凸轮机构、连杆机构、间歇运动机构等一些特殊机构的设计与分析就属于此类方法;第二类是预先编制通用子程序,然后对机构进行分析时再调用相应的子程序进行相应的计算,如平面连杆(多杆)机构的运动和动力分析就属于这类方法;第三类是利用二维或三维造型软件进行参数化设计与分析,如Pro/E、UG、Adams等软件。当然,这里的分类只是为了说明方便,并不是绝对的。12.2平面连杆机构的计算机辅助设计
平面连杆机构的计算机辅助设计,一般是采用解析法设计的理论和所建立的设计公式,利用计算机求解,以得到设计结果。现以最常见的平面四杆机构的设计为例,介绍机构的计算机辅助设计的思路、过程和方法。常见的平面四杆机构的设计有三种类型:按给定的连杆位置设计四杆机构、按两连架杆对应位置设计四杆机构和按给定行程速比系数设计四杆机构。这里介绍按给定行程速比系数设计平面四杆机构的方法。如图12-1所示的曲柄摇杆机构,设给定行程速比系数K、摇杆的最大摆角ψ、摇杆的长度c和许用压力角[α](或最小传动角),要求综合该四杆机构。
1.建立数学模型首先由(12-1)求出极位夹角θ。由图解法知,以c和ψ作等腰三角形C1DC2,以C1C2为弦作圆周角为θ的圆,则该圆即为曲柄回转中心A所在的圆η,如图12-2所示。图12-1曲柄摇杆机构图12-2曲柄摇杆机构的几何关系该圆的圆心在摇杆最大摆角ψ的等分线上。再由给定的许用压力角[α],可分几种情况确定固定铰链A在η圆上的位置,最后求出曲柄、连杆和机架的长a、b和d。在△AC1C2中,lC1C2=2csin,lAC1=b-a,lAC2=a+b,应用正弦定理得
所以有(12-3)(12-2)可见,若能求出∠AC1C2和∠C1C2A,便可求出曲柄和连杆长a、b,然后在△AC1C2和△AC2D中应用余弦定理求出机架长d。
1)当θ=ψ时如图12-2(a)所示,当θ=ψ时,两极限位置连杆和摇杆的夹角δ1和δ2均为AD所对圆周角,所以δ1=δ2=90°-[α],故在△AC2D中应用余弦定理求得机架长度为(12-4)
2)当θ<ψ时如图12-2(b)所示,延长C1D和C2D,与圆η分别交于E1和E2,因为δ2所对应的弧小于δ1所对应的弧,所以δ2<δ1。从满足许用压力角要求的角度,应按δ2=90°-[α]综合曲柄摇杆机构。则有在△AC2D中应用余弦定理求得机架长度为(12-5)
3)当θ>ψ时如图12-2(c)所示,可见δ1<δ2,从满足许用压力角要求的角度,应按δ1=90°-[α]综合曲柄摇杆机构。则有在△AC1D中应用余弦定理求得机架长度为(12-6)用该方法综合曲柄摇杆机构时,在工作行程角j1范围内的压力角总是小于许用压力角[α]。因为当曲柄与机架重叠共线时,δ=90°-[α]=δmin,故在空回行程j2角范围内,压力角将稍大于[α],但因空行程受力较小,故压力角稍大于[α],对机构性能影响不大。
2.计算机辅助机构设计随着计算机的发展,计算机语言也从最低级的机器语言向高级语言发展,如今已是名目繁多,难以胜数了。对于初学者,一般常用的高级语言有Basic、C、Java、Fortran、Delphi等等,这里以VisualBasic为例,介绍程序设计方法。
1)界面设计在界面设计时,主要是采用人机对话的方式进行的,利用VB6.0来编制设计用户界面,创建用户对话框,设置相应的窗体。设计用户界面时,应做到界面直观、友好、美观,每一窗体控件布置合理。在机构设计中,需要进行图形显示、打印、存储等工作,因此界面设计中应将设计数据结果与图形处理有机结合,使界面能提供图文并茂的设计过程和设计结果,保证人机交互信息的顺畅流动,使设计者操作方便,直观易学。如图12-3所示为曲柄摇杆机构设计的主界面。界面中主要有“已知参数”、“计算结果”、“结构模型及动态演示”和“运行与刷新”四个区域。点击“结构模型”选项卡,可了解到各变量的含义,输入机构的已知参数,点击“运行”按钮,程序将进行有关运算,运行后在“计算结果”控件组中显示机构设计的结果参数。点击“动态演示”选项卡,则可在“Picture”控件中仿真机构运动情况,如图12-4所示。图12-3曲柄摇杆机构设计结构模型界面图12-4曲柄摇杆机构运动仿真
2)程序设计变量定义:
ConstpiAsDouble=3.1415926
ConstrrAsDouble=pi/180
PublicaAsDouble
PublicbAsDouble
PubliccAsDouble
PublicdAsDouble
PublickAsDouble
PublicthtAsDouble
Publictht1AsDouble
Publictht2AsDouble
PubliceAsDouble运行按钮主程序:
PrivateSubCommand1-Click()
k=Val(Text1.Text)
c=Val(Text2.Text)
tht=Val(Text3.Text)
e=Val(Text4.Text)
IfText1.Text=""OrText2.Text=""OrText3.Text=""OrText4.Text=""Then
BeepMsgBox"请完全输入数据!",48,"提示!"ExitSub
EndIfr=180*(k-1)/(k+1)
Ifr=thtThen
tht1=e-(tht/2)
tht2=180-(e+(tht/2))a=c*Sin(tht/2*rr)/Sin(r*rr)*(Sin(tht2*rr)-Sin(tht1*rr))
b=c*Sin(tht/2*rr)/Sin(r*rr)*(Sin(tht2*rr)+Sin(tht1*rr))
d=Sqr((a+b)^2+c^2-2*c*(a+b)*Sin(e*rr))
ElseIfr<thtThen
tht1=e-(tht/2)
tht2=180-(r+e-(tht/2))
a=(c*Sin(tht/2*rr)/Sin(r*rr)*(Sin(tht2*rr)-Sin(tht1*rr)))
b=(c*Sin(tht/2*rr)/Sin(r*rr)*(Sin(tht2*rr)+Sin(tht1*rr)))
d=Sqr((a+b)^2+c^2-2*c*(a+b)*Sin(e*rr))
ElseIfr>thtThen
tht1=e+(tht/2)-r
tht2=180-(e+(tht/2))
a=(c*Sin(tht/2*rr)/Sin(r*rr)*(Sin(tht2*rr)-Sin(tht1*rr)))
b=(c*Sin(tht/2*rr)/Sin(r*rr)*(Sin(tht2*rr)+Sin(tht1*rr)))
d=Sqr((b-a)^2+c^2-2*c*(b-a)*Sin(e*rr))
EndIf
Text5.Text=a
Text6.Text=b
Text7.Text=c
Text8.Text=d
Text9.Text=Text1.Text
Text10.Text=Text3.Text
Text11.Text=r
Text12.Text=Text4.Text
EndSub刷新按钮主程序:
PrivateSubCommand2-Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
Text7.Text=""
Text8.Text=""
Text9.Text=""
Text10.Text=""
Text11.Text=""
Text12.Text=""
EndSub机构运动仿真程序:
PrivateSubForm-Load()
Line1.Visible=True
Line2.Visible=False
Label24.ForeColor=vbBlack
Label25.ForeColor=vbRed
Picture1.Visible=True
ShockwaveFlash1.Visible=False
ShockwaveFlash1.Movie=(App.Path&"\movice\摇杆机构.swf")
EndSub返回按钮程序:
PrivateSubLabel23-Click()
UnloadMe
Form2.Show
EndSub12.3平面连杆机构的运动分析和仿真利用计算机对机构进行运动分析时,其步骤一般是:首先利用解析法对机构进行位置分析、速度分析和加速度分析,得到相应的数学模型;然后根据数学模型设计、编制计算机求解程序,上机调试程序,从而得到分析的数据结果并输出结果。现以最常见的铰链四杆机构为例,介绍机构计算机辅助运动分析的方法。
1.建立数学模型如图12-5所示的铰链四杆机构,已知机构各构件尺寸L1、L2、L3、L4,原动件1的转角为j1,等角速度为ω1。图12-5曲柄摇杆机构利用解析法进行位置分析、速度分析和加速度分析的过程和方法详见第3章,这里不再赘述。
2.计算机辅助机构运动分析
1)界面设计图12-6所示为铰链四杆机构运动分析的界面。界面中有“结构模型”、“数据显示”、“运动线图”和“运动仿真”四个选项卡。使用者首先在“结构模型”选项卡中了解到各变量的含义,输入机构的已知参数,选择曲柄的转向和机构装配方式等,然后点击“显示”按钮,程序进行有关运算,铰链四杆机构的类型和机构在某一位置的运动参数就会分别在“系统信息”和“输出数据”控件组中显示出来。如图12-7所示,点击“数据显示”选项卡,就会在“Picture”控件中显示机构在一个循环中不同位置时从动件3的位移、速度和加速度数据。如图12-8所示,点击“运动线图”选项卡,则可在“Picture”控件中显示机构在一个循环中不同位置时从动件3的位移、速度和加速度的运动曲线。如图12-9所示,点击“运动仿真”选项卡和演示控件,则可在“Picture”控件中显示仿真机构的运动情况。图12-6铰链四杆机构运动分析界面图12-7机构运动分析数据显示图12-8从动件运动线图图12-9机构运动仿真
2)运动分析程序设计变量定义程序:
Dimm1AsInteger
DimjduAsInteger
DimBZAsInteger
Dimjw1(0To360),jw2(0To360),jw3(0To360)
Dimjs1(0To360),js2(0To360),js3(0To360)
Dimjj1(0To360),jj2(0To360),jj3(0To360)
DimbzhiAsInteger时间显示程序:
PrivateSubclockwise-Click()m=-1EndSub数据显示选项卡程序:
PrivateSubCommand5-Click()ListView1.Visible=FalsePicture2.Visible=FalsePicture3.Visible=FalsePicture1.Visible=TrueCommand5.Caption="数据显示"EndSub数据导出程序:
PrivateSubCommand6-Click()
IfCommand6.Caption="导出数据"Then
Setexl=NewExcel.Application
exl.Visible=True
exl.SheetsInNewWorkbook=1
Setwbook=exl.Workbooks.Addexl.ActiveSheet.Rows.HorizontalAlignment=xlVAlignCenter'水平居中
exl.ActiveSheet.Rows.VerticalAlignment=xlVAlignCenter'垂直居中
Withexl.ActiveSheet
Cells(1,1).Value="Φ1/(°)"
Cells(1,2).Value="Φ3/(°)"
Cells(1,3).Value="ω3/(rad/s)"
Cells(1,4).Value="α3/(rad/s^2)"
Dimii
Forii=0To360
Cells(ii+2,1).Value=ii
Cells(ii+2,
2).Value=Mid$(Str$(jw3(ii)*180/3.1415926),2,5)
Cells(ii+2,3).Value=Mid$(Str$(js3(ii)),1,5)
Cells(ii+2,4).Value=Mid$(Str$(jj3(ii)),1,5)
Nextii
EndWith
exl.ActiveSheet.PageSetup.Orientation=xlPortrait'xlLandscape
exl.ActiveSheet.PageSetup.PaperSize=xlPaperA4
exl.DisplayAlerts=False
exl.DisplayAlerts=True
Setexl=Nothing
EndIf
IfCommand6.Caption="数据显示"Then
ListView1.Visible=True
Picture1.Visible=False
Picture2.Visible=False
Picture3.Visible=FalseIfCommand1.Caption="运行"Then
Beep
Label9.ForeColor=&HFF&
Label9.Caption="请先点击|运行|..."
Else:Command6.Caption="导出数据"EndIfEndIfEndSub显示按钮程序:
PrivateSubCommand7-Click()
Picture2.Visible=True
ListView1.Visible=False
Picture1.Visible=False
Picture3.Visible=False
Command6.Caption="数据显示"
IfCommand1.Caption="运行"Then
Beep
Label9.ForeColor=&HFF&
Label9.Caption="请先点击|运行|..."
EndIf
EndSub演示按钮程序:
PrivateSubCommand8-Click()
Picture3.Visible=TrueListView1.Visible=False
Picture1.Visible=False
Picture2.Visible=False
Command6.Caption="数据显示"
IfCommand1.Caption="运行"Then
Beep
Label9.ForeColor=&HFF&
Label9.Caption="请先点击|运行|..."
EndIfEndSub清除按钮程序:
PrivateSubCommand9-Click()
Beep
Txt1.Text=""
Txt2.Text=""
Txt3.Text=""
Txt4.Text=""
Txt5.Text=""
Txt6.Text=""
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
Command6.Caption="数据显示"
ListView1.ListItems.Clear
Picture2.Cls
Picture3.Cls
Picture3.Enabled=True
clockwise.Value=False
unclock.Value=False
Combo1.Text=请选择
Label9.Caption=“欢迎使用SP平面杆机构分析系统”IfCommand1.Caption="显示"ThenCommand1.Caption="运行"EndIf
IfCommand1.Caption="演示"Then
Command1.Caption="运行"
EndIf
IfCommand2.Caption="暂停"Then
Command1.Caption="演示"
EndIf
EndSub
PrivateSubunclock-Click()m=1EndSub参数计算子程序:
PrivateSubCommand1-Click()Label1.ForeColor=&H8000000ELabel2.ForeColor=&H8000000ELabel3.ForeColor=&H8000000ELabel4.ForeColor=&H8000000ELabel5.ForeColor=&H8000000ELabel6.ForeColor=&H8000000ELabel7.ForeColor=&H8000000E
Label8.ForeColor=&H8000000ELabel9.ForeColor=&H8000000ELabel9.Caption="数据处理中...请稍后..."Diml(4)Dimφ(3),φ1(3),φ2(3)Dimpfpu(2,2),pfpv(2,1),pfpu1(2,2)Dimdpfpu(2,2),dpfpv(2,1)Dimi,j,nAsInteger
Dimj1,j3,jw11AsSinglerj=180/3.1415926bzhi=1l(1)=Val(Txt1.Text)l(2)=Val(Txt2.Text)l(3)=Val(Txt3.Text)l(4)=Val(Txt4.Text)n=Val(Txt5.Text)jw11=Val(Txt6.Text)jdu=jw11
IfTxt1.Text=""OrTxt2.Text=""OrTxt3.Text=""OrTxt4.Text=""Then
Beep
Label1.ForeColor=&HFFFF&
Label2.ForeColor=&HFFFF&
Label3.ForeColor=&HFFFF&
Label4.ForeColor=&HFFFF&
Label9.ForeColor=&HFF&
Label9.Caption="长度数据输入不完全...请检查后重试..."
bzhi=0
ExitSub
EndIf
IfTxt5.Text=""OrTxt6.Text=""Then
Beep
Label5.ForeColor=&HFFFF&
Label6.ForeColor=&HFFFF&
Label9.ForeColor=&HFF&
Label9.Caption="曲柄参数输入不完全...请检查后重试..."
bzhi=0
ExitSub
EndIf
IfCombo1.Text=""Then
Beep
Label7.ForeColor=&HFFFF&
Label9.ForeColor=&HFF&
Label9.Caption="转向系数未选择...请检查后重试..."
ExitSub
EndIf
Rem确定BCD的方向
IfCombo1.Text="逆时针"Thenm1=1
IfCombo1.Text="顺时针"Thenm1=0
Ifclockwise.Value=FalseAndunclock.Value=FalseThen
Beep
Label8.ForeColor=&HFFFF&
Label9.ForeColor=&HFF&
Label9.Caption="铰链BCD未选择...请检查后重试..."
bzhi=0
ExitSub
EndIf
Rem定义M的值
Ifclockwise.Value=TrueThenm=-1
Ifunclock.Value=TrueThenm=1
Rem判别机构的类型
Dimmax,min,sAsSingle
max=l(1)
min=l(1)
Fori=2To4
Ifl(i)>maxThenmax=l(i)
Ifl(i)<minThenmin=l(i)
NextiFori=1To4
s=s+l(i)Nexti
Ifmax>s-maxThenLabel9.ForeColor=&HFF&Label9.Caption="机构无法装配...请重新输入数据..."bzhi=0ExitSub
EndIf
s=s-max-min
Dima,DAsInteger
DimmmAsInteger
mm=360
If(max+min)>sThen
Label9.ForeColor=&H8000000E
Label9.Caption="该机构为:双摇杆机构...^-^..."
BZ=2
Callacmax(l(),a1min,a1max)Ifjw11>a1minAndjw11<a1maxThen
Label9.ForeColor=&HFF&
Label9.Caption="曲柄转角有误...请重新输入..."
bzhi=0
Txt6.Text=""
ExitSubElseFori=0Toa1min
Callwwww(i,a1min,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())NextiFori=a1maxTo360
Callwwww(i,mm,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())Nexti
EndIf
ElseIf(max+min)<=sAndl(2)=minThen
Label9.ForeColor=&H8000000E
Label9.Caption="该机构为:双摇杆机构...^-^..."
BZ=2
a=(l(1)^2+l(4)^2-(l(2)+l(3)^2)/(2*l(1)*l(4)))
D=((-l(3)^2+l(4)^2+(l(2)+l(1))^2)/(2*(l(1)+l(2))*l(4)))
a1max=Atn(Sqr(1-((l(1)^2+l(4)^2-(l(2)+l(3))^2)/(2*l(1)*l(4)))^2)/((l(1)^2+1(4)^2-(l(2)+l(3))^2)/(2*l(1)*l(4))))*rj
a1min=Atn(Sqr(1-((-l(3)^2+l(4)^2+(l(2)+l(1))^2)/(2*(l(1)+l(2))*l(4)))^2)/((-l(3)^2+l(4)^2+(l(2)+l(1))^2)/(2*(l(1)+l(2))*l(4))))*rjIfa1max<0Thena1max=a1max+180Ifa1min<0Thena1min=a1min+180Ifjw11<a1minOrjw11>a1maxThen
Label9.ForeColor=&HFF&
Label9.Caption="曲柄转角有误...请重新输入..."
bzhi=0
Txt6.Text=""
ExitSub
Else
Forj=Int(a1min+1)ToInt(a1max)
Callwwww(j,a1max,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())
NextjEndIf
ElseIf(max+min)<=sAndl(4)=minThen
Label9.ForeColor=&H8000000E
Label9.Caption="该机构为:双曲柄机构...^-^..."
a1max=360:a1min=0
Fori=0To360
Callwwww(i,mm,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())
NextiElseIfl(1)=minThen
Label9.ForeColor=&H8000000E
Label9.Caption="该机构为:曲柄摇杆机构...^-^..."
a1max=360:a1min=0
Fori=0To360Callwwww(i,mm,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())
NextiElse′摇杆为原动件时
Label9.ForeColor=&H8000000E
Label9.Caption="该机构为:双摇杆机构...^-^..."
BZ=1
a=((l(1)^2+l(4)^2-(l(2)+l(3))^2)/(2*l(1)*l(4)))
D=(l(1)^2+l(4)^2-(l(2)-l(3))^2)/(2*l(1)*l(4))
a1max=[ZK(]Atn(Sqr(1-((l(1)^2+l(4)^2-(l(2)+l(3))^2)/(2*l(1)*l(4)))^2)/((l(1)^2+l(4)^2-(l(2)+l(3))^2)/(2*l(1)*l(4))))*rja1min=Atn(Sqr(1-D^2)/D)*rjIfa1max<=0Thena1max=a1max+180Ifa1min<0Thena1min=a1min+180Ifjw11<a1minOrjw11>a1maxThen
Label9.ForeColor=&HFF&
Label9.Caption="曲柄转角有误...请重新输入..."
bzhi=0
Txt6.Text="“
ExitSub
ElseForj=Int(a1min+1)ToInt(a1max-1)Callwwww(j,a1max,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())NextjEndIfEndIf
jdu=jw11
Rem减少数值的有效位数由文本框显示
Text1.Text=Mid$(Str$(jw2(jdu)*rj),2,5)
Text2.Text=Mid$(Str$(jw3(jdu)*rj),2,5)
Text3.Text=Mid$(Str$(js2(jdu)),1,5)
Text4.Text=Mid$(Str$(js3(jdu)),1,5)
Text5.Text=Mid$(Str$(jj2(jdu)),1,5)
Text6.Text=Mid$(Str$(jj3(jdu)),1,5)
Rem由listview显示运算结果
ListView1.ListItems.ClearFori=0To360
Setitemx=ListView1.ListItems.Add(,,CCur(i))
Withitemx
.SubItems(1)=Mid$(Str$(jw3(i)*rj),2,5)
.SubItems(2)=Mid$(Str$(js3(i)),1,5)
.SubItems(3)=Mid$(Str$(jj3(i)),1,5)
EndWithNextiRem调用模块绘制运动曲线及其静态图
Callddraw3(l(),jw3(),jdu,m,Picture3)Callddraw2(jdu,rh,l(),m,n,jw3(),js3(),jj3(),Picture2)jdu=jw11Command1.Caption="显示"EndSubPrivateSubCommand2-Click()
Ifbzhi=1ThenIfTxt1.Text[ZK(]=""OrTxt2.Text=""OrTxt3.Text=""OrTxt4.Text=""OrTxt5.Text=""OrTxt6.Text=""OrCombo1.Text=""ThenLabel9.ForeColor=&HFF&Label9.Caption="数据输入不完全...请检查后重试..."ElseIfii<0Orii>360ThenLabel9.ForeColor=&HFF&Label9.Caption="转角超出范围(0-360)...请检查后重试..."
ElseIfclockwise.Value=FalseAndunclock.Value=FalseThenLabel9.ForeColor=&HFF&Label9.Caption="铰链ABCD顺序未选定...请检查后重试..."
ElseIfCommand2.Caption="演示"ThenTimer1.Enabled=True
IfBZ=2ThenPicture3.Cls
Label9.Caption="Sorry该机构无法演示完全,请重新输入数据:("EndIf
Command2.Caption="暂停"Else
Timer1.Enabled=False
Command2.Caption="演示"EndIfElseBeepLabel9.ForeColor=&HFF&Label9.Caption="请先点击|运行|..."ExitSub
EndIf
EndSubPrivateSubCommand3-Click()
Fori=0To360
jw3(i)=0
js3(i)=0
jj3(i)=0
Nexti
UnloadMe
FX0.ShowEndSubPrivateSubCommand4-Click()about.ShowEndSubPrivateSubForm-Load()Framemax.Visible=FalseTimer1.Interval=10Combo1.AddItem"顺时针"Combo1.AddItem"逆时针"Timer1.Enabled=FalseCombohelp.AddItem"系统信息"Combohelp.AddItem"数据输入"Combohelp.AddItem"数据显示"Combohelp.AddItem"导出数据"Combohelp.AddItem"运动线图"Combohelp.AddItem"运动仿真"EndSub帮助系统程序:PrivateSubCommandhelp-Click()IfCombohelp.Text="请选择帮助项"ThenLabelhelp.Caption="请选择帮助项"EndIfIfCombohelp.Text="系统信息"ThenLabelhelp.Caption="系统信息主要包括系统提示,如系统数据输入不完全,机构类型等"EndIf
IfCombohelp.Text="数据输入"Then
Labelhelp.Caption="输入的数据必须正确、完全,如果输入不完全,系统信息会提示具体数据输入,其中转角在0-360之间"
EndIf
IfCombohelp.Text="数据显示"Then
Labelhelp.Caption="在系统运行的条件下,点击′数据显示′按钮就可以显示所有数据,此时′数据显示′按钮变成数据′导出数据′"
EndIf
IfCombohelp.Text="导出数据"Then
Labelhelp.Caption="在系统运行的条件下,点击′导出数据′按钮就可以把所有数据导出到EXCEL里进行编辑,处理"
EndIf
IfCombohelp.Text="运动线图"Then
Labelhelp.Caption="在系统运行的条件下,点击′运动线图′按钮,然后点击′显示′"
EndIf
IfCombohelp.Text="运动仿真"Then
Labelhelp.Caption=“在系统运行的条件下,点击′运动仿真′按钮,然后点击′显示′,则显示静态结构,然后点击′演示′可以实现运动仿真,点击′暂停′按钮停止运动仿真"
EndIf
EndSub绘制运动线图主程序:
PrivateSubPicture3-Click()
Framemax.Visible=True
EndSubPrivateSubPicturemax-Click()Framemax.Visible=FalseEndSubPrivateSubTimer1-Timer()Diml(4)l(1)=Val(Txt1.Text):l(2)=Val(Txt2.Text)l(3)=Val(Txt3.Text):l(4)=Val(Txt4.Text)IfBZ=1Then
Ifm1=1Thenjdu=jdu+1
Ifm1=0Thenjdu=jdu-1Callacmax(l(),a1min,a1max)
Ifjdu>=Int(a1max)Thenjdu=Int(a1max)m1=0ElseIfjdu<=Int(a1min)+1Thenjdu=Int(a1min)+1m1=1EndIfCallddraw3(l(),jw3(),jdu,m,Picture3)Callddrawmax(l(),jw3(),jdu,m,Picturemax)
ElseIfBZ=0ThenIfCombo1.Text="逆时针"Thenjdu=(jdu+1)Mod360Callddraw3(l(),jw3(),jdu,m,Picture3)Callddrawmax(l(),jw3(),jdu,m,Picturemax)
ElseDoWhile(jdu=0)jdu=360Loopjdu=jdu-1Callddraw3(l(),jw3(),jdu,m,Picture3)Callddrawmax(l(),jw3(),jdu,m,Picturemax)EndIfElseIfm1=1ThenDoWhile(jdu=360)jdu=0Loopjdu=jdu+1Callddraw3(l(),jw3(),jdu,m,Picture3)Callddrawmax(l(),jw3(),jdu,m,Picturemax)Ifjdu=Int(a1min+1)Thenm1=0EndIfEndIfIfm1=0ThenDoWhile(jdu=0)jdu=360Loopjdu=jdu-1Callddraw3(l(),jw3(),jdu,m,Picture3)Callddrawmax(l(),jw3(),jdu,m,Picturemax)Ifjdu=Int(a1max)Thenm1=1Callddraw3(l(),jw3(),jdu,m,Picture3)Callddrawmax(l(),jw3(),jdu,m,Picturemax)EndIfEndIfEndIfEndSubPrivateSubTimer2-Timer()Label10.Caption=NowEndSubPrivateSubX-Click()FX0.ShowUnloadMeEndSubRem子程序设计Rem计算主动件的最大及其最小角PublicSubacmax(l(),amin,amax)Dima,B,C,sDimaa3,ai3,i1DimiAsSingleFori=0To360i1=i*180/3.1415926a=2*l(1)*l(3)*Sin(i1)B=2*l(3)*(l(1)*Cos(i1)-l(4))C=l(2)^2-l(1)^2-l(3)^2-l(4)^2+2*l(1)*l(4)*Cos(i1)s=a^2+B^2-C^2Ifs<=0Thenai3=i-1:ExitForNextiFori=360To0Step-1i1=i*180/3.1415926a=2*l(1)*l(3)*Sin(i1)B=2*l(3)*(l(1)*Cos(i1)-l(4))C=l(2)^2-l(1)^2-l(3)^2-l(4)^2+2*l(1)*l(4)*Cos(i1)s=a^2+B^2-C^2Ifs<=0Thenaa3=i+1:ExitForNextiamin=ai3amax=aa3EndSubRem计算从动件参数子程序PublicSubwwww(ii,max,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())Dima,B,C,D,E,FAsSingleDimatn3,atn2AsSingleDimat1,at2,dat1,dat2,ddat1,ddat2AsSingleDimjw1(0To360)Dimjs1(0To360)Dimjj1(-360To360)Dimφ(3),φ1(3),φ2(3)Dimpfpu(2,2),pfpv(2,1),pfpu1(2,2)Dimdpfpu(2,2),dpfpv(2,1)Dimj1Dimi,jAsIntegerpi=3.1415926rh=pi/180Ifii>maxThenExitSubjw1(ii)=ii*rh:j1=jw1(ii)a=2*l(1)*l(3)*Sin(j1)B=2*l(3)*(l(1)*Cos(j1)-l(4))C=l(2)^2-l(1)^2-l(3)^2-l(4)^2+2*l(1)*l(4)*Cos(j1)D=2*l(1)*l(2)*Sin(j1)E=2*l(2)*(l(1)*Cos(j1)-l(4))F=l(1)^2+l(2)^2-l(3)^2+l(4)^2-2*l(1)*l(4)*Cos(j1)atn2=Atn((D+m*(Sqr(D^2+E^2-F^2)))/(E-F))atn3=Atn((a+m*(Sqr(a^2+B^2-C^2)))/(B-C))Ifatn2<0Then
atn2=atn2+piEndIfIfatn3<0Then
atn3=atn3+piEndIfjw2(ii)=2*atn2jw3(ii)=2*atn3Dimci(1To3),si(1To3)AsSingleDimsAsSingleDimc4(2,2)AsSingleDimc1(2,1)AsSingle(1)=jw1(ii)(2)=jw2(ii)(3)=jw3(ii)Fori=1To3
ci(i)=l(i)*Cos(φ(i)):si(i)=l(i)*Sin(φ(i))Nextipfpu(1,1)=-si(2):pfpu(1,2)=si(3)pfpu(2,1)=ci(2):pfpu(2,2)=-ci(3)pfpv(1,1)=-si(1):pfpv(2,1)=ci(1)s=pfpu(1,1)*pfpu(2,2)-pfpu(1,2)*pfpu(2,1)c4(1,1)=pfpu(2,2):c4(1,2)=-pfpu(1,2)c4(2,1)=-pfpu(2,1):c4(2,2)=pfpu(1,1)Fori=1To2
Forj=1To2
pfpu1(i,j)=1/s*c4(i,j)Nextj
pfpu1(1,1)=1/s*c4(1,1):pfpu1(1,2)=1/s*c4(1,2)
pfpu1(2,1)=1/s*c4(2,1):pfpu1(2,2)=1/s*c4(2,2)Nexti
Fori=1To2
c1(i,1)=0Nexti
Fori=1To2
Forj=1To2
c1(i,1)=c1(i,1)+(-pfpu1(i,j))*pfpv(j,1)
NextjNexti
Fori=1To2
1(i+1)=0Nexti
1(1)=pi*n/30
Fori=1To2φ1(i+1)=φ1(i+1)+c1(i,1)*φ1(1)js2(ii)=φ1(2):js3(ii)=φ1(3)
NextiDimc2(2,1),c3(2,1)AsSingledpfpu(1,1)=-φ1(2)*ci(2)dpfpu(1,2)=φ1(3)*ci(3)dpfpu(2,1)=-φ1(2)*si(2)dpfpu(2,2)=φ1(3)*si(3)dpfpv(1,1)=-φ1(1)*ci(1)dpfpv(2,1)=-φ1(1)*si(1)Fori=1To2
c1(i,1)=0:c2(i,1)=0NextiFori=1To2
Forj=1To2c1(i,1)=c1(i,1)+dpfpu(i,j)*φ1(j+1)
Nextjc2(i,1)=c2(i,1)+dpfpv(i,1)*φ1(1)NextiFori=1To2
c3(i,1)=c1(i,1)+c2(i,1)NextiFori=1To2
2(i+1)=0NextiFori=1To2
Forj=1To2
φ2(i+1)=φ2(i+1)+(-pfpu1(i,j))*c3(j,1)
jj2(ii)=φ2(2):jj3(ii)=φ2(3)
NextjNextiEndSubRem绘制从动件运动线图子程序PublicSubddraw2(ii,rh,l(),m,n,jw3(),js3(),jj3(),Picture2)
Rem建立加速度坐标系
Picture2.Cls
Picture2.DrawWidth=2
Picture2.Scale(-29,32)-(44,-25)
Picture2.Line(-28,0)-(43,0)
Picture2.Line(0,28)-(0,-22),vbBlue
Picture2.CurrentX=42:Picture2.CurrentY=3:Picture2.Print"φ"
Picture2.CurrentX=2:Picture2.CurrentY=30:Picture2.Print"a(rad/s^2)"
Picture2.Line(40,1)-(43,0)
Picture2.Line(40,-1)-(43,0)
Picture2.Line(-1,25)-(0,28),vbBlue
Picture2.Line(1,25)-(0,28),vbBlueFori=0To40Step40/6
Picture2.Line(i,1)-(i,0)
Picture2.CurrentX=i-4:CurrentY=-2:Picture2.Print360*i/40Nexti
Picture2.CurrentX=-16:Picture2.CurrentY=-22
Picture2.Print"绿线-位移红线-速度蓝线-加速度"Rem建立速度坐标系
Picture2.Line(-13,28)-(-13,-22),vbRedPicture2.CurrentX=-13:Picture2.CurrentY=30:Picture2.Print"v(rad/s)"Picture2.Line(-12,25)-(-13,28),vbRedPicture2.Line(-14,25)-(-13,28),vbRed
Rem建立位移坐标系
Picture2.Line(-26,28)-(-26,-22),vbGreenPicture2.CurrentX=-26:Picture2.CurrentY=30:Picture2.Print"s(rad)"Picture2.Line(-25,25)-(-26,28),vbGreenPicture2.Line(-27,25)-(-26,28),vbGreenFori=-20To20Step5Picture2.Line(1,i)-(0,i),vbBluePicture2.Line(-12,i)-(-13,i),vbRedPicture2.Line(-25,i)-(-26,i),vbGreenNextiDimrx,rms,rmv,rmarx=40/360Dimms,ma,mvDimjw2(0To360),js2(0To360),jj2(0To360)Forii=0To360IfAbs(jw3(ii))>Abs(ms)Then
ms=Abs(jw3(ii))EndIfIfAbs(js3(ii))>Abs(mv)Then
mv=Abs(js3(ii))EndIfIfAbs(jj3(ii))>Abs(ma)Then
ma=Abs(jj3(ii))EndIfNextiirms=20/ms:rmv=20/mv:rma=20/maRem绘图Forii=1To359Picture2.Line(ii*rx,jw3(ii)*rms)-((ii+1)*rx,jw3(ii+1)*rms),vbGreenPicture2.Line(ii*rx,js3(ii)*rmv)-((ii+1)*rx,js3(ii+1)*rmv),vbRedPicture2.Line(ii*rx,jj3(ii)*rma)-((ii+1)*rx,jj3(ii+1)*rma),vbBlueNextiiFori=5To20Step5Picture2.CurrentX=0.5:Picture2.CurrentY=i+1Picture2.PrintCCur((((ma*i/20)*100)\1)/100)Picture2.CurrentX=-12.5:Picture2.CurrentY=i+1
Picture2.PrintCCur((((mv*i/20)*100)\1)/100)Picture2.CurrentX=-25.5:Picture2.CurrentY=i+1Picture2.PrintCCur((((ms*i/20)*100)\1)/100)NextiFori=-5To-20Step-5Picture2.CurrentX=0.5:Picture2.CurrentY=i+2Picture2.PrintCCur((((ma*i/20)*100)\1)/100)Picture2.CurrentX=-12.5:Picture2.CurrentY=i+2Picture2.PrintCCur((((mv*i/20)*100)\1)/100)Picture2.CurrentX=-25.5:Picture2.CurrentY=i+2Picture2.PrintCCur((((ms*i/20)*100)\1)/100)NextiEndSubRem绘制机构静态动态图子程序PublicSubddraw3(l(),jw3(),ii,m,Picture3)Dima1,a3AsSingleDimx1,y1,x3,y3AsSingleDimrrAsSingleDimrh1AsSinglerh1=3.1415926/180Callmax(l(),lmax)rr=40/(lmax*1.2)Rem建立坐标系
Picture3.ClsPicture3.DrawWidth=2Picture3.Scale(-23,29)-(50,-28)Picture3.Line(0,0)-(46,0)Picture3.Line(0,28)-(0,0)Picture3.CurrentX=46:Picture3.CurrentY=2:Picture2.Print"X"Picture3.CurrentX=3:Picture3.CurrentY=28:Picture2.Print"Y"Picture3.Line(43,1)-(46,0)Picture3.Line(43,-1)-(46,0)Picture3.Line(-1,25)-(0,28)Picture3.Line(1,25)-(0,28)Picture3.CurrentX=0:Picture3.CurrentY=0Picture3.Line-(-2,-3)Picture3.Line-(5,-3)Picture3.Line(2,-3)-(0,0)Fori=-3To5Step3[HJ]
Picture3.CurrentX=i:Picture3.CurrentY=-3:Picture3.Line-(i+3,-4)NextiPicture3.CurrentX=l(4)*rr:Picture3.CurrentY=0Picture3.Line-(-2+l(4)*rr,-3)Picture3.Line-(l(4)*rr+5,-3)Picture3.Line(2+l(4)*rr,-3)-(l(4)*rr,0)Fori=l(4)*rr-3To5+l(4)*rrStep3
Picture3.CurrentX=i:Picture3.CurrentY=-3:Picture3.Line-(i+3,-4)NextiRem建立模型
Picture3.DrawWidth=4a1=ii*rh1:a3=jw3(ii)x1=l(1)*rr*Cos(a1):y1=l(1)*rr*Sin(a1)x3=l(4)*rr+l(3)*rr*Cos(a3):y3=l(3)*rr*Sin(a3)Picture3.Line(0,0)-(x1,y1),vbBluePicture3.Line(x1,y1)-(x3,y3),vbRedPicture3.Line(x3,y3)-(l(4)*rr,0),vbGreenPicture3.FillStyle=0Picture3.FillColor=vbYellowPicture3.Circle(l(4)*rr,0),0.5,vbYellowPicture3.Circle(0,0),0.5,vbYellowPicture3.Circle(x1,y1),0.5,vbYellowPicture3.Circle(x3,y3),0.5,vbYellowPicture3.CurrentX=16:Picture3.CurrentY=-5:Picture3.Print"点击放大"EndSubRem计算最长杆长
PublicSubmax(l(),lmax)lmax=l(1)
Fori=2To4
Ifl(i)>lmaxThenlma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024美团外卖店配送时效及服务质量合同3篇
- 2025年度体育用品代销及赛事赞助合同4篇
- 2025年度别墅庭院景观照明节能改造与维护合同3篇
- 2024玉石行业区块链技术应用与合作合同集锦3篇
- 2024版事业单位续签劳动合同申请书
- 2025年度物流运输代理服务合同标准范本4篇
- 2025年度智能电网用电安全出租房屋合同范本4篇
- 2025年分公司设立与市场开发合作协议书4篇
- 建筑垃圾再利用可行性研究报告x
- 2025年电子商务平台租赁续租服务协议3篇
- TD/T 1060-2021 自然资源分等定级通则(正式版)
- 人教版二年级下册口算题大全1000道可打印带答案
- 《创伤失血性休克中国急诊专家共识(2023)》解读
- 仓库智能化建设方案
- 海外市场开拓计划
- 2024年度国家社会科学基金项目课题指南
- 供应链组织架构与职能设置
- 幼儿数学益智图形连线题100题(含完整答案)
- 2024年九省联考新高考 数学试卷(含答案解析)
- 红色历史研学旅行课程设计
- 如何避免护理患者投诉
评论
0/150
提交评论