




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、 设计任务书.11、平面连杆机构 1二、铰链四杆机构.21. 数学模型的建立22. 控件名称63. 主要变量说明84. 程序源代码及运行结果10三、小结.27四、主要参考资料.282. 主要控件名称及相关说明控件名称类型变量名含义、功能单位txtLength(0)TextBox控件数组dblL_AB主动连架杆AB长度mmtxtLength(1)dblL_BC连杆BC长度mmtxtLength(2)dblL_CD从动连架杆CD长度mmtxtLength(3)dblL_AD机架AD长度mmtxtLength(4)dblN主动连架杆AB的转速nr/mintxtLength(5)dblL_BEBE的长度mmtxtLength(6)dblF_BE杆BE与杆AB的夹角mmtxtAngleTextBox -主动连架杆AB的任意角位移textScaleTextBoxdblSxy运动仿真的显示比例-optClockWiseOptionButtonintCW杆AB顺时针转,intCW= -1-optNCW杆AB逆时针转,intCW=1optPositionOptionButtonintMB、C、D顺时针排列,intM= -1-optNPositionB、C、D逆时针排列,intM=1lblCurrent(0)Lable控件数组-显示指定时刻杆CD的角位移lblCurrent(1)显示指定时刻杆CD的角速度rad/slblCurrent(2)显示指定时刻杆CD的角加速度rad/s2lblCurrent(3)显示指定时刻点E对x轴角位移lblCurrent(4)显示指定时刻点E对x轴角速度rad/slblCurrent(5)显示指定时刻点E对x轴角加速度rad/s2lblCurrent(6)显示指定时刻点E对y轴角位移lblCurrent(7)显示指定时刻点E对y轴角速度rad/slblCurrent(8)显示指定时刻点E对y轴角加速度rad/s2lblRealtimeABLable-实时显示杆AB的角位移lblRealtime(0)Lable控件数组Lable控件数组-实时显示杆CD的角位移lblRealtime(1)实时显示杆CD的角速度rad/slblRealtime(2)实时显示杆CD的角加速度rad/s2lblRealtime(3)实时显示点E对x轴角位移lblRealtime(4)实时显示点E对x轴角速度rad/slblRealtime(5)实时显示点E对x轴角加速度rad/s2lblRealtime(6)实时显示点E对y轴角位移lblRealtime(7)实时显示点E对y轴角速度rad/slblRealtime(8)实时显示点E对y轴角加速度rad/s2cmdRunCommandButton-运行程序-cmdListCommandButton-显示计算结果-cmdDrawCommandButton-绘制运动曲线-cmdPlayCommandButton-进行运动仿真-Command1CommandButton-暂停运动仿真-cmdExitCommandButton-退出程序-tmrDrawTimer-控制运动曲线的绘制速度-tmrPlayTimer-控制运动仿真的速度-sstResultSStab -提供一组选项卡显示程序运行结果-grdDataListMSFlexGrid-显示分析结果-picFigurePictureBox-显示机构示意图-picDraw(0)PictureBox控件数组-显示杆CD的角位移曲线-picDraw(1)-显示杆CD的角速度曲线-picDraw(2)-显示杆CD的角加速度曲线-picDraw(3)-显示点E对x轴角位移曲线-picDraw(4)-显示点E对x轴角速度曲线-picDraw(5)-显示点E对x轴角加速度曲线-picDraw(6)-显示点E对y轴角位移曲线-picDraw(7)-显示点E对y轴角速度曲线-picDraw(8)-显示点E对y轴角加速度曲线-picPlayPictureBox-显示运动仿真-hsbSpeedHscrollBar-调节运动仿真速度-3.主要变量说明变量名含义单位程序中数学模型中dblL_ABL1主动连架杆AB长度mmdblL_BCL2连杆BC长度mmdblL_CDL3从动连架杆CD长度mmdblL_ADL4机架AD长度mmdblN主动连架杆AB的转速r/mindblL_BEaBE的长度mmdblF_BE杆BE与杆AB的夹角mmtxtAngle-主动连架杆AB的任意角位移dblSxy-运动仿真的显示比例-intCW-杆AB顺时针转,intCW= -1,反之intC=1-intM-B、C、D顺时针排列intM= -1,反之intM= 1-dblF_ABAB杆的角位移dblF_BCBC杆的角位移dblF_CD3CD杆的角位移dblW_BCBC杆的角速度rad/sdblW_CDCD杆的角速度rad/sdblE_BCBC杆的角加速度rad/s2dblE_CDCD杆的角加速度rad/s2X_E点E对x轴位移mmX1_E点E对x轴速度mm/sX2_E点E对x轴加速度mm/s2Y_E点E对y轴位移mmY1_E点E对y轴速度mm/sY2_E 点E对y轴加速度mm/s2(dblAx,dblAy)-铰链A的坐标mm(dblBx,dblBy)-铰链B的坐标mm(dblCx,dblCy)-铰链C的坐标mm(dblDx,dblDy)-铰链D的坐标mm(dblEx,dblEy)-铰链E的坐标mmdblSx,dblSy-运动曲线的横向、纵向作图比例-dblWP 、dblHP-PictureBox控件的宽度值、高度值TwipdblAngle_L-杆AB负角位移的最大绝对值dblMax_f_CD-CD杆的最大角位移dblMax_w_CD-CD杆的最大角速度rad/sdblMax_e_CD-CD杆的最大角加速度rad/s2dblMax_X_E-点E对x轴最大位移mmdblMax_X1_E-点E对x轴最大速度mm/sdblMax_X2_E-点E对x轴最大加速度mm/s2dblMax_Y_E-点E对y轴最大位移mmdblMax_Y1_E-点E对y轴最大速度mm/sdblMax_Y2_E-点E对y轴最大加速度mm/s2dblL_max-最长杆杆长mmdblL_min-最短杆杆长mmdblL_sum-各杆杆长之和mmintAngle_max-杆AB角位移的最大值mmintAngle_min-杆AB角位移的最小值mmintMarkBar-为0表示杆AB由intStartAngle位置转到intEndAngle为-1表示杆AB是摇杆,由intEndAngle位置返回intStartAngle-intMarkAngle-为1表示杆AB转过0度位置-为-1表示杆AB不转过0度位置dblE21 dblE22 dblE23-中间变量-dblE31 dblE32 dblE33-dblA dblB dblC dblD-strStr1 strStr2 strStr3-4. 程序源代码及运行结果1.机构简图程序代码:Private Sub cmdRun_Click()Dim i As Integer textbox控件中的0/1/2/3/4/5/6Dim dblL_max As Double, dblL_min As Double, dblL_sum As Double 定义杆的属性 判断各数据的合法性 条件1:各参数大于0 且 角度小于360 For i = 0 To 5 If Val(txtLength(i).Text) 360 Then MsgBox 请正确输入, vbInformation + vbOKOnly, 消息框 输入值 vbInformation(符号) + vbOKOnly(指对话框的确定键) txtLength(6).Text = Exit Sub End If Next dblL_min = Val(txtLength(0).Text) 把AB杆长赋值给min For i = 0 To 3 If Val(txtLength(i).Text) dblL_max Then dblL_max = Val(txtLength(i).Text) 判断出最大值 dblL_sum = dblL_sum + Val(txtLength(i).Text) 把所有值累加上去 NextIf dblL_max dblL_sum - dblL_max Then 最大值所有之和-最大值 MsgBox 无法装配!最长杆杆长应小于其余三杆杆长之和!, vbInformation + vbOKOnly, 消息框 判断是否可以成为机构 txtLength(0).Text = txtLength(1).Text = txtLength(2).Text = txtLength(3).Text = 清零 Exit Sub End If Const PI = 3.14159265 进行赋值 dblL_AB = Val(txtLength(0).Text) 定义AB dblL_BC = Val(txtLength(1).Text) 定义BC dblL_CD = Val(txtLength(2).Text) 定义CD dblL_AD = Val(txtLength(3).Text) 定义AD dblN = Val(txtLength(4).Text) 定义N dblL_BE = Val(txtLength(5).Text) 定义BE dblF_BE = Val(txtLength(6).Text) 定义BE角度 角度值 dblW_AB = 2 * PI * dblN / 60 定义AB角速度 化为rad/s dblE_AB = 0 定义AB的角加速度为0 If OptClockWise.Value = True Then 杆AB转动方向为顺时针 intCW = -1 Else intCW = 1 End If If optPosition.Value = True Then 铰链B、C、D的相对位置为顺时针 intM = 1 Else intM = -1 End If 1和-1用于之后 Call Angle_AB(intStartAngle, intEndAngle) 计算AB杆的转动范围 cmdRun.Enabled = False fraParameter.Enabled = False 参数fra fraRealtime.Enabled = True 实时fra cmdList.Enabled = True cmdDraw.Enabled = True cmdPlay.Enabled = TrueEnd SubPrivate Sub cmdExit_Click()Unload MeEnd Sub2.运行分析结果程序代码:窗体事件Private Sub Form_Load()cmdList.Enabled = FalsecmdDraw.Enabled = FalsecmdPlay.Enabled = False 设置名称 列表 作画 演示为关闭状态fraParameter.Enabled = True 参数frafraRealtime.Enabled = False 实时fraDim i As IntegerDim strStr1 As String, strStr2 As String 中间变量strStr1 = f_AB & Chr(9) & f_CD & Chr(9) & X_E & Chr(9) & Y_E chr(9)表示 TAB键的空格 换列strStr2 = w_CD & Chr(9) & X1_E & Chr(9) & Y1_E & Chr(9) & e_CD & Chr(9) & X2_E & Chr(9) & Y2_EgrdDataList.AddItem (strStr1 & Chr(9) & strStr2) 连接作用 增加一行 显示表头grdDataList.ColWidth(0) = 700grdDataList.RowHeight(0) = 400 表头的宽度和高度For i = 1 To 9grdDataList.ColWidth(i) = (grdDataList.Width - 1000) / 9Next i 调整表格大小 i的值看表格设置的cols值 减去1即可End SubPrivate Sub txtAngle_Change() If tmrDraw.Enabled = True Then Exit Sub End IfDim i As Double, dblF_BC As Double, dblW_BC As Double, dblE_BC As DoubleDim dblF_CD As Double, dblW_CD As Double, dblE_CD As DoubleDim X_E As Double, X1_E As Double, X2_E As DoubleDim Y_E As Double, Y1_E As Double, Y2_E As DoubleCall YDFX(i, dblF_BC, dblW_BC, dblE_BC, dblF_CD, dblW_CD, dblE_CD, X_E, X1_E, X2_E, Y_E, Y1_E, Y2_E)lblCurrent(0).Text = Format(Str(dblF_CD), 0.00)lblCurrent(1).Text = Format(Str(dblW_CD), 0.00)lblCurrent(2).Text = Format(Str(dblE_CD), 0.00)lblCurrent(3).Text = Format(Str(X_E), 0.00)lblCurrent(4).Text = Format(Str(X1_E), 0.00)lblCurrent(5).Text = Format(Str(X2_E), 0.00)lblCurrent(6).Text = Format(Str(Y_E), 0.00)lblCurrent(7).Text = Format(Str(Y1_E), 0.00)lblCurrent(8).Text = Format(Str(Y2_E), 0.00)End SubPrivate Sub cmdList_Click()Dim dblF_AB As DoubleDim dblF_BC, dblW_BC, dblE_BC As DoubleDim dblF_CD, dblW_CD, dblE_CD As Double 定义列表中变量Dim X_E, X1_E, X2_E, Y_E, Y1_E, Y2_E As Double 定义点E的X、Y坐标的位移、速度、加速度!Dim strStr1 As String, strStr2 As String, strStr3 As String 定义中间变量Dim i As Integer, intTemp As Integer设置各字段对其方式For i = 0 To 8grdDataList.ColAlignment(i) = flexAlignCenterCenterNext iIf Abs(intEndAngle - intStartAngle) 360 ThenintTemp = 1 若AB是摇杆Else intTemp = 30 若AB是曲柄End IfFor i = intStartAngle To intEndAngle Step intCW * intTemp 显示列的数值Call YDFX(i, dblF_BC, dblW_BC, dblE_BC, dblF_CD, dblW_CD, dblE_CD, X_E, X1_E, X2_E, Y_E, Y1_E, Y2_E) Call YDFX.YDFX(i, dblF_BC, dblW_BC, dblE_BC, dblF_CD, dblW_CD, dblE_CD)是错误的 点E的X、Y坐标的位移、速度、加速度! 显示计算结果,保留2位小数strStr1 = Format(Str(dblF_CD), 0.00) & Chr(9) & Format(X_E, 0.00) & Chr(9) & Format(Y_E, 0.00)strStr2 = Format(Str(dblW_CD), 0.00) & Chr(9) & Format(X1_E, 0.00) & Chr(9) & Format(Y1_E, 0.00)strStr3 = Format(Str(dblE_CD), 0.00) & Chr(9) & Format(X2_E, 0.00) & Chr(9) & Format(Y2_E, 0.00)grdDataList.AddItem (Str(i) & Chr(9) & strStr1 & Chr(9) & strStr2 & Chr(9) & strStr3)Next igrdDataList.FixedRows = 1 确定的rows值cmdList.Enabled = FalseEnd Sub3.运动线图程序代码:作画事件Private Sub cmdDraw_Click()Dim dblWP As Double, dblHP As Double, i As IntegerdblWP = Abs(picDraw(0).ScaleWidth)dblHP = Abs(picDraw(0).ScaleHeight) 宽度和高度Dim dblAngle_L As Double, dblSx As Double 运动曲线的横向作图比例If intStartAngle * intEndAngle 0 Then If intStartAngle dblMax_f_BC Then dblMax_f_BC = Abs(dblF_BC)If Abs(dblW_BC) dblMax_w_BC Then dblMax_w_BC = Abs(dblW_BC)If Abs(dblE_BC) dblMax_e_BC Then dblMax_e_BC = Abs(dblE_BC)If Abs(dblF_CD) dblMax_f_CD Then dblMax_f_CD = Abs(dblF_CD)If Abs(dblW_CD) dblMax_w_CD Then dblMax_w_CD = Abs(dblW_CD)If Abs(dblE_CD) dblMax_e_CD Then dblMax_e_CD = Abs(dblE_CD)If Abs(X_E) dblmax_X_E Then dblmax_X_E = Abs(X_E)If Abs(X1_E) dblmax_X1_E Then dblmax_X1_E = Abs(X1_E)If Abs(X2_E) dblmax_X2_E Then dblmax_X2_E = Abs(X2_E)If Abs(Y_E) dblmax_Y_E Then dblmax_Y_E = Abs(Y_E)If Abs(Y1_E) dblmax_Y1_E Then dblmax_Y1_E = Abs(Y1_E)If Abs(Y2_E) dblmax_Y2_E Then dblmax_Y2_E = Abs(Y2_E)Next i 进行赋值Dim dblSx As Double, dblSy As DoubledblSx = (dblWP - 240) / 360 确定横向作图比例i = intStartAngle + jCall YDFX(i, dblF_BC, dblW_BC, dblE_BC, dblF_CD, dblW_CD, dblE_CD, X_E, X1_E, X2_E, Y_E, Y1_E, Y2_E)lblRealtimeAB.Text = Str(i)dblSy = (dblHP / 2 - 240) / dblMax_f_CD 确定纵向作图比例绘制运动曲线,并实时显示数值lblRealtime(0).Text = Format(Str(dblF_BC * dblSy), 0.00)lblRealtime(1).Text = Format(Str(dblW_BC * dblSy), 0.00)lblRealtime(2).Text = Format(Str(dblE_BC * dblSy), 0.00)picDraw(0).PSet (i * dblSx, dblF_CD * dblSy)lblRealtime(3).Text = Format(Str(dblF_CD * dblSy), 0.00)dblSy = (dblHP / 2 - 240) / dblMax_w_CDpicDraw(1).PSet (i * dblSx, dblW_CD * dblSy)lblRealtime(4).Text = Format(Str(dblW_CD * dblSy), 0.00)dblSy = (dblHP / 2 - 240) / dblMax_e_CDpicDraw(2).PSet (i * dblSx, dblE_CD * dblSy)lblRealtime(5).Text = Format(Str(dblE_CD * dblSy), 0.00)dblSy = (dblHP / 2 - 240) / dblmax_X_EpicDraw(3).PSet (i * dblSx, X_E * dblSy)dblSy = (dblHP / 2 - 240) / dblmax_X1_EpicDraw(4).PSet (i * dblSx, X1_E * dblSy)dblSy = (dblHP / 2 - 240) / dblmax_X2_EpicDraw(5).PSet (i * dblSx, X2_E * dblSy)dblSy = (dblHP / 2 - 240) / dblmax_Y_EpicDraw(6).PSet (i * dblSx, Y_E * dblSy)dblSy = (dblHP / 2 - 240) / dblmax_Y1_EpicDraw(7).PSet (i * dblSx, Y1_E * dblSy)dblSy = (dblHP / 2 - 240) / dblmax_Y2_EpicDraw(8).PSet (i * dblSx, Y2_E * dblSy) j = j + intCW * 1 If i = intEndAngle Then tmrDraw.Enabled = False j = 0 End IfEnd Sub4.机构动画程序代码:演示事件Private Sub cmdPlay_Click()设置绘图参数picPlay.ClspicPlay.ScaleMode = 1picPlay.DrawStyle = 0picPlay.DrawWidth = 2Dim dblWP As Double, dblHP As Double 设置坐标系dblWP = picPlay.ScaleWidthdblHP = picPlay.ScaleHeightpicPlay.Scale (-dblWP / 3 - 3000, dblHP / 2 + 1500)-(2 * dblWP / 3, -dblHP / 2)判断比例合法性If Val(txtScale.Text) 30 Then MsgBox 请输入 0-30 之间的值作为显示比例!, vbInformation + vbOKOnly, 消息框 txtScale.Text = Exit SubEnd IftmrPlay.Enabled = TruecmdPlay.Caption = 演示End SubPrivate Sub tmrPlay_Timer()picPlay.ClsIf Val(txtScale.Text) 50 Then 判断比例合法性 MsgBox 请输入 0-50 之间的值作为显示比例!, vbInformation + vbOKOnly, 消息框 txtScale.Text = Exit SubEnd IftmrPlay.Interval = 1 + hsbSpeed.Value / 200 调节运动仿真速度Dim dblSxy As Double 获取显示比例dblSxydblSxy = Val(txtScale.Text)Static i As Integer, j As Integer, intMarkBar As Integer i = intStartAngle + jDim dblF_AB, dblF_BC, dblW_BC, dblE_BC, dblF_CD, dblW_CD, dblE_CD, X_E, X1_E, X2_E, Y_E, Y1_E, Y2_E As DoubleDim txtAngle As DoubleCall YDFX(i, dblF_BC, dblW_BC, dblE_BC, dblF_CD, dblW_CD, dblE_CD, X_E, X1_E, X2_E, Y_E, Y1_E, Y2_E)txtAngle.Text = Str(i) 实时显示运动参数lblCurrent(0).Text = Format(Str(dblF_CD), 0.00)lblCurrent(1).Text = Format(Str(dblW_CD), 0.00)lblCurrent(2).Text = Format(Str(dblE_CD), 0.00)lblCurrent(3).Text = Format(Str(X_E), 0.00)lblCurrent(4).Text = Format(Str(X1_E), 0.00)lblCurrent(5).Text = Format(Str(X2_E), 0.00)lblCurrent(6).Text = Format(Str(Y_E), 0.00)lblCurrent(7).Text = Format(Str(Y1_E), 0.00)lblCurrent(8).Text = Format(Str(Y2_E), 0.00)计算关键点坐标Dim dblAx As Integer, dblAy As IntegerDim dblBx As Integer, dblBy As IntegerDim dblCx As Integer, dblCy As IntegerDim dblDx As Integer, dblDy As IntegerDim dblEx As Integer, dblEy As IntegerConst PI = 3.1415926dblAx = 0dblAy = 0dblBx = dblL_AB * Cos(i * PI / 180)dblBy = dblL_AB * Sin(i * PI / 180)dblCx = dblL_AD + dblL_CD * Cos(dblF_CD * PI / 180)dblCy = dblL_CD * Sin(dblF_CD * PI / 180)dblDx = dblL_ADdblDy = 0X_E = dblL_AB * Cos(dblF_AB) + dblL_BE * Cos(dblF_BC + dblF_BE)Y_E = dblL_AB * Sin(dblF_AB) + dblL_BE * Sin(dblF_BC + dblF_BE)dblEx = X_EdblEy = Y_EdblAx = dblAx * dblSxydblAy = dblAy * dblSxydblBx = dblBx * dblSxydblBy = dblBy * dblSxydblCx = dblCx * dblSxydblCy = dblCy * dblSxydblDx = dblDx * dblSxydblDy = dblDy * dblSxydblEx = dblEx * dblSxydblEy = dblEy * dblSxypicPlay.FillStyle = vbFSSolidpicPlay.FillColor = vbRedDim dblR As Double, dblTemp As Double 画A处机架dblR = dblL_AB / 15 * dblSxydblTemp = dblL_AB / 4 * dblSxypicPlay.Line (dblAx, dblAy)-Step(-dblTemp, -dblTemp)picPlay.Line (dblAx, dblAy)-Step(dblTemp, -dblTemp)picPlay.Line (-2 * dblTemp, -dblTemp)-Step(4 * dblTemp, 0)picPlay.Line (-1.5 * dblTemp, -dblTemp)-Step(-dblTemp / 2, -dblTemp / 2)picPlay.Line (0, -dblTemp)-Step(-dblTemp / 2, -dblTemp / 2)picPlay.Line (1.5 * dblTemp, -dblTemp)-Step(-dblTemp / 2, -dblTemp / 2)picPlay.Line (dblDx, dblDy)-Step(-dblTemp, -dblTemp) 画D处机架picPlay.Line
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家卫生健康委能力建设和继续教育中心招聘考试笔试试题(含答案)
- 汽车品牌忠诚度增长创新创业项目商业计划书
- 智能语音写作辅助创新创业项目商业计划书
- 2025年肥西县特殊教育学校招聘教师考试笔试试题(含答案)
- 电商智能选品竞争情报分析创新创业项目商业计划书
- 2025年社交媒体平台在文化传播中的文化内容创作与传播报告
- 2025年房地产企业多元化战略下的城市更新与协同效应研究报告
- 2025年氢燃料电池汽车关键零部件国产化市场趋势预测与战略布局报告
- 2025年尾矿处理技术突破在生态修复中的技术创新驱动因素分析报告
- 现代整形与美容课件
- GA 1801.4-2022国家战略储备库反恐怖防范要求第4部分:火炸药库
- 实测实量测量表格优质资料
- 读书笔记 -《提高利润的78个方法》
- GB/T 4623-2006环形混凝土电杆
- 甲状腺危象教学课件
- GB/T 14273-1993旋转轴唇形密封圈性能试验方法
- GB/T 12247-2015蒸汽疏水阀分类
- 期权风险管理课件
- 《护理伦理学》教学大纲(本科)
- 安全标准化班组汇报课件
- 板带轧机刚度对热轧板形的影响
评论
0/150
提交评论