添加瞬时风速风向,极大极小风速(协议还未添加)
This commit is contained in:
parent
eb69ce74d0
commit
51e5b07b49
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue