⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 performance.c

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 C
📖 第 1 页 / 共 5 页
字号:

		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 + -