文档库 最新最全的文档下载
当前位置:文档库 › v带传动C程序源代码

v带传动C程序源代码

说明:请大家一定不要照搬原程序,要有改进,照抄无效,后果自负。认真写程序说明书。12月9日星期五考试前交给我。

#include
#include
#include
const double PAI=3.141592654;
double SelectK1(int Type);//选择系数K1
double SelectK2(int Type);//选择系数K2
double SelectK3(int Type);//选择系数K3
double Selectdd2(double dd2);//选择大带轮直径dd2
double SelectKi(double i);//选择传动比系数Ki
int SelectType(double n1,double Pd);//选择带型
double SelectKA();//选择工作情况系数
double SelectVmax(int Type);//选择最大转速
double Selectdd2max(int Type);//选择最大可用带轮直径
double SelectKb(int Type);//选择系数Kb
double SelectKALF(double ALF1);//选择包脚系数
int SelectLd(double Ld0);//选择基准长度
double SelectKL(double Ld0,int Type);//选择长度系数
double Selectm(int Type);//
int DisplayB(int Type,int Z);
char DXing[]="ZABCDE";
void main()
{

double P,n1,i,Ki,KALF,KA,Pd,Vmax,dd2max,K1,K2,K3,Kb,dd2,V,a,a0,a1,a2,Ld0,KL,ALF1,P0,DIFP0,m,F0,Q;
char Answer,Answer0;
int Type,dd1,Ld,Z;
cout<<"本程序的用途及适用范围的相关说明:"<cout<<"程序用途: 用于普通V带传动的设计计算,寻求最佳的设计方案,速度快,适用便捷!"<cout<<"程序的适用范围:"<cout<<"1.普通V带的传动设计计算;"<<<"2.V带传递的名义功率范围是0KW到1000KW之间;"<<<"3.V带的型号选用Z,A,B,C,D,E六种可选带型,在程序中分别用1,2,3,4,5,6表示六种带型;"<<<"4.程序中所使用的变量代号基本和《机械设计》课本上一致;"<<<"5.程序中所涉及的参数均从机械设计手册中国家推进表格中查找;"<cout<<"————————————————————"<cout<<"欢迎适用本程序!请根据程序提示输入原始设计数据:"<
cout<< "请输入需要传递的名义功率P(kw)(功率P范围在0——1000KW之间):"<do
{
cin>>P;//输入名义功率
if((P<0)||(P>1000)) cout<<"输入数据有误,请重新输入功率:"<}while ((P<0)||(P>1000));

cout<< "请输入传动比i(范围0
do
{
cin>>i;//输入传动比
if((i<0)||(i>10)) cout <<"输入数据有误,请重新输入传动比:endl";
}while ((i<0)||(i>10));

cout<< "请输入小带轮转速n1(r/min)(转速范围在0——4500之间):"<
do
{
cin>>n1;//输入转速
if((n1<0)||(n1>4500)) cout<<"输入数据有误,请重新输入转速:"<}while((n1<0)||(n1>4500));
Ki=SelectKi(i);//选择传动比系数

KA=SelectKA();//选择工作情况系数
Pd=KA*P;//计算设计功率
Type=SelectType(n1,Pd);//选择带轮类型




A: Vmax=SelectVmax(Type);//选择最大转速
dd2max=Selectdd2max(Type);
K1=SelectK1(Type);//


K2=SelectK2(Type);//
K3=SelectK3(Type);//
Kb=SelectKb(Type);//选择弯曲影响系数
B: do
{
//TBelt(Type);//选择输入带型
cout<
cout<<"请选择输入的小带轮的基准直径dd1(mm):";
do
{
cin>>dd1;
if(dd1<0) cout<<"输入为非法输入,请重新输入:"<}while(dd1<0);


V=PAI*(double)dd1*n1/(60*1000);
dd2=i*dd1;


if(V>=Vmax||dd2>dd2max)
cout<<"不能形成有效带传递,请减少带轮直径!";





}while(V>=Vmax||dd2>dd2max);
cout<<"带轮速度V="<
dd2=Selectdd2(dd2);//选择大带轮的推荐直径
cout<<"大轮直径为:"<a1=0.7*(dd1+dd2);
a2=2*(dd1+dd2);
do
{
cout<<"请输入初估中心距a0:(大于等于"<do
{
cin>>a0;
if((a0a2))cout<<"输入中心距数据错误,请重新输入:"<}while((a0a2));
}while((a0a2));
Ld0=2*a0+PAI/2*(dd1+dd2)+pow((dd2-dd1),2)/(4*a0);
Ld=SelectLd(Ld0);//选择带的基准长度推荐值
cout<<"————————————————————"<cout<<"基准长度为Ld="<a=a0+(Ld-Ld0)/2;
cout<<"实际计算中心距a="<
KL=SelectKL(Ld,Type);//选择长度系数




ALF1=180-(dd2-dd1)/a*57.3;//计算小带轮的包脚
cout<<"小带轮包角="<KALF=SelectKALF(ALF1);

P0=(K1*pow(V,(-0.09))-K2/dd1-K3*pow(V,2))*V;
cout<<"单根带轮额定功率P0="<


DIFP0=Kb*n1*(1-1/Ki);

cout<<"功率增量DIFP0="<
//Z_0=Pd/((P0-DIFP0)*KL*KA)+1;
Z=floor(Pd/((P0+DIFP0)*KL*KALF)+1); //计算带的根数
//if Z//{
// Z++;
//}
cout<<"带轮带数Z="<if(Z>=10)//检测带型
{
do
{
cout<<"Z>=10,请输入相邻带型(带型为Z或A或B或C或D或E):";
cin>>Answer;
if(Answer!='A'||'B'||'C'||'D'||'E'||'Z'||'a'||'b'||'c'||'d'||'e'||'z')
cout<<"你输入的带型不在范围之内";
}while(Answer!='A'||'B'||'C'||'D'||'E'||'Z'||'a'||'b'||'c'||'d'||'e'||'z');
if(Answer='Z'||'z') Type=0;
if(Answer='A'||'a') Type=1;
if(Answer='B'||'b') Type=2;
if(Answer='C'||'c') Type=3;
if(Answer='D'||'d') Type=4;
if(Answer='E'||'e') Type=5;

goto A;
}
else
{
m=Selectm(Type);
F0=((500*Pd/(Z*V))*(2.5-KALF)/KALF+m*V*V+0.5);
cout<<"带轮初拉力"<Q=(int)(2*Z*F0*sin(ALF1*PAI/360)+0.5);
cout<<"带轮的压轴力为"<



cout<<"————————————————————"<cout<<"附录:计算过程中的一些系数"<//cout<<"P="<cout<<"传动比系数Ki="<//cout<<"Pd="<cout<<"工作情况系数KA="<//cout<<

"Type="<
cout<<"带长修正系数KL="<
cout<<"弯曲影响系数Kb="<cout<<"包角系数为KALF="<



DisplayB(Type,Z);
}
cout <<"您是否想计算下一种带轮直径Y(是),N(否)";
do
{
cin>>Answer;
if((Answer!='Y')&&(Answer!='N')&&(Answer!='y')&&(Answer!='n')) cout<<"您输入了无效数字,请重新输入:"<}while((Answer!='Y')&&(Answer!='N')&&(Answer!='y')&&(Answer!='n'));
if ((Answer=='Y')||(Answer=='y'))
goto B;
else cout <<"您是否想计算下一种型号带Y(是),N(否)";
do
{
cin>>Answer;
if((Answer!='Y')&&(Answer!='N')&&(Answer!='y')&&(Answer!='n')) cout<<"您输入了无效数字,请重新输入:"<}while((Answer!='Y')&&(Answer!='N')&&(Answer!='y')&&(Answer!='n'));

if ((Answer=='Y')||(Answer=='y'))
{ cout <<"请输入带的型号(带型为Z或A或B或C或D或E):";
cin >>Answer0;

if (Answer0>=97&&Answer0<=122)//将小写字母转换为大写字母
Answer0=Answer0-32;


switch (Answer0)
{
case 'Z':
Type=1;
cout<<"你所选的带型为Z型"<cout<<"该种型号的带轮系列直径推荐值为:"<break;
case 'A':
Type=2;
cout<<"你所选的带型为A型"<cout<<"该种型号的带轮系列直径推荐值为:"<break;
case 'B':
Type=3;
cout<<"你所选的带型为B型"<cout<<"该种型号的带轮系列直径推荐值为:"<break;
case 'C':
Type=4;
cout<<"你所选的带型为C型"<cout<<"该种型号的带轮系列直径推荐值为:"<break;
case 'D':
Type=5;
cout<<"你所选的带型为D型"<cout<<"该种型号的带轮系列直径推荐值为:"<break;
case 'E':
Type=6;
cout<<"你所选的带型为E型,"<cout<<"该种型号的带轮系列直径推荐值为:"<break;
default:
cout<<"对不起,您输入的带型不在Z A B C D E 之间!";
}
goto A;
}



}
double SelectKi(double i)//查找传动比系数函数
{
int j;
const int Nums=10;
const double ii[Nums]={1.000,1.015,1.045,1.085,1.125,1.185,1.245,1.345,1.515,1.995};
const double Kii[Nums]={1,1.0136,1.0276,1.0419,1.0567,1.0719,1.0875,1.1036,1.1202,1.1373};
for (j=0;j{
if (i>=ii[j]&&ireturn Kii[j];
}
return Kii[Nums-1];
}
int SelectType(double

n1,double Pd)//根据小带轮转速和设计功率选择带型
{
const int zz1[10]={50,63,71,75,80,90,100,112,125,132},zz2[9]={140,150,160,180,200,224,250,280,315},za1[10]={75,80,85,90,100,106,112,118,125,132},
za2[9]={140,150,160,180,200,224,250,280,315},zb1[10]={125,132,140,150,160,170,180,200,224,250},zb2[6]={280,315,355,400,450,500},
zc[12]={200,212,224,236,250,265,280,315,355,400,450,500},zd1[4]={355,375,400,425},zd2[5]={450,475,500,530,600},
ze[6]={500,530,560,600,630,710};
double c;
c=1.17;

if( n1>=447*pow(Pd,c))
{

cout<<"所选的带型为Z型"<cout<<"该型号的带轮系列直径为:"<return 1;
}


else if ((n1>=101.9*pow(Pd,c))&&(n1<447*pow(Pd,c)))
{
cout<<"所选的带型为A型"<cout<<"该型号的带轮系列直径为:"<return 2;
}
else if ((n1>=28*pow(Pd,c))&&(n1<101.9*pow(Pd,c)))
{
cout<<"所选的带型为B型"<cout<<"该型号的带轮系列直径为:"<return 3;
}

else if ((n1>=8.2*pow(Pd,c))&&(n1<28*pow(Pd,c)))
{
cout<<"所选的带型为C型"<cout<<"该型号的带轮系列直径为:"<return 4;
}
else if ((n1>=1.06*pow(Pd,c))&&(n1<8.2*pow(Pd,c)))
{
cout<<"所选的带型为D型"<cout<<"该型号的带轮系列直径为:"<return 5;
}


else
{
cout<<"所选的带型为E型,"<cout<<"该型号的带轮系列直径为:"<return 6;

}
}
double SelectKA() //选择工作情况系数
{

int GZJ,h,YDJ; //GZJ:工作机载荷特性;YDJ:原动机类型;h:工作时间
double a[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}};
cout<<"请选择工作机的载荷特性(不同类型分别用1,2,3,4表示):"<cout<<"1---载荷平稳\n液体搅拌机;离心式水泵;通风机和鼓风机(<=7.5KW);离心式压缩机;轻型运输机"<cout<<"2---载荷变动小\n带式运输机(运送沙石、谷物),通风机(>7.5KW);发电机;旋转式水泵;金属切削机床;剪床;压力机;印刷机;振动机"<cout<<"3---载荷变动较大\n螺旋式运输机;斗式提升机 ;往复式水泵和压缩机;锻锤;磨粉机;锯木机;和木工机械;纺织机械"<cout<<"4---载荷变动很大\n破碎机(旋转式、颚式等);球磨机,棒磨机;起重机;挖掘机;橡胶辊压机"<cout<do
{
cin>>GZJ;

GZJ--;
if((GZJ!=0)&&(GZJ!=1)&&(GZJ!=2)&&(GZJ!=3)) cout<<"你的输入没有按要求输入!请重新输入:"<}while((GZJ!=0)&&(GZJ!=1)&&(GZJ!=2)&&(GZJ!=3));
cout<<"请选择带轮一天工作时间(分别用1,2,3表示三种工作时间类型):"<cout<<"1---工作时间小于10h"<cout<<"2---工作时间大于10h且小于16h"<cout<<"3---工作时间大于16h"<do
{
cin>>h;
h--;
if((h!=0)&&(h!=1)&&(h!=2)) cout<<"你的输入没有按要求输入!请重新输入:"<}while((h!=0)&&(h!=1)&&(h!=2));
cout<<"请选择原动机类型(分别用1,2表示两种电动机类型):"<cout<<"1---Ⅰ类\n普通鼠笼式交流电动机,同步电动机,直流电动机,n>600r/min内燃机。"<cout<<"2---Ⅱ类\n交流电动机,直流电动机,单缸发动机,n<=600r/min内燃机。"<do
{
cin>>YDJ;
YDJ--;
if((YDJ!=0)&&(YDJ!=1)) cout<<"你的输入没有按要求输入!请重新输入:"<}while((YDJ!=0)&&(YDJ!=1));
return a[GZJ][h+3*YDJ];
}
double SelectVmax(int Type) //选择带轮的最高转速函数
{
switch (Type)
{
case 1:
case 2:
case 3:
case 4:
return 25;
break;
case 5:
case 6:
return 30;
break;
default:
{
cout<<"你输入的数据有误!请输入1-6中的数字"<return 0;
}
}
}

double Selectdd2max(int Type) //选择大带路的最大直径推荐值函数
{
switch (Type)
{
case 1:
case 2:return 315;break;
case 3:
case 4:return 500;break;
case 5:
return 600;
break;

case 6:
return 710;
break;
default:
{
cout<<"你输入的数据有误!请输入1-6中的数字"<return 0;
}
}
}


double SelectKb(int Type) //选择弯曲影响系数函数
{
double Kb[6]={0.2925e-3,0.7725e-3,1.9875e-3,5.625e-3,19.95e-3,37.35e-3};
return Kb[Type-1];
}
double SelectK1(int Type)
{
double K1[6]={0.246,0.449,0.794,1.48,3.15,4.57};
return K1[Type-1];
}
double SelectK2(int Type)
{
double K2[6]={7.44,19.02,50.6,143.2,507.3,951.5};
return K2[Type-1];
}
double SelectK3(int Type)
{
double K3[6]={0.441e-4,0.765e-4,1.31e-4,2.34e-4,4.77e-4,7.06e-4};
return K3[Type-1];
}
double Selectdd2(double dd2) //选择大带轮直径系列推荐值
{
int k;
double dzjxl[35]={20,28,31.5,35.5,40,45,50,56,63,71,75,80,90,100,112,125,140,150,160,180,200,224,250,280,315,355,400,425,450,500,560,600,630,710,800};
for(int i=0;i<35;i++)
{
if (dzjxl[i]if ((dzjxl[i]-dd2)>(dd2-dzjxl[i-1])) k=i-1;

else k=i;
break;
}
return dzjxl[k];
}

int SelectLd(double Ld0)//选择带轮基准长度函数
{
int i,k;
int LLdd[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};
for(i=0;i<33;i++)
{
if(LLdd[i]if((LLdd[i]-Ld0)>(Ld0-LLdd[i-1]))

k=i-1;
else k=i;
break;
}
return LLdd[k];
}
double SelectKL(double Ld0,int Type) //选择长度系数函数
{
int i,k;
double KL;
int LLdd[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};
double KKLL[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}};
for(i=0;i<33;i++)
{
if(LLdd[i]if((LLdd[i]-Ld0)>(Ld0-LLdd[i-1])) k=i-1;
else k=i;
break;
}
KL=KKLL[k][Type-1];
if (KL<0)
{do
{ k=k+1;
KL=KKLL[k][Type-1];
}while (KL>0);
}
else if(KL>9)
{do
{k=k-1;KL=KKLL[k][Type-1];
}while(KL<9);}
return KL;

}
double Selectm(int Type)//选择带的质量函数
{
double m[6]={0.06,0.1,0.17,0.3,0.6,0.9};
return m[Type-1];
}
int DisplayB(int Type,int Z)//计算轮缘宽度函数
{
double B;
double luncao[2][6]={{12,15,19,25.5,37,44.5},{8,10,12.5,17,23,29}};
B=(Z-1)*luncao[0][Type-1]+2*luncao[1][Type];
cout<<"轮缘宽度为"<return (int)(B+1);

}

double SelectKALF(double ALF1)//查找包脚系数函数
{
double AALF1[14]={220,210,200,190,180,170,160,150,140,130,120,110,100,90};
double KA1[14]={1.20,1.15,1.10,1.05,1.00,0.98,0.95,0.92,0.89,0.86,0.82,0.78,0.73,0.68};
int i,k=0;
double KKALF1=0;
for(i=0;i<14;i++)
{
if(AALF1[i]>ALF1) continue;
else k=i;
break;

}
KKALF1=(KA1[k-1] * (ALF1-AALF1[k])+KA1[k] * (AALF1[k-1]-ALF1))/(AALF1[k-1] - AALF1[k]);
return KKALF1;


}

相关文档