📄 sanlin.c
字号:
#include "iec103.h"
#include "mcd.h"
extern SENDDEF SendDef;
extern RCVDEF RcvDef;
extern IECDEF *pIECDEF[MaxIECNum],*pIEC;
extern int Enqflag;
extern SysDef *pSysDef;
MCD_PL1_Proc(addr)
unsigned char addr;
{
alarm_msg Alarm_Msg;
unsigned char i,j,typeid,funtype,infno,dot,width,*p;
char mstr[32],str[128],pStr[128];
int audio,ms,x,grp,set_num;
unsigned short *pp,tmp;
float *f,tmpdata;
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);
if (pIECDEF[addr]->IODef.CONNECTTYPE == mMCD)
strcpy(pStr,MCDEvent[infno].text);
else return;
if(infno>(sizeof(MCDEvent)/sizeof(EVTALM))) return;
if (MCDEvent[infno].dpi==0) {
if (RcvDef.Buf[12]==1) strcpy(str,"");
else if (RcvDef.Buf[12]==0) strcpy(str,"复归");
else strcpy(str,"无效");
}
else if (MCDEvent[infno].dpi==1) {
if (RcvDef.Buf[12]==2) strcpy(str,"跳闸");
else if (RcvDef.Buf[12]==1) strcpy(str,"合闸");
else strcpy(str,"无效");
}
else if (MCDEvent[infno].dpi==2) {
if (RcvDef.Buf[12]==2) strcpy(str,"动作");
else if (RcvDef.Buf[12]==1) strcpy(str,"复归");
else strcpy(str,"无效");
}
sprintf(Alarm_Msg.msg,"%s %s%s",
((char *)pSysDef+(int)pIECDEF[addr]->FB.pDescript),pStr,str);
build_alarm(&Alarm_Msg,0);
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);
if (pIECDEF[addr]->IODef.CONNECTTYPE == mMCD)
strcpy(pStr,MCDEvent[infno].text);
else return;
if(infno>(sizeof(MCDEvent)/sizeof(EVTALM))) return;
if (MCDEvent[infno].dpi==0) {
if (RcvDef.Buf[12]==1) strcpy(str,"");
else if (RcvDef.Buf[12]==0) strcpy(str,"复归");
else strcpy(str,"无效");
}
else if (MCDEvent[infno].dpi==1) {
if (RcvDef.Buf[12]==2) strcpy(str,"跳闸");
else if (RcvDef.Buf[12]==1) strcpy(str,"合闸");
else strcpy(str,"无效");
}
else if (MCDEvent[infno].dpi==2) {
if (RcvDef.Buf[12]==2) strcpy(str,"动作");
else if (RcvDef.Buf[12]==1) strcpy(str,"复归");
else strcpy(str,"无效");
}
ms = (RcvDef.Buf[14]*256+RcvDef.Buf[13])/1000;
sprintf(Alarm_Msg.msg,"%s %s%s",
((char *)pSysDef+(int)pIECDEF[addr]->FB.pDescript),pStr,str);
build_alarm(&Alarm_Msg,0);
break;
case M_GD_NTA:
if(RcvDef.Buf[8] == COT_GRD){
grp = RcvDef.Buf[14];
set_num = RcvDef.Buf[13]&0x3f;
p=(unsigned char *)&RcvDef.Buf[15];
for (i=0; i<set_num; i++) {
dot=*p;
p += 3;
width=*p;
p += 2;
if (width==4){
/*
rReverse(p,4);
*/
pIECDEF[addr]->SET[dot] = *((float *)p);
}
else if (width==2) {
x = *p;
x = ((*(p+1))*256 + x);
pIECDEF[addr]->SET[dot] = (float) x;
}
/*
printf("SET[%d]=%f ",dot,pIECDEF[addr]->SET[dot]);
if((i+1)%4 == 0) printf("\n");
*/
p = p+width+1;
}
}
break;
default:
break;
}
}
MCD_PL2_Proc(addr)
unsigned char addr;
{
alarm_msg Alarm_Msg;
unsigned char i,j,typeid,funtype,infno,dot,width,vsqnum;
char mstr[32],str[128],pStr[128];
int audio,ms,x,grp;
unsigned short *p,tmp;
if (RcvDef.Buf[0]==LPCI_STX) {
typeid = RcvDef.Buf[6];
vsqnum = RcvDef.Buf[7];
funtype = RcvDef.Buf[10];
infno = RcvDef.Buf[11];
switch (typeid)
{
case M_TME_TA:
p = (unsigned short*)&RcvDef.Buf[12];
for(i=0;i<vsqnum;i++){
pIECDEF[addr]->VAL[i] = (float)(*p/10);
p = p+1;
}
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -