Исправления в LIN4 и LIN5 (изменения в интерфейсе)
This commit is contained in:
parent
02ca2275d5
commit
d8378179f1
139
LinSensorTasks.c
139
LinSensorTasks.c
|
|
@ -162,6 +162,9 @@ void Lin4_Output_Set_Model(tLin4TaskSensor *env) {
|
|||
env->eTXV_eeChiller_Stat_For_Model.eTXV_eeChiller_Pressure_Val = p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val;
|
||||
env->eTXV_eeChiller_Stat_For_Model.eTXV_eeChiller_Temp_Val = p_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val;
|
||||
|
||||
memcpy(env->sensorLin4CmdBusInput.in_error_connect, env->error_connect, LIN4_SENSOR_COUNT);
|
||||
env->sensorLin4CmdBusInput.Error_Connect = env->error_all_connect;
|
||||
|
||||
osStatus_t status = osOK;
|
||||
|
||||
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_input_tAirQS);
|
||||
|
|
@ -199,6 +202,10 @@ void Lin4_Output_Set_Model(tLin4TaskSensor *env) {
|
|||
status = osMessageQueuePut(env->queue_input_teTXV_eeChiller, &env->eTXV_eeChiller_Stat_For_Model, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_Lin4_Stat);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_Lin4_Stat, &env->sensorLin4CmdBusInput, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -210,6 +217,12 @@ void Lin4_Output_Get_From_Model(tLin4TaskSensor *env) {
|
|||
if (countQueue_space == 0) {
|
||||
status = osMessageQueueGet(env->queue_input_tAirQS, &rtDW.LIN4_AirQS_Stat_Model, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_Lin4_Stat);
|
||||
if (countQueue_space == 0) {
|
||||
// status = osMessageQueueGet(env->queue_input_Lin4_Stat, &env->sensorLin4CmdBusInput, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Это формирование входа с модели на задачу Lin4
|
||||
|
|
@ -265,6 +278,9 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
|
||||
ret = Get_Sensor4_Stat(env->linIo, env->linData, &env->Stat[i], LIN4_SENSON_LEN_Stat[i],
|
||||
LIN4_SENSON_ADR_Stat[i]);
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
env->error_connect[i] = 0;
|
||||
#if (LOG_LIN4_SENSOR == 1)
|
||||
switch (i) {
|
||||
|
||||
|
|
@ -272,7 +288,6 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
tAirQS_Stat *pAirQS_Stat = (tAirQS_Stat *) &env->Stat[i];
|
||||
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4,
|
||||
"AirQS_LinRespErr_Stat = %d AirQS_Sens_Stat = %d AirQS_Combined_Stat = %d AirQS_Err_Stat = %d AirQS_COLvl_Stat = %d AirQS_NOxLvl_Stat = %d AirQS_NH3Lvl_Stat = %d",
|
||||
pAirQS_Stat->AirQS_LinRespErr_Stat,
|
||||
|
|
@ -282,16 +297,14 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
pAirQS_Stat->AirQS_COLvl_Stat,
|
||||
pAirQS_Stat->AirQS_NOxLvl_Stat,
|
||||
pAirQS_Stat->AirQS_NH3Lvl_Stat)
|
||||
} else {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAirQS_Stat) = %d", ret)
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
case eeAroma_Stat: {
|
||||
tAroma_Stat *pAroma_Stat = (tAroma_Stat *) &env->Stat[i];
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4,
|
||||
"Aroma_LinRespErr_Stat = %d Aroma_CartridgeSw_Stat = %d Aroma_Err_Stat = %d Aroma_Intens_Stat = %d Aroma_CartridgeFlavor_Stat = %d Aroma_CartridgeCapacity_Stat = %d",
|
||||
pAroma_Stat->Aroma_LinRespErr_Stat,
|
||||
|
|
@ -300,9 +313,6 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
pAroma_Stat->Aroma_Intens_Stat,
|
||||
pAroma_Stat->Aroma_CartridgeFlavor_Stat,
|
||||
pAroma_Stat->Aroma_CartridgeCapacity_Stat)
|
||||
} else {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAroma_Stat) = %d", ret)
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -310,22 +320,20 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
case eeIonizer_Stat: {
|
||||
tIonizer_Stat *pIonizer_Stat = (tIonizer_Stat *) &env->Stat[i];
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4,
|
||||
"Ionizer_LinRespErr_Stat = %d Ionizer_Err_Stat = %d Ionizer_Ionization_Stat = %d",
|
||||
pIonizer_Stat->Ionizer_LinRespErr_Stat,
|
||||
pIonizer_Stat->Ionizer_Err_Stat,
|
||||
pIonizer_Stat->Ionizer_Ionization_Stat)
|
||||
} else {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pIonizer_Stat) = %d", ret)
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
case eeTXV_fHVAC_Stat: {
|
||||
teTXV_fHVAC_Stat *p_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *) &env->Stat[i];
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4,
|
||||
"eTXV_fHVAC_Pos_Stat = %d eTXV_fHVAC_LinRespErr_Stat = %d eTXV_fHVAC_Err_Stat = %d eTXV_fHVAC_Pressure_Val = %d eTXV_fHVAC_Temp_Val = %d",
|
||||
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pos_Stat,
|
||||
|
|
@ -333,9 +341,7 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Err_Stat,
|
||||
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pressure_Val,
|
||||
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Temp_Val)
|
||||
} else {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_fHVAC_Stat) = %d", ret)
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -343,7 +349,7 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
case eeTXV_rHVAC_Stat: {
|
||||
teTXV_rHVAC_Stat *p_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *) &env->Stat[i];
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4,
|
||||
"eTXV_rHVAC_Pos_Stat = %d eTXV_rHVAC_LinRespErr_Stat = %d eTXV_rHVAC_Err_Stat = %d eTXV_fHVAC_Pressure_Val = %d eTXV_rHVAC_Temp_Val = %d",
|
||||
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Pos_Stat,
|
||||
|
|
@ -351,9 +357,7 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Err_Stat,
|
||||
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Pressure_Val,
|
||||
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Temp_Val)
|
||||
} else {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_rHVAC_Stat) = %d", ret)
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -361,7 +365,7 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
case eeTXV_batChiller_Stat: {
|
||||
teTXV_batChiller_Stat *p_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *) &env->Stat[i];
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4,
|
||||
"eTXV_batChiller_Pos_Stat = %d eTXV_batChiller_LinRespErr_Stat = %d eTXV_batChiller_Err_Stat = %d eTXV_batChiller_Pressure_Val = %d eTXV_batChiller_Temp_Val = %d",
|
||||
p_teTXV_batChiller_Stat->eTXV_batChiller_Pos_Stat,
|
||||
|
|
@ -369,9 +373,7 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
p_teTXV_batChiller_Stat->eTXV_batChiller_Err_Stat,
|
||||
p_teTXV_batChiller_Stat->eTXV_batChiller_Pressure_Val,
|
||||
p_teTXV_batChiller_Stat->eTXV_batChiller_Temp_Val)
|
||||
} else {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_batChiller_Stat) = %d", ret)
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -379,7 +381,6 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
case eeTXV_eeChiller_Stat: {
|
||||
teTXV_eeChiller_Stat *p_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *) &env->Stat[i];
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4,
|
||||
"eTXV_eeChiller_Stat_ = %d eTXV_eeChiller_LinRespErr_Stat = %d eTXV_eeChiller_Err_Stat = %d eTXV_eeChiller_Pressure_Val = %d eTXV_eeChiller_Temp_Val = %d",
|
||||
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pos_Stat,
|
||||
|
|
@ -387,14 +388,73 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
|
|||
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Err_Stat,
|
||||
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val,
|
||||
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val)
|
||||
} else {
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_eeChiller_Stat) = %d", ret)
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
env->error_connect[i] = 1;
|
||||
|
||||
#if (LOG_LIN4_SENSOR == 1)
|
||||
switch (i) {
|
||||
|
||||
case eeAirQS_Stat: {
|
||||
tAirQS_Stat *pAirQS_Stat = (tAirQS_Stat *) &env->Stat[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAirQS_Stat) = %d", ret)
|
||||
|
||||
break;
|
||||
}
|
||||
case eeAroma_Stat: {
|
||||
tAroma_Stat *pAroma_Stat = (tAroma_Stat *) &env->Stat[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAroma_Stat) = %d", ret)
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case eeIonizer_Stat: {
|
||||
tIonizer_Stat *pIonizer_Stat = (tIonizer_Stat *) &env->Stat[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pIonizer_Stat) = %d", ret)
|
||||
|
||||
break;
|
||||
}
|
||||
case eeTXV_fHVAC_Stat: {
|
||||
teTXV_fHVAC_Stat *p_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *) &env->Stat[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_fHVAC_Stat) = %d", ret)
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case eeTXV_rHVAC_Stat: {
|
||||
teTXV_rHVAC_Stat *p_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *) &env->Stat[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_rHVAC_Stat) = %d", ret)
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case eeTXV_batChiller_Stat: {
|
||||
teTXV_batChiller_Stat *p_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *) &env->Stat[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_batChiller_Stat) = %d", ret)
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case eeTXV_eeChiller_Stat: {
|
||||
teTXV_eeChiller_Stat *p_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *) &env->Stat[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_eeChiller_Stat) = %d", ret)
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -420,6 +480,8 @@ void Lin_4_Init(tLin4TaskSensor *env,
|
|||
env->queue_input_teTXV_rHVAC = osMessageQueueNew(1, sizeof(LIN4_eTXV_rHVAC_Stat_Bus), NULL);
|
||||
env->queue_input_teTXV_batChiller = osMessageQueueNew(1, sizeof(LIN4_eTXV_batChiller_Stat_Bus), NULL);
|
||||
env->queue_input_teTXV_eeChiller = osMessageQueueNew(1, sizeof(LIN4_eTXV_eeChiller_Stat_Bus), NULL);
|
||||
env->queue_input_Lin4_Stat = osMessageQueueNew(1, sizeof(SensorLin4CmdBusInput), NULL);
|
||||
|
||||
|
||||
InitThreadAtrStatic(&env->threadLin.attr, "Ln4", env->threadLin.controlBlock, env->threadLin.stack,
|
||||
osPriorityNormal);
|
||||
|
|
@ -432,7 +494,22 @@ static _Noreturn void Lin4_Thread(tLin4TaskSensor *env) {
|
|||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
|
||||
Lin4_Input_Set_Model(env);
|
||||
|
||||
lin_event_id_t res = Lin4_Scheduler(env);
|
||||
|
||||
uint8_t isError = 0;
|
||||
for (uint8_t i = 0; i < LIN4_SENSOR_COUNT; ++i) {
|
||||
if (env->error_connect[i] == 1)
|
||||
++isError;
|
||||
}
|
||||
|
||||
if (isError == LIN4_SENSOR_COUNT) {
|
||||
env->error_all_connect = 1;
|
||||
} else {
|
||||
env->error_all_connect = 0;
|
||||
}
|
||||
|
||||
|
||||
Lin4_Output_Set_Model(env);
|
||||
|
||||
osMutexRelease(env->access);
|
||||
|
|
@ -717,6 +794,12 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
|
|||
|
||||
osStatus_t status = osOK;
|
||||
if (countQueue_led_count) {
|
||||
memcpy(env->sensorButtonCmdBusInput.in_COUNT, env->linStateSensor.LED_COUNT, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.in_error_connect, env->linStateSensor.error_connect, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.LinRespErr_Stat, env->linStateSensor.LinRespErr_Stat, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.Err_Stat, env->linStateSensor.Err_Stat, LIN5_SENSOR_COUNT);
|
||||
env->sensorButtonCmdBusInput.Error_Connect = env->error_connect;
|
||||
|
||||
status = osMessageQueuePut(env->queue_led_count, env->linStateSensor.LED_COUNT, 0, 0U);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
#include "HVAC_model.h"
|
||||
|
||||
#define LOG_LIN4_SENSOR 0
|
||||
#define LOG_LIN5_SENSOR 0
|
||||
#define LOG_LIN5_SENSOR 1
|
||||
|
||||
|
||||
#define LIN4_SENSOR_COUNT 7
|
||||
|
|
@ -291,6 +291,10 @@ typedef struct __attribute__ ((packed)) {
|
|||
uint8_t DRS_RRB_Err_Stat: 1; // 2
|
||||
} tDRS_RRB_Stat;
|
||||
|
||||
typedef struct {
|
||||
uint8_t in_error_connect[LIN4_SENSOR_COUNT]; // Конкретное устройство не ответило
|
||||
uint8_t Error_Connect; // Ошибка LIN шины (ни одно устройство не отвечает)
|
||||
} SensorLin4CmdBusInput;
|
||||
|
||||
typedef struct {
|
||||
|
||||
|
|
@ -321,6 +325,9 @@ typedef struct {
|
|||
//teTXV_eeChiller_Stat_For_Model eTXV_eeChiller_Stat_For_Model;
|
||||
LIN4_eTXV_eeChiller_Stat_Bus eTXV_eeChiller_Stat_For_Model;
|
||||
|
||||
SensorLin4CmdBusInput sensorLin4CmdBusInput;
|
||||
|
||||
|
||||
osMessageQueueId_t queue_input_tCCU;
|
||||
|
||||
osMessageQueueId_t queue_input_tAirQS;
|
||||
|
|
@ -330,7 +337,10 @@ typedef struct {
|
|||
osMessageQueueId_t queue_input_teTXV_rHVAC;
|
||||
osMessageQueueId_t queue_input_teTXV_batChiller;
|
||||
osMessageQueueId_t queue_input_teTXV_eeChiller;
|
||||
osMessageQueueId_t queue_input_Lin4_Stat;
|
||||
|
||||
uint8_t error_connect[LIN4_SENSOR_COUNT];
|
||||
uint8_t error_all_connect;
|
||||
|
||||
struct {
|
||||
osThreadId_t id;
|
||||
|
|
@ -342,15 +352,15 @@ typedef struct {
|
|||
|
||||
} tLin4TaskSensor;
|
||||
|
||||
/*
|
||||
|
||||
typedef struct {
|
||||
uint8_t in_COUNT[8]; // Уровень (0,1,2,3)
|
||||
uint8_t in_error_connect[8]; // Конкретное устройство не ответило
|
||||
uint8_t LinRespErr_Stat[8]; // Внутренняя ошибка устройства (ошибка коммутации)
|
||||
uint8_t Err_Stat[8]; // Внутренняя ошибка устройства
|
||||
uint8_t Error_Connect; // Ошибка LIN шины (не одно устройство не отвечает)
|
||||
} SensorButtonCmdBusInput;
|
||||
*/
|
||||
uint8_t in_COUNT[LIN5_SENSOR_COUNT]; // Уровень (0,1,2,3)
|
||||
uint8_t in_error_connect[LIN5_SENSOR_COUNT]; // Конкретное устройство не ответило
|
||||
uint8_t LinRespErr_Stat[LIN5_SENSOR_COUNT]; // Внутренняя ошибка устройства (ошибка коммутации)
|
||||
uint8_t Err_Stat[LIN5_SENSOR_COUNT]; // Внутренняя ошибка устройства
|
||||
uint8_t Error_Connect; // Ошибка LIN шины (ни одно устройство не отвечает)
|
||||
} SensorLin5ButtonCmdBusInput;
|
||||
|
||||
typedef struct {
|
||||
|
||||
tLinIO *linIo;
|
||||
|
|
@ -360,12 +370,15 @@ typedef struct {
|
|||
|
||||
tLoggerInterface *logger;
|
||||
|
||||
SensorLin5ButtonCmdBusInput sensorButtonCmdBusInput;
|
||||
|
||||
osMessageQueueId_t queue_led_count;
|
||||
|
||||
struct {
|
||||
tDRS_Stat d_DRS_Stat[LIN5_SENSOR_COUNT];
|
||||
tDRS_Stat d_old_DRS_Stat[LIN5_SENSOR_COUNT];
|
||||
uint8_t LED_COUNT[LIN5_SENSOR_COUNT];
|
||||
|
||||
uint8_t LED_OLD_COUNT[LIN5_SENSOR_COUNT];
|
||||
uint8_t error_connect[LIN5_SENSOR_COUNT];
|
||||
uint8_t error_old_connect[LIN5_SENSOR_COUNT];
|
||||
|
|
|
|||
Loading…
Reference in New Issue