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

📄 optickettopo.cpp

📁 电力系统潮流程序adsfasdfasfd
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	vector<DevType_T> m_openDev;	vector<DevType_T> m_closeDev;	UN_MARSHAL(change_yx_pkg,m_BufBase.GetBufPtr(),m_BufBase.GetLength());	int bw_num;	int table_num;	int special_flag;	int tableno;	TKeyID keyid;	unsigned char value;	int loop;	//deal yx_change	//bw_num = change_yx_pkg.package_head.char_num;	//printf("变化遥信发送主机=======%s,发送进程=-========%s\n",m_RecvMsgHeader.src_host_name,m_RecvMsgHeader.src_proc_name);        bw_num = change_yx_pkg.char_info.length();	for(loop=0;loop<bw_num;loop++)	{		if(change_yx_pkg.char_info[loop].app_no!=g_app_no)		{			continue;		}		keyid = change_yx_pkg.char_info[loop].keyid;		value = change_yx_pkg.char_info[loop].value;				tableno =keyid.record_id/KEY_DIV_VALUE;		if (tableno != BRK_DEVICE_NO && tableno != DISCR_DEVICE_NO && tableno != GDDISCR_DEVICE_NO)		{			continue;		}	                		if (change_yx_pkg.char_info[loop].value & 0x80)			special_flag = BW_TYPE_OF_SG;		else if (change_yx_pkg.char_info[loop].value & 0x08)			special_flag = BW_TYPE_OF_PARA;		else if (change_yx_pkg.char_info[loop].value & 0x04)			special_flag = BW_TYPE_OF_UPDATE;		else if (change_yx_pkg.char_info[loop].value & 0x02)			special_flag = BW_TYPE_OF_MISTAKE;		else			special_flag = BW_TYPE_OF_NORMAL;		if(special_flag != BW_TYPE_OF_MISTAKE)		{			if(value==MENU_VALUE_YX_ON)			{			       // printf("keyid.record_id ====%d bw app_no====%d,value==MENU_VALUE_YX_ON!!!!\n",keyid.record_id,change_yx_pkg.char_info[loop].app_no);				InsertDev(keyid.record_id,m_closeDev);			}			else			{			        printf("keyid.record_id ====%d bw app_no====%d,value==MENU_VALUE_YX_OFF!!!!\n",keyid.record_id,change_yx_pkg.char_info[loop].app_no);				InsertDev(keyid.record_id,m_openDev);			}		  		}	}	if(!m_closeDev.empty() && m_canSyncMode == 2)	{		 printf("开始更新方式数据!!!!!!!!!!!!!!!!!!!!!!!!\n");		  g_psntp->ResetCbOpen(m_closeDev,true);		  m_closeDev.clear();			}	if(!m_openDev.empty() && m_canSyncMode == 2)	{		printf("开始更新方式数据!!!!!!!!!!!!!!!!!!!!!!!!\n");		  g_psntp->SetCbOpen(m_openDev,true);		  m_openDev.clear();	}	//del tablechange	//table_num = change_yx_pkg.package_head.table_num;	table_num = change_yx_pkg.table_info.length();	//printf("table_num=====================================%d\n",table_num);	for(loop=0;loop<table_num;loop++)	{		if(change_yx_pkg.table_info[loop].app_no!=g_app_no)		{			continue;		}		//printf("table bw  ===========%d\n",change_yx_pkg.table_info[loop].table_no);		tableno = change_yx_pkg.table_info[loop].table_no;		                if(tableno == BRK_DEVICE_NO ||                   tableno == DISCR_DEVICE_NO ||                   tableno == GDDISCR_DEVICE_NO ||                   tableno == BS_DEVICE_NO ||                   tableno == LINE_DEVICE_NO ||                   tableno == ACLN_DEVICE_NO ||                   tableno == ACLN_DOT_NO ||                   tableno == TR_DEVICE_NO ||                    tableno == TRWD_DEVICE_NO ||                   tableno == GN_DEVICE_NO ||                   tableno == LD_DEVICE_NO ||                   tableno == RC_DEVICE_NO ||                   tableno == TERMINAL_DEVICE_NO                   )                 {                    m_isModelChange = true;                    break;	                 } 			}	if(m_isModelChange && m_canSyncMode ==2)	{		printf("开始更新模型!!!!!!!!!!!!!!!!!!!!!!!!!\n");		ModelChange();		m_isModelChange = false;			}}*/void COpticketTopo::SyncMode()//根据参数设定同步运行方式以及模型{	//modify by xuxianfeng 060427	if(g_app_no==AP_SCADA ||	(g_app_no!=AP_SCADA&&m_opt_sync_dev_mode==OPTICKET_SYNC_YES))	{				SynDevMode();	}	if(g_app_no==AP_SCADA ||	(g_app_no!=AP_SCADA&&m_opt_sync_run_mode==OPTICKET_SYNC_YES))	{		SynRunMode();			}		//end add	}		int COpticketTopo::ModelChange(){//    SetGraphInfo();	//设置接地牌        ReadGroundToken();        g_flow_verify = ReadPara("scada/opt_para","is_flow_verify");        if(g_flow_verify == 1)        {                deque<OpPair> opVec;                SendMsgToFlow(opVec,FLOW_MODEL_CHANGE);        }	return 1;}int COpticketTopo::YxValueChange(){	int i;	vector<DevType_T> m_openDev;	vector<DevType_T> m_closeDev;	vector<dev_yx_stru>   brk_yx_vec;	vector<dev_yx_stru>   discr_yx_vec;	vector<dev_yx_stru>   gddiscr_yx_vec;  	GetAllRec<ODB::CTableOp>(g_app_no, BRK_DEVICE_NO, BRK_YX_FIELDS, brk_yx_vec);  	//printf("alldev.m_brkVec.size()==%d\n",alldev.m_brkVec.size());    	GetAllRec<ODB::CTableOp>(g_app_no, DISCR_DEVICE_NO, DISCR_YX_FIELDS,discr_yx_vec); 	 //printf("alldev.m_discrVec.size()==%d\n",alldev.m_discrVec.size()); 	GetAllRec<ODB::CTableOp>(g_app_no, GDDISCR_DEVICE_NO, GDDISCR_YX_FIELDS, gddiscr_yx_vec); 	 //printf("alldev.m_gddiscrVec.size()==%d\n",alldev.m_gddiscrVec.size());		m_openDev.clear();	m_closeDev.clear();	vector<int>  open_dev_vec;	vector<int>  close_dev_vec;	close_dev_vec.reserve(brk_yx_vec.size()+discr_yx_vec.size()+gddiscr_yx_vec.size());	open_dev_vec.reserve(brk_yx_vec.size()+discr_yx_vec.size()+gddiscr_yx_vec.size());	vector<dev_yx_stru>::iterator p_dev;	 for(p_dev=brk_yx_vec.begin();p_dev!=brk_yx_vec.end();++p_dev)	{//1020		if(p_dev->yx_value==OPT_VALUE_YX_ON)		{			close_dev_vec.push_back(p_dev->dev_id);					}		else		{			open_dev_vec.push_back(p_dev->dev_id);		}	}	 for(p_dev=discr_yx_vec.begin();p_dev!=discr_yx_vec.end();++p_dev)	{//		if(p_dev->yx_value==OPT_VALUE_YX_ON)		{			close_dev_vec.push_back(p_dev->dev_id);					}		else		{			open_dev_vec.push_back(p_dev->dev_id);		}	}	 for( p_dev=gddiscr_yx_vec.begin();p_dev!=gddiscr_yx_vec.end();++p_dev)	{//		if(p_dev->yx_value==OPT_VALUE_YX_ON)		{			close_dev_vec.push_back(p_dev->dev_id);					}		else		{			open_dev_vec.push_back(p_dev->dev_id);		}	}		//printf("m_openDev.size==%d\n",m_openDev.size());	//printf("m_closeDev.size==%d\n",m_closeDev.size());	//printf("m_closeDev.SWITCH_TYPE_BRK.size==%d\n",m_closeDev[SWITCH_TYPE_BRK].size());	//printf("m_openDev.SWITCH_TYPE_BRK.size==%d\n",m_openDev[SWITCH_TYPE_BRK].size());	InsertDev(close_dev_vec,m_closeDev);	InsertDev(open_dev_vec,m_openDev);	SetAcDotPower();	if(!m_closeDev.empty() || !m_openDev.empty())	{		g_psntp->SetAndResetCbOpen(m_openDev,m_closeDev,true);	}	    //如果拷贝完方式数据,要重新设置接地牌	ReadGroundToken();  //xxf 080814  IslandResult();        g_flow_verify = ReadPara("scada/opt_para","is_flow_verify");        if(g_flow_verify == 1)        {            deque<OpPair> opVec;            SendMsgToFlow(opVec,FLOW_MODE_CHANGE);        }	return 1;}#ifdef _WINDOWS32int COpticketTopo::SaveModelBase(const int copyfromapp,const int copytoapp){	 int             cur_time;    string          app_name;    string          mode_app_name;    string          copy_app_name;    struct timeval	t_start;    struct timeval  t_end;    char            mode_path[200];    char            tmp_str[100];    char            command_str[200];    CModeManage     mode_manage;	int ret;	       	cur_time = time(NULL);    cur_time = cur_time - cur_time % 5;                strcpy(mode_path, getenv(HOME_ENV_NAME));    strcat(mode_path, "/data/case/temp_mode");                cout << "开始导出源应用的方式数据 ..." << endl;    ret = mode_manage.SaveModeToFile(mode_path, copyfromapp, cur_time);	if (ret < 0)	{			    cout << "导出源应用 " << copyfromapp << " 的方式数据时出错" << endl;			    return 0;	}	else	{			    cout << "开始导入目标应用的方式数据 ..." << endl; 			    ret = mode_manage.ModeDownLoadFromFile(mode_path, cur_time, copytoapp, copyfromapp);			    if (ret < 0)			    {			        cout << "导入目标应用 " << copyfromapp << " 的方式数据时出错" << endl;				    return 0;			    }			}						// 删除形成的方式数据文件#ifndef  _WINDOWS32			sprintf(command_str, "rm %s/%d_%d_*", mode_path, cur_time, copyfromapp);			cout << command_str << endl;			system(command_str);#else			sprintf(command_str, "del %s/%d_%d_*", mode_path, cur_time, copyfromapp);			cout << command_str << endl;			WinExec(command_str,SW_HIDE);#endif			return 1;}#endifint	COpticketTopo::DownloadBase(TDownloadAppRequest download_app_request){  int   send_len;  char  *send_buf;	int   ret; 	MARSHAL(download_app_request, send_buf, send_len);  ret=m_optTopoBus->SendMessageToChannel(send_buf, MT_DOWNLOAD_APP_REQUEST, send_len, CH_DOWNLOAD_APP);  delete [] send_buf;  	//printf("DownloadBase ret==%d\n",ret);		if(ret==1)	{		if(ReceiveDownloadAppAnswer(download_app_request.request_id)==1)		{			return 1;		}	}	return 0;}int COpticketTopo::PrintErrors(const SEQDBErrorStru_var & seq_db_err){	int     i;    /*  for (i = 0; i < seq_db_err->length(); i++)  {  	printf( "err_no = %d   err_msg =%s",seq_db_err[i].error_no,CORBA::string_dup(seq_db_err[i].error_msg));  }*/  return 1; }void COpticketTopo::SetAcDotPower(){    int issetpowerbyacdot;    issetpowerbyacdot = ReadPara("scada/opt_para","issetpowerbyacdot");    if(issetpowerbyacdot != 1)    {    	 printf("不根据交流线端的潮流方向设置电源点!!!\n");    	 return;    }      int nd;	DevInfoStru	devInfo;	vector<acln_dot_yc_stru> dotVec;	vector<acln_dot_yc_stru> dotVec_temp;	CLineInfo *lineinfo = NULL;	vector<NodeName_T>    nd_power_vec;	set<int>              acln_search_flag;	map<int,vector<acln_dot_yc_stru> > m_acln_linkdot;	map<int,vector<acln_dot_yc_stru> >::iterator pos;		vector<acln_dot_yc_stru>::iterator p_acdot_dev;	GetAllRec<ODB::CTableOp>(g_app_no, ACLN_DOT_NO, ACLN_DOT_YC_FIELDS,dotVec);	for(p_acdot_dev = dotVec.begin();p_acdot_dev != dotVec.end();++p_acdot_dev)		  {  	pos = m_acln_linkdot.find(p_acdot_dev->acln_id);  	if(pos == m_acln_linkdot.end())  	{  		dotVec_temp.clear();  		dotVec_temp.push_back(*p_acdot_dev);  		m_acln_linkdot[p_acdot_dev->acln_id]= dotVec_temp;  	}  	else  	{  		pos->second.push_back(*p_acdot_dev);  	}  }	for(p_acdot_dev = dotVec.begin();p_acdot_dev != dotVec.end();++p_acdot_dev)			{	   devInfo.device_id=p_acdot_dev->fac_id;  	   GetDevStru(devInfo);  	   //如果不是虚拟厂站,则continue  	   //printf(__FILE__",%d  p_acdot_dev->acdot_id=======%d,fac_id===%d,fac_type===%d\n",__LINE__,p_acdot_dev->dev_id,p_acdot_dev->fac_id,devInfo.sub_type_value1);   	   if(devInfo.sub_type_value1 != 4)  	   {  				continue;  	   }  	   //printf("线路电源端acdot_id===%d,yc_value==%f\n",p_acdot_dev->dev_id,p_acdot_dev->p_value);  	   pos = m_acln_linkdot.find(p_acdot_dev->acln_id);  	   if(pos == m_acln_linkdot.end())  	   {  	   	  continue;  	   }  	   for(int i = 0;i<pos->second.size();i++)  	   {             if(abs(pos->second[i].p_value) > 0.66)				 {			 				if(pos->second[i].nd1 >0)  		     		{  		     	  		nd_power_vec.push_back(pos->second[i].nd1);  		     	      printf("333333线路电源端acdot_id===%d,yc_value==%f\n",pos->second[i].dev_id,pos->second[i].p_value);  		     		}					}			}	}	g_psntp->SetPower(nd_power_vec);}void COpticketTopo::IslandResult(){	  //SCADA应用不需要进行拓扑着色	  if(g_app_no == AP_SCADA)	     return;		const int REL_TABLE_NUM = 12;	  int i;	  static map<int,devQcolor_T*> dev_map;  	map<int,devQcolor_T*>::iterator p_dev_map;  	vector<DevId_T> dev_vec;  	vector<unsigned char> c_qcolor_vec;    static const int REL_TABLE_NO[REL_TABLE_NUM] =    {                BRK_DEVICE_NO,                DISCR_DEVICE_NO,                GDDISCR_DEVICE_NO,                ACLN_DEVICE_NO,                ACLN_DOT_NO,                TR_DEVICE_NO,                GN_DEVICE_NO,                LD_DEVICE_NO,                RC_DEVICE_NO,                BS_DEVICE_NO,                TERMINAL_DEVICE_NO,                TRWD_DEVICE_NO    };  	if(dev_map.empty())    {        for(i=0; i<REL_TABLE_NUM; ++i)        {        	if(REL_TABLE_NO[i]>0)  //>0条件是为了处理REL_TABLE_NO最后一个或多个元素被默认初始化为0        	{                dev_map[REL_TABLE_NO[i]] = new devQcolor_T(REL_TABLE_NO[i], g_app_no);        	}        }    }    for(p_dev_map = dev_map.begin(); p_dev_map != dev_map.end(); ++p_dev_map)    {        p_dev_map->second->Reset();    }	  	  g_psntp->IslandResult(dev_vec,c_qcolor_vec);	for( i=0; i < dev_vec.size(); ++i)    {        p_dev_map = dev_map.find(dev_vec[i]/DB_BASE);        if(p_dev_map != dev_map.end())        {           p_dev_map->second->AddQcolorInfo(dev_vec[i], c_qcolor_vec[i]);         if(dev_vec.size()<10000)           printf("dev_id===%d,qcolor===%d\n",dev_vec[i],c_qcolor_vec[i]);        }    }	for(p_dev_map = dev_map.begin();p_dev_map != dev_map.end();++p_dev_map)         {                     p_dev_map->second->UpdateQcolor();        }                         printf("dev_vec.size()===%d,color_Vec.size()===%d\n",dev_vec.size(),c_qcolor_vec.size());  SendMsgToGraph(g_app_no);//发送消息给图形刷新 }void devQcolor_T::Reset(){	int rev_num = c_key_vec.size() * 1.01;	c_key_vec.clear();	c_key_vec.reserve(rev_num);	c_qcolor_vec.clear();	c_qcolor_vec.reserve(rev_num);}void devQcolor_T::AddQcolorInfo(const int key_id, const unsigned char qcolor){	c_key_vec.push_back(key_id);	c_qcolor_vec.push_back(qcolor);}void devQcolor_T::UpdateQcolor(){    if(!c_key_vec.empty())    {        int ret_code = c_table_op.TableModifyByKey((char*)&c_key_vec[0], sizeof(int)*c_key_vec.size(), c_qcolor_field_id, (char*)&c_qcolor_vec[0], sizeof(char)*c_qcolor_vec.size());        if(ret_code < 0)        {            TRACE("ret_code of TableModifyByKey is: %d\n", ret_code);        }    }}string COpticketTopo::GetLocalTime(){	time_t curtime;    time(&curtime);    char tss[100];	struct tm *timestru=localtime(&curtime);		sprintf(tss,"%4d-%2d-%2d:%2d:%2d:%2d",timestru->tm_year+1900,timestru->tm_mon+1,timestru->tm_mday ,	timestru->tm_hour ,timestru->tm_min ,timestru->tm_sec );    return tss;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -