This commit is contained in:
cfif 2026-07-10 18:11:28 +03:00
parent 704da9e3b9
commit ac4d6104e1
2 changed files with 254 additions and 33 deletions

View File

@ -11,6 +11,8 @@
#include <stdlib.h>
#include "dig_pot.h"
uint64_t StatLIN4[LIN4_SENSOR_COUNT];
tDRS_Stat StatLIN5[LIN5_SENSOR_COUNT];
//начало ------------------------------Отправка без подтверждения-------------------------------------------------------
//начало ------------------------------Отправка без подтверждения-------------------------------------------------------
@ -289,8 +291,7 @@ setResistanceInit(tTaskSerial *env, char *name, int16_t temperature, const Table
* @param vdd Напряжение питания датчика (В)
* @return float Сопротивление R1 (Ом), или 0.0f если делитель не нужен
*/
float calculate_r1_for_pressure_atm(float p_atm, float r2, float vref, float vdd)
{
float calculate_r1_for_pressure_atm(float p_atm, float r2, float vref, float vdd) {
// Переводим давление в кгс/см²
float p_kgf = p_atm * ATM_TO_KGF_CM2;
@ -316,7 +317,7 @@ setPressure(tTaskSerial *env, char *name,
char *start = env->At.rxBuffer.data + strlen(name);
int16_t pressure = atoi(start);
uint32_t r1 = (uint32_t)calculate_r1_for_pressure_atm((float)pressure / 10, 51000.0f, 4.96f, 5.0f);
uint32_t r1 = (uint32_t) calculate_r1_for_pressure_atm((float) pressure / 10, 51000.0f, 4.96f, 5.0f);
uint8_t step100;
uint8_t step10;
@ -336,7 +337,7 @@ setPressureInit(tTaskSerial *env, char *name, int16_t pressure,
tSensorType sensorType,
tSensorAdr sensorAdr1, tSensorAdr sensorAdr2) {
uint32_t r1 = (uint32_t)calculate_r1_for_pressure_atm((float)pressure / 10, 51000.0f, 4.96f, 5.0f);
uint32_t r1 = (uint32_t) calculate_r1_for_pressure_atm((float) pressure / 10, 51000.0f, 4.96f, 5.0f);
uint8_t step100;
uint8_t step10;
@ -534,7 +535,6 @@ void SerialCommand_Scheduler(tTaskSerial *env) {
}
if (AtCmdRxBeginWithStatic(&env->At, "Incar_FL")) {
setResistance(env, "Incar_FL", incar_lookup_table_20000, size_incar_lookup_table_20000,
SENSOR_TYPE_D,
@ -570,6 +570,211 @@ void SerialCommand_Scheduler(tTaskSerial *env) {
SENSOR_ADR_9, SENSOR_ADR_10);
}
//----------------------------------------------tAirQS_Stat-----------------------------------------------------
//----------------------------------------------tAirQS_Stat-----------------------------------------------------
//----------------------------------------------tAirQS_Stat-----------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "AirQS_LinRespErr_Stat")) {
env->c_AirQS_Stat->AirQS_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_LinRespErr_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "AirQS_Sens_Stat")) {
env->c_AirQS_Stat->AirQS_Sens_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_Sens_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "AirQS_Combined_Stat")) {
env->c_AirQS_Stat->AirQS_Combined_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_Combined_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "AirQS_Err_Stat")) {
env->c_AirQS_Stat->AirQS_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_Err_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "AirQS_COLvl_Stat")) {
env->c_AirQS_Stat->AirQS_COLvl_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_COLvl_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "AirQS_NOxLvl_Stat")) {
env->c_AirQS_Stat->AirQS_NOxLvl_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_NOxLvl_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "AirQS_NH3Lvl_Stat")) {
env->c_AirQS_Stat->AirQS_NH3Lvl_Stat = atoi(env->At.rxBuffer.data + sizeof("AirQS_NH3Lvl_Stat") - 1);
}
//----------------------------------------------tAroma_Stat-----------------------------------------------------
//----------------------------------------------tAroma_Stat-----------------------------------------------------
//----------------------------------------------tAroma_Stat-----------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "Aroma_LinRespErr_Stat")) {
env->c_Aroma_Stat->Aroma_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_LinRespErr_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "Aroma_CartridgeSw_Stat")) {
env->c_Aroma_Stat->Aroma_CartridgeSw_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_CartridgeSw_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "Aroma_Err_Stat")) {
env->c_Aroma_Stat->Aroma_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_Err_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "Aroma_Intens_Stat")) {
env->c_Aroma_Stat->Aroma_Intens_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_Intens_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "Aroma_CartridgeFlavor_Stat")) {
env->c_Aroma_Stat->Aroma_CartridgeFlavor_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_CartridgeFlavor_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "Aroma_CartridgeCapacity_Stat")) {
env->c_Aroma_Stat->Aroma_CartridgeCapacity_Stat = atoi(env->At.rxBuffer.data + sizeof("Aroma_CartridgeCapacity_Stat") - 1);
}
//----------------------------------------------tIonizer_Stat-----------------------------------------------------
//----------------------------------------------tIonizer_Stat-----------------------------------------------------
//----------------------------------------------tIonizer_Stat-----------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "Ionizer_LinRespErr_Stat")) {
env->c_Ionizer_Stat->Ionizer_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("Ionizer_LinRespErr_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "Ionizer_Err_Stat")) {
env->c_Ionizer_Stat->Ionizer_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("Ionizer_Err_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "Ionizer_Ionization_Stat")) {
env->c_Ionizer_Stat->Ionizer_Ionization_Stat = atoi(env->At.rxBuffer.data + sizeof("Ionizer_Ionization_Stat") - 1);
}
//----------------------------------------------teTXV_fHVAC_Stat-----------------------------------------------------
//----------------------------------------------teTXV_fHVAC_Stat-----------------------------------------------------
//----------------------------------------------teTXV_fHVAC_Stat-----------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Pos_Stat")) {
env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Pos_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_LinRespErr_Stat")) {
env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_LinRespErr_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Err_Stat")) {
env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Err_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Pressure_Val")) {
env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Pressure_Val") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_fHVAC_Temp_Val")) {
env->c_teTXV_fHVAC_Stat->eTXV_fHVAC_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_fHVAC_Temp_Val") - 1) + 40;
}
//----------------------------------------------teTXV_rHVAC_Stat-----------------------------------------------------
//----------------------------------------------teTXV_rHVAC_Stat-----------------------------------------------------
//----------------------------------------------teTXV_rHVAC_Stat-----------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Pos_Stat")) {
env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Pos_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_LinRespErr_Stat")) {
env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_LinRespErr_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Err_Stat")) {
env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Err_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Pressure_Val")) {
env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Pressure_Val") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_rHVAC_Temp_Val")) {
env->c_teTXV_rHVAC_Stat->eTXV_rHVAC_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_rHVAC_Temp_Val") - 1) + 40;
}
//----------------------------------------------teTXV_batChiller_Stat-----------------------------------------------------
//----------------------------------------------teTXV_batChiller_Stat-----------------------------------------------------
//----------------------------------------------teTXV_batChiller_Stat-----------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Pos_Stat")) {
env->c_teTXV_batChiller_Stat->eTXV_batChiller_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Pos_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_LinRespErr_Stat")) {
env->c_teTXV_batChiller_Stat->eTXV_batChiller_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_LinRespErr_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Err_Stat")) {
env->c_teTXV_batChiller_Stat->eTXV_batChiller_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Err_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Pressure_Val")) {
env->c_teTXV_batChiller_Stat->eTXV_batChiller_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Pressure_Val") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_batChiller_Temp_Val")) {
env->c_teTXV_batChiller_Stat->eTXV_batChiller_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_batChiller_Temp_Val") - 1) + 40;
}
//----------------------------------------------teTXV_eeChiller_Stat-----------------------------------------------------
//----------------------------------------------teTXV_eeChiller_Stat-----------------------------------------------------
//----------------------------------------------teTXV_eeChiller_Stat-----------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Pos_Stat")) {
env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Pos_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Pos_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_LinRespErr_Stat")) {
env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_LinRespErr_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_LinRespErr_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Err_Stat")) {
env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Err_Stat = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Err_Stat") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Pressure_Val")) {
env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Pressure_Val") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "eTXV_eeChiller_Temp_Val")) {
env->c_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val = atoi(env->At.rxBuffer.data + sizeof("eTXV_eeChiller_Temp_Val") - 1) + 40;
}
//---------------------------------------------------LIN5-------------------------------------------------------
//---------------------------------------------------LIN5-------------------------------------------------------
//---------------------------------------------------LIN5-------------------------------------------------------
if (AtCmdRxBeginWithStatic(&env->At, "DRS_DL_Btn")) {
env->c_DRS_Stat[0]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_DL_Btn") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "DRS_DR_Btn")) {
env->c_DRS_Stat[1]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_DR_Btn") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "DRS_FPL_Btn")) {
env->c_DRS_Stat[2]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FPL_Btn") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "DRS_FPR_Btn")) {
env->c_DRS_Stat[3]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FPR_Btn") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "DRS_RLB_Btn")) {
env->c_DRS_Stat[4]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_RLB_Btn") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "DRS_RRB_Btn")) {
env->c_DRS_Stat[5]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_RRB_Btn") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "DRS_FCL_Btn")) {
env->c_DRS_Stat[6]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FCL_Btn") - 1);
}
if (AtCmdRxBeginWithStatic(&env->At, "DRS_FCR_Btn")) {
env->c_DRS_Stat[7]->DRS_Btn_Stat = atoi(env->At.rxBuffer.data + sizeof("DRS_FCR_Btn") - 1);
}
}
@ -612,6 +817,19 @@ void TaskSerialUSB1_Init(tTaskSerial *env,
2000, 2000
);
env->c_AirQS_Stat = (tAirQS_Stat *)&StatLIN4[0];
env->c_Aroma_Stat = (tAroma_Stat *)&StatLIN4[1];
env->c_Ionizer_Stat = (tIonizer_Stat *)&StatLIN4[2];
env->c_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *)&StatLIN4[3];
env->c_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *)&StatLIN4[4];
env->c_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *)&StatLIN4[5];
env->c_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *)&StatLIN4[6];
for (uint8_t i=0; i<LIN5_SENSOR_COUNT; ++i) {
env->c_DRS_Stat[i] = &StatLIN5[i];
}
InitThreadAtrStatic(&env->thread.attr, "SerialUSB1", env->thread.controlBlock, env->thread.stack, osPriorityNormal);
}

