直动凸轮轮廓线设计源程序模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i++;
}
/*---------------------------------------*/
circle(X0,Y0,ro); /*画基圆*/
circle(X0,Y0,e); /*画偏距园*/
{s[i]=h;
ds[i]=0;
dv[i]=0;}
if(p>A2&&p<=A5) /*等加速回程段*/
{s[i]=h-2*h*(p-A2)*(p-A2)/(A3-A2)/(A3-A2);
ds[i]=-4*h*W*(p-A2)/(A3-A2)/(A3-A2);
#define A5 240
#define X0 500 /*凸轮转轴坐标*/
#define Y0 280
#define pi 3.14159
#define t pi/180 /*度-->弧度*/
main() /*主程序*/
ct=dx/sqrt(dx*dx+dy*dy); /* COS 值*/
xp[i]=x[i]+rr*st; /*外实际廓线坐标*/
yp[i]=y[i]-rr*ct;
da[i]=(atan((ds[i]/(W*t)-e)/(so+s[i])))/(t);
x[i]=X0+(so+s[i])*sin(p*t)+e*cos(p*t); /*理论廓线坐标*/
y[i]=Y0+(so+s[i])
*cos(p*t)-e*sin(p*t);
{ float e,ro,rr,p,so,dx,dy,st,ct; /*变量说明*/
float s[200],ds[200],dv[200],da[200],x[200],y[200],xp[200],yp[200];
int a=DETECT,b,i=0,w=0;
circle(x[A3/K],y[A3/K],5); /*滚轴*/
circle(x[A4/K],y[A4/K],5); /*滚轴*/
line(X0+e,Y0,x[0],y[0]+50); /*3条导路方向线*/
#define W 360 /*角速度(度/秒)*/
#define K 5 /*循环步距*/
#define A1 120 /*推程结束角*/
{s[i]=h*(1-cos(pi*p/A1))/2;
ds[i]=h*W*pi*sin(pi*p/A1)/2/A1;
dv[i]=pi*pi*h*W*W*cos(pi*p/A1)/A1/A1/2;
}
if(p>A1&&p<=A2) /*远休止段*/
for(w=0;w<A4/K;w++)
{line(w*K,180-s[w],(w+1)*K,180-s[w+1]);
line(w*K,300-ds[w]*2,(w+1)*K,300-ds[w+1]*2);
line(w*K,360-dv[w]*0.05,(w+1)*K,360-dv[w+1]*0.05);}
rr=0; /*滚子半径*/
so=sqrt(ro*ro-e*e);
/*---------------------------------------------*/
for(p=0;p<=A4;p+=K)
{if(p<=A1) /*余弦加速度推程段*/
line(X0+e*cos(60*t),Y0-e*sin(60*t),x[60/K],y[60/K]);
line(X0+e*cos(300*t),Y0-e*sin(300*t),x[300/K],y[300/K]);
arc(X0,Y0,0,50,100); /*凸轮转向*/
for(w=0;w<=A4/K;w=w+3)
{printf("%4d%10.2f%8.2f%8.2f%10.2f\n",w*K,s[w],ds[w],dv[w],da[w]);} getchFra bibliotek); }
dx=(ds[i]-e)*sin(p*t)+(so+s[i])*cos(p*t); /* x微分 */
dy=(ds[i]-e)*cos(p*t)-(so+s[i])*sin(p*t); /* y微分 */
st=dy/sqrt(dx*dx+dy*dy); /* SIN 值*/
for(w=0;w<A4/K;w++)
{line(x[w],y[w],x[w+1],y[w+1]); /*画理论廓线*/
line(xp[w],yp[w],xp[w+1],yp[w+1]); /*画外实际廓线*/
circle(x[w],y[w],rr);} /*画滚子*/
circle(x[0],y[0],rr); /*滚子*/
circle(x[0],y[0],5); /*滚轴*/
circle(x[A1/K],y[A1/K],5); /*滚轴*/
circle(x[A2/K],y[A2/K],5); /*滚轴*/
getch();
/*---------------------------------------*/
printf(" p s ds dv a \n");
printf("=========================================\n");
#define A2 180 /*远休结束角*/
#define A3 300 /*回程结束角*/
#define A4 360 /*周期结束角*/
line(0,180,360,180);
line(0,300,360,300);
line(0,360,360,360);
line(0,0,0,480);
line(A1,0,A1,480);
line(A3,0,A3,480);
line(360,0,360,480);
dv[i]=4*h*W*W/(A3-A2)/(A3-A2);
}
if(p>A3) /*近休止段*/
{s[i]=0;
ds[i]=0;
dv[i]=0;}
/*---------------------------------------*/
/*---------------------------------------------*/
initgraph(&a,&b,"");
e=0; /*偏心距*/
ro=24; /*基圆半径*/
#include "stdio.h" /*--------------医用卷棉机凸轮程序----------------*/
#include<graphics.h>
#include "math.h"
#define h 12.0 /*最大行程*/
line(X0+100,Y0,X0+100-5,Y0-15); /*转向箭头*/
line(X0+100,Y0,X0+100+3,Y0-15); /*转向箭头*/
getch();
/*---------------------------------------*/
dv[i]=-4*h*W*W/(A3-A2)/(A3-A2);
}
if(p>A5&&p<=A3) /*等减速回程段*/
{s[i]=2*h*(300-p)*(300-p)/(A3-A2)/(A3-A2);
ds[i]=-4*h*W*(300-p)/(A3-A2)/(A3-A2);
相关文档
最新文档