添加瞬时风速风向,极大极小风速(协议还未添加)

This commit is contained in:
95384 2024-11-26 10:51:52 +08:00
parent eb69ce74d0
commit 51e5b07b49
3 changed files with 38 additions and 17 deletions

View File

@ -109,17 +109,21 @@ typedef struct __weather_param
extern Weather_param weather_info; extern Weather_param weather_info;
typedef struct _mcs_para{ typedef struct _mcs_para{
float32_t min_wind_direction; /* 最小风向 */ float32_t min_wind_direction; /* 最小风向 */
float32_t average_wind_direction;/* 平均风向 */ float32_t average_wind_direction; /* 平均风向 */
float32_t max_wind_direction; /* 最大风向 */ float32_t instantaneous_wind_direction; /* 瞬时风向 */
float32_t min_wind_speed; /* 最小风速 */ float32_t max_wind_direction; /* 最大风向 */
float32_t average_wind_speed; /* 平均风速 */ float32_t min_wind_speed; /* 最小风速 */
float32_t max_wind_speed; /* 最大风速 */ float32_t trough_wind_speed; /* 极小风速 */
float32_t temperature; /* 环境温度 */ float32_t average_wind_speed; /* 平均风速 */
float32_t humidity; /* 环境湿度 */ float32_t instantaneous_wind_speed; /* 瞬时风速 */
float32_t pressure; /* 压强 */ float32_t peak_wind_speed; /* 极大风速 */
float32_t precipitation; /* 雨量 */ float32_t max_wind_speed; /* 最大风速 */
float32_t precipitation_intensity;/* 光辐射 */ float32_t temperature; /* 环境温度 */
float32_t humidity; /* 环境湿度 */
float32_t pressure; /* 压强 */
float32_t precipitation; /* 雨量 */
float32_t precipitation_intensity; /* 光辐射 */
}mcs_para; }mcs_para;
extern mcs_para g_stMcs_Para; extern mcs_para g_stMcs_Para;

View File

@ -549,6 +549,9 @@ void wind_task(void const * argument)
} }
/// term_printf("x:%.2f y:%.2f win_speed %.2f m/s angle %.2f \r\n",av_speedx,av_speedy,av_speed,av_angle); /// term_printf("x:%.2f y:%.2f win_speed %.2f m/s angle %.2f \r\n",av_speedx,av_speedy,av_speed,av_angle);
} }
//瞬时风速风向
g_stMcs_Para.instantaneous_wind_direction = av_angle;
g_stMcs_Para.instantaneous_wind_speed = av_speed;
///term_printf("win_speed %.2f \r\n",weather_info.wind_velocity); ///term_printf("win_speed %.2f \r\n",weather_info.wind_velocity);
//HAL_Delay(1); //HAL_Delay(1);
//osDelay(3// //osDelay(3//
@ -834,22 +837,32 @@ void my_update_mcs_param(float new_wind_speed, float new_wind_dirction)
float temp_max_direction = win_10min.ave_direction_data[0]; float temp_max_direction = win_10min.ave_direction_data[0];
float temp_min_speed = win_10min.ave_speed_data[0]; float temp_min_speed = win_10min.ave_speed_data[0];
float temp_max_speed = win_10min.ave_speed_data[0]; float temp_max_speed = win_10min.ave_speed_data[0];
//遍历10min内所有数据寻找最大最小 float temp_trough_min_speed = win_10min.ave_speed_data[0];
float temp_peak_max_speed = win_10min.ave_speed_data[0];
//遍历10min内所有数据寻找最大最小极大极小
for (int i = 0; i < win_10min.count; i++) { for (int i = 0; i < win_10min.count; i++) {
// 最大最小
if (win_10min.ave_direction_data[i] < temp_min_direction) { if (win_10min.ave_direction_data[i] < temp_min_direction) {
temp_min_direction = win_10min.ave_direction_data[i]; // 更新风向最小值 temp_min_direction = win_10min.ave_direction_data[i]; // 更新风向最小值
} }
if (win_10min.ave_direction_data[i] > temp_max_direction) { else if (win_10min.ave_direction_data[i] > temp_max_direction) {
temp_max_direction = win_10min.ave_direction_data[i]; // 更新风向最大值 temp_max_direction = win_10min.ave_direction_data[i]; // 更新风向最大值
} }
if (win_10min.ave_speed_data[i] < temp_min_speed) { if (win_10min.ave_speed_data[i] < temp_min_speed) {
temp_min_speed = win_10min.ave_speed_data[i]; // 更新风速最小值 temp_min_speed = win_10min.ave_speed_data[i]; // 更新风速最小值
} }
if (win_10min.ave_speed_data[i] > temp_max_speed) { else if (win_10min.ave_speed_data[i] > temp_max_speed) {
temp_max_speed = win_10min.ave_speed_data[i]; // 更新风速最大值 temp_max_speed = win_10min.ave_speed_data[i]; // 更新风速最大值
} }
// 极大极小
if (win_10min.speed_data[i] < temp_trough_min_speed) {
temp_trough_min_speed = win_10min.speed_data[i]; // 更新风速极小值
}
else if (win_10min.speed_data[i] > temp_peak_max_speed) {
temp_peak_max_speed = win_10min.speed_data[i]; // 更新风速极大值
}
} }
// 更新最大最小极大极小风速风向
g_stMcs_Para.min_wind_direction = temp_min_direction; g_stMcs_Para.min_wind_direction = temp_min_direction;
g_stMcs_Para.average_wind_direction = win_10min.ave_direction_data[win_10min.index]; g_stMcs_Para.average_wind_direction = win_10min.ave_direction_data[win_10min.index];
g_stMcs_Para.max_wind_direction = temp_max_direction; g_stMcs_Para.max_wind_direction = temp_max_direction;
@ -858,6 +871,10 @@ void my_update_mcs_param(float new_wind_speed, float new_wind_dirction)
g_stMcs_Para.average_wind_speed = win_10min.ave_speed_data[win_10min.index]; g_stMcs_Para.average_wind_speed = win_10min.ave_speed_data[win_10min.index];
g_stMcs_Para.max_wind_speed = temp_max_speed; g_stMcs_Para.max_wind_speed = temp_max_speed;
// 极大极小风速
g_stMcs_Para.trough_wind_speed = temp_trough_min_speed;
g_stMcs_Para.peak_wind_speed = temp_peak_max_speed;
win_10min.index = (win_10min.index + 1) % /*AVE_TIME*/g_stConfigInfo.speed_average_time; //更新索引 win_10min.index = (win_10min.index + 1) % /*AVE_TIME*/g_stConfigInfo.speed_average_time; //更新索引
} }
@ -909,7 +926,7 @@ void tem_hum_update_task(void const * argument)
NVIC_SystemReset(); NVIC_SystemReset();
} }
// 风速风向更新 // 风速风向更新
my_update_mcs_param(av_speed, av_angle); my_update_mcs_param(g_stMcs_Para.instantaneous_wind_speed, g_stMcs_Para.instantaneous_wind_direction);
} }
} }

View File

@ -125,7 +125,7 @@ void MX_FREERTOS_Init(void) {
osThreadDef(anemometer, wind_task, osPriorityHigh, 0, 256);// ˇçË١çĎň osThreadDef(anemometer, wind_task, osPriorityHigh, 0, 256);// ˇçË١çĎň
anemometerHandle = osThreadCreate(osThread(anemometer), NULL); anemometerHandle = osThreadCreate(osThread(anemometer), NULL);
osThreadDef(temhum_update_task, tem_hum_update_task, osPriorityAboveNormal, 0, 128);//温湿度,大气压更新 osThreadDef(temhum_update_task, tem_hum_update_task, osPriorityAboveNormal, 0, 256);//温湿度,大气压更新
temhum_update_taskHandle = osThreadCreate(osThread(temhum_update_task), NULL); temhum_update_taskHandle = osThreadCreate(osThread(temhum_update_task), NULL);
// osThreadDef(sensorTask, SensorTask, osPriorityRealtime, 0, 128); // osThreadDef(sensorTask, SensorTask, osPriorityRealtime, 0, 128);