📄 performance.c
字号:
for (portnum = 0; portnum <= 20; portnum++){ //设置21个支路的循环体
if (check_alarm_2M[num][portnum][0] & 0xD0){ //查看支路是否有缺陷告警
default_2M[num][portnum] = 1;
}
else default_2M[num][portnum] = 0;
check_alarm_2M[num][portnum][1] &= 0xBF; //复位MS-REI告警
if (REI_2M_15min[num][portnum] > REI_2M_MAX[num][portnum]){ //判断是否过限
check_alarm_2M[num][portnum][1] |= 0x40; //写告警
}
check_alarm_2M[num][portnum][1] &= 0xEF; //复位NJC告警
if (NJC_2M_15min[num][portnum] > NJC_2M_MAX[num][portnum]){ //判断是否过限
check_alarm_2M[num][portnum][1] |= 0x10; //写告警
}
check_alarm_2M[num][portnum][1] &= 0xDF; //复位PJC告警
if (PJC_2M_15min[num][portnum] > PJC_2M_MAX[num][portnum]){
check_alarm_2M[num][portnum][1] |= 0x20;
}
}
}
}
if (!GetResRdyTbl(18)) //设置每秒钟向MCP发送性能事件表
SetResRdyTbl(18);
}
unsigned char clear_all_performance(void){
//P00清除MCU中的所有性能值
unsigned char xdata temp;
commandid = 0x00503030;
for (temp = 0; temp <= 3; temp++){
REI_MS[temp] = 0;
REI_MS_15min[temp] = 0;
REI_HP[temp] = 0;
REI_HP_15min[temp] = 0;
OFS[temp] = 0;
OFS_15min[temp] = 0;
PJC_HP[temp] = 0;
PJC_HP_15min[temp] = 0;
NJC_HP[temp] = 0;
NJC_HP_15min[temp] = 0;
}
for (temp = 0; temp <= 20; temp++){
REI_2M[0][temp] = 0;
REI_2M_15min[0][temp] = 0;
REI_2M[1][temp] = 0;
REI_2M_15min[1][temp] = 0;
REI_2M[2][temp] = 0;
REI_2M_15min[2][temp] = 0;
PJC_2M[0][temp] = 0;
PJC_2M_15min[0][temp] = 0;
PJC_2M[1][temp] = 0;
PJC_2M_15min[1][temp] = 0;
PJC_2M[2][temp] = 0;
PJC_2M_15min[2][temp] = 0;
NJC_2M[0][temp] = 0;
NJC_2M_15min[0][temp] = 0;
NJC_2M[1][temp] = 0;
NJC_2M_15min[1][temp] = 0;
NJC_2M[2][temp] = 0;
NJC_2M_15min[2][temp] = 0;
}
if (!GetResRdyTbl(1))
SetResRdyTbl(1);
return (0);
}
unsigned char clear_one_perf_15min(struct cmd_para_save *set_performance){
//P01清除某一指定的15分钟性能值
unsigned char xdata boardid;
unsigned char xdata portid;
unsigned char xdata timeid;
unsigned char xdata codeid;
unsigned char xdata returnvalue;
commandid = 0x00503031;
boardid = set_performance -> perfor_reset_board_15min;
portid = set_performance -> perfor_reset_port_15min;
timeid = set_performance -> perfor_reset_slot_15min;
codeid = set_performance -> perfor_reset_code_15min;
switch (boardid){
case 5: switch (codeid){ //MCB盘
case 39:REI_MS_15min[portid - 1] = 0;
returnvalue = 0;
break;
case 9: OFS_15min[portid - 1] = 0;
returnvalue = 0;
break;
case 60:REI_HP_15min[portid - 1] = 0;
returnvalue = 0;
break;
case 63:PJC_HP_15min[portid - 1] = 0;
returnvalue = 0;
break;
case 64:NJC_HP_15min[portid - 1] = 0;
returnvalue = 0;
break;
default:returnvalue = 2;
break;
}
break;
case 4: switch (codeid){ //OTB盘
case 39:REI_MS_15min[portid + 1] = 0;
returnvalue = 0;
break;
case 9: OFS_15min[portid + 1] = 0;
returnvalue = 0;
break;
case 60:REI_HP_15min[portid + 1] = 0;
returnvalue = 0;
break;
case 63:PJC_HP_15min[portid + 1] = 0;
returnvalue = 0;
break;
case 64:NJC_HP_15min[portid + 1] = 0;
returnvalue = 0;
break;
default:returnvalue = 2;
break;
}
break;
case 3:
case 2:
case 1: switch(codeid){ //2M盘
case 85:REI_2M_15min[boardid - 1][portid - 1] = 0;
returnvalue = 0;
break;
case 88:PJC_2M_15min[boardid - 1][portid - 1] = 0;
returnvalue = 0;
break;
case 89:NJC_2M_15min[boardid - 1][portid - 1] = 0;
returnvalue = 0;
break;
default:returnvalue = 2;
break;
}
break;
default:returnvalue = 2;
break;
}
if (!GetResRdyTbl(1))
SetResRdyTbl(1);
return (returnvalue);
}
void report_15min_port(unsigned char bufnum,unsigned char port){
//上报某一光口的15分钟性能值
unsigned char xdata value;
value = (unsigned char) ((OFS_15min[port] & 0xF000) >> 12); //发送OFS的性能值
if (value > 9){
tx_buf[bufnum] = value + 0x37;
}
else tx_buf[bufnum] = value + 0x30;
value = (unsigned char) ((OFS_15min[port] & 0x0F00) >> 8);
if (value > 9){
tx_buf[bufnum + 1] = value + 0x37;
}
else tx_buf[bufnum + 1] = value + 0x30;
value = (unsigned char) ((OFS_15min[port] & 0x00F0) >> 4);
if (value > 9){
tx_buf[bufnum + 2] = value + 0x37;
}
else tx_buf[bufnum + 2] = value + 0x30;
value = (unsigned char) (OFS_15min[port] & 0x000F);
if (value > 9){
tx_buf[bufnum + 3] = value + 0x37;
}
else tx_buf[bufnum + 3] = value + 0x30;
OFS_15min[port] = 0;
value = (unsigned char) ((REI_MS_15min[port] & 0xF0000000) >> 28); //发送复用段的REI性能值
if (value > 9){
tx_buf[bufnum + 4] = value + 0x37;
}
else tx_buf[bufnum + 4] = value + 0x30;
value = (unsigned char) ((REI_MS_15min[port] & 0x0F000000) >> 24);
if (value > 9){
tx_buf[bufnum + 5] = value + 0x37;
}
else tx_buf[bufnum + 5] = value + 0x30;
value = (unsigned char) ((REI_MS_15min[port] & 0x00F00000) >> 20);
if (value > 9){
tx_buf[bufnum + 6] = value + 0x37;
}
else tx_buf[bufnum + 6] = value + 0x30;
value = (unsigned char) ((REI_MS_15min[port] & 0x000F0000) >> 16);
if (value > 9){
tx_buf[bufnum + 7] = value + 0x37;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -