源程序如下
#include <cstdio>
#include <math.h>
using namespace std;
#define PI 3.1415
int main()
{
double a[72][2]={
{
0,0.0857},{
10,0.0894},{
20,0.0833},{
30,0.0838},{
40,\
0.0822},{
50,0.0818},{
60,0.0841},{
70,0.0845},{
80,0.0834},{
90,0.0858},{
100,\
0.0862},{
110,0.0855},{
120,0.0892},{
130,0.0919},{
140,0.0903},{
150,0.0929},\
{
160,0.0947},{
170,0.0928},{
180,0.0980},{
190,0.0976},{
200,0.0968},{
210,\
0.1033},{
220,0.1073},{
230,0.1167},{
240,0.1308},{
250,0.1552},{
260,0.1783},\
{
270,0.2191},{
280,0.2740},{
290,0.3596},{
300,0.4990},{
310,0.7298},{
320,\
1.1332},{
330,1.8783},{
340,3.1401},{
350,4.6997},{
360,6.7025},{
370,7.0849},\
{
380,5.1156},{
390,3.5106},{
400,2.4167},{
410,1.6797},{
420,1.2474},{
430,\
0.9562},{
440,0.7655},{
450,0.6405},{
460,0.5507},{
470,0.4842},{
480,0.4413},\
{
490,0.4053},{
500,0.3800},{
510,0.3659},{
520,0.3423},{
530,0.3150},{
540,\
0.2093},{
550,0.1557},{
560,0.1379},{
570,0.1143},{
580,0.0948},{
590,0.0821},\
{
600,0.0915},{
610,0.0845},{
620,0.0888},{
630,0.0974},{
640,0.1031},{
650,\
0.0946},{
660,0.0894},{
670,0.0842},{
680,0.0854},{
690,0.0930},{
700,0.0967},\
{
710,0.0936}};//定义数组a
int i;
double b,pg1;
for(i=0;i<=71;i++)
{
b=a[i][0];
pg1=a[i][1];
printf("曲柄转角(度)b=%5.2f\n",b);
printf("缸内气体压力(MPa)pg1=%5.4f\n",pg1);
b=b*PI/180;
double function(double z);
double ma=1.38,mb=1.267,m1=0.543,mk1=0.563,mk2=1.15,p2=0.0415,
mk3=2.3,p3=0.0688,r=0.0575,l=0.21,n=2000,e=0.007;
double m2,h,s,w,B,w1,q1,q2,mk;
m2=m1+mb;//连杆质量
h=e/r;//偏心率
s=r/l;//连杆比
w=PI*n/30;//曲柄角速度
B=asin(s*(sin(b)-h));//连杆摆动角位移
w1=s*cos(b)/sqrt(1-s*s*(sin(b)-h)*(sin(b)-h));//连杆角速度
mk=mk1+2*p2*mk2/r-2*p3*mk3/r;
printf("连杆摆动角位移B=%5.2f\n",B);
printf("连杆摆动角速度w1=%5.2f\n",w1);
double x,v,g;
x=r*((1-cos(b))+0.5*s*sin(b)*sin(b)-s*h*sin(b));
v=r*w*(sin(b)+0.5*s*sin(2*b)-s*h*cos(b));
g=r*w*w*(cos(b)+s*cos(2*b)+s*h*sin(b));
printf("活塞位移x=%5.4f\n",x);
printf("活塞速度v=%5.4f\n",v);
printf("活塞加速度g=%5.4f\n",g);
double mj,A,P0,Pg,Pi,P,p,Pn,Pt,t,k;
mj=ma+m1;//往复运动质量
int D=95;
A=PI*D*D/4;
P0=0.101;
Pg=pg1-P0;
Pi=(-1)*mj*g/A;
P=Pg+Pi;
Pn=P*tan(B);
Pt=P/cos(B);
t=Pt*sin(b+B);
k=Pt*cos(b+B);
printf("缸内气压引起的作用力Pg=%5.4f\n",Pg);
printf("往复惯性力Pi=%5.4f\n",Pi);
printf("活塞上的总作用力P=%5.4f\n",P);
printf("活塞侧压力Pn=%5.4f\n",Pn);
printf("连杆力Pt=%5.4f\n",Pt);
printf("切向力t=%5.4f\n",t);
printf("径向力k=%5.4f\n",k);
double kr1,Pqx,Pqy,Pq,Pqx1,Pqy1,aq1,aq;
kr1=mb*r*w*w/A;
Pqx=kr1-k;
Pqy=t;
Pq=sqrt(Pqx*Pqx+Pqy*Pqy);
Pqx1=function(Pqx);
Pqy1=function(Pqy);
aq1=atan(fabs(Pqy/Pqx));
aq=(1-Pqx1)*90+Pqx1*Pqy1*aq1*180/PI;
printf("连杆轴颈正反切角度及负荷:aq=%5.4f,Pq=%5.4f\n",aq,Pq);
double Pp,ap;
Pp=Pq;//连杆轴承负荷
ap=aq+180+b*180/PI+B*180/PI;
printf("连杆轴承正反切角度及负荷:aq=%5.4f,Pp=%5.4f\n",ap,Pp);
double Pc,ac;
double krk,Pzx,Pzy,Pz,Pzx1,Pzy1,az1,az;
krk=mk*r*w*w/A;
Pzx=-0.5*(Pqx+krk);
Pzy=-0.5*t;
Pz=sqrt(Pzx*Pzx+Pzy*Pzy);
Pzx1=function(Pzx);
Pzy1=function(Pzy);
az1=atan(fabs(Pzy/Pzx));
az=(1-Pzx1)*90+Pzx1*Pzy1*az1*180/PI;
printf("第一主轴颈角度及负荷:az=%5.4f,Pz=%5.4f\n",az,Pz);
Pc=Pz;
ac=az+180+b*180/PI;
printf("第一主轴承角度及负荷:ac=%5.4f,Pc=%5.4f\n",ac,Pc);
printf("\n");
}
return 0;
}
double function(double z)//定义符号函数
{
double N,M;
N=fabs(z);
M=z/N;
return M;
}
运行结果如下
曲柄转角(度)b= 0.00
缸内气体压力(MPa)pg1=0.0857
连杆摆动角位移B=-0.03
连杆摆动角速度w1= 0.27
活塞位移x=0.0000
活塞速度v=-0.4014
活塞加速度g=3212.6539
缸内气压引起的作用力Pg=-0.0153
往复惯性力Pi=-0.8716
活塞上的总作用力P=-0.8869
活塞侧压力Pn=0.0296
连杆力Pt=-0.8874
切向力t=0.0296
径向力k=-0.8869
连杆轴颈正反切角度及负荷:aq=1.2668,Pq=1.3381
连杆轴承正反切角度及负荷:aq=179.3565,Pp=1.3381
第一主轴颈角度及负荷:az=189.8553,Pz=0.0864
第一主轴承角度及负荷:ac=369.8553,Pc=0.0864