您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 凸轮设计-C语言编程
一、编程:(注:程序中各个符号的含义)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:理论坐标xyli:理论坐标yx:实际坐标想y:实际坐标ysink:凸轮廓线法向倾斜角θ正弦cosk:凸轮廓线法向倾斜角θ余弦子函数1:求x、y的实际坐标子函数2:求转角i处的曲率半径子函数3:求转角i处的压力角#includestdio.h#includemath.h#definePI3.1415926voidzuobiao(floats0,floats,floatds_di,inti,inte,intrr);;子函数1floatqulv(floats0,floats,floatds_di,floatd2s,inti,inte,intrr,intr0);;子函数2floatyalijiao(floats,floatds_di,inte,intr0);;子函数3main(){inte,rr,r0,h,i,ya0=30;floats0,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=%d\n,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(yajya0);if~else校核推程段压力角{p=qulv(s0,st,ds_di,d2s,i,e,rr,r0);;调用子函数2,求曲率半径if(p=rr);if~else校核推程段曲率半径zuobiao(s0,st,ds_di,i,e,rr);;调用子函数1,求xy坐标elseprintf(chongxinshurur0,rr\n);}elseprintf(chongxinshurue,r0\n);printf(%f,,p);;输出曲率半径printf(%f\n,yaj);;输出压力角}}elseif(i=150);远休{for(i=121;i=150;i++){sy=50;ds_di=0;d2s=0;yaj=yalijiao(sy,ds_di,e,r0);;调用子函数3,求压力角p=qulv(s0,sy,ds_di,d2s,i,e,rr,r0);;调用子函数2,求曲率半径if(p=rr);if~else校核曲率半径zuobiao(s0,sy,ds_di,i,e,rr);;调用子函数1,求xy坐标elseprintf(chongxinshurur0,rr\n);printf(%f,,p);;输出曲率半径printf(%f\n,yaj);;输出压力角}}elseif(i=210);回程{for(i=151;i=210;i++){sh=50*(1+cos(3*i*PI/180-5*PI/2))/2;ds_di=-50*3*sin(3*i*PI/180-5*PI/2)/2;d2s=-50*9*cos(3*i*PI/180-5*PI/2)/2;yaj=yalijiao(sh,ds_di,e,r0);;调用子函数3,求压力角p=qulv(s0,sh,ds_di,d2s,i,e,rr,r0);;调用子函数2,求曲率半径if(prr);if~else校核曲率半径zuobiao(s0,sh,ds_di,i,e,rr);;调用子函数1,求xy坐标elseprintf(chongxinshurur0,rr\n);printf(%f,,p);;输出曲率半径printf(%f\n,yaj);;输出压力角}}else;近休{for(i=211;i=360;i++){sj=0;ds_di=0;d2s=0;yaj=yalijiao(sj,ds_di,e,r0);;调用子函数3,求压力角p=qulv(s0,sj,ds_di,d2s,i,e,rr,r0);;调用子函数2,求曲率半径if(prr);if~else校核曲率半径zuobiao(s0,sj,ds_di,i,e,rr);;调用子函数1,求xy坐标elseprintf(chongxinshurur0,rr\n);printf(%f,,p);;输出曲率半径printf(%f\n,yaj);;输出压力角}}}}voidzuobiao(floats0,floats,floatds_di,inti,inte,intrr){floatdx_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;}floatqulv(floats0,floats,floatds_di,floatd2s,inti,inte,intrr,intr0){floatdx_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);;计算曲率半径returnp;}floatyalijiao(floats,floatds_di,inte,intr0){floatyaj,yah;yah=fabs(atan(((ds_di)-e)/(sqrt(r0*r0-e*e)+s)));;计算弧度制压力角yaj=180*yah/PI;;计算角度制压力角returnyaj;}二、运行数据结果:e=20,rr=10,r0=50,h=50(注:每组数据依次是转角i、坐标x、坐标y、曲率半径p、压力角yaj)0:16.000000,36.660606,50.000000,23.5781781:16.642851,36.373470,53.692085,23.5437202:17.291512,36.071014,57.982826,23.4399893:17.945736,35.753906,63.040958,23.2664384:18.605364,35.422848,69.102509,23.0225265:19.270321,35.078583,76.507362,22.7077526:19.940599,34.721867,85.762497,22.3216677:20.616274,34.353485,97.657951,21.8639188:21.297480,33.974243,113.494476,21.3342829:21.984421,33.584961,135.573441,20.73271410:22.677349,33.186470,168.382721,20.05938511:23.376568,32.779625,221.993317,19.31474312:24.082407,32.365295,324.637573,18.49956313:24.795223,31.944355,597.155640,17.61499614:25.515379,31.517702,3359.544434,16.66263815:26.243237,31.086235,962.843811,15.64457016:26.979136,30.650869,430.883820,14.56341217:27.723387,30.212513,282.926178,13.42235818:28.476255,29.772079,214.393875,12.22520919:29.237946,29.330458,175.603561,10.97638620:30.008587,28.888531,151.283157,9.68092121:30.788248,28.447142,135.203354,8.34444122:31.576906,28.007076,124.375069,6.97312023:32.374458,27.569067,117.215973,5.57361524:33.180725,27.133766,112.845970,4.15298125:33.995445,26.701733,110.781174,2.71857226:34.818306,26.273411,110.792961,1.27791427:35.648933,25.849131,112.846825,0.16140428:36.486916,25.429096,117.090218,1.59187229:37.331829,25.013361,123.882126,3.00617730:38.183235,24.601852,133.877304,4.39732531:39.040695,24.194349,148.205734,5.75873532:39.903805,23.790497,168.853699,7.08434433:40.772171,23.389811,199.532867,8.36864934:41.645447,22.991686,247.935776,9.60677335:42.523312,22.595406,332.850006,10.79448136:43.405495,22.200161,515.132324,11.92818637:44.291740,21.805048,1164.081177,13.00493638:45.181831,21.409101,4371.357422,14.02239339:46.075573,21.011288,763.098999,14.97879140:46.972778,20.610533,420.861206,15.87288241:47.873257,20.205721,292
本文标题:凸轮设计-C语言编程
链接地址:https://www.777doc.com/doc-5329539 .html