提交 da0c4803 作者: wysheng

修复tcu通信的一些问题;绝缘检测待解决

上级 bf30d83f
...@@ -1804,14 +1804,14 @@ void AckTCUHeartBeat(StructTCUSend * pPgnRecv) ...@@ -1804,14 +1804,14 @@ void AckTCUHeartBeat(StructTCUSend * pPgnRecv)
{ {
TCUCommuStatus.HeartBeatErrCnt = 0; TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.ConnectFlag = CONNECT_NORMAL; //tcu检测控制器心跳状态 TCUCommuStatus.ConnectFlag = CONNECT_NORMAL; //tcu检测控制器心跳状态
TCUCommuStatus.HeartBeatVaild = 1; //控制器检测tcu心跳状态 //TCUCommuStatus.HeartBeatVaild = 1; //控制器检测tcu心跳状态
} }
if (pPgnRecv->DA == ChargerCont1939Addr_B) if (pPgnRecv->DA == ChargerCont1939Addr_B)
{ {
TCUCommuStatus_B.HeartBeatErrCnt = 0; TCUCommuStatus_B.HeartBeatErrCnt = 0;
TCUCommuStatus_B.ConnectFlag = CONNECT_NORMAL; //tcu检测控制器心跳状态 TCUCommuStatus_B.ConnectFlag = CONNECT_NORMAL; //tcu检测控制器心跳状态
TCUCommuStatus_B.HeartBeatVaild = 1; //控制器检测tcu心跳状态 //TCUCommuStatus_B.HeartBeatVaild = 1; //控制器检测tcu心跳状态
} }
} }
...@@ -1945,11 +1945,13 @@ void TCUParam(StructTCUSend * pPgnRecv) ...@@ -1945,11 +1945,13 @@ void TCUParam(StructTCUSend * pPgnRecv)
if (pPgnRecv->DA == ChargerCont1939Addr) if (pPgnRecv->DA == ChargerCont1939Addr)
{ {
TCUCommuStatus.CommStage = ChageParamStage; TCUCommuStatus.CommStage = ChageParamStage;
TCUCommuStatus.ParamVaild = 1;
memcpy(TCUControlInfo.ChargeNum, &pPgnRecv->Data[0], 8); memcpy(TCUControlInfo.ChargeNum, &pPgnRecv->Data[0], 8);
} }
else if (pPgnRecv->DA == ChargerCont1939Addr_B) else if (pPgnRecv->DA == ChargerCont1939Addr_B)
{ {
TCUCommuStatus_B.CommStage = ChageParamStage; TCUCommuStatus_B.CommStage = ChageParamStage;
TCUCommuStatus_B.ParamVaild = 1;
memcpy(TCUControlInfo.ChargeNum, &pPgnRecv->Data[0], 8); memcpy(TCUControlInfo.ChargeNum, &pPgnRecv->Data[0], 8);
} }
} }
...@@ -2016,7 +2018,7 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv) ...@@ -2016,7 +2018,7 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv)
if ((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02)) if ((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02))
TCUCommuStatus.ServiceContralVaildValue = 1; //数据合法性校验失败 TCUCommuStatus.ServiceContralVaildValue = 1; //数据合法性校验失败
else if ((TCUCommuStatus.ConnectFlag == CONNECT_TIMEOUT) || (TCUCommuStatus.HeartBeatVaild)) else if ((TCUCommuStatus.ConnectFlag == CONNECT_TIMEOUT)/* || (TCUCommuStatus.HeartBeatVaild)*/)
TCUCommuStatus.ServiceContralVaildValue = 2; //通讯超时 TCUCommuStatus.ServiceContralVaildValue = 2; //通讯超时
else if (TCUCommuStatus.VerChkVaild == 0) else if (TCUCommuStatus.VerChkVaild == 0)
TCUCommuStatus.ServiceContralVaildValue = 3; //版本校验未完成 TCUCommuStatus.ServiceContralVaildValue = 3; //版本校验未完成
...@@ -2038,7 +2040,7 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv) ...@@ -2038,7 +2040,7 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv)
if ((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02)) if ((pPgnRecv->Data[1] != 0x01) && (pPgnRecv->Data[1] != 0x02))
TCUCommuStatus_B.ServiceContralVaildValue = 1; //数据合法性校验失败 TCUCommuStatus_B.ServiceContralVaildValue = 1; //数据合法性校验失败
else if ((TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT) || (TCUCommuStatus_B.HeartBeatVaild)) else if ((TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT)/* || (TCUCommuStatus_B.HeartBeatVaild)*/)
TCUCommuStatus_B.ServiceContralVaildValue = 2; //通讯超时 TCUCommuStatus_B.ServiceContralVaildValue = 2; //通讯超时
else if (TCUCommuStatus_B.VerChkVaild == 0) else if (TCUCommuStatus_B.VerChkVaild == 0)
TCUCommuStatus_B.ServiceContralVaildValue = 3; //版本校验未完成 TCUCommuStatus_B.ServiceContralVaildValue = 3; //版本校验未完成
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "Drv_ImdJyc.h" #include "Drv_ImdJyc.h"
#define ImdCheckFreq (200)//ms #define ImdCheckFreq (200)//ms
#define DcModOutTimeOut (22000)//ms #define DcModOutTimeOut (11000)//ms
#define VoltWaitTimeOut (1000)//ms #define VoltWaitTimeOut (1000)//ms
#define ChkWaitTimeOut (12000)//(8500)//ms #define ChkWaitTimeOut (12000)//(8500)//ms
#define ChkTimeOut (1500)//ms #define ChkTimeOut (1500)//ms
......
...@@ -1010,67 +1010,57 @@ void Thd_Mult(void const *parameter) ...@@ -1010,67 +1010,57 @@ void Thd_Mult(void const *parameter)
} }
#endif #endif
/*绝缘检测通讯故障判断*/ /*绝缘检测通讯故障判断*/
if((GetSystemTick() - ImdCheckTcik) >= 600) if((GetSystemTick() - ImdCheckTcik) >= 500)
{ {
//if(eChgVer_2011 != UserParam.ChgVer ImdCheckTcik = GetSystemTick();
// || eLcdPro_FactoryTest == LcdCtrl.CurScreen static u8 flag = 0;
// || eLcdPro_B_FactoryTest == LcdCtrl.CurScreen if(flag == 0)
// ) {
{ flag = 1;
if(0 == ImdRead(&ImdValue)) if(0 == ImdRead(&ImdValue))
{ {
if(ImdErrorCnt > 2) if(ImdErrorCnt > 2)
ImdErrorCnt -= 2; ImdErrorCnt -= 2;
else if(ImdErrorCnt > 0) else if(ImdErrorCnt > 0)
ImdErrorCnt--; ImdErrorCnt--;
ImdValue.Vaild = 1;
}
else
{
if(ImdErrorCnt < 5)
ImdErrorCnt++;
else
{
ImdErrorCnt = 5;
ImdValue.Vaild = 0;
}
}
} ImdValue.Vaild = 1;
//else }
//{ else
// ImdErrorCnt = 0; {
// ImdErrorCnt_B = 0; if(ImdErrorCnt < 5)
// ImdValue.Vaild = 0; ImdErrorCnt++;
// ImdValue_B.Vaild = 0; else
//} {
ImdErrorCnt = 5;
ImdCheckTcik = GetSystemTick(); ImdValue.Vaild = 0;
} }
if((GetSystemTick() - ImdCheckTcik_B) >= 550) }
{
if(0 == ImdRead_B(&ImdValue_B))
{
if(ImdErrorCnt_B > 2)
ImdErrorCnt_B -= 2;
else if(ImdErrorCnt_B > 0)
ImdErrorCnt_B--;
ImdValue_B.Vaild = 1;
} }
else else
{ {
if(ImdErrorCnt_B < 5) flag = 0;
ImdErrorCnt_B++; if(0 == ImdRead_B(&ImdValue_B))
{
if(ImdErrorCnt_B > 2)
ImdErrorCnt_B -= 2;
else if(ImdErrorCnt_B > 0)
ImdErrorCnt_B--;
ImdValue_B.Vaild = 1;
}
else else
{ {
ImdErrorCnt_B = 5; if(ImdErrorCnt_B < 5)
ImdValue_B.Vaild = 0; ImdErrorCnt_B++;
else
{
ImdErrorCnt_B = 5;
ImdValue_B.Vaild = 0;
}
} }
} }
ImdCheckTcik_B= GetSystemTick(); }
}
if(0 == ImdErrorCnt) if(0 == ImdErrorCnt)
PillarError.Value.ImdDev = 0; PillarError.Value.ImdDev = 0;
else if((5 == ImdErrorCnt)&&((TCUCurChgRecd_B.TCUChargeEnable == 0)&&(TCUCurChgRecd.TCUChargeEnable==0)&&(eChgVer_2011 != UserParam.ChgVer))) else if((5 == ImdErrorCnt)&&((TCUCurChgRecd_B.TCUChargeEnable == 0)&&(TCUCurChgRecd.TCUChargeEnable==0)&&(eChgVer_2011 != UserParam.ChgVer)))
...@@ -1085,7 +1075,7 @@ void Thd_Mult(void const *parameter) ...@@ -1085,7 +1075,7 @@ void Thd_Mult(void const *parameter)
{ {
OnesCheckTcik = GetSystemTick(); OnesCheckTcik = GetSystemTick();
extern void OnesCheckTcikHandle(void); extern void OnesCheckTcikHandle(void);
OnesCheckTcikHandle(); //OnesCheckTcikHandle();
} }
osDelay(25); osDelay(25);
} }
......
...@@ -10,15 +10,16 @@ ...@@ -10,15 +10,16 @@
#define CONNECT_TIMEOUT 1 #define CONNECT_TIMEOUT 1
typedef enum { typedef enum {
HeartStage = 0, //心跳阶段默认 TCUConfig = 0, //心跳阶段默认
VersionStage = 1, VersionStage = 1,
ChageParamStage = 2, ChageParamStage = 2,
TimeStage = 3, HeartStage = 3,
ServiceContralStage = 4, TimeStage = 4,
ElectLockStage = 5, ServiceContralStage = 5,
PowerControlStage = 6, ElectLockStage = 6,
ChgInfornQueryStage = 7, PowerControlStage = 7,
StartDownloadStage = 8, ChgInfornQueryStage = 8,
StartDownloadStage = 9,
} EnumTCUCommStage; } EnumTCUCommStage;
...@@ -64,10 +65,10 @@ typedef struct { ...@@ -64,10 +65,10 @@ typedef struct {
u8 PowerControlVaildValue; //功率调节失败原因 u8 PowerControlVaildValue; //功率调节失败原因
u8 ConnectFlag; //0 未连接 其他已连接 u8 ConnectFlag; //0 未连接 其他已连接
u8 HeartBeatVaild; //接收心跳有效标志位 //u8 HeartBeatVaild; //接收心跳有效标志位
u8 HeartBeatErrCnt; u8 HeartBeatErrCnt;
u16 HeartBeatNumCnt; //u16 HeartBeatNumCnt;
u16 HeartBeatLoseCnt; //u16 HeartBeatLoseCnt;
u32 DCMeasuErrCnt; u32 DCMeasuErrCnt;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论