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

📄 optickettopo.cpp

📁 电力系统潮流程序adsfasdfasfd
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		printf("bsTVec.size()==%d\n",bsTVec.size());	}        if(gddiscrTVec.size() > 0)        {        	allDev_T.m_gddiscr_sec.first = &gddiscrTVec[0];                allDev_T.m_gddiscr_sec.second = &gddiscrTVec[0]+gddiscrTVec.size();		printf("gddiscrTVec.size()==%d\n",gddiscrTVec.size());	}        if(otherTVec.size() > 0) 	{       	 	allDev_T.m_other_pterm_sec.first = &otherTVec[0];         	allDev_T.m_other_pterm_sec.second = &otherTVec[0] + otherTVec.size();		printf("otherTVec.size()==%d\n",otherTVec.size());	}        if(dotTVec.size() > 0)	{		allDev_T.m_dot_sec.first = &dotTVec[0];        	allDev_T.m_dot_sec.second = &dotTVec[0]+dotTVec.size();		printf("dotTVec.size()==%d\n",dotTVec.size());	}        if(trwdTVec.size() > 0)	{		allDev_T.m_trwd_sec.first = &trwdTVec[0];       		allDev_T.m_trwd_sec.second = &trwdTVec[0] + trwdTVec.size();		printf("trwdTVec.size()==%d\n",trwdTVec.size());	}        if(brkTVec.size() >0)	{		allDev_T.m_brk_sec.first=&brkTVec[0];        	allDev_T.m_brk_sec.second=&brkTVec[0]+brkTVec.size();		printf("brkTVec.size()==%d\n",brkTVec.size());	}        if(discrTVec.size() > 0)	{		allDev_T.m_discr_sec.first=&discrTVec[0];       		allDev_T.m_discr_sec.second=&discrTVec[0]+discrTVec.size();		printf("discrTVec.size()==%d\n",discrTVec.size());	}        if(otherbrhTVec.size()>0)        {		allDev_T.m_other_branch_sec.first=&otherbrhTVec[0];       		allDev_T.m_other_branch_sec.second=&otherbrhTVec[0]+otherbrhTVec.size();		printf("otherbrhTVec.size()==%d\n",otherbrhTVec.size());	}        if(trindTVect.size()>0)        {		allDev_T.m_kvtrind_dev_sec.first= &trindTVect[0];       		allDev_T.m_kvtrind_dev_sec.second= &trindTVect[0]+trindTVect.size();		printf("trindTVect.size()==%d\n",trindTVect.size());	}	SetAcDotPower();	starttime = clock();			g_psntp->UpdateModel(allDev_T);	printf("UpdateModel   exec   time ====================%d s\n",clock()-starttime);		SetRunMode(open_dev_vec,close_dev_vec);//初始化运行方式		/*m_buslink_set.clear();	for(vector<KvBranch_T>::iterator pos = brkTVec.begin();pos != brkTVec.end(); ++pos)	{			   		CBrkInfo *brkinfo = new CBrkInfo(pos->m_id);	   		int type = brkinfo->IsBypassBrk();	   		bitset<32> devtypeset(type);	   		if(devtypeset[OPT_SEMA_BUSLINK_BRK-BRK_DEVICE_NO*DB_BASE-1])	   		{	       		printf("brk=====%d is buslinker!!!!\n",pos->m_id);	       		m_buslink_set.insert(pos->m_id);	   		}	}*/	//g_psntp->SetBusLinkBrk(m_buslink_set);	gnTVec.clear();	ldTVec.clear();	bsTVec.clear();	gddiscrTVec.clear();	otherTVec.clear();	dotTVec.clear();	trwdTVec.clear();	brkTVec.clear();	discrTVec.clear();	otherbrhTVec.clear();	trindTVect.clear();		FreeDevice(alldev);		return 1;}int COpticketTopo::SetRunMode(vector<int>  &open_dev_vec,vector<int>  &close_dev_vec,bool update_mode)//设定初始的运行方式{	vector<DevType_T> m_openDev;	vector<DevType_T> m_closeDev;	InsertDev(close_dev_vec,m_closeDev);	InsertDev(open_dev_vec,m_openDev);	if(!m_closeDev.empty())	{		g_psntp->ResetCbOpen(m_closeDev,update_mode);	}	if(!m_openDev.empty())	{		g_psntp->SetCbOpen(m_openDev,update_mode);	}	return 1;}int	COpticketTopo::ReadDevice(AllDeviceStru &alldev)//读取所有设备信息{//OK	int i;	//printf("CALL ReadDevice BEGIN\n");			FreeDevice(alldev);	        GetAllRec<ODB::CTableOp>(g_app_no, BRK_DEVICE_NO, BRK_DEVICE_FIELDS, alldev.m_brkVec);  //printf("alldev.m_brkVec.size()==%d\n",alldev.m_brkVec.size());          GetAllRec<ODB::CTableOp>(g_app_no, DISCR_DEVICE_NO, DISCR_DEVICE_FIELDS, alldev.m_discrVec);  //printf("alldev.m_discrVec.size()==%d\n",alldev.m_discrVec.size());        GetAllRec<ODB::CTableOp>(g_app_no, GDDISCR_DEVICE_NO, GDDISCR_DEVICE_FIELDS, alldev.m_gddiscrVec);  //printf("alldev.m_gddiscrVec.size()==%d\n",alldev.m_gddiscrVec.size());        GetAllRec<ODB::CTableOp>(g_app_no, BS_DEVICE_NO, BS_DEVICE_FIELDS, alldev.m_bsVec);  //printf("alldev.m_bsVec.size()==%d\n",alldev.m_bsVec.size());        GetAllRec<ODB::CTableOp>(g_app_no, GN_DEVICE_NO, GN_DEVICE_FIELDS, alldev.m_gnVec);  //printf("alldev.m_gnVec.size()==%d\n",alldev.m_gnVec.size());        GetAllRec<ODB::CTableOp>(g_app_no, LD_DEVICE_NO, LD_DEVICE_FIELDS, alldev.m_ldVec);  //printf("alldev.m_ldVec.size()==%d\n",alldev.m_ldVec.size());        GetAllRec<ODB::CTableOp>(g_app_no, ACLN_DOT_NO, ACLN_DOT_FIELDS, alldev.m_dotVec);        GetAllRec<ODB::CTableOp>(g_app_no, ACLN_DEVICE_NO, ACLN_DEVICE_FIELDS, alldev.m_aclnVec);  //printf("alldev.m_dotVec.size()==%d\n",alldev.m_dotVec.size());  //add by xuxianfeng.如果交流线段的节点号是-1,人工给它们编个号。否则拓扑时认为它们是一个点。        for(i=0;i<alldev.m_dotVec.size();i++)        {            if(alldev.m_dotVec[i].nd1==-1)            {                alldev.m_dotVec[i].nd1=i;            }        }   //end add        GetAllRec<ODB::CTableOp>(g_app_no, RC_DEVICE_NO, RC_DEVICE_FIELDS, alldev.m_rcVec);  //printf("alldev.m_rcVec.size()==%d\n",alldev.m_rcVec.size());        GetAllRec<ODB::CTableOp>(g_app_no, TRWD_DEVICE_NO, TRWD_DEVICE_FIELDS, alldev.m_trwdVec);  //printf("alldev.m_trwdVec.size()==%d\n",alldev.m_trwdVec.size());        int ret=GetAllRec<ODB::CTableOp>(g_app_no, TERMINAL_DEVICE_NO, ZD_DEVICE_FIELDS, alldev.m_zdVec);//add by xuxianfeng 06-1-9   //printf("***************ret=================%d\n",ret);	//printf("CALL ReadDevice END\n");	return 1;}int	COpticketTopo::FreeDevice(AllDeviceStru &alldev)//读取所有设备信息{	alldev.m_brkVec.clear();	alldev.m_discrVec.clear();	alldev.m_gddiscrVec.clear();	alldev.m_bsVec.clear();	alldev.m_gnVec.clear();	alldev.m_ldVec.clear();	alldev.m_dotVec.clear();	alldev.m_rcVec.clear();	alldev.m_trwdVec.clear();	alldev.m_zdVec.clear();	return 1;}int COpticketTopo::GetYxValue(int dev_id){//OK	YxValueStruct		yx;	if(FindByKey<ODB::CTableOp,YxValueStruct>(g_app_no,dev_id/DB_BASE,dev_id,"yx_value,stat",yx)>=0)	{		//printf("dev_id ==%d,yx_value==%d\n",dev_id,yx.yx_value);		return yx.yx_value;	}	return -1;}void COpticketTopo::SetAppNo(int app){	g_app_no=app;}int COpticketTopo::GetAppNo(){	return g_app_no;}	int COpticketTopo::RecvReport(int time){      //  printf("开始收消息!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");        int retcode=m_optTopoBus->RecvMessage(&m_RecvMsgHeader, m_BufBase);      //  printf("retcode================%d!!!!!!!!!!!!!!!!\n",retcode);	return retcode;	}int COpticketTopo::SendToChannel(int channel_id){	int retcode;	if(m_SendMsgBuf!=NULL)	{		retcode=m_optTopoBus->SendMessageToChannel(m_SendMsgBuf,m_SendMsgType,m_SendMsgLen,channel_id);		delete [] m_SendMsgBuf;		m_SendMsgBuf=NULL;	}	return retcode;}int COpticketTopo::SendToHost(const char *machinename,const char *processname,const char* instancename){	int retcode = -1;	if(m_SendMsgBuf!=NULL)	{		retcode=m_optTopoBus->SendMessageToHost(m_SendMsgBuf,m_SendMsgType,m_SendMsgLen,machinename,processname,instancename);		//printf("SendMessageToHost retcode==%d\n",retcode);		delete [] m_SendMsgBuf;		m_SendMsgBuf=NULL;	}	return retcode;}int COpticketTopo::GetRecvReportType() { 	return m_RecvMsgHeader.msg_type; }void    COpticketTopo::CopyModeFromSCADA()//从SCADA拷贝方式数据{    TDownloadAppRequest                             download_app_request;    int result = 1;    int opt_downmodel_mode = ReadPara("scada/opt_para","opt_downmodel_mode");    printf("m_opt_downmodel_mode========================================%d\n",opt_downmodel_mode);       if(opt_downmodel_mode==0)            {        #ifndef _WINDOWS32        download_app_request.request_id=10003;        download_app_request.app_no=g_app_no;        download_app_request.model_source=DOWN_APP_MODEL_SOURCE_NONE;//        download_app_request.need_mode=DOWN_APP_YES;        download_app_request.is_research=DOWN_APP_NO;        download_app_request.copy_from_app=DOWN_APP_NO;        download_app_request.mode_from_app=AP_SCADA;        download_app_request.is_copy_host=DOWN_APP_NO;                       printf("开始DownloadBase\n");        result=DownloadBase(download_app_request);        #else        result=SaveModelBase(AP_SCADA,g_app_no);        #endif    }    else    {#ifdef _CIMIMPORT        TRACE("begin to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n");        int ret_value=m_CimDateExg.GetSectionE(g_app_no);        TRACE("end to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n");        if(!ret_value)            result=1;        else            result=0;#endif    }    if(result)    {        printf("Call YxValueChange!\n");        YxValueChange();    }       }int     COpticketTopo::CopyModeFromSCADA(int dutyflag)//从SCADA拷贝方式数据{        TDownloadAppRequest                             download_app_request;        int                                                                                             app_no;        AppInfoRpt                                      app;        ComResRpt                                       comRes;        int                                                                                             result;                m_SendMsgType=OPTICKET_COPY_MODE_RES;        UN_MARSHAL(app,m_BufBase.GetBufPtr(),m_BufBase.GetLength());        printf("DownloadModel g_app_no==%d\n",app.app_no);        app_no=app.app_no;        result=1;        if(app_no!=g_app_no||g_app_no==AP_SCADA)        {                printf("应用不对应app_no===%d,g_app_no===%d\n",app_no,g_app_no);                result= 0;                return RETURN_FAILED;        }        else        {                        int opt_downmodel_mode = ReadPara("scada/opt_para","opt_downmodel_mode");                printf("m_opt_downmodel_mode========================================%d\n",opt_downmodel_mode);                        if(opt_downmodel_mode==0)                        {                        #ifndef _WINDOWS32                        download_app_request.request_id=10003;                        download_app_request.app_no=g_app_no;                        download_app_request.model_source=DOWN_APP_MODEL_SOURCE_NONE;//                        download_app_request.need_mode=DOWN_APP_YES;                        download_app_request.is_research=DOWN_APP_NO;                        download_app_request.copy_from_app=DOWN_APP_NO;                        download_app_request.mode_from_app=AP_SCADA;                        download_app_request.is_copy_host=DOWN_APP_NO;                                       printf("开始DownloadBase\n");                                                result=DownloadBase(download_app_request);                   #else                        printf("开始SaveModeBase\n");                        result=SaveModelBase(AP_SCADA,g_app_no);                        #endif                }                else                {#ifdef _CIMIMPORT                        TRACE("begin to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n");                        int ret_value=m_CimDateExg.GetSectionE(g_app_no);                        TRACE("end to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n");                        if(!ret_value)                                 result=1;                        else                                result=0;#endif                }                if(result)                {                        printf("Call YxValueChange!\n");                        YxValueChange();                                        }        }        //完成后应答    if(dutyflag==1)    {        if(result)        {                comRes.ret_code=RETURN_SUCCESS;                        }        else        {                result=RETURN_FAILED;        }        printf("拷贝完成!!!!!!!!!!\n");        MARSHAL(comRes, m_SendMsgBuf, m_SendMsgLen);                SendToHost(m_RecvMsgHeader.src_host_name,m_RecvMsgHeader.src_proc_name);                SendMsgToGraph(app_no);//发送消息给图形刷新 xuxianfeng 1202        delete [] m_SendMsgBuf;        m_SendMsgBuf=NULL;    }    return result;}int COpticketTopo::SendMsgToFlow(deque<OpPair> tempopVec,int caltype){        if(g_app_no == AP_SCADA)           return 0;        deque<OpPair> opVec;        OpPair        tempPair;        int           i;                printf("开始发送潮流校验报文,caltype==========%d!!!!!!!!!!!!\n",caltype);        bool brk_oper = false;        for(i = 0;i<tempopVec.size();++i)        {                if(tempopVec[i].dev_id/DB_BASE == BRK_DEVICE_NO)                {                    brk_oper = true;                }                if(tempopVec[i].dev_id/DB_BASE == BRK_DEVICE_NO || tempopVec[i].dev_id/DB_BASE == DISCR_DEVICE_NO)                {                    opVec.push_back(tempopVec[i]);                }        }        int m_SendMsgType = OPTICKET_FLOW_REQ;        int m_SendMsgLen;        int channelid=CH_OPTICKET_TOPO_CHANNEL;        char *report_buf=NULL;        optFlowReqStru  flowreq;          flowreq.app_id = g_app_no;        flowreq.context_no = AC_REALTIME_NO;        flowreq.cal_type = caltype;        flowreq.user_name = CORBA::string_dup(m_username.c_str());        flowreq.host_name = CORBA::string_dup(m_machinename.c_str());                flowreq.dev_pair.length(opVec.size());        for(i = 0;i<opVec.size();++i)        {                flowreq.dev_pair[i].dev_id = opVec[i].dev_id;                flowreq.dev_pair[i].op_value = opVec[i].op_value;                  }                MARSHAL(flowreq,report_buf,m_SendMsgLen);        int ret_code = m_optTopoBus->SendMessageToChannel(report_buf, m_SendMsgType, m_SendMsgLen,channelid, NULL, NULL);        printf("发送潮流校验报文结束报文!!!!!!!!!!!!\n");                                                          delete report_buf;        report_buf=NULL;        if(brk_oper)          return 1;        return 0;}int     COpticketTopo::ReceiveFlowVerifyAnswer(SEQOpStepVerFlowRpt  &verFlowSeq,string &msg){    int                 ret_code;    MESSAGE_HEADER      msg_head;    ::CBuffer           buf_base;    optFlowResStru      flowreq;    time_t              starttime;    time_t              currenttime;    vector<opt_flow_verify_stru> temp_flow_verify_result_vec;    opt_flow_verify_stru temp_flow_verify_result;    time(&starttime);    printf("Call ReceiveFlowVerifyAnswer\n");    while(1)    {         time(&currenttime);         if((currenttime-starttime)>10)//         {//超时               //printf("ReceiveDownloadAppAnswer 超时\n");               msg = "潮流校验服务端没有响应,校验超时";               return -1;                }         ret_code = m_optTopoBus->RecvMessage(&msg_head, buf_base);         if (ret_code == 1)         {                              // 接受到下装申请应答                printf("receive flowcal result msg_type ===%d\n",msg_head.msg_type);                 if (msg_head.msg_type == OPTICKET_FLOW_RES)                {                    UN_MARSHAL(flowreq, buf_base.GetBufPtr(), buf_base.GetLength());                    printf("app_id ==%d,ret_code === %d\n",flowreq.app_id,flowreq.ret_code);                    if(flowreq.app_id != g_app_no)                    {                        return 1;                    }                    if(flowreq.ret_code == FLOW_CAL_NO_OVER)                    {                       printf("潮流计算完成,无越限信息!!!\n");                       msg = "潮流计算完成,无越限信息!!!";                       return 1;                    }                    else if(flowreq.ret_code == FLOW_CAL_FAIL)                    {                        printf("潮流计算不收敛!!!\n");                        msg = "潮流计算不收敛!!!";                        return 0;                    }                    else if(flowreq.ret_code == FLOW_INIT_FAIL)                    {                        printf("潮流初始化失败!!!\n");                        msg = "潮流初始化失败!!!";                        return 0;                    }                    else if(flowreq.ret_code == FLOW_CAL_OVER)                    {                        /*printf("电压越限的母线如下:\n");                        verFlowSeq.length(flowreq.over_bs_vec.length()+flowreq.over_branch_vec.length());                        for(int i = 0;i<flowreq.over_bs_vec.length();++i)                        {                                verFlowSeq[i].device_id = flowreq.over_bs_vec[i].dev_id;                                verFlowSeq[i].limit_value = flowreq.over_bs_vec[i].limit_value;                                verFlowSeq[i].cal_value = flowreq.over_bs_vec[i].cal_value;

⌨️ 快捷键说明

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