课程设计最终作业.docx

上传人:b****5 文档编号:11541579 上传时间:2023-03-19 格式:DOCX 页数:26 大小:228.32KB
下载 相关 举报
课程设计最终作业.docx_第1页
第1页 / 共26页
课程设计最终作业.docx_第2页
第2页 / 共26页
课程设计最终作业.docx_第3页
第3页 / 共26页
课程设计最终作业.docx_第4页
第4页 / 共26页
课程设计最终作业.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

课程设计最终作业.docx

《课程设计最终作业.docx》由会员分享,可在线阅读,更多相关《课程设计最终作业.docx(26页珍藏版)》请在冰豆网上搜索。

课程设计最终作业.docx

课程设计最终作业

目录

一、设计任务书………………………………………………………

平面连杆机构……………………………………………………

二、铰链四杆机构……………………………………………………

1.数学模型的建立…………………………………………………

2.控件名称…………………………………………………………

3.主要变量说明…………………………………………

4.程序源代码及运行结果…………………………………………

三、小结

四、主要参考资料……………………………………………………

 

2.主要控件名称及相关说明

控件名称

类型

变量名

含义、功能

单位

txtLength(0)

TextBox

控件数组

dblL_AB

主动连架杆AB长度

mm

txtLength

(1)

dblL_BC

连杆BC长度

mm

txtLength

(2)

dblL_CD

从动连架杆CD长度

mm

txtLength(3)

dblL_AD

机架AD长度

mm

txtLength(4)

dblN

主动连架杆AB的转速n

r/min

txtLength(5)

dblL_BE

BE的长度

mm

txtLength(6)

dblF_BE

杆BE与杆AB的夹角δ

mm

txtAngle

TextBox

-

主动连架杆AB的任意角位移

°

textScale

TextBox

dblSxy

运动仿真的显示比例

-

optClockWise

OptionButton

intCW

杆AB顺时针转,intCW=-1

-

optNCW

杆AB逆时针转,intCW=1

optPosition

OptionButton

intM

B、C、D顺时针排列,intM=-1

-

optNPosition

B、C、D逆时针排列,intM=1

lblCurrent(0)

Lable

控件数组

-

显示指定时刻杆CD的角位移

°

lblCurrent

(1)

显示指定时刻杆CD的角速度

rad/s

lblCurrent

(2)

显示指定时刻杆CD的角加速度

rad/s2

lblCurrent(3)

显示指定时刻点E对x轴角位移

°

lblCurrent(4)

显示指定时刻点E对x轴角速度

rad/s

lblCurrent(5)

显示指定时刻点E对x轴角加速度

rad/s2

lblCurrent(6)

显示指定时刻点E对y轴角位移

°

lblCurrent(7)

显示指定时刻点E对y轴角速度

rad/s

lblCurrent(8)

显示指定时刻点E对y轴角加速度

rad/s2

lblRealtimeAB

Lable

-

实时显示杆AB的角位移

°

lblRealtime(0)

 

Lable

控件数组

Lable

控件数组

-

实时显示杆CD的角位移

°

lblRealtime

(1)

实时显示杆CD的角速度

rad/s

lblRealtime

(2)

实时显示杆CD的角加速度

rad/s2

lblRealtime(3)

实时显示点E对x轴角位移

°

lblRealtime(4)

实时显示点E对x轴角速度

rad/s

lblRealtime(5)

实时显示点E对x轴角加速度

rad/s2

lblRealtime(6)

实时显示点E对y轴角位移

°

lblRealtime(7)

实时显示点E对y轴角速度

rad/s

lblRealtime(8)

实时显示点E对y轴角加速度

rad/s2

cmdRun

CommandButton

-

运行程序

-

cmdList

CommandButton

-

显示计算结果

-

cmdDraw

CommandButton

-

绘制运动曲线

-

cmdPlay

CommandButton

-

进行运动仿真

-

Command1

CommandButton

-

暂停运动仿真

-

cmdExit

CommandButton

-

退出程序

-

tmrDraw

Timer

-

控制运动曲线的绘制速度

-

tmrPlay

Timer

-

控制运动仿真的速度

-

sstResult

SStab

-

提供一组选项卡显示程序运行结果

-

grdDataList

MSFlexGrid

-

显示分析结果

-

picFigure

PictureBox

-

显示机构示意图

-

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对x轴角加速度曲线

-

picPlay

PictureBox

-

显示运动仿真

-

hsbSpeed

HscrollBar

-

调节运动仿真速度

-

3.主要变量说明

变量名

含义

单位

程序中

数学模型中

dblL_AB

L1

主动连架杆AB长度

mm

dblL_BC

L2

连杆BC长度

mm

dblL_CD

L3

从动连架杆CD长度

mm

dblL_AD

L4

机架AD长度

mm

dblN

主动连架杆AB的转速

r/min

dblL_BE

a

BE的长度

mm

dblF_BE

δ

杆BE与杆AB的夹角

mm

txtAngle

-

主动连架杆AB的任意角位移

°

dblSxy

-

运动仿真的显示比例

-

intCW

-

杆AB顺时针转,intCW=-1,反之intC=1

-

intM

-

B、C、D顺时针排列intM=-1,反之intM=1

-

dblF_AB

AB杆的角位移

°

dblF_BC

BC杆的角位移

°

dblF_CD

φ3

CD杆的角位移

°

dblW_BC

BC杆的角速度

rad/s

dblW_CD

CD杆的角速度

rad/s

dblE_BC

BC杆的角加速度

rad/s2

dblE_CD

CD杆的角加速度

rad/s2

X_E

点E对x轴位移

mm

X1_E

点E对x轴速度

mm/s

X2_E

点E对x轴加速度

mm/s2

Y_E

点E对y轴位移

mm

Y1_E

点E对y轴速度

mm/s

Y2_E

点E对y轴加速度

mm/s2

(dblAx,dblAy)

-

铰链A的坐标

mm

(dblBx,dblBy)

-

铰链B的坐标

mm

(dblCx,dblCy)

-

铰链C的坐标

mm

(dblDx,dblDy)

-

铰链D的坐标

mm

(dblEx,dblEy)

-

铰链E的坐标

mm

dblSx,dblSy

-

运动曲线的横向、纵向作图比例

-

dblWP、dblHP

-

PictureBox控件的宽度值、高度值

Twip

dblAngle_L

-

杆AB负角位移的最大绝对值

°

dblMax_f_CD

-

CD杆的最大角位移

°

dblMax_w_CD

-

CD杆的最大角速度

rad/s

dblMax_e_CD

-

CD杆的最大角加速度

rad/s2

dblMax_X_E

-

点E对x轴最大位移

mm

dblMax_X1_E

-

点E对x轴最大速度

mm/s

dblMax_X2_E

-

点E对x轴最大加速度

mm/s2

dblMax_Y_E

-

点E对y轴最大位移

mm

dblMax_Y1_E

-

点E对y轴最大速度

mm/s

dblMax_Y2_E

-

点E对y轴最大加速度

mm/s2

dblL_max

-

最长杆杆长

mm

dblL_min

-

最短杆杆长

mm

dblL_sum

-

各杆杆长之和

mm

intAngle_max

-

杆AB角位移的最大值

mm

intAngle_min

-

杆AB角位移的最小值

mm

intMarkBar

-

为0表示杆AB由intStartAngle位置转到intEndAngle为-1表示杆AB是摇杆,由intEndAngle位置返回intStartAngle

-

intMarkAngle

-

为1表示杆AB转过0度位置

-

为-1表示杆AB不转过0度位置

dblE21dblE22dblE23

-

中间变量

-

dblE31dblE32dblE33

-

-

dblAdblBdblCdblD

-

-

strStr1strStr2strStr3

-

-

4.程序源代码及运行结果

OptionExplicit

PrivateSubForm_Load()

cmdList.Enabled=False,cmdDraw.Enabled=False,cmdPlay.Enabled=False

DimstrStr1AsString,strStr2AsString,iAsInteger

strStr1="f_AB"&Chr(9)&"f_CD"&Chr(9)&"w_CD"&Chr(9)&"e_CD"

strStr2="X_E"&Chr(9)&"Vx_E"&Chr(9)&"Ax_E"&Chr(9)&"Y_E"&Chr(9)&"Vy_E"&Chr(9)&"Ay_E"

grdDataList.AddItem(strStr1&Chr(9)&strStr2)

grdDataList.ColWidth(0)=600

