圆柱直齿轮设计程序-vb

圆柱直齿轮设计程序

注意: @H_301_7@
1.本程序使用vb6.0编写 @H_301_7@
2.本程序参考教材:机械设计(第九版)-西北工业大学 @H_301_7@
3.本程序依据上述教材中第十章-10-8编写 @H_301_7@
4.本程序中涉及的将图、表数据化方程的内容不由本人编写 @H_301_7@
5.程序中涉及的变量有注释,没有注释的变量可根据教材、机械设计手册中的字母含义推测 @H_301_7@
6.后附应用程序源码链接 @H_301_7@
7.程序若有错误,可以交流 @H_301_7@
程序如下: @H_301_7@
' 程序名称:圆柱直齿轮设计
' Author:ncf
' Date:2016-10-29
' Email:1476879092@qq.com
' log:
' 2016-10-29:Complete
Public Check3_flag As Boolean

Private Sub Check1_Click()
    If Check2.Value = 1 Then Check2.Value = 0
End Sub

Private Sub Check2_Click()
    If Check1.Value = 1 Then Check1.Value = 0
End Sub

Private Sub Check3_Click()
    If Check3.Value = 1 Then
        Check3_flag = True    '开式为True
        Check3.Caption = "开式传动"
    Else
        Check3_flag = False    '开式为True
        Check3.Caption = "闭式传动"
    End If
End Sub

Private Sub Command1_Click()
'数据的输入
    p_0 = Val(Text1.Text)    '输入的功率
    N_1 = Val(Text5.Text)    '小齿轮转速
    S_a = Val(Text21.Text)    '工作机载荷性质代码
    P_w = Val(Text9.Text)    '原动机代码
    W_N = Val(Text10.Text)    '工作两班
    H_0 = Val(Text22.Text)    '一班的时间
    D_A = Val(Text11.Text)    '工作时间
    j = Val(Text23.Text)    'j 为每转一圈齿轮啮合次数
    MA1 = Val(Text6.Text)    '小齿轮材料热处理代码
    MA2 = Val(Text18.Text)    '大齿轮材料热处理代码
    HB_x = Val(Text7.Text)    '小齿轮硬度
    HB_d = Val(Text19.Text)    '大齿轮硬度
    K_ht = Val(Text8.Text)     '接触试选载荷系数
    K_ft = Val(Text20.Text)     '弯曲试选载荷系数
    FD = Val(Text15.Text)     '齿宽系数
    RF = 1    '设计准则的选用标志,注:这里我们直接同时采用两个标准设计,不采用一个设计,一个校核
    pai = 3.1415926536    '圆周率pi
    ha = Val(Text2.Text)     '齿顶高系数
    alpha = Val(Text14.Text) / 180 * pai   '分度圆压力角
    JZ = Val(Text3.Text)     '精度等级
    CJ = Val(Text13.Text)     '支撑结构选择

