Обновление
This commit is contained in:
parent
e9b95902dc
commit
a319f6477a
|
|
@ -40,28 +40,161 @@ void Mma_Init(
|
||||||
//uint8_t dataR[1024 * 2];
|
//uint8_t dataR[1024 * 2];
|
||||||
|
|
||||||
|
|
||||||
|
void BTS5180_120(tMma *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);
|
||||||
|
|
||||||
|
if (adc_value >= ERROR_THRESHOLD_CODE) {
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "%s: Ошибка !!!", desc)
|
||||||
|
} else {
|
||||||
|
// Преобразование в напряжение
|
||||||
|
float U = (float) adc_value * 5.0f / 4095.0f;
|
||||||
|
float I = U / 1200; // Ток диагностики R = 1200
|
||||||
|
float Iout = I * kILIS; // Ток устройства
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB,
|
||||||
|
"%s: Напряжение = %f Ток диагностики = %f Выходной = %f",
|
||||||
|
desc, U, I, Iout)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void VN7008AJ(tMma *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);
|
||||||
|
|
||||||
|
// 1. Проверка на ошибку
|
||||||
|
if (adc_value >= ERROR_THRESHOLD_CODE) {
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "%s: Ошибка !!!", desc)
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// 2. Преобразование в напряжение
|
||||||
|
float vsense = (float) adc_value * 5.0f / 4095.0f;
|
||||||
|
|
||||||
|
// 3. Вычисление тока
|
||||||
|
float Isense = vsense / RSENSE;
|
||||||
|
float Iout = Isense * K_TYPICAL;
|
||||||
|
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB,
|
||||||
|
"%s: Напряжение = %f Ток диагностики = %f Выходной = %f",
|
||||||
|
desc, vsense, Isense, Iout)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ANALOG_SENSOR(tMma *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);
|
||||||
|
|
||||||
|
// 1. Проверка на ошибку
|
||||||
|
if (adc_value >= ERROR_THRESHOLD_CODE) {
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "%s: Ошибка !!!", desc)
|
||||||
|
} else {
|
||||||
|
// Преобразование в напряжение
|
||||||
|
float U = (float) adc_value * 5.0f / 4095.0f;
|
||||||
|
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "%s: Напряжение = %f", desc, U)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void LoadDataInFromModel(tMma *env) {
|
void LoadDataInFromModel(tMma *env) {
|
||||||
int16_t temp1 = 0;
|
int16_t temp1 = 0;
|
||||||
float temp2 = 0;
|
float temp2 = 0;
|
||||||
|
|
||||||
if (osMutexAcquire(env->adcTask0.access, 1000) == osOK) {
|
if (osMutexAcquire(env->adcTask0.access, 1000) == osOK) {
|
||||||
temp1 = get_temperature_fast(env->adcTask0.ADC_Data.Sensor_Ambient_Temp);
|
|
||||||
temp2 = get_temperature_from_adc(env->adcTask0.ADC_Data.Sensor_Ambient_Temp, ALG_STEINHART);
|
|
||||||
|
|
||||||
if (env->adcTask0.ADC_isUpdate) {
|
if (env->adcTask0.ADC_isUpdate) {
|
||||||
env->adcTask0.ADC_isUpdate = false;
|
env->adcTask0.ADC_isUpdate = false;
|
||||||
env->rtDW.controllerDataIncarInput.InIncarFL = env->adcTask0.ADC_Data.Sensor_Ambient_Temp;
|
|
||||||
|
|
||||||
|
temp1 = get_temperature_fast(env->adcTask0.ADC0_Data.Sensor_Ambient_Temp);
|
||||||
|
temp2 = get_temperature_from_adc(env->adcTask0.ADC0_Data.Sensor_Ambient_Temp, ALG_STEINHART);
|
||||||
|
env->rtDW.controllerDataIncarInput.InIncarFL = env->adcTask0.ADC0_Data.Sensor_Ambient_Temp;
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "Temp1 = %d; Temp2 = %d;", temp1, (int16_t) (temp2 * 10.0f))
|
||||||
|
|
||||||
|
// R1 = 91000 R2 = 20000 ((5 * (91000 + 20000)) / 20000 = 27.75 В)
|
||||||
|
float U_IGN_CHECK = ((float) env->adcTask0.ADC0_Data.IGN_ANS * 27.75f) / 4095.0f;
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "U_IGN_CHECK = %f", U_IGN_CHECK)
|
||||||
|
|
||||||
|
|
||||||
|
BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV1",
|
||||||
|
env->adcTask0.ADC0_Data.BTS5120_2EKA_ShutoffValvePowerTXV1);
|
||||||
|
BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV2",
|
||||||
|
env->adcTask0.ADC0_Data.BTS5120_2EKA_ShutoffValvePowerTXV2);
|
||||||
|
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_ShutOFFValveFront", env->adcTask0.ADC0_Data.BTS5180_2EKA_ShutOFFValveFront);
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_ShutOFFValveRear", env->adcTask0.ADC0_Data.BTS5180_2EKA_ShutOFFValveRear);
|
||||||
|
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_TwoWayValve", env->adcTask0.ADC0_Data.BTS5180_2EKA_TwoWayValve);
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_ReservePowerSupply",
|
||||||
|
env->adcTask0.ADC0_Data.BTS5180_2EKA_ReservePowerSupply);
|
||||||
|
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_FrontIncarMotor", env->adcTask0.ADC0_Data.BTS5180_2EKA_FrontIncarMotor);
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_RearIncarMotor", env->adcTask0.ADC0_Data.BTS5180_2EKA_RearIncarMotor);
|
||||||
|
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_ChannelPTCPower1", env->adcTask0.ADC0_Data.BTS5180_2EKA_ChannelPTCPower1);
|
||||||
|
BTS5180_120(env, "BTS5180_2EKA_ChannelPTCPower2", env->adcTask0.ADC0_Data.BTS5180_2EKA_ChannelPTCPower2);
|
||||||
|
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Ambient_Temp", env->adcTask0.ADC0_Data.Sensor_Ambient_Temp);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_AC_Pressure", env->adcTask0.ADC0_Data.Sensor_AC_Pressure);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Incar_Temp_FL", env->adcTask0.ADC0_Data.Sensor_Incar_Temp_FL);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Incar_Temp_RL", env->adcTask0.ADC0_Data.Sensor_Incar_Temp_RL);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Evap_Temp", env->adcTask0.ADC0_Data.Sensor_Rear_Evap_Temp);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Evap_Temp", env->adcTask0.ADC0_Data.Sensor_Evap_Temp);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct1", env->adcTask0.ADC0_Data.Sensor_Rear_Duct1);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct2", env->adcTask0.ADC0_Data.Sensor_Rear_Duct2);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct1", env->adcTask0.ADC0_Data.Sensor_Front_Duct1);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct2", env->adcTask0.ADC0_Data.Sensor_Front_Duct2);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct3", env->adcTask0.ADC0_Data.Sensor_Front_Duct3);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct4", env->adcTask0.ADC0_Data.Sensor_Front_Duct4);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct3", env->adcTask0.ADC0_Data.Sensor_Rear_Duct3);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct4", env->adcTask0.ADC0_Data.Sensor_Rear_Duct4);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Incar_Temp_FR", env->adcTask0.ADC0_Data.Sensor_Incar_Temp_FR);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Incar_Temp_RR", env->adcTask0.ADC0_Data.Sensor_Incar_Temp_RR);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct5", env->adcTask0.ADC0_Data.Sensor_Rear_Duct5);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct6", env->adcTask0.ADC0_Data.Sensor_Rear_Duct6);
|
||||||
|
ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_1", env->adcTask0.ADC0_Data.Reserve_Sensor_Duct_Temp_1);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct5", env->adcTask0.ADC0_Data.Sensor_Front_Duct5);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct6", env->adcTask0.ADC0_Data.Sensor_Front_Duct6);
|
||||||
|
ANALOG_SENSOR(env, "Pressure_DIAG", env->adcTask0.ADC0_Data.Pressure_DIAG);
|
||||||
|
ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_2", env->adcTask0.ADC0_Data.Reserve_Sensor_Duct_Temp_2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
osMutexRelease(env->adcTask0.access);
|
osMutexRelease(env->adcTask0.access);
|
||||||
|
|
||||||
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "Temp1 = %d; Temp2 = %d;", temp1, (int16_t)(temp2 * 10.0f))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (osMutexAcquire(env->adcTask1.access, 1000) == osOK) {
|
if (osMutexAcquire(env->adcTask1.access, 1000) == osOK) {
|
||||||
|
|
||||||
if (env->adcTask1.ADC_isUpdate) {
|
if (env->adcTask1.ADC_isUpdate) {
|
||||||
env->adcTask1.ADC_isUpdate = false;
|
env->adcTask1.ADC_isUpdate = false;
|
||||||
|
|
||||||
|
// R1 = 91000 R2 = 16000 ((5 * (91000 + 16000)) / 16000 = 33.4375 В)
|
||||||
|
float U_PBATT_CHECK = ((float) env->adcTask1.ADC1_Data.PBATT_CHECK * 33.4375f) / 4095.0f;
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "U_PBATT_CHECK = %f", U_PBATT_CHECK)
|
||||||
|
|
||||||
|
// R1 = 30000 R2 = 12000 ((5 * (30000 + 12000)) / 12000 = 17.5 В)
|
||||||
|
float U_VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB =
|
||||||
|
((float) env->adcTask0.ADC0_Data.VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB * 17.5f) / 4095.0f;
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "U_VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB = %f",
|
||||||
|
U_VN7008AJ_DIAG_FrontLINActuatorPowerDriverAB)
|
||||||
|
|
||||||
|
// R1 = 30000 R2 = 12000 ((5 * (30000 + 12000)) / 12000 = 17.5 В)
|
||||||
|
float U_VN7008AJ_DIAG_RearLINActuatorPowerDriverC =
|
||||||
|
((float) env->adcTask0.ADC0_Data.VN7008AJ_DIAG_RearLINActuatorPowerDriverC * 17.5f) / 4095.0f;
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_TASK_ARB, "U_VN7008AJ_DIAG_RearLINActuatorPowerDriverC = %f",
|
||||||
|
U_VN7008AJ_DIAG_RearLINActuatorPowerDriverC)
|
||||||
|
|
||||||
|
VN7008AJ(env, "VN7008AJ_FrontLINActuatorPowerDriverAB", env->adcTask1.ADC1_Data.VN7008AJ_FrontLINActuatorPowerDriverAB);
|
||||||
|
VN7008AJ(env, "VN7008AJ_RearLINActuatorPowerDriverC", env->adcTask1.ADC1_Data.VN7008AJ_RearLINActuatorPowerDriverC);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//temp2 = get_temperature_fast(env->adcTask1.ADC_Data[0], fast_lookup_KST45, 512);
|
//temp2 = get_temperature_fast(env->adcTask1.ADC_Data[0], fast_lookup_KST45, 512);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue