Изменены интерфейсы UDS (добавлено управление актуаторами)

This commit is contained in:
cfif 2026-07-31 10:11:04 +03:00
parent 85bdc2361d
commit b1f7addbe6
1 changed files with 52 additions and 6 deletions

View File

@ -1828,6 +1828,19 @@ static uint16_t RequestTransferExit_37(tCanUds *env) {
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
static uint16_t getActProc(uint16_t maxPos, uint16_t pos) {
uint16_t proc;
if (maxPos > 0) {
proc = (pos * 1000) / maxPos;
} else {
proc = 0;
}
return proc;
}
// Тут данные должны быть с модели &env->Status_Sensor_For_Model_input и т.д.
void CanUdsInput_Set_Model(tCanUds *env) {
osStatus_t status = osOK;
@ -1839,6 +1852,36 @@ void CanUdsInput_Set_Model(tCanUds *env) {
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Actuator_DoorsActuator);
if (countQueue_space) {
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Def = getActProc(rtY.Status_Actuator_model_IO.Motor_Def, Actuator_Ch0_Status_Model.in_CPOS_ALL[0]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_REC = getActProc(rtY.Status_Actuator_model_IO.Motor_REC, Actuator_Ch0_Status_Model.in_CPOS_ALL[1]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_OSA = getActProc(rtY.Status_Actuator_model_IO.Motor_OSA, Actuator_Ch0_Status_Model.in_CPOS_ALL[2]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp1_FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp1_FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[3]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CFL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CFL, Actuator_Ch0_Status_Model.in_CPOS_ALL[4]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SFL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SFL, Actuator_Ch0_Status_Model.in_CPOS_ALL[5]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp2_FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp2_FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[6]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_1FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_1FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[7]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_2FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_2FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[8]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp1_FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp1_FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[0]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CFR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CFR, Actuator_Ch1_Status_Model.in_CPOS_ALL[1]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SFR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SFR, Actuator_Ch1_Status_Model.in_CPOS_ALL[2]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp2_FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp2_FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[3]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_1FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_1FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[4]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_2FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_2FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[5]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp_RR = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp_RR, Actuator_Ch2_Status_Model.in_CPOS_ALL[0]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp_RL = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp_RL, Actuator_Ch2_Status_Model.in_CPOS_ALL[1]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SRL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SRL, Actuator_Ch2_Status_Model.in_CPOS_ALL[2]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_RL = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_RL, Actuator_Ch2_Status_Model.in_CPOS_ALL[3]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CRL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CRL, Actuator_Ch2_Status_Model.in_CPOS_ALL[4]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CRR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CRR, Actuator_Ch2_Status_Model.in_CPOS_ALL[5]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_RR = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_RR, Actuator_Ch2_Status_Model.in_CPOS_ALL[6]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SRR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SRR, Actuator_Ch2_Status_Model.in_CPOS_ALL[7]);
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_SealingValve = getActProc(rtY.Status_Actuator_model_IO.Motor_SealingValve, Actuator_Ch2_Status_Model.in_CPOS_ALL[8]);
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator,
&model_Status_Actuator_DoorsActuator_For_Model_input, 0, 0);
}
@ -1936,7 +1979,7 @@ static void CanUdsInput_Get_Model(tCanUds *env) {
if (countQueue_space == 0) {
status = osMessageQueueGet(env->queue_input_get_Status_Actuator_DoorsActuator,
&env->Status_Sensor_For_Model_input,
&env->Status_Actuator_DoorsActuator_For_Model_input,
0, 0);
if (status == osOK) {
@ -2175,8 +2218,8 @@ static void CanUdsOutput_Set_Model(tCanUds *env) {
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Set);
if (countQueue_space) {
status = osMessageQueuePut(env->queue_output_set_Status_Set, &env->Status_Set_For_Model_output, 0,
0);
status = osMessageQueuePut(env->queue_output_set_Status_Set, &env->Status_Set_For_Model_output, 0,
0);
}
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Actuator_DoorsActuator);
@ -2258,7 +2301,8 @@ void CanUdsOutput_Get_Model(tCanUds *env) {
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Duct_Tgt);
if (countQueue_space == 0) {
status = osMessageQueueGet(env->queue_output_set_Status_Duct_Tgt, &model_Status_Duct_Tgt_For_Model_output, 0, 0);
status = osMessageQueueGet(env->queue_output_set_Status_Duct_Tgt, &model_Status_Duct_Tgt_For_Model_output, 0,
0);
}
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Eva_Tgt);
@ -2284,7 +2328,8 @@ void CanUdsOutput_Get_Model(tCanUds *env) {
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_External);
if (countQueue_space == 0) {
status = osMessageQueueGet(env->queue_output_set_Status_External, &model_Status_External_For_Model_output, 0, 0);
status = osMessageQueueGet(env->queue_output_set_Status_External, &model_Status_External_For_Model_output, 0,
0);
}
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_EMS);
@ -2716,7 +2761,8 @@ void CanUds_Init(
env->queue_output_set_Status_Set = osMessageQueueNew(1, sizeof(tStatus_Set_For_Model), NULL);
env->queue_output_set_Status_Actuator_DoorsActuator = osMessageQueueNew(1, sizeof(tStatus_Actuator_For_Model),NULL);
env->queue_output_set_Status_Actuator_DoorsActuator = osMessageQueueNew(1, sizeof(tStatus_Actuator_For_Model),
NULL);
env->queue_output_set_Status_Duct_Tgt = osMessageQueueNew(1, sizeof(tStatus_Duct_Tgt_For_Model), NULL);
env->queue_output_set_Status_Eva_Tgt = osMessageQueueNew(1, sizeof(tStatus_Eva_Tgt_For_Model), NULL);
env->queue_output_set_Status_IO = osMessageQueueNew(1, sizeof(tStatus_IO_For_Model), NULL);