123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- #include "relay_task.h"
- #include "All_define.h"
- void Speed_Hk_Ck_deal(void)
- {
- static speed_type_t last = {0};
- if (dis_page_param.face_plate_param.Speed_Relay == 1)
- {
- if (struct_realy.speed_type.fs1 == 0 &&
- struct_realy.speed_type.fs2 == 0 &&
- struct_realy.speed_type.fs3 == 0)
- {
- memcpy(&struct_realy.speed_type, &last, sizeof(speed_type_t));
- }
- }
- memcpy(&last, &struct_realy.speed_type, sizeof(speed_type_t));
- }
- static void Air_condition_Relay_set(uint8_t *ck, uint8_t *hk, uint8_t *mutual, speed_type_t *speed_type, uint8_t control_type, uint8_t cmd)
- {
- if (control_type == 0)
- return;
- uint8_t Compare_value = 0;
- static uint16_t Last_Mode = 0;
- if (Last_Mode != dis_page_param.face_plate_param.Air_condition_mode)
- {
- *ck = 0;
- *hk = 0;
- if (mutual != NULL)
- {
- *mutual = 0;
- }
- speed_type->fs1 = 0;
- speed_type->fs2 = 0;
- speed_type->fs3 = 0;
- }
- Last_Mode = dis_page_param.face_plate_param.Air_condition_mode;
- Compare_value = SetTemp_RealTemp_Compare(dis_page_param.face_plate_param.Air_set_temp * 10);
- if (dis_page_param.face_plate_param.Air_condition_mode == 0x00)
- {
- if (control_type == 0x02)
- {
- if ((cmd & 0x02) != 0)
- {
- Compare_value = 1;
- }
- else
- {
- Compare_value = 4;
- }
- }
- if (Compare_value >= 1 && Compare_value <= 3)
- {
- *ck = 1;
- if (mutual != NULL)
- {
- *mutual = 0;
- }
- }
- else if (Compare_value >= 4 && Compare_value <= 6)
- {
- *ck = 0;
- if (mutual != NULL)
- {
- *mutual = 1;
- }
- }
- if (*ck == 1 || dis_page_param.face_plate_param.Speed_Relay == 1)
- {
- Wind_Speed_relay_Set(dis_page_param.face_plate_param.Air_wind_speed, speed_type, Compare_value);
- }
- else if (*ck == 0)
- {
- speed_type->fs1 = 0;
- speed_type->fs1 = 0;
- speed_type->fs1 = 0;
- }
- }
- else if (dis_page_param.face_plate_param.Air_condition_mode == 0x01)
- {
- if (control_type == 0x02)
- {
- if ((cmd & 0x20) != 0)
- {
- Compare_value = 4;
- }
- else
- {
- Compare_value = 1;
- }
- }
- if (Compare_value >= 4 && Compare_value <= 6)
- {
- *hk = 1;
- if (mutual != NULL)
- {
- *mutual = 0;
- }
- }
- else if (Compare_value >= 1 && Compare_value <= 3)
- {
- *hk = 0;
- if (mutual != NULL)
- {
- *mutual = 1;
- }
- }
- if (*hk == 1)
- {
- Wind_Speed_relay_Set(dis_page_param.face_plate_param.Air_wind_speed, speed_type, Compare_value);
- }
- else if (*hk == 0)
- {
- speed_type->fs1 = 0;
- speed_type->fs1 = 0;
- speed_type->fs1 = 0;
- }
- }
- else if (dis_page_param.face_plate_param.Air_condition_mode == 0x02)
- {
- if (control_type == 0x02)
- {
- if ((cmd & 0x20) != 0)
- {
- Compare_value = 1;
- }
- else
- {
- Compare_value = 4;
- }
- }
- Compare_value = SetTemp_RealTemp_Compare(23 * 10);
- if (Compare_value >= 1 && Compare_value <= 3)
- {
- *ck = 1;
- if (mutual != NULL)
- {
- *mutual = 0;
- }
- }
- else if (Compare_value >= 4 && Compare_value <= 6)
- {
- *ck = 0;
- if (mutual != NULL)
- {
- *mutual = 1;
- }
- }
- if (*ck == 1)
- {
- Wind_Speed_relay_Set(dis_page_param.face_plate_param.Air_wind_speed, speed_type, Compare_value);
- }
- else if (*ck == 0)
- {
- speed_type->fs1 = 0;
- speed_type->fs1 = 0;
- speed_type->fs1 = 0;
- }
- }
- else if (dis_page_param.face_plate_param.Air_condition_mode == 0x03)
- {
- Wind_Speed_relay_Set(dis_page_param.face_plate_param.Air_wind_speed, speed_type, Compare_value);
- }
- }
- static void Floor_heart_Relay_set(uint8_t *hk, uint8_t *mutual, uint8_t control_type, uint8_t cmd)
- {
- uint16_t Pro_value = dis_page_param.face_plate_param.Floor_Heating_Protecton_value * 10;
- uint16_t Set_Temp = dis_page_param.face_plate_param.Floor_heating_set_temp * 10;
- uint16_t Real_Temp = dis_page_param.face_plate_param.Real_time_Temp;
- if (control_type == 0x02)
- {
- if (cmd == 0x22)
- {
- Set_Temp = Real_Temp + Pro_value + 1;
- }
- else if (cmd == 0x11)
- {
- Real_Temp = Set_Temp + Pro_value + 1;
- }
- }
- if (Set_Temp > (Real_Temp + Pro_value))
- {
- *hk = 1;
- if (mutual != NULL)
- {
- *mutual = 0;
- }
- }
- else if (Set_Temp + Pro_value < Real_Temp)
- {
- *hk = 0;
- if (mutual != NULL)
- {
- *mutual = 1;
- }
- }
- }
- static void Fresh_air_Relay_set(speed_type_t *speed_type)
- {
- Wind_Speed_relay_Set(dis_page_param.face_plate_param.Fresh_air_speed, speed_type, 0);
- }
- static void LTemp_Protection_relay_set(uint8_t *relay, uint8_t *mutual, uint16_t Temp)
- {
- static uint16_t Last_Temp = 0;
- if (Last_Temp != Temp)
- {
- *relay = 0;
- if (mutual != NULL)
- {
- *mutual = 1;
- }
- }
- Last_Temp = Temp;
- if (Temp == 0x0f)
- return;
- uint8_t Compare_value = 0;
- Compare_value = SetTemp_RealTemp_Compare(Temp * 10);
- if (Compare_value >= 4 && Compare_value <= 6)
- {
- *relay = 1;
- if (mutual != NULL)
- {
- *mutual = 0;
- }
- }
- else if (Compare_value >= 1 && Compare_value <= 3)
- {
- *relay = 0;
- if (mutual != NULL)
- {
- *mutual = 1;
- }
- }
- }
- #define IWDG_OPEN 1
- void relay_task(void *pvParameters)
- {
- #if IWDG_OPEN
- fwdgt_write_enable();
- fwdgt_prescaler_value_config(FWDGT_PSC_DIV32);
- fwdgt_reload_value_config(4000);
- fwdgt_counter_reload();
- fwdgt_enable();
- /* IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
- IWDG_SetPrescaler(IWDG_Prescaler_32);
- IWDG_SetReload(4000);
- IWDG_ReloadCounter();
- IWDG_Enable();*/
- uint32_t IWDG_CNT = 0;
- #endif
- uint16_t Set_Temp_floor = 0, Set_Temp_fresh = 0;
- uint16_t Real_Temp_relay = 0;
- uint16_t compare_temp = 0;
- uint16_t auto_speed = 0;
- uint8_t last_Air_relay_mode = 0, last_Heart_relay_mode = 0, last_Fresh_relay_mode = 0;
- uint8_t Air_relay_control = 0, Heart_relay_control = 0;
- uint8_t Air_relay_mode = 0, Heart_relay_mode = 0, Fresh_relay_mode = 0;
- uint8_t Relay_cmd = 0;
- memset(&struct_realy, 0, sizeof(struct_realy_t));
- while (1)
- {
- compare_temp = 0;
- auto_speed = 0;
- Set_Temp_floor = dis_page_param.face_plate_param.Floor_heating_set_temp * 10;
- Set_Temp_fresh = dis_page_param.face_plate_param.Fresh_set_temp * 10;
- Real_Temp_relay = dis_page_param.face_plate_param.Real_time_Temp;
- if (dis_page_param.face_plate_param.Fresh_air_switch == 1)
- {
- if (fuji_or_shuiji == 1)
- {
- switch (dis_page_param.face_plate_param.Fresh_condition_mode)
- {
- case 0:
- {
- if (Set_Temp_fresh < Real_Temp_relay)
- {
- compare_temp = Real_Temp_relay - Set_Temp_fresh;
- struct_realy.relay_ck = 1;
- }
- else
- struct_realy.relay_ck = 0;
- break;
- }
- case 1:
- {
- if (Real_Temp_relay < Set_Temp_fresh)
- {
- compare_temp = Set_Temp_fresh - Real_Temp_relay;
- struct_realy.relay_hk = 1;
- }
- else
- struct_realy.relay_hk = 0;
- break;
- }
- default:
- break;
- }
- if (compare_temp < 3)
- auto_speed = 1;
- else if (compare_temp < 5)
- auto_speed = 2;
- else
- auto_speed = 3;
- switch (auto_speed)
- {
- case 1:
- {
- struct_realy.speed_type.fs1 = 1;
- struct_realy.speed_type.fs2 = 0;
- struct_realy.speed_type.fs3 = 0;
- break;
- }
- case 2:
- {
- struct_realy.speed_type.fs1 = 1;
- struct_realy.speed_type.fs2 = 1;
- struct_realy.speed_type.fs3 = 0;
- break;
- }
- case 3:
- {
- struct_realy.speed_type.fs1 = 1;
- struct_realy.speed_type.fs2 = 1;
- struct_realy.speed_type.fs3 = 1;
- break;
- }
- default:
- break;
- }
- }
- else
- {
- struct_realy.relay_ck = 0;
- struct_realy.relay_hk = 0;
- switch (dis_page_param.face_plate_param.Fresh_air_speed)
- {
- case 1:
- {
- struct_realy.speed_type.fs1 = 1;
- struct_realy.speed_type.fs2 = 0;
- struct_realy.speed_type.fs3 = 0;
- break;
- }
- case 2:
- {
- struct_realy.speed_type.fs1 = 1;
- struct_realy.speed_type.fs2 = 1;
- struct_realy.speed_type.fs3 = 0;
- break;
- }
- case 3:
- {
- struct_realy.speed_type.fs1 = 1;
- struct_realy.speed_type.fs2 = 1;
- struct_realy.speed_type.fs3 = 1;
- break;
- }
- default:
- break;
- }
- }
- }
- else
- {
- struct_realy.relay_ck = 0;
- struct_realy.relay_hk = 0;
- struct_realy.speed_type.fs1 = 0;
- struct_realy.speed_type.fs2 = 0;
- struct_realy.speed_type.fs3 = 0;
- }
- if (dis_page_param.face_plate_param.Floor_heating_switch == 1)
- {
- if (Real_Temp_relay < Set_Temp_floor)
- struct_realy.relay_dk = 1;
- else
- struct_realy.relay_dk = 0;
- }
- else
- {
- struct_realy.relay_dk = 0;
- }
- Relay_loop_set(struct_realy);
- #if IWDG_OPEN
- IWDG_CNT++;
- if (IWDG_CNT >= 200)
- {
- fwdgt_counter_reload();
- IWDG_CNT = 0;
- }
- #endif
- vTaskDelay(10);
- }
- }
|