Обновление платы на V2

This commit is contained in:
cfif 2026-05-06 13:14:17 +03:00
parent 4b586d14ae
commit a96c4a8a1f
1 changed files with 82 additions and 42 deletions

View File

@ -6,6 +6,8 @@
#include <SystemDelayInterface.h>
#include "memory.h"
#include "HVAC_model.h"
#include "ADC_Temp.h"
#include "ADC_Temp_Fast.h"
#define LOG_SIGN "ADC"
#define LOGGER env->logger
@ -32,10 +34,12 @@ void Adc_0_Init(tAdcTask *env,
void BTS5180_120(tAdcTask *env, char *desc, uint16_t adc_value) {
float kILIS = 550.0f;
float ERROR_THRESHOLD_V = 4.9f;
uint16_t ERROR_THRESHOLD_CODE = (uint16_t) (ERROR_THRESHOLD_V * 4095.0f / 5.0f);
float ERROR_THRESHOLD_HIGH_V = 4.9f;
float ERROR_THRESHOLD_LOW_V = 0.1f;
uint16_t ERROR_THRESHOLD_HIGH_CODE = (uint16_t) (ERROR_THRESHOLD_HIGH_V * 4095.0f / 5.0f);
// uint16_t ERROR_THRESHOLD_LOW_CODE = (uint16_t) (ERROR_THRESHOLD_LOW_V * 4095.0f / 5.0f);
if (adc_value >= ERROR_THRESHOLD_CODE) {
if (adc_value >= ERROR_THRESHOLD_HIGH_CODE /*|| adc_value <= ERROR_THRESHOLD_LOW_CODE*/) {
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value)
} else {
// Преобразование в напряжение
@ -54,11 +58,13 @@ void VN7008AJ(tAdcTask *env, char *desc, uint16_t adc_value) {
float RSENSE = 2490.0f; // Сопротивление датчика, Ом (На схеме)
float K_TYPICAL = 5890.0f; // Типичный коэффициент из даташита на микросхему
float ERROR_THRESHOLD_V = 4.9f;
uint16_t ERROR_THRESHOLD_CODE = (uint16_t) (ERROR_THRESHOLD_V * 4095.0f / 5.0f);
float ERROR_THRESHOLD_HIGH_V = 4.9f;
float ERROR_THRESHOLD_LOW_V = 0.1f;
uint16_t ERROR_THRESHOLD_HIGH_CODE = (uint16_t) (ERROR_THRESHOLD_HIGH_V * 4095.0f / 5.0f);
// uint16_t ERROR_THRESHOLD_LOW_CODE = (uint16_t) (ERROR_THRESHOLD_LOW_V * 4095.0f / 5.0f);
// 1. Проверка на ошибку
if (adc_value >= ERROR_THRESHOLD_CODE) {
if (adc_value >= ERROR_THRESHOLD_HIGH_CODE/* || adc_value <= ERROR_THRESHOLD_LOW_CODE*/) {
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value)
} else {
@ -76,18 +82,44 @@ void VN7008AJ(tAdcTask *env, char *desc, uint16_t adc_value) {
}
void ANALOG_SENSOR(tAdcTask *env, char *desc, uint16_t adc_value) {
float ERROR_THRESHOLD_V = 4.9f;
uint16_t ERROR_THRESHOLD_CODE = (uint16_t) (ERROR_THRESHOLD_V * 4095.0f / 5.0f);
void ANALOG_SENSOR(tAdcTask *env, char *desc, uint16_t adc_value, eNtcTable NtcTable, float R) {
float ERROR_THRESHOLD_HIGH_V = 4.9f;
float ERROR_THRESHOLD_LOW_V = 0.1f;
uint16_t ERROR_THRESHOLD_HIGH_CODE = (uint16_t) (ERROR_THRESHOLD_HIGH_V * 4095.0f / 5.0f);
uint16_t ERROR_THRESHOLD_LOW_CODE = (uint16_t) (ERROR_THRESHOLD_LOW_V * 4095.0f / 5.0f);
// 1. Проверка на ошибку
if (adc_value >= ERROR_THRESHOLD_CODE) {
if (adc_value >= ERROR_THRESHOLD_HIGH_CODE || adc_value <= ERROR_THRESHOLD_LOW_CODE) {
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value)
} else {
// Преобразование в напряжение
float U = (float) adc_value * 5.0f / 4095.0f;
float temp = 0;
switch (NtcTable) {
case TABLE_NONE:
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d)", desc, U, adc_value)
return;
case TABLE_DUCT:
if (R == 3000) {
temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value);
}
if (R == 20000) {
temp = get_temperature_by_adc(temperature_table_duct_KST45_table_20000, 1024, adc_value);
}
break;
case TABLE_INCAR:
break;
case TABLE_AMBIENT:
break;
}
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d) Temp = %f", desc, U, adc_value, temp)
}
}
@ -185,7 +217,7 @@ static _Noreturn void Adc0_Thread(tAdcTask *env) {
}
/*
//////////////////////////////////////----DEBUG----////////////////////////////////////////////////////////////////////
BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV1",
rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1);
@ -206,37 +238,42 @@ static _Noreturn void Adc0_Thread(tAdcTask *env) {
BTS5180_120(env, "BTS5180_2EKA_ChannelPTCPower2", rtDW.ADC_Data_Model.BTS5180_2EKA_ChannelPTCPower2);
ANALOG_SENSOR(env, "Sensor_Ambient_Temp", rtDW.ADC_Data_Model.Sensor_Ambient_Temp);
ANALOG_SENSOR(env, "Sensor_AC_Pressure", rtDW.ADC_Data_Model.Sensor_AC_Pressure);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_FL", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_RL", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL);
ANALOG_SENSOR(env, "Sensor_Rear_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp);
ANALOG_SENSOR(env, "Sensor_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Evap_Temp);
ANALOG_SENSOR(env, "Sensor_Rear_Duct1", rtDW.ADC_Data_Model.Sensor_Rear_Duct1);
ANALOG_SENSOR(env, "Sensor_Rear_Duct2", rtDW.ADC_Data_Model.Sensor_Rear_Duct2);
ANALOG_SENSOR(env, "Sensor_Front_Duct1", rtDW.ADC_Data_Model.Sensor_Front_Duct1);
ANALOG_SENSOR(env, "Sensor_Front_Duct2", rtDW.ADC_Data_Model.Sensor_Front_Duct2);
ANALOG_SENSOR(env, "Sensor_Front_Duct3", rtDW.ADC_Data_Model.Sensor_Front_Duct3);
ANALOG_SENSOR(env, "Sensor_Front_Duct4", rtDW.ADC_Data_Model.Sensor_Front_Duct4);
ANALOG_SENSOR(env, "Sensor_Rear_Duct3", rtDW.ADC_Data_Model.Sensor_Rear_Duct3);
ANALOG_SENSOR(env, "Sensor_Rear_Duct4", rtDW.ADC_Data_Model.Sensor_Rear_Duct4);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_FR", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_RR", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR);
ANALOG_SENSOR(env, "Sensor_Rear_Duct5", rtDW.ADC_Data_Model.Sensor_Rear_Duct5);
ANALOG_SENSOR(env, "Sensor_Rear_Duct6", rtDW.ADC_Data_Model.Sensor_Rear_Duct6);
ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_1", rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_1);
ANALOG_SENSOR(env, "Sensor_Front_Duct5", rtDW.ADC_Data_Model.Sensor_Front_Duct5);
ANALOG_SENSOR(env, "Sensor_Front_Duct6", rtDW.ADC_Data_Model.Sensor_Front_Duct6);
ANALOG_SENSOR(env, "Sensor_Ambient_Temp", rtDW.ADC_Data_Model.Sensor_Ambient_Temp, TABLE_AMBIENT, 20000);
ANALOG_SENSOR(env, "Sensor_AC_Pressure", rtDW.ADC_Data_Model.Sensor_AC_Pressure, TABLE_NONE, 0);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_FL", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FL, TABLE_INCAR, 20000);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_RL", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RL, TABLE_INCAR, 20000);
ANALOG_SENSOR(env, "Sensor_Rear_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp, TABLE_DUCT, 20000);
ANALOG_SENSOR(env, "Sensor_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Evap_Temp, TABLE_DUCT, 20000);
ANALOG_SENSOR(env, "Sensor_Rear_Duct1", rtDW.ADC_Data_Model.Sensor_Rear_Duct1, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Rear_Duct2", rtDW.ADC_Data_Model.Sensor_Rear_Duct2, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Front_Duct1", rtDW.ADC_Data_Model.Sensor_Front_Duct1, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Front_Duct2", rtDW.ADC_Data_Model.Sensor_Front_Duct2, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Front_Duct3", rtDW.ADC_Data_Model.Sensor_Front_Duct3, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Front_Duct4", rtDW.ADC_Data_Model.Sensor_Front_Duct4, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Rear_Duct3", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Rear_Duct4", rtDW.ADC_Data_Model.Sensor_Rear_Duct4, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_FR", rtDW.ADC_Data_Model.Sensor_Incar_Temp_FR, TABLE_INCAR, 20000);
ANALOG_SENSOR(env, "Sensor_Incar_Temp_RR", rtDW.ADC_Data_Model.Sensor_Incar_Temp_RR, TABLE_INCAR, 20000);
ANALOG_SENSOR(env, "Sensor_Rear_Duct5", rtDW.ADC_Data_Model.Sensor_Rear_Duct5, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Rear_Duct6", rtDW.ADC_Data_Model.Sensor_Rear_Duct6, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_1", rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_1, TABLE_DUCT,
20000);
ANALOG_SENSOR(env, "Sensor_Front_Duct5", rtDW.ADC_Data_Model.Sensor_Front_Duct5, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Sensor_Front_Duct6", rtDW.ADC_Data_Model.Sensor_Front_Duct6, TABLE_DUCT, 3000);
ANALOG_SENSOR(env, "Pressure_DIAG", rtDW.ADC_Data_Model.Pressure_DIAG, TABLE_NONE, 0);
ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_2", rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_2, TABLE_DUCT,
20000);
ANALOG_SENSOR(env, "Pressure_DIAG", rtDW.ADC_Data_Model.Pressure_DIAG);
/*
ANALOG_SENSOR(env, "Sensor_PT_rHVAC_P", rtDW.ADC_Data_Model.Sensor_PT_rHVAC_P);
ANALOG_SENSOR(env, "Sensor_A_T_reserve", rtDW.ADC_Data_Model.Sensor_A_T_reserve);
*/
//////////////////////////////////////----DEBUG----////////////////////////////////////////////////////////////////////
*/
@ -326,8 +363,9 @@ static _Noreturn void Adc1_Thread(tAdcTask *env) {
rtDW.ADC_Data_Model.Sensor_PT_T_reserve = pData[14];
rtDW.ADC_Data_Model.Sensor_B_T_reserve = pData[15];
*/
/*
//////////////////////////////////////----DEBUG----////////////////////////////////////////////////////////////////////
/*
ANALOG_SENSOR(env, "PT_F_HVAC_VCC_DIAG", rtDW.ADC_Data_Model.PT_F_HVAC_VCC_DIAG);
ANALOG_SENSOR(env, "PT_HVBchiller_VCC_DIAG", rtDW.ADC_Data_Model.PT_HVBchiller_VCC_DIAG);
ANALOG_SENSOR(env, "PT_R_HVAC_VCC_DIAG", rtDW.ADC_Data_Model.PT_R_HVAC_VCC_DIAG);
@ -340,17 +378,19 @@ static _Noreturn void Adc1_Thread(tAdcTask *env) {
ANALOG_SENSOR(env, "Sensor_PT_P_reserve", rtDW.ADC_Data_Model.Sensor_PT_P_reserve);
ANALOG_SENSOR(env, "Sensor_PT_T_reserve", rtDW.ADC_Data_Model.Sensor_PT_T_reserve);
ANALOG_SENSOR(env, "Sensor_B_T_reserve", rtDW.ADC_Data_Model.Sensor_B_T_reserve);
*/
ANALOG_SENSOR(env, "VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB", rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB);
ANALOG_SENSOR(env, "VN7008AJ_DIAG_RearLINActuatorPowerDriverC", rtDW.ADC_Data_Model.VN7008AJ_DIAG_RearLINActuatorPowerDriverC);
ANALOG_SENSOR(env, "VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB",
rtDW.ADC_Data_Model.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB, TABLE_NONE, 0);
ANALOG_SENSOR(env, "VN7008AJ_DIAG_RearLINActuatorPowerDriverC",
rtDW.ADC_Data_Model.VN7008AJ_DIAG_RearLINActuatorPowerDriverC, TABLE_NONE, 0);
VN7008AJ(env, "VN7008AJ_FrontLINActuatorPowerDriverAB",
rtDW.ADC_Data_Model.VN7008AJ_FrontLINActuatorPowerDriverAB);
VN7008AJ(env, "VN7008AJ_RearLINActuatorPowerDriverC",
rtDW.ADC_Data_Model.VN7008AJ_RearLINActuatorPowerDriverC);
//////////////////////////////////////----DEBUG----////////////////////////////////////////////////////////////////////
*/
osMutexRelease(env->modelTaskAccess);
} else {