Обновление 23.06.2026

This commit is contained in:
Дарья Бараева 2026-06-23 11:21:41 +03:00
parent 96549f5810
commit 36241582ae
2 changed files with 185 additions and 75 deletions

View File

@ -14,14 +14,30 @@
#define LOG_SIGN5 "Ln5" #define LOG_SIGN5 "Ln5"
#define LOGGER env->logger #define LOGGER env->logger
const uint8_t DRS_SENSON_ADR_Stat[LIN5_SENSOR_COUNT] = {DRS_DL_Stat, const uint8_t LIN5_SENSON_ADR_Stat[LIN5_SENSOR_COUNT] = {DRS_DL_Stat,
DRS_DR_Stat, DRS_DR_Stat,
DRS_FPL_Stat, DRS_FPL_Stat,
DRS_FPR_Stat, DRS_FPR_Stat,
DRS_RLB_Stat, DRS_RLB_Stat,
DRS_RRB_Stat, DRS_RRB_Stat,
DRS_FCL_Stat, DRS_FCL_Stat,
DRS_FCR_Stat}; DRS_FCR_Stat};
const uint8_t LIN4_SENSON_ADR_Stat[LIN4_SENSOR_COUNT] = {AirQS_Stat,
Aroma_Stat,
Ionizer_Stat,
eTXV_fHVAC_Stat,
eTXV_rHVAC_Stat,
eTXV_batChiller_Stat,
eTXV_eeChiller_Stat};
const uint8_t LIN4_SENSON_LEN_Stat[LIN4_SENSOR_COUNT] = {sizeof(tAirQS_Stat),
sizeof(tAroma_Stat),
sizeof(tIonizer_Stat),
sizeof(teTXV_fHVAC_Stat),
sizeof(teTXV_rHVAC_Stat),
sizeof(teTXV_batChiller_Stat),
sizeof(teTXV_eeChiller_Stat)};
static lin_event_id_t SEND_SENSOR_COM_x(tLinIO *linIo, uint8_t COM_ADR) { static lin_event_id_t SEND_SENSOR_COM_x(tLinIO *linIo, uint8_t COM_ADR) {
lin_event_id_t res = linIo->runCommand(linIo->env, COM_ADR, 30); lin_event_id_t res = linIo->runCommand(linIo->env, COM_ADR, 30);
@ -55,10 +71,12 @@ static lin_event_id_t Set_CCU_Req(tLinIO *linIo, tLinData *linData, tCCU_Req *p_
return res; return res;
} }
static lin_event_id_t Get_AirQS_Stat(tLinIO *linIo, tLinData *linData, tAirQS_Stat *p_AirQS_Stat) {
static lin_event_id_t
Get_Sensor4_Stat(tLinIO *linIo, tLinData *linData, void *p_Stat, uint8_t p_Stat_Len, uint8_t ADR_stat) {
lin_event_id_t res; lin_event_id_t res;
tAirQS_Stat *tAirQS_Stat_ = (tAirQS_Stat *) linData->g_aRxBuffer; void *pStat_ = (void *) linData->g_aRxBuffer;
uint8_t retry = 1; uint8_t retry = 1;
@ -67,12 +85,12 @@ static lin_event_id_t Get_AirQS_Stat(tLinIO *linIo, tLinData *linData, tAirQS_St
linData->direction = LIN_DIRECTION_GET; linData->direction = LIN_DIRECTION_GET;
linData->g_aTxBufferLen = 0; linData->g_aTxBufferLen = 0;
linData->g_aRxBufferLen = sizeof(tAirQS_Stat); linData->g_aRxBufferLen = p_Stat_Len;
res = SEND_SENSOR_COM_x(linIo, AirQS_Stat); res = SEND_SENSOR_COM_x(linIo, ADR_stat);
if (res == LIN_RX_COMPLETED) { if (res == LIN_RX_COMPLETED) {
memcpy(p_AirQS_Stat, tAirQS_Stat_, sizeof(tAirQS_Stat)); memcpy(p_Stat, pStat_, p_Stat_Len);
break; break;
} }
@ -83,7 +101,6 @@ static lin_event_id_t Get_AirQS_Stat(tLinIO *linIo, tLinData *linData, tAirQS_St
} }
//начало----------------------------------------- LIN 4 ---------------------------------------------------------------- //начало----------------------------------------- LIN 4 ----------------------------------------------------------------
//начало----------------------------------------- LIN 4 ---------------------------------------------------------------- //начало----------------------------------------- LIN 4 ----------------------------------------------------------------
//начало----------------------------------------- LIN 4 ---------------------------------------------------------------- //начало----------------------------------------- LIN 4 ----------------------------------------------------------------
@ -95,7 +112,7 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
env->d_CCU_Req.CCU_AirQS_Req = 1; env->d_CCU_Req.CCU_AirQS_Req = 1;
ret = Set_CCU_Req(env->linIo, env->linData, &env->d_CCU_Req); ret = Set_CCU_Req(env->linIo, env->linData, &env->d_CCU_Req);
#if (LOG_LIN4_ACTUATOR == 1) #if (LOG_LIN4_SENSOR == 1)
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "OK Set_CCU_Req = %d", ret) LoggerFormatInfo(LOGGER, LOG_SIGN4, "OK Set_CCU_Req = %d", ret)
} else { } else {
@ -103,27 +120,107 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
} }
#endif #endif
for (uint8_t i = 0; i < LIN4_SENSOR_COUNT; ++i) {
ret = Get_AirQS_Stat(env->linIo, env->linData, &env->d_AirQS_Stat); ret = Get_Sensor4_Stat(env->linIo, env->linData, &env->Stat[i], LIN4_SENSON_LEN_Stat[i],
LIN4_SENSON_ADR_Stat[i]);
#if (LOG_LIN4_ACTUATOR == 1) switch (i) {
if (ret == LIN_RX_COMPLETED) { case eeAirQS_Stat: {
LoggerFormatInfo(LOGGER, LOG_SIGN4, tAirQS_Stat *pAirQS_Stat = (tAirQS_Stat *) &env->Stat[i];
"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",
env->d_AirQS_Stat.AirQS_LinRespErr_Stat, #if (LOG_LIN4_SENSOR == 1)
env->d_AirQS_Stat.AirQS_Sens_Stat,
env->d_AirQS_Stat.AirQS_Combined_Stat, if (ret == LIN_RX_COMPLETED) {
env->d_AirQS_Stat.AirQS_Err_Stat, LoggerFormatInfo(LOGGER, LOG_SIGN4,
env->d_AirQS_Stat.AirQS_COLvl_Stat, "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",
env->d_AirQS_Stat.AirQS_NOxLvl_Stat, pAirQS_Stat->AirQS_LinRespErr_Stat,
env->d_AirQS_Stat.AirQS_NH3Lvl_Stat) pAirQS_Stat->AirQS_Sens_Stat,
} else { pAirQS_Stat->AirQS_Combined_Stat,
LoggerFormatInfo(LOGGER, LOG_SIGN4, "ERROR Get_AirQS_Stat = %d", ret) pAirQS_Stat->AirQS_Err_Stat,
} pAirQS_Stat->AirQS_COLvl_Stat,
pAirQS_Stat->AirQS_NOxLvl_Stat,
pAirQS_Stat->AirQS_NH3Lvl_Stat)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR = %d", ret)
}
#endif #endif
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,
pAroma_Stat->Aroma_CartridgeSw_Stat,
pAroma_Stat->Aroma_Err_Stat,
pAroma_Stat->Aroma_Intens_Stat,
pAroma_Stat->Aroma_CartridgeFlavor_Stat,
pAroma_Stat->Aroma_CartridgeCapacity_Stat)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR = %d", ret)
}
break;
}
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 = %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,
p_teTXV_fHVAC_Stat->eTXV_fHVAC_LinRespErr_Stat,
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 = %d", ret)
}
break;
}
case eeTXV_rHVAC_Stat: {
teTXV_rHVAC_Stat *p_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *) &env->Stat[i];
break;
}
case eeTXV_batChiller_Stat: {
teTXV_batChiller_Stat *p_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *) &env->Stat[i];
break;
}
case eeTXV_eeChiller_Stat: {
teTXV_eeChiller_Stat *p_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *) &env->Stat[i];
break;
}
}
}
return LIN_NO_EVENT; return LIN_NO_EVENT;
} }
@ -367,55 +464,55 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
// if (env->linStateSensor.error_connect[i] == 0) { // if (env->linStateSensor.error_connect[i] == 0) {
ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], DRS_SENSON_ADR_Stat[i]); ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], LIN5_SENSON_ADR_Stat[i]);
uint8_t current_btn_state = env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat; uint8_t current_btn_state = env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat;
if ((current_btn_state) && (!env->linStateSensor.prev_btn_state[i])) { if ((current_btn_state) && (!env->linStateSensor.prev_btn_state[i])) {
if (env->linStateSensor.LED_COUNT[i] == 0) { if (env->linStateSensor.LED_COUNT[i] == 0) {
env->linStateSensor.LED_COUNT[i] = 3; env->linStateSensor.LED_COUNT[i] = 3;
} else {
--env->linStateSensor.LED_COUNT[i];
}
}
env->linStateSensor.prev_btn_state[i] = current_btn_state;
env->linStateSensor.LinRespErr_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat;
env->linStateSensor.Err_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat;
if (ret == LIN_RX_COMPLETED) {
env->linStateSensor.error_connect[i] = 0;
#if (LOG_LIN5_SENSOR == 1)
if ((*((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]) !=
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i])) ||
(env->linStateSensor.LED_COUNT[i] != env->linStateSensor.LED_OLD_COUNT[i])) {
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i]) = *((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]);
env->linStateSensor.LED_OLD_COUNT[i] = env->linStateSensor.LED_COUNT[i];
LoggerFormatInfo(LOGGER, LOG_SIGN5,
"Sensor number %d: COUNT = %d DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d",
i,
env->linStateSensor.LED_COUNT[i],
env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat,
env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat,
env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat
)
}
#endif
} else { } else {
env->linStateSensor.error_connect[i] = 1; --env->linStateSensor.LED_COUNT[i];
#if (LOG_LIN5_SENSOR == 1)
if (env->linStateSensor.error_connect[i] != env->linStateSensor.error_old_connect[i]) {
env->linStateSensor.error_old_connect[i] = env->linStateSensor.error_connect[i];
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret)
}
#endif
} }
}
env->linStateSensor.prev_btn_state[i] = current_btn_state;
env->linStateSensor.LinRespErr_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat;
env->linStateSensor.Err_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat;
if (ret == LIN_RX_COMPLETED) {
env->linStateSensor.error_connect[i] = 0;
#if (LOG_LIN5_SENSOR == 1)
if ((*((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]) !=
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i])) ||
(env->linStateSensor.LED_COUNT[i] != env->linStateSensor.LED_OLD_COUNT[i])) {
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i]) = *((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]);
env->linStateSensor.LED_OLD_COUNT[i] = env->linStateSensor.LED_COUNT[i];
LoggerFormatInfo(LOGGER, LOG_SIGN5,
"Sensor number %d: COUNT = %d DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d",
i,
env->linStateSensor.LED_COUNT[i],
env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat,
env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat,
env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat
)
}
#endif
} else {
env->linStateSensor.error_connect[i] = 1;
#if (LOG_LIN5_SENSOR == 1)
if (env->linStateSensor.error_connect[i] != env->linStateSensor.error_old_connect[i]) {
env->linStateSensor.error_old_connect[i] = env->linStateSensor.error_connect[i];
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret)
}
#endif
}
// } // }
} }

View File

@ -13,7 +13,18 @@
#define LOG_LIN4_SENSOR 1 #define LOG_LIN4_SENSOR 1
#define LOG_LIN5_SENSOR 0 #define LOG_LIN5_SENSOR 0
#define LIN5_SENSOR_COUNT 8
#define LIN4_SENSOR_COUNT 7
typedef enum {
eeAirQS_Stat = 0,
eeAroma_Stat = 1,
eeIonizer_Stat = 2,
eeTXV_fHVAC_Stat = 3,
eeTXV_rHVAC_Stat = 4,
eeTXV_batChiller_Stat = 5,
eeTXV_eeChiller_Stat = 6
} eSensorStat4;
#define AirQS_Stat 0x14 #define AirQS_Stat 0x14
#define Aroma_Stat 0x5 #define Aroma_Stat 0x5
@ -24,6 +35,8 @@
#define eTXV_batChiller_Stat 0x22 #define eTXV_batChiller_Stat 0x22
#define eTXV_eeChiller_Stat 0x24 #define eTXV_eeChiller_Stat 0x24
#define LIN5_SENSOR_COUNT 8
#define CCU_DRS_Req 0x1 #define CCU_DRS_Req 0x1
#define DRS_DL_Stat 0xD #define DRS_DL_Stat 0xD
#define DRS_DR_Stat 0x12 #define DRS_DR_Stat 0x12
@ -220,7 +233,7 @@ typedef struct {
tLoggerInterface *logger; tLoggerInterface *logger;
tCCU_Req d_CCU_Req; tCCU_Req d_CCU_Req;
tAirQS_Stat d_AirQS_Stat; uint8_t Stat[LIN4_SENSOR_COUNT];
struct { struct {
osThreadId_t id; osThreadId_t id;