📄 ssx-m02.c
字号:
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;
xx2=4095*0.8;
xx1=xx1*xx2;
xx1=xx1+4095*0.2;
fshc[5]=xx1;
/*++++++++++++++++++++++++++++++++++++副控制回路++++++++++++++++++++++++++++++++++++++++++++*/
if(jshhc[13]==0) /*手自动1:1--手动*/
{
bz1=1;
de2=de1;
de1=dde;
dde=fshc[0]-fshc[5]; /*dde=PV1-SV1*/
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+Td1))*/
df1=xx2; /*df1=Td1*(dde+de2-2*de1)/(Td1+10*T1)+df1*T1/(10*(T1+Td1))*/
xx2=xx2+cel2; /*df1+dPV1*/
xx1=jshhc[5]; /*10*Ti1(Ti1是积分时间)*/
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+dPV+dde*T1/Ti1*/
xx1=jshhc[3]; /*10*P1*/
xx1=1000/xx1; /*100/P1*/
xx1=xx1*xx2; /*MV1=(100/p1)*(df1+dPV1+de1*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(14);
xx2=read(12);
xx3=xx3-xx2;
xx1=xx1-xx2;
xx1=xx1/xx3;
xx1=xx1*1000;
fshc[4]=xx1;
xx4=shchf1;
xx4=xx4|0x8000;
d_a(xx4);
}
}
}
/*==========================================================================================*/
void gzh()
{
float xdata x1,x2;
int data ss;
if((jshhc[0]==0)||(jshhc[0]==2)||(jshhc[0]==3))
{
if(jshhc[0]==0){fshc[6]=fshc[6]&0x0f;}
x1=fshc[0];
x1=x1/4095;
if(x1>1.05){fshc[6]=fshc[6]|0x01;} /*测量1大于5.2V(20.8MA)*/
else{fshc[6]=fshc[6]&0xfe;}
if(x1<0.15){fshc[6]=fshc[6]|0x02;} /*测量1小于0.8V(3.2MA)*/
else{fshc[6]=fshc[6]&0xfd;}
if(jshhc[17]==1&&jshhc[0]!=3)
{
x1=fshc[1];
x1=x1/4095;
if(x1>1.05){fshc[6]=fshc[6]|0x04;} /*外给1大于5.2V(20.8MA)*/
else{fshc[6]=fshc[6]&0xfb;}
if(x1<0.15){fshc[6]=fshc[6]|0x08;} /*外给1小于0.8V(3.2MA)*/
else{fshc[6]=fshc[6]&0xf7;}
}
}
if((jshhc[0]==1)||(jshhc[0]==2)||(jshhc[0]==3))
{
if(jshhc[0]==1){fshc[6]=fshc[6]&0xf0;}
x1=fshc[2];
x1=x1/4095;
if(x1>1.05){fshc[6]=fshc[6]|0x10;} /*测量2大于5.2V(20.8MA)*/
else{fshc[6]=fshc[6]&0xef;}
if(x1<0.15){fshc[6]=fshc[6]|0x20;} /*测量2小于0.8V(3.2MA)*/
else{fshc[6]=fshc[6]&0xdf;}
if(jshhc[18]==1)
{
x1=fshc[3];
x1=x1/4095;
if(x1>1.05){fshc[6]=fshc[6]|0x40;} /*外给2大于5.2V(20.8MA)*/
else{fshc[6]=fshc[6]&0xbf;}
if(x1<0.15){fshc[6]=fshc[6]|0x80;} /*外给2小于0.8V(3.2MA)*/
else{fshc[6]=fshc[6]&0x7f;}
}
}
if(fshc[6]!=0){gzhd=0;}
else{gzhd=1;}
ss=fshc[6];
ss=ss/256;
if(ss!=0){gzh2=0;}
else{gzh2=1;}
ss=fshc[6];
ss=ss%256;
if(ss!=0){gzh1=0;}
else{gzh1=1;}
}
/*==========================================================================================*/
kongzhi()
{
int data x1;
char data i;
if(bjzh==1)
{
bjzh=0;
write(zhhao,16);
}
if(shchjzh==1)
{
shchjzh=0;
switch(mingling)
{
case 0:fshc[4]=735;
x1=fshc[4]|0x8000;
d_a(x1);
break;
case 1:fshc[4]=fshc[4]+1;
x1=fshc[4]|0x8000;
d_a(x1);
break;
case 2:fshc[4]=fshc[4]-1;
x1=fshc[4]|0x8000;
d_a(x1);
break;
case 3:write(fshc[4],8);
break;
case 4:fshc[4]=3660;
x1=fshc[4]|0x8000;
d_a(x1);
break;
case 5:fshc[4]=fshc[4]+1;
x1=fshc[4]|0x8000;
d_a(x1);
break;
case 6:fshc[4]=fshc[4]-1;
x1=fshc[4]|0x8000;
d_a(x1);
break;
case 7:write(fshc[4],10);
break;
case 8:fshc[5]=735;
d_a(fshc[5]);
break;
case 9:fshc[5]=fshc[5]+1;
d_a(fshc[5]);
break;
case 10:fshc[5]=fshc[5]-1;
d_a(fshc[5]);
break;
case 11:write(fshc[5],12);
break;
case 12:fshc[5]=3660;
d_a(fshc[5]);
break;
case 13:fshc[5]=fshc[5]+1;
d_a(fshc[5]);
break;
case 14:fshc[5]=fshc[5]-1;
d_a(fshc[5]);
break;
case 15:write(fshc[5],14);
break;
}
}
if(shrjzh==1)
{
ep_cs!=ep_cs;
shrjzh=0;
ad();
for(i=0;i<=3;i++)
{
write(jz[i],i*2);
rdsr();
}
}
if(tx_bzh==1)
{
tx_bzh=0;
com_bzh=rd_dat[5];
tx_js=0-9*com_bzh; /*标志=1时,38400波特,T2重装值为FFF7H*/
RCAP2H=tx_js/256;
RCAP2L=tx_js;
write(com_bzh,100);
rdsr();
}
}
/*==========================================================================================*/
main()
{
//ep_wip=1; /*2002。6。5改,打开X25045写保护,*/
//ep_cs!=ep_cs;
shamao();
TMOD=0X11; /*T0,方式1,通讯超时处理;T1,方式1,系统定时器*/
/*------------------------------------------------------------------------------------------*/
RCLK=1;
TCLK=1; /*T2做接受和发送时钟*/
EXEN2=0;
C_T2=0; /*T2为定时方式*/
CP_RL2=0;
tx_js=0-9*com_bzh; /*标志=1时,38400波特,T2重装值为FFF7H*/
RCAP2H=tx_js/256;
RCAP2L=tx_js;
TR2=1; /*11.059MHZ主振*/
/*------------------------------------------------------------------------------------------*/
TH1=-(9216/256);
TL1=-(9216%256);
TR1=1;
/*------------------------------------------------------------------------------------------*/
SCON=0X50; /*01010000B,SM0=0(D7),SM1=1(D6),工作方式选方式1,10位异步收发,波特率由定时器
;SM2=0(D5),接收到字符RI就置位;REN=1(D4),允许串行口接受;TB8=0(D3),它与
方式1无关;RB8=0(D2),为接受到的停止位;TI(D1),RI(D0)*/
/*------------------------------------------------------------------------------------------*/
EA=1; /*ES=1,允许串行口中断;EA=1,CPU开中断;ET1=1,T1开中断*/
ES=1;
PS=1;
PT0=1; /*防止串口干扰发送*/
ET1=1;
/*------------------------------------------------------------------------------------------*/
DE=0;
/*------------------------------------------------------------------------------------------*/
//ep_cs!=ep_cs;
xscs=1;
ysh();
xscs=0;
while(xseoc==0){};
chsh(0x00);
while(xseoc==0){};
chsh(0x00);
ysh();
while(1){
//ep_cs!=ep_cs;
kongzhi();
//ep_cs!=ep_cs;
ad();
if(rd_dat[1]!=9)
{
//ep_cs!=ep_cs;
pid();
}
//ep_cs!=ep_cs;
gzh();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -