提交 da0c4803 作者: wysheng

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

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