连杆机构运动分析指导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连杆机构运动分析指导
一、实验目的
1. 加强学生对机构组成原理的认识,进一步了解机构组成及其运动特性,为机构创新设计奠定良好的基础。
2. 培养学生连杆机构解析法分析的能力。
二、实验原理
机构一般由两部分组成,一部分为机架和原动件及他们之间的运动副,另一部分由其他构件和运动副组成。
其中,前一部分称为基本机构部分,后一部分称为从动件系统。
如图1所示的机构可以分成如图2所示两部分。
两部分机构自由度之和等于原始机构的自由度,由于基本机构的自由度与原动件数目相等,等于机构的自由度,所以从动件系统部分的自由度为0。
在很多情况下,从动件系统可以进一步划分成更小的杆组。
我们把无法再分割的、自由度=0的从动件连接称为阿苏尔杆组(Assur group). 例如如图2的从动件系统可以进一步划分成如图3所示的两个阿苏尔杆组。
在每一个阿苏尔杆组中,杆组内部各构件间连接的运动副称为内部运动副(inner pair内副)。
例如杆组DCB中的转动副C和杆组GFE中的转动副F。
每一个阿苏尔杆组中有一部分运动副与运动已知构件相联,这一部分运动副称为外部运动副(outer pairs外副)。
例如,阿苏尔杆组DCB中的转动副B和D分别和运动已知构件(原动件和机架)相连接,为外副。
阿苏尔杆组DCB通过外副B和D 与运动已知的构件连接后,形成了一个铰链四杆机构ABCD ,杆组DCB中的构件BCE和DC运动确定。
阿苏尔杆组GFE 通过外副E和G与运动已知构件(BCE 和机架)连接。
注意:转动副E不是阿苏尔杆组DCB的一个外副。
从阿苏尔杆组的安装顺序,我们可以看出杆组DCB是第一杆组,杆组GFE 是第二杆组。
我们可以得到机构的组成原理:任何机构都是在基本机构的基础上依次添加杆组扩展而成的。
注意只有在前面的阿苏尔杆组安装完之后,后面的杆组才能安装。
依据机构的组成原理就可以预先编写一些常用阿苏尔杆组的子程序。
这样,多杆连杆机构的运动分析就可以简化成简单的两步:首先,将机构拆成基本机构
部分和阿苏尔杆组,然后,根据阿苏尔杆组的类型和装配顺序调用相应的运动分析子程序。
三、实验方法与步骤
图1 图2 图3
1.实验前的准备。
预习本实验,掌握实验原理。
熟悉教师给定的连杆机构;(亦可自己选择并设计一个连杆机构,并画出其机构运动简图)。
让同学初步了解一下True Basic 常用命令及其使用。
编写了学习指导“True Basic 常用命令简介和True Basic 常见出错提示信息”的学习指导,详见“附件Ⅶ”。
掌握机构的组成原理和结构分析。
熟练掌握基本的二级Assur 杆组和Link 杆组的运动分析解析法,了解相应子程序的意义,懂得如何正确调用相应的子程序,详见“附件Ⅷ”——“常用二级阿苏尔杆组及其子程序”。
2.实验步骤:
(1)连杆机构结构分析
先去掉机构中的局部自由度和虚约束;计算机构的自由度,确定原动件;拆分杆组,画在纸上。
编写“图4连杆机构结构分析”的学习指导,详见“附件Ⅰ”。
(2)编写主程序
编写运动分析主程序。
根据选定的机构,编写相应的连杆机构运动分析主程序。
为此,编写了“图4连杆机构计算程序”的学习指导,祥见“附件Ⅱ”。
编写动画主程序。
根据选定的机构,编写相应的连杆机构动画主程序。
为此,编写了“图4连杆机构动画程序”的学习指导,详见“附件Ⅲ”。
编写绘制从动件位移、速度、加速度线图的主程序。
为此,编写了“在TB 中绘制SVA三曲线”的学习指导,详见“附件Ⅳ”。
编制将从动件位移、速度、加速度线图转化成相应.scr文件的主程序,详见“附件Ⅴ”——“在ACAD中绘制SV A三曲线”。
(3)上机调试
上机调试,并将结果输出。
调试并运行连杆机构运动分析主程序,然后将计算结果的具体数值以文件的形式保存起来(参见附件Ⅵ——“如何将TRUE BASIC 的输出数值打印出来”,“如何将TRUE BASIC 的输出数值存为文件”,“如何在Excel调用数值并画出曲线”),以备检查。
调试并运行连杆机构动画主程序检查运动分析是否存在明显的错误,以检验机构位置分析是否正确。
调试并运行绘制从动件位移、速度、加速度线图的主程序,以检验从动件的速度和加速度是否正确,进行进一步的检查,看看是否位移达到极值时,速度为0,速度达到极值时,加速度为0。
调试并运行将从动件位移、速度、加速度线图转化成相应.scr文件的主程序,然后将.scr文件在AUTOCAD中打开,获得从动件位移、速度、加速度三线图,并加画相应的坐标轴与坐标。
为此,编写了“在ACAD中绘制SVA三曲线”的实验学习指导,详见“附件Ⅴ”。
3.编写实验报告。
连杆机构结构分析指导
图4所示的六杆连杆机构。
原动件曲柄1以ω1=10rad/s的等角速度旋转,机构已知的尺寸如下:X E=0, Y E=0, X B=41mm, Y B=0, X F=0, Y F=-34m, L ED=14mm, L DA=39mm, L BA=28mm, ∠ADC=35︒, L DC=15mm, L FG=55mm 。
要求编一个分析构件FG和点G的输出运动的主程序。
原动件ED以5︒的步长从0︒转到360︒,分析机构的整个运动周期。
如图4a)所示六杆机构,1为主动件,对其进行结构分析,如图4b)所示,具体结构分
析结果如表1所列。
表1 图4六杆机构结构分析
图4连杆机构计算程序
!本程序用于图4连杆机构运动分析,输出G点的位置、速度、加速度
!若要绘制从动件的位移、速度、加速度曲线,见附件Ⅳ-“在TB中绘制SV A三曲线”以及附件Ⅴ-“在ACAD中绘制SV A三曲线”
!若要将图4连杆机构从动件的位移、速度、加速度具体数值打印出来,见附件Ⅵ-“如何将TRUE BASIC的输出数值打印出来”
OPTION NOLET
FOR I=0 TO 360 STEP 2
CALL LINK(0, 0, 0, 0, 0, 0, I*PI/180, 10, 0, 14, XD, YD, VDX, VDY, ADX, ADY) CALL RRR(XD, YD, VDX, VDY, ADX, ADY, 41, 0, 0, 0, 0, 0, 39, 28, QDA, W3, E3,
QBA, W2, E2)
QDC=QDA+35*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, 15, XC, YC, VCX, VCY, ACX, ACY)
CALL RPR(0, 0, -34, 0, 0, 0, 0, XC, YC, VCX, VCY, ACX, ACY, 0, QFG, W4, E4)
CALL LINK(0, -34, 0, 0, 0, 0, QFG, W4, E4, 55, XG, YG, VGX, VGY, AGX, AGY)
PRINT I, QFG*180/PI, W4, E4, XG, YG, VGX, VGY, AGX, AGY
NEXT I
END
SUB LINK(XA, YA, V AX, V AY, AAX, AAY, QAB, W, E, L, XB, YB, VBX, VBY, ABX, ABY) XB=XA+L*COS(QAB)
YB=YA+L*SIN(QAB)
VBX=V AX-L*SIN(QAB)*W
VBY=V AY+L*COS(QAB)*W
ABX=AAX-L*COS(QAB)*W^2-L*SIN(QAB)*E
ABY=AAY-L*SIN(QAB)*W^2+L*COS(QAB)*E
SUB RRR(XA, YA, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY, ACX, ACY, LAB, LCB, QAB, WAB, EAB, QCB, WCB, ECB)
LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
COSQCBA=(LAB^2+LAC^2-LCB^2)/(2*LAB*LAC)
SINQCBA=SQR(1-COSQCBA^2)
QCBA=ANGLE(COSQCBA,SINQCBA)
QAB=QAC-QCBA
XB=XA+LAB*COS(QAB)
YB=YA+LAB*SIN(QAB)
COSQCB=(XB-XC)/LCB
SINQCB=(YB-YC)/LCB
QCB=ANGLE(COSQCB,SINQCB)
W AB=((V AX-VCX)*COSQCB+(V AY-VCY)*SINQCB)/LAB/SIN(QAB-QCB)
WCB=((V AX-VCX)*COS(QAB)+(V AY-VCY)*SIN(QAB))/LCB/SIN(QAB-QCB)
G=AAX-ACX-LAB*COS(QAB)*WAB^2+LCB*COSQCB*WCB^2
F=AAY-ACY-LAB*SIN(QAB)*WAB^2+LCB*SINQCB*WCB^2
EAB=(G*COSQCB+F*SINQCB)/LAB/SIN(QAB-QCB)
ECB=(G*COS(QAB)+F*SIN(QAB))/LCB/SIN(QAB-QCB)
END SUB
SUB RPR(M, XA, Y A, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY,ACX,ACY, LAB,QBD,W,E) LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
LBC=SQR(LAC^2-LAB^2)
QACB=ATN(LAB/LBC)
QBD=QAC+M*QACB
DELTA=-(YC-Y A)*SIN(QBD)-(XC-XA)*COS(QBD)
DELTAW=(VCX-V AX)*SIN(QBD)-(VCY-V AY)*COS(QBD) DELTA V=-(YC-YA)*(VCY-V AY)-(XC-XA)*(VCX-V AX)
W=DELTAW/DELTA
VLBC=DELTA V/DELTA
T1=(ACX-AAX)+(VCY-V AY)*W+SIN(QBD)*W*VLBC
T2=(ACY-AAY)-(VCX-V AX)*W-COS(QBD)*W*VLBC
DELTAE=T1*SIN(QBD)-T2*COS(QBD)
E=DELTAE/DELTA
END SUB
附件Ⅲ:
图4连杆机构动画程序
! 图4的动画程序
SET WINDOW -22, 58, -35, 23 !窗口的长宽比应该与屏幕窗口的一样,大约为4:3,这样画出来的图形才不会变形。
OPTION NOLET
W1=10 :XE=0:YE=0:XB=41:YB=0:XF=0:YF=-34:LED=14
LDA=39:LBA=28:ADC=35:LDC=15:LFG=55:R=0.5
FOR I=0 TO 3600 STEP 2 !准备转10圈,原动件每次转2度。
CALL LINK(XE, YE, 0, 0, 0, 0, I*PI/180, W1, 0, LED, XD, YD, VDX,
VDY, ADX, ADY)
CALL RRR(XD, YD, VDX, VDY, ADX, ADY, XB, YB, 0, 0, 0, 0, LDA, LBA,
QDA, W3, E3, QBA, W2, E2)
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDA, W3, E3, LDA, XA, YA,
V AX, VAY, AAX, AAY) !为了画动画,必须求出A点坐标
QDC=QDA+ADC*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, LDC, XC, YC,
VCX, VCY, ACX, ACY)
CALL RPR(0, XF,YF,0,0,0,0, XC,YC,VCX,VCY, ACX, ACY, 0, QFG, W4, E4)
CALL LINK(XF,YF,0,0,0,0,QFG,W4,E4, LFG, XG,YG,VGX,VGY,AGX, AGY)
CLEAR ! 清屏幕
PLOT XE,YE;XD,YD;XA,Y A;XB,YB !画折线EDAB
PLOT XD,YD;XC,YC;XA,Y A ! 画折线DCA
PLOT XF,YF;XG,YG ! 画折线FG
BOX CIRCLE -R,R,-R,R ! 在Xmin=-R, Xmax=R,Ymin=-R,Ymax=R的矩形内画椭圆,即:以(0,0)为圆心,以R为半径画圆(转动副)
PLOT TEXT, AT XE+1,YE:"E" ! 在E处写字符E
BOX CIRCLE XD-R,XD+R,YD-R,YD+R !在Xmin=XD-R, Xmax=XD+R,Ymin=YD-R,Ymax=YD+R的矩形内画椭圆,即:以(XD,YD)为圆心,以R为半径画圆.
PLOT TEXT, AT XD+1,YD:"D" ! 在D处写字符D
BOX CIRCLE XA-R,XA+R,Y A-R,YA+R
PLOT TEXT, AT XA+1,YA:"A"
BOX CIRCLE XB-R,XB+R,YB-R,YB+R
PLOT TEXT, AT XB+1,YB:"B"
BOX CIRCLE XF-R,XF+R,YF-R,YF+R
PLOT TEXT, AT XF+1,YF:"F"
BOX CIRCLE XC-R,XC+R,YC-R,YC+R
PLOT TEXT, AT XC+1,YC:"C"
PLOT TEXT, AT XG+1,YG:"G"
PAUSE 0.2 !画完每幅图后,暂停0.2秒.
NEXT I
END
SUB LINK(XA, YA, V AX, V AY, AAX, AAY, QAB, W, E, L, XB, YB, VBX, VBY,
ABX, ABY)
XB=XA+L*COS(QAB)
YB=YA+L*SIN(QAB)
VBX=V AX-L*SIN(QAB)*W
VBY=V AY+L*COS(QAB)*W
ABX=AAX-L*COS(QAB)*W^2-L*SIN(QAB)*E
ABY=AAY-L*SIN(QAB)*W^2+L*COS(QAB)*E
END SUB
SUB RRR(XA, YA, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY, ACX, ACY, LAB,
LCB, QAB, W AB, EAB, QCB, WCB, ECB)
LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
COSQCBA=(LAB^2+LAC^2-LCB^2)/(2*LAB*LAC)
SINQCBA=SQR(1-COSQCBA^2)
QCBA=ANGLE(COSQCBA,SINQCBA)
QAB=QAC-QCBA
XB=XA+LAB*COS(QAB)
YB=YA+LAB*SIN(QAB)
COSQCB=(XB-XC)/LCB
SINQCB=(YB-YC)/LCB
QCB=ANGLE(COSQCB,SINQCB)
W AB=((V AX-VCX)*COSQCB+(V AY-VCY)*SINQCB)/LAB/SIN(QAB-QCB) WCB=((V AX-VCX)*COS(QAB)+(V AY-VCY)*SIN(QAB))/LCB/SIN(QAB-QCB) G=AAX-ACX-LAB*COS(QAB)*WAB^2+LCB*COSQCB*WCB^2
F=AAY-ACY-LAB*SIN(QAB)*WAB^2+LCB*SINQCB*WCB^2
EAB=(G*COSQCB+F*SINQCB)/LAB/SIN(QAB-QCB)
ECB=(G*COS(QAB)+F*SIN(QAB))/LCB/SIN(QAB-QCB)
END SUB
SUB RPR(M, XA, Y A, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY, ACX, ACY, LAB, QBD, W, E)
LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
LBC=SQR(LAC^2-LAB^2)
QACB=ATN(LAB/LBC)
QBD=QAC+M*QACB
DELTA=-(YC-Y A)*SIN(QBD)-(XC-XA)*COS(QBD)
DELTAW=(VCX-V AX)*SIN(QBD)-(VCY-V AY)*COS(QBD) DELTA V=-(YC-Y A)*(VCY-V AY)-(XC-XA)*(VCX-V AX)
W=DELTAW/DELTA
VLBC=DELTA V/DELTA
T1=(ACX-AAX)+(VCY-V AY)*W+SIN(QBD)*W*VLBC
T2=(ACY-AAY)-(VCX-V AX)*W-COS(QBD)*W*VLBC
DELTAE=T1*SIN(QBD)-T2*COS(QBD)
E=DELTAE/DELTA
END SUB
附件Ⅳ:
在TB中绘制SV A三曲线
! 图4
!在TB窗口中绘制位移、速度、加速度三曲线
! DRAW THREE CURVES: QFG-QED, W4-QED, E4-QED
! 若仅仅要屏幕上显示输出的数据,见附件Ⅱ-“图4连杆机构计算程序”
!若要将此三曲线显示在ACAD中,见附件Ⅴ-“在ACAD中绘制SV A三曲线”
OPTION NOLET
SET WINDOW 0, 360, -100, 100
!注:在TB下,窗口大小应该设置成“0, 360, -100, 100”。
如果在这样的TB窗口下那三条曲线都能清晰地显示出来,那么在ACAD中显示的那三条曲线的长宽比例就合适了。
!注:应该先在TB下,调试出这三条曲线,然后再将此程序稍作改变,改变成可输出SCR 文件的程序。
不要直接就生成SCR程序,那样不容易查出问题之所在。
W1=10
XE=0
YE=0
XB=41
YB=0
XF=0
YF= -34
LED=14
LDA=39
LBA=28
ADC=35
LDC=15
LFG=55
! DRAW CARTESIAN CO-ORDINA TE SYSTEM 画X-Y坐标轴
PLOT 0, 0; 360, 0
PLOT 0, 100; 0, -100
! DRAW QFG-QED CURVE 先画位移曲线。
不能三条曲线同时画。
FOR I=0 TO 360 STEP 0.5
CALL LINK(XE, YE, 0, 0, 0, 0, I*PI/180, W1, 0, LED, XD, YD, VDX, VDY, ADX, ADY) CALL RRR(XD, YD, VDX, VDY, ADX, ADY, XB, YB, 0, 0, 0, 0, LDA, LBA, QDA, W3, E3, QBA, W2, E2)
QDC=QDA+35*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, LDC, XC, YC, VCX, VCY, ACX, ACY)
CALL RPR(0, XF, YF, 0, 0, 0, 0, XC, YC, VCX, VCY, ACX, ACY, 0, QFG, W4, E4)
CALL LINK(XF, YF, 0, 0, 0, 0, QFG, W4, E4, LFG, XG, YG, VGX, VGY, AGX, AGY) PLOT I,QFG*180/PI;!每一点坐标后面要有分号,表示连续画折线。
!需在TB窗口调试合适的比例系数,使得各曲线都能清晰的显示出来。
!每一点坐标后面要有分号,表示连续画折线。
!由于位移、速度、加速度的单位不相同,有时需要将位移曲线放大或缩小或再上下平移,以使得三曲线都能够清晰地显示出来。
NEXT I
PLOT!最后提笔,表示该曲线已经画完。
!先调试位移曲线。
使其起伏较大地显示在屏幕中。
若位移曲线看不到,可能位移数值均为零,或者位移数值超出窗口(-100,100)的范围。
可用print方法检查位移的数值。
调试好画位移曲线这一段后,再将这一段copy并修改后得画速度曲线的下一段。
! DRAW W4-QED CURVE 接着画速度曲线
FOR I=0 TO 360 STEP 0.5
CALL LINK(XE, YE, 0, 0, 0, 0, I*PI/180, W1, 0, LED, XD, YD, VDX, VDY, ADX, ADY) CALL RRR(XD, YD, VDX, VDY, ADX, ADY, XB, YB, 0, 0, 0, 0, LDA, LBA, QDA, W3, E3, QBA, W2, E2)
QDC=QDA+35*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, LDC, XC, YC, VCX, VCY,
ACX, ACY)
CALL RPR(0, XF, YF, 0, 0, 0, 0, XC, YC, VCX, VCY, ACX, ACY, 0, QFG, W4, E4)
CALL LINK(XF, YF, 0, 0, 0, 0, QFG, W4, E4, LFG, XG, YG, VGX, VGY, AGX, AGY)
PLOT I,W4*17;!需在TB窗口调试合适的比例系数(17),使得各曲线都能清晰的显示出来。
!每一点坐标后面要有分号,表示连续画折线。
NEXT I
PLOT !最后提笔,表示该曲线已经画完。
调试好画速度曲线这一段后,再将这一段copy并修改后得画加速度曲线的下一段。
! DRAW E4-QED CURVE 接着画加速度曲线
FOR I=0 TO 360 STEP .5
CALL LINK(XE, YE, 0, 0, 0, 0, I*PI/180, W1, 0, LED, XD, YD, VDX, VDY, ADX, ADY) CALL RRR(XD, YD, VDX, VDY, ADX, ADY, XB, YB, 0, 0, 0, 0, LDA, LBA, QDA, W3, E3, QBA, W2, E2)
QDC=QDA+35*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, LDC, XC, YC, VCX, VCY, ACX, ACY)
CALL RPR(0, XF, YF, 0, 0, 0, 0, XC, YC, VCX, VCY, ACX, ACY, 0, QFG, W4, E4)
CALL LINK(XF, YF, 0, 0, 0, 0, QFG, W4, E4, LFG, XG, YG, VGX, VGY, AGX, AGY)
PLOT I,E4*1.4;!需在TB窗口调试合适的比例系数(1.4),使得各曲线都能清晰的显示出来。
!每一点坐标后面要有分号,表示连续画折线。
NEXT I
PLOT !最后提笔,表示该曲线已经画完。
PLOT TEXT, AT 100,83:"QFG" !注:在合适的位置标注合适的字母
PLOT TEXT, AT 120,43:"W4"
PLOT TEXT, AT 120,-28:"E4"
END
!运行后,应该检查一下:当S为极值时,V应该=0。
当V为极值时,a应该=0。
调试并检查完毕后,存盘。
SUB LINK(XA, YA, V AX, V AY, AAX, AAY, QAB, W, E, L, XB, YB, VBX, VBY, ABX, ABY) XB=XA+L*COS(QAB)
YB=YA+L*SIN(QAB)
VBX=V AX-L*SIN(QAB)*W
VBY=V AY+L*COS(QAB)*W
ABX=AAX-L*COS(QAB)*W^2-L*SIN(QAB)*E
ABY=AAY-L*SIN(QAB)*W^2+L*COS(QAB)*E
END SUB
SUB RRR(XA, YA, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY, ACX, ACY, LAB, LCB, QAB, WAB, EAB, QCB, WCB, ECB)
LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
COSQCBA=(LAB^2+LAC^2-LCB^2)/(2*LAB*LAC)
SINQCBA=SQR(1-COSQCBA^2)
QCBA=ANGLE(COSQCBA,SINQCBA)
QAB=QAC-QCBA
XB=XA+LAB*COS(QAB)
YB=YA+LAB*SIN(QAB)
COSQCB=(XB-XC)/LCB
SINQCB=(YB-YC)/LCB
QCB=ANGLE(COSQCB,SINQCB)
W AB=((V AX-VCX)*COSQCB+(V AY-VCY)*SINQCB)/LAB/SIN(QAB-QCB)
WCB=((V AX-VCX)*COS(QAB)+(V AY-VCY)*SIN(QAB))/LCB/SIN(QAB-QCB)
G=AAX-ACX-LAB*COS(QAB)*WAB^2+LCB*COSQCB*WCB^2
F=AAY-ACY-LAB*SIN(QAB)*WAB^2+LCB*SINQCB*WCB^2
EAB=(G*COSQCB+F*SINQCB)/LAB/SIN(QAB-QCB)
ECB=(G*COS(QAB)+F*SIN(QAB))/LCB/SIN(QAB-QCB)
END SUB
SUB RPR(M, XA, Y A, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY,ACX,ACY, LAB,QBD,W,E) LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
LBC=SQR(LAC^2-LAB^2)
QACB=ATN(LAB/LBC)
QBD=QAC+M*QACB
DELTA=-(YC-Y A)*SIN(QBD)-(XC-XA)*COS(QBD)
DELTAW=(VCX-V AX)*SIN(QBD)-(VCY-V AY)*COS(QBD)
DELTA V=-(YC-Y A)*(VCY-V AY)-(XC-XA)*(VCX-V AX)
W=DELTAW/DELTA
VLBC=DELTA V/DELTA
T1=(ACX-AAX)+(VCY-V AY)*W+SIN(QBD)*W*VLBC
T2=(ACY-AAY)-(VCX-V AX)*W-COS(QBD)*W*VLBC
DELTAE=T1*SIN(QBD)-T2*COS(QBD)
E=DELTAE/DELTA
END SUB
附件Ⅴ:
在ACAD中绘制SV A三曲线
请先阅读Ⅳ“在TB中绘制SV A三曲线”。
先在TB窗口清晰地调试出S、V、a三曲线,要求TB窗口为“0,360,-100,100”。
然后删除所有与动画有关的语句, 即:删除SET WINDOW 和PLOT.
在程序的开头,添加以下两行:
OPEN #1: NAME“文件名.SCR”, CREATE NEWOLD
ERASE #1
设曲线各点的坐标是(XB,YB),则画曲线的语句是:
PRINT #1:“PLINE”!PLINE是ACAD画多义线的命令。
FOR I=0 TO 360 STEP 2
……
XB=…
YB=…
! PLOT XB,YB;
PRINT #1:STR$(XB);“,”;STR$(YB)
!在修改程序时,应保持各曲线的缩放系数不变。
NEXT I
! PLOT
PRINT #1
运行【F9】该程序后,将自动产生一个“*.SCR”文件,并将绘图指令及数据存在该SCR 文件中。
打开AutoCAD,用SCR文件画曲线前,应先关闭“对象捕捉”的开关。
否则第2、3条曲线会变形。
然后在Command:下,键入SCRIPT并回车,(注意:不是用“文件-打开”命令!)在对话框中找到那个SCR文件,点“打开”即可。
然后ZOOM●E●
------------------------------------------------------------------------------------
!本程序是为了产生SCR文件,进而能在ACAD中显示图4从动件FG角位移、角速度、角加速度的三曲线。
! 与本文相对应的、仅在TB窗口显示这三条曲线的程序见附件Ⅳ-“在TB中绘制SV A三曲线”一文。
! 注: 先在TB状态下,画出这三条曲线。
! 在TB状态下, 窗口应如此设置:SET WINDOW 0,360,-110,110(与ACAD屏幕的比例一致)
! 调整QFG的大小和上下位置以及W4和E4大小,
!使得这三条曲线能在TB窗口下清晰地完整地显示出来。
从而确定这三条曲线的放大系数!然后再将程序稍作修改,转变为可输出SCR文件的程序。
! CREATE SCR FILE TO DRAW QFG-QED, W4-QED, E4-QED CURVES
! FOR图4
OPEN #1:NAME "SV A3-10.SCR", CREATE NEWOLD
ERASE #1
OPTION NOLET
W1=10
XE=0
YE=0
XB=41
YB=0
XF=0
YF=-34
LED=14
LDA=39
LBA=28
ADC=35
LDC=15
LFG=55
! 先画QFG-QED位移曲线。
无法将三条曲线在同一个循环中同时画
PRINT #1:"PLINE" !PLINE是ACAD画多义线的命令。
FOR I=0 TO 360 STEP 0.5
CALL LINK(XE, YE, 0, 0, 0, 0, I*PI/180, W1, 0, LED, XD, YD, VDX, VDY, ADX, ADY)
CALL RRR(XD, YD, VDX, VDY, ADX, ADY, XB, YB, 0, 0, 0, 0, LDA, LBA, QDA, W3, E3, QBA, W2, E2)
QDC=QDA+35*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, LDC, XC, YC, VCX, VCY, ACX, ACY)
CALL RPR(0, XF, YF, 0, 0, 0, 0, XC, YC, VCX, VCY, ACX, ACY, 0, QFG, W4, E4) CALL LINK(XF, YF, 0, 0, 0, 0, QFG, W4, E4, LFG, XG, YG, VGX, VGY, AGX, AGY) ! PLOT I,QFG*180/PI; 将“PLOT”命令改为“PRINT #1:”
PRINT #1:STR$(I);",";STR$(QFG*180/PI)
NEXT I
! PLOT 将“PLOT”命令改为“PRINT #1:”
PRINT #1
! 接着画W4-QED速度曲线。
PRINT #1:"PLINE"
FOR I=0 TO 360 STEP 0.5
CALL LINK(XE, YE, 0, 0, 0, 0, I*PI/180, W1, 0, LED, XD, YD, VDX, VDY, ADX, ADY)
CALL RRR(XD, YD, VDX, VDY, ADX, ADY, XB, YB, 0, 0, 0, 0, LDA, LBA, QDA, W3, E3, QBA, W2, E2)
QDC=QDA+35*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, LDC, XC, YC, VCX, VCY, ACX, ACY)
CALL RPR(0, XF, YF, 0, 0, 0, 0, XC, YC, VCX, VCY, ACX, ACY, 0, QFG, W4, E4)
CALL LINK(XF, YF, 0, 0, 0, 0, QFG, W4, E4, LFG, XG, YG, VGX, VGY, AGX, AGY)
! PLOT I,W4*17; 将“PLOT”命令改为“PRINT #1:”
PRINT #1:STR$(I);",";STR$(W4*17)
NEXT I
! PLOT 将“PLOT”命令改为“PRINT #1:”
PRINT #1
! 接着画E4-QED加速度曲线。
PRINT #1:"PLINE"
FOR I=0 TO 360 STEP 0.5
CALL LINK(XE, YE, 0, 0, 0, 0, I*PI/180, W1, 0, LED, XD, YD, VDX, VDY, ADX,
ADY)
CALL RRR(XD, YD, VDX, VDY, ADX, ADY, XB, YB, 0, 0, 0, 0, LDA, LBA, QDA, W3,
E3, QBA, W2, E2)
QDC=QDA+35*PI/180
CALL LINK(XD, YD, VDX, VDY, ADX, ADY, QDC, W3, E3, LDC, XC, YC, VCX,
VCY, ACX, ACY)
CALL RPR(0, XF, YF, 0, 0, 0, 0, XC, YC, VCX, VCY, ACX, ACY, 0, QFG, W4, E4)
CALL LINK(XF, YF, 0, 0, 0, 0, QFG, W4, E4, LFG, XG, YG, VGX, VGY, AGX, AGY)
! PLOT I,E4*1.4; 将“PLOT”命令改为“PRINT #1:”
PRINT #1:STR$(I);",";STR$(E4*1.4)
NEXT I
! PLOT 将“PLOT”命令改为“PRINT #1:”
PRINT #1
END
!运行【F9】该程序后,将自动产生一个.SCR文件,并将绘图指令及数据存在该SCR文件中。
打开AutoCAD,用SCR文件画曲线前,应先关闭“自动捕捉”的开关。
否则第2、3条
曲线会变形。
然后在Command:下,键入SCRIPT并回车,在对话框中找到那个SCR文件,点“打开”即可。
然后ZOOM●A●
SUB LINK(XA, YA, V AX, V AY, AAX, AAY, QAB, W, E, L, XB, YB, VBX, VBY, ABX, ABY) XB=XA+L*COS(QAB)
YB=YA+L*SIN(QAB)
VBX=V AX-L*SIN(QAB)*W
VBY=V AY+L*COS(QAB)*W
ABX=AAX-L*COS(QAB)*W^2-L*SIN(QAB)*E
ABY=AAY-L*SIN(QAB)*W^2+L*COS(QAB)*E
END SUB
SUB RRR(XA, YA, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY, ACX, ACY, LAB, LCB, QAB, WAB, EAB, QCB, WCB, ECB)
LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
COSQCBA=(LAB^2+LAC^2-LCB^2)/(2*LAB*LAC)
SINQCBA=SQR(1-COSQCBA^2)
QCBA=ANGLE(COSQCBA,SINQCBA)
QAB=QAC-QCBA
XB=XA+LAB*COS(QAB)
YB=YA+LAB*SIN(QAB)
COSQCB=(XB-XC)/LCB
SINQCB=(YB-YC)/LCB
QCB=ANGLE(COSQCB,SINQCB)
W AB=((V AX-VCX)*COSQCB+(V AY-VCY)*SINQCB)/LAB/SIN(QAB-QCB)
WCB=((V AX-VCX)*COS(QAB)+(V AY-VCY)*SIN(QAB))/LCB/SIN(QAB-QCB)
G=AAX-ACX-LAB*COS(QAB)*WAB^2+LCB*COSQCB*WCB^2
F=AAY-ACY-LAB*SIN(QAB)*WAB^2+LCB*SINQCB*WCB^2
EAB=(G*COSQCB+F*SINQCB)/LAB/SIN(QAB-QCB)
ECB=(G*COS(QAB)+F*SIN(QAB))/LCB/SIN(QAB-QCB)
END SUB
SUB RPR(M, XA, Y A, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY,ACX,ACY, LAB,QBD,W,E) LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-Y A)/LAC
QAC=ANGLE(COSQAC,SINQAC)
LBC=SQR(LAC^2-LAB^2)
QACB=ATN(LAB/LBC)
QBD=QAC+M*QACB
DELTA=-(YC-Y A)*SIN(QBD)-(XC-XA)*COS(QBD)
DELTAW=(VCX-V AX)*SIN(QBD)-(VCY-V AY)*COS(QBD)
DELTA V=-(YC-Y A)*(VCY-V AY)-(XC-XA)*(VCX-V AX)
W=DELTAW/DELTA
VLBC=DELTA V/DELTA
T1=(ACX-AAX)+(VCY-V AY)*W+SIN(QBD)*W*VLBC
T2=(ACY-AAY)-(VCX-V AX)*W-COS(QBD)*W*VLBC
DELTAE=T1*SIN(QBD)-T2*COS(QBD)
E=DELTAE/DELTA
END SUB
附件Ⅵ:
1如何将TRUE BASIC 的输出数值打印出来
在程序的开头,添加以下两行:
OPEN #1:NAME“文件名.TRU”, CREATE NEWOLD
ERASE #1
FOR I=0 TO 360 STEP 2
……
LET XB=…
LET YB=…
!若要输出打印凸轮理论廓线坐标值(X B、Y B)与凸轮转角I之间的关系,则:
! PRINT I,XB,YB
PRINT #1: STR$(I);“,”;STR$(XB);“,”;STR$(YB)
NEXT I
运行【F9】该程序后,将自动产生一个TRU文件,并将输出数据存在该TRU文件中。
(也可直接在HELLO状态下,OLD 该文件名,就可打开那个数据输出文件,先观察一下数据是否正确。
)
然后在WORD下,打开那个TRU文件,另存为WORD格式文件即可。
2如何将TRUE BASIC 的输出数值存为文件
在程序的开头,添加以下两行:
OPEN #1:NAME“文件名.TXT”, CREATE NEWOLD
ERASE #1
FOR I=0 TO 360 STEP 2
……
W4=…
E4=…
……
PRINT #1:I,Q4*180/PI,W4,E4
NEXT I
运行该程序后,将自动产生一个“文件名.TXT”文件,并将输出数据存在该文件中。
Word软件可以打开这个文件,Excel软件可以调用文件的数据。
3如何在Excel调用数值并画出曲线
启动Excel软件
选择“数据D”⇨“获取外部数据D”⇨“导入文本文件(T)”,浏览文件夹,找到要调用的数据文件,导入,完成。
选择要画曲线的数据列,点击“图表向导”图标,选择折线图,点“下一步”。
点击“系列”,修改各系列的名称。
进入“分类(X) 轴标志(T)”输入框,在Excel表上选相应的数据列(原动件转角)。
点下一步,完成。
若发现哪条曲线没什么起伏,可将对应列的数据适当放大。
获得的曲线图可进一步编辑修改(用鼠标右键点击某曲线或坐标轴,改变相应格式)。
得到的曲线图可以复制、粘贴到Word文件中。
True Basic 常用命令简介
1. 将两个Hello程序以及SUBS拷到自建的目录下。
双击Hello(应用程序),屏幕将分为上下两窗口,上窗口称为编辑窗口,下窗口成为操作窗口。
2. 按F1键,光标移到上窗口。
按F2键,光标移到下窗口。
3. Save 文件名――-将当前程序以该文件名存盘。
4. New---清除当前内存。
5. Bye ---退出True Basic
6. Files ---列出当前目录中的所有TB文件。
7. Old 文件名-――读入一个True Basic程序文件。
8. Replace ---将修改后的程序覆盖原程序文件。
9. Run 或按F9 ---运行程序。
10.Include 文件2 --将文件2插入到当前文件刚才光标所在行的下一行。
然后Replace
11. CTRL+Break---中断运行
12. !或Rem――――注释语句(不执行)
13. F4键--将行进行标志。
若要将某一段进行标志,则将光标移到这段的第一行,按F4键,然后将光标移动这段的最后一行,再按F4键,则整段都被标志了。
14. Back Space---被标志行与上一行合并
15. F5键---将被标志行(段)复制到光标所在的下一行
16. F6键---将被标志行(段)移到到光标所在的下一行
17. OPTION NOLET ------ 可以省略所有赋值语句前的LET。
常用绘图语句:
1. Set window Xmin,Xmax,Ymin,Ymax---设置窗口。
注:(Xmax-Xmin):(Ymax-Ymin)=4:3
2. PLOT XA,YA;XB,YB ---------画AB连线。
3. PLOT XA,YA;XB,YB;XC,YC -----画ABC折线。
4. Pause 秒数----暂停几秒。
5. Box Circle Xmin,Xmax,Ymin,Ymax -------画椭圆。
6. Clear--------清屏。
7. Plot text,at x, y:”字符” --------在(x,y)处写上字符。
True Basic 常见出错提示信息
•Can’t use ANGLE(0,0)------- 根据ANGLE(0,0)无法求角度。
• Division by zero ------分母为零
•Doesn’t belong here---多一个后括号(可能实际上是少一个前括号),step错写为stpe,•Ending doesn’t match be ginning---------“For Q1=”与“next Q1”不配套,“next Q1”错写为“next Q”或遗漏
• File already exists. Do you want to overwrite it?---- 当“save文件名”时,若该文件原来已存在,则问要不要覆盖。
•File is read or write protected-------文件被写保护,无法存盘。
•Illegal expression---------可能少了一个后括号。
• Illegal statement---------语句关键词输错,如:PRINT错写为PRINTT
• Illegal statement,need LET for assignment, or try the NOLET command ---赋值语句前应加LET,否则应使用OPTION NOLET命令。
• Missing end statement------- 少了END,或少了END SUB,或少了END PICTURE
• SQR of negative number---------负数开平方,杆组无法装配。
• Trouble using disk or printer-------- 磁盘坏了。
•Type is wrong for SUB RRR(n,n,n,n,….n) in main program------- 主程序CALL RRR 参数表中的参数数目不等于子程序SUB RRR参数表中的参数数目。
• Window minimum=maximum-------绘图窗口的宽度或高度为零
• Wrong number of argument------主程序中后一个CALL LINK参数表中的参数数目不等于前一个CALL LINK参数表中的参数数目,则光标停在后一个CALL LINK。
实际原因可能是前一个CALL LINK参数表中的参数数目不对。
• Wrong Type--------类型错误,该出现单变量的地方出现了数组,或相反。
• Undefined routine XXX in main program-------子程序XXX未定义。
END后面应该有子程序XXX。
附件Ⅷ:
常用二级阿苏尔杆组
SUB LINK(XA, YA, V AX, V AY, AAX, AAY, QAB, W, E, L, XB, YB, VBX, VBY, ABX, ABY) SUB RRR(XA, YA, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY, ACX, ACY, LAB, LCB, QAB, WAB, EAB, QCB, WCB, ECB)
SUB RRP(M, YB, L, YA, V AY, AAY, QAB, W AB, EAB)
SUB RRP1(M, XB, L, XA, V AX, AAX, QAB, WAB, EAB)
SUB RPR(M, XA, Y A, V AX, V AY, AAX, AAY, XC, YC, VCX, VCY, ACX, ACY, LAB, QBD, WBD, EBD)
常用二级阿苏尔杆组子程序
! 6 SUBS: LINK, RRR, RPR, RRP, RRP1, INTERSECT
SUB LINK(XA,YA,VAX,VAY,AAX,AAY,QAB,W,E,L,XB,YB,VBX,VBY,ABX,ABY)
XB=XA+L*COS(QAB)
YB=YA+L*SIN(QAB)
VBX=VAX-L*SIN(QAB)*W
VBY=VAY+L*COS(QAB)*W
ABX=AAX-L*COS(QAB)*W^2-L*SIN(QAB)*E
ABY=AAY-L*SIN(QAB)*W^2+L*COS(QAB)*E
END SUB
SUB
RRR(XA,YA,VAX,VAY,AAX,AAY,XC,YC,VCX,VCY,ACX,ACY,LAB,LCB,QAB,WAB,EAB,QCB,WCB,ECB) LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-YA)/LAC
QAC=ANGLE(COSQAC,SINQAC)
COSQCBA=(LAB^2+LAC^2-LCB^2)/(2*LAB*LAC)
SINQCBA=SQR(1-COSQCBA^2)
QCBA=ANGLE(COSQCBA,SINQCBA)
QAB=QAC-QCBA
XB=XA+LAB*COS(QAB)
YB=YA+LAB*SIN(QAB)
COSQCB=(XB-XC)/LCB
SINQCB=(YB-YC)/LCB
QCB=ANGLE(COSQCB,SINQCB)
WAB=((VAX-VCX)*COSQCB+(VAY-VCY)*SINQCB)/LAB/SIN(QAB-QCB)
WCB=((VAX-VCX)*COS(QAB)+(VAY-VCY)*SIN(QAB))/LCB/SIN(QAB-QCB)
G=AAX-ACX-LAB*COS(QAB)*WAB^2+LCB*COSQCB*WCB^2
F=AAY-ACY-LAB*SIN(QAB)*WAB^2+LCB*SINQCB*WCB^2
EAB=(G*COSQCB+F*SINQCB)/LAB/SIN(QAB-QCB)
ECB=(G*COS(QAB)+F*SIN(QAB))/LCB/SIN(QAB-QCB)
END SUB
SUB RPR(M,XA,YA,VAX,VAY,AAX,AAY,XC,YC,VCX,VCY,ACX,ACY,LAB,QBD,W,E) LAC=SQR((XC-XA)^2+(YC-YA)^2)
COSQAC=(XC-XA)/LAC
SINQAC=(YC-YA)/LAC
QAC=ANGLE(COSQAC,SINQAC)
LBC=SQR(LAC^2-LAB^2)
QACB=ATN(LAB/LBC)
QBD=QAC+M*QACB
DELTA=-(YC-YA)*SIN(QBD)-(XC-XA)*COS(QBD)
DELTAW=(VCX-VAX)*SIN(QBD)-(VCY-VAY)*COS(QBD)
DELTAV=-(YC-YA)*(VCY-VAY)-(XC-XA)*(VCX-VAX)
W=DELTAW/DELTA
VLBC=DELTAV/DELTA
T1=(ACX-AAX)+(VCY-VAY)*W+SIN(QBD)*W*VLBC
T2=(ACY-AAY)-(VCX-VAX)*W-COS(QBD)*W*VLBC
DELTAE=T1*SIN(QBD)-T2*COS(QBD)
E=DELTAE/DELTA
END SUB
SUB RRP(M,YB,LAB,YA,VAY,AAY,QAB,W,E)
! THE GUIDEWAY IS HORIZONTAL
! B IS THE REVOLUTE BETWEEN COUPLER AND SLIDING BLOCK
! IF XB>XA THEN M=+1,OTHERWISE, M=-1
SINQAB=(YB-YA)/LAB
COSQAB=M*SQR(1-SINQAB^2)
QAB=ANGLE(COSQAB,SINQAB)
W=-VAY/(LAB*COSQAB)
E=(-AAY*COSQAB-VAY*SINQAB*W)/(LAB*COSQAB^2)
END SUB
SUB RRP1(M,XB,LAB,XA,VAX,AAX,QAB,W,E)
! THE GUIDEWAY IS VERTICAL
! B IS THE REVOLUTE BETWEEN COUPLER AND SLIDING BLOCK ! IF YB>YA THEN M=+1,OTHERWISE, M=-1
COSQAB=(XB-XA)/LAB
SINQAB=M*SQR(1-COSQAB^2)
QAB=ANGLE(COSQAB,SINQAB)
W=VAX/(LAB*SINQAB)
E=(AAX*SINQAB-VAX*COSQAB*W)/(LAB*SINQAB^2)
END SUB
SUB INTERSECT(X1, Y1, Q1, X2, Y2, Q2, X, Y)
X=(X1*TAN(Q1)-X2*TAN(Q2)-Y1+Y2)/(TAN(Q1)-TAN(Q2))
Y=(X-X1)*TAN(Q1)+Y1
END SUB
连杆机构运动分析实验报告(可另附纸)。