V带程序说明书.docx
《V带程序说明书.docx》由会员分享,可在线阅读,更多相关《V带程序说明书.docx(20页珍藏版)》请在冰豆网上搜索。
![V带程序说明书.docx](https://file1.bdocx.com/fileroot1/2023-2/3/c32002c8-671d-4aca-88b1-60086fb496af/c32002c8-671d-4aca-88b1-60086fb496af1.gif)
V带程序说明书
普通V带传动程序设计说明
班级:
0808107
******
学号:
**********
一、程序功能简介
本程序旨在实现普通V带传动设计计算的软件化。
要求不是很高的时候,采用全自动的设计不失为一种省时省力的选择;当要求比较严格的时候,可以采用半自动的设计,按照一步步的提示对默认值进行相应的改动,但一些由前面参数按固定公式计算出来的值是不可以改动的(相信您也不希望这些用来验证设计合理性的公式能够随意变化)。
任何程序的功能都是有限的,本程序对于普通V带以外的东西就无能为力了。
而且,鉴于设计者的有限的能力,带轮的结构类型及结构尺寸都没有包含在内,如果这些影响了您的使用,希望能够得到您的原谅。
二、程序使用方法
由于设计流程严格按照课本进行,因此使用过程也很简单。
下面就作一个简单介绍。
采用的示例数据参见课本例题。
首先,双击图标进入程序,欢迎界面如下,
点击运行:
进入界面:
按照相关提示操作
输入中心距后:
在计算完后,还可以选择是否计算其它带轮
当输入错误是,会得到提示。
三、变量标示符
P:
传动功率功率
n1:
小带轮转速
i:
传动比
Pd:
设计功率
Vmax:
最大带速
V:
带速
Ld:
基准长度
Kl:
长度系数
a:
实际中心距
Z:
带的根数
F0:
初拉力
Q:
压轴力
B:
轮缘宽度
四、计算流程及相应代码
#include
#include
#include
#definePAI3.141592654
floatselectKi(floati);
floatselectKa();
intchangestotype(chars);
intselectVMAX();
floatselectk1(intTYPE);
floatselectk2(intTYPE);
floatselectk3(intTYPE);
floatselectkb(intTYPE);
showdd(intTYPE);
charselecttype(floatPd,floatn1);
floatselectLd(floatLd0);
floatselectKL(floatLd,intTYPE);
floatselectKALF(floatALF1);
floatselectm(intTYPE);
floatselecte(intTYPE);
floatselectf(intTYPE);
main()
{
floatP,n1,i,Ki,KA,Pd,K1,K2,K3,Kb,V,dd2,dd20,a1,a2,a0,Ld0,Ld,KL,KALF,ALF1,a,P0,DIFP0,FQ,F0,m,e,f;
chars1,s,ans1,ans2,Z;
intVMAX,TYPE,flag1,dd1,flag2,flag3,B;
flag1=1,flag2=0,flag3=0;
printf("请输入传递功率P(单位KW):
");
scanf("%f",&P);
printf("小带轮转速n1(单位r/min):
");
scanf("%f",&n1);
printf("传动比i:
");
scanf("%f",&i);
Ki=selectKi(i);
KA=selectKa();
Pd=KA*P;//计算设计功率Pd
printf("Pd=%f",Pd);
s1=selecttype(Pd,n1);
printf("经过查阅选型图后推荐带型为:
");//调用选型图
printf("推荐带型TYPE=%c\n",s1);
while(flag1)
{
printf("请输入带型:
");
scanf("%s",&s);
TYPE=changestotype(s);//将字符转化为数字(1-6)
printf("TYPE=%d\n",TYPE);
VMAX=selectVMAX(TYPE);//查阅最大速度
K1=selectk1(TYPE);
K2=selectk2(TYPE);
K3=selectk3(TYPE);
Kb=selectkb(TYPE);
while((!
flag2)||flag3)
{
showdd(TYPE);
printf("请选择输入小带轮基准直径dd1:
");
scanf("%d",&dd1);
V=PAI*dd1*n1/60/1000;
printf("dd1=%d\nn1=%f\nV=%f\n",dd1,n1,V);
if(V>VMAX)
{
flag2=0;
printf("所选直径过大,请重新输入该型号下的直径:
\n");
}
else
{flag2=1;
dd20=dd1*i;
printf("dd2=%f\n",dd20);
printf("依据以上每种类型的V带带轮的基准直径选取大带轮直径:
");
scanf("%f",&dd2);
a1=0.7*(dd1+dd2);
a2=2*(dd1+dd2);
printf("根据a1<=a0<=a2初步确定中心距,其中a1=0.7*(dd1+dd2)=%f,a2=2*(dd1+dd2)=%f",a1,a2);
printf("请选择初估(末尾为0或5):
");
scanf("%f",&a0);
printf("a0=%f\n",a0);
Ld0=2*a0+PAI/2*(dd1+dd2)+pow((dd2-dd1),2)/(4*a0);
printf("Ld0=%f\n",Ld0);
Ld=selectLd(Ld0);//选择标准的V带长度
printf("基准长度Ld=%f\n",Ld);
KL=selectKL(Ld,TYPE);
printf("KL=%f\n",KL);
a=a0+(Ld-Ld0)/2;
printf("实际中心距a=%f\n",a);
ALF1=180-(dd2-dd1)/a*57.3;
printf("小轮包角ALF1=%f度\n",ALF1);
KALF=selectKALF(ALF1);
printf("包角修正系数KALF=%f\n",KALF);
P0=(K1*pow(V,(-0.09))-K2/dd1-K3*pow(V,2)/10000)*V;
DIFP0=(1e-3)*Kb*n1*(1-1/Ki);
printf("单根带功率P0=%fKW\n",P0);
printf("功率增量DIFP0=%fKW\n",DIFP0);
Z=(int)(Pd/((P0+DIFP0)*KL*KALF)+1);
printf("带的根数Z=%d\n",Z);
if(Z>=10)
{
flag1=1;
printf("型号不合适,请重新输入!
!
\n");
}
else
{flag1=0;
printf("带的根数合适!
\n");
m=selectm(TYPE);
printf("单位长度质量m=%f",m);
F0=500*Pd/(Z*V)*(2.5-KALF)/KALF+m*V*V;
FQ=2*Z*F0*sin(ALF1*PAI/360);
printf("F0=%fN",F0);
printf("FQ=%fN\n",FQ);
e=selecte(TYPE);
printf("e=%f",e);
f=selectf(TYPE);
printf("f=%f",f);
B=(int)(Z-1)*e+2*f;
printf("B=%d\n",B);
printf("是否计算下一种带轮直径Y(是),N(否)?
:
");
scanf("%1s",&ans1);
if(ans1=='Y')
{
flag3=1;
printf("用户再次输入直径,该型号带直径如下显示:
\n");
}
else
{
flag3=0;
printf("不再输入其他直径\n");
}
}
}
}
printf("是否计算下一型号带Y(是),N(否)?
:
\n");
scanf("%1s",&ans2);
if(ans2=='Y')
{
flag1=1;
printf("用户将选择其他带型(Z--E)\n");
flag3=1;
}
else
{
flag1=0;
printf("输入结束!
\n");
}
}
}
floatselectKi(floati)//选择Ki
{
floatkix;
if(i>=1.00&&i<=1.01)
kix=1.0000;
elseif(i>=1.02&&i<=1.04)
kix=1.0136;
elseif(i>=1.05&&i<=1.08)
kix=1.0276;
elseif(i>=1.09&&i<=1.12)
kix=1.0419;
elseif(i>=1.13&&i<=1.18)
kix=1.0567;
elseif(i>=1.19&&i<=1.24)
kix=1.0719;
elseif(i>=1.25&&i<=1.34)
kix=1.0875;
elseif(i>=1.35&&i<=1.51)
kix=1.1036;
elseif(i>=1.52&&i<=1.99)
kix=1.1202;
else
kix=1.1373;
returnkix;
}
floatselectKa()//选择ka
{
floatkax;
intGZJ,h,YDJ;
doublea[4][6]={{1.0,1.1,1.2,1.1,1.2,1.3},
{1.1,1.2,1.3,1.2,1.3,1.4},
{1.2,1.3,1.4,1.4,1.5,1.6},
{1.3,1.4,1.5,1.5,1.6,1.8}};
printf("请输入原动机类型YDJ(1或2):
");
scanf("%d",&YDJ);
printf("请选择工作机的载荷特性:
\n");
printf("0---载荷平稳\n液体搅拌机;离心式水泵;通风机和鼓风机(<=7.5KW);离心式压缩机;轻型运输机\n");
printf("1---载荷变动小\n带式运输机(运送沙石、谷物),通风机(>7.5KW);发电机;旋转式水泵;金属切削机床;剪床;压力机;印刷机;振动机\n");
printf("2---载荷变动较大\n螺旋式运输机;斗式提升机;往复式水泵和压缩机;锻锤;磨粉机;锯木机;和木工机械;纺织机械\n");
printf("3---载荷变动很大\n破碎机(旋转式、颚式等);球磨机,棒磨机;起重机;挖掘机;橡胶辊压机\n");
scanf("%d",&GZJ);
printf("请选择带轮每天工作时间:
\n");
printf("0---小于10h\n");
printf("1---大于10h且小于16h\n");
printf("2---大于16h\n");
scanf("%d",&h);
if(YDJ==1)
kax=a[GZJ][h];
else
kax=a[GZJ][h+3];
returnkax;
}
intchangestotype(chars)
{
inta;
if(s=='Z')
a=1;
elseif(s=='A'||'a')
a=2;
elseif(s=='B')
a=3;
elseif(s=='C')
a=4;
elseif(s=='D')
a=5;
elseif(s=='E')
a=6;
returna;
}
intselectVMAX()//VMAX选择
{
inta,TYPE;
if(TYPE>=1&&TYPE<=4)
a=25;
else
a=30;
returna;
}
floatselectk1(intTYPE)//k1选择
{
floatk1xx;
floatk1x[6]={0.246,0.449,0.794,1.48,3.15,4.57};
k1xx=k1x[TYPE-1];
returnk1xx;
}
floatselectk2(intTYPE)
{
floatk2xx;
floatk2x[6]={7.44,19.02,50.6,143.2,507.3,951.55};
k2xx=k2x[TYPE-1];
returnk2xx;
}
floatselectk3(intTYPE)
{
floatk3xx;
floatk3x[6]={0.441,0.765,1.31,2.34,4.77,7.06};
k3xx=k3x[TYPE-1];
returnk3xx;
}
floatselectkb(intTYPE)//弯曲影响系数Kb
{
floatkbxx;
floatkbx[6]={0.2925,0.7725,1.9875,5.625,19.95,37.35};
kbxx=kbx[TYPE-1];
returnkbxx;
}
showdd(intTYPE)
{
printf("该型号的带轮系列直径为:
\n");
switch(TYPE)
{
case1:
printf("50,63,71,75,80,90,100,112,125,132,140,150,160,180,200,224,250,280,315\n");
break;
case2:
printf("75,80,85,90,100,106,112,118,125,132,140,150,160,180,200,224,250,280,315\n");
break;
case3:
printf("125,132,140,150,160,170,180,200,224,250,280,315,355,400,450,500\n");
break;
case4:
printf("200,212,224,236,250,265,280,315,355,400,450,500\n");
break;
case5:
printf("355,375,400,425,450,475,500,530,600\n");
break;
case6:
printf("500,530,560,600,630,710\n");
break;
}
}
charselecttype(floatPd,floatn1)
{
charsx;
floatc;
c=1.17;
if(n1>=447*pow(Pd,c))
sx='Z';
elseif((n1>=101.9*pow(Pd,c))&&(n1<447*pow(Pd,c)))
sx='A';
elseif((n1>=28*pow(Pd,c))&&(n1<101.9*pow(Pd,c)))
sx='B';
elseif((n1>=8.2*pow(Pd,c))&&(n1<28*pow(Pd,c)))
sx='C';
elseif((n1>=1.06*pow(Pd,c))&&(n1<8.2*pow(Pd,c)))
sx='D';
else
sx='E';
returnsx;
}
floatselectLd(floatLd0)
{intj,k;
floatA,Amin;
floatLLdd[33]={400,450,500,560,630,710,800,900,1000,1120,1250,1400,1600,1800,2000,2240,2500,2800,3150,3550,4000,4500,5000,5600,6300,7100,8000,9000,10000,11200,12500,14000,16000};
Amin=Ld0-LLdd[0];
for(j=0;j<33;j++)
{if(LLdd[j]>Ld0)
A=LLdd[j]-Ld0;
elseA=Ld0-LLdd[j];
if(Amin>A)
{Amin=A;
k=j;}
}
returnLLdd[k];
}
floatselectKL(floatLd,intTYPE)
{
floatLLdd[33]={400,450,500,560,630,710,800,900,1000,1120,1250,1400,1600,1800,2000,2240,2500,2800,3150,3550,4000,4500,5000,5600,6300,7100,8000,9000,10000,11200,12500,14000,16000};
floatKKLL[33][6]={{0.87,10,10,10,10,10,},{0.89,10,10,10,10,10},{0.91,10,10,10,10,10},{0.94,10,10,10,10,10},{0.96,0.81,10,10,10,10},
{0.99,0.83,10,10,10,10},{1.00,0.85,10,10,10,10},{1.03,0.87,0.82,10,10,10},{1.06,0.89,0.84,10,10,10},{1.08,0.91,0.86,10,10,10},
{1.10,0.93,0.88,10,10,10},{1.14,0.96,0.90,10,10,10},{1.16,0.99,0.92,0.83,10,10},{1.18,1.01,0.95,0.86,10,10},{-10,1.03,0.98,0.88,10,10},
{-10,1.06,1.00,0.91,10,10},{-10,1.09,1.03,0.93,10,10},{-10,1.11,1.05,0.95,0.83,10},{-10,1.13,1.07,0.97,0.86,10},{-10,1.17,1.09,0.99,0.89,10},
{-10,1.19,1.13,1.02,0.91,10},{-10,-10,1.15,1.04,0.93,0.90},{-10,-10,1.18,1.07,0.96,0.92},{-10,-10,-10,1.09,0.98,0.95},
{-10,-10,-10,1.12,1.00,0.97},{-10,-10,-10,1.15,1.03,1.00},{-10,-10,-10,1.18,1.06,1.02},{-10,-10,-10,1.21,1.08,1.05},{-10,-10,-10,1.23,1.11,1.07},
{-10,-10,-10,-10,1.14,1.10},{-10,-10,-10,-10,1.17,1.12},{-10,-10,-10,-10,1.20,1.15},{-10,-10,-10,-10,1.22,1.18}};
intm,n;
m=0;
while(LLdd[m]!
=Ld)
{
m++;
}
n=m;
returnKKLL[n][TYPE-1];
}
floatselectKALF(floatALF1)
{
floatKALFx[14]={0.68,0.73,0.78,0.82,0.86,0.89,0.92,0.95,0.98,1.00,1.05,1.10,1.15,1.20};
intj;
floatALF1x;
j=(ALF1-90)/10;
ALF1x=KALFx[j]+(KALFx[j+1]-KALFx[j])*0.1*(ALF1-90-j*10);
returnALF1x;
}
floatselectm(intTYPE)
{
floatmx;
floatmass[6]={0.06,0.1,0.17,0.3,0.6,0.9};
mx=mass[TYPE-1];
returnmx;
}
floatselecte(intTYPE)
{
floatexx;
floatex[6]={12,15,19,25.5,37,44.5};
exx=ex[TYPE-1];
returnexx;
}
floatselectf(intTYPE)
{
floatfxx;
floatfx[6]={8,10,12.5,17,23,29};
fxx=fx[TYPE-1];
returnfxx;
}