资源描述
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define PI 3.14159
//int ; //其它参数
float KA,P0,P0_1,Kb,Ki,Kl,Kv; //,P0_1为传递功增量
float b1,bp,h,q;
float Pc,N1,N2,Centerdistance,SmallpulleysAngle,F0,V,flag_a,flag_b,flag_c; //Pc为功率,N1为主动轮转速,N2为从动轮转速,Small pulleys Angle为小带轮包角,Z传动带根数,F0为初拉力
//Kv为包角系数
float pressure_Q,transmissionratio,Z_1; //pressure_Q轴上压力,transmissionratio为传动比
int TYPE,D1,D2,Ld,Z,ch1; //TYPE为V带的类型,D1为主动轮基准直径,D2为从动轮直径,
//V为带速,Ld为基准长度,Centerdistance为中心距
float KA_softstart[4][3]={{1.0,1.1,1.2},{1.1,1.2,1.3},{1.2,1.3,1.4},{1.3,1.4,1.5}}, //工作情况系数KA 软起动时KA
KA_loadstart[4][3]={{1.1,1.2,1.3},{1.2,1.3,1.4},{1.4,1.5,1.6},{1.5,1.6,1.8}}; //负载起动时KA
void CHOOSE_KA();
void CHOOSE_type();
void CHOOSE_gaugediameter();
void LengthandCenterdistance();
void Beltingthenumber();
void initialtension();
void Axispressure();
void display();
void explain();
void otherparameters_dis();
int Forclosetothenumber(int min,int max,int z);
/************************************主函数*****************************************/
void main()
{
int goon;
do
{
explain();
CHOOSE_KA();
CHOOSE_type();
CHOOSE_gaugediameter();
LengthandCenterdistance();
Beltingthenumber();
initialtension();
Axispressure();
display();
scanf("%d",&goon);
//if(goon!=1)
//break;
}while(goon==1);
}
/******************************* 1.确定计算功率Pc ********************************************/
void CHOOSE_KA()
{
int workingcondition,start_flag;
float dayhour,nominalpower;
printf("载荷变动选择:\n");
printf("\n");
printf("1.载荷变动微小:液体搅拌机;通风和鼓风机(<=7.5KW);离心式水泵和压缩机;轻型输送机。\n");
printf("\n");
printf("2.载荷变动小:带式输送机(不均匀载荷);通风机(>=7.5KW);旋转式水泵和压缩机;发电机; 金属切削机床;印刷机;锯木机和木工机械。\n");
printf("\n");
printf("3.载荷变动较大:制砖机;斗式提升机;往复式水泵和压缩机;起重机;磨粉机;冲剪机床;橡胶 机械;振动筛;纺织机械;重载输送机。\n");
printf("\n");
printf("4.载荷变动很大:破碎机(旋转式、颚式等);磨碎机(球磨、棒磨、管磨)。\n");
printf("\n");
printf("请选择工况(以数字标号输入):\n");
scanf("%d",&workingcondition);
printf("\n");
printf("请选择起动方式: ");
printf("1为软起动,2为负载起动\n");
scanf("%d",&start_flag);
printf("\n");
printf("请输入每天工作小时数(h):\n");
scanf("%f",&dayhour);
printf("\n");
printf("请输入名义功率(KW):\n");
scanf("%f",&nominalpower);
printf("\n");
if(start_flag==1)
{
if(dayhour<10)
{
switch(workingcondition)
{
case 1: KA=KA_softstart[0][0] ;break;
case 2: KA=KA_softstart[1][0] ;break;
case 3: KA=KA_softstart[2][0] ;break;
case 4: KA=KA_softstart[3][0] ;break;
}
}
if(dayhour>=10&&dayhour<=16)
{
switch(workingcondition)
{
case 1: KA=KA_softstart[0][1] ;break;
case 2: KA=KA_softstart[1][1] ;break;
case 3: KA=KA_softstart[2][1] ;break;
case 4: KA=KA_softstart[3][1] ;break;
}
}
if(dayhour>16)
{
switch(workingcondition)
{
case 1: KA=KA_softstart[0][2] ;break;
case 2: KA=KA_softstart[1][2] ;break;
case 3: KA=KA_softstart[2][2] ;break;
case 4: KA=KA_softstart[3][2] ;break;
}
}
}
if(start_flag==2)
{
if(dayhour<10)
{
switch(workingcondition)
{
case 1: KA=KA_loadstart[0][0] ;break;
case 2: KA=KA_loadstart[1][0] ;break;
case 3: KA=KA_loadstart[2][0] ;break;
case 4: KA=KA_loadstart[3][0] ;break;
}
}
if(dayhour>=10&&dayhour<=16)
{
switch(workingcondition)
{
case 1: KA=KA_loadstart[0][1] ;break;
case 2: KA=KA_loadstart[1][1] ;break;
case 3: KA=KA_loadstart[2][1] ;break;
case 4: KA=KA_loadstart[3][1] ;break;
}
}
if(dayhour>16)
{
switch(workingcondition)
{
case 1: KA=KA_loadstart[0][2] ;break;
case 2: KA=KA_loadstart[1][2] ;break;
case 3: KA=KA_loadstart[2][2] ;break;
case 4: KA=KA_loadstart[3][2] ;break;
}
}
}
Pc=KA*nominalpower;
}
/***************************** 2.选型 ************************************************/
void CHOOSE_type()
{
int i,t;
float np[6],a[6]={677,100,24,7,1.16,0.32},b[6]={1.454,1.488,1.470,1.488,1.545,1.5};
printf("请输入转速n1(r/min):\n");
scanf("%f",&N1);
printf("\n");
printf("请输入转速n2(r/min):\n");
scanf("%f",&N2);
printf("\n");
for(i=0;i<6;i++)
{
np[i]=a[i]*(pow(Pc,b[i]));
}
// n=N1;
for(i=0;i<6;i++)
if(N1>np[i]||i==5)
{
t=i; break;
}
switch(t)
{
case 0:printf("带型TPYE:Z型\n");break;
case 1:printf("带型TPYE:Z 或 A型\n");break;
case 2:printf("带型TPYE:A 或 B型\n");break;
case 3:printf("带型TPYE:B 或 C型\n");break;
case 4:printf("带型TPYE:C 或 D型\n");break;
case 5:printf("带型TPYE:D 或 E型\n");break;
case 6:printf("带型TPYE:E 或 F型\n");break;
}
printf("\n");
TYPE=t;
}
/******************************** 3.基准直径选择 *********************************/
void CHOOSE_gaugediameter()
{
int num,num_1,value_min,value_max;
float transmissionratio,transmissionratio1,transmissionratio2;
int gaugediameter_all[50]={ 20,25,40,45,56,63,71,75,80,85,
90,95,100,106,112,118,125,132,140,150,
160,170,180,200,212,224,236,250,265,280,
315,355,375,400,425,450,475,500,530,560,
630,710,800,900,1000,1120,1250,1600,2000,2500},
gaugediameter_min[7]={20,50,75,125,200,355,500},
gaugediameter_Y[12]={20,25,40,45,56,63,71,80,90,100,112,125},
gaugediameter_Z[21]={56,63,71,75,80,90,100,112,125,140,150,160,180,200,250,280,315,355,400,500,630},
gaugediameter_A[22]={75,80,85,90,95,100,106,112,118,125,132,140,150,160,180,200,250,315,400,500,630,800},
gaugediameter_B[21]={125,132,140,150,160,170,180,200,212,224,236,250,280,315,355,400,500,630,800,1000,1120},
gaugediameter_C[18]={200,212,224,236,250,265,280,315,355,400,450,500,530,560,630,800,1000,1250},
gaugediameter_D[17]={355,375,400,425,450,475,500,530,560,630,710,800,900,1000,1250,1600,2000},
gaugediameter_E[12]={500,560,630,710,800,900,1000,1120,1250,1600,2000,2500};
printf("最小基准直径:Dmin=%d\n",gaugediameter_min[TYPE]);
printf("\n");
LOOP: printf("该型号带轮基准直径(mm):\n");
switch(TYPE)
{
case 0:
for(num=0;num<12;num++)
{
printf(" %d",gaugediameter_Y[num]);
};
break;
case 1:
for(num=0;num<21;num++)
{
printf(" %d",gaugediameter_Z[num]);
};
break;
case 2:
for(num=0;num<22;num++)
{
printf(" %d",gaugediameter_A[num]);
};
break;
case 3:
for(num=0;num<21;num++)
{
printf(" %d",gaugediameter_B[num]);
};
break;
case 4:
for(num=0;num<18;num++)
{
printf(" %d",gaugediameter_C[num]);
};
break;
case 5:
for(num=0;num<17;num++)
{
printf(" %d",gaugediameter_D[num]);
};
break;
case 6:
for(num=0;num<12;num++)
{
printf(" %d",gaugediameter_E[num]);
};
break;
}
printf("\n");
printf("请选择主动轮基准直径D1(mm):\n");
scanf("%d",&D1);
printf("\n");
V=PI*D1*N1/60000;
if(V>25)
{
printf("主动轮直径过大,请重新选择小主动轮直径D1:\n");
goto LOOP;
}
if(V<5)
{
printf("主动轮直径过小,请重新选择大主动轮直径D1:\n");
goto LOOP;
}
D2=(N1/N2)*D1*0.99; //计算从动轮直径D2
for(num_1=0;num_1<50;num_1++)
{
if(D2<=gaugediameter_all[num_1]) break;
}
if(num_1!=0)
{
value_min=gaugediameter_all[num_1-1];
value_max=gaugediameter_all[num_1];
D2=Forclosetothenumber(value_min,value_max,D2); //(比较)
}
else D2=gaugediameter_all[num_1];
transmissionratio=N1/N2;
transmissionratio1=D2/(D1*0.99);
transmissionratio2=(transmissionratio-transmissionratio1)/transmissionratio*100;
if(transmissionratio2>5)
{
printf("传动比不适用,请重新选择主动轮直径D1:\n");
goto LOOP;
}
}
/********************************* 4.V带长度及中心距 *************************************/
void LengthandCenterdistance()
{
int length_Ld[39]={200,224,250,280,315,335,400,450,500,560,
630,710,800,900,1000,1120,1250,1400,1600,1800,
2000,2240,2500,2800,3150,3350,4000,4500,5000,5600,
6300,7100,8000,9000,10000,11200,12500,14000,16000};
int a_0,Ld_0,num,value_min,value_max;
here: printf("请输入初选中心距(mm):\n");
scanf("%d",&a_0);
Ld_0=2*a_0+PI*(D1+D2)/2+pow((D2-D1),2)/(4*a_0);
for(num=0;num<39;num++)
{
if(Ld_0<=length_Ld[num]) break;
}
/* value_max=length_Ld[num-1];
value_min=length_Ld[num];
Ld=Forclosetothenumber(value_min,value_max,Ld_0);*/
if(Ld_0==length_Ld[num])
Ld=length_Ld[num];
else
Ld=length_Ld[num-1];
Centerdistance=a_0+(Ld-Ld_0)/2;
SmallpulleysAngle=180-(D2-D1)/Centerdistance*53.7;
if(SmallpulleysAngle<120)
{
printf("SmallpulleysAngle=%f度<120度",SmallpulleysAngle);
printf(",小带轮包角不适宜,请重新选择初选中心距:\n");
goto here;
}
}
/********************************* 5.确定V带根数 *****************************************/
void Beltingthenumber()
{
float i;
int wrapangle,num,value_min,value_max;
int wrap_angle[16]={180,175,170,165,160,155,150,145,140,135,130,125,120,110,100,90};
for(num=0;num<16;num++)
{
if(SmallpulleysAngle>=wrap_angle[num])
break;
}
if(num!=0)
{
value_min=wrap_angle[num];
value_max=wrap_angle[num-1];
wrapangle=Forclosetothenumber(value_min,value_max,SmallpulleysAngle);
}
else wrapangle=180;
switch(wrapangle)
{
case 180: Kv=1;break;
case 175: Kv=0.99;break;
case 170: Kv=0.98;break;
case 165: Kv=0.96;break;
case 160: Kv=0.95;break;
case 155: Kv=0.93;break;
case 150: Kv=0.92;break;
case 145: Kv=0.91;break;
case 140: Kv=0.89;break;
case 135: Kv=0.88;break;
case 130: Kv=0.86;break;
case 125: Kv=0.84;break;
case 120: Kv=0.82;break;
case 110: Kv=0.78;break;
case 100: Kv=0.73;break;
case 90: Kv=0.68;break;
}
switch(TYPE) //传递功率的计算
{
case 0: P0=V*(0.147*(pow(V,-0.09))-4.79/D1-(0.479E-4)*V*V)-0.32;break;
case 1: P0=V*(0.450*(pow(V,-0.09))-19.62/D1-(0.799E-4)*V*V)-0.32;break;
case 2: P0=V*(0.769*(pow(V,-0.09))-50.79/D1-(1.385E-4)*V*V)-0.32;break;
case 3: P0=V*(1.477*(pow(V,-0.09))-143.66/D1-(2.369E-4)*V*V)-0.32;break;
case 4: P0=V*(3.223*(pow(V,-0.09))-505.48/D1-(4.791E-4)*V*V)-0.32;break;
case 5: P0=V*(4.844*(pow(V,-0.09))-1037.7/D1-(6.947E-4)*V*V)-0.32;break;
}
switch(TYPE) //弯曲影响系数
{
case 0: Kb=0.00006;break;
case 1: Kb=0.00039;break;
case 2: Kb=0.00103;break;
case 3: Kb=0.00265;break;
case 4: Kb=0.00750;break;
case 5: Kb=0.02660;break;
case 6: Kb=0.04980;break;
}
//////////////////// 长度系数Kl图表 ///////////////////////
if(TYPE==0)
{
switch(Ld)
{
case 200: Kl=0.81;break;
case 224: Kl=0.82;break;
case 250: Kl=0.84;break;
case 280: Kl=0.87;break;
case 315: Kl=0.89;break;
case 335: Kl=0.92;break;
case 400: Kl=0.96;break;
case 450: Kl=1.00;break;
case 500: Kl=1.02;break;
}
}
if(TYPE==1)
{
switch(Ld)
{
case 400: Kl=0.87;break;
case 450: Kl=0.89;break;
case 500: Kl=0.91;break;
case 560: Kl=0.94;break;
case 630: Kl=0.96;break;
case 710: Kl=0.99;break;
case 800: Kl=1.00;break;
case 900: Kl=1.03;break;
case 1000: Kl=1.06;break;
case 1120: Kl=1.08;break;
case 1250: Kl=1.11;break;
case 1400: Kl=1.14;break;
case 1600: Kl=1.16;break;
case 1800: Kl=1.18;break;
}
}
if(TYPE==2)
{
switch(Ld)
{
case 630: Kl=0.81;break;
case 710: Kl=0.82;break;
case 800: Kl=0.85;break;
case 900: Kl=0.87;break;
case 1000: Kl=0.89;break;
case 1120: Kl=0.91;break;
case 1250: Kl=0.93;break;
case 1400: Kl=0.96;break;
case 1600: Kl=0.99;break;
case 1800: Kl=1.01;break;
case 2000: Kl=1.03;break;
case 2240: Kl=1.06;break;
case 2500: Kl=1.09;break;
case 2800: Kl=1.11;break;
case 3150: Kl=1.13;break;
case 3550: Kl=1.17;break;
case 4000: Kl=1.19;break;
}
}
if(TYPE==3)
{
switch(Ld)
{
case 900: Kl=0.81;break;
case 1000: Kl=0.84;break;
case 1120: Kl=0.86;break;
case 1250: Kl=0.88;break;
case 1400: Kl=0.90;break;
case 1600: Kl=0.93;break;
case 1800: Kl=0.95;break;
case 2000: Kl=0.98;break;
case 2240: Kl=1.00;break;
case 2500: Kl=1.03;break;
case 2800: Kl=1.05;break;
case 3150: Kl=1.07;break;
case 3550: Kl=1.10;break;
case 4000: Kl=1.13;break;
case 4500: Kl=1.15;break;
case 5000: Kl=1.18;break;
}
}
if(TYPE==4)
{
switch(Ld)
{
case 1600: Kl=0.84;break;
case 1800: Kl=0.85;break;
case 2000: Kl=0.88;break;
case 2240: Kl=0.91;break;
case 2500: Kl=0.93;break;
case 2800: Kl=0.95;break;
case 3150: Kl=0.97;break;
case 3550: Kl=0.98;break;
case 4000: Kl=1.02;break;
case 4500: Kl=1.04;break;
case 5000: Kl=1.07;break;
case 5600: Kl=1.09;break;
case 6300: Kl=1.12;break;
case 7100: Kl=1.15;break;
case 8000: Kl=1.18;break;
case 9000: Kl=1.21;break;
case 10000: Kl=1.23;break;
}
}
if(TYPE==5)
{
switch(Ld)
{
case 2800: Kl=0.83;break;
case 3150: Kl=0.86;break;
case 3550: Kl=0.88;break;
case 4000: Kl=0.91;break;
case 4500: Kl=0.93;break;
case 5000: Kl=0.96;break;
case 5600: Kl=0.98;break;
case 6300: Kl=1.00;break;
case 7100: Kl=1.03;break;
case 8000: Kl=1.06;break;
case 9000: Kl=1.08;break;
case 10000: Kl=1.11;break;
case 11200: Kl=1.14;break;
case 12500: Kl=1.17;break;
case 14000: Kl=1.20;break;
case 16000: Kl=1.22;break;
}
}
if(TYPE==6)
{
switch(Ld)
{
case 4500: Kl=0.90;break;
case 5000: Kl=0.92;break;
case 5600: Kl=0.95;break;
case 6300: Kl=0.97;break;
case 7100: Kl=1.00;break;
case 8000: Kl=1.02;break;
case 9000: Kl=1.05;break;
case 10000: Kl=1.07;break;
case 11200: Kl=1.10;break;
case 12500: Kl=1.12;break;
case 14000: Kl=1.15;break;
case 16000: Kl=1.18;break;
}
}
///////////////////////// 确定传动比系数Ki //////////////////
i=N1/N2; //传动比i
transmissionratio=i;
if(1<=i&&i<=1.04)
Ki=1;
if(1.04<i&&i<=1.19)
Ki=1.03;
if(1.19<i&&i<=1.49)
Ki=1.08;
if(1.49<i&&i<=2.95)
Ki=1.12;
if(i>2.95)
Ki=1.14;
P0_1=Kb*Ki*N1; //传递功率增量
flag_b=P0;
flag_c=P0_1;
Z_1=Pc/((P0+P0_1)*Kv*Kl); //V带根数
//flag_a=Z_1;
if(Z_1!=(int)Z_1)
Z=(int)Z_1+1;
else
Z=Z_1;
}
/******************* 6.计算初拉力F0 ****************************/
void initialtension()
{
switch (TYPE) //表15-1 三角胶带剖面尺寸及每米长质量
{
case 0:
b1=6;bp=5.3;h=4;q=0.04;
break;
case 1:
b1=10;bp=8.5;h=6;q=0.06;
break;
case 2:
b1=13;bp=11;h=8;q=0.10;
break;
case 3:
b1=17;bp=14;h=11;q=0.17;
break;
case 4:
b1=22;bp=19;h=14;q=0.30;
break;
case 5:
b1=32;bp=27;h=19;q=0.60;
break;
case 6:
b1=38;bp=32;h=25;q=0.8
展开阅读全文