没有合适的资源?快使用搜索试试~ 我知道了~
用C语言编程求解的凸轮运动规律.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 112 浏览量
2022-07-03
04:04:22
上传
评论
收藏 238KB DOC 举报
温馨提示
试读
12页
用C语言编程求解的凸轮运动规律
资源推荐
资源详情
资源评论
凸轮大作业
利用计算机辅助设计完成下列偏置式直动滚子推杆盘形构件(推杆
的移动副导路位于凸轮盘回转中心右侧)或摆动滚子推杆盘形凸轮
机构的设计,设计已知数据如下表所示,机构中凸轮沿着逆时针方
向作匀速转动。
凸轮机构的推杆在近休、推程、远休及回程阶段的凸轮转角
近修凸轮转角 推程凸轮转角 远修凸轮转角 回程凸轮转角
0°~45°
45°~180° 180°~270° 270°~360°
偏置直动滚子推杆盘形凸轮机构的已知参数
初选基圆半径
R0/mm
偏距
e/mm
滚子半径
Rt/mm
推杆行程
h/mm
许用压力角
许用最小曲率
半径
[P amin]
[a1] [a2]
30 +5 10 28
30° 70°
0.3Rt
二、动规律及凸轮廓线方程
推程 等加速
等减速
回程
理论轮廓廓线方程
x=(s+s)sinδ+ecosδ
y= (s+s)cosδ-esinδ
工作廓线方程
x=x-cosδ
y=y-sinδ
实际廓线方程:
三、原始程序
#include <iostream>
#include <cmath>
using namespace std;
#define N 120
#define pi 3.1415926
double oro=0.5;
double rt=10,h=28,e=5,a_max1=30*pi/180,a_max2=70*pi/180,p_min=3;
double change_angel(int d)
{
return d*pi/180;
}
double f_s0(double r0,double e)
{
return pow(pow(r0,2)-pow(e,2),0.5);
}
double f_s(double a)
{
double s;
if(a>=0&&a<=45)
s=0;
else if(a<=112.5) s=2*h*pow(a-45,2)/pow(135,2);
else if(a<=180)s=h-2*h*pow(180-a,2)/pow(135,2);
else if(a<=270)s=h;
else s=h*(4-a/90+sin(change_angel(4*a-3*360))/2/pi);
return s;
}
double f_x(double s,double s0,double a)
{
double x;
x=(s0+s)*sin(change_angel(a))+e*cos(change_angel(a));
return x;
}
double f_y(double s,double s0,double a)
{
double y;
y=(s0+s)*cos(change_angel(a))-e*sin(change_angel(a));
return y;
}
double f_s1(double a)
{
double s1;
if(a>=0&&a<=45) s1=0;
else if(a<=112.5) s1=64*h*(change_angel(a)-(pi/4))/9/pow(pi,2);
else if(a<=180) s1=64*h*(pi-change_angel(a))/9/pow(pi,2);
else if(a<=270) s1=0;
else s1=h*(-2/pi+2*cos(change_angel(4*a-3*360))/pi);
return s1;
}
double f_x1(double s0,double a,double s,double s1)
{
double x1;
x1=(s0+s)*cos(change_angel(a))+s1*sin(change_angel(a))-
e*sin(change_angel(a));
return x1;
}
double f_y1(double s0,double a,double s,double s1)
{
double y1;
y1=-(s0+s)*sin(change_angel(a))+s1*cos(change_angel(a))-
e*cos(change_angel(a));
return y1;
}
double f_xx(double x,double x1,double y1)
{
double xx;
xx=x+rt*y1/pow(pow(x1,2)+pow(y1,2),0.5);
return xx;
}
double f_yy(double y,double x1,double y1)
{
double yy;
yy=y-rt*x1/pow(pow(x1,2)+pow(y1,2),0.5);
return yy;
剩余11页未读,继续阅读
资源评论
oligaga
- 粉丝: 51
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功