提交 396d6c6b 作者: wysheng

简化超时检测

上级 b053e7c3
...@@ -414,7 +414,7 @@ StructTCUEM TCUChgContralTCUEM_B; ...@@ -414,7 +414,7 @@ StructTCUEM TCUChgContralTCUEM_B;
StructTCUCControl TCUControlInfo = StructTCUCControl TCUControlInfo =
{ {
.ChargingServiceFlag = 1, .ChargingServiceFlag = 2,
.version = 0x0230, .version = 0x0230,
.ChargeNum = .ChargeNum =
{ {
...@@ -1468,10 +1468,12 @@ void AckTCUHeartBeat(StructTCUSend * pPgnRecv) ...@@ -1468,10 +1468,12 @@ void AckTCUHeartBeat(StructTCUSend * pPgnRecv)
if (pPgnRecv->DA == ChargerCont1939Addr) if (pPgnRecv->DA == ChargerCont1939Addr)
{ {
TCUCommuStatus.HeartBeatErrCnt = 0; TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatRecvTime = GetSystemTick();
} }
if (pPgnRecv->DA == ChargerCont1939Addr_B)
{
TCUCommuStatus.HeartBeatErrCnt_B = 0;
}
TCUCommuStatus.ConnectFlag = CONNECT_NORMAL; //tcu检测控制器心跳状态 TCUCommuStatus.ConnectFlag = CONNECT_NORMAL; //tcu检测控制器心跳状态
TCUCommuStatus.HeartBeatVaild = 1; //控制器检测tcu心跳状态 TCUCommuStatus.HeartBeatVaild = 1; //控制器检测tcu心跳状态
...@@ -1485,7 +1487,6 @@ void TCUtimeSet(StructTCUSend * pPgnRecv) ...@@ -1485,7 +1487,6 @@ void TCUtimeSet(StructTCUSend * pPgnRecv)
cp56time2a * time = NULL; cp56time2a * time = NULL;
//TCUCommuStatus.ChgNum = pPgnRecv->Data[0];
if(pPgnRecv->DA == ChargerCont1939Addr) if(pPgnRecv->DA == ChargerCont1939Addr)
{ {
TCUCommuStatus.ChgNum = 1; TCUCommuStatus.ChgNum = 1;
...@@ -1495,7 +1496,7 @@ void TCUtimeSet(StructTCUSend * pPgnRecv) ...@@ -1495,7 +1496,7 @@ void TCUtimeSet(StructTCUSend * pPgnRecv)
TCUCommuStatus.ChgNum = 2; TCUCommuStatus.ChgNum = 2;
} }
TCUCommuStatus.TimeRecvTime = GetSystemTick();
TCUCommuStatus.CommStage = TimeStage; TCUCommuStatus.CommStage = TimeStage;
memcpy(time, &pPgnRecv->Data[1], 7); memcpy(time, &pPgnRecv->Data[1], 7);
...@@ -1562,8 +1563,7 @@ void TCUVersionCheck(StructTCUSend * pPgnRecv) ...@@ -1562,8 +1563,7 @@ void TCUVersionCheck(StructTCUSend * pPgnRecv)
{ {
TCUCommuStatus.VerChkVaild = 1; //版本校验成功 TCUCommuStatus.VerChkVaild = 1; //版本校验成功
TCUCommuStatus.CommStage = VersionStage; TCUCommuStatus.CommStage = VersionStage;
TCUCommuStatus.VersionRecvTime = GetSystemTick();
TCUCommuStatus.VersionSentTime = 0; //版本发送初始话
} }
else else
TCUCommuStatus.VerChkVaild = 0; //版本校验失败 TCUCommuStatus.VerChkVaild = 0; //版本校验失败
...@@ -1580,7 +1580,7 @@ void TCUVersionCheckSent(void) ...@@ -1580,7 +1580,7 @@ void TCUVersionCheckSent(void)
0 0
}; };
Data[0] = 0;//TCUCommuStatus.ChgNum; Data[0] = 0;
Data[1] = TCUControlInfo.version; Data[1] = TCUControlInfo.version;
Data[2] = (u8) (TCUControlInfo.version >> 8); Data[2] = (u8) (TCUControlInfo.version >> 8);
if(TCUCommuStatus.ChgNum == 1) if(TCUCommuStatus.ChgNum == 1)
...@@ -1597,7 +1597,6 @@ void TCUVersionCheckSent(void) ...@@ -1597,7 +1597,6 @@ void TCUVersionCheckSent(void)
void TCUParam(StructTCUSend * pPgnRecv) void TCUParam(StructTCUSend * pPgnRecv)
{ {
//TCUCommuStatus.ChgNum = pPgnRecv->Data[0];
if(pPgnRecv->DA == ChargerCont1939Addr) if(pPgnRecv->DA == ChargerCont1939Addr)
{ {
TCUCommuStatus.ChgNum = 1; TCUCommuStatus.ChgNum = 1;
...@@ -1608,8 +1607,7 @@ void TCUParam(StructTCUSend * pPgnRecv) ...@@ -1608,8 +1607,7 @@ void TCUParam(StructTCUSend * pPgnRecv)
} }
TCUCommuStatus.CommStage = ChageParamStage; TCUCommuStatus.CommStage = ChageParamStage;
memcpy(TCUControlInfo.ChargeNum, &pPgnRecv->Data[0], 8); memcpy(TCUControlInfo.ChargeNum, &pPgnRecv->Data[0], 8);
TCUCommuStatus.ParamRecvTime = GetSystemTick();
TCUCommuStatus.ParamSentTime = 0; //参数发送初始化
} }
...@@ -1659,8 +1657,7 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv) ...@@ -1659,8 +1657,7 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv)
TCUCommuStatus.ChgNum = 2; TCUCommuStatus.ChgNum = 2;
} }
TCUCommuStatus.CommStage = ServiceContralStage; TCUCommuStatus.CommStage = ServiceContralStage;
TCUCommuStatus.ServiceContralRecvTime = GetSystemTick();
TCUCommuStatus.ServiceContralSentTime = 0;
if ((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02)) if ((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02))
TCUCommuStatus.ServiceContralVaildValue = 1; //数据合法性校验失败 TCUCommuStatus.ServiceContralVaildValue = 1; //数据合法性校验失败
...@@ -1725,9 +1722,9 @@ void ElectControlAnalysis(StructTCUSend * pPgnRecv) ...@@ -1725,9 +1722,9 @@ void ElectControlAnalysis(StructTCUSend * pPgnRecv)
{ {
TCUCommuStatus.ChgNum = 2; TCUCommuStatus.ChgNum = 2;
} }
TCUCommuStatus.ElectLockRecvTime = GetSystemTick();
TCUCommuStatus.CommStage = ElectLockStage; TCUCommuStatus.CommStage = ElectLockStage;
TCUCommuStatus.ElectLockSentTime = 0;
TCUCommuStatus.ElectLockSetValue = pPgnRecv->Data[2]; TCUCommuStatus.ElectLockSetValue = pPgnRecv->Data[2];
if (((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02)) || ((pPgnRecv->Data[2] != 0x01) && if (((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02)) || ((pPgnRecv->Data[2] != 0x01) &&
...@@ -1815,8 +1812,7 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv) ...@@ -1815,8 +1812,7 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv)
TCUCommuStatus.ChgNum = 2; TCUCommuStatus.ChgNum = 2;
} }
TCUCommuStatus.CommStage = PowerControlStage; TCUCommuStatus.CommStage = PowerControlStage;
TCUCommuStatus.PowerControlRecvTime = GetSystemTick();
TCUCommuStatus.PowerControlSentTime = 0;
TCUCommuStatus.PowerControltype = pPgnRecv->Data[1]; TCUCommuStatus.PowerControltype = pPgnRecv->Data[1];
TCUCommuStatus.PowerControlParam = pPgnRecv->Data[2] + (u16) TCUCommuStatus.PowerControlParam = pPgnRecv->Data[2] + (u16)
pPgnRecv->Data[3] << 8; pPgnRecv->Data[3] << 8;
...@@ -2395,11 +2391,11 @@ void TCUMeasuRecv(StructTCUSend * pPgnRecv) ...@@ -2395,11 +2391,11 @@ void TCUMeasuRecv(StructTCUSend * pPgnRecv)
{ {
if(pPgnRecv->DA == ChargerCont1939Addr) if(pPgnRecv->DA == ChargerCont1939Addr)
{ {
TCUCommuStatus.DCMeasuRecvTime = GetSystemTick(); TCUCommuStatus.DCMeasuErrCnt = 0;
} }
else if(pPgnRecv->DA == ChargerCont1939Addr_B) else if(pPgnRecv->DA == ChargerCont1939Addr_B)
{ {
TCUCommuStatus.DCMeasuRecvTime_B = GetSystemTick(); TCUCommuStatus.DCMeasuErrCnt_B = 0;
} }
} }
......
...@@ -29,7 +29,7 @@ const StructTCUCommuParam TCUCommuParam = ...@@ -29,7 +29,7 @@ const StructTCUCommuParam TCUCommuParam =
{ {
.HeartPeriod = 1, .HeartPeriod = 1,
.HeartErrCntMax = 3, .HeartErrCntMax = 3,
.HeartTimeout = 3, .HeartTimeout = 1,
.SignInPeriod = 60, .SignInPeriod = 60,
}; };
...@@ -87,8 +87,7 @@ void TCURecvProcess(void) ...@@ -87,8 +87,7 @@ void TCURecvProcess(void)
TCUCommuStatus.ChgNum = 2; TCUCommuStatus.ChgNum = 2;
} }
TCUCommuStatus.CommStage = ChgInfornQueryStage; TCUCommuStatus.CommStage = ChgInfornQueryStage;
TCUCommuStatus.ChgInfornQueryRecvTime = GetSystemTick();
TCUCommuStatus.ChgInfornQuerySentTime = 0;
break; break;
case eCmd_verificationAck: //车辆验证应答帧 case eCmd_verificationAck: //车辆验证应答帧
...@@ -128,42 +127,29 @@ void TCURecvProcess(void) ...@@ -128,42 +127,29 @@ void TCURecvProcess(void)
void InformationReporting(void) void InformationReporting(void)
{ {
if (TCUCommuStatus.DCConInforSendTime == 0) //遥信
{ static u32 DCConInforSendTime = 0;
InformationReporting_22_A(); if (GetSystemTick() -DCConInforSendTime >= 500)
InformationReporting_23_A();
TCUCommuStatus.DCConInforSendTime = GetSystemTick();
}
else if (GetSystemTick() -TCUCommuStatus.DCConInforSendTime >= 500)
{ {
DCConInforSendTime = GetSystemTick();
InformationReporting_22_A(); InformationReporting_22_A();
InformationReporting_23_A(); InformationReporting_23_A();
TCUCommuStatus.DCConInforSendTime = GetSystemTick();
}
if (TCUCommuStatus.DCConInforSendTime_B == 0)
{
InformationReporting_22_B(); InformationReporting_22_B();
InformationReporting_23_B(); InformationReporting_23_B();
TCUCommuStatus.DCConInforSendTime_B = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.DCConInforSendTime_B >= 500)
{
InformationReporting_22_B();
InformationReporting_23_B();
TCUCommuStatus.DCConInforSendTime_B = GetSystemTick();
} //遥信
} }
void DCMeasuring_A(void) void DCMeasuring_A(void)
{ {
if (0 == TCUCommuStatus.DCMeasuRecvTime) //遥测 static u32 DCMeasuRecvTime = 0;
{
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime) > 2000) if ((GetSystemTick() - DCMeasuRecvTime) > 1000)
{ {
TCUCommuStatus.DCMeasuErrCnt++; TCUCommuStatus.DCMeasuErrCnt++;
DCMeasuRecvTime = GetSystemTick();
if (TCUCommuStatus.DCMeasuErrCnt > 5) if (TCUCommuStatus.DCMeasuErrCnt > 5)
{ {
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化 memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
...@@ -175,31 +161,9 @@ void DCMeasuring_A(void) ...@@ -175,31 +161,9 @@ void DCMeasuring_A(void)
else else
{ {
measuringReporting20_A(); measuringReporting20_A();
TCUCommuStatus.DCMeasuSendTime = GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime = 0;
}
}
}
else //循环发送
{
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime) > 1000)
{
measuringReporting20_A();
TCUCommuStatus.DCMeasuSendTime = GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime = 0;
}
} }
}
void DCMeasuring_B(void)
{
if (0 == TCUCommuStatus.DCMeasuRecvTime_B) //遥测
{
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime_B) > 2000)
{
TCUCommuStatus.DCMeasuErrCnt_B++; TCUCommuStatus.DCMeasuErrCnt_B++;
if (TCUCommuStatus.DCMeasuErrCnt_B > 5) if (TCUCommuStatus.DCMeasuErrCnt_B > 5)
{ {
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化 memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
...@@ -211,23 +175,14 @@ void DCMeasuring_B(void) ...@@ -211,23 +175,14 @@ void DCMeasuring_B(void)
else else
{ {
measuringReporting20_B(); measuringReporting20_B();
TCUCommuStatus.DCMeasuSendTime_B = GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime_B = 0;
}
}
}
else //循环发送
{
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime_B) > 1000)
{
measuringReporting20_B();
TCUCommuStatus.DCMeasuSendTime_B = GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime_B = 0;
} }
} }
} }
void ConEMSend(void) void ConEMSend(void)
{ {
static u32 ConEMSendTick = 0; static u32 ConEMSendTick = 0;
...@@ -309,24 +264,23 @@ void ConEMSend(void) ...@@ -309,24 +264,23 @@ void ConEMSend(void)
void CommutionConfigurationStage(void) void CommutionConfigurationStage(void)
{ {
static EnumTCUCommStage oldStage;
static u32 VersionRecvTime = 0;
static u32 VersionSendTimes = 0;
if (TCUCommuStatus.CommStage == VersionStage) if (TCUCommuStatus.CommStage == VersionStage)
{ {
if (GetSystemTick() -TCUCommuStatus.VersionRecvTime <= 2000) //2S if(oldStage != VersionStage)
{ {
if (TCUCommuStatus.VersionSentTime == 0) VersionRecvTime = 0;
{ VersionSendTimes = 0;
TCUVersionCheckSent();
TCUCommuStatus.VersionSentTime = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.VersionSentTime >= 500)
if (GetSystemTick() - VersionRecvTime >= 500)
{ {
TCUVersionCheckSent(); VersionSendTimes++;
TCUCommuStatus.VersionSentTime = GetSystemTick(); if(VersionSendTimes > 5000/500)
}
}
else if (GetSystemTick() -TCUCommuStatus.VersionRecvTime >= 5000)
{ {
if (TCUCommuStatus.ChgNum == 2) if (TCUCommuStatus.ChgNum == 1)
{ {
TCUCommuStatus.ErrData.Value.Param = 1; TCUCommuStatus.ErrData.Value.Param = 1;
TCUCommuStatus.ConEMSendFlag = 1; TCUCommuStatus.ConEMSendFlag = 1;
...@@ -338,225 +292,169 @@ void CommutionConfigurationStage(void) ...@@ -338,225 +292,169 @@ void CommutionConfigurationStage(void)
} }
TCUCommuStatus.CommStage = HeartStage; TCUCommuStatus.CommStage = HeartStage;
}
else
{
TCUVersionCheckSent();
} }
} }
}
oldStage = TCUCommuStatus.CommStage;
} }
void TCUPillarHeartBeat(void) void TCUPillarHeartBeat(void)
{ {
u32 SendTick; static u32 SendTick = 0;
if ((GetSystemTick() - SendTick) < 1000)
{
return;
}
SendTick = GetSystemTick();
TCUHeartBeat_A();
TCUHeartBeat_B();
//if (TCUCommuStatus.HeartBeatVaild != CONNECT_NORMAL)
// return;
if (0 == TCUCommuStatus.HeartBeatRecvTime) //初始12s一次
{
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime) > ((u32) TCUCommuParam.HeartTimeout * 1000))
{
TCUCommuStatus.HeartBeatErrCnt++; TCUCommuStatus.HeartBeatErrCnt++;
if (TCUCommuStatus.HeartBeatErrCnt > TCUCommuParam.HeartErrCntMax) if(TCUCommuStatus.HeartBeatErrCnt > 5)
{ {
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化 memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT; TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT;
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
TCUCanInit(); TCUCanInit();
} }
else
{
TCUHeartBeat_A();
TCUCommuStatus.HeartBeatSendTime = GetSystemTick();
TCUCommuStatus.HeartBeatRecvTime = 0;
}
}
}
else
{ //心跳周期
SendTick = ((u32) TCUCommuParam.HeartPeriod * 1000);
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime) > SendTick)
{
TCUHeartBeat_A();
TCUCommuStatus.HeartBeatSendTime = GetSystemTick();
TCUCommuStatus.HeartBeatRecvTime = 0;
}
}
} }
void TCUPillarHeartBeat_B(void) void CommutionRunStage(void)
{ {
u32 SendTick; static EnumTCUCommStage oldStage;
//if (TCUCommuStatus.HeartBeatVaild != CONNECT_NORMAL)
// return;
/*if (0 == TCUCommuStatus.HeartBeatRecvTime_B) //初始12s一次 static u32 sendTick = 0;
{ static u8 sendTimes = 0;
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime_B) > ((u32) TCUCommuParam.HeartTimeout * 1000))
{
TCUCommuStatus.HeartBeatErrCnt_B++;
if (TCUCommuStatus.HeartBeatErrCnt_B > TCUCommuParam.HeartErrCntMax)
{
TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT;
TCUCommuStatus.HeartBeatErrCnt_B = 0;
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
TCUCanInit();
}
else
{
TCUHeartBeat_B();
TCUCommuStatus.HeartBeatSendTime = GetSystemTick();
TCUCommuStatus.HeartBeatRecvTime = 0;
}
}
}
else */
{ //心跳周期
SendTick = ((u32) TCUCommuParam.HeartPeriod * 1000);
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime_B) > SendTick) if(oldStage != TCUCommuStatus.CommStage)
{ {
TCUHeartBeat_B(); sendTick = 0;
TCUCommuStatus.HeartBeatSendTime_B = GetSystemTick(); sendTimes = 0;
TCUCommuStatus.HeartBeatRecvTime_B = 0;
} }
}
}
void CommutionRunStage(void)
{
if ((TCUCommuStatus.CommStage == ChageParamStage)) if ((TCUCommuStatus.CommStage == ChageParamStage))
{ {
if (GetSystemTick() -TCUCommuStatus.ParamRecvTime <= 2000) //2S参数反馈 if(GetSystemTick() - sendTick >= 500)
{ {
if (TCUCommuStatus.ParamSentTime == 0) sendTick = GetSystemTick();
sendTimes++;
if(sendTimes > 2000/500)
{ {
TCUParamAck(); TCUCommuStatus.CommStage = HeartStage;
TCUCommuStatus.ParamSentTime = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.ParamSentTime >= 500) else
{ {
TCUParamAck(); TCUParamAck();
TCUCommuStatus.ParamSentTime = GetSystemTick();
}
} }
else
{
TCUCommuStatus.CommStage = HeartStage;
} }
} }
if ((TCUCommuStatus.CommStage == TimeStage)) if ((TCUCommuStatus.CommStage == TimeStage))
{ {
if (GetSystemTick() -TCUCommuStatus.TimeRecvTime <= 2000) //2S对时 if(GetSystemTick() - sendTick >= 500)
{ {
if (TCUCommuStatus.TimeSentTime == 0) sendTimes++;
sendTick = GetSystemTick();
if(sendTimes > 2000/500)
{ {
TCUtimeSetAck(); TCUCommuStatus.CommStage = HeartStage;
TCUCommuStatus.TimeSentTime = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.TimeSentTime >= 500) else
{ {
TCUtimeSetAck(); TCUtimeSetAck();
TCUCommuStatus.TimeSentTime = GetSystemTick();
} }
} }
else
{
TCUCommuStatus.CommStage = HeartStage;
}
} }
if ((TCUCommuStatus.CommStage == ServiceContralStage)) if ((TCUCommuStatus.CommStage == ServiceContralStage))
{ {
if (GetSystemTick() -TCUCommuStatus.ServiceContralRecvTime <= 2000) //2S if(GetSystemTick() - sendTick >= 500)
{ {
if (TCUCommuStatus.ServiceContralSentTime == 0) sendTimes++;
sendTick = GetSystemTick();
if(sendTimes > 2000/500)
{ {
SerConAck(); TCUCommuStatus.CommStage = HeartStage;
TCUCommuStatus.ServiceContralSentTime = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.ServiceContralSentTime >= 500) else
{ {
SerConAck(); SerConAck();
TCUCommuStatus.ServiceContralSentTime = GetSystemTick();
}
} }
else
{
TCUCommuStatus.CommStage = HeartStage;
} }
} }
if ((TCUCommuStatus.CommStage == ElectLockStage)) if ((TCUCommuStatus.CommStage == ElectLockStage))
{ {
if (GetSystemTick() -TCUCommuStatus.ElectLockRecvTime <= 2000) //2S if(GetSystemTick() - sendTick >= 500)
{ {
if (TCUCommuStatus.ElectLockSentTime == 0) sendTimes++;
sendTick = GetSystemTick();
if(sendTimes > 2000/500)
{ {
ElectControlAck(); TCUCommuStatus.CommStage = HeartStage;
TCUCommuStatus.ElectLockSentTime = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.ElectLockSentTime >= 500) else
{ {
ElectControlAck(); ElectControlAck();
TCUCommuStatus.ElectLockSentTime = GetSystemTick();
} }
} }
else
{
TCUCommuStatus.CommStage = HeartStage;
}
} }
if ((TCUCommuStatus.CommStage == PowerControlStage)) if ((TCUCommuStatus.CommStage == PowerControlStage))
{ {
if (GetSystemTick() -TCUCommuStatus.ElectLockRecvTime <= 2000) //2S if(GetSystemTick() - sendTick >= 500)
{ {
if (TCUCommuStatus.PowerControlSentTime == 0) sendTimes++;
sendTick = GetSystemTick();
if(sendTimes > 2000/500)
{ {
PowerControlAck(); TCUCommuStatus.CommStage = HeartStage;
TCUCommuStatus.PowerControlSentTime = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.PowerControlSentTime >= 500) else
{ {
PowerControlAck(); PowerControlAck();
TCUCommuStatus.PowerControlSentTime = GetSystemTick();
} }
} }
else
{
TCUCommuStatus.CommStage = HeartStage;
}
} }
if ((TCUCommuStatus.CommStage == ChgInfornQueryStage)) if ((TCUCommuStatus.CommStage == ChgInfornQueryStage))
{ {
if (GetSystemTick() -TCUCommuStatus.ChgInfornQueryRecvTime <= 2000) //2S if(GetSystemTick() - sendTick >= 500)
{ {
if (TCUCommuStatus.ChgInfornQuerySentTime == 0) sendTimes++;
sendTick = GetSystemTick();
if(sendTimes > 2000/500)
{ {
ChgInfornQueryAck(); TCUCommuStatus.CommStage = HeartStage;
TCUCommuStatus.ChgInfornQuerySentTime = GetSystemTick();
} }
else if (GetSystemTick() -TCUCommuStatus.ChgInfornQuerySentTime >= 500) else
{ {
ChgInfornQueryAck(); ChgInfornQueryAck();
TCUCommuStatus.ChgInfornQuerySentTime = GetSystemTick();
} }
} }
else
{
TCUCommuStatus.CommStage = HeartStage;
}
} }
oldStage = TCUCommuStatus.CommStage;
} }
...@@ -828,8 +726,8 @@ void SendStatus(void) ...@@ -828,8 +726,8 @@ void SendStatus(void)
ChgStutusSendTick = GetSystemTick(); ChgStutusSendTick = GetSystemTick();
data[0] = 0; data[0] = 0;
data[1] = ChargeCtrl.CurProcess; //待完善 04/29 data[1] = ChargeCtrl.CurProcess; //待完善 04/29
TCUSinglePackSendMsg(data, 6, eCmd_startComp, 4,ChargerCont1939Addr); TCUSinglePackSendMsg(data, 6, eCmd_status, 4,ChargerCont1939Addr);
TCUSinglePackSendMsg(data, 6, eCmd_startComp, 4,ChargerCont1939Addr_B); TCUSinglePackSendMsg(data, 6, eCmd_status, 4,ChargerCont1939Addr_B);
} }
} }
...@@ -847,14 +745,13 @@ void TCUWorkProcess(void) ...@@ -847,14 +745,13 @@ void TCUWorkProcess(void)
InformationReporting(); //遥信 InformationReporting(); //遥信
DCMeasuring_A(); //遥测 DCMeasuring_A(); //遥测
DCMeasuring_B(); //遥测
} }
void TCULinkProcess(void) //心跳帧处理 void TCULinkProcess(void) //心跳帧处理
{ {
TCUPillarHeartBeat(); //心跳处理 TCUPillarHeartBeat(); //心跳处理
TCUPillarHeartBeat_B(); //心跳处理
CommutionConfigurationStage(); //配置阶段 CommutionConfigurationStage(); //配置阶段
CommutionRunStage(); //运行阶段 CommutionRunStage(); //运行阶段
ConEMSend(); //ab超时发送逻辑 ConEMSend(); //ab超时发送逻辑
......
...@@ -44,36 +44,20 @@ typedef struct ...@@ -44,36 +44,20 @@ typedef struct
{ {
EnumTCUCommStage CommStage; EnumTCUCommStage CommStage;
u8 ChgNum; u8 ChgNum;
u32 VersionRecvTime;
u32 VersionSentTime;
u8 VerChkVaild; u8 VerChkVaild;
u32 ParamRecvTime;
u32 ParamSentTime;
u8 ParamVaild; u8 ParamVaild;
u32 TimeRecvTime;
u32 TimeSentTime;
u32 ServiceContralRecvTime;
u32 ServiceContralSentTime;
u8 ChargingServiceSetValue;//保留下发设置值 u8 ChargingServiceSetValue;//保留下发设置值
u8 ServiceContralVaildValue;//服务控制下发失败原因 0成功 u8 ServiceContralVaildValue;//服务控制下发失败原因 0成功
u32 ElectLockRecvTime;
u32 ElectLockSentTime;
u8 ElectLockSetValue;//保留下发设置值 u8 ElectLockSetValue;//保留下发设置值
u8 ElectLockVaildValue;//电子锁控制下发失败原因 0成功 u8 ElectLockVaildValue;//电子锁控制下发失败原因 0成功
u32 PowerControlRecvTime;
u32 PowerControlSentTime;
u8 PowerControltype; u8 PowerControltype;
u16 PowerControlParam; u16 PowerControlParam;
u8 PowerControlVaildValue;//功率调节失败原因 u8 PowerControlVaildValue;//功率调节失败原因
u32 ChgInfornQueryRecvTime;
u32 ChgInfornQuerySentTime;
u8 ConnectFlag;//0 未连接 其他已连接 u8 ConnectFlag;//0 未连接 其他已连接
u8 HeartBeatVaild;//接收心跳有效标志位 u8 HeartBeatVaild;//接收心跳有效标志位
u8 HeartBeatErrCnt; u8 HeartBeatErrCnt;
...@@ -81,18 +65,6 @@ typedef struct ...@@ -81,18 +65,6 @@ typedef struct
u16 HeartBeatNumCnt; u16 HeartBeatNumCnt;
u16 HeartBeatLoseCnt; u16 HeartBeatLoseCnt;
u32 HeartBeatSendTime;
u32 HeartBeatSendTime_B;
u32 HeartBeatRecvTime;
u32 HeartBeatRecvTime_B;
u32 DCConInforSendTime;
u32 DCConInforSendTime_B;
u32 DCMeasuSendTime;
u32 DCMeasuSendTime_B;
u32 DCMeasuRecvTime;
u32 DCMeasuRecvTime_B;
u32 DCMeasuErrCnt; u32 DCMeasuErrCnt;
u32 DCMeasuErrCnt_B; u32 DCMeasuErrCnt_B;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论