📄 performance.c
字号:
#include <REG54.H>
#include "rc7860.h"
#include "f2rc7860.h"
#include "se0111.h"
#include "cmd_para_save.h"
//extern unsigned char xdata sec1_flg; //每秒定时标志位
extern unsigned char xdata intflg_MCBA; //MCB的A口中断标志位
extern unsigned char xdata intflg_MCBB; //MCB的B口中断标志位
extern unsigned char xdata intflg_OTBA; //OTB的A口中断标志位
extern unsigned char xdata intflg_OTBB; //OTB的B口中断标志位
extern unsigned char xdata check_alarm_mcb[5]; //查询MCB盘的其他非中断告警
extern unsigned char xdata check_alarm_otb[3]; //查询OTB盘的其他非中断告警
extern unsigned char xdata check_alarm_2M[3][21][2]; //查询2M盘的告警
extern unsigned long int xdata commandid; //表示命令代码的变量
extern unsigned char f2rc7860_rd(unsigned int f2addr) large reentrant;
extern void f2rc7860_wr(unsigned int f2addr,unsigned char value) large reentrant;
extern unsigned char se0111_reg_rd(unsigned char Haddr,unsigned char Laddr,unsigned char slot);
extern void SetResRdyTbl(unsigned char prio) large reentrant;
extern unsigned char GetResRdyTbl(unsigned char prio) large reentrant;
extern unsigned char xdata tx_buf[];
extern unsigned char xdata tx_buf_pointer;
extern bit tx_done;
extern unsigned char xdata start_flg[4];
extern unsigned char xdata board_type[4][2]; //定义插盘类型数组,第一位表示槽号,第二位表示盘号
extern unsigned char xdata timeslot_2M[3][21]; //2M时隙配置标志位,1表示配置时隙,0表示该时隙删除
unsigned int xdata B1[4] = {0,0,0,0}; //四个光口的B1误码计数值
unsigned int xdata B2[4] = {0,0,0,0}; //四个光口的B2误码计数值
unsigned long int xdata REI_MS[4] = {0,0,0,0}; //四个光口复用段REI即时性能计数值
unsigned long int xdata REI_MS_15min[4] = {0,0,0,0}; //四个光口复用段REI15分钟性能值
unsigned long int xdata REI_MS_MAX[4] = {0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}; //四个光口复用段REI15分钟门限
unsigned int xdata B3[4] = {0,0,0,0}; //四个光口的B3误码性能值
unsigned long int xdata REI_HP[4] = {0,0,0,0}; //四个光口的高阶REI即时性能计数值
unsigned long int xdata REI_HP_15min[4] = {0,0,0,0}; //四个光口的高阶REI15分钟性能值
unsigned long int xdata REI_HP_MAX[4] = {0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}; //四个光口的高阶REI15分钟性能门限
unsigned int xdata OFS[4] = {0,0,0,0};
unsigned int xdata OFS_15min[4] = {0,0,0,0};
unsigned int xdata OFS_MAX[4] = {0xFFFF,0xFFFF,0xFFFF,0xFFFF};
unsigned int xdata PJC_HP[4] = {0,0,0,0}; //高阶正指针调整事件
unsigned int xdata PJC_HP_15min[4] = {0,0,0,0};
unsigned int xdata PJC_HP_MAX[4] = {0xFFFF,0xFFFF,0xFFFF,0xFFFF};
unsigned int xdata NJC_HP[4] = {0,0,0,0}; //高阶负指针调整事件
unsigned int xdata NJC_HP_15min[4] = {0,0,0,0};
unsigned int xdata NJC_HP_MAX[4] = {0xFFFF,0xFFFF,0xFFFF,0xFFFF};
unsigned char xdata default_155M[4] = {0,0,0,0}; //四个光口的缺陷指示
unsigned char xdata EB_2M[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned long int xdata REI_2M[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned long int xdata REI_2M_15min[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned long int xdata REI_2M_MAX[3][21] = {{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF},{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF},{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}};
unsigned int xdata PJC_2M[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned int xdata PJC_2M_15min[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned int xdata PJC_2M_MAX[3][21] = {{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF},{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF},{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}};
unsigned int xdata NJC_2M[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned int xdata NJC_2M_15min[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned int xdata NJC_2M_MAX[3][21] = {{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF},{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF},{0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}};
unsigned char xdata default_2M[3][21] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
unsigned long int xdata perf_value; //保存所要查询的性能值
unsigned char xdata min15_flg = 0; //15分钟性能标志位
void get_performance(void){
//每秒取出性能值函数
unsigned int xdata temp;
unsigned char xdata dflg;
unsigned char xdata num;
unsigned char xdata portnum;
unsigned char xdata i;
unsigned char xdata j;
unsigned char xdata k;
//收集MCB盘A光口的性能值
temp = SohB1e_counth8_a; //得到B1的高8位计数值
temp = (temp << 8) + SohB1e_countl8_a; //得到B1的低8位计数值
B1[0] = temp; //将B1计数器值存入变量
if ((Intmask0_a & 0xDA) | (Intmask2_a & 0xE0) | (Intmask3_a & 0x80)){ //判断告警是否存在
dflg = 1;
}
else dflg = 0;
if (dflg | intflg_MCBA){ //判断该秒是否误块秒
default_155M[0] = 1;
}
else default_155M[0] = 0;
intflg_MCBA = 0;
temp = SohB2e_counth8_a; //得到B2的高8位计数值
temp = (temp << 8) + SohB2e_countl8_a; //得到B2的低8位计数值
B2[0] = temp; //将B2的计数值存入变量
temp = SohM1e_counth8_a; //得到M1即MS-REI的高8位计数值
temp = (temp << 8) + SohM1e_countl8_a; //得到M1即MS-REI的低8位计数值
REI_MS[0] += temp; //将M1即MS-REI的计数值存入变量
REI_MS_15min[0] += temp;
check_alarm_mcb[3] &= 0xBF; //清除告警字
if (REI_MS_15min[0] > REI_MS_MAX[0]){ //判断MS-REI是否过限
check_alarm_mcb[3] |= 0x40; //写告警字
}
temp = PohB3e_counth7_a & 0x7F; //得到B3的高7位计数值
temp = (temp << 8) + PohB3e_countl8_a; //得到B3的低8位计数值
B3[0] = temp; //将B3的计数值存入变量
temp = Pohrei_counth7_a & 0x7F; //得到HP的REI高7位计数值
temp = (temp << 8) + Pohrei_countl8_a; //得到HP的REI低8位计数值
REI_HP[0] += temp; //将HP_REI的值存入变量
REI_HP_15min[0] += temp;
check_alarm_mcb[3] &= 0xDF; //清除告警字
if (REI_HP_15min[0] > REI_HP_MAX[0]){ //判断HP-REI是否过限
check_alarm_mcb[3] |= 0x20; //写告警字
}
temp = Sohpfm_rx_a & 0x80; //得到OFS的标志位
OFS[0] += temp >> 7; //对OFS变量进行累加
OFS_15min[0] += temp >> 7;
check_alarm_mcb[3] &= 0x7F; //清除告警字
if (OFS_15min[0] > OFS_MAX[0]){ //判断OFS是否过限
check_alarm_mcb[3] |= 0x80; //写告警字
}
temp = Pjerx_count_a;
PJC_HP[0] += temp; //将正指针调整事件计数存入变量
PJC_HP_15min[0] += temp;
check_alarm_mcb[3] &= 0xEF; //清除告警字
if (PJC_HP_15min[0] > PJC_HP_MAX[0]){ //判断PJC是否过限
check_alarm_mcb[3] |= 0x10; //写告警字
}
temp = Njerx_count_a;
NJC_HP[0] += temp; //将负指针调整事件计数存入变量
NJC_HP_15min[0] += temp;
check_alarm_mcb[3] &= 0xF7; //清除告警字
if (NJC_HP_15min[0] > NJC_HP_MAX[0]){ //判断NJC是否过限
check_alarm_mcb[3] |= 0x08; //写告警字
}
//收集MCB盘B口的性能值
temp = SohB1e_counth8_b; //得到B1的高8位计数值
temp = (temp << 8) + SohB1e_countl8_b; //得到B1的低8位计数值
B1[1] = temp; //将B1计数器值存入变量
if ((Intmask0_b & 0xDA) | (Intmask2_b & 0xE0) | (Intmask3_b & 0x80)){ //判断告警是否存在
dflg = 1;
}
else dflg = 0;
if (dflg | intflg_MCBB){ //判断该秒是否误块秒
default_155M[1] = 1;
}
else default_155M[1] = 0;
intflg_MCBB = 0;
temp = SohB2e_counth8_b; //得到B2的高8位计数值
temp = (temp << 8) + SohB2e_countl8_b; //得到B2的低8位计数值
B2[1] = temp; //将B2的计数值存入变量
temp = SohM1e_counth8_b; //得到M1即MS-REI的高8位计数值
temp = (temp << 8) + SohM1e_countl8_b; //得到M1即MS-REI的低8位计数值
REI_MS[1] += temp; //将M1即MS-REI的计数值存入变量
REI_MS_15min[1] += temp;
check_alarm_mcb[4] &= 0xBF; //清除告警字
if (REI_MS_15min[1] > REI_MS_MAX[1]){ //判断MS-REI是否过限
check_alarm_mcb[4] |= 0x40; //写告警字
}
temp = PohB3e_counth7_b & 0x7F; //得到B3的高7位计数值
temp = (temp << 8) + PohB3e_countl8_b; //得到B3的低8位计数值
B3[1] = temp; //将B3的计数值存入变量
temp = Pohrei_counth7_b & 0x7F; //得到HP的REI高7位计数值
temp = (temp << 8) + Pohrei_countl8_b; //得到HP的REI低8位计数值
REI_HP[1] += temp; //将HP_REI的值存入变量
REI_HP_15min[1] += temp;
check_alarm_mcb[4] &= 0xDF; //清除告警字
if (REI_HP_15min[1] > REI_HP_MAX[1]){ //判断HP-REI是否过限
check_alarm_mcb[4] |= 0x20; //写告警字
}
temp = Sohpfm_rx_b & 0x80; //得到OFS的标志位
OFS[1] += temp >> 7; //对OFS变量进行累加
OFS_15min[1] += temp >> 7;
check_alarm_mcb[4] &= 0x7F; //清除告警字
if (OFS_15min[1] > OFS_MAX[1]){ //判断OFS是否过限
check_alarm_mcb[4] |= 0x80; //写告警字
}
temp = Pjerx_count_b;
PJC_HP[1] += temp; //将正指针调整事件计数存入变量
PJC_HP_15min[1] += temp;
check_alarm_mcb[4] &= 0xEF; //清除告警字
if (PJC_HP_15min[1] > PJC_HP_MAX[1]){ //判断PJC是否过限
check_alarm_mcb[4] |= 0x10; //写告警字
}
temp = Njerx_count_b;
NJC_HP[1] += temp; //将负指针调整事件计数存入变量
NJC_HP_15min[1] += temp;
check_alarm_mcb[4] &= 0xF7; //清除告警字
if (NJC_HP_15min[1] > NJC_HP_MAX[1]){ //判断NJC是否过限
check_alarm_mcb[4] |= 0x08; //写告警字
}
Rdint_clr = 0x80; //清除MCB一些计数器的值
//收集OTB盘A口的性能值
if (start_flg[0] == 0){
temp = f2rc7860_rd(F2SohB1e_counth8_a); //得到B1的高8位计数值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -