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

📄 processdfmeter.cpp

📁 这是一个变电站的监控程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		for(i=0;i<6;i++)
		{
			ChanBufRead(iChNo,RecBuf,1);
			if(RecBuf[0]==0x68)
				break;
		}
		int iStatus = 2;
		iRet=ChanBufRead(iChNo,&RecBuf[1],9);
		RecLen=iRet+1;
		if(RecLen==10 && (RecBuf[0]==SendBuf[0] && RecBuf[1]==SendBuf[1] && RecBuf[2]==SendBuf[2] && RecBuf[3]==SendBuf[3]
			&& RecBuf[4]==SendBuf[4] && RecBuf[5]==SendBuf[5] && RecBuf[6]==SendBuf[6] && RecBuf[7]==SendBuf[7]))
		{
			iRet=ChanBufRead(iChNo,&RecBuf[10],RecBuf[9]+2);
			RecLen+=iRet;
			iStatus = 0;
			HandleDFMeterValue(3,iRtuNo,&RecBuf[12],RecLen-14);
			if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
			rtupara->bWorking = true;
			rtupara->bFault = false;
			rtupara->AskTimers = 0;
		}
		else 
		{
			iStatus = 1;
			rtupara->AskTimers++;
		}
		DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);
	}
	else if(rtupara->CommandSendFlag[5]==true)//当前正向有功总电能
	{
		rtupara->CommandSendFlag[5]=false;
        SendBuf[0]=0x68;
		SetDFMeterAddr(iRtuNo,&SendBuf[1],6);
		SendBuf[7]=0x68;
        SendBuf[8]=0x01;
		SendBuf[9]=0x02;
		SendBuf[10]=0x10+0x33;
		SendBuf[11]=0x90+0x33;
		SendBuf[12]=DFMeter_Check(SendBuf,12);
		SendBuf[13]=0x16;
		SendLen=14;
		ChanBufRead(iChNo,RecBuf,1024);
		ChanBufWrite(iChNo,SendBuf,SendLen);
		DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
		Sleep(500);
		for(i=0;i<6;i++)
		{
			ChanBufRead(iChNo,RecBuf,1);
			if(RecBuf[0]==0x68)
				break;
		}
		int iStatus = 2;
		iRet=ChanBufRead(iChNo,&RecBuf[1],9);
		RecLen=iRet+1;
		if(RecLen==10 && (RecBuf[0]==SendBuf[0] && RecBuf[1]==SendBuf[1] && RecBuf[2]==SendBuf[2] && RecBuf[3]==SendBuf[3]
			&& RecBuf[4]==SendBuf[4] && RecBuf[5]==SendBuf[5] && RecBuf[6]==SendBuf[6] && RecBuf[7]==SendBuf[7]))
		{
			iRet=ChanBufRead(iChNo,&RecBuf[10],RecBuf[9]+2);
			RecLen+=iRet;
			iStatus = 0;
			HandleDFMeterValue(4,iRtuNo,&RecBuf[12],RecLen-14);
			if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
			rtupara->bWorking = true;
			rtupara->bFault = false;
			rtupara->AskTimers = 0;
		}
		else 
		{
			iStatus = 1;
			rtupara->AskTimers++;
		}
		DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);
	}
	else if(rtupara->CommandSendFlag[6]==true)//当前反向有功总电能
	{
		rtupara->CommandSendFlag[6]=false;
        SendBuf[0]=0x68;
		SetDFMeterAddr(iRtuNo,&SendBuf[1],6);
		SendBuf[7]=0x68;
        SendBuf[8]=0x01;
		SendBuf[9]=0x02;
		SendBuf[10]=0x20+0x33;
		SendBuf[11]=0x90+0x33;
		SendBuf[12]=DFMeter_Check(SendBuf,12);
		SendBuf[13]=0x16;
		SendLen=14;
		ChanBufRead(iChNo,RecBuf,1024);
		ChanBufWrite(iChNo,SendBuf,SendLen);
		DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
		Sleep(500);
		for(i=0;i<6;i++)
		{
			ChanBufRead(iChNo,RecBuf,1);
			if(RecBuf[0]==0x68)
				break;
		}
		int iStatus = 2;
		iRet=ChanBufRead(iChNo,&RecBuf[1],9);
		RecLen=iRet+1;
		if(RecLen==10 && (RecBuf[0]==SendBuf[0] && RecBuf[1]==SendBuf[1] && RecBuf[2]==SendBuf[2] && RecBuf[3]==SendBuf[3]
			&& RecBuf[4]==SendBuf[4] && RecBuf[5]==SendBuf[5] && RecBuf[6]==SendBuf[6] && RecBuf[7]==SendBuf[7]))
		{
			iRet=ChanBufRead(iChNo,&RecBuf[10],RecBuf[9]+2);
			RecLen+=iRet;
			iStatus = 0;
			HandleDFMeterValue(5,iRtuNo,&RecBuf[12],RecLen-14);
			if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
			rtupara->bWorking = true;
			rtupara->bFault = false;
			rtupara->AskTimers = 0;
		}
		else 
		{
			iStatus = 1;
			rtupara->AskTimers++;
		}
		DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);
	}
	else if(rtupara->CommandSendFlag[7]==true)//当前正向无功总电能
	{
		rtupara->CommandSendFlag[7]=false;
        SendBuf[0]=0x68;
		SetDFMeterAddr(iRtuNo,&SendBuf[1],6);
		SendBuf[7]=0x68;
        SendBuf[8]=0x01;
		SendBuf[9]=0x02;
		SendBuf[10]=0x10+0x33;
		SendBuf[11]=0x91+0x33;
		SendBuf[12]=DFMeter_Check(SendBuf,12);
		SendBuf[13]=0x16;
		SendLen=14;
		ChanBufRead(iChNo,RecBuf,1024);
		ChanBufWrite(iChNo,SendBuf,SendLen);
		DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
		Sleep(500);
		for(i=0;i<6;i++)
		{
			ChanBufRead(iChNo,RecBuf,1);
			if(RecBuf[0]==0x68)
				break;
		}
		int iStatus = 2;
		iRet=ChanBufRead(iChNo,&RecBuf[1],9);
		RecLen=iRet+1;
		if(RecLen==10 && (RecBuf[0]==SendBuf[0] && RecBuf[1]==SendBuf[1] && RecBuf[2]==SendBuf[2] && RecBuf[3]==SendBuf[3]
			&& RecBuf[4]==SendBuf[4] && RecBuf[5]==SendBuf[5] && RecBuf[6]==SendBuf[6] && RecBuf[7]==SendBuf[7]))
		{
			iRet=ChanBufRead(iChNo,&RecBuf[10],RecBuf[9]+2);
			RecLen+=iRet;
			iStatus = 0;
			HandleDFMeterValue(6,iRtuNo,&RecBuf[12],RecLen-14);
			if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
			rtupara->bWorking = true;
			rtupara->bFault = false;
			rtupara->AskTimers = 0;
		}
		else 
		{
			iStatus = 1;
			rtupara->AskTimers++;
		}
		DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);
	}
	else if(rtupara->CommandSendFlag[8]==true)//当前反向无功总电能
	{
		rtupara->CommandSendFlag[8]=false;
        SendBuf[0]=0x68;
		SetDFMeterAddr(iRtuNo,&SendBuf[1],6);
		SendBuf[7]=0x68;
        SendBuf[8]=0x01;
		SendBuf[9]=0x02;
		SendBuf[10]=0x20+0x33;
		SendBuf[11]=0x91+0x33;
		SendBuf[12]=DFMeter_Check(SendBuf,12);
		SendBuf[13]=0x16;
		SendLen=14;
		ChanBufRead(iChNo,RecBuf,1024);
		ChanBufWrite(iChNo,SendBuf,SendLen);
		DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
		Sleep(500);
		for(i=0;i<6;i++)
		{
			ChanBufRead(iChNo,RecBuf,1);
			if(RecBuf[0]==0x68)
				break;
		}
		int iStatus = 2;
		iRet=ChanBufRead(iChNo,&RecBuf[1],9);
		RecLen=iRet+1;
		if(RecLen==10 && (RecBuf[0]==SendBuf[0] && RecBuf[1]==SendBuf[1] && RecBuf[2]==SendBuf[2] && RecBuf[3]==SendBuf[3]
			&& RecBuf[4]==SendBuf[4] && RecBuf[5]==SendBuf[5] && RecBuf[6]==SendBuf[6] && RecBuf[7]==SendBuf[7]))
		{
			iRet=ChanBufRead(iChNo,&RecBuf[10],RecBuf[9]+2);
			RecLen+=iRet;
			iStatus = 0;
			HandleDFMeterValue(7,iRtuNo,&RecBuf[12],RecLen-14);
			if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
			rtupara->bWorking = true;
			rtupara->bFault = false;
			rtupara->AskTimers = 0;
		}
		else 
		{
			iStatus = 1;
			rtupara->AskTimers++;
		}
		DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);
	}
	else if(rtupara->CommandSendFlag[9]==true)//电表运行状态、电网状态(电池电压、A、B、C三相断电、A、B、C三相过压)
	{
		rtupara->CommandSendFlag[9]=false;
        SendBuf[0]=0x68;
		SetDFMeterAddr(iRtuNo,&SendBuf[1],6);
		SendBuf[7]=0x68;
        SendBuf[8]=0x01;
		SendBuf[9]=0x02;
		SendBuf[10]=0x2f+0x33;
		SendBuf[11]=0xc0+0x33;
		SendBuf[12]=DFMeter_Check(SendBuf,12);
		SendBuf[13]=0x16;
		SendLen=14;
		ChanBufRead(iChNo,RecBuf,1024);
		ChanBufWrite(iChNo,SendBuf,SendLen);
		DispBufData(iChNo,iRtuNo,0,SendBuf,SendLen,0);
		Sleep(500);
		for(i=0;i<6;i++)
		{
			ChanBufRead(iChNo,RecBuf,1);
			if(RecBuf[0]==0x68)
				break;
		}
		int iStatus = 2;
		iRet=ChanBufRead(iChNo,&RecBuf[1],9);
		RecLen=iRet+1;
		if(RecLen==10 && (RecBuf[0]==SendBuf[0] && RecBuf[1]==SendBuf[1] && RecBuf[2]==SendBuf[2] && RecBuf[3]==SendBuf[3]
			&& RecBuf[4]==SendBuf[4] && RecBuf[5]==SendBuf[5] && RecBuf[6]==SendBuf[6] && RecBuf[7]==SendBuf[7]))
		{
			iRet=ChanBufRead(iChNo,&RecBuf[10],RecBuf[9]+2);
			RecLen+=iRet;
			iStatus = 0;
			HandleDFMeterValue(8,iRtuNo,&RecBuf[12],RecLen-14);
			if (rtupara->bWorking == false)
				ChannelEvent(iRtuNo,2);
			rtupara->bWorking = true;
			rtupara->bFault = false;
			rtupara->AskTimers = 0;
		}
		else 
		{
			iStatus = 1;
			rtupara->AskTimers++;
		}
		DispBufData(iChNo,iRtuNo,1,RecBuf,RecLen,iStatus);
	}
	else
	{
		rtupara->CommandSendFlag[1]=true;//电流(A、B、C三相)
		rtupara->CommandSendFlag[2]=true;//电压(A、B、C三相)
		rtupara->CommandSendFlag[3]=true;//有功(瞬时、A、B、C三相)
		rtupara->CommandSendFlag[4]=true;//无功(瞬时、A、B、C三相)
		rtupara->CommandSendFlag[5]=true;//当前正向有功总电能
		rtupara->CommandSendFlag[6]=true;//当前反向有功总电能
		rtupara->CommandSendFlag[7]=true;//当前正向无功总电能
		rtupara->CommandSendFlag[8]=true;//当前反向无功总电能
		rtupara->CommandSendFlag[9]=true;//电表运行状态、电网状态(电池电压、A、B、C三相断电、A、B、C三相过压)
	}
	if(rtupara->AskTimers > 5)
	{
		rtupara->bWorking = false;
		if (rtupara->bFault == false)
		{
			ChannelEvent(iRtuNo,1);
			rtupara->bFault = true;
		}
		if (rtupara->AskTimers > 250)
			rtupara->AskTimers = 5;
	}
}




⌨️ 快捷键说明

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