机 构 运 动 分 析 基 本 杆 组 法程序设计_第1页
机 构 运 动 分 析 基 本 杆 组 法程序设计_第2页
机 构 运 动 分 析 基 本 杆 组 法程序设计_第3页
机 构 运 动 分 析 基 本 杆 组 法程序设计_第4页
机 构 运 动 分 析 基 本 杆 组 法程序设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机械原理实验报告 实验名称 班 级 学 号 姓 名 日 期 成 绩 指导教师 (签字)机 构 运 动 分 析 基 本 杆 组 法 程序编写说明 机构运动分析的方法很多,主要有图解法和解析法。 图解法最为基本,简单明了,易于观察各部分间运动的相互关系、大小、方向,缺点是不精确,对于复杂运动关系分析起来较为困难,另外对于多个位置要重复作图,很麻烦;解析法精确可靠,对于一个确定的机构可列写出最终表达式,当原动件角度变化时可直接得出结果,但缺点是解析式的求解很麻烦,易出错,对于每个机构都要单独列写表达式,通用性较差。所以,能否找到一种既为精确又具有通用性的分析方法呢?对于平面机构,采用“基于C+编程的

2、基本杆组分析法”。基于C+编程的解析法采用杆组分析的方法,设计通用的级杆组子程序,可对一般的级机构进行运动分析。指导书中给出了6种分析基本杆组的子程序,对于确定的机构,给出初始条件,然后调用相应的子程序即可得到结果,大大简化了工作量。以下是几种基本杆组分析的图解: 单杆运动分析 RRR杆组运动分析 RRP杆组运动分析RPR杆组运动分析 PRP杆组运动分析 RPP杆组运动分析 编程过程中变量较多易出现错误,因而要求我们在编程过程中务必做到认真细心,完全掌握解析机构运动的方法,准确分析构件的杆组组成,确定坐标点。本次上机不仅仅加深了我们对于机械构件运动的理解,还提供机会让我们第一次使用C+编程的方

3、法解决实际问题,使得大家对于C+有了更为深入的理解。 例3-1 图示平面四杆机构中,已知各构件尺寸:lAB=24mm,lAD=78mm,lCD=48mm,=100 º,并知原动件角速度为10rad/s沿逆时针方向回转。试求转角为60 º时构件2和3的角速度和角加速度。基本杆组:主程序:#include "机构运动分析子程序.h" /* 运动分析子程序 */#include<math.h>#include <iostream.h> /* 输入输出头文件 */#include <fstream>using namespac

4、e std;void main() /* 主程序 */ofstream outfile("1.txt", ios_base:out); if (!outfile) cerr<<"error: can not open "1.txt" for outputn" exit(-1); double d1=0.024, d3=0.048, xa=0,ya=0, xd=0.078, yd=0; double dv=10, da=0, df=0, c1=0; int i,n; cout<<"n" cou

5、t<<"例题3-1n" cout<<"包含RPR和SLL杆组n" cout<<"Programmer 曹旭n" cout<<"n" cout<<"输入数据: n" cout<<"l1="<<d1<<","<<"l3="<<d3<<"n" cout<<" xa=&qu

6、ot;<<xa<<", "<<"ya="<<ya<<", "<<"xd="<<xd<<", "<<"yd="<<yd<<"n" cout<<"n" cout<<"输入等分角df和n:" cin>>df>>n; df *= PI/180; c

7、1 *= PI/180; cout<<"n" cout<<"计算结果: n" outfile<<"计算结果: n" cout<<" -#- n" kp=1; for ( i=1; i<=n; i+ ) if(i=7) cout<<" CT"<<i-6<<"="<<floor(c1*180/PI*10+0.5)/10)<<" n" outfile

8、<<" CT"<<i-6<<"="<<floor(c1*180/PI*10+0.5)/10)<<" n" l=r=d1;af=0;ct=c1;cv=dv;ca=0; x1=xa;y11=ya;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); l1=d3*sin(80*PI/180);m=-1;w=0; x1=xd;y11=yd;xv1=0;yv1=0;xa1=0;ya1=0; x2=x2;y2=y2;xv2=xv2;yv2=yv2;xa2=xa2;ya2=ya2

9、; RPR(); cout<<"构件2的角速度:"<<cv1<<" "<<"构件2的角加速度:"<<ca2<<endl; cout<<"构件3的角速度:"<<cv2<<" "<<"构件3的角加速度:"<<ca2<<endl; cout<<" -#- n" outfile<<"构件2

10、的角速度:"<<cv1<<" "<<"构件2的角加速度:"<<ca2<<endl; outfile<<"构件3的角速度:"<<cv2<<" "<<"构件3的角加速度:"<<ca2<<endl; outfile<<" -#- n" c1 += df; 输出结果:例3-6 图3-12所示为牛头刨床的机构运动简图。设已知各构件的尺

11、寸为:l1=125mm,l3=600mm,l4=150mm,原动件1的方位角1=0-360和等角速度w1=1rad/s。求出该机构中各从动件的方位角、角速度和角加速度以及E点的位移、速度和加速度。基本杆组:主程序:#include "机构运动分析子程序.h" /* 运动分析子程序 */#include <iostream.h> /* 输入输出头文件 */void main() /* 主程序 */ double d1=0.125,d3=0.6,d4=0.15,xa=0,ya=0,xc=0,yc=-0.275,xg=0,yg=0.3; double dv=1,da=

12、0,df=0,c1=0; int i,n; cout<<"n" cout<<"Programmer 曹旭n" cout<<"例题3-6 牛头刨床六杆机构的运动分析n" cout<<" (具有RPR和RRP杆组)n" cout<<"n" cout<<" 输入数据: n" cout<<" l1="<<d1<<","<<&q

13、uot;l3="<<d3<<","<<"l4="<<d4<<","<<"l6="<<fabs(yc)<<"n" cout<<" xa="<<xa<<", "<<"ya="<<ya<<", "<<"xc="<

14、;<xc<<", "<<"yc="<<yc<<"n" cout<<" xg="<<xg<<", "<<"yg="<<yg<<"n" cout<<"n" cout<<" 请输入等分角(°)和等分数df n=" cin>>df>>n; df

15、 *= PI/180; c1 *= PI/180; kp=1; cout<<"n" cout<<" 计算结果: n" cout<<" -#- n" for (i=1;i<=n;i+) cout<<" CT("<<i<<")="<<floor(c1*180/PI*10+0.5)/10)<<"°n" l=r=d1;af=0;ct=c1;cv=dv;ca=da; x1=x

16、a;y11=ya;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); l1=w=m=0; x1=x2;y11=y2;xv1=xv2;yv1=yv2;xa1=xa2;ya1=ya2; x2=xc;y2=yc;xv2=0;yv2=0;xa2=0;ya2=0; RPR(); l=r=d3;af=0;ct=ct2;cv=cv2;ca=ca2; x1=xc;y11=yc;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); if ( ct2 < 0 ) ct2 += 2*PI; ct2 *= 180/PI; cout<<" CT3="<&

17、lt;ct2<<" "<<"CV3="<<cv2<<" "<<"CA3="<<ca2<<"n" l1=d4;m=-1; ct2=0;cv2=ca2=0; x1=x2;y11=y2;xv1=xv2;yv1=yv2;xa1=xa2;ya1=ya2; x2=xg;y2=yg;xv2=0;yv2=0;xa2=0;ya2=0; RRP(); if ( ct1 < 0 ) ct1 += 2*PI; ct1 *= 180

18、/PI; cout<<" CT4="<<ct1<<" "<<"CV4="<<cv1<<" "<<"CA4="<<ca1<<"n" cout<<" Xe="<<l2<<" "<<"Vxe="<<lv2<<" "<&l

19、t;"Axe="<<la2<<"n" cout<<" -#- n" c1 += df; cout<<" 结束" cin>>df;输出结果:3-6图示四杆机构中,lAB=60mm,lCD=90mm,lAD=lBC=120mm,w2=10rad/s.试用瞬心法求:(1) 当=165°时,C点的速度Vc.(2) 当=165°时,构件三的BC线上(或其延长线上)速度最小的E点的位置及其速度的大小。(3) 当Vc=0时,角之值。(有两个解)基本杆

20、组:主程序:#include "机构运动分析子程序.h" /* 运动分析子程序 */#include <iostream.h> /* 输入输出头文件 */void main() /* 主程序 */ double d2=0.06,d3=0.12,d4=0.09,xa=0,ya=0,xd=0.12,yd=0; double dv=10,da=0,c1=0; kp=1; cout<<"n" cout<<"习题3-6n" cout<<"包含SSL和RRR杆组n" cout&l

21、t;<"Programmer 曹旭n" cout<<"n" cout<<" 输入数据: n" cout<<" l2="<<d2<<","<<"l3="<<d3<<","<<"l4="<<d4<<","<<"xa="<<xa<<

22、","<<"ya="<<ya<<"n" cout<<" cv="<<dv<<","<<"ca="<<da<<","<<"c1="<<c1<<","<<"xd="<<xd<<","<<&qu

23、ot;yd="<<yd<<"n" cout<<"n" cout<<" 请输入曲柄转动角(°) CT=" cin>>c1; c1 *= PI/180; cout<<"n" cout<<" 计算结果: n" cout<<" -#- n" cout<<" CT1"<<"="<<floor(c1

24、*180/PI*10+0.5)/10)<<"°n" af=0;l=r=d2;ct=c1;cv=dv;ca=da; x1=xa;y11=ya;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); m=1;l1=d3;l2=d4; x1=x2;y11=y2;xv1=xv2;yv1=yv2;xa1=xa2;ya1=ya2; x2=xd;y2=yd;xv2=0;yv2=0;xa2=0;ya2=0; RRR(); af=0;l=r=d4;ct=ct2;cv=cv2;ca=ca2; x1=xd;y11=yd;xv1=0;yv1=0;xa1=0;ya1=0

25、; SSL(); if ( ct2 < 0 ) ct2 += 2*PI; ct2 *= 180/PI; cout<<" CT4="<<ct2<<" "<<"CV4="<<cv2<<" "<<"CA4="<<ca2<<"n" cout<<" VC="<<floor(sqrt(xv2*xv2+yv2*yv2)*1000+0.

26、5)/1000<<"n" cout<<" aC="<<floor(sqrt(xa2*xa2+ya2*ya2)*1000+0.5)/1000<<"n" cout<<" -#- n" cout<<" 结束" cin>>CT; 输出结果:#include "机构运动分析子程序.h" /* 运动分析子程序 */#include <iostream.h> /* 输入输出头文件 */void

27、main() /* 主程序 */ double d2=0.06,d3=0.12,d4=0.09,xa=0,ya=0,xd=0.12,yd=0; double dv=10,da=0,c1=0; kp=1; cout<<"n" cout<<"习题3-6(具有SSL和RRR杆组)n" cout<<"n" cout<<" 输入数据: n" cout<<" l2="<<d2<<","<<&q

28、uot;l3="<<d3<<","<<"l4="<<d4<<","<<"xa="<<xa<<","<<"ya="<<ya<<"n" cout<<" cv="<<dv<<","<<"ca="<<da&

29、lt;<","<<"c1="<<c1<<","<<"xd="<<xd<<","<<"yd="<<yd<<"n" cout<<"n" cout<<" 请输入曲柄转动角(°) CT=" cin>>c1; c1 *= PI/180; cout<<&quo

30、t;n" cout<<" 计算结果: n" cout<<" -#- n" cout<<" CT1"<<"="<<floor(c1*180/PI*10+0.5)/10)<<"°n" af=0;l=r=d2;ct=c1;cv=dv;ca=da; x1=xa;y11=ya;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); m=1;l1=d3;l2=d4; x1=x2;y11=y2;xv1=xv2;

31、yv1=yv2;xa1=xa2;ya1=ya2; x2=xd;y2=yd;xv2=0;yv2=0;xa2=0;ya2=0; RRR(); af=0;l=r=0.189;ct=ct1;cv=cv1;ca=ca1; SSL(); if ( ct1 < 0 ) ct1 += 2*PI; ct1 *= 180/PI; cout<<" CT3="<<ct1<<" "<<"CV3="<<cv1<<" "<<"CA3="

32、<<ca1<<"n" cout<<" VE="<<floor(sqrt(xv2*xv2+yv2*yv2)*1000+0.5)/1000<<"n" cout<<" aE="<<floor(sqrt(xa2*xa2+ya2*ya2)*1000+0.5)/1000<<"n" cout<<" -#- n" cout<<" 结束" cin>&

33、gt;CT;输出结果:3-14图示曲柄滑块机构中,已知lAB=30mm,lAC=100mm,lBD=50mm,lDE=40mm,曲柄以等角速度w1=10rad/s回转。试确定1=45º 时,D点和E点的速度和加速度,以及构件2的角速度和角加速度。基本杆组:主程序:#include "机构运动分析子程序.h" /* 运动分析子程序 */#include <iostream.h> /* 输入输出头文件 */void main() /* 主程序 */ double d1=0.03,d4=0.1,xa=0,ya=0; double dv=-10,da=0,c1

34、=0; kp=1; cout<<"n" cout<<"习题3-14n" cout<<"包含SSL和RPR杆组n" cout<<"Programmer 曹旭n" cout<<"n" cout<<" 输入数据: n" cout<<" l1="<<d1<<","<<"l4="<<d4<&

35、lt;","<<"cv="<<dv<<"n" cout<<"n" cout<<" 请输入曲柄转动角(°) CT=" cin>>c1; c1 *= PI/180; cout<<"n" cout<<" 计算结果: n" cout<<" -#- n" cout<<" CT1"<<&q

36、uot;="<<floor(c1*180/PI*10+0.5)/10)<<"°n" l=r=d1;af=0;ct=c1;cv=dv;ca=da; x1=xa;y11=ya;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); l1=w=m=0; x1=-d4;y11=0;xv1=0;yv1=0;xa1=0;ya1=0; RPR(); l=0.05;r=sqrt(0.05*0.05+0.04*0.04);af=atan(0.04/0.05); ct=ct2;cv=cv2;ca=ca2; x1=x2;y11=y2;xv1=x

37、v2;yv1=yv2;xa1=xa2;ya1=ya2; SSL(); if ( ct2 < 0 ) ct2 += 2*PI; ct2 *= 180/PI; cout<<" CT2="<<ct2<<" "<<"CV2="<<cv2<<" "<<"CA2="<<ca2<<"n" cout<<" VD="<<floor(sqr

38、t(xv2*xv2+yv2*yv2)*1000+0.5)/1000<<"n" cout<<" aD="<<floor(sqrt(xa2*xa2+ya2*ya2)*1000+0.5)/1000<<"n" cout<<" VE="<<floor(sqrt(xv3*xv3+yv3*yv3)*1000+0.5)/1000<<"n" cout<<" aE="<<floor(sqr

39、t(xa3*xa3+ya3*ya3)*1000+0.5)/1000<<"n" cout<<" -#- n" cout<<" 结束" cin>>c1;输出结果:3-15.图示机构中,lAE=70mm,lAB=40mm,lEF=60mm,lDE=35mm,lCD=75mm,lBC=50mm,原动件以等角速度w1=10rad/s回转。试确定当 1=50º 时,C点的速度和加速度。基本杆组:主程序:#include"机构运动分析子程序.h" /* 运动分析子程序 *

40、/#include<math.h>#include <iostream.h> /* 输入输出头文件 */#include <fstream>using namespace std;void main()ofstream outfile("1.txt", ios_base:out);if (!outfile)cerr<<"error: can not open "1.txt" for outputn"exit(-1);double d1=0.04,d2=0.06,d3=0.035,d4=0

41、.075,d5=0.05,xa=0,ya=0,xe=0.07,ye=0,xx=0,yy=0,xxv=0,xxa=0,yyv=0,yya=0;double dt=50,dv=10,da=0;cout<<"习题3-15"<<endl;cout<<"包含SSL RRR RPR 杆组"<<endl;cout<<"Programmer 曹旭n"cout<<endl;cout<<"l1="<<d1<<" &qu

42、ot;<<"l2="<<d2<<" "<<"l3="<<d3<<" "<<"l4="<<d4<<" "<<"l5="<<d5<<endl;cout<<"xa="<<xa<<" "<<"ya="<<

43、ya<<" "<<"xe="<<xe<<" "<<"ye="<<ye<<" "dt=(PI/180)*dt;kp=1;l1=d2;m=1;x1=xe;xv1=0;xa1=0;y11=0;yv1=0;ya1=0;x2=xa;xv2=0;xa2=0;y2=0;yv2=0;ya2=0;ct2=dt;cv2=dv;ca2=da;RRP();l=r=d3;af=0;ct=ct1+PI;cv=cv1;ca=ca1;x1=xe

44、;xv1=0;xa2=0;y11=0;yv1=0;ya2=0;SSL();xx=x2;xxv=xv2;xxa=xa2;yy=y2;yyv=yv2;yya=ya2;l=r=d1;af=0;ct=dt+PI;cv=dv;ca=da;x1=xa;xv1=0;xa2=0;y11=ya;yv1=0;ya2=0;SSL();l1=d5;l2=d4;m=1;x1=x2;xv1=xv2;xa1=xa2;y11=y2;yv1=yv2;ya1=ya2;x2=xx;xv2=xxv;xa2=xxa;y2=yy;yv2=yyv;ya2=yya;RRR();l=r=d4;af=0;ct=ct2;cv=cv2;ca=ca2

45、;x1=x2;xv1=xv2;xa1=xa2;y11=y2;yv1=yv2;ya1=ya2;SSL();cout<<endl;cout<<endl;cout<<"计算结果:n"outfile<<"计算结果:n"cout<<"vC="<<sqrt(xv2*xv2+yv2*yv2)<<endl;outfile<<"vC="<<sqrt(xv2*xv2+yv2*yv2)<<endl;cout<&l

46、t;"aC="<<sqrt(xa2*xa2+ya2*ya2)<<endl;outfile<<"aC="<<sqrt(xa2*xa2+ya2*ya2)<<endl;输出结果:3-16.图示凸轮机构中,已知凸轮1以等角速度w1=10rad/s转动,凸轮为一偏心圆,其半径R=25mm,lAB=15mm,lAD=50mm,1=90º。试求构件2的角速度和角加速度。基本杆组:主程序:#include "机构运动分析子程序.h" /* 运动分析子程序 */#include &l

47、t;iostream.h> /* 输入输出头文件 */void main() /* 主程序 */ double d1=15,d2=25,d4=50,xa=0,ya=0,xd=-50,yd=0; double w1=10,c1=0; int w2,af2; cout<<"n" cout<<"习题3-16n" cout<<"包含SSL和RRR杆组n" cout<<"Programmer 曹旭n" cout<<"n" cout<&

48、lt;" 输入数据: n" cout<<" l1="<<d1<<","<<"l2="<<d2<<","<<"l4="<<d4<<"n" cout<<" xa="<<xa<<", "<<"ya="<<ya<<",

49、 "<<"xd="<<xd<<", "<<"yd="<<yd<<"n" cout<<" 请输入凸轮转动角(°)" cin>>c1; c1 *= PI/180; kp=1; cout<<" 计算结果: n" cout<<" -#- n" l=r=d1;af=0;ct=c1;cv=w1;ca=0; x1=xa;y11=ya

50、;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); l1=d2; w=0; m=-1; x1=x2;y11=y2;xv1=xv2;yv1=yv2;xa1=xa2;ya1=ya2; x2=xd;y2=yd;xv2=0;yv2=0;xa2=0;ya2=0; RPR(); cout<<"w2="<<cv2<<endl; cout<<"af2="<<ca2<<endl; cout<<" 结束" 输出结果:3-25.图示机构中,已知原动件1以等角速

51、度w1=10rad/s逆时针方向转动,lAB=100mm,lBC=300mm,e=30mm.当1=60º时,求构件2的转角、角速度和角加速度,构件3速度和加速度。基本杆组:主程序:#include "机构运动分析子程序.h" /* 运动分析子程序 */#include <iostream.h> /* 输入输出头文件 */void main() /* 主程序 */ double d1=45,d2=225,d3=180,xa=0,ya=0; double dv=10,da=0,c1=0; kp=1; cout<<"n" co

52、ut<<"习题3-25"<<endl; cout<<"包含SSL和RPR结构"<<endl; cout<<"Programmer 曹旭n" cout<<"n" cout<<" 输入数据: n" cout<<" l1="<<d1<<","<<"l2="<<d2<<",&quo

53、t;<<"l3="<<d3<<","<<"xa="<<xa<<","<<"ya="<<ya<<"n" cout<<" cv="<<dv<<","<<"ca="<<da<<","<<"c1="

54、;<<c1<<"n" cout<<"n" cout<<" 请输入曲柄转动角(°) CT=" cin>>c1; c1 *= PI/180; cout<<"n" cout<<" 计算结果: n" cout<<" -#- n" cout<<" CT1"<<"="<<floor(c1*180/PI*10+

55、0.5)/10)<<"°n" af=0;l=r=d1;ct=c1;cv=dv;ca=da; x1=xa;y11=ya;xv1=0;yv1=0;xa1=0;ya1=0; SSL(); m=1;l1=d2;ct2=0;cv2=0;ca2=0; x1=x2;y11=y2;xv1=xv2;yv1=yv2;xa1=xa2;ya1=ya2; x2=0;y2=0;xv2=0;yv2=0;xa2=0;ya2=0; RRP(); af=30*PI/180;l=d2;r=d3;ct=ct1;cv=cv1;ca=ca1; SSL(); if ( ct < 0 ) ct += 2*PI; ct *= 180/PI; cout<<" CT2="<<ct<<" "<<"CV2=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论