目录
一、 设计任务书…………………………………
二、 数学模型的建立……………………………
三、 程序流程图…………………………………
四、 程序主体…………………………………… 五、 控件名称……………………………………
六、 运行结果……………………………………
七、 设计小结…………………………………… 八、 主要参考资料………………………………
四、程序主体
Option Explicit
Public L_ab As Double, L_bc As Double, L_cd As Double, L_ad As Double Public N As Double, W_AB As Double, E_AB As Double Public intM As Integer, intCW As Double
Public intstartangle As Double, intendangle As Double Const PI As Double = 3.1415926
Public Sub YDFX(i, L_a, L_b, F_BC, F_CD, W_BC, W_CD, E_BC, E_CD, X_E, Y_E, Vx_E, Vy_E, Ax_E, Ay_E)
Dim F_AB As Double, A As Double, B As Double, C As Double, D As Double, sxy As Double
F_AB = i * PI / 180
L_ab = Val(Txtlength(0).Text) L_bc = Val(Txtlength(1).Text) L_cd = Val(Txtlength(2).Text) L_ad = Val(Txtlength(3).Text)
N = Val(frmmain.Txtlength(4).Text) L_a = Val(Txtlength(5).Text) L_b = Val(Txtlength(6).Text) sxy = Val(frmmain.txtscale.Text) W_AB = PI * N / 30
A = L_ad - L_ab * Cos(F_AB) B = -L_ab * Sin(F_AB)
C = (A ^ 2 + B ^ 2 + L_cd ^ 2 - L_bc ^ 2) / (2 * L_cd) D = A ^ 2 + B ^ 2 - C ^ 2
'计算杆cd得角位移
F_CD = 2 * Atn((B + Sqr(D)) / (A - C)) If F_CD < 0 Then F_CD = F_CD - 2 * PI '计算杆bc得角位移
F_BC = Atn((B + L_cd * Sin(F_CD)) / (A + L_cd * Cos(F_CD)))
'计算BC,CD 杆的角速度
W_BC = -(W_AB * L_ab * Sin(F_AB - F_CD)) / (L_bc * Sin(F_BC - F_CD)) W_CD = (W_AB * L_ab * Sin(F_AB - F_BC)) / (L_cd * Sin(F_CD - F_BC)) '计算bc杆角加速度
Dim E21 As Double, E22 As Double, E23 As Double E21 = -L_ab * W_AB ^ 2 * Cos(F_AB - F_CD) E22 = -L_bc * W_BC ^ 2 * Cos(F_BC - F_CD) E23 = L_cd * W_CD ^ 2
E_BC = (E21 + E22 + E23) / (L_bc * Sin(F_BC - F_CD)) '计算cd 的角加速度
Dim E31 As Double, E32 As Double, E33 As Double E31 = L_ab * (W_AB ^ 2) * Cos(F_AB - F_BC) E32 = L_bc * W_BC ^ 2
E33 = -L_cd * (W_CD ^ 2) * Cos(F_CD - F_BC)
E_CD = (E31 + E32 + E33) / (L_cd * Sin(F_CD - F_BC)) '计算xe,ye
X_E = L_ab * Cos(F_AB) + Sqr(L_a ^ 2 + L_b ^ 2) * Cos(F_BC + Atn(L_b / L_a))
Y_E = L_ab * Sin(F_AB) + Sqr(L_a ^ 2 + L_b ^ 2) * Sin(F_BC + Atn(L_b / L_a))
'计算e的速度
Vx_E = -L_ab * W_AB * Sin(F_AB) - Sqr(L_a ^ 2 + L_b ^ 2) * W_BC * Sin(F_BC + Atn(L_b / L_a))
Vy_E = L_ab * W_AB * Sin(F_AB) + Sqr(L_a ^ 2 + L_b ^ 2) * W_BC * Cos(F_BC + Atn(L_b / L_a))
'计算e的加速度
Ax_E = -L_ab * (W_AB ^ 2) * Cos(F_AB) - Sqr(L_a ^ 2 + L_b ^ 2) * E_BC * Sin(F_BC + Atn(L_b / L_a)) - Sqr(L_a ^ 2 + L_b ^ 2) * (W_BC ^ 2) * Cos(F_BC + Atn(L_b / L_a))
Ay_E = -L_ab * (W_AB ^ 2) * Sin(F_AB) + Sqr(L_a ^ 2 + L_b ^ 2) * E_BC * Cos(F_BC + Atn(L_b / L_a)) - Sqr(L_a ^ 2 + L_b ^ 2) * (W_BC ^ 2) * Sin(F_BC + Atn(L_b / L_a))
'单位换算
F_BC = F_BC * 180 / PI F_CD = F_CD * 180 / PI X_E = X_E * 180 / PI Y_E = Y_E * 180 / PI End Sub
Private Sub Form_Load() Cmdlist.Enabled = False
Cmddraw.Enabled = False Cmdplay.Enabled = False
Dim strStr1 As String, strStr2 As String Dim i As Integer
strStr1 = \ strStr2 = \& Chr(9) & \Chr(9) & \& Chr(9) & \& Chr(9) & \
grdDataList.AddItem (strStr1 & Chr(9) & strStr2) grdDataList.ColWidth(0) = 600 grdDataList.RowHeight(0) = 300 For i = 1 To 9
grdDataList.ColWidth(i) = (grdDataList.Width - 1000) / 9 Next i
Label3.Caption = \此程序由邵小伟开发\ Label3.ForeColor = vbRed Label3.FontSize = 15 Label3.AutoSize = True End Sub
Sub mymove()
Label3.Move Label3.Left + 50, Label3.Top
If Label3.Left > frmmain.Width Then Label3.Left = 0 End Sub
Private Sub timer1_timer() Call mymove
End Sub
Private Sub cmdrun_Click() Command6.Enabled = True Cmdlist.Enabled = True Cmddraw.Enabled = True Cmdplay.Enabled = True
Dim i As Integer
Dim L_a As Double, L_b As Double, L_ab As Double, L_bc As Double, L_cd As Double, L_ad As Double
Dim L_max As Double, L_min As Double, L_sum As Double '判断各数
据的合法性
'条件1:各参数应大于0 For i = 0 To 6
If Val(Txtlength(i).Text) <= 0 Then
MsgBox \请输入正确的\& Label1(i).Caption, vbInformation + vbOKOnly, \消息框\
Txtlength(i).Text = \ Exit Sub End If Next i
'最长杆杆长应小于其余三杆杆长之和 L_min = Val(Txtlength(0).Text) For i = 0 To 3
If Val(Txtlength(i).Text) < L_min Then L_min = Val(Txtlength(i).Text) If Val(Txtlength(i).Text) > L_max Then L_max = Val(Txtlength(i).Text) L_sum = L_sum + Val(Txtlength(i).Text) Next i
If L_max > L_sum - L_max Then
MsgBox \无法装配!最长杆杆长应小于其余三杆杆长之和!\vbInformation + vbOKOnly End If
'条件2:曲柄AB为最短杆
If Val(Txtlength(0).Text) <> L_min Then Exit Sub
'条件3:最长杆和最短杆杆长之和应小于其余两杆杆长之和 If L_max + L_min > L_sum - (L_max + L_min) Then Exit Sub '为变量赋值
L_a = Val(Txtlength(5).Text) L_b = Val(Txtlength(6).Text)
L_ab = Val(Txtlength(0).Text) '各杆长度 L_bc = Val(Txtlength(1).Text) L_cd = Val(Txtlength(2).Text) L_ad = Val(Txtlength(3).Text)
N = Val(Txtlength(4).Text) '曲柄AB的转速.角速度.角加速度 W_AB = PI * N / 30 E_AB = 0
If Optclockwise.Value = True Then '杆AB转动方向为顺时针 intCW = -1
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库vb编程 课程设计说明书在线全文阅读。
相关推荐: