凸轮设计_C语言编程.doc_第1页
凸轮设计_C语言编程.doc_第2页
凸轮设计_C语言编程.doc_第3页
凸轮设计_C语言编程.doc_第4页
全文预览已结束

下载本文档

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

文档简介

一、编程:(注:程序中各个符号的含义)PI:常数 s0:理论廓线的基圆半径 s:各个角度的推杆位移 i:转角e:偏心距 rr:滚子半径 r0:基圆半径 h:行程 ya0:许用压力角 yah:弧度制压力角 yaj:角度制压力角 p:曲率半径st:推程段推杆位移 sy:远休段推杆位移 sh:回程段推杆位移 sj:近休段推杆位移dx_di:理论坐标x对转角i的一次导 dy_di:理论坐标y对转角i的一次导 d2x:理论坐标x对转角i的二次导 d2y:理论坐标y对转角i的二次导ds_di:推杆位移s对角度i的一次导 d2s:推杆位移s对转角i的二次导 xli:理论坐标x yli:理论坐标y x:实际坐标想 y:实际坐标ysink:凸轮廓线法向倾斜角正弦 cosk:凸轮廓线法向倾斜角余弦子函数1:求x、y的实际坐标子函数2:求转角i处的曲率半径子函数3:求转角i处的压力角 #include stdio.h#include math.h #define PI 3.1415926 void zuobiao (float s0, float s,float ds_di,int i, int e,int rr); ;子函数1float qulv (float s0, float s,float ds_di,float d2s,int i, int e,int rr,int r0); ;子函数2float yalijiao (float s,float ds_di,int e,int r0); ;子函数3main() int e,rr,r0,h,i,ya0=30;float s0,ds_di,d2s,st,sy,sh,sj,yah,yaj,p; scanf(%d%d%d%d,&e,&rr,&r0,&h); printf(e=%d,rr=%d,r0=%d,h=%dn,e,rr,r0,h); s0=sqrt(r0*r0-e*e); for(i=0;i=360;i+) if(i=120) ;推程 for(i=0;i=120;i+) st=50*(3*i*PI/180-sin(3*i*PI/180)/(2*PI); ds_di=50*(3-3*cos(3*i*PI/180)/(2*PI); d2s=50*9*sin(3*i*PI/180)/(2*PI); yaj=yalijiao(st,ds_di,e,r0); ;调用子函数3,求压力角 if(yaj=rr) ;ifelse校核推程段曲率半径 zuobiao(s0,st,ds_di,i,e,rr); ;调用子函数1,求xy坐标 else printf(chongxinshuru r0,rrn); else printf(chongxinshuru e,r0n); printf(%f,p); ;输出曲率半径 printf(%fn,yaj); ;输出压力角 else if(i=150) ;远休 for(i=121;i=rr) ;ifelse校核曲率半径 zuobiao(s0,sy,ds_di,i,e,rr); ;调用子函数1,求xy坐标 else printf(chongxinshuru r0,rrn); printf(%f,p); ;输出曲率半径 printf(%fn,yaj); ;输出压力角 else if(i=210) ;回程 for(i=151;irr) ;ifelse校核曲率半径 zuobiao(s0,sh,ds_di,i,e,rr); ;调用子函数1,求xy坐标 else printf(chongxinshuru r0,rrn); printf(%f,p); ;输出曲率半径 printf(%fn,yaj); ;输出压力角 else ;近休 for(i=211;irr) ;ifelse校核曲率半径 zuobiao(s0,sj,ds_di,i,e,rr); ;调用子函数1,求xy坐标 else printf(chongxinshuru r0,rrn); printf(%f,p); ;输出曲率半径 printf(%fn,yaj); ;输出压力角 void zuobiao (float s0, float s,float ds_di,int i, int e,int rr) float dx_di, dy_di,xli,yli,x,y,sink,cosk; xli=(s0+s)*sin(i*PI/180)+e*cos(i*PI/180); ;计算理论x坐标 yli=(s0+s)*cos(i*PI/180)-e*sin(i*PI/180); ;计算理论y坐标 dx_di=(ds_di-e)*sin(i*PI/180)+(s0+s)*cos(i*PI/180); dy_di=(ds_di-e)*cos(i*PI/180)-(s0+s)*sin(i*PI/180); sink=dx_di/sqrt(dx_di*dx_di+dy_di*dy_di); cosk=-dy_di/sqrt(dx_di*dx_di+dy_di*dy_di); x=xli-rr*cosk; ;计算实际x坐标 y=yli-rr*sink; ;计算实际y坐标 printf(%d:%f,%f,i,x,y); ;输出角度、xy实际坐标 return; float qulv (float s0, float s,float ds_di,float d2s,int i, int e,int rr,int r0) float dx_di,d2x,dy_di,d2y,p,q; dx_di=(ds_di-e)*sin(i*PI/180)+(s0+s)*cos(i*PI/180); dy_di=(ds_di-e)*cos(i*PI/180)-(s0+s)*sin(i*PI/180); d2x=(d2s-s0-s)*sin(i*PI/180)+(2*ds_di-e)*cos(i*PI/180); d2y=(d2s-s0-s)*cos(i*PI/180)-(2*ds_di-e)*sin(i*PI/180); q=dx_di*dx_di+dy_di*dy_di; p=sqrt(q*q*q)/fabs(dx_di*d2y-dy_di*d2x); ;计算曲率半径 return p; float yalijiao (float s,float ds_di,int e,int r0) float yaj,yah; yah=fabs(atan(ds

温馨提示

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

评论

0/150

提交评论