提交 ac8d7b87 作者: wysheng

修复TCUCommInit

上级 671a93f6
#include "Thd_TCU.h"
#include "Drv_BoardIo.h"
......@@ -15,125 +16,148 @@
StructTCUCommuStatus TCUCommuStatus =
{
.ChgNum = 0,
.CommStage= HeartStage,
.ParamVaild =0,
.CommStage = HeartStage,
.ParamVaild = 0,
0,
0
};
const StructTCUCommuParam TCUCommuParam =
{
.HeartPeriod = 1,
.HeartErrCntMax = 3,
.HeartTimeout = 1,
.SignInPeriod = 60,
};//后台通信参数
};
//后台通信参数
void TCURecvProcess(void)
{
StructTCUSend pPgnRecv;
if(pdTRUE != xQueueReceive(TCUMsg, &pPgnRecv, 0))
if (pdTRUE != xQueueReceive(TCUMsg, &pPgnRecv, 0))
return;
switch(pPgnRecv.Pgn)
switch (pPgnRecv.Pgn)
{
case eCmd_start:// 充电启动帧
StartMeg(&pPgnRecv);//命令解析
case eCmd_start: // 充电启动帧
StartMeg(&pPgnRecv); //命令解析
break;
case eCmd_stop:// 充电停止帧
case eCmd_stop: // 充电停止帧
StopMeg(&pPgnRecv);
break;
case eCmd_time:// 对时帧
TCUtimeSet(&pPgnRecv);//时间设置
case eCmd_time: // 对时帧
TCUtimeSet(&pPgnRecv); //时间设置
break;
case eCmd_versi://版本校验帧
case eCmd_versi: //版本校验帧
TCUVersionCheck(&pPgnRecv);
break;
case eCmd_param:// 下发充电参数信息帧
case eCmd_param: // 下发充电参数信息帧
TCUParam(&pPgnRecv);
break;
case eCmd_SerCon:// 充电服务启停控制帧
case eCmd_SerCon: // 充电服务启停控制帧
SerConAckAnalysis(&pPgnRecv);
break;
case eCmd_Gun:// 电子锁可控制帧
case eCmd_Gun: // 电子锁可控制帧
ElectControlAnalysis(&pPgnRecv);
break;
case eCmd_power:// 功率调节控制帧
case eCmd_power: // 功率调节控制帧
PowerControlAnalysis(&pPgnRecv);
break;
case eCmd_Query:// 充电桩配置信息查询帧
case eCmd_Query: // 充电桩配置信息查询帧
TCUCommuStatus.ChgNum = pPgnRecv.Data[0];
TCUCommuStatus.CommStage =ChgInfornQueryStage;
TCUCommuStatus.ChgInfornQueryRecvTime=GetSystemTick();
TCUCommuStatus.CommStage = ChgInfornQueryStage;
TCUCommuStatus.ChgInfornQueryRecvTime = GetSystemTick();
TCUCommuStatus.ChgInfornQuerySentTime = 0;
break;
case eCmd_verificationAck://车辆验证应答帧
case eCmd_verificationAck: //车辆验证应答帧
verificationAck(&pPgnRecv);
break;
////////////状态帧/////////////////
case eCmd_startCompAck:// 充电启动完成应答帧
case eCmd_startCompAck: // 充电启动完成应答帧
ACkStartCompMeg(&pPgnRecv);
break;
case eCmd_stopCompAck:// 充电停止完成应答帧
case eCmd_stopCompAck: // 充电停止完成应答帧
stopCompAck(&pPgnRecv);
break;
///////////数据帧/直流////////////
case eCmd_DCTCUMeasu:// 计费单元遥测帧
case eCmd_DCTCUMeasu: // 计费单元遥测帧
break;
///////////心跳帧///////////
case eCmd_TcuHeart: // 计费单元心跳
AckTCUHeartBeat(&pPgnRecv);//心跳解析
AckTCUHeartBeat(&pPgnRecv); //心跳解析
break;
case eCmd_TCUErroComm: // 计费单元错误帧
case eCmd_TCUErroComm: // 计费单元错误帧
break;
default:
break;
}
}
void InformationReporting (void)
void InformationReporting(void)
{
if(TCUCommuStatus.DCConInforSendTime ==0)
if (TCUCommuStatus.DCConInforSendTime == 0)
{
InformationReporting_22_A();
InformationReporting_23_A();
TCUCommuStatus.DCConInforSendTime =GetSystemTick();
TCUCommuStatus.DCConInforSendTime = GetSystemTick();
}
else if( GetSystemTick()- TCUCommuStatus.DCConInforSendTime>= 500)
else if (GetSystemTick() -TCUCommuStatus.DCConInforSendTime >= 500)
{
InformationReporting_22_A();
InformationReporting_23_A();
TCUCommuStatus.DCConInforSendTime =GetSystemTick();
TCUCommuStatus.DCConInforSendTime = GetSystemTick();
}
if(TCUCommuStatus.DCConInforSendTime_B==0)
if (TCUCommuStatus.DCConInforSendTime_B == 0)
{
InformationReporting_22_B();
InformationReporting_23_B();
TCUCommuStatus.DCConInforSendTime_B=GetSystemTick();
TCUCommuStatus.DCConInforSendTime_B = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.DCConInforSendTime_B>= 500)
else if (GetSystemTick() -TCUCommuStatus.DCConInforSendTime_B >= 500)
{
InformationReporting_22_B();
InformationReporting_23_B();
TCUCommuStatus.DCConInforSendTime_B=GetSystemTick();
}//遥信
TCUCommuStatus.DCConInforSendTime_B = GetSystemTick();
} //遥信
}
void DCMeasuring_A(void)
{
if(0 == TCUCommuStatus.DCMeasuRecvTime)//遥测
if (0 == TCUCommuStatus.DCMeasuRecvTime) //遥测
{
if((GetSystemTick() - TCUCommuStatus.DCMeasuSendTime) > 1000)
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime) > 1000)
{
TCUCommuStatus.DCMeasuErrCnt++;
if(TCUCommuStatus.DCMeasuErrCnt > 5)
if (TCUCommuStatus.DCMeasuErrCnt > 5)
{
memset(&TCUCommuStatus,0x00,sizeof(TCUCommuStatus));//通讯初始化
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatVaild =0;//心跳失效
DcModuleCanInit_B();//can通讯接口初始化
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
DcModuleCanInit_B(); //can通讯接口初始化
}
else
{
......@@ -143,9 +167,9 @@ void DCMeasuring_A(void)
}
}
}
else//循环发送
else //循环发送
{
if((GetSystemTick() - TCUCommuStatus.DCMeasuSendTime) > 1000)
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime) > 1000)
{
measuringReporting20_A();
TCUCommuStatus.DCMeasuSendTime = GetSystemTick();
......@@ -153,36 +177,39 @@ void DCMeasuring_A(void)
}
}
}
void DCMeasuring_B(void)
{
if(0 == TCUCommuStatus.DCMeasuRecvTime_B)//遥测
if (0 == TCUCommuStatus.DCMeasuRecvTime_B) //遥测
{
if((GetSystemTick() - TCUCommuStatus.DCMeasuSendTime_B) > 1000)
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime_B) > 1000)
{
TCUCommuStatus.DCMeasuErrCnt_B++;
if(TCUCommuStatus.DCMeasuErrCnt_B > 5)
if (TCUCommuStatus.DCMeasuErrCnt_B > 5)
{
memset(&TCUCommuStatus,0x00,sizeof(TCUCommuStatus));//通讯初始化
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatVaild =0;//心跳失效
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
DcModuleCanInit_B();
}
else
{
measuringReporting20_B();
TCUCommuStatus.DCMeasuSendTime_B= GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime_B= 0;
TCUCommuStatus.DCMeasuSendTime_B = GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime_B = 0;
}
}
}
else//循环发送
else //循环发送
{
if((GetSystemTick() - TCUCommuStatus.DCMeasuSendTime_B) > 1000)
if ((GetSystemTick() -TCUCommuStatus.DCMeasuSendTime_B) > 1000)
{
measuringReporting20_B();
TCUCommuStatus.DCMeasuSendTime_B= GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime_B= 0;
TCUCommuStatus.DCMeasuSendTime_B = GetSystemTick();
TCUCommuStatus.DCMeasuRecvTime_B = 0;
}
}
}
......@@ -194,17 +221,18 @@ void ConEMSend(void)
static u32 ConEMSendEcount = 0;
static u32 ConEMSendTick_B = 0;
static u32 ConEMSendEcount_B = 0;
if(TCUCommuStatus.ConEMSendFlag ==1)
if (TCUCommuStatus.ConEMSendFlag == 1)
{
TcuEMMsg(TCUCommuStatus.ErrData.Mult);//帧超时
ConEMSendTick =GetSystemTick();
TCUCommuStatus.ConEMSendFlag =2;
TcuEMMsg(TCUCommuStatus.ErrData.Mult); //帧超时
ConEMSendTick = GetSystemTick();
TCUCommuStatus.ConEMSendFlag = 2;
}
else if(TCUCommuStatus.ConEMSendFlag == 2 )
else if (TCUCommuStatus.ConEMSendFlag == 2)
{
if(GetSystemTick()-ConEMSendTick >=250)
if (GetSystemTick() -ConEMSendTick >= 250)
{
if(ConEMSendEcount < 20)
if (ConEMSendEcount < 20)
{
ConEMSendEcount++;
TcuEMMsg(TCUCommuStatus.ErrData.Mult);
......@@ -212,81 +240,88 @@ void ConEMSend(void)
else
{
ConEMSendTick = 0;
TCUCommuStatus.ConEMSendFlag =0;
if(TCUCurChgRecd.TCUChargeEnable == 0)
TCUCommuStatus.ConEMSendFlag = 0;
if (TCUCurChgRecd.TCUChargeEnable == 0)
TCUCommuStatus.ErrData.Mult = 0;
ConEMSendEcount = 0;
}
}
else
{
ConEMSendTick = 0;
TCUCommuStatus.ConEMSendFlag =0;
TCUCommuStatus.ConEMSendFlag = 0;
TCUCommuStatus.ErrData.Mult = 0;
ConEMSendEcount = 0;
}
}
if(TCUCommuStatus.ConEMSendFlag_B==1)
if (TCUCommuStatus.ConEMSendFlag_B == 1)
{
TcuEMMsg_B(TCUCommuStatus.ErrData_B.Mult);//帧超时
TcuEMMsg_B(TCUCommuStatus.ErrData_B.Mult); //帧超时
ConEMSendTick_B = GetSystemTick();
TCUCommuStatus.ConEMSendFlag_B= 2;
TCUCommuStatus.ConEMSendFlag_B = 2;
}
else if(TCUCommuStatus.ConEMSendFlag_B== 2 )
else if (TCUCommuStatus.ConEMSendFlag_B == 2)
{
if(GetSystemTick()-ConEMSendTick_B>=250)
if (GetSystemTick() -ConEMSendTick_B >= 250)
{
if(ConEMSendEcount_B< 20)
if (ConEMSendEcount_B < 20)
{
ConEMSendEcount_B++;
TcuEMMsg_B(TCUCommuStatus.ErrData_B.Mult);
}
else
{
ConEMSendTick_B= 0;
TCUCommuStatus.ConEMSendFlag_B=0;
ConEMSendTick_B = 0;
TCUCommuStatus.ConEMSendFlag_B = 0;
TCUCommuStatus.ErrData_B.Mult = 0;
ConEMSendEcount_B= 0;
ConEMSendEcount_B = 0;
}
}
}
else
{
ConEMSendTick_B= 0;
TCUCommuStatus.ConEMSendFlag_B=0;
if(TCUCurChgRecd_B.TCUChargeEnable == 0)
TCUCommuStatus.ErrData_B.Mult = 0;//主动停机结束帧发送完成或主动TCU停机时置0
ConEMSendEcount_B= 0;
ConEMSendTick_B = 0;
TCUCommuStatus.ConEMSendFlag_B = 0;
if (TCUCurChgRecd_B.TCUChargeEnable == 0)
TCUCommuStatus.ErrData_B.Mult = 0; //主动停机结束帧发送完成或主动TCU停机时置0
ConEMSendEcount_B = 0;
}
}
void CommutionConfigurationStage(void)
{
if(TCUCommuStatus.CommStage == VersionStage)
if (TCUCommuStatus.CommStage == VersionStage)
{
if(GetSystemTick()- TCUCommuStatus.VersionRecvTime <=2000)//2S
if (GetSystemTick() -TCUCommuStatus.VersionRecvTime <= 2000) //2S
{
if(TCUCommuStatus.VersionSentTime == 0)
if (TCUCommuStatus.VersionSentTime == 0)
{
TCUVersionCheckSent();
TCUCommuStatus.VersionSentTime = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.VersionSentTime>=500)
else if (GetSystemTick() -TCUCommuStatus.VersionSentTime >= 500)
{
TCUVersionCheckSent();
TCUCommuStatus.VersionSentTime = GetSystemTick();
}
}
else if(GetSystemTick()- TCUCommuStatus.VersionRecvTime >=5000)
else if (GetSystemTick() -TCUCommuStatus.VersionRecvTime >= 5000)
{
if(TCUCommuStatus.ChgNum ==2)
if (TCUCommuStatus.ChgNum == 2)
{
TCUCommuStatus.ErrData.Value.Param= 1;
TCUCommuStatus.ConEMSendFlag =1;
TCUCommuStatus.ErrData.Value.Param = 1;
TCUCommuStatus.ConEMSendFlag = 1;
}
else
{
TCUCommuStatus.ErrData_B.Value.Param= 1;
TCUCommuStatus.ConEMSendFlag_B=1;
TCUCommuStatus.ErrData_B.Value.Param = 1;
TCUCommuStatus.ConEMSendFlag_B = 1;
}
TCUCommuStatus.CommStage = HeartStage;
......@@ -294,22 +329,27 @@ void CommutionConfigurationStage(void)
}
}
void TCUPillarHeartBeat(void)
{
u32 SendTick;
if(TCUCommuStatus.HeartBeatVaild ==0)
if (TCUCommuStatus.HeartBeatVaild == 0)
return;
if(0 == TCUCommuStatus.HeartBeatRecvTime)//初始12s一次
if (0 == TCUCommuStatus.HeartBeatRecvTime) //初始12s一次
{
if((GetSystemTick() - TCUCommuStatus.HeartBeatSendTime) > ((u32)TCUCommuParam.HeartTimeout*1000))
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime) > ((u32) TCUCommuParam.HeartTimeout * 1000))
{
TCUCommuStatus.HeartBeatErrCnt++;
if(TCUCommuStatus.HeartBeatErrCnt > TCUCommuParam.HeartErrCntMax)
if (TCUCommuStatus.HeartBeatErrCnt > TCUCommuParam.HeartErrCntMax)
{
memset(&TCUCommuStatus,0x00,sizeof(TCUCommuStatus));//通讯初始化
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatVaild =0;//心跳失效
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
DcModuleCanInit_B();
}
else
......@@ -321,10 +361,10 @@ void TCUPillarHeartBeat(void)
}
}
else
{//心跳周期
SendTick = ((u32)TCUCommuParam.HeartPeriod*1000);
{ //心跳周期
SendTick = ((u32) TCUCommuParam.HeartPeriod * 1000);
if((GetSystemTick() - TCUCommuStatus.HeartBeatSendTime) > SendTick)
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime) > SendTick)
{
TCUHeartBeat_A();
TCUCommuStatus.HeartBeatSendTime = GetSystemTick();
......@@ -333,21 +373,25 @@ void TCUPillarHeartBeat(void)
}
}
void TCUPillarHeartBeat_B(void)
{
u32 SendTick;
if(TCUCommuStatus.HeartBeatVaild ==0)
if (TCUCommuStatus.HeartBeatVaild == 0)
return;
if(0 == TCUCommuStatus.HeartBeatRecvTime_B)//初始12s一次
if (0 == TCUCommuStatus.HeartBeatRecvTime_B) //初始12s一次
{
if((GetSystemTick() - TCUCommuStatus.HeartBeatSendTime_B) > ((u32)TCUCommuParam.HeartTimeout*1000))
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime_B) > ((u32) TCUCommuParam.HeartTimeout * 1000))
{
TCUCommuStatus.HeartBeatErrCnt_B++;
if(TCUCommuStatus.HeartBeatErrCnt_B> TCUCommuParam.HeartErrCntMax)
if (TCUCommuStatus.HeartBeatErrCnt_B > TCUCommuParam.HeartErrCntMax)
{
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.HeartBeatErrCnt_B= 0;
TCUCommuStatus.HeartBeatVaild =0;//心跳失效
TCUCommuStatus.HeartBeatErrCnt_B = 0;
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
DcModuleCanInit_B();
}
else
......@@ -359,30 +403,31 @@ void TCUPillarHeartBeat_B(void)
}
}
else
{//心跳周期
SendTick = ((u32)TCUCommuParam.HeartPeriod*1000);
{ //心跳周期
SendTick = ((u32) TCUCommuParam.HeartPeriod * 1000);
if((GetSystemTick() - TCUCommuStatus.HeartBeatSendTime_B) > SendTick)
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime_B) > SendTick)
{
TCUHeartBeat_B();
TCUCommuStatus.HeartBeatSendTime_B= GetSystemTick();
TCUCommuStatus.HeartBeatRecvTime_B= 0;
TCUCommuStatus.HeartBeatSendTime_B = GetSystemTick();
TCUCommuStatus.HeartBeatRecvTime_B = 0;
}
}
}
void CommutionRunStage(void)
{
if((TCUCommuStatus.CommStage == ChageParamStage))
if ((TCUCommuStatus.CommStage == ChageParamStage))
{
if(GetSystemTick()- TCUCommuStatus.ParamRecvTime <=2000)//2S参数反馈
if (GetSystemTick() -TCUCommuStatus.ParamRecvTime <= 2000) //2S参数反馈
{
if(TCUCommuStatus.ParamSentTime == 0)
if (TCUCommuStatus.ParamSentTime == 0)
{
TCUParamAck();
TCUCommuStatus.ParamSentTime = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.ParamSentTime>=500)
else if (GetSystemTick() -TCUCommuStatus.ParamSentTime >= 500)
{
TCUParamAck();
TCUCommuStatus.ParamSentTime = GetSystemTick();
......@@ -390,19 +435,20 @@ void CommutionRunStage(void)
}
else
{
TCUCommuStatus.CommStage =HeartStage;
TCUCommuStatus.CommStage = HeartStage;
}
}
if((TCUCommuStatus.CommStage == TimeStage))
if ((TCUCommuStatus.CommStage == TimeStage))
{
if(GetSystemTick()- TCUCommuStatus.TimeRecvTime <=2000)//2S对时
if (GetSystemTick() -TCUCommuStatus.TimeRecvTime <= 2000) //2S对时
{
if(TCUCommuStatus.TimeSentTime == 0)
if (TCUCommuStatus.TimeSentTime == 0)
{
TCUtimeSetAck();
TCUCommuStatus.TimeSentTime = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.TimeSentTime>=500)
else if (GetSystemTick() -TCUCommuStatus.TimeSentTime >= 500)
{
TCUtimeSetAck();
TCUCommuStatus.TimeSentTime = GetSystemTick();
......@@ -410,19 +456,20 @@ void CommutionRunStage(void)
}
else
{
TCUCommuStatus.CommStage =HeartStage;
TCUCommuStatus.CommStage = HeartStage;
}
}
if((TCUCommuStatus.CommStage == ServiceContralStage))
if ((TCUCommuStatus.CommStage == ServiceContralStage))
{
if(GetSystemTick()- TCUCommuStatus.ServiceContralRecvTime <=2000)//2S
if (GetSystemTick() -TCUCommuStatus.ServiceContralRecvTime <= 2000) //2S
{
if(TCUCommuStatus.ServiceContralSentTime == 0)
if (TCUCommuStatus.ServiceContralSentTime == 0)
{
SerConAck();
TCUCommuStatus.ServiceContralSentTime = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.ServiceContralSentTime>=500)
else if (GetSystemTick() -TCUCommuStatus.ServiceContralSentTime >= 500)
{
SerConAck();
TCUCommuStatus.ServiceContralSentTime = GetSystemTick();
......@@ -430,19 +477,20 @@ void CommutionRunStage(void)
}
else
{
TCUCommuStatus.CommStage =HeartStage;
TCUCommuStatus.CommStage = HeartStage;
}
}
if((TCUCommuStatus.CommStage == ElectLockStage))
if ((TCUCommuStatus.CommStage == ElectLockStage))
{
if(GetSystemTick()- TCUCommuStatus.ElectLockRecvTime <=2000)//2S
if (GetSystemTick() -TCUCommuStatus.ElectLockRecvTime <= 2000) //2S
{
if(TCUCommuStatus.ElectLockSentTime == 0)
if (TCUCommuStatus.ElectLockSentTime == 0)
{
ElectControlAck();
TCUCommuStatus.ElectLockSentTime = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.ElectLockSentTime>=500)
else if (GetSystemTick() -TCUCommuStatus.ElectLockSentTime >= 500)
{
ElectControlAck();
TCUCommuStatus.ElectLockSentTime = GetSystemTick();
......@@ -450,19 +498,20 @@ void CommutionRunStage(void)
}
else
{
TCUCommuStatus.CommStage =HeartStage;
TCUCommuStatus.CommStage = HeartStage;
}
}
if((TCUCommuStatus.CommStage == PowerControlStage))
if ((TCUCommuStatus.CommStage == PowerControlStage))
{
if(GetSystemTick()- TCUCommuStatus.ElectLockRecvTime <=2000)//2S
if (GetSystemTick() -TCUCommuStatus.ElectLockRecvTime <= 2000) //2S
{
if(TCUCommuStatus.PowerControlSentTime == 0)
if (TCUCommuStatus.PowerControlSentTime == 0)
{
PowerControlAck();
TCUCommuStatus.PowerControlSentTime = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.PowerControlSentTime>=500)
else if (GetSystemTick() -TCUCommuStatus.PowerControlSentTime >= 500)
{
PowerControlAck();
TCUCommuStatus.PowerControlSentTime = GetSystemTick();
......@@ -470,19 +519,20 @@ void CommutionRunStage(void)
}
else
{
TCUCommuStatus.CommStage =HeartStage;
TCUCommuStatus.CommStage = HeartStage;
}
}
if((TCUCommuStatus.CommStage == ChgInfornQueryStage))
if ((TCUCommuStatus.CommStage == ChgInfornQueryStage))
{
if(GetSystemTick()- TCUCommuStatus.ChgInfornQueryRecvTime <=2000)//2S
if (GetSystemTick() -TCUCommuStatus.ChgInfornQueryRecvTime <= 2000) //2S
{
if(TCUCommuStatus.ChgInfornQuerySentTime == 0)
if (TCUCommuStatus.ChgInfornQuerySentTime == 0)
{
ChgInfornQueryAck();
TCUCommuStatus.ChgInfornQuerySentTime = GetSystemTick();
}
else if(GetSystemTick()- TCUCommuStatus.ChgInfornQuerySentTime>=500)
else if (GetSystemTick() -TCUCommuStatus.ChgInfornQuerySentTime >= 500)
{
ChgInfornQueryAck();
TCUCommuStatus.ChgInfornQuerySentTime = GetSystemTick();
......@@ -490,89 +540,93 @@ void CommutionRunStage(void)
}
else
{
TCUCommuStatus.CommStage =HeartStage;
TCUCommuStatus.CommStage = HeartStage;
}
}
}
void TCUCurChgRecordInterface_A(void)
{
static u32 ChgRecordSendTick = 0;
static u32 ChgRecordSendErr = 0;//停止完成帧
static u32 ChgRecordSendErr = 0; //停止完成帧
static u32 ChgStopSendTick = 0;
static u32 ChgStopSendEcount = 0;//停止帧
static u32 ChgStopSendEcount = 0; //停止帧
static u32 ChgStartSendTick = 0;
static u32 ChgStartSendEcount = 0;//启动帧
static u32 ChgStartSendEcount = 0; //启动帧
static u32 ChgStartCompSendTick = 0;
static u32 ChgStartCompSendEcount = 0;//启动完成帧
if(TCUCurChgRecd.TCUChgStartNotetrl ==1)//启动帧逻辑
static u32 ChgStartCompSendEcount = 0; //启动完成帧
if (TCUCurChgRecd.TCUChgStartNotetrl == 1) //启动帧逻辑
{
StartMegAck_A();//启动帧发送
ChgStartSendTick =GetSystemTick();
TCUCurChgRecd.TCUChgStartNotetrl =2;
StartMegAck_A(); //启动帧发送
ChgStartSendTick = GetSystemTick();
TCUCurChgRecd.TCUChgStartNotetrl = 2;
}
else if(TCUCurChgRecd.TCUChgStartNotetrl == 2 )
else if (TCUCurChgRecd.TCUChgStartNotetrl == 2)
{
if(GetSystemTick()-ChgStartSendTick >=250)
if (GetSystemTick() -ChgStartSendTick >= 250)
{
if(ChgStartSendEcount < 8)//2S
if (ChgStartSendEcount < 8) //2S
{
ChgStartSendEcount++;
StartMegAck_A();//启动帧发送
StartMegAck_A(); //启动帧发送
}
else
{
ChgStartSendTick = 0;
TCUCurChgRecd.TCUChgStartNotetrl =0;//停止发送
TCUCurChgRecd.TCUChgStartNotetrl = 0; //停止发送
ChgStartSendEcount = 0;
}
}
}
else if(TCUCurChgRecd.TCUChgStarCompNotetrl == 1)
else if (TCUCurChgRecd.TCUChgStarCompNotetrl == 1)
{
stopCompSend_A();
ChgStartCompSendTick = GetSystemTick();
TCUCurChgRecd.TCUChgStarCompNotetrl = 2;
}
else if(TCUCurChgRecd.TCUChgStarCompNotetrl == 2)
else if (TCUCurChgRecd.TCUChgStarCompNotetrl == 2)
{
if((GetSystemTick() - ChgStartCompSendTick) > (250))
if ((GetSystemTick() -ChgStartCompSendTick) > (250))
{
ChgStartCompSendEcount++;
if(ChgRecordSendErr < 20)//超时5S
{//超时小于20次
if (ChgRecordSendErr < 20) //超时5S
{ //超时小于20次
startCompSend_B();
ChgRecordSendTick = GetSystemTick();
}
else
{//超时大于,保存
TCUCommuStatus.ConEMSendFlag_B= 1;//错误帧发送
{ //超时大于,保存
TCUCommuStatus.ConEMSendFlag_B = 1; //错误帧发送
TCUCommuStatus.ErrData.Value.startCompAck = 1;
TCUCurChgRecd.TCUChgStarCompNotetrl =3;
TCUCurChgRecd.TCUChgStarCompNotetrl = 3;
TCUCurChgRecd.TCUChargeEnable =0;//超时停机
TCUCurChgRecd.TCUChargeEnable = 0; //超时停机
ChgStartCompSendEcount = 0;
}
}
}
else if(TCUCurChgRecd_B.TCUChgStarCompNotetrl == 3)
else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 3)
{
TCUCurChgRecd_B.TCUStartCompresult = 0;//
TCUCurChgRecd_B.TCUChargeEnable= 0;//归零
TCUCurChgRecd_B.TCUStartCompresult = 0; //
TCUCurChgRecd_B.TCUChargeEnable = 0; //归零
TCUCurChgRecd_B.StarChgType = 0;
ChgStartCompSendEcount =0;
ChgStartCompSendEcount = 0;
}
else if(TCUCurChgRecd.TCUChgStopNotetrl ==1)//停止帧逻辑
else if (TCUCurChgRecd.TCUChgStopNotetrl == 1) //停止帧逻辑
{
StopMegAck_A();//停止帧发送
ChgStopSendTick =GetSystemTick();
TCUCurChgRecd.TCUChgStopNotetrl =2;
StopMegAck_A(); //停止帧发送
ChgStopSendTick = GetSystemTick();
TCUCurChgRecd.TCUChgStopNotetrl = 2;
}
else if(TCUCurChgRecd.TCUChgStopNotetrl == 2 )
else if (TCUCurChgRecd.TCUChgStopNotetrl == 2)
{
if(GetSystemTick()-ChgStopSendTick >=250)
if (GetSystemTick() -ChgStopSendTick >= 250)
{
if(ChgStopSendEcount < 8)
if (ChgStopSendEcount < 8)
{
ChgStopSendEcount++;
StopMegAck_A();
......@@ -580,46 +634,49 @@ void TCUCurChgRecordInterface_A(void)
else
{
ChgStopSendTick = 0;
TCUCurChgRecd.TCUChgStopNotetrl =0;//停止发送
TCUCurChgRecd.TCUChgStopNotetrl = 0; //停止发送
ChgStopSendEcount = 0;
}
}
}
else if((TCUCurChgRecd.TCUChgStopCompNotetrl == 1)//停止完成帧逻辑
&&(0 != TCUCurChgRecd.TCUChargeEnable))
else if ((TCUCurChgRecd.TCUChgStopCompNotetrl == 1) //停止完成帧逻辑
&& (0 != TCUCurChgRecd.TCUChargeEnable))
{
stopCompSend_A();
ChgRecordSendTick = GetSystemTick();
TCUCurChgRecd.TCUChgStopCompNotetrl = 2;
}
else if((TCUCurChgRecd.TCUChgStopCompNotetrl == 2)&&(0 != TCUCurChgRecd.TCUChargeEnable))
else if ((TCUCurChgRecd.TCUChgStopCompNotetrl == 2) && (0 != TCUCurChgRecd.TCUChargeEnable))
{
if((GetSystemTick() - ChgRecordSendTick) > (250))
if ((GetSystemTick() -ChgRecordSendTick) > (250))
{
ChgRecordSendErr++;
if(ChgRecordSendErr < 20)//超时5S
{//超时小于20次
if (ChgRecordSendErr < 20) //超时5S
{ //超时小于20次
stopCompSend_A();
ChgRecordSendTick = GetSystemTick();
}
else
{//超时大于,保存
{ //超时大于,保存
TCUCommuStatus.ConEMSendFlag = 1;
TCUCommuStatus.ErrData.Value.stopCompAck = 1;
TCUCurChgRecd.TCUChgStopCompNotetrl =3;
TCUCurChgRecd.TCUChgStopCompNotetrl = 3;
ChgRecordSendErr = 0;
}
}
}
else if((TCUCurChgRecd.TCUChgStopCompNotetrl == 3)&&(0 != TCUCurChgRecd.TCUChargeEnable))
else if ((TCUCurChgRecd.TCUChgStopCompNotetrl == 3) && (0 != TCUCurChgRecd.TCUChargeEnable))
{
TCUCurChgRecd.TCUChgStopCompNotetrl = 0;//超时触发
TCUCurChgRecd.TCUChargeEnable = 0;//归零
TCUCurChgRecd.TCUChgStopCompNotetrl = 0; //超时触发
TCUCurChgRecd.TCUChargeEnable = 0; //归零
TCUCurChgRecd.TCUChgStopType = 0;
ChgRecordSendErr = 0;
}
}
void TCUCurChgRecordInterface_B(void)
{
static u32 ChgRecordSendTick = 0;
......@@ -627,76 +684,78 @@ void TCUCurChgRecordInterface_B(void)
static u32 ChgStopSendTick = 0;
static u32 ChgStopSendEcount = 0;
static u32 ChgStartSendTick = 0;
static u32 ChgStartSendEcount = 0;//启动帧
static u32 ChgStartSendEcount = 0; //启动帧
static u32 ChgStartCompSendTick = 0;
static u32 ChgStartCompSendEcount = 0;//启动完成帧
if(TCUCurChgRecd_B.TCUChgStartNotetrl ==1)//启动帧逻辑
static u32 ChgStartCompSendEcount = 0; //启动完成帧
if (TCUCurChgRecd_B.TCUChgStartNotetrl == 1) //启动帧逻辑
{
StartMegAck_B();//启动帧发送
ChgStartSendTick =GetSystemTick();
TCUCurChgRecd_B.TCUChgStartNotetrl =2;
StartMegAck_B(); //启动帧发送
ChgStartSendTick = GetSystemTick();
TCUCurChgRecd_B.TCUChgStartNotetrl = 2;
}
else if(TCUCurChgRecd_B.TCUChgStartNotetrl == 2 )
else if (TCUCurChgRecd_B.TCUChgStartNotetrl == 2)
{
if(GetSystemTick()-ChgStartSendTick >=250)
if (GetSystemTick() -ChgStartSendTick >= 250)
{
if(ChgStartSendEcount < 8)//2S
if (ChgStartSendEcount < 8) //2S
{
ChgStartSendEcount++;
StartMegAck_B();//启动帧发送
StartMegAck_B(); //启动帧发送
}
else
{
ChgStartSendTick = 0;
TCUCurChgRecd_B.TCUChgStartNotetrl =0;//停止发送
TCUCurChgRecd_B.TCUChgStartNotetrl = 0; //停止发送
ChgStartSendEcount = 0;
}
}
}
else if(TCUCurChgRecd_B.TCUChgStarCompNotetrl == 1)
else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 1)
{
stopCompSend_B();
ChgStartCompSendTick = GetSystemTick();
TCUCurChgRecd_B.TCUChgStarCompNotetrl = 2;
}
else if(TCUCurChgRecd_B.TCUChgStarCompNotetrl == 2)
else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 2)
{
if((GetSystemTick() - ChgStartCompSendTick) > (250))
if ((GetSystemTick() -ChgStartCompSendTick) > (250))
{
ChgStartCompSendEcount++;
if(ChgRecordSendErr < 20)//超时5S
{//超时小于20次
if (ChgRecordSendErr < 20) //超时5S
{ //超时小于20次
startCompSend_B();
ChgRecordSendTick = GetSystemTick();
}
else
{//超时大于,保存
TCUCommuStatus.ConEMSendFlag_B= 1;//错误帧发送
{ //超时大于,保存
TCUCommuStatus.ConEMSendFlag_B = 1; //错误帧发送
TCUCommuStatus.ErrData_B.Value.startCompAck = 1;
TCUCurChgRecd_B.TCUChargeEnable =0;//超时停机
TCUCurChgRecd_B.TCUChgStarCompNotetrl =3;
TCUCurChgRecd_B.TCUChargeEnable = 0; //超时停机
TCUCurChgRecd_B.TCUChgStarCompNotetrl = 3;
ChgStartCompSendEcount = 0;
}
}
}
else if(TCUCurChgRecd_B.TCUChgStarCompNotetrl == 3)
else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 3)
{
TCUCurChgRecd_B.TCUStartCompresult = 0;//
TCUCurChgRecd_B.TCUChargeEnable= 0;//归零
TCUCurChgRecd_B.TCUStartCompresult = 0; //
TCUCurChgRecd_B.TCUChargeEnable = 0; //归零
TCUCurChgRecd_B.StarChgType = 0;
ChgStartCompSendEcount = 0;
}
else if(TCUCurChgRecd.TCUChgStopNotetrl ==1)
else if (TCUCurChgRecd.TCUChgStopNotetrl == 1)
{
StopMegAck_B();
ChgStopSendTick =GetSystemTick();
TCUCurChgRecd_B.TCUChgStopNotetrl =2;
ChgStopSendTick = GetSystemTick();
TCUCurChgRecd_B.TCUChgStopNotetrl = 2;
}
else if(TCUCurChgRecd_B.TCUChgStopNotetrl == 2 )
else if (TCUCurChgRecd_B.TCUChgStopNotetrl == 2)
{
if(GetSystemTick()-ChgStopSendTick >=250)
if (GetSystemTick() -ChgStopSendTick >= 250)
{
if(ChgStopSendEcount < 8)
if (ChgStopSendEcount < 8)
{
ChgStopSendEcount++;
StopMegAck_B();
......@@ -704,80 +763,89 @@ void TCUCurChgRecordInterface_B(void)
else
{
ChgStopSendTick = 0;
TCUCurChgRecd_B.TCUChgStopNotetrl =0;//停止发送
TCUCurChgRecd_B.TCUChgStopNotetrl = 0; //停止发送
ChgStopSendEcount = 0;
}
}
}
else if((TCUCurChgRecd_B.TCUChgStopCompNotetrl == 1)
&&(0 != TCUCurChgRecd_B.TCUChargeEnable))
else if ((TCUCurChgRecd_B.TCUChgStopCompNotetrl == 1) && (0 != TCUCurChgRecd_B.TCUChargeEnable))
{
stopCompSend_B();
ChgRecordSendTick = GetSystemTick();
TCUCurChgRecd_B.TCUChgStopCompNotetrl = 2;
}
else if((TCUCurChgRecd_B.TCUChgStopCompNotetrl == 2)&&(0 != TCUCurChgRecd_B.TCUChargeEnable))
else if ((TCUCurChgRecd_B.TCUChgStopCompNotetrl == 2) && (0 != TCUCurChgRecd_B.TCUChargeEnable))
{
if((GetSystemTick() - ChgRecordSendTick) > (250))
if ((GetSystemTick() -ChgRecordSendTick) > (250))
{
ChgRecordSendErr++;
if(ChgRecordSendErr < 20)//超时5S
{//超时小于20次
if (ChgRecordSendErr < 20) //超时5S
{ //超时小于20次
stopCompSend_B();
ChgRecordSendTick = GetSystemTick();
}
else
{//超时大于,保存
TCUCommuStatus.ConEMSendFlag_B= 1;//错误帧发送
{ //超时大于,保存
TCUCommuStatus.ConEMSendFlag_B = 1; //错误帧发送
TCUCommuStatus.ErrData_B.Value.stopCompAck = 1;
TCUCurChgRecd_B.TCUChgStopCompNotetrl =3;
TCUCurChgRecd_B.TCUChgStopCompNotetrl = 3;
ChgRecordSendErr = 0;
}
}
}
else if((TCUCurChgRecd_B.TCUChgStopCompNotetrl == 3)&&(0 != TCUCurChgRecd_B.TCUChargeEnable))
else if ((TCUCurChgRecd_B.TCUChgStopCompNotetrl == 3) && (0 != TCUCurChgRecd_B.TCUChargeEnable))
{
TCUCurChgRecd_B.TCUChgStopCompNotetrl = 0;//超时触发
TCUCurChgRecd_B.TCUChargeEnable= 0;//归零
TCUCurChgRecd_B.TCUChgStopCompNotetrl = 0; //超时触发
TCUCurChgRecd_B.TCUChargeEnable = 0; //归零
TCUCurChgRecd_B.TCUChgStopType = 0;
ChgRecordSendErr = 0;
}
}
void TCUChgStarStopProcess( void)//充电流启停程逻辑
void TCUChgStarStopProcess(void) //充电流启停程逻辑
{
TCUCurChgRecordInterface_A();
TCUCurChgRecordInterface_B();
}
void TCUWorkProcess(void)
{
if(TCUCommuStatus.VerChkVaild==0)//版本检验未完成不发送
if (TCUCommuStatus.VerChkVaild == 0) //版本检验未完成不发送
return;
InformationReporting();//遥信
DCMeasuring_A();//遥测
DCMeasuring_B();//遥测
InformationReporting(); //遥信
DCMeasuring_A(); //遥测
DCMeasuring_B(); //遥测
}
void TCULinkProcess(void)//心跳帧处理
void TCULinkProcess(void) //心跳帧处理
{
TCUPillarHeartBeat();//心跳处理
TCUPillarHeartBeat_B();//心跳处理
CommutionConfigurationStage();//配置阶段
CommutionRunStage();//运行阶段
ConEMSend();//ab超时发送逻辑
TCUPillarHeartBeat(); //心跳处理
TCUPillarHeartBeat_B(); //心跳处理
CommutionConfigurationStage(); //配置阶段
CommutionRunStage(); //运行阶段
ConEMSend(); //ab超时发送逻辑
}
void TCUComm(void const *argument)
void TCUComm(void const * argument)
{
DcModuleCanInit_B();
/**/osDelay(6000);
for(;;)
TCUCommInit();
//DcModuleCanInit_B();
/**/ osDelay(6000);
for (; ; )
{
TCURecvProcess();//帧接收
TCUWorkProcess();//遥测遥信息处理
TCULinkProcess();//心跳包处理配置信息
TCUChgStarStopProcess();//启停逻辑处理
TCURecvProcess(); //帧接收
TCUWorkProcess(); //遥测遥信息处理
TCULinkProcess(); //心跳包处理配置信息
TCUChgStarStopProcess(); //启停逻辑处理
// TCUCodeDone();//告警故障处理
// TCUSaveEventDone();
......@@ -785,3 +853,4 @@ void TCUComm(void const *argument)
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论