📄 cdt1.c
字号:
//--------------------CDT规约处理-------------------------------
void cdt_cl(void)
{
if(cdt_rc!=0)
{
if(cdt_time_mark>10)
{
cdt_rec_cl();
}
}
if (cdt_tmark_a0==0)
{
switch (cdt_zcj)
{
case 0x00:
switch (cdt_zxj)
{
case 0x00:
sjch(); //soe
break;
case 0x01:
sjdd();//电度
break;
default :
if (cdt_bz_a0==1) {sjsoe();}
else {sjzz12();}
}
break;
default : sjbw();
}
cdt_tmark_a0=1;
}
if ((run_mark_a1==1)&&(run_mark_a0==0))
{
if(com_int_tmout[1]>3)
{
//PDR5_P51=0;//03-1-12
//__wait_nop();
//__wait_nop();
//PDR5_P51=1;
com_int_tmout[1]=0;
init_com1();
ICR02=6;
}
}
}
/*********大循环完成*********/
void sjch (void)
{
if(soe_in_pointer!=soe_out_pointer) cdt_soejs=3;
cdt_f_cl();
if(cdt_yc_num>8) cdt_yc_num=8;
cdt_zxj=zcou[cdt_yc_num];
cdt_zmark=zbzz[cdt_yc_num];
cdt_zxcount=0;
sjzz12();
}
/*********电度*********/
void sjdd (void)
{
IO_WORD a;
if(cdt_bz_a1==1) ////定时电度标志
{
a=com1_para(16);
a=(a<<8)+com1_para(15);
cdt_dd_num=a;
if(a>64) a=64;
cdt_zlmark=0x46;
cdt_zxcount++;
cdt_zcj=a;
cdt_gong=0xa0;
cdt_sjta=(__far IO_BYTE*) (&dd_2l_1(0));
com1_tl(cdt_in_counter,0)=com1_para(4);
com1_tl(cdt_in_counter,1)=com1_para(5);
com1_tl(cdt_in_counter,2)=com1_para(4);
com1_tl(cdt_in_counter,3)=com1_para(5);
com1_tl(cdt_in_counter,4)=com1_para(4);
com1_tl(cdt_in_counter,5)=com1_para(5);
com1_tl(cdt_in_counter,6)=ddzz[0];
com1_tl(cdt_in_counter,7)=ddzz[1];
com1_tl(cdt_in_counter,8)=cdt_zcj;
com1_tl(cdt_in_counter,9)=com1_para(8);//ddzz[3];
com1_tl(cdt_in_counter,10)=ddzz[4];
com1_tl(cdt_in_counter,11)=bch(6);
cdt_tc[cdt_in_counter]=12;
cdt_in_counter^=0x01;
cdt_zxj--;
cdt_bz_a1=0;//////清电度标志
cdt_dd_time=0;
}
else
{
sjzz12();
}
}
/**********组变位*********/
void sjyxbw(void)
{
com1_tl(cdt_in_counter,0)=cdt_cos_data(cos_out_pointer+0);
com1_tl(cdt_in_counter,1)=cdt_cos_data(cos_out_pointer+1);
com1_tl(cdt_in_counter,2)=cdt_cos_data(cos_out_pointer+2);
com1_tl(cdt_in_counter,3)=cdt_cos_data(cos_out_pointer+3);
com1_tl(cdt_in_counter,4)=cdt_cos_data(cos_out_pointer+4);
com1_tl(cdt_in_counter,5)=bch(0);
com1_tl(cdt_in_counter,6)=cdt_cos_data(cos_out_pointer+0);
com1_tl(cdt_in_counter,7)=cdt_cos_data(cos_out_pointer+1);
com1_tl(cdt_in_counter,8)=cdt_cos_data(cos_out_pointer+2);
com1_tl(cdt_in_counter,9)=cdt_cos_data(cos_out_pointer+3);
com1_tl(cdt_in_counter,10)=cdt_cos_data(cos_out_pointer+4);
com1_tl(cdt_in_counter,11)=bch(6);
com1_tl(cdt_in_counter,12)=cdt_cos_data(cos_out_pointer+0);
com1_tl(cdt_in_counter,13)=cdt_cos_data(cos_out_pointer+1);
com1_tl(cdt_in_counter,14)=cdt_cos_data(cos_out_pointer+2);
com1_tl(cdt_in_counter,15)=cdt_cos_data(cos_out_pointer+3);
com1_tl(cdt_in_counter,16)=cdt_cos_data(cos_out_pointer+4);
com1_tl(cdt_in_counter,17)=bch(12);
cos_out_pointer+=6;
if (cos_out_pointer>=600) cos_out_pointer=0;
cdt_gong+=3;
cdt_zcj-=3;
cdt_tc[cdt_in_counter]=18;
cdt_in_counter^=0x01;
cdt_sjta+=12;
}
void ykfj_cl(void)
{
if (cdt_ykmark&01)
{
if (cdt_zlmark==0x44) {sjzz6();return;}
if (cdt_zcj<=2) {sjzz6();return;}
com1_tl(cdt_in_counter,0)=0xe1;
com1_tl(cdt_in_counter,1)=yk_xz;
com1_tl(cdt_in_counter,2)=yk_dx;
com1_tl(cdt_in_counter,3)=yk_xz;
com1_tl(cdt_in_counter,4)=yk_dx;
com1_tl(cdt_in_counter,5)=bch(0);
com1_tl(cdt_in_counter,6)=0xe1;
com1_tl(cdt_in_counter,7)=yk_xz;
com1_tl(cdt_in_counter,8)=yk_dx;
com1_tl(cdt_in_counter,9)=yk_xz;
com1_tl(cdt_in_counter,10)=yk_dx;
com1_tl(cdt_in_counter,11)=bch(6);
com1_tl(cdt_in_counter,12)=0xe1;
com1_tl(cdt_in_counter,13)=yk_xz;
com1_tl(cdt_in_counter,14)=yk_dx;
com1_tl(cdt_in_counter,15)=yk_xz;
com1_tl(cdt_in_counter,16)=yk_dx;
com1_tl(cdt_in_counter,17)=bch(12);
cdt_gong+=3;
cdt_zcj-=3;
cdt_tc[cdt_in_counter]=18;
cdt_in_counter^=0x01;
cdt_ykmark=0x00;
cdt_sjta+=12;
return;
}
if (cdt_ykmark&02)
{
if (cdt_zlmark==0x44) {sjzz6();return;}
if (cdt_zcj<=2) {sjzz6();return;}
com1_tl(cdt_in_counter,0)=0xe1;
com1_tl(cdt_in_counter,1)=0x00;
com1_tl(cdt_in_counter,2)=0x00;
com1_tl(cdt_in_counter,3)=yk_xz;
com1_tl(cdt_in_counter,4)=yk_dx;
com1_tl(cdt_in_counter,5)=bch(0);
com1_tl(cdt_in_counter,6)=0xe1;
com1_tl(cdt_in_counter,7)=0x00;
com1_tl(cdt_in_counter,8)=0x00;
com1_tl(cdt_in_counter,9)=yk_xz;
com1_tl(cdt_in_counter,10)=yk_dx;
com1_tl(cdt_in_counter,11)=bch(6);
com1_tl(cdt_in_counter,12)=0xe1;
com1_tl(cdt_in_counter,13)=0x00;
com1_tl(cdt_in_counter,14)=0x00;
com1_tl(cdt_in_counter,15)=yk_xz;
com1_tl(cdt_in_counter,16)=yk_dx;
com1_tl(cdt_in_counter,17)=bch(12);
cdt_gong+=3;
cdt_zcj-=3;
cdt_tc[cdt_in_counter]=18;
cdt_in_counter^=0x01;
cdt_sjta+=12;
cdt_ykmark=0x00;
return;
}
cdt_ykmark=0x00;
sjzz6();
}
void sjbw (void)
{
if (cdt_zlmark==0x46) {sjzz6();}
else
{
if (cos_out_pointer==cos_in_pointer)
{
if(cdt_ykmark&0x80)
{
ykfj_cl();
return;
}
sjzz6();
}
else
{
if(cdt_zlmark==0x44)
{
cos_out_pointer=cos_in_pointer;
sjzz6();
}
else
{
if(cdt_zcj<3)
{
sjzz6();
}
else
{
sjyxbw();
}
}
}
}
}
/*** 上行组定值 ***/
void makedz (void)
{
cdt_zcj=(dzh_len+6+3)/4;
dzh_2l_1(0)=dzh_2l_1(7);//0xa0; /* 备用 */
dzh_2l_1(2)=dzh_len-1; /* 帧长 */
dzh_2l_1(3)=dz_id; /* 模块地址 */
dzh_2l_1(5)=0x00; /* 帧计数 */
if(cdt_dzh_a3==1)
{
dzh_2l_1(1)=0x27; /*命令码:传定值回送 */
switch(dzh_len-1)
{
case 0x35:
dzh_2l_1(4)=0x00; /*装置类别:线路 */
break;
case 0x29:
dzh_2l_1(4)=0x01; /* 电容 */
break;
case 0x23:
dzh_2l_1(4)=0x02; /* 差动 */
break;
case 0x39:
dzh_2l_1(4)=0x03; /* 后备 */
break;
}
}
else if(cdt_dzh_a4==1)
{
dzh_2l_1(1)=0x28; /* 写定值回送 */
dzh_2l_1(4)=dzh_type;
}
else if(cdt_dzh_a5==1)
{
dzh_2l_1(1)=0x29; /* 读定值回送 */
switch(dzh_len-1)
{
case 0x35:
dzh_2l_1(4)=0x00; /*装置类别:线路 */
break;
case 0x29:
dzh_2l_1(4)=0x01; /* 电容 */
break;
case 0x23:
dzh_2l_1(4)=0x02; /* 差动 */
break;
case 0x39:
dzh_2l_1(4)=0x03; /* 后备 */
break;
}
}
cdt_gong=0x00;
cdt_sjta=(__far IO_BYTE*) (&dzh_2l_1(0));
com1_tl(cdt_in_counter,0)=com1_para(4);
com1_tl(cdt_in_counter,1)=com1_para(5);
com1_tl(cdt_in_counter,2)=com1_para(4);
com1_tl(cdt_in_counter,3)=com1_para(5);
com1_tl(cdt_in_counter,4)=com1_para(4);
com1_tl(cdt_in_counter,5)=com1_para(5);
com1_tl(cdt_in_counter,6)=dzhz[0];
com1_tl(cdt_in_counter,7)=dzhz[1];
com1_tl(cdt_in_counter,8)=cdt_zcj;
com1_tl(cdt_in_counter,9)=com1_para(8);//dzhz[3];
com1_tl(cdt_in_counter,10)=dzhz[4];
com1_tl(cdt_in_counter,11)=bch(6);
cdt_tc[cdt_in_counter]=12;
cdt_in_counter^=0x01;
cdt_dzh=0;//////清定值标志
}
/*********soe***********/
void sjsoe (void)
{
cdt_zlmark=0x45;
com1_tl(cdt_in_counter,0)=com1_para(4);
com1_tl(cdt_in_counter,1)=com1_para(5);
com1_tl(cdt_in_counter,2)=com1_para(4);
com1_tl(cdt_in_counter,3)=com1_para(5);
com1_tl(cdt_in_counter,4)=com1_para(4);
com1_tl(cdt_in_counter,5)=com1_para(5);
com1_tl(cdt_in_counter,6)=soez[0];
com1_tl(cdt_in_counter,7)=soez[1];
com1_tl(cdt_in_counter,8)=soez[2];
com1_tl(cdt_in_counter,9)=com1_para(8);//soez[3];
com1_tl(cdt_in_counter,10)=soez[4];
com1_tl(cdt_in_counter,11)=bch(6);
com1_tl(cdt_in_counter,12)=cdt_soe_data(soe_out_pointer+0);
com1_tl(cdt_in_counter,13)=cdt_soe_data(soe_out_pointer+1);
com1_tl(cdt_in_counter,14)=cdt_soe_data(soe_out_pointer+2);
com1_tl(cdt_in_counter,15)=cdt_soe_data(soe_out_pointer+3);
com1_tl(cdt_in_counter,16)=cdt_soe_data(soe_out_pointer+4);
com1_tl(cdt_in_counter,17)=bch(12);
com1_tl(cdt_in_counter,18)=cdt_soe_data(soe_out_pointer+6);
com1_tl(cdt_in_counter,19)=cdt_soe_data(soe_out_pointer+7);
com1_tl(cdt_in_counter,20)=cdt_soe_data(soe_out_pointer+8);
com1_tl(cdt_in_counter,21)=cdt_soe_data(soe_out_pointer+9);
com1_tl(cdt_in_counter,22)=cdt_soe_data(soe_out_pointer+10);
com1_tl(cdt_in_counter,23)=bch(18);
cdt_tc[cdt_in_counter]=24;
cdt_in_counter^=0x01;
cdt_bz_a0=0;
cdt_soejs--;
if (cdt_soejs==0)
{
cdt_soejs=0;
soe_out_pointer+=12;
if (soe_out_pointer>=1200) soe_out_pointer=0;
}
}
/************组报头**********/
void sjzz12 (void)
{
if(cdt_dzh_a7==1)
{ makedz(); }
else
{
cdt_f_cl();
cdt_zlmark=*(cdt_zxta[cdt_yc_num]+cdt_zxcount);
cdt_zxcount++;
if ((cdt_zlmark==cdt_zmark)&&(cdt_soejs!=0)) cdt_bz_a0=0x01;
cdt_zcj=cdt_f_led[cdt_zlmark-0x41];
cdt_gong=gongg[cdt_zlmark-0x41];
cdt_sjta=(__far IO_BYTE*)com_sjdz[cdt_zlmark-0x41];
com1_tl(cdt_in_counter,0)=com1_para(4);
com1_tl(cdt_in_counter,1)=com1_para(5);
com1_tl(cdt_in_counter,2)=com1_para(4);
com1_tl(cdt_in_counter,3)=com1_para(5);
com1_tl(cdt_in_counter,4)=com1_para(4);
com1_tl(cdt_in_counter,5)=com1_para(5);
com1_tl(cdt_in_counter,6)=*tbz[cdt_zlmark-0x41];
com1_tl(cdt_in_counter,7)=*(tbz[cdt_zlmark-0x41]+1);
com1_tl(cdt_in_counter,8)=cdt_zcj;
com1_tl(cdt_in_counter,9)=com1_para(8);//*(tbz[cdt_zlmark-0x41]+3);
com1_tl(cdt_in_counter,10)=*(tbz[cdt_zlmark-0x41]+4);
com1_tl(cdt_in_counter,11)=bch(6);
cdt_tc[cdt_in_counter]=12;
cdt_in_counter^=0x01;
cdt_zxj--;
}
}
/**********组信息字***********/
void sjzz6 (void)
{
if ((cdt_zcj==0x01)&&(cdt_zlmark==cdt_zmark))
{
com1_tl(cdt_in_counter,0)=0x8a;
com1_tl(cdt_in_counter,1)=zbzc[0];
com1_tl(cdt_in_counter,2)=zbzc[1];
com1_tl(cdt_in_counter,3)=zbzc[0];
com1_tl(cdt_in_counter,4)=zbzc[1];
com1_tl(cdt_in_counter,5)=bch(0);
cdt_gong++;
cdt_zcj--;
cdt_tc[cdt_in_counter]=0x06;
cdt_in_counter^=0x01;
}
else
{
com1_tl(cdt_in_counter,0)=cdt_gong++;
com1_tl(cdt_in_counter,1)=*cdt_sjta++;
com1_tl(cdt_in_counter,2)=*cdt_sjta++;
com1_tl(cdt_in_counter,3)=*cdt_sjta++;
com1_tl(cdt_in_counter,4)=*cdt_sjta++;
com1_tl(cdt_in_counter,5)=bch(0);
cdt_zcj--;
cdt_tc[cdt_in_counter]=0x06;
cdt_in_counter^=0x01;
}
}
/*********计算板数**********/
void cdt_f_cl (void)
{
IO_BYTE i,j,k;
i=0;j=0x10;
k=cdt_yc_num;
if (k>2)
{
k-=2;
if(k>6) k=6;
i=k*0x10;
}
cdt_f_led[0]=j;
cdt_f_led[1]=j;
cdt_f_led[2]=i;
k=cdt_yx_num;
if(k>16) k=16;
cdt_f_led[3]=k;
/////////////////^.^电度计算add to 03-02-12
}
void cdt_cl_num(void)
{
IO_WORD i;
i=com1_para(12);
i=(i<<8)+com1_para(11);
cdt_yc_num=(i+31)/32;
i=com1_para(14);
i=(i<<8)+com1_para(13);
cdt_yx_num=(i+31)/32;
}
/****** 下行定值接收处理 *******/
void cdt_dzhcl(IO_BYTE l)
{
IO_BYTE bh_gong,y,len;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -