Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
5a5d23e5
提交
5a5d23e5
authored
5月 05, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复一些错误
1. 错误的发送停止充电完成 2. BMS需求电压 电流
上级
6152cb7a
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
360 行增加
和
194 行删除
+360
-194
Drv_TCUComm.c
DcPillar/Src/Drivers/Drv_TCUComm.c
+74
-14
Drv_SmartAllocation.c
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
+84
-70
SmartAllocation_B_ChgRun.c
DcPillar/Src/SmartAllocation/SmartAllocation_B_ChgRun.c
+27
-3
SmartAllocation_ChgRun.c
DcPillar/Src/SmartAllocation/SmartAllocation_ChgRun.c
+167
-101
Thd_TCU.c
DcPillar/Src/Thread/Thd_TCU.c
+8
-6
没有找到文件。
DcPillar/Src/Drivers/Drv_TCUComm.c
浏览文件 @
5a5d23e5
...
...
@@ -1036,7 +1036,7 @@ void startCompSend_A(void)
memcpy
(
&
Data
[
len
],
BrmMsg
.
Vin
,
17
);
//车辆识别码 BIN码 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)
Data
[
len
++
]
=
0x0F
;
//最小输出电流0A
memcpy
(
&
Data
[
len
],
BrmMsg_B
.
Vin
,
17
);
//车辆识别码 BIN码 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)
TCUCurChgRecd
.
TCUChargeEnable
=
0
;
}
TCUCurChgRecd
.
TCUChgStarCompNotetrl
=
3
;
TCUCurChgRecd
.
TCUChgStarCompNotetrl
=
0
;
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
...
...
@@ -1138,12 +1138,12 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv)
AckStartCompMeg_B
.
LoadSswitch
=
pPgnRecv
->
Data
[
1
];
AckStartCompMeg_B
.
AckFlag
=
pPgnRecv
->
Data
[
2
];
if
(
AckStartCompMeg_
A
.
AckFlag
==
01
)
if
(
AckStartCompMeg_
B
.
AckFlag
==
01
)
{
TCUCurChgRecd_B
.
TCUChargeEnable
=
0
;
}
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
=
3
;
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
=
0
;
}
}
...
...
@@ -2331,33 +2331,68 @@ void measuringReporting20_A(void)
u8
len
=
0
;
Data
[
len
++
]
=
0x00
;
//充电输出电压
Data
[
len
++
]
=
GetDcModuleVolt
();
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
++
]
=
BsmMsg
.
HighTemp
;
//电池组最低温度
Data
[
len
++
]
=
BsmMsg
.
LowTemp
;
//电池组最高温度
Data
[
len
++
]
=
BsmMsg
.
HighTemp
;
//单体电池最高 电压
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
//单体电池最低 电压
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
//充电机环境温 度
Data
[
len
++
]
=
Dht12_GetTemp
()
+
50
;
//充电导引电压
Data
[
len
++
]
=
0
;
Data
[
len
++
]
=
0
;
//BMS需求电压
Data
[
len
++
]
=
BclMsg
.
NeedVolt
;
Data
[
len
++
]
=
BclMsg
.
NeedVolt
>>
8
;
//12V
Data
[
len
++
]
=
BclMsg
.
NeedVolt
>>
8
;
//BMS需求电流
Data
[
len
++
]
=
BclMsg
.
NeedCurrt
;
Data
[
len
++
]
=
BclMsg
.
NeedCurrt
>>
8
;
//充电模式
Data
[
len
++
]
=
BclMsg
.
ChgType
;
//BMS充电电压测量值
Data
[
len
++
]
=
BcsMsg
.
ChgVolt
;
Data
[
len
++
]
=
BcsMsg
.
ChgVolt
>>
8
;
//12V
Data
[
len
++
]
=
BcsMsg
.
ChgVolt
>>
8
;
//BMS充电电流测量值
Data
[
len
++
]
=
BcsMsg
.
ChgCurrt
;
Data
[
len
++
]
=
BcsMsg
.
ChgCurrt
>>
8
;
//估算剩余充电时间
Data
[
len
++
]
=
BcsMsg
.
RemainMin
;
Data
[
len
++
]
=
BcsMsg
.
RemainMin
>>
8
;
//充电接口温度探头1温度(充电接口1 DC+)
Data
[
len
++
]
=
Adc_Get_a_PTemp
()
+
50
;
//充电接口温度探头2温度(充电接口1 DC-)
Data
[
len
++
]
=
Adc_Get_a_NTemp
()
+
50
;
//充电接口温度探头3温度(充电接口2 DC+)
Data
[
len
++
]
=
Adc_Get_B_PTemp
()
+
50
;
//充电接口温度探头4温度(充电接口2 DC-)
Data
[
len
++
]
=
Adc_Get_B_NTemp
()
+
50
;
//电能表当前读数
len
+=
4
;
TCUMultiPackSendMsg
(
Data
,
34
,
eCmd_DCConMeasu
,
6
,
ChargerCont1939Addr
);
}
...
...
@@ -2370,16 +2405,21 @@ void measuringReporting20_B(void)
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
GetDcModuleVolt_B
();
Data
[
len
++
]
=
GetDcModuleVolt_B
()
>>
8
;
Data
[
len
++
]
=
GetDcModuleCurrt_B
();
Data
[
len
++
]
=
GetDcModuleCurrt_B
(
)
>>
8
;
Data
[
len
++
]
=
4000
-
GetDcModuleCurrt_B
();
Data
[
len
++
]
=
(
4000
-
GetDcModuleCurrt_B
()
)
>>
8
;
Data
[
len
++
]
=
BcsMsg_B
.
CurSoc
;
Data
[
len
++
]
=
BsmMsg_B
.
HighTemp
;
Data
[
len
++
]
=
BsmMsg_B
.
LowTemp
;
Data
[
len
++
]
=
BsmMsg_B
.
HighTemp
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
Data
[
len
++
]
=
Dht12_GetTemp
()
+
50
;
//充电导引电压
Data
[
len
++
]
=
0
;
Data
[
len
++
]
=
0
;
Data
[
len
++
]
=
BclMsg_B
.
NeedVolt
;
Data
[
len
++
]
=
BclMsg_B
.
NeedVolt
>>
8
;
//12V
Data
[
len
++
]
=
BclMsg_B
.
NeedCurrt
;
...
...
@@ -2390,7 +2430,7 @@ void measuringReporting20_B(void)
Data
[
len
++
]
=
BcsMsg_B
.
ChgCurrt
;
Data
[
len
++
]
=
BcsMsg_B
.
ChgCurrt
>>
8
;
Data
[
len
++
]
=
BcsMsg_B
.
RemainMin
;
Data
[
len
++
]
=
BcsMsg_B
.
RemainMin
>>
8
;
Data
[
len
++
]
=
Adc_Get_a_PTemp
()
+
50
;
Data
[
len
++
]
=
Adc_Get_a_NTemp
()
+
50
;
Data
[
len
++
]
=
Adc_Get_B_PTemp
()
+
50
;
...
...
@@ -2539,13 +2579,33 @@ void TCUErroCommAnalysis(StructTCUSend * pPgnRecv)
void
TCUMeasuRecv
(
StructTCUSend
*
pPgnRecv
)
{
u16
temp
=
0
;
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
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
)
{
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
];
}
}
...
...
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
浏览文件 @
5a5d23e5
...
...
@@ -141,13 +141,13 @@ void DcModuleManageProcess_SmartAllocation(void)
Flag
=
Flag
<<
1
;
}
DcModuleManage_All
.
ValidNum
=
Count
;
//DcModuleManage_All.ValidNum = Count;
for
(
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
Currt
=
0
;
Volt
=
0
;
Count
=
0
;
status
=
DcModuleGroup
[
i
].
modules
[
0
].
status
;
for
(
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
...
...
@@ -169,42 +169,21 @@ void DcModuleManageProcess_SmartAllocation(void)
DcModuleGroup
[
i
].
modules
[
j
].
status
=
Invalid
;
}
status
=
status
|
DcModuleGroup
[
i
].
modules
[
j
].
status
;
}
DcModuleGroup
[
i
].
ValidNum
=
Count
;
DcModuleGroup
[
i
].
Voltage
=
Volt
/
Count
;
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
!=
Valid
)
{
if
(
DcModuleGroup
[
i
].
modules
[
1
].
status
!=
Valid
)
{
DcModuleGroup
[
i
].
status
=
Invalid
;
if
(
status
==
Invalid
)
DcModuleGroup
[
i
].
status
=
status
;
else
if
(
DcModuleGroup
[
i
].
status
==
Invalid
)
DcModuleGroup
[
i
].
status
=
status
;
}
}
}
else
{
if
(
status
!=
Valid
)
{
DcModuleGroup
[
i
].
status
=
Invalid
;
}
}
}
Currt
=
0
;
Currt_A
=
0
;
...
...
@@ -216,6 +195,10 @@ void DcModuleManageProcess_SmartAllocation(void)
Count_A
=
0
;
Count_B
=
0
;
u8
groupCount
=
0
;
u8
groupCount_A
=
0
;
u8
groupCount_B
=
0
;
for
(
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
...
...
@@ -223,27 +206,48 @@ void DcModuleManageProcess_SmartAllocation(void)
Volt
+=
DcModuleGroup
[
i
].
Voltage
;
Currt
+=
DcModuleGroup
[
i
].
Current
;
Count
+=
DcModuleGroup
[
i
].
ValidNum
;
groupCount
++
;
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_A
)
{
Volt_A
+=
DcModuleGroup
[
i
].
Voltage
;
Currt_A
+=
DcModuleGroup
[
i
].
Current
;
Count_A
+=
DcModuleGroup
[
i
].
ValidNum
;
groupCount_A
++
;
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_B
)
{
Volt_B
+=
DcModuleGroup
[
i
].
Voltage
;
Currt_B
+=
DcModuleGroup
[
i
].
Current
;
Count_B
+=
DcModuleGroup
[
i
].
ValidNum
;
groupCount_B
++
;
}
}
DcModuleCtrl
.
ActualCurrt
=
Currt_A
;
DcModuleCtrl
.
ActualVolt
=
Volt_A
;
DcModuleCtrl_ALL
.
ActualCurrt
=
Currt_A
;
DcModuleCtrl_ALL
.
ActualVolt
=
Volt_A
;
if
(
groupCount_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
.
ActualVolt
=
Volt_B
;
if
(
groupCount_B
)
DcModuleCtrl_B
.
ActualVolt
=
Volt_B
/
(
groupCount_B
);
else
DcModuleCtrl_B
.
ActualVolt
=
0
;
DcModuleManage
.
ValidNum
=
Count_A
;
DcModuleManage_All
.
ValidNum
=
Count
;
...
...
@@ -275,6 +279,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
u8
addr
;
u32
Volt
=
0
;
u8
Cmd
=
0
;
Temp
=
0
;
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
...
...
@@ -283,76 +288,80 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{
Temp
=
1
;
Volt
=
DcModuleAbility
.
MinVolt
*
100
;
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
{
//关机
if
(
status
[
i
]
==
Hold_A
)
{
if
(
i
==
0
)
if
(
i
==
0
)
{
DcModuleManage
.
SetVolt
=
DcModuleAbility
.
MinVolt
*
100
;
DcModuleManage
.
SetCurrt
=
DcModuleAbility
.
MinCurrt
*
100
;
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
)
{
if
(
i
==
2
)
if
(
i
==
2
)
{
DcModuleManage_B
.
SetVolt
=
DcModuleAbility
.
MinVolt
*
100
;
DcModuleManage_B
.
SetCurrt
=
DcModuleAbility
.
MinCurrt
*
100
;
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;
Cmd
=
0xAA
;
//关机
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_A
)
{
if
(
i
!=
0
)
//升压
if
(
i
!=
0
)
//升压
{
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
;
//开机
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_B
)
{
if
(
i
!=
2
)
//升压
if
(
i
!=
2
)
//升压
{
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
;
//开机
}
else
...
...
@@ -371,7 +380,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
Temp
=
DcModuleAbility
.
MinCurrt
*
100
;
DataSend
.
Data
[
2
]
=
(
u8
)
(
Temp
>>
8
);
DataSend
.
Data
[
3
]
=
(
u8
)
(
Temp
>>
0
);
Temp
=
Volt
;
//DcModuleAbility.MinVolt * 100;
Temp
=
Volt
;
//DcModuleAbility.MinVolt * 100;
DataSend
.
Data
[
4
]
=
(
u8
)
(
Temp
>>
24
);
DataSend
.
Data
[
5
]
=
(
u8
)
(
Temp
>>
16
);
DataSend
.
Data
[
6
]
=
(
u8
)
(
Temp
>>
8
);
...
...
@@ -400,12 +409,14 @@ void DcModuleCtrlProcess_SmartAllocation(void)
//osDelay(10);
}
}
status
[
i
]
=
DcModuleGroup
[
i
].
status
;
}
}
if
(
Temp
)
return
;
if
(
Temp
)
return
;
Temp
=
0
;
...
...
@@ -414,6 +425,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if
(
status1
[
i
]
!=
DcModuleGroup
[
i
].
status
)
{
Temp
=
1
;
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
{
//切换继电器
...
...
@@ -431,41 +443,41 @@ void DcModuleCtrlProcess_SmartAllocation(void)
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
)
{
//切换继电器
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
...
...
@@ -478,7 +490,9 @@ void DcModuleCtrlProcess_SmartAllocation(void)
}
}
if
(
Temp
)
return
;
if
(
Temp
)
return
;
if
(
LastFlag_A
!=
DcModuleCtrl
.
CtrlFlag
)
{
...
...
DcPillar/Src/SmartAllocation/SmartAllocation_B_ChgRun.c
浏览文件 @
5a5d23e5
...
...
@@ -175,8 +175,8 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if
(
NeedCurrt
>
MaxCurrt
)
NeedCurrt
=
MaxCurrt
;
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
DcModuleManage_B
.
ValidNum
))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
DcModuleManage_B
.
ValidNum
;
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage_B
.
ValidNum
+
DcModuleManage_All
.
ValidNum
)
))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage_B
.
ValidNum
+
DcModuleManage_All
.
ValidNum
)
;
MaxVolt
=
BcpMsg_B
.
ChgMaxVolt
;
NeedVolt
=
BclMsg_B
.
NeedVolt
;
...
...
@@ -342,6 +342,30 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
}
else
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
)
{
...
...
@@ -372,7 +396,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
pChargeCtrl
->
Param
=
0
;
}
if
(
0
==
ChargeEnable_B
)
if
(
0
==
TCUCurChgRecd_B
.
TCUChargeEnable
)
{
//ⲿƽ
CstMsg_B
.
StopReason
.
Value
.
Manual
=
1
;
CST_Send_B
(
&
CstMsg_B
);
...
...
DcPillar/Src/SmartAllocation/SmartAllocation_ChgRun.c
浏览文件 @
5a5d23e5
...
...
@@ -15,26 +15,31 @@
s32
GetChgVoltChgRun
(
void
)
{
if
(
ImdValue
.
Vaild
)
if
(
ImdValue
.
Vaild
)
return
ImdValue
.
PnVolt
;
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Voltage;
if
(
BcsMsg
.
Valid
)
if
(
BcsMsg
.
Valid
)
return
BcsMsg
.
ChgVolt
;
return
-
1
;
return
-
1
;
}
s32
GetChgCurrtChgRun
(
void
)
{
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Current/100;
if
(
BcsMsg
.
Valid
)
return
abs
((
s32
)
BcsMsg
.
ChgCurrt
-
4000
);
return
-
1
;
if
(
BcsMsg
.
Valid
)
return
abs
((
s32
)
BcsMsg
.
ChgCurrt
-
4000
);
return
-
1
;
}
extern
StructDcModuleManage
DcModuleManage_All
;
void
ChgProChgRun
(
StructChargeCtrl
*
pChargeCtrl
)
void
ChgProChgRun
(
StructChargeCtrl
*
pChargeCtrl
)
{
StructPgnRecv
PgnRecv
;
u32
CCS_SendTick
=
0
;
...
...
@@ -82,7 +87,7 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
DcOutSet
(
eSwSta_On
);
CcsChgEnable
=
1
;
CCS_Send
(
GetDcModuleVolt
(),
(
4000
-
GetDcModuleCurrt
()),
GetChgMin
(),
CcsChgEnable
);
CCS_Send
(
GetDcModuleVolt
(),
(
4000
-
GetDcModuleCurrt
()),
GetChgMin
(),
CcsChgEnable
);
CCS_SendTick
=
GetSystemTick
();
BclMsg
.
RecvTick
=
GetSystemTick
();
BcsMsg
.
RecvTick
=
GetSystemTick
();
...
...
@@ -94,78 +99,85 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
UniChgEnable
=
FALSE
;
UniChgTick
=
0
;
while
(
1
)
while
(
1
)
{
if
((
GetSystemTick
()
-
CCS_SendTick
)
>
50
)
if
((
GetSystemTick
()
-
CCS_SendTick
)
>
50
)
{
CCS_Send
(
MeterValue
.
Voltage
,
(
4000
-
MeterValue
.
Current
/
100
),
GetChgMin
(),
CcsChgEnable
);
CCS_Send
(
MeterValue
.
Voltage
,
(
4000
-
MeterValue
.
Current
/
100
),
GetChgMin
(),
CcsChgEnable
);
CCS_SendTick
=
GetSystemTick
();
}
ChgPgnRecv
(
&
PgnRecv
);
if
((
0
!=
ChargePauseFlag
)
||
(
0
!=
BmsPauseTick
))
if
((
0
!=
ChargePauseFlag
)
||
(
0
!=
BmsPauseTick
))
{
CcsChgEnable
=
0
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
}
else
if
(
0
!=
BclMsg
.
Valid
)
else
if
(
0
!=
BclMsg
.
Valid
)
{
if
(
eChgVer_2011
!=
UserParam
.
ChgVer
)
MaxCurrt
=
abs
((
s32
)
BcpMsg
.
ChgMaxCurrt
-
4000
);
if
(
eChgVer_2011
!=
UserParam
.
ChgVer
)
MaxCurrt
=
abs
((
s32
)
BcpMsg
.
ChgMaxCurrt
-
4000
);
else
MaxCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
);
MaxCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
);
NeedCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
);
NeedCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
);
static
s16
GetCurrt_bak
;
if
(
abs
((
s16
)
GetDcModuleCurrt
()
-
GetCurrt_bak
)
<
10
//ȶ
&&
(
abs
((
s16
)
NeedCurrt
-
(
s16
)
GetDcModuleCurrt
())
>
(
DcModuleAbility
.
MaxCurrt
*
10
))
)
if
(
abs
((
s16
)
GetDcModuleCurrt
()
-
GetCurrt_bak
)
<
10
//ȶ
&&
(
abs
((
s16
)
NeedCurrt
-
(
s16
)
GetDcModuleCurrt
())
>
(
DcModuleAbility
.
MaxCurrt
*
10
))
)
{
if
(
0
==
UniChgTick
)
if
(
0
==
UniChgTick
)
UniChgTick
=
GetSystemTick
();
if
((
GetSystemTick
()
-
UniChgTick
)
>
(
10
*
1000
))
if
((
GetSystemTick
()
-
UniChgTick
)
>
(
10
*
1000
))
{
if
(
NeedCurrt
>
GetDcModuleCurrt
())
if
(
NeedCurrt
>
GetDcModuleCurrt
())
{
if
(
DcModuleGroup
[
1
].
status
==
Valid
)
if
(
DcModuleGroup
[
1
].
status
==
Valid
)
{
DcModuleGroup
[
1
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
1
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
3
].
status
==
Valid
)
else
if
(
DcModuleGroup
[
3
].
status
==
Valid
)
{
DcModuleGroup
[
3
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
3
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
2
].
status
==
Valid
)
else
if
(
DcModuleGroup
[
2
].
status
==
Valid
)
{
DcModuleGroup
[
2
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
2
].
ValidNum
;
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
{
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
3
].
ValidNum
;
}
}
}
else
{
if
(
DcModuleGroup
[
2
].
status
==
Hold_A
)
if
(
DcModuleGroup
[
2
].
status
==
Hold_A
)
{
DcModuleGroup
[
2
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
2
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
else
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
{
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
3
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
1
].
status
==
Hold_A
)
else
if
(
DcModuleGroup
[
1
].
status
==
Hold_A
)
{
DcModuleGroup
[
1
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
1
].
ValidNum
;
}
}
UniChgTick
=
0
;
}
...
...
@@ -176,16 +188,20 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
UniChgTick
=
0
;
GetCurrt_bak
=
GetDcModuleCurrt
();
}
if
(
NeedCurrt
>
MaxCurrt
)
if
(
NeedCurrt
>
MaxCurrt
)
NeedCurrt
=
MaxCurrt
;
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
DcModuleManage
.
ValidNum
))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
DcModuleManage
.
ValidNum
;
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage
.
ValidNum
+
DcModuleManage_All
.
ValidNum
)))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage
.
ValidNum
+
DcModuleManage_All
.
ValidNum
);
MaxVolt
=
BcpMsg
.
ChgMaxVolt
;
NeedVolt
=
BclMsg
.
NeedVolt
;
if
(
NeedVolt
>
MaxVolt
)
if
(
NeedVolt
>
MaxVolt
)
NeedVolt
=
MaxVolt
;
if
(
NeedVolt
>
DcModuleAbility
.
MaxVolt
)
if
(
NeedVolt
>
DcModuleAbility
.
MaxVolt
)
NeedVolt
=
DcModuleAbility
.
MaxVolt
;
CcsChgEnable
=
1
;
...
...
@@ -193,19 +209,22 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
ChargeTimerSet
(
eSwSta_On
);
}
/*ѹ쳣ж*/
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
{
Temp
=
GetChgVoltChgRun
();
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>=
DcModuleAbility
.
MinVolt
)
&&
(
Temp
>
GetDcModuleVoltSet
()))
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>=
DcModuleAbility
.
MinVolt
)
&&
(
Temp
>
GetDcModuleVoltSet
()))
{
if
((
Temp
-
GetDcModuleVoltSet
())
>
(
GetDcModuleVoltSet
()
*
5
/
100
))
if
((
Temp
-
GetDcModuleVoltSet
())
>
(
GetDcModuleVoltSet
()
*
5
/
100
))
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CstMsg
.
StopFault
.
Value
.
Volt
=
1
;
ChargeError
.
Value
.
VoltOutError
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_VoltOutHighErr
;
...
...
@@ -214,15 +233,18 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
}
}
}
/*쳣ж*/
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
{
Temp
=
GetChgCurrtChgRun
();
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>
(
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
))
&&
(
Temp
>
GetDcModuleCurrtSet
()))
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>
(
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
))
&&
(
Temp
>
GetDcModuleCurrtSet
()))
{
if
((
Temp
-
GetDcModuleCurrtSet
())
>
(
GetDcModuleCurrtSet
()
*
10
/
100
))
if
((
Temp
-
GetDcModuleCurrtSet
())
>
(
GetDcModuleCurrtSet
()
*
10
/
100
))
{
if
(
0
==
CurrtOutChkTick
)
if
(
0
==
CurrtOutChkTick
)
CurrtOutChkTick
=
GetSystemTick
();
}
else
...
...
@@ -230,14 +252,15 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
}
else
CurrtOutChkTick
=
0
;
if
((
0
!=
CurrtOutChkTick
)
&&
((
GetSystemTick
()
-
CurrtOutChkTick
)
>
10000
))
if
((
0
!=
CurrtOutChkTick
)
&&
((
GetSystemTick
()
-
CurrtOutChkTick
)
>
10000
))
{
CurrtOutChkTick
=
0
;
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CstMsg
.
StopFault
.
Value
.
Currt
=
1
;
ChargeError
.
Value
.
CurrtOutError
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_CurrtOutHighErr
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
...
...
@@ -246,95 +269,100 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
}
if
(
0
!=
BsmMsg
.
Valid
)
if
(
0
!=
BsmMsg
.
Valid
)
{
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Volt
)
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Volt
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopFault
.
Value
.
Volt
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_SinglBatVolt
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Soc
)
else
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Soc
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_SocOver
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Currt
)
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Currt
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopFault
.
Value
.
Currt
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_CurrtOver
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Temp
)
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Temp
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BatTempOver
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Imd
)
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Imd
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BatIsolate
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Connect
)
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Connect
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Cc2Error
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x00
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
else
if
(
0x00
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
{
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
if
(
0
==
BmsPauseTick
)
if
(
0
==
BmsPauseTick
)
BmsPauseTick
=
GetSystemTick
();
if
((
0
!=
BmsPauseTick
)
&&
((
GetSystemTick
()
-
BmsPauseTick
)
>
MsgTimeout_10M
))
if
((
0
!=
BmsPauseTick
)
&&
((
GetSystemTick
()
-
BmsPauseTick
)
>
MsgTimeout_10M
))
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BmsPause
;
...
...
@@ -342,14 +370,14 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
pChargeCtrl
->
Param
=
0
;
}
}
else
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
else
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
BmsPauseTick
=
0
;
}
if
((
GetSystemTick
()
-
BclMsg
.
RecvTick
)
>
MsgTimeout_1S
)
if
((
GetSystemTick
()
-
BclMsg
.
RecvTick
)
>
MsgTimeout_1S
)
{
CemMsg
.
Cem
.
Value
.
Bcl
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
pChargeCtrl
->
CurProcess
=
eChgPro_CommBreak
;
...
...
@@ -358,10 +386,35 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
else
CemMsg
.
Cem
.
Value
.
Bcl
=
0
;
if
((
GetSystemTick
()
-
BcsMsg
.
RecvTick
)
>
MsgTimeout_5S
)
if
(((
GetSystemTick
()
-
BcsMsg
.
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
(
&
FrameSend
);
BcsMsg
.
RecvTick
=
GetSystemTick
();
}
else
CemMsg
.
Cem
.
Value
.
Bcs
=
0
;
//ֶ֡
if
((
GetSystemTick
()
-
BcsMsg
.
RecvTick
)
>
MsgTimeout_5S
)
{
CemMsg
.
Cem
.
Value
.
Bcs
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
pChargeCtrl
->
CurProcess
=
eChgPro_CommBreak
;
...
...
@@ -370,30 +423,31 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
else
CemMsg
.
Cem
.
Value
.
Bcs
=
0
;
if
(
0
!=
BemMsg
.
Valid
)
if
(
0
!=
BemMsg
.
Valid
)
{
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
pChargeCtrl
->
CurProcess
=
eChgPro_CommBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
BstMsg
.
Valid
)
if
(
0
!=
BstMsg
.
Valid
)
{
CstMsg
.
StopReason
.
Value
.
BmsStop
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BmsStop
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
==
ChargeEnable
)
{
//ⲿƽ
if
(
0
==
TCUCurChgRecd
.
TCUChargeEnable
)
{
//ⲿƽ
CstMsg
.
StopReason
.
Value
.
Manual
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_UserCancel
;
...
...
@@ -401,18 +455,19 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
pChargeCtrl
->
Param
=
0
;
}
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
CurSoc
>=
100
))
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
CurSoc
>=
100
))
{
if
(
0
==
SocStopTick
)
if
(
0
==
SocStopTick
)
SocStopTick
=
GetSystemTick
();
}
else
SocStopTick
=
0
;
if
((
0
!=
SocStopTick
)
&&
((
GetSystemTick
()
-
SocStopTick
)
>
(
MsgTimeout_60S
*
2
)))
{
//ⲿƽ
if
((
0
!=
SocStopTick
)
&&
((
GetSystemTick
()
-
SocStopTick
)
>
(
MsgTimeout_60S
*
2
)))
{
//ⲿƽ
CstMsg
.
StopReason
.
Value
.
AutoSet
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Soc98
;
...
...
@@ -420,12 +475,13 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
pChargeCtrl
->
Param
=
0
;
}
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>
BcpMsg
.
PerBatMaxVolt
)
&&
(
1
==
UserParam
.
ChgFun
.
Value
.
BatCellJud
))
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>
BcpMsg
.
PerBatMaxVolt
)
&&
(
1
==
UserParam
.
ChgFun
.
Value
.
BatCellJud
))
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopFault
.
Value
.
Volt
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_SinglBatVoltOverPermitMax
;
...
...
@@ -433,19 +489,20 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
pChargeCtrl
->
Param
=
0
;
}
if
(
eSwSta_On
!=
CcStatusRead
())
if
(
eSwSta_On
!=
CcStatusRead
())
{
if
(
0
==
CcStatusChkTick
)
if
(
0
==
CcStatusChkTick
)
CcStatusChkTick
=
GetSystemTick
();
}
else
CcStatusChkTick
=
0
;
if
((
0
!=
CcStatusChkTick
)
&&
((
GetSystemTick
()
-
CcStatusChkTick
)
>
CC_CheckTick
))
if
((
0
!=
CcStatusChkTick
)
&&
((
GetSystemTick
()
-
CcStatusChkTick
)
>
CC_CheckTick
))
{
CstMsg
.
StopReason
.
Value
.
Manual
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
...
...
@@ -454,85 +511,94 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Emergency
)
if
(
0
!=
PillarError
.
Value
.
Emergency
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Emergency
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_EmerClose
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Door
)
if
(
0
!=
PillarError
.
Value
.
Door
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_DoorOpen
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Contactor
)
if
(
0
!=
PillarError
.
Value
.
Contactor
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Contactor
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
UniContactor
)
if
(
0
!=
PillarError
.
Value
.
UniContactor
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Contactor
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
InVolt
)
if
(
0
!=
PillarError
.
Value
.
InVolt
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_InVolt
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
NoDcmod
)
if
(
0
!=
PillarError
.
Value
.
NoDcmod
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_NoDcmod
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Meter
)
if
(
0
!=
PillarError
.
Value
.
Meter
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Meter
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
}
if
(
eChgPro_ChgRun
!=
pChargeCtrl
->
CurProcess
)
if
(
eChgPro_ChgRun
!=
pChargeCtrl
->
CurProcess
)
return
;
osDelay
(
5
);
}
}
...
...
DcPillar/Src/Thread/Thd_TCU.c
浏览文件 @
5a5d23e5
...
...
@@ -663,7 +663,7 @@ void TCUCurChgRecordInterface_A(void)
}
else
if
(
TCUCurChgRecd
.
TCUChgStarCompNotetrl
==
1
)
{
st
op
CompSend_A
();
st
art
CompSend_A
();
ChgStartCompSendTick
=
GetSystemTick
();
TCUCurChgRecd
.
TCUChgStarCompNotetrl
=
2
;
}
...
...
@@ -725,6 +725,7 @@ void TCUCurChgRecordInterface_A(void)
stopCompSend_A
();
ChgRecordSendTick
=
GetSystemTick
();
TCUCurChgRecd
.
TCUChgStopCompNotetrl
=
2
;
ChgRecordSendErr
=
0
;
}
else
if
((
TCUCurChgRecd
.
TCUChgStopCompNotetrl
==
2
)
&&
(
0
!=
TCUCurChgRecd
.
TCUChargeEnable
))
{
...
...
@@ -793,9 +794,10 @@ void TCUCurChgRecordInterface_B(void)
}
else
if
(
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
==
1
)
{
st
op
CompSend_B
();
st
art
CompSend_B
();
ChgStartCompSendTick
=
GetSystemTick
();
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
=
2
;
ChgStartCompSendEcount
=
0
;
}
else
if
(
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
==
2
)
{
...
...
@@ -892,7 +894,7 @@ u8 TcuGetChgStatus(void)
{
status
=
0x00
;
}
else
if
(
old_status
==
0
)
else
//
if(old_status == 0)
{
status
=
0x01
;
}
...
...
@@ -942,12 +944,12 @@ u8 TcuGetChgStatus(void)
{
status
=
0x0b
;
}
else
if
((
ChargeCtrl
.
CurProcess
==
eChgPro_ChgIdle
)
\
/*
else if((ChargeCtrl.CurProcess == eChgPro_ChgIdle)\
&& (old_status == 0x0b))
{
status = 0x0b;
}
old_status
=
status
;
}
*/
//
old_status = status;
return
status
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论