'确定计算方式
    flag_js = 0
    If Check1.Value = 1 Then flag_js = 1
    If Check2.Value = 1 Then flag_js = 2
    If flag_js <> 0 Then
        '检测空缺数据
        flag_space = 1
        If flag_js = 1 Then    '齿数已知
            ZV1 = Val(Text4.Text)    '小齿轮齿数
            ZV2 = Val(Text16.Text)    '大齿轮齿数
            Text12.Text = 0
            If ZV1 = 0 Or ZV2 = 0 Or p_0 = 0 Or N_1 = 0 Or S_a = 0 Or P_w = 0 Or W_N = 0 Or H_0 = 0 Or D_A = 0 Or j = 0 Or MA1 = 0 Or MA2 = 0 Or HB_x = 0 Or HB_d = 0 Or K_ht = 0 Or K_ft = 0 Or FD = 0 Or ha = 0 Or alpha = 0 Or JZ = 0 Or CJ = 0 Then
                MsgBox ("请确保设计参数填写正确")
            Else
                u = ZV2 / ZV1
                Text12.Text = u
                Text17.Text = Val(Text5.Text) / u    '大齿轮转速
                flag_space = 0    '数据无空缺
            End If
        Else    '传动比已知
            If Check3_flag = False Then
                If HB_x > 350 Then ZV1 = 18 Else ZV1 = 24    '闭式硬齿面默认18齿,闭式软齿24齿
            Else
                ZV1 = 18    '开式18齿
            End If
            u = Val(Text12.Text)    '齿数比
            If u = 0 Or p_0 = 0 Or N_1 = 0 Or S_a = 0 Or P_w = 0 Or W_N = 0 Or H_0 = 0 Or D_A = 0 Or j = 0 Or MA1 = 0 Or MA2 = 0 Or HB_x = 0 Or HB_d = 0 Or K_ht = 0 Or K_ft = 0 Or FD = 0 Or ha = 0 Or alpha = 0 Or JZ = 0 Or CJ = 0 Then
                MsgBox ("请确保设计参数填写正确")
            Else
                ZV2 = Round(ZV1 * u)    '大齿轮齿数
                Text4.Text = ZV1  '小齿轮齿数
                Text16.Text = ZV2  '小齿轮齿数
                Text17.Text = Val(Text5.Text) / u    '大齿轮转速
                flag_space = 0    '数据无空缺
            End If
        End If
        '计算
        If flag_space = 0 Then    '检测空缺数据
            '通用数据的计算

            '转矩的计算
            T_1 = 9.55 * (10 ^ 6) * p_0 / N_1

            '许用应力的计算
            '应力循环次数的计算
            N1 = 60 * j * N_1 * (W_N * H_0 * D_A)
            N2 = N1 / u
            '寿命系数
            Call Zichengxu1(MA1,N1,KB1)
            Call Zichengxu1(MA2,N2,KB2)
            Call Zichengxu3(MA1,KH1)
            Call Zichengxu3(MA2,KH2)
            '许用应力
            Call Zichengxu2(MA1,HB_x,KB1,CB1)
            Call Zichengxu2(MA2,HB_d,KB2,CB2)
            Call Zichengxu4(MA1,KH1,CH1)
            Call Zichengxu4(MA2,KH2,CH2)

            '计算重合度
            Call arccoa(ZV1 * Cos(alpha) / (ZV1 + 2 * ha),alpha1)
            Call arccoa(ZV2 * Cos(alpha) / (ZV2 + 2 * ha),alpha2)
            e_alpha = (ZV1 * (Tan(alpha1) - Tan(alpha)) + ZV2 * (Tan(alpha2) - Tan(alpha))) / 2 / pai
            '使用系数KA的查询
            Call KA_find(S_a,P_w,KA)

            '按接触强度设计

            '计算重合度系数
            Z_e = Sqr((4 - e_alpha) / 3)
            '计算ze zh
            U1 = 0.3    '泊松比
            U2 = 0.3
            E1 = 20.6 * 10000    '锻钢的弹性模量
            E2 = 20.6 * 10000
            Call Zichengxu7(alpha,U1,U2,E1,E2,ZH,ZE)
            '带入计算时数据的选用
            If CH1 > CH2 Then CH = CH2 Else CH = CH1    '选接触疲劳许用应力小的
            '试算分度圆直径
            d_1t = ((2 * K_ht * T_1 / FD) * ((u + 1) / u) * ((ZH * ZE * Z_e) / CH) ^ 2) ^ (1 / 3)
            '计算系数KV
            Call KV_js(ZV1,d_1t,N_1,JZ,KV)
            '调整小齿轮分度圆直径
            Call Zichengxu8(HB_x,CJ,FD,KHB,KFB)
            KH = KV * KA * KHB    '忽略齿间载荷分配系数K_alpha
            D1 = d_1t * ((KH / K_ht) ^ (1 / 3))
            m_H = D1 / ZV1

            '按齿根弯曲强度设计

            '计算重合度系数
            Y_e = 0.25 + 0.75 / e_alpha
            '修正系数的计算
            Call Zichengxu5(ZV1,YFA1)
            Call Zichengxu5(ZV2,YFA2)
            Call Zichengxu6(ZV1,YSA1)
            Call Zichengxu6(ZV2,YSA2)
            YK1 = YFA1 * YSA1 / CB1
            YK2 = YFA2 * YSA2 / CB2
            '带入计算时数据的选用
            If YK2 > YK1 Then YK = YK2 Else YK = YK1    '在弯曲疲劳强度的设计中也是选小的
            '试算模数
            m_1t = (2 * K_ft * T_1 * Y_e / (FD * ZV1 ^ 2) * YK) ^ (1 / 3)
            d_1t = m_1t * ZV1
            '计算系数KV
            Call KV_js(ZV1,d_1t_F,KV)
            '调整小齿轮模数
            Call Zichengxu8(HB_x,KFB)
            KF = KV * KA * KFB
            m_F = m_1t * ((KF / K_ft) ^ (1 / 3))
            '两种设计结果的处理

            '已知传动比
            If flag_js = 2 Then    '传动比已知
                If m_H > m_F Then
                    Call m_find(m_F,m_b)    '标准化模数
                    Z_1 = Round(D1 / m_b)    '修改小齿轮齿数
                    Z_2 = Round(Z_1 * u)    '大齿轮齿数
                    d_1 = Z_1 * m_b    '小齿轮直径
                    d_2 = Z_2 * m_b    '大齿轮直径
                    A = (d_1 + d_2) / 2    '中心距
                    B_d = FD * d_1    '大齿轮齿宽
                    B_x = B_d + 7.5    '小齿轮齿宽
                Else
                    Z_1 = ZV1 '不修改齿数
                    Z_2 = ZV2
                    Call m_find(m_F,m_b)    '标准化模数
                    d_1 = Z_1 * m_b    '小齿轮直径
                    d_2 = Z_2 * m_b    '大齿轮直径
                    A = (d_1 + d_2) / 2    '中心距
                    B_d = FD * d_1    '大齿轮齿宽
                    B_x = B_d + 7.5    '小齿轮齿宽
                End If
            ElseIf flag_js = 1 Then    '齿数已知
                If m_H > m_F Then
                    m_ = m_H
                Else
                    m_ = m_F
                End If
                Z_1 = ZV1 '不修改齿数
                Z_2 = ZV2
                Call m_find(m_,m_b)    '标准化模数
                d_1 = Z_1 * m_b    '小齿轮直径
                d_2 = Z_2 * m_b    '大齿轮直径
                A = (d_1 + d_2) / 2    '中心距
                B_d = FD * d_1    '大齿轮齿宽
                B_x = B_d + 7.5    '小齿轮齿宽
            End If
            '显示输出
            Text24.Text = m_b
            Text25.Text = A
            Text26.Text = Z_1
            Text27.Text = Z_2
            Text28.Text = d_1
            Text29.Text = d_2
            Text30.Text = B_x
            Text31.Text = B_d
        End If
    Else
        MsgBox ("请选择:计算方式")
    End If
