提交 89661e88 作者: wysheng

修复TCU多包发送,修复上报BMS错误,修复状态长度

上级 f76994c6
......@@ -529,10 +529,20 @@ void TCUMultiPackSendMsg(u8 * pfram, u16 len, EnumTCUCommPgn cmd, u8 Prio, u8 ad
else if (i == ((len + 3 + 2) / 7 + 1)) //最后一包
{
FrameSend.Data[0] = i;
memcpy(&FrameSend.Data[1], &pfram[lenFlag], len - lenFlag);
FrameSend.Data[len - lenFlag] = (u8)checkSum;
FrameSend.Data[len - lenFlag + 1] = (u8) (checkSum >> 8);
memset(&FrameSend.Data[len - lenFlag + 1 + 1], 0x00, 6 - len + lenFlag);
if(len >= lenFlag)
{
memcpy(&FrameSend.Data[1], &pfram[lenFlag], len - lenFlag + 1);
FrameSend.Data[len - lenFlag+2] = (u8)checkSum;
FrameSend.Data[len - lenFlag + 3] = (u8) (checkSum >> 8);
memset(&FrameSend.Data[len - lenFlag + 4], 0x00, 4 - len + lenFlag);
}
else
{
FrameSend.Data[1] = (u8)checkSum;
FrameSend.Data[2] = (u8) (checkSum >> 8);
memset(&FrameSend.Data[3], 0x00, 5);
}
}
else
{
......@@ -1964,7 +1974,7 @@ void InformationReporting_22_A(void)
(0 != CemMsg.Cem.Value.Bsd)) && (TCUCurChgRecd.TCUChargeEnable == 1))
InformainReport_A.InfRe.BMSComm = 01;
else
InformainReport_A.InfRe.BMSComm = 01;
InformainReport_A.InfRe.BMSComm = 00;
InformainReport_A.InfRe.InVoltHi = 00;
InformainReport_A.InfRe.InVoltlo = 00;
......@@ -2080,7 +2090,7 @@ void InformationReporting_22_B(void)
(0 != CemMsg_B.Cem.Value.Bsd)) && (TCUCurChgRecd_B.TCUChargeEnable == 1))
InformainReport_B.InfRe.BMSComm = 01;
else
InformainReport_B.InfRe.BMSComm = 01;
InformainReport_B.InfRe.BMSComm = 00;
InformainReport_B.InfRe.InVoltHi = 00;
InformainReport_B.InfRe.InVoltlo = 00;
......@@ -2265,10 +2275,10 @@ void measuringReporting20_B(void)
void ChgInfornQueryAck(void)
{
u8 data[64]={0};
u8 len = 0;
data[len++] = 0;//TCUCommuStatus.ChgNum;
u8 len = 0;
u8 data[64]={0};
data[len++] = 0;
memcpy(&data[len], TCUControlInfo.ManufacturerCode, 4);
len += 4;
memcpy(&data[len], TCUControlInfo.DeviceModel, 2);
......@@ -2281,12 +2291,10 @@ void ChgInfornQueryAck(void)
len += 4;
data[len++] = TCUControlInfo.BmsVersion;
data[len++] = (u8)
TCUControlInfo.DcMaxVolt;
data[len++] = (u8) (TCUControlInfo.DcMaxVolt >> 8);
data[len++] = (u8)
TCUControlInfo.DcMinVolt;
data[len++] = (u8) (TCUControlInfo.DcMinVolt >> 8);
data[len++] = (u8)TCUControlInfo.DcMaxVolt;
data[len++] = (u8)(TCUControlInfo.DcMaxVolt >> 8);
data[len++] = (u8)TCUControlInfo.DcMinVolt;
data[len++] = (u8)(TCUControlInfo.DcMinVolt >> 8);
data[len++] = (u8) (4000 - TCUControlInfo.DcMaxCurrt);
data[len++] = (u8) ((4000 - TCUControlInfo.DcMaxCurrt) >> 8);
......
......@@ -879,9 +879,9 @@ void SendStatus(void)
ChgStutusSendTick = GetSystemTick();
data[0] = 0;
data[1] = TcuGetChgStatus();
TCUSinglePackSendMsg(data, 6, eCmd_status, 4,ChargerCont1939Addr);
TCUSinglePackSendMsg(data, 8, eCmd_status, 4,ChargerCont1939Addr);
data[1] = TcuGetChgStatus_B();
TCUSinglePackSendMsg(data, 6, eCmd_status, 4,ChargerCont1939Addr_B);
TCUSinglePackSendMsg(data, 8, eCmd_status, 4,ChargerCont1939Addr_B);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论