📄 bp.c
字号:
#include "iec103.h"
#include "bp.h"
extern SENDDEF SendDef;
extern RCVDEF RcvDef;
extern IECDEF *pIECDEF[MaxIECNum],*pIEC;
extern int Enqflag;
extern SysDef *pSysDef;
BP_PL1_Proc(addr)
unsigned char addr;
{
alarm_msg Alarm_Msg;
audio_msg Audio;
unsigned char i,typeid,funtype,infno,dot,width,*p;
char mstr[32],str[128],pStr[128];
int audio,ms,x,grp;
Alarm_Msg.alarm = 1;
Alarm_Msg.log = 1;
Alarm_Msg.n = 0;
Alarm_Msg.state = 0x80;
Alarm_Msg.data1 = 0;
Alarm_Msg.data2 = 0;
Alarm_Msg.data3 = 0;
typeid = RcvDef.Buf[6];
funtype = RcvDef.Buf[10];
infno = RcvDef.Buf[11];
switch (typeid)
{
case M_TTM_TA:
if( RcvDef.Buf[8] != COT_SPN ) break;
Alarm_Msg.hour = RcvDef.Buf[16] & 0x3f;
Alarm_Msg.minute = RcvDef.Buf[15] & 0x3f;
Alarm_Msg.second = (RcvDef.Buf[14]*256+RcvDef.Buf[13])/1000;
Alarm_Msg.ms = ((RcvDef.Buf[14]*256+RcvDef.Buf[13])%1000)*10;
strcpy(Alarm_Msg.alarm_tag,((char *)pSysDef+(int)pIECDEF[addr]->alarmtag));
switch( pIECDEF[addr]->IODef.CONNECTTYPE )
{
case mBP2A:
for( i=0;i<sizeof(Bp2a_Event)/sizeof(EVTALM);i++ )
if( Bp2a_Event[i].index == infno ) break;
strcpy(pStr,Bp2a_Event[i].text);
audio=Bp2a_Event[infno].audio;
if (Bp2a_Event[infno].dpi==0) {
if (RcvDef.Buf[12]==2) strcpy(str," ");
else if (RcvDef.Buf[12]==1) strcpy(str,"恢复");
else strcpy(str,"无效");
}
else if (Bp2a_Event[infno].dpi==1) {
if (RcvDef.Buf[12]==2) strcpy(str,"跳闸");
else if (RcvDef.Buf[12]==1) strcpy(str,"合闸");
else strcpy(str,"无效");
}
else if (Bp2a_Event[infno].dpi==2) {
if (RcvDef.Buf[12]==2) strcpy(str,"动作");
else if (RcvDef.Buf[12]==1) strcpy(str,"复归");
else strcpy(str,"无效");
}
break;
case mBP2B:
printf("size=%d\n",sizeof(Bp2b_Event)/sizeof(EVTALM));
for( i=0;i<sizeof(Bp2b_Event)/sizeof(EVTALM);i++ )
if( Bp2b_Event[i].index == infno ) break;
strcpy(pStr,Bp2b_Event[i].text);
audio=Bp2b_Event[infno].audio;
if (Bp2b_Event[infno].dpi==0) {
if (RcvDef.Buf[12]==2) strcpy(str," ");
else if (RcvDef.Buf[12]==1) strcpy(str,"恢复");
else strcpy(str,"无效");
}
else if (Bp2b_Event[infno].dpi==1) {
if (RcvDef.Buf[12]==2) strcpy(str,"跳闸");
else if (RcvDef.Buf[12]==1) strcpy(str,"合闸");
else strcpy(str,"无效");
}
else if (Bp2b_Event[infno].dpi==2) {
if (RcvDef.Buf[12]==2) strcpy(str,"动作");
else if (RcvDef.Buf[12]==1) strcpy(str,"复归");
else strcpy(str,"无效");
}
break;
default:
break;
}
sprintf(Alarm_Msg.msg,"%s%s%s",
((char *)pSysDef+(int)pIECDEF[addr]->FB.pDescript),pStr,str);
build_alarm(&Alarm_Msg,0);
Audio.audio_no =audio;
audio_alarm(&Audio);
break;
case M_TMR_TA:
if( RcvDef.Buf[8] != COT_SPN ) break;
Alarm_Msg.hour = RcvDef.Buf[20] & 0x3f;
Alarm_Msg.minute = RcvDef.Buf[19] & 0x3f;
Alarm_Msg.second = (RcvDef.Buf[18]*256+RcvDef.Buf[17])/1000;
Alarm_Msg.ms = ((RcvDef.Buf[18]*256+RcvDef.Buf[17])%1000)*10;
strcpy(Alarm_Msg.alarm_tag,(char *)pSysDef+(int)pIECDEF[addr]->alarmtag);
switch( pIECDEF[addr]->IODef.CONNECTTYPE )
{
case mBP2A:
for( i=0;i<sizeof(Bp2a_Event)/sizeof(EVTALM);i++ )
if( Bp2a_Event[i].index == infno ) break;
strcpy(pStr,Bp2a_Event[i].text);
audio=Bp2a_Event[infno].audio;
if (Bp2a_Event[infno].dpi==0) {
if (RcvDef.Buf[12]==2) strcpy(str," ");
else if (RcvDef.Buf[12]==1) strcpy(str,"恢复");
else strcpy(str,"无效");
}
else if (Bp2a_Event[infno].dpi==1) {
if (RcvDef.Buf[12]==2) strcpy(str,"跳闸");
else if (RcvDef.Buf[12]==1) strcpy(str,"合闸");
else strcpy(str,"无效");
}
else if (Bp2a_Event[infno].dpi==2) {
if (RcvDef.Buf[12]==2) strcpy(str,"动作");
else if (RcvDef.Buf[12]==1) strcpy(str,"复归");
else strcpy(str,"无效");
}
break;
case mBP2B:
for( i=0;i<sizeof(Bp2b_Event)/sizeof(EVTALM);i++ )
if( Bp2b_Event[i].index == infno ) break;
strcpy(pStr,Bp2b_Event[i].text);
audio=Bp2b_Event[infno].audio;
if (Bp2b_Event[infno].dpi==0) {
if (RcvDef.Buf[12]==2) strcpy(str," ");
else if (RcvDef.Buf[12]==1) strcpy(str,"恢复");
else strcpy(str,"无效");
}
else if (Bp2b_Event[infno].dpi==1) {
if (RcvDef.Buf[12]==2) strcpy(str,"跳闸");
else if (RcvDef.Buf[12]==1) strcpy(str,"合闸");
else strcpy(str,"无效");
}
else if (Bp2b_Event[infno].dpi==2) {
if (RcvDef.Buf[12]==2) strcpy(str,"动作");
else if (RcvDef.Buf[12]==1) strcpy(str,"复归");
else strcpy(str,"无效");
}
break;
default:
break;
}
ms = (RcvDef.Buf[14]*256+RcvDef.Buf[13])/1000;
sprintf(Alarm_Msg.msg,"%s%s%s(相对时间%dms)",
((char *)pSysDef+(int)pIECDEF[addr]->FB.pDescript),pStr,str,ms);
build_alarm(&Alarm_Msg,0);
Audio.audio_no =audio;
audio_alarm(&Audio);
break;
case M_GD_NTA:
grp = RcvDef.Buf[14];
p=(unsigned char *)&RcvDef.Buf[14];
for (i=0; i<RcvDef.Buf[13]; i++) {
dot=*(++p);
p += 3;
width=*p;
p += 2;
if( (RcvDef.Buf[13]&0x80) == 0 ) pIECDEF[addr]->PAD1 = 1;
if (width==1) {
switch( grp ){
case 0:
pIECDEF[addr]->SET[dot] = (float)(*p);
break;
case 1:
pIECDEF[addr]->SET1[dot] = (float)(*p);
break;
case 2:
pIECDEF[addr]->SET2[dot] = (float)(*p);
break;
case 3:
pIECDEF[addr]->SET3[dot] = (float)(*p);
break;
case 4:
pIECDEF[addr]->SET4[dot] = (float)(*p);
break;
case 5:
pIECDEF[addr]->SET5[dot] = (float)(*p);
break;
case 6:
pIECDEF[addr]->SET6[dot] = (float)(*p);
break;
case 7:
pIECDEF[addr]->SET7[dot] = (float)(*p);
break;
default:
break;
}
}
else if (width==2) {
x = *p;
x = ((*(p+1))*256 + x);
switch( grp ){
case 0:
pIECDEF[addr]->SET[dot] = ((float) x)/100.0;
break;
case 1:
pIECDEF[addr]->SET1[dot] = ((float) x)/100.0;
break;
case 2:
pIECDEF[addr]->SET2[dot] = (float) x;
break;
case 3:
pIECDEF[addr]->SET3[dot] = ((float) x)/100.0;
break;
case 4:
pIECDEF[addr]->SET4[dot] = ((float) x)/100.0;
break;
case 5:
pIECDEF[addr]->SET5[dot] = ((float) x)/100.0;
break;
case 6:
pIECDEF[addr]->SET6[dot] = ((float) x)/100.0;
break;
case 7:
pIECDEF[addr]->SET7[dot] = ((float) x)/100.0;
break;
default:
break;
}
}
else if (width==4) {
switch( grp ){
case 0:
pIECDEF[addr]->SET[dot] = *((float*) p);
break;
case 1:
pIECDEF[addr]->SET1[dot] = *((float*) p);
break;
case 2:
pIECDEF[addr]->SET2[dot] = *((float*) p);
break;
case 3:
pIECDEF[addr]->SET3[dot] = *((float*) p);
break;
case 4:
pIECDEF[addr]->SET4[dot] = *((float*) p);
break;
case 5:
pIECDEF[addr]->SET5[dot] = *((float*) p);
break;
case 6:
pIECDEF[addr]->SET6[dot] = *((float*) p);
break;
case 7:
pIECDEF[addr]->SET7[dot] = *((float*) p);
break;
default:
break;
}
}
p += width;
}
break;
default:
break;
}
}
BP_PL2_Proc(addr)
unsigned char addr;
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -