|
|
@@ -328,77 +328,87 @@ void health_process_aux_lock(void){
|
|
|
|
|
|
|
|
|
void check_temp_state(void){
|
|
|
- if (bms_state_get()->charging){
|
|
|
- if (!_health.charger_over_temp){
|
|
|
- if (_is_over_temp(charger_higher_high_temp)) {//超过允许的最高温度
|
|
|
- debounce_inc(_charger_over_temp);
|
|
|
- }else {
|
|
|
- debounce_reset(_charger_over_temp);
|
|
|
- }
|
|
|
- if (debounce_reach_max(_charger_over_temp)){
|
|
|
- _health.charger_over_temp = 1;
|
|
|
- debounce_reset(_charger_over_temp);
|
|
|
- }
|
|
|
+ if (!_health.over_temp_deny_charger){
|
|
|
+ if (_is_over_temp(charger_higher_high_temp)) {//超过允许的最高温度
|
|
|
+ debounce_inc(_charger_over_temp);
|
|
|
+ }else {
|
|
|
+ debounce_reset(_charger_over_temp);
|
|
|
}
|
|
|
- if (!_health.charger_lower_temp){
|
|
|
- if (_is_low_temp(charger_lower_low_temp)) {//低于允许的最低温度
|
|
|
- debounce_inc(_charger_lower_temp);
|
|
|
- }else {
|
|
|
- debounce_reset(_charger_lower_temp);
|
|
|
- }
|
|
|
- if (debounce_reach_max(_charger_lower_temp)) {
|
|
|
- _health.charger_lower_temp = 1;
|
|
|
- debounce_reset(_charger_lower_temp);
|
|
|
- }
|
|
|
+ if (debounce_reach_max(_charger_over_temp)){
|
|
|
+ _health.over_temp_deny_charger = 1;
|
|
|
+ debounce_reset(_charger_over_temp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!_health.lower_temp_deny_charger){
|
|
|
+ if (_is_low_temp(charger_lower_low_temp)) {//低于允许的最低温度
|
|
|
+ debounce_inc(_charger_lower_temp);
|
|
|
+ }else {
|
|
|
+ debounce_reset(_charger_lower_temp);
|
|
|
}
|
|
|
- if (_health.charger_over_temp || _health.charger_lower_temp) {
|
|
|
- if (!_is_over_temp(charger_normal_high_temp) && !_is_low_temp(charger_normal_low_temp)){
|
|
|
- debounce_inc(_charger_normal_temp);
|
|
|
- }else {
|
|
|
- debounce_reset(_charger_normal_temp);
|
|
|
- }
|
|
|
- if (debounce_reach_max(_charger_normal_temp)){
|
|
|
- _health.charger_over_temp = 0;
|
|
|
- _health.charger_lower_temp = 0;
|
|
|
- debounce_reset(_charger_normal_temp);
|
|
|
- }
|
|
|
+ if (debounce_reach_max(_charger_lower_temp)) {
|
|
|
+ _health.lower_temp_deny_charger = 1;
|
|
|
+ debounce_reset(_charger_lower_temp);
|
|
|
}
|
|
|
- }else {
|
|
|
- if (!_health.discharger_over_temp){
|
|
|
- if (_is_over_temp(discharger_higher_high_temp)) {//超过允许的最高温度
|
|
|
- debounce_inc(_discharger_over_temp);
|
|
|
- }else {
|
|
|
- debounce_reset(_discharger_over_temp);
|
|
|
- }
|
|
|
- if (debounce_reach_max(_discharger_over_temp)){
|
|
|
- _health.discharger_over_temp = 1;
|
|
|
- debounce_reset(_discharger_over_temp);
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (_health.lower_temp_deny_charger || _health.over_temp_deny_charger) {
|
|
|
+ if (!_is_over_temp(charger_normal_high_temp) && !_is_low_temp(charger_normal_low_temp)){
|
|
|
+ debounce_inc(_charger_normal_temp);
|
|
|
+ }else {
|
|
|
+ debounce_reset(_charger_normal_temp);
|
|
|
}
|
|
|
- if (!_health.discharger_lower_temp){
|
|
|
- if (_is_low_temp(discharger_lower_low_temp)) {//低于允许的最低温度
|
|
|
- debounce_inc(_discharger_lower_temp);
|
|
|
- }else {
|
|
|
- debounce_reset(_discharger_lower_temp);
|
|
|
- }
|
|
|
- if (debounce_reach_max(_discharger_lower_temp)) {
|
|
|
- _health.discharger_lower_temp = 1;
|
|
|
- debounce_reset(_discharger_lower_temp);
|
|
|
- }
|
|
|
+ if (debounce_reach_max(_charger_normal_temp)){
|
|
|
+ _health.over_temp_deny_charger = 0;
|
|
|
+ _health.lower_temp_deny_charger = 0;
|
|
|
+ debounce_reset(_charger_normal_temp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!_health.over_temp_deny_discharger){
|
|
|
+ if (_is_over_temp(discharger_higher_high_temp)) {//超过允许的最高温度
|
|
|
+ debounce_inc(_discharger_over_temp);
|
|
|
+ }else {
|
|
|
+ debounce_reset(_discharger_over_temp);
|
|
|
}
|
|
|
- if (_health.discharger_over_temp || _health.discharger_lower_temp) {
|
|
|
- if (!_is_over_temp(discharger_normal_high_temp) && !_is_low_temp(discharger_normal_low_temp)){
|
|
|
- debounce_inc(_discharger_normal_temp);
|
|
|
- }else {
|
|
|
- debounce_reset(_discharger_normal_temp);
|
|
|
- }
|
|
|
- if (debounce_reach_max(_discharger_normal_temp)){
|
|
|
- _health.charger_over_temp = 0;
|
|
|
- _health.charger_lower_temp = 0;
|
|
|
- debounce_reset(_discharger_normal_temp);
|
|
|
- }
|
|
|
+ if (debounce_reach_max(_discharger_over_temp)){
|
|
|
+ _health.over_temp_deny_discharger = 1;
|
|
|
+ debounce_reset(_discharger_over_temp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!_health.lower_temp_deny_discharger){
|
|
|
+ if (_is_low_temp(discharger_lower_low_temp)) {//低于允许的最低温度
|
|
|
+ debounce_inc(_discharger_lower_temp);
|
|
|
+ }else {
|
|
|
+ debounce_reset(_discharger_lower_temp);
|
|
|
}
|
|
|
+ if (debounce_reach_max(_discharger_lower_temp)) {
|
|
|
+ _health.lower_temp_deny_discharger = 1;
|
|
|
+ debounce_reset(_discharger_lower_temp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (_health.lower_temp_deny_discharger || _health.over_temp_deny_discharger) {
|
|
|
+ if (!_is_over_temp(discharger_normal_high_temp) && !_is_low_temp(discharger_normal_low_temp)){
|
|
|
+ debounce_inc(_discharger_normal_temp);
|
|
|
+ }else {
|
|
|
+ debounce_reset(_discharger_normal_temp);
|
|
|
+ }
|
|
|
+ if (debounce_reach_max(_discharger_normal_temp)){
|
|
|
+ _health.over_temp_deny_discharger = 0;
|
|
|
+ _health.lower_temp_deny_discharger = 0;
|
|
|
+ debounce_reset(_discharger_normal_temp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (bms_state_get()->charging){
|
|
|
+ _health.discharger_over_temp = 0;
|
|
|
+ _health.discharger_lower_temp = 0;
|
|
|
+ _health.charger_over_temp = _health.over_temp_deny_charger;
|
|
|
+ _health.charger_lower_temp = _health.lower_temp_deny_charger;
|
|
|
|
|
|
+ }else {
|
|
|
+ _health.charger_over_temp = 0;
|
|
|
+ _health.charger_lower_temp = 0;
|
|
|
+ _health.discharger_over_temp = _health.over_temp_deny_discharger;
|
|
|
+ _health.discharger_lower_temp = _health.lower_temp_deny_discharger;
|
|
|
}
|
|
|
debug_health();
|
|
|
}
|