当前位置:
文档之家› 机械原理大作业(平面六杆机构的运动分析)
机械原理大作业(平面六杆机构的运动分析)
a[3][3]=-L[6]*cos((*p).theta[4]);
b[0]=L[1]*sin((*p).theta[0])*w1;
b[1]=-L[1]*cos((*p).theta[0])*w1;
b[2]=0.;
b[3]=0.;
if(agaus(a,b,4)!=0)
for(m=0;m<4;m++)
(*p).w[m]=b[m];
平面六杆机构的运动分析
(题号1 -B)
成 绩 ___________________________
指导老师
班 级
学 号
姓 名
1、题目说明
如右图所示平面六杆机构,试用计算机完成其运动分析。
已知其尺寸参数如下表所示:
组号
L1
L2
L2’
L3
L4
L5
L6
α
xG
yG
1-B
24.0
105.6
65.0
67.5
87.5
a[1][2]=0.;
a[1][3]=0.;
a[2][0]=-L[0]*sin((*p).theta[1]-Alpha);
a[2][1]=-L[3]*sin((*p).theta[2]);
a[2][2]=-L[5]*sin((*p).theta[3]);
a[2][3]=L[6]*sin((*p).theta[4]);
a[1][0]=L[2]*cos((]*cos((*p).theta[2]);
a[1][2]=0.;
a[1][3]=0.;
a[2][0]=-L[0]*sin((*p).theta[1]-Alpha);
a[2][1]=-L[3]*sin((*p).theta[2]);
double YG=41.7;
double w1=1.0;
double t=0.1;
double h=0.1;
double eps=0.0000001;
main()
{
int n,i,m;
double x[4]={26.23*Angle,49.75*Angle,87.16*Angle,37.25*Angle};
a[0][0]=-L[2]*sin((*p).theta[1]);
a[0][1]=L[3]*sin((*p).theta[2]);
a[0][2]=0.;
a[0][3]=0.;
a[1][0]=L[2]*cos((*p).theta[1]);
a[1][1]=-L[3]*cos((*p).theta[2]);
a[2][2]=-L[5]*sin((*p).theta[3]);
a[2][3]=L[6]*sin((*p).theta[4]);
a[3][0]=L[0]*cos((*p).theta[1]-Alpha);
a[3][1]=L[3]*cos((*p).theta[2]);
a[3][2]=L[5]*cos((*p).theta[3]);
fp=fopen("num-output.txt","w");
for(n=0,p=mot;n<=36;n++,p++)
{ double a[4][4];
double b[4];
(*p).theta1=n*10;
(*p).theta[0]=n*10*Angle;
i=dnetn(4,eps,t,h,x,k);
34.4
25.0
600
153.5
41.7
题目要求:
三人一组计算出原动件从0到360时(计算点数37)所要求的各运动变量的大小,并绘出运动曲线图及轨迹曲线。
2、题目分析
1)建立封闭图形:
L1+L2=L3+L4
L1+L2=L5+L6+AG
2) 机构运动分析
a、角位移分析
由图形封闭性得:
将上式化简可得:
b、角速度分析
上式对时间求一阶导数,可得速度方程:
化为矩阵形式为:
c、角加速度分析:
矩阵对时间求一阶导数,可得加速度矩阵为:
d、E点的运动状态
位移:
速度:
加速度:
3、流程图
4、源程序
#include <math.h>
#include <stdio.h>
#include "agaus.c"
#include "dnetn.c"
b[1]=L[2]*sin((*p).theta[1])*(*p).w[0]*(*p).w[0]-L[3]*sin((*p).theta[2])*(*p).w[1]*(*p).w[1]+w1*w1*L[1]*sin((*p).theta[0]);
b[2]=L[0]*cos((*p).theta[1]-Alpha)*(*p).w[0]*(*p).w[0]+L[3]*cos((*p).theta[2])*(*p).w[1]*(*p).w[1]+L[5]*cos((*p).theta[3])*(*p).w[2]*(*p).w[2]-L[6]*cos((*p).theta[4])*(*p).w[3]*(*p).w[3];
a[3][0]=L[0]*cos((*p).theta[1]-Alpha);
a[3][1]=L[3]*cos((*p).theta[2]);
a[3][2]=L[5]*cos((*p).theta[3]);
a[3][3]=-L[6]*cos((*p).theta[4]);
b[0]=L[2]*cos((*p).theta[1])*(*p).w[0]*(*p).w[0]-L[3]*cos((*p).theta[2])*(*p).w[1]*(*p).w[1]+w1*w1*L[1]*cos((*p).theta[0]);
double alpha[4];
double XYe[2],Ve[3],ae[3];
};
struct motion mot[37];
struct motion *p;
int k=100;
double L[7]={65.0,24.0,105.6,67.5,87.5,34.4,25.0};
double XG=153.5;
for(m=0;m<4;m++)
(*p).theta[m+1]=x[m];
printf("%d %d",n,i);
getchar();
a[0][0]=-L[2]*sin((*p).theta[1]);
a[0][1]=L[3]*sin((*p).theta[2]);
a[0][2]=0.;
a[0][3]=0.;
#include "conio.h"
#define Alpha (PI/3)
#define PI 3.149
#define Angle (PI/180)
FILE *fp;
struct motion
{
int theta1;
double theta[5]; /*theta1,2,3,5,6*/
double w[4];/*w2,3,5,6*/