📄 ssx-m02.c
字号:
y[m]=x2;
y[m+1]=x1;
}
}
}
x1=0;
i=19;
while(i>=12)
{
x1=x1+y[i];
i--;
}
x1=x1/8;
x3=x1;
s2[j]=s1[j];
s1[j]=x3;
s4[j]=s3[j];
s3[j]=0.1*s2[j]+0.9*s4[j];
x3=s2[j]; /*2002.4.11改,应为(x3=s3[j];),但惯性太大*/
jz[j]=x3;
x4=read(j*2);
x3=x3/x4;
x3=x3*4095;
fshc[j]=x3;
}
}
/*==========================================================================================*/
void pid()
{
float data xx1,xx2,xx3;
unsigned int data xx4;
/*-------------------------------------单回路2----------------------------------------------*/
if((jshhc[0]==1)||(jshhc[0]==2))
{
if(dshbit==1)
{
if(jshhc[0]==1){dshbit=0;}
if(jshhc[14]==0) /*手自动2:1--手动*/
{
bz2=1;
te2=te1;
te1=tde;
if(jshhc[18]==1) /*外给定2*/
{tde=fshc[2]-fshc[3];} /*tde=PV2-SV2*/
else{
xx1=jshhc[2]; /*是内给定2*/
xx1=xx1/1000;
xx2=4095*0.8;
xx1=xx1*xx2;
xx1=xx1+4095*0.2;
tde=xx1;
tde=fshc[2]-tde;
}
if(qsh2==0)
{
qsh2=1;
tel1=fshc[2];
}
tel2=tel1;
tel1=fshc[2];
tel2=tel1-tel2; /*dPV2*/
xx2=tde+te2-2*te1;
xx1=jshhc[8]; /*10*Td2*/
xx1=xx1/10; /*Td2是微分时间*/
xx3=1; /*10*T2(其中,T2是采样时间(100ms),10是M微分增益)*/
xx3=xx1+xx3; /*Td2+10*T2*/
xx3=xx1/xx3; /*Td2/(Td2+10*T2)*/
xx1=xx2*xx3; /*Td2*(tde+te2-2*te1)/(Td2+10*T2)*/
xx3=1; /*10*T2*/
xx2=jshhc[8]; /*10*Td2*/
xx2=xx2+xx3; /*10*(T2+Td2)*/
xx2=xx3/xx2; /*T2/(T2+Td2)*/
xx2=xx2/10; /*T2/(10*(T2+Td2))*/
xx2=xx2*tf1; /*tf1*T2/(10*(T2+Td2))*/
xx2=xx2+xx1; /*Td2*(tde+te2-2*te1)/(Td2+10*T2)+tf1*T2/(10*(T2+Td2))*/
tf1=xx2; /*tf1=Td2*(tde+te2-2*te1)/(Td2+10*T2)+tf1*T2/(10*(T2+Td2))*/
xx2=xx2+tel2; /*tf1+dPV2*/
xx1=jshhc[6]; /*10*Ti2(Ti2是积分时间)*/
xx1=xx1/10;
xx3=1; /*10*T2*/
xx1=xx3/xx1; /*10*T2/Ti2*/
xx1=xx1/10;
xx3=tde; /*PV2-SV2*/
xx1=xx1*xx3; /*tde*T2/Ti2*/
xx2=xx2+xx1; /*tf1+dPV2+tde*T2/Ti2*/
xx1=jshhc[4]; /*10*P2*/
xx1=1000/xx1; /*100/P2*/
xx1=xx1*xx2; /*MV2=(100/p2)*(tf1+dPV2+tde*T2/Ti2)*/
xx2=read(4);
xx2=xx2*0.8; /*(PH2-PL2)*/
xx1=xx1/xx2; /*MV2/(PH2-PL2)*/
xx2=read(12); /*1V输出校准值*/
xx3=read(14); /*5V输出校准值*/
xx2=xx3-xx2;
xx1=xx1*xx2; /*阀位输出变化值(数字量)*/
if(jshhc[16]==0) /*正反作用2:0--正*/
{
shchf2=shchf2+xx1;
}
else{
shchf2=shchf2-xx1;
}
xx2=read(14);
xx3=read(12);
/*xx2=xx2-xx3;
xx2=xx2*0.05;
xx3=xx3-xx2;*/
if(shchf2<xx3){shchf2=xx3;}
/*xx1=read(14);
xx2=xx1+xx2;*/
if(shchf2>xx2){shchf2=xx2;}
}
else{
if(bz2==1)
{
bz2=0;
xx1=read(14);
xx2=read(12);
xx1=xx1-xx2;
xx2=shchf2-xx2;
xx2=xx2/xx1;
if(xx2<0){xx2=0;}
if(xx2>1){xx2=1;}
xx2=xx2*1000;
jshhc[12]=xx2;
}
if(jshhc[12]!=haz2)
{
qsh2=0;
haz2=jshhc[12];
xx2=jshhc[12];
xx2=xx2/1000;
xx1=read(14);
xx3=read(12);
xx1=xx1-xx3;
xx1=xx1*xx2;
xx3=read(12);
xx1=xx1+xx3;
shchf2=xx1;
}
xx1=read(14);
xx2=read(12);
if(shchf2>xx1){shchf2=xx1;}
if(shchf2<xx2){shchf2=xx2;}
}
xx1=shchf2;
xx3=read(14);
xx2=read(12);
xx3=xx3-xx2;
xx1=xx1-xx2;
xx1=xx1/xx3;
xx1=xx1*1000;
fshc[5]=xx1;
xx4=shchf2;
if(jshhc[0]==2){xx4=xx4|0x1000;}
if(jshhc[0]==1){xx4=xx4;}
d_a(xx4);
}
}
/*-------------------------------------单回路1----------------------------------------------*/
if((jshhc[0]==0)||(jshhc[0]==2))
{
if(dshbit==1)
{
dshbit=0;
if(jshhc[13]==0) /*手自动1:1--手动*/
{
bz1=1;
de2=de1;
de1=dde;
if(jshhc[17]==1) /*外给定1*/
{dde=fshc[0]-fshc[1];} /*dde=PV1-SV1*/
else{
xx1=jshhc[1]; /*是内给定1*/
xx1=xx1/1000;
xx2=4095*0.8;
xx1=xx1*xx2;
xx1=xx1+4095*0.2;
dde=xx1;
dde=fshc[0]-dde;
}
if(qsh1==0)
{
qsh1=1;
cel1=fshc[0];
}
cel2=cel1;
cel1=fshc[0];
cel2=cel1-cel2; /*dPV1*/
xx2=dde+de2-2*de1;
xx1=jshhc[7]; /*10*Td1*/
xx1=xx1/10; /*Td1是微分时间*/
xx3=1; /*10*T1(其中,T1是采样时间(100ms),10是M微分增益)*/
xx3=xx1+xx3; /*Td1+10*T1*/
xx3=xx1/xx3; /*Td1/(Td1+10*T1)*/
xx1=xx2*xx3; /*Td1*(dde+de2-2*de1)/(Td1+10*T1)*/
xx3=1; /*10*T1*/
xx2=jshhc[7]; /*10*Td1*/
xx2=xx2+xx3; /*10*(T1+Td1)*/
xx2=xx3/xx2; /*T1/(T1+Td1)*/
xx2=xx2/10; /*T1/(10*(T1+Td1))*/
xx2=xx2*df1; /*df1*T1/(10*(T1+Td1))*/
xx2=xx2+xx1; /*Td1*(dde+de2-2*de1)/(Td1+10*T1)+df1*T1/(10*(T1+Td))*/
df1=xx2; /*df1=Td1*(dde+de2-2*de1)/(Td1+10*T1)+df1*T1/(10*(T1+Td))*/
xx2=xx2+cel2; /*df1+dPV1*/
xx1=jshhc[5]; /*10*Ti1(Ti是积分时间)*/
xx1=xx1/10;
xx3=1; /*10*T1*/
xx1=xx3/xx1; /*10*T1/Ti1*/
xx1=xx1/10;
xx3=dde; /*PV1-SV1*/
xx1=xx1*xx3; /*dde*T1/Ti1*/
xx2=xx2+xx1; /*df1+dPV1+dde*T1/Ti1*/
xx1=jshhc[3]; /*10*P1*/
xx1=1000/xx1; /*100/P1*/
xx1=xx1*xx2; /*MV1=(100/p1)*(df1+dPV1+dde*T1/Ti1)*/
xx2=read(0);
xx2=xx2*0.8; /*(PH1-PL1)*/
xx1=xx1/xx2; /*MV1/(PH1-PL1)*/
xx2=read(8); /*1V输出校准值*/
xx3=read(10); /*5V输出校准值*/
xx2=xx3-xx2;
xx1=xx1*xx2; /*阀位输出变化值(数字量)*/
if(jshhc[15]==0) /*正反作用1:0--正*/
{
shchf1=shchf1+xx1;
}
else{
shchf1=shchf1-xx1;
}
xx2=read(10);
xx3=read(8);
/*xx2=xx2-xx3;
xx2=xx2*0.05;
xx3=xx3-xx2;*/
if(shchf1<xx3){shchf1=xx3;}
/*xx1=read(10);
xx2=xx1+xx2;*/
if(shchf1>xx2){shchf1=xx2;}
}
else{
if(bz1==1)
{
bz1=0;
xx1=read(10);
xx2=read(8);
xx1=xx1-xx2;
xx2=shchf1-xx2;
xx2=xx2/xx1;
if(xx2<0){xx2=0;}
if(xx2>1){xx2=1;}
xx2=xx2*1000;
jshhc[11]=xx2;
}
if(jshhc[11]!=haz1)
{
qsh1=0;
haz1=jshhc[11];
xx2=jshhc[11];
xx2=xx2/1000;
xx1=read(10);
xx3=read(8);
xx1=xx1-xx3;
xx1=xx1*xx2;
xx3=read(8);
xx1=xx1+xx3;
shchf1=xx1;
}
xx1=read(10);
xx2=read(8);
if(shchf1>xx1){shchf1=xx1;}
if(shchf1<xx2){shchf1=xx2;}
}
xx1=shchf1;
xx3=read(10);
xx2=read(8);
xx3=xx3-xx2;
xx1=xx1-xx2;
xx1=xx1/xx3;
xx1=xx1*1000;
fshc[4]=xx1;
xx4=shchf1;
xx4=xx4|0x8000;
d_a(xx4);
}
}
/*-------------------------------------串级控制---------------------------------------------*/
if(jshhc[0]==3)
{
if(dshbit==1)
{
dshbit=0;
/*++++++++++++++++++++++++++++++++++++主控制回路++++++++++++++++++++++++++++++++++++++++++++*/
if(jshhc[14]==0) /*手自动2:1--手动*/
{
bz2=1;
te2=te1;
te1=tde;
if(jshhc[18]==1) /*外给定2*/
{tde=fshc[2]-fshc[3];} /*tde=PV2-SV2*/
else{
xx1=jshhc[2]; /*是内给定2*/
xx1=xx1/1000;
xx2=4095*0.8;
xx1=xx1*xx2;
xx1=xx1+4095*0.2;
tde=xx1;
tde=fshc[2]-tde;
}
if(qsh2==0)
{
qsh2=1;
tel1=fshc[2];
}
tel2=tel1;
tel1=fshc[2];
tel2=tel1-tel2; /*dPV2*/
xx2=tde+te2-2*te1;
xx1=jshhc[8]; /*10*Td2*/
xx1=xx1/10; /*Td2是微分时间*/
xx3=1; /*10*T2(其中,T2是采样时间(100ms),10是M微分增益)*/
xx3=xx1+xx3; /*Td2+10*T2*/
xx3=xx1/xx3; /*Td2/(Td2+10*T2)*/
xx1=xx2*xx3; /*Td2*(tde+te2-2*te1)/(Td2+10*T2)*/
xx3=1; /*10*T2*/
xx2=jshhc[8]; /*10*Td2*/
xx2=xx2+xx3; /*10*(T2+Td2)*/
xx2=xx3/xx2; /*T2/(T2+Td2)*/
xx2=xx2/10; /*T2/(10*(T2+Td2))*/
xx2=xx2*tf1; /*tf1*T2/(10*(T2+Td2))*/
xx2=xx2+xx1; /*Td2*(tde+te2-2*te1)/(Td2+10*T2)+tf1*T2/(10*(T2+Td2))*/
tf1=xx2; /*tf1=Td2*(tde+te2-2*te1)/(Td2+10*T2)+tf1*T2/(10*(T2+Td2))*/
xx2=xx2+tel2; /*tf1+dPV2*/
xx1=jshhc[6]; /*10*Ti2(Ti2是积分时间)*/
xx1=xx1/10;
xx3=1; /*10*T2*/
xx1=xx3/xx1; /*10*T2/Ti2*/
xx1=xx1/10;
xx3=tde; /*PV2-SV2*/
xx1=xx1*xx3; /*tde*T2/Ti2*/
xx2=xx2+xx1; /*tf1+dPV2+tde*T2/Ti2*/
xx1=jshhc[4]; /*10*P2*/
xx1=1000/xx1; /*100/P2*/
xx1=xx1*xx2; /*MV2=(100/p2)*(tf1+dPV2+tde*T2/Ti2)*/
xx2=read(4);
xx2=xx2*0.8; /*(PH2-PL2)*/
xx1=xx1/xx2; /*MV2/(PH2-PL2)*/
xx2=read(12); /*1V输出校准值*/
xx3=read(14); /*5V输出校准值*/
xx2=xx3-xx2;
xx1=xx1*xx2; /*阀位输出变化值(数字量)*/
if(jshhc[16]==0) /*正反作用2:0--正*/
{
shchf2=shchf2+xx1;
}
else{
shchf2=shchf2-xx1;
}
xx2=read(14);
xx3=read(12);
if(shchf2<xx3){shchf2=xx3;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -