当前位置:文档之家› 平面连杆机构大作业

平面连杆机构大作业

大作业(一)平面连杆机构的运动分析(题号:5-C)班级:机制114学号:***************同组其他人员:许龙飞张海洋完成日期:2012.10.31一.题目及原始数据;二、牛头刨床机构的运动分析方程三.计算程序框图;四.计算源程序;五.计算结果;六.运动线图及运动分析七.参考书;一、题目及原始数据;图b 所示的为一牛头刨床(Ⅲ级机构)。

假设已知各构件的尺寸如表2所示,原动件1以等角速度ω1=1rad/s 沿着逆时针方向回转,试求各从动件的角位移、角速度和角加速度以及刨头C 点的位移、速度和加速度的变化情况。

Gb )表2 牛头刨床机构的尺寸参数(单位:mm )题 号l AB l CD l DE h h 1 h 2 A B C 5-c200180900460120l CD =950l CD =1020l CD =980要求:每三人一组,每人一个题目,每组中至少打印出一份源程序,每人计算出原动件从0゜~360゜时(N=36) 各运动变量的大小,并绘出各组对应的运动线图以及E 点的轨迹曲线。

二、牛头刨床机构的运动分析方程1)位置分析建立封闭矢量多边形 由图可知=3θ,故未知量有3θ、4θ、3S 、5S 。

利用两个封闭图形ABDEA 和EDCGE ,建立两个封闭矢量方程,由此可得:AB CDE2134 56hh 1h 2xy FF'把(式Ⅰ)写成投影方程得:⎪⎪⎭⎪⎪⎬⎫⎪⎪⎩⎪⎪⎨⎧=+=-++=++=+h l l s l l l h s l l h s l 33445334411133441123344sin sin 0cos cos sin sin sin cos cos cos θθθθθθθθθθ(式Ⅱ)由以上各式用型转化法可求得5343 s s θθ, 23θθ=解: 211111*cos *sin b b x h l y h l θθ=+⎧⎨=+⎩4444*cos *sin d d x l y l θθ=⎧⎨=⎩3s =3sin b dx x s α-=33333)*sin *()/*cos *(/c d d b d c d d b d s x x l x l x x s y y l y l y y s αα=+=+-⎧⎪⎨=+=+-⎪⎩ 3tan c dc dy y x x θ-=-5c s x =()ae AE =444()tan *cos d c y h y l θθ+-=高斯消去法求解 2.速度分析对(式Ⅱ)求一次导数得:44433333111444333331114443335444333*sin *s '*cos *sin **sin **cos *'*sin *cos **cos **sin **sin *'0*cos **cos *0l s l l s s l l l s l l θωθθωθωθωθθωθωθωθωθωθω-+-=-⎫⎪++=⎪⎬---=⎪⎪+=⎭ (式Ⅲ)矩阵式:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-----0cos cos 01sin sin 00cos cos sin 0sin sin cos 443344334433344333θθθθθθθθθθl l l l l s l s ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡'543'3s w w s =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-00cos sin 11111θθl l w (Ⅳ) 采用高斯消去法可求解(式Ⅳ)可解得角速度ω3,ω4;3.加速度分析把式Ⅳ对时间求导数得矩阵式:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-----0cos cos 01sin sin 00cos cos sin 0sin sin cos 443344334433344333θθθθθθθθθθl l l l l s l s ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡''543''3s s αα = ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡----------0sin sin 00cos cos 00sin sin cos cos 0cos cos sin sin 4443334443334443333'3334443333'333θθθθθθθθθθθθw l w l w l w l w l w s s w w l w s s w +⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--00sin cos 1111111θθw l w l w(式Ⅴ)采用高斯消去法可求解(式Ⅴ)可得角加速度43αα,三.程序流程图位置分析速度分析加速度分析四、计算源程序#include<stdio.h>#include<stdlib.h>#include<math.h>#define PI 3.1415926#define N 4#define E 0.0001#define T 1000void Solutionangle(double [12],double ); /*迭代法求角位移*/void Solutionspeed(double [N][N],double [N],double [12],double ); /*角速度求解*/void Solutionacceleration(double [N][N],double [N][N],double [N],double [12]);/*角加速度求解*/void GaussianE(double [N][N],double [N],double [N]);/*高斯消去*/void FoundmatrixA(double [12],double [N][N]); //创建系数矩阵Avoid FoundmatrixB(double [12],double ,double [N]);//创建系数矩阵Bvoid FoundmatrixDA(double [12],double [N][N]);//创建矩阵DAvoid FoundmatrixDB(double [12],double ,double [N]);//创建矩阵DB//定义全局变量double l1=200,l3=980,l4=180,h=900,h1=460,h2=120,as1=1.0;//主函数void main(){int i,j;FILE *fp;double shuju[36][12];double psvalue[12],a[N][N],da[N][N],b[N],db[N],ang1;//建立文件,并制表头if((fp=fopen("shuju","w"))==NULL){printf("Cann't open this file.\n");exit(0);}fprintf(fp,"\n L1 =%lf",l1);fprintf(fp,"\n s3 ang3 ang4 s5 ");fprintf(fp," s3' as3 as4 s5' ");fprintf(fp," s3'' aas3 aas4 s5'' \n");//计算数据并写入文件psvalue[0]=480;psvalue[1]=65*PI/180;psvalue[2]=10*PI/180;psvalue[3]=500;for(i=0;i<36;i++){ang1=i*PI/18;Solutionangle(psvalue,ang1);FoundmatrixB(psvalue,ang1,b);FoundmatrixA(psvalue,a);Solutionspeed(a,b,psvalue,ang1);FoundmatrixDA(psvalue,da);FoundmatrixDB(psvalue,ang1,db);Solutionacceleration(a,da,db,psvalue);for(j=1;j<3;j++)psvalue[j]=psvalue[j]*180/PI;for(j=0;j<12;j++){shuju[i][j]=psvalue[j];}fprintf(fp,"\n");for(j=0;j<12;j++)fprintf(fp,"%12.3f ",shuju[i][j]);for(j=1;j<3;j++)psvalue[j]=psvalue[j]*PI/180;for(j=0;j<4;j++)psvalue[j]+=psvalue[j+4];}fclose(fp);//输出数据for(i=0;i<36;i++){ang1=i*PI/18;printf("\n输出ang1=%d时的求解\n",i*10);printf("angle angspeed angacceleration :\n"); for(j=0;j<4;j++)printf("%lf\t",shuju[i][j]);printf("\n");for(j=4;j<8;j++)printf("%lf\t",shuju[i][j]);printf("\n");for(j=8;j<12;j++)printf("%lf\t",shuju[i][j]);printf("\n");}}/*矢量法求角位移*/void Solutionangle(double value[12],double ang1){double ae,s3,ang3,ang4,s5,t=0;s3=value[0];ang3=value[1];ang4=value[2];s5=value[3];double xb,yb,xd,yd,xc,yc;while(t<T){xb=h2+l1*cos(ang1); yb=h1+l1*sin(ang1);xd=l4*cos(ang4); yd=l4*sin(ang4);s3=sqrt((xd-xb)*(xd-xb)+(yd-yb)*(yd-yb));xc=xd+l3*(xb-xd)/s3;yc=yd+l3*(yb-yd)/s3;ang3=atan2(yc-yd,xc-xd);s5=xc;ae=sqrt(h1*h1+h2*h2);if(fabs(yc-h)<E)return;elseang4=atan((yd-yc+h)/(l4*cos(ang4)));value[0]=s3;value[1]=ang3;value[2]=ang4;value[3]=s5;while(value[1]>2*PI)value[1]-=2*PI;while(value[1]<0)value[1]+=2*PI;while(value[2]>PI)value[2]-=2*PI;while(value[2]<-PI)value[2]+=2*PI;t+=1;if(t>=T){printf("%f 迭代失败.\n",ang1*180/PI);exit(0);}}}/*角速度求解*/void Solutionspeed(double a2[N][N],double b2[N],double value[12],double ang1){double p2[N];GaussianE(a2,b2,p2);value[4]=p2[0];value[5]=p2[1];value[6]=p2[2];value[7]=p2[3];}/*角加速度求解*/void Solutionacceleration(double a3[N][N],double da3[N][N],double db3[N],double value[12]) {int i,j;double bk[N]={0};double p3[N];for(i=0;i<N;i++){for(j=0;j<N;j++){bk[i]+=-da3[i][j]*value[4+j];}bk[i]+=db3[i]*as1;}GaussianE(a3,bk,p3);value[8]=p3[0];value[9]=p3[1];value[10]=p3[2];value[11]=p3[3];}/*高斯消去法解矩阵方程*/void GaussianE(double a4[N][N],double b4[N],double p4[N]) {int i,j,k;double a4g[N][N],b4g[N],t;for(i=0;i<N;i++)for(j=0;j<N;j++)a4g[i][j]=a4[i][j];for(i=0;i<N;i++)b4g[i]=b4[i];//施主对角线上的值尽可能大if(a4g[0][0]<a4g[1][0] && a4g[0][1]>a4g[1][1]){for(j=0;j<N;j++){t=a4g[0][j];a4g[0][j]=a4g[1][j];a4g[1][j]=t;}t=b4g[0];b4g[0]=b4g[1];b4g[1]=t;}if(a4g[2][2]<a4g[3][2] && a4g[2][3]>a4g[3][3]){for(j=0;j<N;j++){t=a4g[2][j];a4g[2][j]=a4g[3][j];a4g[3][j]=t;}t=b4g[2];b4g[2]=b4g[1];b4g[3]=t;}//初等行变换for(j=0;j<N;j++)for(i=0;i<N;i++){if(i!=j){for(k=0;k<N;k++)if(k!=j){a4g[i][k]-=a4g[i][j]/a4g[j][j]*a4g[j][k];}b4g[i]-=b4g[j]*a4g[i][j]/a4g[j][j];a4g[i][j]=0;}}for(i=0;i<N;i++)b4g[i]/=a4g[i][i];p4[0]=b4g[0];p4[1]=b4g[1];p4[2]=b4g[2];p4[3]=b4g[3];}//创建系数矩阵Avoid FoundmatrixA(double value5[12],double a5[N][N]){double s3,ang3,ang4,s5;s3=value5[0];ang3=value5[1];ang4=value5[2];s5=value5[3];a5[0][0]=cos(ang3);a5[0][1]=-s3*sin(ang3);a5[0][2]=-l4*sin(ang4);a5[1][0]=sin(ang3);a5[1][1]=s3*cos(ang3);a5[1][2]=l4*cos(ang4);a5[2][1]=-l3*sin(ang3);a5[2][2]=-l4*sin(ang4);a5[2][3]=-1;a5[3][1]=l3*cos(ang3);a5[3][2]=l4*cos(ang4);a5[0][3]=a5[1][3]=a5[2][0]=a5[3][0]=a5[3][3]=0;}//创建系数矩阵Bvoid FoundmatrixB(double value6[12],double ang1,double b6[N]){b6[0]=-l1*sin(ang1)*as1;b6[1]=l1*cos(ang1)*as1;b6[2]=b6[3]=0;}//创建矩阵DAvoid FoundmatrixDA(double value7[12],double da7[N][N]){double s3,ang3,ang4,s5,s3g,as3,as4,s5g;s3=value7[0];ang3=value7[1];ang4=value7[2];s5=value7[3];s3g=value7[4];as3=value7[5];as4=value7[6];s5g=value7[7];da7[0][0]=-as3*sin(ang3); da7[0][1]=-s3g*sin(ang3)-s3*cos(ang3)*as3; da7[0][2]=-l4*cos(ang4)*as4;da7[1][0]=as3*cos(ang3); da7[1][1]=s3g*cos(ang3)-s3*sin(ang3)*as3; da7[1][2]=-l4*sin(ang4)*as4;da7[2][1]=-l3*cos(ang3)*as3; da7[2][2]=-l4*cos(ang4)*as4;da7[3][1]=-l3*sin(ang3)*as3; da7[3][2]=-l4*sin(ang4)*as4;da7[0][3]=da7[1][3]=da7[2][0]=da7[2][3]=da7[3][0]=da7[3][3]=0;}//创建矩阵DBvoid FoundmatrixDB(double value8[12],double ang1,double db8[N]){db8[0]=-l1*as1*cos(ang1);db8[1]=-l1*as1*sin(ang1);db8[2]=db8[3]=0;}四、计算结果、数据10—B: lAB =200, lCD =980, lDE =180,h=900,h1=460,h2=120程序运行结果:输出ang1=0时的求解输出ang1=20时的求解输出ang1=70时的求解输出ang1=90时的求解输出ang1=110时的求解输出ang1=140时的求解输出ang1=160时的求解输出ang1=170时的求解输出ang1=180时的求解输出ang1=190时的求解输出ang1=200时的求解输出ang1=220时的求解输出ang1=230时的求解输出ang1=250时的求解输出ang1=270时的求解输出ang1=280时的求解输出ang1=290时的求解输出ang1=300时的求解输出ang1=320时的求解angle angspeed angacceleration :输出ang1=350时的求解五.运动线图及分析4θ3,θω3,ω4α3,α4S3,S5a3,a5机构运动分析:(1)、从θ3-θ1,θ4-θ1曲线图可知,3杆为摆动导杆,4杆为摇杆,(2)、从ω3-θ1、ω4-θ1容易看出:在θ1为0 o~200 o之间,3杆角速度变化较为平缓,保证刨头慢速、稳定工作;在220 o~340 o之间为回程阶段,角速度变化较快,以提高效率;4杆有4个角速度为0点,即4杆的速度方向改变了四次。

相关主题