View File

@ -10,12 +10,14 @@
#include "AtCmdCommon.h"
#include "CanSerialPortFrame.h"
#include "SensorSPI.h"
#include "Lin_4_5_SensorTasks.h"
typedef enum {
FROM_USB1,
FROM_USB2
} tFrom_usb;
typedef struct {
tSerialPortFrameIO *ioCAN;
@ -79,11 +81,20 @@ typedef struct {
osThreadAttr_t attr;
} thread;
tAirQS_Stat *c_AirQS_Stat;
tAroma_Stat *c_Aroma_Stat;
tIonizer_Stat *c_Ionizer_Stat;
teTXV_fHVAC_Stat *c_teTXV_fHVAC_Stat;
teTXV_rHVAC_Stat *c_teTXV_rHVAC_Stat;
teTXV_batChiller_Stat *c_teTXV_batChiller_Stat;
teTXV_eeChiller_Stat *c_teTXV_eeChiller_Stat;
tDRS_Stat *c_DRS_Stat[LIN5_SENSOR_COUNT];
} tTaskSerial;
typedef struct {
tSerialPortFrameIO *ioCAN;
tSerialPortIO *ioUSB;
@ -152,10 +163,6 @@ void TaskSerialToCanSpontany_Init(tTaskSerialToCanSpontany *env,
void TaskSerialToCanSpontany_StartThread(tTaskSerialToCanSpontany *env);
void Task_RECEIVED_SerialUSB1_Init(tTaskReceivedSerial *env,
tSerialPortFrameIO *ioCAN,
tFrom_usb from_usb1,
@ -164,7 +171,6 @@ void Task_RECEIVED_SerialUSB1_Init(tTaskReceivedSerial *env,
void Task_RECEIVED_SerialUSB1_StartThread(tTaskReceivedSerial *env);
void Task_RECEIVED_SerialUSB2_Init(tTaskReceivedSerial *env,
tSerialPortFrameIO *ioCAN,
tFrom_usb from_usb2,
@ -173,7 +179,4 @@ void Task_RECEIVED_SerialUSB2_Init(tTaskReceivedSerial *env,
void Task_RECEIVED_SerialUSB2_StartThread(tTaskReceivedSerial *env);
#endif //HVAC_DEV_ARBITERCOMMAND_H