版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第12章計算機輔助機構設計與分析12.1計算機輔助機構設計與分析的特點及分類12.2平面連桿機構的計算機輔助設計12.3平面連桿機構的運動分析和仿真12.4凸輪機構的計算機輔助設計12.1計算機輔助機構設計與分析的特點及分類機構的設計與分析過程較為復雜。在前面的章節(jié)中介紹了機構設計與分析的圖解法和解析法。用圖解法對機構進行分析,只能分析一個位置,假設要求對機構多個位置,如對應原動件360個不同位置進行全面的運動分析,其作圖量非常大。隨著工程上對機構設計和分析的精度要求越來越高,圖解法作圖精度有時難以保證。解析法的優(yōu)點是精度高,但計算工作量大,在早期曾一度限制了它的應用。近幾十年來,隨著計算機科學的開展,機構設計與分析的解析法與計算機科學相結合,形成了一門新的機構學分支,這就是機構的計算機輔助設計與分析。近年來,機構的計算機輔助設計與分析的研究趨勢主要有:〔1)將機構的設計與分析作為計算機輔助設計與制造(CAD/CAM)的研究根底。〔2)研究包括間隙、構件的變形、摩擦與阻力、振動等復雜問題的分析與設計,以及機構的優(yōu)化設計等。〔3)利用計算機的繪圖功能顯示和模擬機構的運動?!?)為缺乏經驗的設計者開發(fā)計算機輔助設計形式的綜合方法,其中包括專家系統(tǒng)和人工智能方法?!?)快速開展適用于微型計算機機構分析與設計的軟件。機構的計算機輔助分析與設計,其主要優(yōu)點是:〔1)計算機的快速計算能力提高了分析與設計的效率和時間?!?)計算機計算精度高和優(yōu)化設計方法的采用,提高了分析與設計的質量。〔3)機構的計算機輔助設計與分析作為計算機輔助設計與制造的一局部,可以直接利用數據庫中的數據,并可將分析與設計的結果送入數據庫,便于集成化的生產和管理。由于具有上述這些優(yōu)點,機構的計算機輔助設計與分析的應用已漸成趨勢。用計算機對機構進行設計與分析,最終要通過計算機軟件來完成。由于機構設計與分析的內容和方法很多,因此編制的程序也不一樣。目前利用計算機進行分析與設計的方法大致可分為三類:一類是針對具體的機構,用解析法推導出所有的計算公式,然后按公式編制相應的程序進行計算,如凸輪機構、連桿機構、間歇運動機構等一些特殊機構的設計與分析就屬于此類方法;第二類是預先編制通用子程序,然后對機構進行分析時再調用相應的子程序進行相應的計算,如平面連桿〔多桿〕機構的運動和動力分析就屬于這類方法;第三類是利用二維或三維造型軟件進行參數化設計與分析,如Pro/E、UG、Adams等軟件。當然,這里的分類只是為了說明方便,并不是絕對的。12.2平面連桿機構的計算機輔助設計
平面連桿機構的計算機輔助設計,一般是采用解析法設計的理論和所建立的設計公式,利用計算機求解,以得到設計結果?,F以最常見的平面四桿機構的設計為例,介紹機構的計算機輔助設計的思路、過程和方法。常見的平面四桿機構的設計有三種類型:按給定的連桿位置設計四桿機構、按兩連架桿對應位置設計四桿機構和按給定行程速比系數設計四桿機構。這里介紹按給定行程速比系數設計平面四桿機構的方法。如圖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來編制設計用戶界面,創(chuàng)立用戶對話框,設置相應的窗體。設計用戶界面時,應做到界面直觀、友好、美觀,每一窗體控件布置合理。在機構設計中,需要進行圖形顯示、打印、存儲等工作,因此界面設計中應將設計數據結果與圖形處理有機結合,使界面能提供圖文并茂的設計過程和設計結果,保證人機交互信息的順暢流動,使設計者操作方便,直觀易學。如圖12-3所示為曲柄搖桿機構設計的主界面。界面中主要有“參數〞、“計算結果〞、“結構模型及動態(tài)演示〞和“運行與刷新〞四個區(qū)域。點擊“結構模型〞選項卡,可了解到各變量的含義,輸入機構的參數,點擊“運行〞按鈕,程序將進行有關運算,運行后在“計算結果〞控件組中顯示機構設計的結果參數。點擊“動態(tài)演示〞選項卡,那么可在“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
Beep
MsgBox"請完全輸入數據!",48,"提示!"
ExitSub
EndIf
r=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
EndSub
12.3平面連桿機構的運動分析和仿真利用計算機對機構進行運動分析時,其步驟一般是:首先利用解析法對機構進行位置分析、速度分析和加速度分析,得到相應的數學模型;然后根據數學模型設計、編制計算機求解程序,上機調試程序,從而得到分析的數據結果并輸出結果?,F以最常見的鉸鏈四桿機構為例,介紹機構計算機輔助運動分析的方法。1.建立數學模型如圖12-5所示的鉸鏈四桿機構,機構各構件尺寸L1、L2、L3、L4,原動件1的轉角為j1,等角速度為ω1。圖12-5曲柄搖桿機構利用解析法進行位置分析、速度分析和加速度分析的過程和方法詳見第3章,這里不再贅述。2.計算機輔助機構運動分析1〕界面設計圖12-6所示為鉸鏈四桿機構運動分析的界面。界面中有“結構模型〞、“數據顯示〞、“運動線圖〞和“運動仿真〞四個選項卡。使用者首先在“結構模型〞選項卡中了解到各變量的含義,輸入機構的參數,選擇曲柄的轉向和機構裝配方式等,然后點擊“顯示〞按鈕,程序進行有關運算,鉸鏈四桿機構的類型和機構在某一位置的運動參數就會分別在“系統(tǒng)信息〞和“輸出數據〞控件組中顯示出來。如圖12-7所示,點擊“數據顯示〞選項卡,就會在“Picture〞控件中顯示機構在一個循環(huán)中不同位置時從動件3的位移、速度和加速度數據。如圖12-8所示,點擊“運動線圖〞選項卡,那么可在“Picture〞控件中顯示機構在一個循環(huán)中不同位置時從動件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=-1
EndSub
數據顯示選項卡程序:
PrivateSubCommand5-Click()
ListView1.Visible=False
Picture2.Visible=False
Picture3.Visible=False
Picture1.Visible=True
Command5.Caption="數據顯示"
EndSub
數據導出程序:
PrivateSubCommand6-Click()
IfCommand6.Caption="導出數據"Then
Setexl=NewExcel.Application
exl.Visible=True
exl.SheetsInNewWorkbook=1
exl.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
=xlPaperA4
exl.DisplayAlerts=False
exl.DisplayAlerts=True
Setexl=Nothing
EndIf
IfCommand6.Caption="數據顯示"Then
ListView1.Visible=True
Picture1.Visible=False
Picture2.Visible=False
Picture3.Visible=False
IfCommand1.Caption="運行"Then
Beep
Label9.ForeColor=&HFF&
Label9.Caption="請先點擊|運行|..."
Else:Command6.Caption="導出數據"
EndIf
EndIf
EndSub
顯示按鈕程序:
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=True
ListView1.Visible=False
Picture1.Visible=False
Picture2.Visible=False
Command6.Caption="數據顯示"
IfCommand1.Caption="運行"Then
Beep
Label9.ForeColor=&HFF&
Label9.Caption="請先點擊|運行|..."
EndIf
EndSub去除按鈕程序:PrivateSubCommand9-Click()BeepTxt1.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="數據顯示"
Picture2.Cls
Picture3.Cls
Picture3.Enabled=Trueclockwise.Value=Falseunclock.Value=FalseCombo1.Text=請選擇Label9.Caption=“歡送使用SP平面桿機構分析系統(tǒng)〞IfCommand1.Caption="顯示"ThenCommand1.Caption="運行"EndIf
IfCommand1.Caption="演示"Then
Command1.Caption="運行"
EndIf
IfCommand2.Caption="暫停"Then
Command1.Caption="演示"
EndIf
EndSub
PrivateSubunclock-Click()
m=1
EndSub參數計算子程序:
PrivateSubCommand1-Click()
Label1.ForeColor=&H8000000E
Label2.ForeColor=&H8000000E
Label3.ForeColor=&H8000000E
Label4.ForeColor=&H8000000E
Label5.ForeColor=&H8000000E
Label6.ForeColor=&H8000000E
Label7.ForeColor=&H8000000E
Label8.ForeColor=&H8000000E
Label9.ForeColor=&H8000000E
Label9.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,jw11AsSingle
rj=180/3.1415926
bzhi=1
l(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)
Nexti
Fori=1To4
s=s+l(i)
Nexti
Ifmax>s-maxThen
Label9.ForeColor=&HFF&
Label9.Caption="機構無法裝配...請重新輸入數據..."
bzhi=0
ExitSub
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=""
ExitSub
Else
Fori=0Toa1min
Callwwww(i,a1min,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())Nexti
Fori=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+180
Ifa1min<0Thena1min=a1min+180
Ifjw11<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())
Nextj
EndIf
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())
Nexti
ElseIfl(1)=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())
Nexti
Else′搖桿為原動件時
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)*rj
Ifa1max<=0Thena1max=a1max+180
Ifa1min<0Thena1min=a1min+180
Ifjw11<a1minOrjw11>a1maxThen
Label9.ForeColor=&HFF&
Label9.Caption="曲柄轉角有誤...請重新輸入..."
bzhi=0
Txt6.Text="“
ExitSub
Else
Forj=Int(a1min+1)ToInt(a1max-1)
Callwwww(j,a1max,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())
Nextj
EndIf
EndIf
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顯示運算結果
Fori=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)
EndWith
Nexti
Rem調用模塊繪制運動曲線及其靜態(tài)圖
Callddraw3(l(),jw3(),jdu,m,Picture3)
Callddraw2(jdu,rh,l(),m,n,jw3(),js3(),jj3(),Picture2)
jdu=jw11
Command1.Caption="顯示"
EndSub
PrivateSubCommand2-Click()
Ifbzhi=1Then
IfTxt1.Text[ZK(]=""OrTxt2.Text=""OrTxt3.Text=""OrTxt4.Text=""OrTxt5.Text=""OrTxt6.Text=""OrCombo1.Text=""ThenLabel9.ForeColor=&HFF&
Label9.Caption="數據輸入不完全...請檢查后重試..."
ElseIfii<0Orii>360Then
Label9.ForeColor=&HFF&
Label9.Caption="轉角超出范圍(0-360)...請檢查后重試..."
ElseIfclockwise.Value=FalseAndunclock.Value=FalseThen
Label9.ForeColor=&HFF&
Label9.Caption="鉸鏈ABCD順序未選定...請檢查后重試..."
ElseIfCommand2.Caption="演示"Then
Timer1.Enabled=True
IfBZ=2Then
Picture3.Cls
Label9.Caption="Sorry該機構無法演示完全,請重新輸入數據:〔"EndIfCommand2.Caption="暫停"ElseTimer1.Enabled=FalseCommand2.Caption="演示"EndIfElseBeepLabel9.ForeColor=&HFF&Label9.Caption="請先點擊|運行|..."ExitSub
EndIf
EndSub
PrivateSubCommand3-Click()
Fori=0To360
jw3(i)=0
js3(i)=0
jj3(i)=0
Nexti
UnloadMe
FX0.ShowEndSub
PrivateSubCommand4-Click()
about.Show
EndSub
PrivateSubForm-Load()
Framemax.Visible=False
Timer1.Interval=10
Combo1.AddItem"順時針"
Combo1.AddItem"逆時針"
Timer1.Enabled=False
Combohelp.AddItem"系統(tǒng)信息"
Combohelp.AddItem"數據輸入"
Combohelp.AddItem"數據顯示"
Combohelp.AddItem"導出數據"
Combohelp.AddItem"運動線圖"
Combohelp.AddItem"運動仿真"
EndSub幫助系統(tǒng)程序:PrivateSubCommandhelp-Click()
IfCombohelp.Text="請選擇幫助項"Then
Labelhelp.Caption="請選擇幫助項"
EndIf
IfCombohelp.Text="系統(tǒng)信息"Then
Labelhelp.Caption="系統(tǒng)信息主要包括系統(tǒng)提示,如系統(tǒng)數據輸入不完全,機構類型等"
EndIf
IfCombohelp.Text="數據輸入"Then
Labelhelp.Caption="輸入的數據必須正確、完全,如果輸入不完全,系統(tǒng)信息會提示具體數據輸入,其中轉角在0-360之間"
EndIf
IfCombohelp.Text="數據顯示"Then
Labelhelp.Caption="在系統(tǒng)運行的條件下,點擊′數據顯示′按鈕就可以顯示所有數據,
此時′數據顯示′按鈕變成數據′導出數據′"
EndIf
IfCombohelp.Text="導出數據"Then
Labelhelp.Caption="在系統(tǒng)運行的條件下,點擊′導出數據′按鈕就可以把所有數據導出到EXCEL里進行編輯,處理"
EndIf
IfCombohelp.Text="運動線圖"Then
Labelhelp.Caption="在系統(tǒng)運行的條件下,點擊′運動線圖′按鈕,然后點擊′顯示′"
EndIf
IfCombohelp.Text="運動仿真"Then
Labelhelp.Caption=“在系統(tǒng)運行的條件下,點擊′運動仿真′按鈕,然后點擊′顯示′,那么顯示靜態(tài)結構,然后點擊′演示′可以實現運動仿真,點擊′暫?!浒粹o停止運動仿真"EndIfEndSub繪制運動線圖主程序:PrivateSubPicture3-Click()Framemax.Visible=TrueEndSubPrivateSubPicturemax-Click()
Framemax.Visible=False
EndSub
PrivateSubTimer1-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-1
Callacmax(l(),a1min,a1max)
Ifjdu>=Int(a1max)Then
jdu=Int(a1max)
m1=0
ElseIfjdu<=Int(a1min)+1Then
jdu=Int(a1min)+1
m1=1
EndIf
Callddraw3(l(),jw3(),jdu,m,Picture3)
Callddrawmax(l(),jw3(),jdu,m,Picturemax)
ElseIfBZ=0Then
IfCombo1.Text="逆時針"Then
jdu=(jdu+1)Mod360
Callddraw3(l(),jw3(),jdu,m,Picture3)
Callddrawmax(l(),jw3(),jdu,m,Picturemax)
Else
DoWhile(jdu=0)
jdu=360
Loop
jdu=jdu-1
Callddraw3(l(),jw3(),jdu,m,Picture3)
Callddrawmax(l(),jw3(),jdu,m,Picturemax)
EndIf
Else
Ifm1=1Then
DoWhile(jdu=360)
jdu=0
Loop
jdu=jdu+1
Callddraw3(l(),jw3(),jdu,m,Picture3)
Callddrawmax(l(),jw3(),jdu,m,Picturemax)
Ifjdu=Int(a1min+1)Then
m1=0
EndIf
EndIf
Ifm1=0Then
DoWhile(jdu=0)
jdu=360
Loop
jdu=jdu-1
Callddraw3(l(),jw3(),jdu,m,Picture3)
Callddrawmax(l(),jw3(),jdu,m,Picturemax)
Ifjdu=Int(a1max)Then
m1=1
Callddraw3(l(),jw3(),jdu,m,Picture3)
Callddrawmax(l(),jw3(),jdu,m,Picturemax)
EndIf
EndIf
EndIf
EndSub
PrivateSubTimer2-Timer()
Label10.Caption=Now
EndSub
PrivateSubX-Click()
FX0.Show
UnloadMe
EndSub
Rem子程序設計Rem計算主動件的最大及其最小角PublicSubacmax(l(),amin,amax)
Dima,B,C,s
Dimaa3,ai3,i1
DimiAsSingle
Fori=0To360
i1=i*180/3.1415926
a=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^2
Ifs<=0Thenai3=i-1:ExitFor
Nexti
Fori=360To0Step-1
i1=i*180/3.1415926
a=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^2
Ifs<=0Thenaa3=i+1:ExitFor
Nexti
amin=ai3
amax=aa3
EndSub
Rem計算從動件參數子程序PublicSubwwww(ii,max,rh,l(),m,n,pi,jw2(),jw3(),js2(),js3(),jj2(),jj3())
Dima,B,C,D,E,FAsSingle
Dimatn3,atn2AsSingle
Dimat1,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)
Dimj1
Dimi,jAsInteger
pi=3.1415926
rh=pi/180
Ifii>maxThenExitSub
jw1(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+pi
EndIf
Ifatn3<0Then
atn3=atn3+pi
EndIf
jw2(ii)=2*atn2
jw3(ii)=2*atn3
Dimci(1To3),si(1To3)AsSingle
DimsAsSingle
Dimc4(2,2)AsSingle
Dimc1(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))
Nexti
pfpu(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)=0
Nexti
Fori=1To2
Forj=1To2
c1(i,1)=c1(i,1)+(-pfpu1(i,j))*pfpv(j,1)
Nextj
Nexti
Fori=1To2
1(i+1)=0
Nexti
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)
Nexti
Dimc2(2,1),c3(2,1)AsSingle
dpfpu(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)=0
Nexti
Fori=1To2
Forj=1To2
c1(i,1)=c1(i,1)+dpfpu(i,j)*φ1(j+1)
Nextj
c2(i,1)=c2(i,1)+dpfpv(i,1)*φ1(1)
Nexti
Fori=1To2
c3(i,1)=c1(i,1)+c2(i,1)
Nexti
Fori=1To2
2(i+1)=0
Nexti
Fori=1To2
Forj=1To2
φ2(i+1)=φ2(i+1)+(-pfpu1(i,j))*c3(j,1)
jj2(ii)=φ2(2):jj3(ii)=φ2(3)
Nextj
Nexti
EndSub
Rem繪制從動件運動線圖子程序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),vbBlue
Fori=0To40Step40/6
Picture2.Line(i,1)-(i,0)
Picture2.CurrentX=i-4:CurrentY=-2:Picture2.Print360*i/40
Nexti
Picture2.CurrentX=-16:Picture2.CurrentY=-22
Picture2.Print"綠線-位移紅線-速度藍線-加速度"Rem建立速度坐標系
Picture2.Line(-13,28)-(-13,-22),vbRed
Picture2.CurrentX=-13:Picture2.CurrentY=30:Picture2.Print"v(rad/s)"
Picture2.Line(-12,25)-(-13,28),vbRed
Picture2.Line(-14,25)-(-13,28),vbRed
Rem建立位移坐標系
Picture2.Line(-26,28)-(-26,-22),vbGreen
Picture2.CurrentX=-26:Picture2.CurrentY=30:Picture2.Print"s(rad)"
Picture2.Line(-25,25)-(-26,28),vbGreen
Picture2.Line(-27,25)-(-26,28),vbGreen
Fori=-20To20Step5
Picture2.Line(1,i)-(0,i),vbBlue
Picture2.Line(-12,i)-(-13,i),vbRed
Picture2.Line(-25,i)-(-26,i),vbGreen
Nexti
Dimrx,rms,rmv,rma
rx=40/360
Dimms,ma,mv
Dimjw2(0To360),js2(0To360),jj2(0To360)
Forii=0To360
IfAbs(jw3(ii))>Abs(ms)Then
ms=Abs(jw3(ii))
EndIf
IfAbs(js3(ii))>Abs(mv)Then
mv=Abs(js3(ii))
EndIf
IfAbs(jj3(ii))>Abs(ma)Then
ma=Abs(jj3(ii))
EndIf
Nextii
rms=20/ms:rmv=20/mv:rma=20/ma
Rem繪圖Forii=1To359
Picture2.Line(ii*rx,jw3(ii)*rms)-((ii+1)*rx,jw3(ii+1)*rms),vbGreen
Picture2.Line(ii*rx,js3(ii)*rmv)-((ii+1)*rx,js3(ii+1)*rmv),vbRed
Picture2.Line(ii*rx,jj3(ii)*rma)-((ii+1)*rx,jj3(ii+1)*rma),vbBlue
Nextii
Fori=5To20Step5
Picture2.CurrentX=0.5:Picture2.CurrentY=i+1
Picture2.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+1
Picture2.PrintCCur((((ms*i/20)*100)\1)/100)
Nexti
Fori=-5To-20Step-5
Picture2.CurrentX=0.5:Picture2.CurrentY=i+2
Picture2.PrintCCur((((ma*i/20)*100)\1)/100)
Picture2.CurrentX=-12.5:Picture2.CurrentY=i+2
Picture2.PrintCCur((((mv*i/20)*100)\1)/100)
Picture2.CurrentX=-25.5:Picture2.CurrentY=i+2
Picture2.PrintCCur((((ms*i/20)*100)\1)/100)
Nexti
EndSub
Rem繪制機構靜態(tài)動態(tài)圖子程序PublicSubddraw3(l(),jw3(),ii,m,Picture3)
Dima1,a3AsSingle
Dimx1,y1,x3,y3AsSingleDimrrAsSingle
Dimrh1AsSingle
rh1=3.1415926/180
Callmax(l(),lmax)
rr=40/(lmax*1.2)
Rem建立坐標系
Picture3.Cls
Picture3.DrawWidth=2
Picture3.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)
Nexti
Picture3.CurrentX=l(4)*rr:Picture3.CurrentY=0
Picture3.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)
Nexti
Rem建立模型
Picture3.DrawWidth=4
a1=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),vbBlue
Picture3.Line(x1,y1)-(x3,y3),vbRed
Picture3.Line(x3,y3)-(l(4)*rr,0),vbGreen
Picture3.FillStyle=0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生物質能項目融資擔保合同3篇
- 2025年度床上用品品牌形象設計與宣傳合同3篇
- 二零二五年度新能源合同擔保政策與市場前景3篇
- 小微企業(yè)貸款審批中的電子化轉型
- 2024版建筑工程居間協議樣本版B版
- 2024版分體式空調清洗合同
- 河北環(huán)境工程學院《唱腔念白》2023-2024學年第一學期期末試卷
- 2024新疆地區(qū)標準固定期限用工協議范例
- 2024青島房屋租賃合同(租賃保證金)范本3篇
- 2024版小程序銷售及服務合同
- 小學道德與法治學科高級(一級)教師職稱考試試題(有答案)
- 考研考博-英語-山東師范大學押題密卷附帶答案詳解篇
- 實用性閱讀與交流任務群設計思路與教學建議
- 應急柜檢查表
- 中醫(yī)診療器具清洗消毒(醫(yī)院感染防控專家課堂培訓課件)
- 通風設施標準
- 寵物智能用品項目計劃書【模板范文】
- 藥廠生產車間現場管理-PPT課件
- 軸與孔標準公差表
- 防火門施工方案
- 人教PEP版2022-2023六年級英語上冊期末試卷及答案(含聽力材料)
評論
0/150
提交評論