Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.68 KB | None | 0 0
  1. void model()
  2. {
  3.     //Uchyby (aktualny i poprzedni)
  4.     uchyb_poprzedni = UchybWartosc;
  5.     UchybWartosc = TempZadanaWartosc - temp_pokoju_wyjscie_2iner;
  6.  
  7.     // Sterowanie
  8.     // Ca³kowanie
  9.     czesc_calkujaca += (1 / Ti) * UchybWartosc;
  10.  
  11.     //Ro¿niczkowanie
  12.     if (LicznikTd >= 10)
  13.     {
  14.         LicznikTd = 500; //wylaczyc licznik juz
  15.         czesc_rozniczkujaca = (UchybWartosc - uchyb_poprzedni) * Td;
  16.     }
  17.  
  18.     //Sygna³ steruj¹cy
  19.     if (SygnalSterujacyWartosc < 100 && SygnalSterujacyWartosc > -100)
  20.         SygnalSterujacyWartosc = Kp
  21.                 * (UchybWartosc + czesc_calkujaca + czesc_rozniczkujaca);
  22.     else if (SygnalSterujacyWartosc >= 100)
  23.         SygnalSterujacyWartosc = 100;
  24.     else if (SygnalSterujacyWartosc <= -100)
  25.         SygnalSterujacyWartosc = -100;
  26.  
  27.     //Obiekt klimazytatora
  28.     ////0.607=T=2 // 0.90483=T=10 // 0.936=T=15 // 0.97183=T=35 // 0.9753=T=50
  29.     //wyjscie_z_obiektu_1 = wyjscie_z_obiektu_1 * 0.936 + 2 * (1 - 0.936) * SygnalSterujacyWartosc; //aktualnie dane T=15; 0.607 = T=2
  30.     wyjscie_z_obiektu_1 = wyjscie_z_obiektu_1 * 0.936 + 2 * (1 - 0.936) * TempZadanaWartosc;
  31.     //Zaklocenie
  32.     //zaklocenie = ((TempNaDworzeWartosc - temp_pokoju_wyjscie_2iner)) * OtwarcieOknaWartosc;
  33.     zaklocenie = TempNaDworzeWartosc * OtwarcieOknaWartosc;
  34.  
  35.     //Pomiedzy pierwsza a druga inercja wchodzi zaklocenie
  36.     wejscie_do_drugiego_obiektu = wyjscie_z_obiektu_1 + zaklocenie;
  37.  
  38.     //Obiekt pokoju
  39.     temp_pokoju_wyjscie_2iner = temp_pokoju_wyjscie_2iner * 0.9753
  40.             + (1 - 0.9753) * wejscie_do_drugiego_obiektu; //aktualnie (chyba) dane T=50; 0.936 = T=15
  41. }
  42.  
  43.  
  44.  while (1)
  45.         {
  46.  
  47.  
  48.  
  49.             EnableRefresh = 1;
  50.             LCD.Synchronize();
  51.             EnableRefresh = 0;
  52.  
  53.             Key = KEYBOARD.GetKey();
  54.  
  55.             if(LicznikModel >= 100)
  56.             {
  57.                 model();
  58.                 //for (int i = 498; i > -1; i--)
  59.                 UchybKolejka[499] = UchybWartosc;
  60.                 ZaklocenieKolejka[499] = zaklocenie;
  61.                 SygnalSterujacyKolejka[499] = SygnalSterujacyWartoscRounded;
  62.                 TempZadanaKolejka[499] = TempZadanaWartosc;
  63.                 temp_pokoju_wyjscie_2iner_Kolejka[499] = temp_pokoju_wyjscie_2iner;
  64.                 for (int i = 0; i < 499; i++)
  65.                                 {
  66.                                     UchybKolejka[i] = UchybKolejka[i + 1];
  67.                                     ZaklocenieKolejka[i] = ZaklocenieKolejka[i + 1];
  68.                                     SygnalSterujacyKolejka[i] = SygnalSterujacyKolejka[i + 1];
  69.                                     TempZadanaKolejka[i] = TempZadanaKolejka[i + 1];
  70.                                     temp_pokoju_wyjscie_2iner_Kolejka[i] =
  71.                                             temp_pokoju_wyjscie_2iner_Kolejka[i + 1];
  72.                                 }
  73.  
  74.                                 /*UchybKolejka[499] = UchybWartosc;
  75.                                 ZaklocenieKolejka[499] = zaklocenie;
  76.                                 SygnalSterujacyKolejka[499] = SygnalSterujacyWartoscRounded;
  77.                                 TempZadanaKolejka[499] = TempZadanaWartosc;
  78.                                 temp_pokoju_wyjscie_2iner_Kolejka[499] = temp_pokoju_wyjscie_2iner;*/
  79.                 LicznikModel = 0;
  80.             }
  81.  
  82.  
  83.  
  84. void Timer2Isr()
  85.     {
  86.  
  87. #ifdef BUFFERSYNC
  88.         if (EnableRefresh)
  89.         LCD.PartialRefresh();
  90. #else
  91.         LCD.PartialRefresh();
  92. #endif
  93.  
  94.         KEYBOARD.PartialRefresh();
  95.  
  96.         if (++preScale == 167)
  97.         {
  98.             preScale = 0;
  99.             Tim++;
  100.  
  101.             if (LicznikModel < 100)
  102.             {
  103.                 LicznikModel++;
  104.             }
  105.         }  
  106.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement