平面连杆机构的运动分析

  • 格式:doc
  • 大小:574.50 KB
  • 文档页数:24

大作业(一)平面连杆机构的运动分析(题号:5—E)西北农林科技大学班级:机制103学号:2010012447姓名:同组其他人员:(2010012444)完成日期:2011年10月24日一、题目:计算平面连杆机构的运动学分析1.图a 所示的为一平面六杆机构。

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

(a )表1 平面六杆机构的尺寸参数(单位:mm )mm l 0.652=',mm x G 5.153=,mm y G 7.41=题目要求:每两人一组,每组中至少打印出一份源程序,每人计算出原动件从0°~360°时(N=36)各运动变量的大小,并绘出各组对应的运动线图以及E 点的轨迹曲线。

二、平面连杆的运动分析方程(1)位置分析 L1+L2=L4+L3L1+L2+L2'=AG+L5+L6 方程式(1)将机构的封闭矢量方程式(1)写在两坐标上的投影形式:L1*cosq1+L2*cosq2=L4+L3*cosq3L1*sinq1+L2*sinq2=L3*sinq3L1*cosq1+L2*cosq2+L2'*cos(q2-a)=xg+L5*cosq5+L6*cosq6L1*sinq1+L2*sinq2+L2'*sin(q2-a)=yg+L5*sinq5+L6*sinq6化简整理后方程左边仅含未知量项的形式,即得:L2*cosq2-L3*cosq3=L4-L1cosq1 (1)L2*sinq2-L3*sinq3=-L1sinq1 ....................................(2)(式2)L2*cosq2+L2'*cos(q2-a)-L5*cosq5-L6*cosq6=xg-L1*cosq1 (3)L2*sinq2+L2'*sin(q2-a)-L5*sinq5-L6*sinq6=yg-L1*sinq1………4)在求解(式2)中各变量时,用牛顿迭代法会比较直观,但由于牛顿迭代法不便于限制L5、L6的位置,在有两种位置均满足上式时,无法限定它得出题中要求的解。

故在计算时改用复述矢量法直接求解q2、q3、q5、q6. 求q2、q3:L2²=L3²+L4²+L1²-2*L3*L4*cosq3-2*L1*L3*cos(q3-q1)-2*L1*L4*cosq1经整理后并可简化为:A*sinq3+B*cosq3+C=0;式中:A=2*L1*L3*sinq1B=2*L3*(L1*cosq1-L4)B=L2²-L1²-L3²-L4²+2*L1*L4*sinq1解之可得:tan(q3/2)=[A ±sqrt(A ²+B ²-C ²)]/(B-C) 实际运动中0<q3<p ,故‘±’适当选择:求q5、q6:先有 xe=L4+L3*cosq3+L2'*cos(q2-a) (式 ye=L3*sinq3+L2'*sin(q2-a)tan β=(yg-ye)/(xg-xe)cos γ=[(xe-xg)²+(ye- yg)²+L5²-L6]/{2*L5*sqrt[(xe-xg)²+(te-yg)²]}则 q5'=β-γq5=q5'tanq6=(ye+L5*sinq5'-yg)/(xe+L5*cosq5'-xg)(2)角速度分析分别将(式2)(式3)对时间求一次导数,可得-L2*w2*sinq2+L3*w3*sinq3=L1*w1*sinq1L2*w2*cosq2-L3*w3*cosq3=-L1*w1*cosq1-w2(L2*sinq2+L2'sin(q2-a))+L5*w5*sinq5+L6*w6*sinq6=L1*w1*sinq1w2*(L2*cosq2+L2'*cos(q2-a))-L5*w5*cosq5-L6*w6*cosq6=-L1*w1*cosq1…………………………………………………………(式4)vex=-L3*w3*sinq3-L2'*w2*sin(q2-a)vey=L3*w3*cosq3+L2'*w2*cos(q2-a) ………………(式5)解之可得w2,w3.w5,w6,vex,vey.将(式4)(式5)写成矩阵形式:-L2*sinq2 L3*sinq3 0 0 w2 L1*sinq1L2*cosq2 -L3*cosq3 0 0 w3 = w1 -L1*cosq1-L2*sinq2-L2'*sin(q2-a) 0 L5*sinq5 L6*sinq6 w5 L1*sinq1L2*cosq2+L2'*cos(q2-a) 0 L5*cosq5 -L6*cosq6 w6 -L1*cosq1 ……………………………………………………………………(式6)E点速度vex w3 -L3*sinq3 -L2*sin(q2-a)vey w2 L3*cosq3 L2'cos(q2-a) (式7)采用高斯消去法可求解(式6)可解得角速度w2,w3,w5,w6;将求解结果带入(式7)可求得vex,vey.(3)角加速度分析分别将(式2)(式3)对时间取二次导数,可得加速度关系-L2*sinq2 L3*sinq3 0 0 a2L2*cosq2 -L3*cosq3 0 0 a3-L2*sinq2-L2'*sin(q2-a) 0 L5*sinq5 L6*sinq6 a5L2*cosq2+L2'*cos(q2-a) 0 -L5*cosq5 L6*cosq6 a6-w2*L2*cosq2 w3*L3*cosq3 0 0 w2 L1*w1*cosq1 = -w2*L2*sinq2 w3*L3*sinq3 0 0 w3 + w1 L1*w1*sinq1 w2*L2*cosq2+w2*L2'*cos(q2-a) 0 w5*L5*cosq5 w6*L6*cosq6 w5 L1*w1*cosq1 w2*L2*sinq2+w2*L2'*sin(q2-a) 0 w5*L5*sinq5 w6*L6*sinq6 w6 L1*w1*sinq1……………………………………………………………………(式8)E点的加速度aex -L2'*sin(q2-a) -L3*sinq3 a2 L2'*cos(q2-a) L3*cosq3 w2²Aey L2'*cos(q2-a) L3*cosq3 a3 L2'*sin(q2-a) L3*sinq3 w3²采用高斯消去法可求解(式8)可解得角加速度α2,α3,α5,α6;将求解结果代入(式9)可求得aEx,aEy.三、程序流程图四、计算源程序#include<stdio.h>#include<stdlib.h>#include<math.h>#define PI 3.1415926#define N 4void Solutionangle(double [18],double ); /*矢量法求角位移*/void Solutionspeed(double [N][N],double [N],double [18],double ); /*角速度求解*/void Solutionacceleration(double [N][N],double [N][N],double [N],double [18]);/*角加速度求解*/void GaussianE(double [N][N],double [N],double [N]);/*高斯消去*/void FoundmatrixA(double [18],double [N][N]);/*创建系数矩阵A*/void FoundmatrixB(double [18],double ,double [N]);/*创建系数矩阵B*/ void FoundmatrixDA(double [18],double [N][N]);/*创建矩阵DA*/void FoundmatrixDB(double [18],double ,double [N]);/*创建矩阵DB*/ /*定义全局变量*/double l1=26.5,l2=105.6,l3=67.5,l4=85.4,l5=37.4,l6=28.0;double l2g=65.0,xg=153.5,yg=41.7,inang=90*PI/180,as1=1.0;/*主函数*/int main(){int i,j;FILE *fp;double shuju[36][18];double psvalue[18],a[N][N],da[N][N],b[N],db[N],ang1;/*建立文件,并制表头*/if((fp=fopen("数据.txt","w"))==NULL){printf("Cann't open this file.\n");exit(0);}fprintf(fp,"\n The Kinematic Parameters of Point 5\n"); fprintf(fp," ang2 ang3 ang5 ang6");fprintf(fp," as2 as3 as5 as6");fprintf(fp," aas2 aas3 aas5 aas6");fprintf(fp," xe ye vex vey aex aey\n");/*计算数据并写入文件*/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=0;j<4;j++){shuju[i][j]=psvalue[j]*180/PI;}for(j=4;j<18;j++){shuju[i][j]=psvalue[j];}fprintf(fp,"\n");for(j=0;j<18;j++)fprintf(fp,"%12.3f",shuju[i][j]);}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");for(j=12;j<18;j++)printf("%lf\t",shuju[i][j]);printf("\n");}return 0;}/*矢量法求角位移*/void Solutionangle(double value[18],double ang1){double xe,ye,A,B,C,phi,alpha,csn,ang5g,d2,d,ang2,ang3,ang5,ang6; A=2*l1*l3*sin(ang1);B=2*l3*(l1*cos(ang1)-l4);C=l2*l2-l1*l1-l3*l3-l4*l4+2*l1*l4*cos(ang1);ang3=2*atan((A+sqrt(A*A+B*B-C*C))/(B-C));if(ang3<0) /*限定ang3大小*/{ang3=2*atan((A-sqrt(A*A+B*B-C*C))/(B-C));}ang2=asin((l3*sin(ang3)-l1*sin(ang1))/l2);xe=l4+l3*cos(ang3)+l2g*cos(ang2-inang);ye=l3*sin(ang3)+l2g*sin(ang2-inang);phi=atan2((yg-ye),(xg-xe));d2=(yg-ye)*(yg-ye)+(xg-xe)*(xg-xe);d=sqrt(d2);csn=(l5*l5+d2-l6*l6)/(2.0*l5*d);alpha=atan2(sqrt(1.0-csn*csn),csn);ang5g=phi-alpha;ang5=ang5g-PI;ang6=atan2(ye+l5*sin(ang5g)-yg,xe+l5*cos(ang5g)-xg);value[0]=ang2;value[1]=ang3;value[2]=ang5;value[3]=ang6; value[12]=xe;value[13]=ye;/*限定角度大小*/int i;for(i=0;i<4;i++){while(value[i]>2*PI)value[i]-=2*PI;while(value[i]<0)value[i]+=2*PI;}}/*角速度求解*/void Solutionspeed(double a2[N][N],double b2[N],doublevalue[18],double ang1){double ang2,ang3;ang2=value[0];ang3=value[1];double p2[N];GaussianE(a2,b2,p2);value[4]=p2[0];value[5]=p2[1];value[6]=p2[2];value[7]=p2[3];value[14]=-l3*value[5]*sin(ang3)-l2g*value[4]*sin(ang2-inang);value[15]=l3*value[5]*cos(ang3)+l2g*value[4]*cos(ang2-inang);}/*角加速度求解*/void Solutionacceleration(double a3[N][N],double da3[N][N],doubledb3[N],double value[18]){int i,j;double ang2,ang3;ang2=value[0];ang3=value[1];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];value[16]=-l3*value[9]*sin(ang3)-l3*value[5]*value[5]*cos(ang3)-l2g*value[8]*sin(ang2-inang)-l2g*value[4]*value[4]*cos(ang2-inang);value[17]=l3*value[9]*cos(ang3)-l3*value[5]*value[5]*sin(ang3)+l2g*value[8 ]*cos(ang2-inang)-l2g*value[4]*value[4]*sin(ang2-inang);}/*高斯消去法解矩阵方程*/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];}/*创建系数矩阵A*/void FoundmatrixA(double value5[18],double a5[N][N]){double ang2,ang3,ang5,ang6;ang2=value5[0];ang3=value5[1];ang5=value5[2];ang6=value5[3]; a5[0][0]=-l2*sin(ang2);a5[0][1]=l3*sin(ang3);a5[1][0]=l2*cos(ang2);a5[1][1]=-l3*cos(ang3);a5[2][0]=-l2*sin(ang2)-l2g*sin(ang2-inang);a5[2][2]=l5*sin(ang5);a5[2][3]=l6*sin(ang6);a5[3][0]=l2*cos(ang2)+l2g*cos(ang2-inang);a5[3][2]=-l5*cos(ang5);a5[3][3]=-l6*cos(ang6);a5[0][2]=a5[0][3]=a5[1][2]=a5[1][3]=a5[2][1]=a5[3][1]=0;}/*创建系数矩阵B*/void FoundmatrixB(double value6[18],double ang1,double b6[N]) {b6[0]=b6[2]=l1*sin(ang1)*as1;b6[1]=b6[3]=-l1*cos(ang1)*as1;}/*创建矩阵DA*/void FoundmatrixDA(double value7[18],double da7[N][N]){double ang2,ang3,ang5,ang6,as2,as3,as5,as6;ang2=value7[0];ang3=value7[1];ang5=value7[2];ang6=value7[3]; as2=value7[4];as3=value7[5];as5=value7[6];as6=value7[7];da7[0][0]=-l2*as2*cos(ang2);da7[0][1]=l3*as3*cos(ang3);da7[1][0]=-l2*as2*sin(ang2);da7[1][1]=l3*as3*sin(ang3);da7[2][0]=as2*(-l2*cos(ang2)-l2g*cos(ang2-inang));da7[2][2]=as5*l5*cos(ang5);da7[2][3]=as6*l6*cos(ang6);da7[3][0]=as2*(-l2*sin(ang2)-l2g*sin(ang2-inang));da7[3][2]=as5*l5*sin(ang5);da7[3][3]=as6*l6*sin(ang6);da7[0][2]=da7[0][3]=da7[1][2]=da7[1][3]=da7[2][1]=da7[3][1]=0; }/*创建矩阵DB*/void FoundmatrixDB(double value8[18],double ang1,double db8[N]) {db8[0]=db8[2]=l1*as1*cos(ang1);db8[1]=db8[3]=l1*as1*sin(ang1);}五、计算结果数据六:运动线图及分析在角速度和角加速度曲线图中,杆,2,3其角速度与角加速度较平稳,适合负荷工作;杆5,6在转角为290°~330°时其角速度与角速度变化较大,应该改进方能使用与实际工作中。