End Sub

'自定义子程序
'KA的获取
Sub KA_find(S_a,KA)
    S_a = S_a - 1
    P_w = P_w - 1
    Dim KA_array1()
    KA_array1 = Array(1#,1.1,1.25,1.5)
    Dim KA_array2
    KA_array2 = Array(1.25,1.35,1.5,1.75)
    Dim KA_array3
    KA_array3 = Array(1.5,1.6,1.75,2)
    Dim KA_array4
    KA_array4 = Array(1.75,1.85,2,2.25)
    If S_a = 0 Then
        KA = KA_array1(P_w)
    ElseIf S_a = 1 Then
        KA = KA_array2(P_w)
    ElseIf S_a = 2 Then
        KA = KA_array3(P_w)
    ElseIf S_a = 3 Then
        KA = KA_array4(P_w)
    Else
    End If
End Sub
'm的查询
Sub m_find(m,m_b)
    Dim m_bz
    m_bz = Array(1,2.5,3,4,5,6,8,10)
    num_m = UBound(m_bz) - LBound(m_bz)
    For i = 0 To num_m
        If m < m_bz(i) Then
            m_b = m_bz(i)
            Exit For
        End If
    Next i
End Sub
'反余弦函数
Sub arccoa(X1,alpha1)
    alpha1 = Atn(-X1 / Sqr(-X1 * X1 + 1)) + 2 * Atn(1)
End Sub
'计算KV
Sub KV_js(Z1,D1,N0,KV)
    V = Z1 * 3.14159 * D1 * NO / 6000000!
    KV = (0.0104 + 0.003 * (JZ - 6)) * JZ * V + 1
End Sub


'老师提供的子程序
Sub Zichengxu1(MA,N,KB)
    If MA > 27 Then GoTo 1035
    If N <= 10000! Then GoTo 1025
    If N > 10000! And N < 3000000! Then GoTo 1030
    If N > 3000000! Then KB = 1!: GoTo 1125
1025:
    KB = 2.5: GoTo 1125
1030:
    KB = (3! * 10 ^ 6 / N) ^ (0.115): GoTo 1125
1035:
    If MA > 36 Or MA < 27 Then GoTo 1065
    If N <= 1000! Then GoTo 1055
    If N > 1000! And N < 3000000! Then GoTo 1060
    If N > 3000000! Then KB = 1!: GoTo 1125
1055:
    KB = 2.5: GoTo 1125
1060:
    KB = (3! * 10 ^ 6 / N) ^ (0.115): GoTo 1125
1065:
    If MA > 46 Or MA < 36 Then GoTo 1095
    If N <= 1000! Then GoTo 1085
    If N > 1000! And N < 3000000! Then GoTo 1090
    If N > 3000000! Then KB = 1!: GoTo 1125
1085:
    KB = 1.6: GoTo 1125
1090:
    KB = (3! * 10 ^ 6 / N) ^ (0.05900001): GoTo 1125
1095:
    If MA < 46 Then GoTo 1125
    If N < 1000! Then GoTo 1115
    If N > 1000! And N < 3000000! Then GoTo 1120
    If N > 3000000! Then KB = 1!: GoTo 1125
1115:
    KB = 1.1: GoTo 1125
1120:
    KB = (3! * 10 ^ 6 / N) ^ (0.012)
1125:
End Sub
Sub Zichengxu2(MA,HB,KB,CB)
    If MA > 15 Then GoTo 1160
    On MA - 10 GoTo 1140,1145,1150,1155
1140:
    CB = 0.66 * (HB - 140) + 120: GoTo 1230
1145:
    CB = 0.6850001 * (HB - 140) + 350: GoTo 1230
1150:
    CB = 0.2 * (HB - 110) + 300: GoTo 1230
1155:
    CB = 0.6 * (HB - 110) + 340: GoTo 1230
1160:
    If MA > 27 Then GoTo 1190
    On MA - 22 GoTo 1170,1175,1180,1185
1170:
    CB = 0.37 * (HB - 115) + 340: GoTo 1230
1175:
    CB = 0.75 * (HB - 115) + 380: GoTo 1230
1180:
    CB = 0.8 * (HB - 190) + 520: GoTo 1230
1185:
    CB = 0.47 * (HB - 190) + 460: GoTo 1230
1190:
    If MA > 36 Then GoTo 1210
    On MA - 33 GoTo 1200,1205
1200:
    CB = 10 * (HB - 48) + 640: GoTo 1230
1205:
    CB = 3 * (HB - 56) + 840: GoTo 1230
1210:
    If MA = 44 Or MA = 45 Then GoTo 1220
    If MA = 54 Or MA = 55 Then CB = 2! * (HB - 54) + 640: GoTo 1230
1220:
    CB = 2! * (HB - 54) + 740
1230:
    CB = KB * CB / 1.375
End Sub
Sub Zichengxu3(MA,KH)
    If MA > 37 And FI = 1 Then GoTo 1545
    If N <= 600000! Then GoTo 1530
    If N > 600000! And N < 10000000# Then GoTo 1535
    If N > 10000000# And N < 1000000000# Then GoTo 1540
    If N > 1000000000# Then KH = 1!: GoTo 1640
1530:
    KH = 1.6: GoTo 1640
1535:
    KH = (3! * 10 ^ 8 / N) ^ (0.0756): GoTo 1640
1540:
    KH = (10 ^ 9 / N) ^ (0.05700001): GoTo 1640
1545:
    If MA > 37 Or MA < 22 Then GoTo 1575
    If N < 100000! Then GoTo 1565
    If N > 100000! And N < 50000000# Then GoTo 1570
    If N > 50000000# Then KH = 1!: GoTo 1640
1565:
    KH = 1.6: GoTo 1640
1570:
    KH = (5 * 10 ^ 7 / N) ^ (0.0756): GoTo 1640
1575:
    If MA > 47 Or MA < 42 Then GoTo 1605
    If N <= 100000! Then GoTo 1595
    If N > 100000! And N < 2000000! Then GoTo 1600
    If N > 2000000! Then KH = 1!: GoTo 1640
1595:
    KH = 1.3: GoTo 1640
1600:
    KH = (2 * 10 ^ 6 / N) ^ (0.0875): GoTo 1640
1605:
    If MA < 52 Then GoTo 1640
    If N <= 100000! Then GoTo 1625
    If N > 100000! And N < 2000000! Then GoTo 1630
    If N >= 2000000! Then KH = 1!: GoTo 1640
1625:
    KH = 1.1: GoTo 1640
1630:
    KH = (2 * 10 ^ 6 / N) ^ (0.0318)
1640:
End Sub
Sub Zichengxu4(MA,KH,CH)
    If MA > 15 Then GoTo 1680
    On MA - 10 GoTo 1663,1665,1670,1675
1663:
    CH = 1.154 * (HB - 140) + 300: GoTo 1800
1665:
    CH = 1.406 * (HB - 140) + 400: GoTo 1800
1670:
    CH = 190 + HB: GoTo 1800
1675:
    CH = 260 + HB: GoTo 1800
1680:
    If MA > 27 Then GoTo 1710
1685 On MA - 22 GoTo 1690,1695,1700,1705
1690:
    CH = 290 + HB: GoTo 1800
1695:
    CH = 350 + HB: GoTo 1800
1700:
    CH = 1.465 * (HB - 190) + 620: GoTo 1800
1705:
    CH = 1.4 * (HB - 190) + 550: GoTo 1800
1710:
    If MA > 36 Then GoTo 1745
    If MA = 34 Then GoTo 1730
    If MA = 35 Then GoTo 1735
    If MA = 35 And HB > 58 Then GoTo 1740
1730:
    CH = 25 * (HB - 48) + 1120: GoTo 1800
1735:
    CH = 60 * (HB - 56) + 1350: GoTo 1800
1740:
    CH = 1470: GoTo 1800
1745:
    If MA > 50 Then GoTo 1775
    If MA = 44 Or MA = 45 Then CH = 11.1 * (HB - 36) + 900
    If MA = 44 And HB > 45 Then GoTo 1765
    If MA = 45 And HB > 45 Then GoTo 1770
    GoTo 1800
1765:
    CH = 1000: GoTo 1800
1770:
    CH = 1000: GoTo 1800
1775:
    If MA = 54 Or MA = 55 Then CH = 18 * (HB - 54) + 1225
1780 If MA = 54 And HB > 59 Then GoTo 1790
1786 If MA = 55 And HB > 59 Then GoTo 1795
1787 GoTo 1800
1790:
    CH = 1315: GoTo 1800
1795:
    CH = 1315
1800:
    CH = KH * CH
End Sub
Sub Zichengxu5(ZV,YFA)
    YFA = 2.984508 - 0.014134 * ZV + 0.000051 * ZV ^ 2
End Sub
Sub Zichengxu6(ZV,YSA)
    YSA = 1.472047 + 0.00497 * ZV - 0.000016 * ZV ^ 2
End Sub
Sub Zichengxu7(AL,ZE)
    ZH = Sqr(2 / (Sin(AL) * Cos(AL)))
    ZE = 0.564 * Sqr(1 / ((1 - U1 ^ 2) / E1 + (1 - U2 ^ 2) / E2))
End Sub
'修改程序8
Sub Zichengxu8(H1,H2,KFB)
    If H1 > 350 And H2 > 350 Then GoTo 2450
    On CJ GoTo 2415,2420,2425,2430,2435,2440,2445
2415:
    KHB = 0.24 * FD + 0.4456 * FD ^ 2 + 1.0054: GoTo 2490
2420:
    KHB = 0.29184 * FD + 0.06218 * FD ^ 2 + 0.99569: GoTo 2490
2425:
    KHB = 0.10482 * FD + 0.04448 * FD ^ 2 + 1.0036: GoTo 2490
2430:
    KHB = 0.0395 * FD + 0.04968 * FD ^ 2 + 1.013: GoTo 2490
2435:
    KHB = 0.02576 * FD + 0.04125 * FD ^ 2 + 1.011: GoTo 2490
2440:
    KHB = -0.007 * FD + 0.03977 * FD ^ 2 + 1.157: GoTo 2490
2445:
    KHB = -0.0177 * FD + 0.0337 * FD ^ 3 + 1.00977: GoTo 2490
2450 On CJ GoTo 2455,2460,2465,2470,2475,2480,2485
2455:
    KHB = 1.05 * FD + 1: GoTo 2490
2460:
    KHB = 0.41026 * FD + 0.51246 * FD ^ 2 + 1.0033: GoTo 2490
2465:
    KHB = 0.29503 * FD + 0.07772 * FD ^ 2 + 1.00587: GoTo 2490
2470:
    KHB = 0.18042 * FD + 0.08549999 * FD ^ 2 + 1.00498: GoTo 2490
2475:
    KHB = 0.0907 * FD + 0.09494 * FD ^ 2 + 1.00352: GoTo 2490
2480:
    KHB = 0.01265 * FD + 0.08847999 * FD ^ 2 + 1.0095: GoTo 2490
2485:
    KHB = -0.009289999 * FD + 0.06270001 * FD ^ 2 + 1.00862
2490:
    KFB = 1.5 * KHB - 0.5
End Sub
百度链接: @H_301_7@
http://pan.baidu.com/s/1i4B1Hxb

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 --------------------------...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, t...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integ...