提交 5a5d23e5 作者: wysheng

修复一些错误

1. 错误的发送停止充电完成
2. BMS需求电压 电流
上级 6152cb7a
...@@ -1036,7 +1036,7 @@ void startCompSend_A(void) ...@@ -1036,7 +1036,7 @@ void startCompSend_A(void)
memcpy(&Data[len], BrmMsg.Vin, 17); //车辆识别码 BIN码 17 memcpy(&Data[len], BrmMsg.Vin, 17); //车辆识别码 BIN码 17
len += 17; len += 17;
TCUMultiPackSendMsg(Data, len, eCmd_startComp, 4,ChargerCont1939Addr); TCUMultiPackSendMsg(Data, 55, eCmd_startComp, 4,ChargerCont1939Addr);
} }
...@@ -1113,7 +1113,7 @@ void startCompSend_B(void) ...@@ -1113,7 +1113,7 @@ void startCompSend_B(void)
Data[len++] = 0x0F; //最小输出电流0A Data[len++] = 0x0F; //最小输出电流0A
memcpy(&Data[len], BrmMsg_B.Vin, 17); //车辆识别码 BIN码 17 memcpy(&Data[len], BrmMsg_B.Vin, 17); //车辆识别码 BIN码 17
len += 17; len += 17;
TCUMultiPackSendMsg(Data, len, eCmd_startComp, 4,ChargerCont1939Addr_B); //多包传输 TCUMultiPackSendMsg(Data, 55, eCmd_startComp, 4,ChargerCont1939Addr_B); //多包传输
} }
...@@ -1130,7 +1130,7 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv) ...@@ -1130,7 +1130,7 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv)
TCUCurChgRecd.TCUChargeEnable = 0; TCUCurChgRecd.TCUChargeEnable = 0;
} }
TCUCurChgRecd.TCUChgStarCompNotetrl = 3; TCUCurChgRecd.TCUChgStarCompNotetrl = 0;
} }
else if (pPgnRecv->DA == ChargerCont1939Addr_B) else if (pPgnRecv->DA == ChargerCont1939Addr_B)
{ {
...@@ -1138,12 +1138,12 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv) ...@@ -1138,12 +1138,12 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv)
AckStartCompMeg_B.LoadSswitch = pPgnRecv->Data[1]; AckStartCompMeg_B.LoadSswitch = pPgnRecv->Data[1];
AckStartCompMeg_B.AckFlag = pPgnRecv->Data[2]; AckStartCompMeg_B.AckFlag = pPgnRecv->Data[2];
if (AckStartCompMeg_A.AckFlag == 01) if (AckStartCompMeg_B.AckFlag == 01)
{ {
TCUCurChgRecd_B.TCUChargeEnable = 0; TCUCurChgRecd_B.TCUChargeEnable = 0;
} }
TCUCurChgRecd_B.TCUChgStarCompNotetrl = 3; TCUCurChgRecd_B.TCUChgStarCompNotetrl = 0;
} }
} }
...@@ -2331,33 +2331,68 @@ void measuringReporting20_A(void) ...@@ -2331,33 +2331,68 @@ void measuringReporting20_A(void)
u8 len = 0; u8 len = 0;
Data[len++] = 0x00; Data[len++] = 0x00;
//充电输出电压
Data[len++] = GetDcModuleVolt(); Data[len++] = GetDcModuleVolt();
Data[len++] = GetDcModuleVolt() >> 8; Data[len++] = GetDcModuleVolt() >> 8;
Data[len++] = GetDcModuleCurrt();
Data[len++] = GetDcModuleCurrt() >> 8; //充电输出电流
Data[len++] = 4000-GetDcModuleCurrt();
Data[len++] = (4000-GetDcModuleCurrt()) >> 8;
//SOC
Data[len++] = BcsMsg.CurSoc; Data[len++] = BcsMsg.CurSoc;
Data[len++] = BsmMsg.HighTemp; //电池组最低温度
Data[len++] = BsmMsg.LowTemp; Data[len++] = BsmMsg.LowTemp;
//电池组最高温度
Data[len++] = BsmMsg.HighTemp;
//单体电池最高 电压
Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt; Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt;
Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt >> 8; Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt >> 8;
//单体电池最低 电压
Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt; Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt;
Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt >> 8; Data[len++] = BcsMsg.BatVoltAndGroup.Value.Volt >> 8;
//充电机环境温 度
Data[len++] = Dht12_GetTemp() + 50; Data[len++] = Dht12_GetTemp() + 50;
//充电导引电压
Data[len++] = 0;
Data[len++] = 0;
//BMS需求电压
Data[len++] = BclMsg.NeedVolt; Data[len++] = BclMsg.NeedVolt;
Data[len++] = BclMsg.NeedVolt >> 8; //12V Data[len++] = BclMsg.NeedVolt >> 8;
//BMS需求电流
Data[len++] = BclMsg.NeedCurrt; Data[len++] = BclMsg.NeedCurrt;
Data[len++] = BclMsg.NeedCurrt >> 8; Data[len++] = BclMsg.NeedCurrt >> 8;
//充电模式
Data[len++] = BclMsg.ChgType; Data[len++] = BclMsg.ChgType;
//BMS充电电压测量值
Data[len++] = BcsMsg.ChgVolt; Data[len++] = BcsMsg.ChgVolt;
Data[len++] = BcsMsg.ChgVolt >> 8; //12V Data[len++] = BcsMsg.ChgVolt >> 8;
//BMS充电电流测量值
Data[len++] = BcsMsg.ChgCurrt; Data[len++] = BcsMsg.ChgCurrt;
Data[len++] = BcsMsg.ChgCurrt >> 8; Data[len++] = BcsMsg.ChgCurrt >> 8;
//估算剩余充电时间
Data[len++] = BcsMsg.RemainMin; Data[len++] = BcsMsg.RemainMin;
Data[len++] = BcsMsg.RemainMin>>8;
//充电接口温度探头1温度(充电接口1 DC+)
Data[len++] = Adc_Get_a_PTemp() + 50; Data[len++] = Adc_Get_a_PTemp() + 50;
//充电接口温度探头2温度(充电接口1 DC-)
Data[len++] = Adc_Get_a_NTemp() + 50; Data[len++] = Adc_Get_a_NTemp() + 50;
//充电接口温度探头3温度(充电接口2 DC+)
Data[len++] = Adc_Get_B_PTemp() + 50; Data[len++] = Adc_Get_B_PTemp() + 50;
//充电接口温度探头4温度(充电接口2 DC-)
Data[len++] = Adc_Get_B_NTemp() + 50; Data[len++] = Adc_Get_B_NTemp() + 50;
//电能表当前读数
len += 4;
TCUMultiPackSendMsg(Data, 34, eCmd_DCConMeasu, 6,ChargerCont1939Addr); TCUMultiPackSendMsg(Data, 34, eCmd_DCConMeasu, 6,ChargerCont1939Addr);
} }
...@@ -2370,16 +2405,21 @@ void measuringReporting20_B(void) ...@@ -2370,16 +2405,21 @@ void measuringReporting20_B(void)
Data[len++] = 0x00; Data[len++] = 0x00;
Data[len++] = GetDcModuleVolt_B(); Data[len++] = GetDcModuleVolt_B();
Data[len++] = GetDcModuleVolt_B() >> 8; Data[len++] = GetDcModuleVolt_B() >> 8;
Data[len++] = GetDcModuleCurrt_B(); Data[len++] = 4000-GetDcModuleCurrt_B();
Data[len++] = GetDcModuleCurrt_B() >> 8; Data[len++] = (4000-GetDcModuleCurrt_B()) >> 8;
Data[len++] = BcsMsg_B.CurSoc; Data[len++] = BcsMsg_B.CurSoc;
Data[len++] = BsmMsg_B.HighTemp;
Data[len++] = BsmMsg_B.LowTemp; Data[len++] = BsmMsg_B.LowTemp;
Data[len++] = BsmMsg_B.HighTemp;
Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt; Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt;
Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt >> 8; Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt >> 8;
Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt; Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt;
Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt >> 8; Data[len++] = BcsMsg_B.BatVoltAndGroup.Value.Volt >> 8;
Data[len++] = Dht12_GetTemp() + 50; Data[len++] = Dht12_GetTemp() + 50;
//充电导引电压
Data[len++] = 0;
Data[len++] = 0;
Data[len++] = BclMsg_B.NeedVolt; Data[len++] = BclMsg_B.NeedVolt;
Data[len++] = BclMsg_B.NeedVolt >> 8; //12V Data[len++] = BclMsg_B.NeedVolt >> 8; //12V
Data[len++] = BclMsg_B.NeedCurrt; Data[len++] = BclMsg_B.NeedCurrt;
...@@ -2390,7 +2430,7 @@ void measuringReporting20_B(void) ...@@ -2390,7 +2430,7 @@ void measuringReporting20_B(void)
Data[len++] = BcsMsg_B.ChgCurrt; Data[len++] = BcsMsg_B.ChgCurrt;
Data[len++] = BcsMsg_B.ChgCurrt >> 8; Data[len++] = BcsMsg_B.ChgCurrt >> 8;
Data[len++] = BcsMsg_B.RemainMin; Data[len++] = BcsMsg_B.RemainMin;
Data[len++] = BcsMsg_B.RemainMin>>8;
Data[len++] = Adc_Get_a_PTemp() + 50; Data[len++] = Adc_Get_a_PTemp() + 50;
Data[len++] = Adc_Get_a_NTemp() + 50; Data[len++] = Adc_Get_a_NTemp() + 50;
Data[len++] = Adc_Get_B_PTemp() + 50; Data[len++] = Adc_Get_B_PTemp() + 50;
...@@ -2539,13 +2579,33 @@ void TCUErroCommAnalysis(StructTCUSend * pPgnRecv) ...@@ -2539,13 +2579,33 @@ void TCUErroCommAnalysis(StructTCUSend * pPgnRecv)
void TCUMeasuRecv(StructTCUSend * pPgnRecv) void TCUMeasuRecv(StructTCUSend * pPgnRecv)
{ {
u16 temp = 0;
if(pPgnRecv->DA == ChargerCont1939Addr) if(pPgnRecv->DA == ChargerCont1939Addr)
{ {
TCUCommuStatus.DCMeasuErrCnt = 0; TCUCommuStatus.DCMeasuErrCnt = 0;
//充电电量
temp = pPgnRecv->Data[2];
temp = (temp<<8) + pPgnRecv->Data[1];
MeterValue.Energy = temp;
//充电时长
temp = pPgnRecv->Data[4];
temp = (temp<<8) + pPgnRecv->Data[3];
} }
else if(pPgnRecv->DA == ChargerCont1939Addr_B) else if(pPgnRecv->DA == ChargerCont1939Addr_B)
{ {
TCUCommuStatus_B.DCMeasuErrCnt = 0; TCUCommuStatus_B.DCMeasuErrCnt = 0;
//充电电量
temp = pPgnRecv->Data[2];
temp = (temp<<8) + pPgnRecv->Data[1];
MeterValue_B.Energy = temp;
//充电时长
temp = pPgnRecv->Data[4];
temp = (temp<<8) + pPgnRecv->Data[3];
} }
} }
......
...@@ -141,13 +141,13 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -141,13 +141,13 @@ void DcModuleManageProcess_SmartAllocation(void)
Flag = Flag << 1; Flag = Flag << 1;
} }
DcModuleManage_All.ValidNum = Count; //DcModuleManage_All.ValidNum = Count;
for (i = 0; i < DcModuleGroupSize; i++) for (i = 0; i < DcModuleGroupSize; i++)
{ {
Currt = 0; Currt = 0;
Volt = 0; Volt = 0;
Count = 0; Count = 0;
status = DcModuleGroup[i].modules[0].status;
for (j = 0; j < DcModuleGroup[i].num; j++) for (j = 0; j < DcModuleGroup[i].num; j++)
{ {
...@@ -169,42 +169,21 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -169,42 +169,21 @@ void DcModuleManageProcess_SmartAllocation(void)
DcModuleGroup[i].modules[j].status = Invalid; DcModuleGroup[i].modules[j].status = Invalid;
} }
status = status | DcModuleGroup[i].modules[j].status;
} }
DcModuleGroup[i].ValidNum = Count; DcModuleGroup[i].ValidNum = Count;
DcModuleGroup[i].Voltage = Volt / Count; DcModuleGroup[i].Voltage = Volt / Count;
DcModuleGroup[i].Current = Currt; DcModuleGroup[i].Current = Currt;
}
for (i = 0; i < DcModuleGroupSize; i++)
{
status = DcModuleGroup[i].modules[0].status;
if (DcModuleGroup[i].num != DcModuleGroup[i].ValidNum)
{
}
if (DcModuleGroup[i].num > 1) if (status == Invalid)
{ DcModuleGroup[i].status = status;
if (status != Valid) else if (DcModuleGroup[i].status == Invalid)
{ DcModuleGroup[i].status = status;
if (DcModuleGroup[i].modules[1].status != Valid)
{
DcModuleGroup[i].status = Invalid;
} }
}
}
else
{
if (status != Valid)
{
DcModuleGroup[i].status = Invalid;
}
}
}
Currt = 0; Currt = 0;
Currt_A = 0; Currt_A = 0;
...@@ -216,6 +195,10 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -216,6 +195,10 @@ void DcModuleManageProcess_SmartAllocation(void)
Count_A = 0; Count_A = 0;
Count_B = 0; Count_B = 0;
u8 groupCount = 0;
u8 groupCount_A = 0;
u8 groupCount_B = 0;
for (i = 0; i < DcModuleGroupSize; i++) for (i = 0; i < DcModuleGroupSize; i++)
{ {
if (DcModuleGroup[i].status == Valid) if (DcModuleGroup[i].status == Valid)
...@@ -223,27 +206,48 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -223,27 +206,48 @@ void DcModuleManageProcess_SmartAllocation(void)
Volt += DcModuleGroup[i].Voltage; Volt += DcModuleGroup[i].Voltage;
Currt += DcModuleGroup[i].Current; Currt += DcModuleGroup[i].Current;
Count += DcModuleGroup[i].ValidNum; Count += DcModuleGroup[i].ValidNum;
groupCount++;
} }
else if (DcModuleGroup[i].status == Hold_A) else if (DcModuleGroup[i].status == Hold_A)
{ {
Volt_A += DcModuleGroup[i].Voltage; Volt_A += DcModuleGroup[i].Voltage;
Currt_A += DcModuleGroup[i].Current; Currt_A += DcModuleGroup[i].Current;
Count_A += DcModuleGroup[i].ValidNum; Count_A += DcModuleGroup[i].ValidNum;
groupCount_A++;
} }
else if (DcModuleGroup[i].status == Hold_B) else if (DcModuleGroup[i].status == Hold_B)
{ {
Volt_B += DcModuleGroup[i].Voltage; Volt_B += DcModuleGroup[i].Voltage;
Currt_B += DcModuleGroup[i].Current; Currt_B += DcModuleGroup[i].Current;
Count_B += DcModuleGroup[i].ValidNum; Count_B += DcModuleGroup[i].ValidNum;
groupCount_B++;
} }
} }
DcModuleCtrl.ActualCurrt = Currt_A; DcModuleCtrl.ActualCurrt = Currt_A;
DcModuleCtrl.ActualVolt = Volt_A;
DcModuleCtrl_ALL.ActualCurrt = Currt_A; if (groupCount_A)
DcModuleCtrl_ALL.ActualVolt = Volt_A; DcModuleCtrl.ActualVolt = Volt_A / groupCount_A;
else
DcModuleCtrl.ActualVolt = 0;
DcModuleCtrl_ALL.ActualCurrt = Currt;
if (groupCount)
DcModuleCtrl_ALL.ActualVolt = Volt / groupCount;
else
DcModuleCtrl_ALL.ActualVolt = 0;
DcModuleCtrl_B.ActualCurrt = Currt_B; DcModuleCtrl_B.ActualCurrt = Currt_B;
DcModuleCtrl_B.ActualVolt = Volt_B;
if (groupCount_B)
DcModuleCtrl_B.ActualVolt = Volt_B / (groupCount_B);
else
DcModuleCtrl_B.ActualVolt = 0;
DcModuleManage.ValidNum = Count_A; DcModuleManage.ValidNum = Count_A;
DcModuleManage_All.ValidNum = Count; DcModuleManage_All.ValidNum = Count;
...@@ -275,6 +279,7 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -275,6 +279,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
u8 addr; u8 addr;
u32 Volt = 0; u32 Volt = 0;
u8 Cmd = 0; u8 Cmd = 0;
Temp = 0; Temp = 0;
for (u8 i = 0; i < DcModuleGroupSize; i++) for (u8 i = 0; i < DcModuleGroupSize; i++)
...@@ -283,76 +288,80 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -283,76 +288,80 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{ {
Temp = 1; Temp = 1;
Volt = DcModuleAbility.MinVolt * 100; Volt = DcModuleAbility.MinVolt * 100;
if (DcModuleGroup[i].status == Valid) if (DcModuleGroup[i].status == Valid)
{ {
//关机 //关机
if (status[i] == Hold_A) if (status[i] == Hold_A)
{ {
if(i == 0) if (i == 0)
{ {
DcModuleManage.SetVolt = DcModuleAbility.MinVolt * 100; DcModuleManage.SetVolt = DcModuleAbility.MinVolt * 100;
DcModuleManage.SetCurrt = DcModuleAbility.MinCurrt * 100; DcModuleManage.SetCurrt = DcModuleAbility.MinCurrt * 100;
DcModuleManage.Cmd = 0xAA; //关机 DcModuleManage.Cmd = 0xAA; //关机
} }
else if(i == 1) else if (i == 1)
{ {
GPIO_ResetBits(RELAY_K1K2_Port,RELAY_K1K2_Pin); GPIO_ResetBits(RELAY_K1K2_Port, RELAY_K1K2_Pin);
} }
else if(i == 2) else if (i == 2)
{ {
GPIO_ResetBits(RELAY_K5K6_Port,RELAY_K5K6_Pin); GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
} }
else// if(i == 3) else // if(i == 3)
{ {
GPIO_ResetBits(RELAY_K3K4_Port,RELAY_K3K4_Pin); GPIO_ResetBits(RELAY_K3K4_Port, RELAY_K3K4_Pin);
} }
} }
else if (status[i] == Hold_B) else if (status[i] == Hold_B)
{ {
if(i==2) if (i == 2)
{ {
DcModuleManage_B.SetVolt = DcModuleAbility.MinVolt * 100; DcModuleManage_B.SetVolt = DcModuleAbility.MinVolt * 100;
DcModuleManage_B.SetCurrt = DcModuleAbility.MinCurrt * 100; DcModuleManage_B.SetCurrt = DcModuleAbility.MinCurrt * 100;
DcModuleManage_B.Cmd = 0xAA; //关机 DcModuleManage_B.Cmd = 0xAA; //关机
} }
else if(i == 0) else if (i == 0)
{ {
GPIO_ResetBits(RELAY_K5K6_Port,RELAY_K5K6_Pin); GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
} }
else if(i == 1) else if (i == 1)
{ {
GPIO_ResetBits(RELAY_K7K8_Port,RELAY_K7K8_Pin); GPIO_ResetBits(RELAY_K7K8_Port, RELAY_K7K8_Pin);
} }
else// if(i == 3) else // if(i == 3)
{ {
GPIO_ResetBits(RELAY_K9K10_Port,RELAY_K9K10_Pin); GPIO_ResetBits(RELAY_K9K10_Port, RELAY_K9K10_Pin);
} }
} }
//Volt = DcModuleAbility.MinVolt * 100; //Volt = DcModuleAbility.MinVolt * 100;
Cmd = 0xAA; //关机 Cmd = 0xAA; //关机
} }
else if (DcModuleGroup[i].status == Hold_A) else if (DcModuleGroup[i].status == Hold_A)
{ {
if(i!=0) //升压 if (i != 0) //升压
{ {
Volt = DcModuleManage.SetVolt; Volt = DcModuleManage.SetVolt;
} }
else if(status[i] == Hold_B) else if (status[i] == Hold_B)
{ {
GPIO_ResetBits(RELAY_K5K6_Port,RELAY_K5K6_Pin); GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
} }
Cmd = 0x55; //开机 Cmd = 0x55; //开机
} }
else if (DcModuleGroup[i].status == Hold_B) else if (DcModuleGroup[i].status == Hold_B)
{ {
if(i!=2) //升压 if (i != 2) //升压
{ {
Volt = DcModuleManage.SetVolt; Volt = DcModuleManage.SetVolt;
} }
else if(status[i] == Hold_A) else if (status[i] == Hold_A)
{ {
GPIO_ResetBits(RELAY_K5K6_Port,RELAY_K5K6_Pin); GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
} }
Cmd = 0x55; //开机 Cmd = 0x55; //开机
} }
else else
...@@ -371,7 +380,7 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -371,7 +380,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
Temp = DcModuleAbility.MinCurrt * 100; Temp = DcModuleAbility.MinCurrt * 100;
DataSend.Data[2] = (u8) (Temp >> 8); DataSend.Data[2] = (u8) (Temp >> 8);
DataSend.Data[3] = (u8) (Temp >> 0); DataSend.Data[3] = (u8) (Temp >> 0);
Temp = Volt;//DcModuleAbility.MinVolt * 100; Temp = Volt; //DcModuleAbility.MinVolt * 100;
DataSend.Data[4] = (u8) (Temp >> 24); DataSend.Data[4] = (u8) (Temp >> 24);
DataSend.Data[5] = (u8) (Temp >> 16); DataSend.Data[5] = (u8) (Temp >> 16);
DataSend.Data[6] = (u8) (Temp >> 8); DataSend.Data[6] = (u8) (Temp >> 8);
...@@ -400,12 +409,14 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -400,12 +409,14 @@ void DcModuleCtrlProcess_SmartAllocation(void)
//osDelay(10); //osDelay(10);
} }
} }
status[i] = DcModuleGroup[i].status; status[i] = DcModuleGroup[i].status;
} }
} }
if(Temp) return; if (Temp)
return;
Temp = 0; Temp = 0;
...@@ -414,6 +425,7 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -414,6 +425,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if (status1[i] != DcModuleGroup[i].status) if (status1[i] != DcModuleGroup[i].status)
{ {
Temp = 1; Temp = 1;
if (DcModuleGroup[i].status == Valid) if (DcModuleGroup[i].status == Valid)
{ {
//切换继电器 //切换继电器
...@@ -431,41 +443,41 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -431,41 +443,41 @@ void DcModuleCtrlProcess_SmartAllocation(void)
else if (DcModuleGroup[i].status == Hold_A) else if (DcModuleGroup[i].status == Hold_A)
{ {
//切换继电器 //切换继电器
if(i==0) if (i == 0)
{ {
} }
else if(i == 1) else if (i == 1)
{ {
GPIO_SetBits(RELAY_K1K2_Port,RELAY_K1K2_Pin); GPIO_SetBits(RELAY_K1K2_Port, RELAY_K1K2_Pin);
} }
else if(i == 2) else if (i == 2)
{ {
GPIO_SetBits(RELAY_K5K6_Port,RELAY_K5K6_Pin); GPIO_SetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
} }
else// if(i == 3) else // if(i == 3)
{ {
GPIO_SetBits(RELAY_K3K4_Port,RELAY_K3K4_Pin); GPIO_SetBits(RELAY_K3K4_Port, RELAY_K3K4_Pin);
} }
} }
else if (DcModuleGroup[i].status == Hold_B) else if (DcModuleGroup[i].status == Hold_B)
{ {
//切换继电器 //切换继电器
if(i==2) if (i == 2)
{ {
} }
else if(i == 0) else if (i == 0)
{ {
GPIO_SetBits(RELAY_K5K6_Port,RELAY_K5K6_Pin); GPIO_SetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
} }
else if(i == 1) else if (i == 1)
{ {
GPIO_SetBits(RELAY_K7K8_Port,RELAY_K7K8_Pin); GPIO_SetBits(RELAY_K7K8_Port, RELAY_K7K8_Pin);
} }
else// if(i == 3) else // if(i == 3)
{ {
GPIO_SetBits(RELAY_K9K10_Port,RELAY_K9K10_Pin); GPIO_SetBits(RELAY_K9K10_Port, RELAY_K9K10_Pin);
} }
} }
else else
...@@ -478,7 +490,9 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -478,7 +490,9 @@ void DcModuleCtrlProcess_SmartAllocation(void)
} }
} }
if(Temp) return;
if (Temp)
return;
if (LastFlag_A != DcModuleCtrl.CtrlFlag) if (LastFlag_A != DcModuleCtrl.CtrlFlag)
{ {
......
...@@ -175,8 +175,8 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -175,8 +175,8 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if(NeedCurrt > MaxCurrt) if(NeedCurrt > MaxCurrt)
NeedCurrt = MaxCurrt; NeedCurrt = MaxCurrt;
if(NeedCurrt > (DcModuleAbility.MaxCurrt*DcModuleManage_B.ValidNum)) if(NeedCurrt > (DcModuleAbility.MaxCurrt*(DcModuleManage_B.ValidNum+DcModuleManage_All.ValidNum)))
NeedCurrt = DcModuleAbility.MaxCurrt*DcModuleManage_B.ValidNum; NeedCurrt = DcModuleAbility.MaxCurrt*(DcModuleManage_B.ValidNum+DcModuleManage_All.ValidNum);
MaxVolt = BcpMsg_B.ChgMaxVolt; MaxVolt = BcpMsg_B.ChgMaxVolt;
NeedVolt = BclMsg_B.NeedVolt; NeedVolt = BclMsg_B.NeedVolt;
...@@ -342,6 +342,30 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -342,6 +342,30 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
} }
else else
CemMsg_B.Cem.Value.Bcl = 0; CemMsg_B.Cem.Value.Bcl = 0;
if(((GetSystemTick() - BcsMsg_B.RecvTick) >1000+500)&&(eChgVer_2011 == UserParam.ChgVer))
{
StructChargeSend FrameSend;
FrameSend.Id.Mult = 0;
FrameSend.Id.Disp.Prio = 7;
FrameSend.Id.Disp.PF = TPCM>>8;
FrameSend.Id.Disp.DA_PS = Card1939Addr;
FrameSend.Id.Disp.SA = Charger1939Addr;
FrameSend.Data[0] = 0x13;
FrameSend.Data[1] = 0x09;
FrameSend.Data[2] = 0x00;
FrameSend.Data[3] = 0x02;
FrameSend.Data[4] = 0xFe;
FrameSend.Data[5] = 0x00;
FrameSend.Data[6] = 0x11;
FrameSend.Data[7] = 0x00;
FrameSend.Len = 8;
BmsCommSendMsg_B(&FrameSend);
BcsMsg_B.RecvTick= GetSystemTick();
}
else
CemMsg_B.Cem.Value.Bcs = 0;//ֶ֡
if((GetSystemTick() - BcsMsg_B.RecvTick) > MsgTimeout_B_5S) if((GetSystemTick() - BcsMsg_B.RecvTick) > MsgTimeout_B_5S)
{ {
...@@ -372,7 +396,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -372,7 +396,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 == ChargeEnable_B) if(0 == TCUCurChgRecd_B.TCUChargeEnable)
{//ⲿƽ {//ⲿƽ
CstMsg_B.StopReason.Value.Manual = 1; CstMsg_B.StopReason.Value.Manual = 1;
CST_Send_B(&CstMsg_B); CST_Send_B(&CstMsg_B);
......
...@@ -663,7 +663,7 @@ void TCUCurChgRecordInterface_A(void) ...@@ -663,7 +663,7 @@ void TCUCurChgRecordInterface_A(void)
} }
else if (TCUCurChgRecd.TCUChgStarCompNotetrl == 1) else if (TCUCurChgRecd.TCUChgStarCompNotetrl == 1)
{ {
stopCompSend_A(); startCompSend_A();
ChgStartCompSendTick = GetSystemTick(); ChgStartCompSendTick = GetSystemTick();
TCUCurChgRecd.TCUChgStarCompNotetrl = 2; TCUCurChgRecd.TCUChgStarCompNotetrl = 2;
} }
...@@ -725,6 +725,7 @@ void TCUCurChgRecordInterface_A(void) ...@@ -725,6 +725,7 @@ void TCUCurChgRecordInterface_A(void)
stopCompSend_A(); stopCompSend_A();
ChgRecordSendTick = GetSystemTick(); ChgRecordSendTick = GetSystemTick();
TCUCurChgRecd.TCUChgStopCompNotetrl = 2; TCUCurChgRecd.TCUChgStopCompNotetrl = 2;
ChgRecordSendErr = 0;
} }
else if ((TCUCurChgRecd.TCUChgStopCompNotetrl == 2) && (0 != TCUCurChgRecd.TCUChargeEnable)) else if ((TCUCurChgRecd.TCUChgStopCompNotetrl == 2) && (0 != TCUCurChgRecd.TCUChargeEnable))
{ {
...@@ -793,9 +794,10 @@ void TCUCurChgRecordInterface_B(void) ...@@ -793,9 +794,10 @@ void TCUCurChgRecordInterface_B(void)
} }
else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 1) else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 1)
{ {
stopCompSend_B(); startCompSend_B();
ChgStartCompSendTick = GetSystemTick(); ChgStartCompSendTick = GetSystemTick();
TCUCurChgRecd_B.TCUChgStarCompNotetrl = 2; TCUCurChgRecd_B.TCUChgStarCompNotetrl = 2;
ChgStartCompSendEcount = 0;
} }
else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 2) else if (TCUCurChgRecd_B.TCUChgStarCompNotetrl == 2)
{ {
...@@ -892,7 +894,7 @@ u8 TcuGetChgStatus(void) ...@@ -892,7 +894,7 @@ u8 TcuGetChgStatus(void)
{ {
status = 0x00; status = 0x00;
} }
else if(old_status == 0) else// if(old_status == 0)
{ {
status = 0x01; status = 0x01;
} }
...@@ -942,12 +944,12 @@ u8 TcuGetChgStatus(void) ...@@ -942,12 +944,12 @@ u8 TcuGetChgStatus(void)
{ {
status = 0x0b; status = 0x0b;
} }
else if((ChargeCtrl.CurProcess == eChgPro_ChgIdle)\ /*else if((ChargeCtrl.CurProcess == eChgPro_ChgIdle)\
&& (old_status == 0x0b)) && (old_status == 0x0b))
{ {
status = 0x0b; status = 0x0b;
} }*/
old_status = status; //old_status = status;
return status; return status;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论