📄 processdfmeter.cpp
字号:
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 + -