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

📄 optickettopo.cpp.bak

📁 电力系统潮流程序adsfasdfasfd
💻 BAK
📖 第 1 页 / 共 5 页
字号:
        }        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;                                printf("dev_id ====%d,limit_value===%f,cal_value===%f\n",flowreq.over_bs_vec[i].dev_id,flowreq.over_bs_vec[i].limit_value,flowreq.over_bs_vec[i].cal_value);                        }*/                        int i,j;                        for(i = 0;i<flowreq.over_branch_vec.length();++i)                        {                            for(j = 0;j<flowreq.pre_over_branch_vec.length();++j)                            {                                if(flowreq.over_branch_vec[i].dev_id == flowreq.pre_over_branch_vec[j].dev_id)                                {                                    if(abs(flowreq.over_branch_vec[i].cal_value-flowreq.pre_over_branch_vec[j].cal_value)/flowreq.over_branch_vec[i].limit_value> 0.01)                                    {                                       //printf("diff===%f,i=====%d\n",abs(flowreq.over_branch_vec[i].cal_value-flowreq.pre_over_branch_vec[i].cal_value),i);                                        temp_flow_verify_result.dev_id = flowreq.over_branch_vec[i].dev_id;                                        temp_flow_verify_result.limit_value = flowreq.over_branch_vec[i].limit_value;                                        temp_flow_verify_result.cal_value = flowreq.over_branch_vec[i].cal_value;                                        temp_flow_verify_result_vec.push_back(temp_flow_verify_result);                                                                            }                                    break;                                }                            }                            if(flowreq.pre_over_branch_vec.length() == 0 || j == flowreq.pre_over_branch_vec.length())                            {                                 temp_flow_verify_result.dev_id = flowreq.over_branch_vec[i].dev_id;                                 temp_flow_verify_result.limit_value = flowreq.over_branch_vec[i].limit_value;                                 temp_flow_verify_result.cal_value = flowreq.over_branch_vec[i].cal_value;                                 temp_flow_verify_result_vec.push_back(temp_flow_verify_result);                            }                        }                                               printf("计算前潮流越限的支路:\n");                        for(i = 0;i<flowreq.pre_over_branch_vec.length();++i)                        {                            printf("dev_id ====%d,limit_value===%f,cal_value===%f\n",flowreq.pre_over_branch_vec[i].dev_id,flowreq.pre_over_branch_vec[i].limit_value,flowreq.pre_over_branch_vec[i].cal_value);                        }                        printf("计算后潮流越限的支路:\n");                        for(i = 0;i<flowreq.over_branch_vec.length();++i)                        {                                printf("dev_id ====%d,limit_value===%f,cal_value===%f\n",flowreq.over_branch_vec[i].dev_id,flowreq.over_branch_vec[i].limit_value,flowreq.over_branch_vec[i].cal_value);                        }                        if(temp_flow_verify_result_vec.size() <= 0)                        {                            msg = "潮流计算结束,无变化越限信息!!!";                            return 1;                        }                        msg = "潮流计算结束,有越限信息!!!";                        verFlowSeq.length( temp_flow_verify_result_vec.size());                        for(i = 0;i < temp_flow_verify_result_vec.size();++i)                        {                                verFlowSeq[i].device_id = temp_flow_verify_result_vec[i].dev_id;                                verFlowSeq[i].limit_value = temp_flow_verify_result_vec[i].limit_value;                                verFlowSeq[i].cal_value = temp_flow_verify_result_vec[i].cal_value;                        }                        return 0;                    }                    else                     {                          return 1;                    }                 }            }            DelayTime(100);        }        return 1;}void COpticketTopo::SendMsgToGraph(int appno){        printf("开始发送变化报文!!!!!!!!!!!!\n");        int m_SendMsgType = MT_CHANGE_DATA;        int m_SendMsgLen;        int channelid=CH_CHANGE_DATA;        char *report_buf=NULL;        ChangeDataPkg	m_ChangeMsg;        int	len;	m_ChangeMsg.package_head.char_num=1;	m_ChangeMsg.package_head.table_num=1;	len = m_ChangeMsg.package_head.char_num;	m_ChangeMsg.char_info.length(len);	m_ChangeMsg.char_info[len-1].app_no = appno;	m_ChangeMsg.char_info[len-1].keyid.record_id=-1;	m_ChangeMsg.char_info[len-1].keyid.column_id=-1;		m_ChangeMsg.table_info.length(len);	m_ChangeMsg.table_info[len-1].app_no = appno;	m_ChangeMsg.table_info[len-1].table_no = TOKEN_INFO_NO;			MARSHAL(m_ChangeMsg,report_buf,m_SendMsgLen);        int ret_code = m_optTopoBus->SendMessageToChannel(report_buf, m_SendMsgType, m_SendMsgLen,	                                                  channelid, NULL, NULL);	 printf("发送变化报文!!len=======%d,apopno====%d,retcode=============%d!!!!!!!!!!\n",len,appno,ret_code);                                                  	 delete report_buf;	 report_buf=NULL;}int COpticketTopo::DownloadModel(int dutyflag){	TDownloadAppRequest				download_app_request;	int												app_no;	AppInfoRpt 								app;	QString                          msg;;	int												result;	char cmdstr[100];	m_SendMsgType=OPTICKET_DOWN_MODE_RES;	int retcode;	int rec_num;	int retno;	const char *field_name = "graph_name,graph_version";	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;	int tmpvalue = 0;	if(app_no!=g_app_no)	{		//printf("应用不对应\n");		result= 0;		return RETURN_FAILED;	}	else	{		printf("开始下装模型!!!!!!!!!!!!!!!\n");                /*if(dutyflag==1)                {                        SendDownModelMsgToHost("开始下装模型!!!");                }*/        int opt_downmodel_mode  = ReadPara("scada/opt_para","opt_downmodel_mode");	    printf("opt_downmodel_mode========================================%d\n",opt_downmodel_mode);	    if(opt_downmodel_mode==1)		{#ifdef _CIMIMPORT            vector<string> graph_file_vec;			printf("开始调用CCimDataExchangeClient接口传输图形\n");			vec_pic_info.clear();			map_pic_info.clear();			if(dutyflag==1)			{				SendDownModelMsgToHost("开始读取公共信息平台图形信息!!!");			}			int ret_value = m_CimDateExg.GetPicInfo(vec_pic_info);//调用接口读取图形信息			CBuffer	buf_base;			CTableNet *temp_net = new CTableNet();			struct t_graph_info_net_public 			{				char graph_name[64];				int graph_version;			};			struct t_graph_info_net_public 		*graph_Info_buf;		 			    retcode =  temp_net->Open(AP_PUBLIC,GRAPH_INFO_NET_NO);			int successNum=0;			int i;			if(retcode ==DB_OK)			{				if(dutyflag==1)				{					SendDownModelMsgToHost("开始读取操作票系统图形版本信息!!!");				}				retcode =  temp_net->TableGet(field_name,buf_base);				if(retcode > 0)				{					rec_num = buf_base.GetLength()/sizeof(struct t_graph_info_net_public);					graph_Info_buf = (struct t_graph_info_net_public *)buf_base.GetBufPtr();								for(i=0;i<rec_num;i++)					{						map_pic_info[graph_Info_buf[i].graph_name]=graph_Info_buf[i].graph_version;						graph_file_vec.push_back(graph_Info_buf[i].graph_name);					}                    for(i=0;i<vec_pic_info.size();i++)					{												map<string,int>::iterator npos;						npos = map_pic_info.find(vec_pic_info[i].pic_name);						if( npos == map_pic_info.end() || npos -> second < vec_pic_info[i].pic_version)						{								printf("需要更新图形名称:============%s\n",vec_pic_info[i].pic_name);								if(dutyflag==1)								{									msg = "开始更新图形:";									msg +=vec_pic_info[i].pic_name.c_str();									SendDownModelMsgToHost(msg);								}								//tmpvalue = m_CimDateExg.GetPic(vec_pic_info[i].pic_name);								if(!tmpvalue)								{									//graph_file_vec.push_back(vec_pic_info[i].pic_name);									printf("成功更新图形名称:========================%s\n",vec_pic_info[i].pic_name);									if(dutyflag==1)									{										msg = vec_pic_info[i].pic_name.c_str();										msg +="  更新成功!!!";										SendDownModelMsgToHost(msg);									}								}								else  								{									if(dutyflag==1)									{										msg = vec_pic_info[i].pic_name.c_str();										msg +="  更新失败!!!";										SendDownModelMsgToHost(msg);									}									printf("更新图形名称:========================%s失败\n",vec_pic_info[i].pic_name);								}						}																								}//end for				}				delete temp_net;				temp_net = NULL;						}				        printf("开始调用CCimDataExchangeClient接口传输模型\n");			if(dutyflag==1)			{				SendDownModelMsgToHost("开始从公共信息平台传输模型!!!");;			}            tmpvalue = m_CimDateExg.GetModel(g_app_no);			if(tmpvalue==0)			{				if(dutyflag==1)				{					SendDownModelMsgToHost("从公共信息平台传输模型成功!!!");					sprintf(cmdstr,"down_load SCADA");					system(cmdstr);				}				printf("从公共信息平台传输模型成功!!!\n");			}			else			{				if(dutyflag==1)				{					SendDownModelMsgToHost("从公共信息平台传输模型失败!!!");									}				printf("从公共信息平台读取模型失败!!!!!!!!!!!!\n");			}   #endif	   }	   if(tmpvalue == 0)	   {                   /*if(dutyflag==1)                   {                       SendDownModelMsgToHost("开始down_load模型到操作票模式下!!!");                          }*/		    sprintf(cmdstr,"down_load SCADA_SIM%d",g_app_no%AP_SCADA_SIM);			printf("cmdstr===============%s\n",cmdstr);			system(cmdstr);			printf("下装模型结束!!!!!!!!!!!!!!!\n");			if(result)			{				printf("Call ModelChange!\n");				ModelChange();		   			    printf("ModelChange结束!\n");			    //printf("down_load failed\n");		   			}			printf("Call CopyModeFromSCADA!\n");			CopyModeFromSCADA();			printf("CopyModeFromSCADA 结束!\n");			   }	}	//完成后应答    if(dutyflag==1)    {	    SendDownModelMsgToHost("下装模型结束!!!",RETURN_SUCCESS);	}		return result;}int COpticketTopo::SendDownModelMsgToHost(QString msg,int finished){	OpStepVerResultRpt comRes;	comRes.ret_value=finished;	comRes.ret_messge = CORBA::string_dup(msg);   	MARSHAL(comRes, m_SendMsgBuf, m_SendMsgLen);		SendToHost(m_RecvMsgHeader.src_host_name,m_RecvMsgHeader.src_proc_name);	delete [] m_SendMsgBuf;	m_SendMsgBuf=NULL;	return 1;}	int COpticketTopo::ReadDevRunMode(int dutyflag)//通知opticket_topo_srver更新指定设备的运行方式

⌨️ 快捷键说明

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