Advertisement
Guest User

FanControl

a guest
Oct 16th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.19 KB | None | 0 0
  1. #ifndef COMPONENTTEST
  2. typedef unsigned char boolean;
  3. typedef unsigned char uint8;
  4. typedef unsigned short uint16;
  5. typedef unsigned int uint32;
  6. typedef float float32;
  7. typedef struct
  8. {
  9.  uint32 errorCode;
  10.  float32 temperature;
  11. } dtErrorMessage;
  12. typedef enum
  13. {
  14.  FAN_OFF,
  15.  FAN_ON
  16. } dtFanState;
  17. #define ERROR_CODE_OVER_TEMP ((uint32)1u)
  18. #define ERROR_CODE_UNDER_TEMP ((uint32)2u)
  19. extern float32 GetTemperature(void);
  20. extern void SetState(dtFanState fanState);
  21. extern void SendErrorReport(dtErrorMessage* errorMsg);/*{      Mivel a függvényekhez az én értelmezésemben nem nyúlhattam ezért azokat késznek vettem amit felhasználhatok!
  22.     if(errorMsg->temperature>160.0 )
  23.         errorMsg->errorCode=ERROR_CODE_OVER_TEMP;               Ez csak egy elméleti segítség saját magamnak
  24.     if(errorMsg->temperature<-20.0)
  25.         errorMsg->errorCode=ERROR_CODE_UNDER_TEMP;
  26. }*/
  27. #endif /* !COMPONENTTEST */
  28. /* Please add your own additions here! */
  29. void FanControl(void)                          
  30. {
  31.     dtErrorMessage Error;                       /*létrehoztam a hiba üzenethez szükséges változót ugyanis úgy gondoltam hogy nem csak a rendszer indításánál
  32.                                                 jöhet olyan érték ami Errort okoz hanem a rendszer működése közben is pl kiüt egy tűz a rendszerben*/
  33.     float32 tmp;
  34.     tmp=GetTemperature();
  35.     if(tmp<160.0 && tmp>-20.0)                  /*Amennyiben a megfelelő határok között van a hőmérséklet, elindul a vezérlő ciklus*/
  36.         {
  37.         while(tmp<160.0 && tmp>-20.0)           /*Amíg a határértékek között mozgunk a rendszer működik*/
  38.         {
  39.  
  40.             while(tmp>23.0)                     /*2 fok hiszterézis figyelembe vétele*/
  41.             {
  42.             if(tmp>=25.0)
  43.                 SetState(FAN_ON);
  44.             tmp=GetTemperature();
  45.             }
  46.         SetState(FAN_OFF);
  47.         tmp=GetTemperature();                   /*tmp nek ujra a lekérdezett hőm. lesz az értéke,
  48.                                                 és az volt a gyanúm ha else if-et használok a továbbiakban akkor az csak az első lekérdezett tmp-t fogja vizsgálni*/
  49.         }  
  50.     }
  51.     if(tmp>160.0)                                   /* A hiba küldéshez különösebb magyarázatot nem fűznék */
  52.     {
  53.         Error.temperature=tmp;
  54.         Error.errorCode=ERROR_CODE_OVER_TEMP;
  55.         SendErrorReport(&Error);
  56.     }
  57.     if(tmp<-20.0)
  58.     {
  59.         Error.temperature=tmp;
  60.         Error.errorCode=ERROR_CODE_UNDER_TEMP;
  61.         SendErrorReport(&Error);
  62.     }
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement