用C语言编程求解的凸轮运动规律.docx
- 文档编号:4804889
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:15
- 大小:37.88KB
用C语言编程求解的凸轮运动规律.docx
《用C语言编程求解的凸轮运动规律.docx》由会员分享,可在线阅读,更多相关《用C语言编程求解的凸轮运动规律.docx(15页珍藏版)》请在冰豆网上搜索。
用C语言编程求解的凸轮运动规律
凸轮大作业
利用计算机辅助设计完成下列偏置式直动滚子推杆盘形构件(推杆的移动副导路位于凸轮盘回转中心右侧)或摆动滚子推杆盘形凸轮机构的设计,设计已知数据如下表所示,机构中凸轮沿着逆时针方向作匀速转动。
凸轮机构的推杆在近休、推程、远休及回程阶段的凸轮转角
近修凸轮转角
推程凸轮转角
远修凸轮转角
回程凸轮转角
0°~45°
45°~180°
180°~270°
270°~360°
偏置直动滚子推杆盘形凸轮机构的已知参数
初选基圆半径
R0/mm
偏距
e/mm
滚子半径
Rt/mm
推杆行程
h/mm
许用压力角
许用最小曲率半径
[Pamin]
[a1]
[a2]
30
+5
10
28
30°
70°
0.3Rt
2、动规律及凸轮廓线方程
推程等加速
等减速
回程
理论轮廓廓线方程
x=(s
+s)sinδ+ecosδ
y=(s
+s)cosδ-esinδ
工作廓线方程
x
=x-
cosδ
y
=y-
sinδ
实际廓线方程:
3、原始程序
#include
#include
usingnamespacestd;
#defineN120
#definepi3.1415926
doubleoro=0.5;
doublert=10,h=28,e=5,a_max1=30*pi/180,a_max2=70*pi/180,p_min=3;
doublechange_angel(intd)
{
returnd*pi/180;
}
doublef_s0(doubler0,doublee)
{
returnpow(pow(r0,2)-pow(e,2),0.5);
}
doublef_s(doublea)
{
doubles;
if(a>=0&&a<=45)
s=0;
elseif(a<=112.5)s=2*h*pow(a-45,2)/pow(135,2);
elseif(a<=180)s=h-2*h*pow(180-a,2)/pow(135,2);
elseif(a<=270)s=h;
elses=h*(4-a/90+sin(change_angel(4*a-3*360))/2/pi);
returns;
}
doublef_x(doubles,doubles0,doublea)
{
doublex;
x=(s0+s)*sin(change_angel(a))+e*cos(change_angel(a));
returnx;
}
doublef_y(doubles,doubles0,doublea)
{
doubley;
y=(s0+s)*cos(change_angel(a))-e*sin(change_angel(a));
returny;
}
doublef_s1(doublea)
{
doubles1;
if(a>=0&&a<=45)s1=0;
elseif(a<=112.5)s1=64*h*(change_angel(a)-(pi/4))/9/pow(pi,2);
elseif(a<=180)s1=64*h*(pi-change_angel(a))/9/pow(pi,2);
elseif(a<=270)s1=0;
elses1=h*(-2/pi+2*cos(change_angel(4*a-3*360))/pi);
returns1;
}
doublef_x1(doubles0,doublea,doubles,doubles1)
{
doublex1;
x1=(s0+s)*cos(change_angel(a))+s1*sin(change_angel(a))-e*sin(change_angel(a));
returnx1;
}
doublef_y1(doubles0,doublea,doubles,doubles1)
{
doubley1;
y1=-(s0+s)*sin(change_angel(a))+s1*cos(change_angel(a))-e*cos(change_angel(a));
returny1;
}
doublef_xx(doublex,doublex1,doubley1)
{
doublexx;
xx=x+rt*y1/pow(pow(x1,2)+pow(y1,2),0.5);
returnxx;
}
doublef_yy(doubley,doublex1,doubley1)
{
doubleyy;
yy=y-rt*x1/pow(pow(x1,2)+pow(y1,2),0.5);
returnyy;
}
doublef_aa(doubler0,doubles,doubles1)
{doubleaa;
aa=atan(fabs(s1/(r0+s)));
returnaa;
}
doublef_s2(doublea)
{
doubles2;
if(a>=0&&a<=45)
s2=0;
elseif(a<=112.5)s2=64*h/9/pow(pi,2);
elseif(a<=180)s2=-64*h/9/pow(pi,2);
elseif(a<=270)s2=0;
elses2=-8*h*sin(change_angel(4*a-3*360))/pi;
returns2;
}
doublef_x2(doubles,doubles1,doublea,doubles2,doubles0)
{
doublex2;
x2=s2*sin(change_angel(a))+2*s1*cos(change_angel(a))-(s0+s)*sin(change_angel(a))-e*cos(change_angel(a));
returnx2;
}
doublef_y2(doubles,doubles1,doublea,doubles2,doubles0)
{
doubley2;
y2=s2*cos(change_angel(a))-2*s1*sin(change_angel(a))-(s0+s)*cos(change_angel(a))-e*cos(change_angel(a));
returny2;
}
doublef_p(doublex1,doubley1,doublex2,doubley2)
{
doublep;
p=pow(pow(x1,2)+pow(y1,2),1.5)/(x1*y2-x2*y1);
returnp;
}
voidmain()
{
doubley1,x2,r0=30,s0,a,s,s1,x1,s2,y2,x[N],y[N],xx[N],yy[N],aa,p,pa,temp_aa1=0,temp_aa2=0,temp_a1=0,temp_a2=0,temp_p=0,temp_ap=0;
s0=f_s0(r0,e);
FILE*fp=fopen("d:
//he.txt","w");
for(inti=0;i { a=3*i; s=f_s(a); x[i]=f_x(s,s0,a); y[i]=f_y(s,s0,a); s1=f_s1(a); x1=f_x1(s0,a,s,s1); y1=f_y1(s0,a,s,s1); xx[i]=f_xx(x[i],x1,y1); yy[i]=f_yy(y[i],x1,y1); aa=f_aa(r0,s,s1); /*cout<<"s0是:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 求解 凸轮 运动 规律