提交 12f46dd1 作者: wysheng

1. TCU的CAN数据放入队列

2. 按照新协议修改AB抢地址
上级 11550d38
......@@ -219,6 +219,8 @@ typedef struct
#define TCU1939Addr (0x8A)
#define ChargerCont1939Addr (0xE0)
#define ChargerCont1939Addr_B (0xE1)
typedef enum
{
eCmd_start = 0x000100,// 充电启动帧
......
......@@ -77,7 +77,15 @@ void TCURecvProcess(void)
break;
case eCmd_Query: // 充电桩配置信息查询帧
TCUCommuStatus.ChgNum = pPgnRecv.Data[0];
//TCUCommuStatus.ChgNum = pPgnRecv.Data[0];
if(pPgnRecv.DA == ChargerCont1939Addr)
{
TCUCommuStatus.ChgNum = 1;
}
else if(pPgnRecv.DA == ChargerCont1939Addr_B)
{
TCUCommuStatus.ChgNum = 2;
}
TCUCommuStatus.CommStage = ChgInfornQueryStage;
TCUCommuStatus.ChgInfornQueryRecvTime = GetSystemTick();
TCUCommuStatus.ChgInfornQuerySentTime = 0;
......@@ -159,7 +167,7 @@ void DCMeasuring_A(void)
if (TCUCommuStatus.DCMeasuErrCnt > 5)
{
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT;
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
TCUCanInit(); //can通讯接口初始化
......@@ -195,7 +203,7 @@ void DCMeasuring_B(void)
if (TCUCommuStatus.DCMeasuErrCnt_B > 5)
{
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT;
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
TCUCanInit();
......@@ -340,8 +348,8 @@ void TCUPillarHeartBeat(void)
{
u32 SendTick;
if (TCUCommuStatus.HeartBeatVaild != CONNECT_NORMAL)
return;
//if (TCUCommuStatus.HeartBeatVaild != CONNECT_NORMAL)
// return;
if (0 == TCUCommuStatus.HeartBeatRecvTime) //初始12s一次
{
......@@ -352,7 +360,7 @@ void TCUPillarHeartBeat(void)
if (TCUCommuStatus.HeartBeatErrCnt > TCUCommuParam.HeartErrCntMax)
{
memset(&TCUCommuStatus, 0x00, sizeof(TCUCommuStatus)); //通讯初始化
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT;
TCUCommuStatus.HeartBeatErrCnt = 0;
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
TCUCanInit();
......@@ -383,10 +391,10 @@ void TCUPillarHeartBeat_B(void)
{
u32 SendTick;
if (TCUCommuStatus.HeartBeatVaild != CONNECT_NORMAL)
return;
//if (TCUCommuStatus.HeartBeatVaild != CONNECT_NORMAL)
// return;
if (0 == TCUCommuStatus.HeartBeatRecvTime_B) //初始12s一次
/*if (0 == TCUCommuStatus.HeartBeatRecvTime_B) //初始12s一次
{
if ((GetSystemTick() -TCUCommuStatus.HeartBeatSendTime_B) > ((u32) TCUCommuParam.HeartTimeout * 1000))
{
......@@ -394,7 +402,7 @@ void TCUPillarHeartBeat_B(void)
if (TCUCommuStatus.HeartBeatErrCnt_B > TCUCommuParam.HeartErrCntMax)
{
TCUCommuStatus.ConnectFlag = 0;
TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT;
TCUCommuStatus.HeartBeatErrCnt_B = 0;
TCUCommuStatus.HeartBeatVaild = 0; //心跳失效
TCUCanInit();
......@@ -407,7 +415,7 @@ void TCUPillarHeartBeat_B(void)
}
}
}
else
else */
{ //心跳周期
SendTick = ((u32) TCUCommuParam.HeartPeriod * 1000);
......@@ -838,16 +846,26 @@ void TCULinkProcess(void) //心跳帧处理
}
osMessageQId TcuSendMsgId = 0;
void TCUComm(void const * argument)
{
osDelay(6000);
TCUCommInit();
TcuSendMsgId = NULL;
osMessageQDef(TcuSendMsgId, 128, StructChargeSend);
TcuSendMsgId = osMessageCreate(osMessageQ(TcuSendMsgId), NULL);
for (; ; )
{
StructChargeSend DataSend;
if (pdTRUE == xQueueReceive(TcuSendMsgId, &DataSend, 0))
{
TCUSendMsg(&DataSend);
}
TCURecvProcess(); //帧接收
TCUWorkProcess(); //遥测遥信息处理
TCULinkProcess(); //心跳包处理配置信息
......@@ -855,7 +873,7 @@ void TCUComm(void const * argument)
// TCUCodeDone();//告警故障处理
// TCUSaveEventDone();
osDelay(100);
osDelay(10);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论