grdDataList.RowHeight(0)=300

Fori=1To9

grdDataList.ColWidth(i)=(grdDataList.Width-1000)/9

Nexti

EndSub

PrivateSubcmdRun_Click()

DimiAsInteger

DimdblL_maxAsDouble,dblL_minAsDouble,dblL_sumAsDouble

Fori=0To5

IfVal(txtLength(i).Text)<=0Then

MsgBox"请正确输入",vbInformation+vbOKOnly,"消息框"

txtLength(i).Text=""

ExitSub

EndIf

Next

dblL_min=Val(txtLength(0).Text)

Fori=0To3

IfVal(txtLength(i).Text)

IfVal(txtLength(i).Text)>dblL_maxThendblL_max=Val(txtLength(i).Text)

dblL_sum=dblL_sum+Val(txtLength(i).Text)

Next

IfdblL_max>dblL_sum-dblL_maxThen

MsgBox"无法装配!

最长杆杆长应小于其余三杆杆长之和!

",vbInformation+vbOKOnly,"消息框"

ExitSub

EndIf

ConstIP=3.1415936

dblL_AB=Val(txtLength(0).Text)

dblL_BC=Val(txtLength

(1).Text)

dblL_CD=Val(txtLength

(2).Text)

dblL_AD=Val(txtLength(3).Text)

dblN=Val(txtLength(4).Text)

dblL_BE=Val(txtLength(5).Text)

dblF_BE=Val(txtLength(6).Text)

dblW_AB=2*PI*dblN/60

dblE_AB=0

IfoptClockWise.Value=TrueThen

intCW=-1

Else

intCW=1

EndIf

IfoptPosition.Value=TrueThenintM=1

Else

intM=-1

EndIf

CallModule2.Angle_AB

cmdList.Enabled=True,cmdDraw.Enabled=True,cmdPlay.Enabled=True

EndSub

PrivateSubcmdExit_Click()

UnloadMe

EndSub

PrivateSubcmdList_Click()

DimdblF_CD,dblW_CD,dblE_CD,X_E,X1_E,X2_E,Y_E,Y1_E,Y2_EAsDouble

DimiAsInteger,intTempAsInteger,strStr1AsString,strStr2AsString,strStr3AsString

Fori=0To9

grdDataList.ColAlignment(i)=flexAlignCenterCenter

Next

IfAbs(intEndAngle-intStartAngle)<360Then

intTemp=1

Else

intTemp=30

EndIf

Fori=intStartAngleTointEndAngleStepintCW*intTemp

CallModule1.YDFX(i,dblF_CD,dblW_CD,dblE_CD,X_E,X1_E,X2_E,Y_E,Y1_E,Y2_E)

strStr1=Format(Str(dblF_CD),"0.00")&Chr(9)&Format(dblW_CD,"0.00")&Chr(9)&Format(dblE_CD,"0.00")

strStr2=Format(Str(X_E),"0.00")&Chr(9)&Format(X1_E,"0.00")&Chr(9)&Format(X2_E,"0.00")

strStr3=Format(Str(Y_E),"0.00")&Chr(9)&Format(Y1_E,"0.00")&Chr(9)&Format(Y2_E,"0.00")

grdDataList.AddItem(Str(i)&Chr(9)&strStr1&Chr(9)&strStr2&Chr(9)&strStr3)

Next

cmdList.Enabled=False

EndSub

PrivateSubcmdDraw_Click()

DimdblWPAsDouble,dblHPAsDouble,iAsInteger

dblWP=Abs(picDraw(0).ScaleWidth)

dblHP=Abs(picDraw(0).ScaleHeight)

Fori=0To8

picDraw(i).Cls

picDraw(i).ScaleMode=1

picDraw(i).DrawStyle=0

picDraw(i).DrawWidth=1.5

picDraw(i).Scale(-120,dblHP/2)-(dblWP-120,-dblHP/2)

picDraw(i).Line(0,0)-(dblWP-160,0)

picDraw(i).Line(dblWP-160,0)-Step(-120,120)

picDraw(i).Line(dblWP-160,0)-Step(-120,-120)

picDraw(i).CurrentX=dblWP-700

picDraw(i).CurrentY=250

picDraw(i).Print"f_AB"

picDraw(i).CurrentX=-120

picDraw(i).CurrentY=-10

picDraw(i).Print"0"

picDraw(i).Line(0,dblHP/2-60)-(0,-(dblHP/2-60))

picDraw(i).Line(0,dblHP/2-60)-Step(-120,-120)

picDraw(i).Line(0,dblHP/2-60)-Step(120,-120)

picDraw(i).CurrentX=160

picDraw(i).CurrentY=dblHP/2-60

SelectCasei

Case0

picDraw(i).Print"f_CD"

Case1

picDraw(i).Print"w_CD"

Case2

picDraw(i).Print"e_CD"

Case3

picDraw(i).Print"X_E"

Case4

picDraw(i).Print"Vx_E"

Case5

picDraw(i).Print"ax_E"

Case6

picDraw(i).Print"Y_E"

Case7

picDraw(i).Print"Vy_E"

Case8

picDraw(i).Print"ay_E"

EndSelect

Next

cmdDraw.Enabled=False

tmrDraw.Enabled=True

EndSub

PrivateSubtmrDraw_Timer()

DimdblWPAsDouble,dblHPAsDouble,iAsInteger

StaticjAsInteger

dblWP=Abs(picDraw(0).ScaleWidth)

dblHP=Abs(picDraw(0).ScaleHeight)

DimdblMax_f_CD,dblMax_w_CD,dblMax_e_CDAsDouble

Dimdblmax_X_EAsDouble,dblmax_X1_EAsDouble,dblmax_X2_EAsDouble

Dimdblmax_Y_EAsDouble,dblmax_Y1_EAsDouble,dblmax_Y2_EAsDouble

DimdblF_AB,dblF_BC,dblF_CD,dblW_BC,dblW_CD,dblE_BC,dblE_CDAsDouble

DimX_E,X1_E,X2_E,Y_E,Y1_E,Y2_EAsDouble

Fori=intStartAngleTointEndAngleStepintCW*1

CallModule1.YDFX(i,dblF_CD,dblW_CD,dblE_CD,X_E,X1_E,X2_E,Y_E,Y1_E,Y2_E)

IfAbs(dblF_CD)>dblMax_f_CDThendblMax_f_CD=Abs(dblF_CD)

IfAbs(dblW_CD)>dblMax_w_CDThendblMax_w_CD=Abs(dblW_CD)

IfAbs(dblE_CD)>dblMax_e_CDThendblMax_e_CD=Abs(dblE_CD)

IfAbs(X_E)>dblmax_X_EThendblmax_X_E=Abs(X_E)

IfAbs(X1_E)>dblmax_X1_EThendblmax_X1_E=Abs(X1_E)

IfAbs(X2_E)>dblmax_X2_EThendblmax_X2_E=Abs(X2_E)

IfAbs(Y_E)>dblmax_Y_EThendblmax_Y_E=Abs(Y_E)

IfAbs(Y1_E)>dblmax_Y1_EThendblmax_Y1_E=Abs(Y1_E)

IfAbs(Y2_E)>dblmax_Y2_EThendblmax_Y2_E=Abs(Y2_E)

Nexti

DimdblSxAsDouble,dblSyAsDouble

dblSx=(dblWP-240)/360

i=intStartAngle+j

CallModule1.YDFX(i,dblF_CD,dblW_CD,dblE_CD,X_E,X1_E,X2_E,Y_E,Y1_E,Y2_E)

lblRealtimeAB.Caption=Str(i)

dblSy=(dblHP/2-240)/dblMax_f_CD

picDraw(0).PSet(i*dblSx,dblF_CD*dblSy)

lblRealtime(0).Caption=Format(Str(dblF_CD*dblSy),"0.00")

dblSy=(dblHP/2-240)/dblMax_w_CD

picDraw

(1).PSet(i*dblSx,dblW_CD*dblSy)

lblRealtime

(1).Caption=Format(Str(dblW_CD*dblSy),"0.00")

dblSy=(dblHP/2-240)/dblMax_e_CD

picDraw

(2).PSet(i*dblSx,dblE_CD*dblSy)

lblRealtime

(2).Caption=Format(Str(dblE_CD*dblSy),"0.00")

dblSy=(dblHP/2-240)/dblmax_X_E

picDraw(3).PSet(i*dblSx,X_E*dblSy)

l

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1