Advertisement
Guest User

asd

a guest
Mar 9th, 2017
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. $regfile = "m128def.dat"                                    ' specify the used micro
  4. $crystal = 12000000                                         ' used crystal frequenc8
  5. '$baud1 = 19200                                              ' use baud rate
  6. '$baud = 19200
  7. $hwstack = 128                                              ' default use 32 for the hardware stack
  8. $swstack = 128                                              ' default use 10 for the SW stack
  9. $framesize = 512
  10. $lib "modbus.lbx"
  11. $lib "glcdeadogm128x6.lbx"
  12.  
  13. ''$prog &HFF , &H8E , &HC1 , &HFF                             ' generated. Take care that the chip supports all fuse bytes.
  14.  
  15. ''Config Graphlcd = 128 * 64eadogm , Cs1 = Porta.4 , A0 = Porta.5 , Si = Porta.7 , Sclk = Porta.6 , Rst = Porta.3
  16.  
  17.  
  18. Config Com2 = 57600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8       ', Clockpol = 0
  19. Open "com2:" For Binary As #2
  20.  
  21. Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8       ', Clockpol = 0
  22. Open "com1:" For Binary As #1
  23.  
  24. On Urxc Urxc_isr
  25. Enable Urxc
  26.  
  27.  
  28. On Urxc1 Urxc_isr1
  29. Enable Urxc1
  30.  
  31.  
  32.  
  33. Config Int4 = Rising                                        'preruseni od snimace otacek vyvevy
  34. On Int4 Int4_int
  35. Enable Int4
  36.  
  37.  
  38. $lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI
  39. Config Scl = Portd.0                                        ' we need to provide the SCL pin name
  40. Config Sda = Portd.1                                        ' we need to provide the SDA pin name
  41. I2cinit
  42. Config Twi = 100000
  43.  
  44. Declare Sub Init_pca9685
  45. Init_pca9685
  46. Declare Sub Send_pwm
  47.  
  48.              '(
  49. Config Timer0 = Timer , Prescale = 256
  50. On Timer0 Tim0_int
  51. Enable Timer0
  52. ')
  53.  
  54.  
  55.  
  56. Tccr0 = &B10001_101                                         'nastaveni casovace do ctc rezimu / 128
  57. Ocr0 = 249                                                  ''1 sekundd = 375 dilku (249 je korekce, protoze dilek je i nula a celkovy pocet je pak 250 taktu do sekundy
  58. Set Timsk.1
  59. On Oc0 Tim0_int
  60. 'KONFIGURACE DISPLEJE A TLACITEK
  61.  
  62. Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.7 , A0 = Portc.3 , Si = Portc.4 , Sclk = Portc.5 , Rst = Portc.6
  63. Tl_up Alias Pinc.0 : Config Portc.0 = Input : Set Portc.0
  64. Tl_down Alias Pinc.1 : Config Portc.1 = Input : Set Portc.1
  65. Tl_ok Alias Pinc.2 : Config Portc.2 = Input : Set Portc.2
  66.  
  67. Teplota_vyveva Alias Pinf.2 : Config Portf.2 = Input : Set Portc.2
  68.  
  69. Glcdcmd &H23
  70. Glcdcmd &H81
  71. Glcdcmd 55
  72. Glcdcmd &H1C
  73. ''OTOCENI DISPLEJA
  74. Glcdcmd &B11001111
  75. Glcdcmd &B10100000
  76. Declare Sub Obsluha_tlacitek
  77. Declare Sub Tlacitka_menu1
  78. Declare Sub Read_inputs
  79. Declare Sub Send_outputs
  80. Declare Sub Sest_obr_spinacu
  81. Declare Sub Cls_
  82. Declare Sub Strana1
  83. Declare Sub Strana2
  84. Declare Sub Strana3
  85. Declare Sub Strana4
  86. Declare Sub Strana5
  87. Declare Sub Strana6
  88. Declare Sub Strana7
  89. Declare Sub Strana8
  90. Declare Sub Strana9
  91. Declare Sub Strana10
  92. Declare Sub Strana11
  93. Declare Sub Strana12
  94. Declare Sub Vypocet_cista
  95. Declare Sub Vypocet_kalova
  96. Declare Sub Prepocet_bytu(byval Bytebyte As Byte , Byval Prepocet_bytu_num As Byte)
  97. Declare Sub Prepocet_na_word(byval Word_poz As Word )
  98. Declare Sub Vyh_vystupu_vyveva
  99. Declare Sub Vyh_vystupu_vystlak_cerpadlo
  100. Declare Sub Vyh_vystupu_recyklace
  101. Declare Sub Vyh_vystupu_doplnkove_funkce
  102. Declare Sub Reset_vystupu
  103. Declare Sub Predavani_autec
  104. Declare Sub Hlasky_rout
  105. Declare Sub Hlasky_zasobnik(byval Cislo_hlasky As Byte , Byval Vymaz As Byte)
  106. Declare Sub Odesli_hlasku
  107.  
  108.  
  109. Cls_
  110.  
  111. Setfont Font8x8
  112.  
  113. 'KONFIGURACE AD PREVODNIKU
  114. Config Adc = Single , Prescaler = Auto , Reference = Avcc
  115.  
  116. Out17 Alias Porta.4 : Config Porta.4 = Output
  117. Out18 Alias Porta.5 : Config Porta.5 = Output
  118. Out19 Alias Porta.6 : Config Porta.6 = Output
  119. Out20 Alias Porta.7 : Config Porta.7 = Output
  120. Dim Bit_time As Bit
  121.  
  122.  
  123. Dim Pombyte As Byte , I As Byte , Ii As Byte , Index As Byte
  124. Dim Tim1 As Word , Pomw1 As Single , Pomw2 As Single , Pomw3 As Single
  125. Dim Pomw4 As Word
  126. Dim Outp(20) As Word
  127. Dim Outp_old(20) As Word
  128. Dim Outb(20) As Integer                                     ''out begin
  129. Dim Oute(20) As Integer                                     ''out end
  130. Dim New_ee As Eram Byte
  131. Dim Outb_ee(20) As Eram Word
  132. Dim Oute_ee(20) As Eram Word
  133. Dim Pwm_out(20) As Word                                     ''zakladni cislo pro rizeni vystupu - 255 urovni
  134. Dim Slave_tlac As Word
  135. Dim Xy(20) As Byte
  136.  
  137. Dim Pocitadlo As Word
  138. Dim Ramp_on(20) As Word
  139. Dim Ramp_on_ee(20) As Eram Word
  140. Dim Ramp_off(20) As Word
  141. Dim Ramp_off_ee(20) As Eram Word
  142. Dim Pwm_driver(20) As Word
  143. Dim Pwm_krok(20) As Word , Pwm_out_integer(20) As Integer ,
  144. Dim Pwm_krok_prom(20) As Word
  145. ''Dim Pwm_timer_limit(20) As Word
  146. Dim Tim_ramp As Word
  147. Dim Index_ramp As Word
  148. Dim Ext_u As Bit
  149. Dim Thisslave As Word
  150. Dim Hadice_nastavena As Bit
  151. Dim Data_prijata_tlacitka As Bit
  152. Dim Vysilej_tlacitka As Bit
  153. Dim Prevodnik(8) As Word
  154. 'Dim Pwm_out_skut(20) As Word
  155. '' zakladni nastaveni promennych nez se nahraji nove hodnoty z EEPROM
  156.  
  157.  
  158. '' maximalni rozliseni vystupu je 4095 dilku
  159. '' definujeme vsak pocatecni uroven reakce vystupu a konecnou uroven reakce vystupu
  160. '' zbyvajici vnitrni oblast je aktivni cast pro rizeni proprcionaliho hydraulickeno ventilu
  161. '' avsak i definovany aktivni interval by mel byt vetsi nez 200, coz muzeme povazovat za dostatecne velkou stupnici pro rizeni ventilu.
  162. '' konecny interval pak je oute - outb
  163. Showpic 5 , 10 , Logostep
  164. Setfont Font8x8
  165. Lcdat 7 , 1 , "MAUS16 UFO"
  166. Lcdat 8 , 1 , "V.1.1. / 15.3.2016   "
  167. Waitms 500
  168. ''Cls_
  169.  
  170. Declare Sub Modbus(byval Modbus_s As Byte , Byval Modbus_prikaz As Byte , Byval Modbus_adresa As Word , Byval Modbus_pocetbajtu As Word)
  171.  
  172. '''M-LITE DEKLACE PROMENNYCH =-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-==-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=
  173. Dim Skupina As Byte , Slave As Byte , Master As Bit
  174. Dim Mbuf(120) As Byte , Modt As Byte , Crc As Word , Crc2 As Word , Index1 As Word , Index2 As Word , Index3 As Word
  175. Dim M(60) As Word
  176. Dim Pocet_wordu As Byte , Adresa_pameti As Byte , X As Byte
  177. Dim Space_time As Word , Vysilej As Bit
  178. Dim Buf_long As Byte
  179. Dim Data_prijata As Bit
  180. Skupina = 10 : Slave = 0                                    ''skupina a adresa slejva,
  181. If Slave = 0 Then
  182.    Master = 1                                               ''pokud je slejv nenulovy, je master 0, jinak jsme master
  183. Else
  184.    Master = 0
  185. End If
  186.  
  187. Dim Index2_tl As Word , Crc_tl As Word , Crc2_tl As Word , X_tl As Byte
  188. Dim Modt_tl As Byte , Index_tl As Byte , Mbuf_tl(20) As Byte , Buf_long_tl As Byte , Nodata_time_tl As Word , Space_time_tl As Word
  189.  
  190.  
  191. Pocitadlo = 1
  192. ''Dim Ypom As Word , Xpom As Word , Yypom As Word , Xxpom As Word
  193.  
  194. Dim Prikaz As String * 2 , Pipani As Word
  195.  
  196. Dim Att As Byte , Pinh1_old As Byte
  197. Dim Pomword As Bit
  198. Dim Nodata_time As Word , Index_d As Word
  199. Dim Bufik As Byte
  200. Dim Adresa_pameti_tl As Byte
  201.  
  202. '' dale je mozne definovat intervaly pro maximalni cas mezi koncem dotazu a zacatkem odpovedi, co ruzny timeout pro cteni a zapis
  203. Index = 0
  204. 'Flaga = 0
  205.  
  206. '****************************************
  207. '****************************************
  208. Dim Tlacitko As Word , Osax As Word , Osay As Word
  209. '****************************************
  210. '****************************************
  211. Dim Tim_tl_up As Word , Tim_tl_down As Word , Tim_tl_ok As Word
  212. Dim Tl_up_old As Bit , Tl_down_old As Bit , Tl_ok_old As Bit , Uloz_data As Bit
  213. Dim Set_bit As Bit , Refresh_bit As Bit , Menu_bit As Bit , Set_pos As Byte , Menu_pos As Byte
  214. Dim S As String * 20 , Refresh_out As Bit , Strana As Byte
  215. Dim Vstup As Word , Tlac1_ As Bit , Tlac2_ As Bit , Tlac3_ As Bit
  216. Dim Ain(8) As Word , Pom_ain1(21) As Word , Pom_ain2(21) As Word , Pom_ain3(21) As Word , Pom_ain4(21) As Word , Pom_ain5(21) As Word , Pom_ain6(21) As Word , Pom_ain7(21) As Word , Pom_ain8(21) As Word
  217. Dim I1 As Byte , I2 As Byte , I3 As Byte , Pocet_vzorku As Byte , Ain_(8)as Long
  218. Dim Otacky_pozadovane As Word , Hadice As Word , Prutok As Word , Motor_stop As Bit , Motor_start As Bit , Otacky_realne As Word , Pom_single As Single
  219. Dim Vystupni_tlak_real As Word , Prutok_real As Word , Tlak_pozadovany As Word , Automat As Bit , Pom_rozdil As Word
  220. Dim Nuluj_irc_bit As Bit , Irc_step As Byte , Irc_sample As Byte
  221. Dim Irc_val_celk As Long , Delitel As Long , Prepocet As Long , Prepocet_str As String * 4 , Irc_val As Long , Smer As Bit , Posun As Bit
  222. Dim Irc_val_celk_2 As Long , Zmena As Bit , Testovaci_rezim As Bit
  223.  
  224. Dim Hladina_kalove_vody_prac As Word , Hladina_vody_prac As Word
  225. Dim Nastaveni_ramp_ee As Eram Byte
  226. Dim Tim3 As Word
  227.  
  228.  
  229. Dim Vrstva_zmena As Word , Vrstva As Word , Vrstva_old As Word , Polomer As Single , Tloustka_hadice As Single
  230. Dim Odvinuto As Single , Buben_otacky As Single , Obvod As Single , Pocet_rad As Single , Obvod_konstant As Single , Vrstva_old1 As Word
  231. Dim Buben_otackyp10 As Long , Buben_otackym10 As Long , Zmena_vrstvy As Integer
  232. Dim Buben_word As Long , Odvinuto_celk As Single , Fn As Word , Buben_otacky_pro As Single , Vrstkonst As Word , Odvin As Word
  233. Dim Pom_str As String * 10 , Time_out_pom As Byte , Navinbitufo As Bit , Navinbitovladac As Bit , Navinvyp As Bit
  234. Dim Potik As Word , Pocetzmacknuti As Byte
  235.  
  236. Dim Kodery_ufo As Word
  237.  
  238. Dim Pole_vrstvy(20) As Single , Comm_period As Word , Comm_period_tlacitka As Byte
  239. Dim Zarizeni As Byte , Druh_komunikace As Byte , Pocet_stisku As Byte
  240.  
  241.  
  242. Dim Tlak_vyveva_disp As Word , Otacky_motoru As Word , Tlak_real As Word
  243.  
  244. Dim Recyklace_funkce As Bit
  245. '**********PROMENNE PRO TLACITKA NA DVERICH****************
  246. Dim Vak_cerp_on_off As Bit , Vak_cerp_sani As Bit , Vak_cerp_vytlak As Bit , Vak_cerp_soupe_spodni As Bit , Vak_cerp_soupe_horni As Bit,
  247. Dim Vystlak_cerp_on_off As Bit , Vystlak_cerp_kohout_dn13 As Bit , Vystlak_cerp_kohout_dn25_32 As Bit
  248. Dim Vystlak_cerp_hadice_dn13 As Bit , Vystlak_cerp_hadice_dn25_32 As Bit , Vystlak_cerp_tlak_on_off As Bit
  249. Dim Recyklace_upr_vody As Bit , Recyklace_cist_hrub_filtr As Bit , Recyklace_cist_cyklon As Bit , Recyklace_odcerp_kal As Bit
  250. Dim Zavodneni_90s As Bit , Zavodneni_majak As Bit , Zavodneni_svetlo As Bit , Zavodneni_radio As Bit
  251. '**********PROMENNE PRO VSTUPY****************
  252. Dim Vyveva_otacky As Word , Tlak_oleje_vyveva As Word , Pretlak_vyveva As Word , Podtlak_vyveva As Word
  253. Dim Tlak_vody_hrib As Word , Hladina_vody As Word , Hladina_kalove_vody As Word
  254. Dim Cista_min As Word , Cista_max As Word , Kalova_min As Word , Kalova_max As Word
  255. '**********PROMENNE PRO VYSTUPY****************
  256. Dim Vyveva_pwm As Bit , Vyveva_sani As Bit , Vyveva_vytlak As Bit , Vyveva_odvetrani As Bit , Ventil_kalova As Bit , Ventil_kalova_1 As Bit
  257. Dim Ventil_zac_kaly_2 As Bit , Ventil_cista As Bit , Ventil_cista_2 As Bit , Ventil_horni_kaly_3 As Bit , Ventil_reg_hrib As Bit,
  258. Dim Ventil_dn13 As Bit , Ventil_dn25 As Bit , Cis_hruby_filtr As Bit , Klapka_nap_cista As Bit , Klapka_nap_kalova As Bit , Klapka_ovldaci_pro_f As Bit
  259. Dim Soupe_dolni As Bit , Soupe_horni As Bit , Auto_stop As Bit , Otacky_plus As Bit , Otacky_minus As Bit
  260. Dim Tlak_vyveva As Word , Vyveva_prepocet As Word
  261. Dim Ad_bit As Bit , Ad_time As Word
  262. Dim Time_cisteni_cyklonu As Word , Time_zavodneni As Word
  263. Dim Kodery_ufo_2 As Word
  264. Dim Tlacitka_1 As Word , Tlacitka_2 As Word
  265.  
  266. Dim Recykl_cerp_hrub_filtr As Bit , Cyklon As Bit
  267. Dim Cist_hrub_filtru_time As Word
  268. '**********PROMENNE PRO VYPOCTY****************
  269. Dim Maximum As Word , Minimum As Word , Cista_konst As Single , Akt_cista As Word
  270. Dim Akt_kalova As Word , Maximum_kalova As Word , Minimum_kalova As Word , Kalova_konst As Single
  271. Dim Maximum_ee As Eram Word , Minimum_ee As Eram Word , Maximum_kalova_ee As Eram Word , Minimum_kalova_ee As Eram Word
  272. Dim Recyklace_1sec As Word , Recyklace_time As Word
  273. Dim Hys1 As Bit , Hys2 As Bit , Start_hystereze As Bit
  274. Dim Cisteni_cyklonu_time As Word , Recyklace_cist_cyklon_old As Bit , Recyklace_cist_cyklon_time As Word
  275.  
  276. Dim Vystlak_cerpadlo As Bit
  277. Dim Vypnout_vystupy As Bit
  278. Dim Tim2 As Word , Otacky_vyveva As Word , Vyveva_rpm As Word
  279.  
  280. Dim Pom_byte As Byte , Prepocet_bytu_num As Byte , Word1 As Word , Word2 As Word , Word3 As Word , Word4 As Word
  281. Dim Word5 As Word , Word6 As Word , Word7 As Word , Word8 As Word
  282.  
  283. Dim Vykon_vyveva As Word , Tlak_pozadovany_automat As Word
  284. Dim Ee_hladiny As Eram Byte
  285. Dim Vyveva_ok As Bit
  286. Dim Pt As Byte , Ptx As Byte
  287. Dim Otacky_pridej As Bit , Otacky_uber As Bit , Zmena_otacek_time As Word , Cteni_otacek_time As Word
  288. Dim Rozdil_tlaku As Single , Men_otacky As Bit
  289.  
  290. Dim Blokace_cista As Bit , Blokace_kalova As Bit , Blokace_bimetal As Bit
  291.  
  292. Dim Recyklace_zobraz As Bit , Vystlak_cerp_zobraz As Bit , Vyveva_zobraz As Bit
  293.  
  294. Dim Pom_word As Word
  295. Dim Autec_1 As Word , Autec_2 As Word , Autec_3 As Word
  296. Dim Pom_byte1 As Byte , Pom_byte2 As Byte
  297.  
  298. Dim Hlaska As Byte , Hlasky_zasobnik_pole(50) As Byte
  299. Dim Zapsano As Bit
  300. Dim Z As Byte , Zz As Byte
  301. Dim Hlaska_bit As Bit , Hlaska_bit_old As Bit
  302. Dim Hlhl As Byte
  303. Dim Tlak_pozadovany_automat_radio As Word , Vyveva_prepocet_radio As Word
  304. Dim Hys3 As Bit , Vypni As Bit
  305. Dim Cekani_const As Word , Otacky_const As Word
  306. Dim Vyveva_prehrati As Bit , Predej_autec As Word
  307. Dim Hlaska_exist As Bit
  308. Dim Konec As Word , Hlaska_old As Byte
  309. Dim Teplota_oleje As Byte , Tlak_oleje_kalove_cerpadlo As Byte
  310. Dim Otacky_pozadovane_vyveva As Word
  311. Dim Rozdil_otacek As Single , Vyveva_automat As Word
  312. Dim Cekej As Bit , Cas_vyveva As Word
  313. Dim Najeto As Bit
  314. Dim Hys4 As Bit , Vypni_cerp As Bit
  315. Dim Hys5 As Bit , Vypni_recykl As Bit
  316. Dim Otacky_const_minus As Word
  317. Dim Tlak_hlaska As Bit , Tlak_time As Word , Recyklace_time_znovuspust As Word
  318. Dim Set_cerp As Bit , Set_cyklon As Bit
  319. Dim Teplota_time As Bit , Teplota_vyveva_time As Word , Zmena_tepl As Bit , Temp_min As Word , Temp_max As Word
  320.  
  321.  
  322. Declare Sub Zmena_otacek(byval Jak As Byte)
  323.  
  324. Pocet_vzorku = 10
  325.  
  326. Strana = 4
  327.  
  328. If New_ee <> 4 Then
  329.    For Index = 2 To 19
  330.       Outb_ee(index) = 1
  331.       Oute_ee(index) = 4096
  332.       Ramp_on_ee(index) = 1
  333.       Ramp_off_ee(index) = 1
  334.    Next
  335.    New_ee = 4
  336. End If
  337.  
  338. If Nastaveni_ramp_ee <> 5 Then
  339.    'VYVEVA
  340.    Outb_ee(1) = 1000
  341.    Oute_ee(1) = 1550
  342.    Ramp_on_ee(1) = 40
  343.    Ramp_off_ee(1) = 10
  344.  
  345.  
  346.    Nastaveni_ramp_ee = 5
  347. End If
  348.  
  349.  
  350. For Index = 1 To 19
  351.    Outb(index) = Outb_ee(index) : Oute(index) = Oute_ee(index)
  352.    Ramp_on(index) = Ramp_on_ee(index)
  353.    Ramp_off(index) = Ramp_off_ee(index)
  354. Next Index
  355.  
  356.  
  357.  
  358.  
  359.  
  360. Menu_bit = 0
  361. Irc_val_celk = 0
  362. Irc_val = 0
  363. Zmena = 0
  364. Irc_val_celk_2 = 0
  365. Irc_val = 0
  366. Comm_period_tlacitka = 25                                   '' ROZSYNCHONIZOVANI S CASOVACEM PRVNI KOMUNIKACE
  367.  
  368. Const Reakce_tlacitka = 20                                  ''prodleva po jake se vyhodnoti, ze tlacitko je stlaceno - nabezna hrana
  369. Const Opakovana_reakce_tlacitka = 200                       '' doba podrzeni tlacitka, od ktere se hodnota " rozbehne "
  370. Const Rychlost_pridavku_pwm = 20                            ''cislo jak rychly bude pridavek
  371. Const Rychlost_pridavku_ram = 20                            ''cislo jak rychly bude pridavek
  372. Const Pridavek_pwm = 50                                     '' o kolik se zmeni hodnota pri podrzeni tlacitka
  373. Const Pridavek_ram = 5
  374.  
  375. Setfont Font8x8
  376. Set Refresh_bit
  377. Cls
  378.  
  379.  
  380. 'Prepsani eeprom hodnot hladin nadrzi cista_min = 835 / 5.65
  381. '                                         ^         ^     ^------- rozdil mezi minimem a maxime / 100 (konstanta pro prepocet na 100%)
  382. '                                         ^         ^------------- hodnota minima - surova hodnota z A/D prevodniku
  383. '                                         ^----------------------- "ulozena" hodnota minima hladiny v nadrzi ciste vody
  384. If Ee_hladiny <> 11 Then
  385.    Cista_min = 760 - 164
  386.    Minimum_ee = Cista_min
  387.    'Minimum = Cista_max
  388.    Cista_max = 600 - 164
  389.    Maximum_ee = Cista_max
  390.    'Maximum = Cista_min
  391.  
  392.  
  393.    '(
  394.    Kalova_min = 720 / 5.65
  395.    Minimum_kalova_ee = Kalova_min
  396.  
  397.    Kalova_max = 170 / 5.65
  398.    Maximum_kalova_ee = Kalova_max
  399. ')
  400.    Ee_hladiny = 11
  401. End If
  402. Waitms 100
  403. Cista_min = Minimum_ee
  404. Cista_max = Maximum_ee
  405. Kalova_min = Minimum_kalova_ee
  406. Kalova_max = Maximum_kalova_ee
  407. Waitms 800
  408. Enable Interrupts
  409.  
  410. Hlaska_bit = 1
  411. Hlaska_bit_old = Hlaska_bit
  412.  
  413. Config Watchdog = 2048
  414. Start Watchdog
  415.  
  416.  
  417.  
  418.  
  419. Do
  420.  
  421.  
  422.  
  423.  
  424. '******** MODBUS PRIJEM OD UFA A DISPLEJE ********************
  425.    If Data_prijata = 1 Then
  426.  
  427.       Data_prijata = 0
  428.       '' sestaveni hodnoty crc z poslednich dvou bajtu
  429.       Index2 = Buf_long - 1
  430.       Crc = Makeint(mbuf(index2) , Mbuf(buf_long))          ' create word of received crc
  431.       Decr Index2
  432.       ''vypocet crc z prichozi informace (je potreba modbus.lib)
  433.       Crc2 = Crcmb(mbuf(1) , Index2)
  434.       Adresa_pameti = 1
  435.       If Crc = Crc2 Then
  436.          If Master = 1 Then
  437.             '' pokud jsme master, zapiseme si data podle toho ktery slejv nam odpovida
  438.             If Mbuf(2) = 1 Then Adresa_pameti = 30
  439.             If Mbuf(2) = 2 Then Adresa_pameti = 20
  440.          ''Else...
  441.          '' JSME NYNI MASTER
  442.          End If
  443.          Zarizeni = Mbuf(3)                                 '' Naplneni "m"                 '' hodnot podle adresy
  444.          Pocet_wordu = Mbuf(4)
  445.          Index2 = 5
  446.          For X = 1 To Pocet_wordu                           'Pocet_polozek
  447.             M(adresa_pameti) = Mbuf(index2) * 256
  448.             Incr Index2
  449.             M(adresa_pameti) = M(adresa_pameti) + Mbuf(index2)
  450.             Incr Index2
  451.             Incr Adresa_pameti
  452.          Next
  453.       End If
  454.  
  455.       Index = 0
  456.       '**** SESTAVENI PRACOVNICH PROMENNYCH ***********
  457.  
  458.       'pokyny pro zmenu otacek od slejva
  459.       Otacky_plus = M(30).3
  460.       Otacky_minus = M(30).2
  461.       'pokyny pro master od displeje
  462.       If Zavodneni_radio = 0 Then
  463.          Tlak_pozadovany_automat = M(20)
  464.          Vykon_vyveva = M(21)
  465.          Automat = M(22).0
  466.          If Vykon_vyveva = 100 Then
  467.             Vyveva_prepocet = 103 * 40
  468.          Elseif Vykon_vyveva < 100 Then
  469.             Vyveva_prepocet = Vykon_vyveva * 40
  470.          End If
  471.       End If
  472.       Hlaska_bit = M(22).1
  473.       'informace pro displej od slejva (informace o vstupech)
  474.       Word5 = M(30)
  475.       Word6 = M(31)
  476.       Word7 = M(32)
  477.       Word8 = M(33)
  478.       Autec_1 = M(34)
  479.       Autec_2 = M(35)
  480.       Odvin = M(36)
  481.       Predej_autec = Autec_2
  482.  
  483.  
  484.       For Pt = 0 To 7
  485.          Ptx = Pt + 8
  486.  
  487.          Teplota_oleje.pt = Word8.ptx
  488.       Next
  489.       For Pt = 0 To 7
  490.          Ptx = Pt + 8
  491.  
  492.  
  493.          Tlak_oleje_kalove_cerpadlo.pt = Word7.ptx
  494.       Next
  495.  
  496.  
  497.  
  498.       '"vytazeni" informace o otackach motoru pro automaticke rizeni tlaku
  499.       Call Prepocet_na_word(word6)
  500.  
  501.       Predavani_autec
  502.  
  503.  
  504.  
  505.  
  506.    End If
  507.  
  508.    '*********PREDAVANE INFORMACE**********
  509.  
  510.    '         prirazeni informaci do prazdnych pozic wordu tlacitka_1 a tlacitka_2
  511.    Tlacitka_1.11 = Recykl_cerp_hrub_filtr
  512.    Tlacitka_1.12 = Cyklon
  513.    '         predavane informace od tlacitkovych desek na rozvadeci a pridenych informaci  (viz vyse)
  514.    M(1) = Tlacitka_1
  515.    M(2) = Tlacitka_2
  516.    '         predavane informace od mastru a slejva pro displej (informace o stavu cidel atd...)
  517.    M(3) = Word1
  518.    M(4) = Word2
  519.    M(5) = Word3
  520.    M(6) = Word4
  521.    Word5.4 = Recyklace_zobraz
  522.    Word5.5 = Vystlak_cerp_zobraz
  523.    Word5.6 = Vyveva_zobraz
  524.    M(7) = Word5
  525.    M(8) = Word6
  526.    M(9) = Word7
  527.    M(10) = Word8
  528.    M(11) = Hlasky_zasobnik_pole(1)
  529.    Hlaska = 0
  530.    M(12) = Predej_autec
  531.    M(13) = Odvin
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.    '********VYSLANI PREDAVANYCH INFORMACI NA LINKU UFO-M <-> UFO-S <-> DISPLAY-S
  539.  
  540.    If Vysilej = 1 Then
  541.       Reset Vysilej
  542.       Mbuf(1) = Skupina
  543.       If Master = 1 Then
  544.          Mbuf(2) = Slave
  545.       ''Else  ''JSME MASTER
  546.          ''Mbuf(2) = 1
  547.       End If
  548.       Mbuf(3) = 0
  549.       If Slave = 2 Then
  550.          Pocet_wordu = 13
  551.          Mbuf(4) = 13
  552.       Elseif Slave = 1 Then
  553.          Pocet_wordu = 2
  554.          Mbuf(4) = 2
  555.       End If
  556.  
  557.       Index2 = 5 : Adresa_pameti = 1                        '' adresu si muzeme upravit, drzme se ale toho, ze sdilene promenne bude pocitat od jednicky a redukovat na nutny pocet
  558.  
  559.       For X = 1 To Pocet_wordu                              'Pocet_polozek
  560.          Mbuf(index2) = High(m(adresa_pameti))
  561.          Incr Index2
  562.          Mbuf(index2) = Low(m(adresa_pameti))
  563.          Incr Index2
  564.          Incr Adresa_pameti
  565.       Next
  566.       Decr Index2
  567.       Crc = Crcmb(mbuf(1) , Index2)                         ' create checksum
  568.       Incr Index2
  569.       Mbuf(index2) = Low(crc)                               'add to buffer
  570.       Incr Index2
  571.       Mbuf(index2) = High(crc)
  572.  
  573.       For X = 1 To Index2
  574.          Printbin #2 , Mbuf(x) ; 1
  575.       Next
  576.  
  577.    End If
  578.  
  579. '**************KOMUNIKACE_TLACITKA******************************
  580.    If Data_prijata_tlacitka = 1 Then
  581.       Data_prijata_tlacitka = 0
  582.       '' sestaveni hodnoty crc z poslednich dvou bajtu
  583.       Index2_tl = Buf_long_tl - 1
  584.       Crc_tl = Makeint(mbuf_tl(index2_tl) , Mbuf_tl(buf_long_tl))       ' create word of received crc
  585.       Decr Index2_tl
  586.        ''vypocet crc z prichozi informace (je potreba modbus.lib)
  587.       Crc2_tl = Crcmb(mbuf_tl(1) , Index2_tl)
  588.       Adresa_pameti = 1
  589.       If Crc_tl = Crc2_tl Then
  590.          If Master = 1 Then
  591.  
  592.             If Mbuf_tl(2) = 2 Then Adresa_pameti_tl = 40 : Bufik = 2
  593.             If Mbuf_tl(2) = 3 Then Adresa_pameti_tl = 44 : Bufik = 3
  594.             If Mbuf_tl(2) = 4 Then Adresa_pameti_tl = 48 : Bufik = 4
  595.             If Mbuf_tl(2) = 5 Then Adresa_pameti_tl = 52 : Bufik = 5
  596.          End If
  597.          Zarizeni = Mbuf_tl(3)                              '' Naplneni "m"                 '' hodnot podle adresy
  598.          Pocet_wordu = 2
  599.          Mbuf_tl(4) = Pocet_wordu
  600.          Index2_tl = 5
  601.          For X_tl = 1 To Pocet_wordu                        'Pocet_polozek
  602.             M(adresa_pameti_tl) = Mbuf_tl(index2_tl) * 256
  603.             Incr Index2_tl
  604.             M(adresa_pameti_tl) = M(adresa_pameti_tl) + Mbuf_tl(index2_tl)
  605.             Incr Index2_tl
  606.             Incr Adresa_pameti_tl
  607.          Next
  608.  
  609.       End If
  610.       '' NAHRANI PRACOVNICH BITU V SUBROUTINE
  611.  
  612.  
  613.  
  614.       If Mbuf_tl(2) = 5 Then
  615.  
  616.          Zavodneni_90s = M(52).1
  617.          Tlacitka_2.4 = Zavodneni_90s
  618.          Zavodneni_majak = M(52).2
  619.          Tlacitka_2.5 = Zavodneni_majak
  620.          Zavodneni_svetlo = M(52).3
  621.          Tlacitka_2.6 = Zavodneni_svetlo
  622.          Zavodneni_radio = M(52).4
  623.          Tlacitka_2.7 = Zavodneni_radio
  624.  
  625.       End If
  626.  
  627.       If Zavodneni_radio = 0 Then
  628.  
  629.          Sest_obr_spinacu
  630.       Elseif Zavodneni_radio = 1 Then
  631.  
  632.                            '' VYBER OVLADANE HADICE JE VZDY
  633.          Vystlak_cerp_hadice_dn13 = M(44).4
  634.          Tlacitka_1.8 = Vystlak_cerp_hadice_dn13
  635.          Vystlak_cerp_hadice_dn25_32 = M(44).5
  636.          Tlacitka_1.9 = Vystlak_cerp_hadice_dn25_32
  637.  
  638.       End If
  639.  
  640.       Index_tl = 0
  641.    End If
  642.  
  643.    '************VYSLANI DOTAZU DO TLACITKOVYCH DESEK****************************
  644.  
  645.    If Vysilej_tlacitka = 1 Then
  646.       Reset Vysilej_tlacitka
  647.       '' POSTUONE OSLOVENI VSECH DESEK - ADRESY 2,3,4,5
  648.       Incr Pocitadlo
  649.       If Pocitadlo > 5 Then
  650.          Pocitadlo = 2
  651.       End If
  652.       Druh_komunikace = 0                                   ''princip - je to modbus odpoved, odpovidame slejvovi nase hodnoty, on pak nasledne odpovi zase jeho pole promennych
  653.       Mbuf_tl(1) = 10                                       'Skupina
  654.       Mbuf_tl(2) = Pocitadlo
  655.       Mbuf_tl(3) = 1                                        'Druh_komunikace
  656.       Pocet_wordu = 1
  657.       Mbuf_tl(4) = Pocet_wordu
  658.       Index2_tl = 5 : Adresa_pameti_tl = 1                  '' adresu si muzeme upravit, drzme se ale toho, ze sdilene promenne bude pocitat od jednicky a redukovat na nutny pocet
  659.       For X_tl = 1 To Pocet_wordu                           'Pocet_polozek
  660.          Mbuf_tl(index2_tl) = High(m(adresa_pameti_tl))
  661.          Incr Index2_tl
  662.          Mbuf_tl(index2_tl) = Low(m(adresa_pameti_tl))
  663.          Incr Index2_tl
  664.          Incr Adresa_pameti_tl
  665.       Next
  666.       Decr Index2_tl
  667.       Crc_tl = Crcmb(mbuf_tl(1) , Index2_tl)                ' create checksum
  668.       Incr Index2_tl
  669.       Mbuf_tl(index2_tl) = Low(crc_tl)                      'add to buffer
  670.       Incr Index2_tl
  671.       Mbuf_tl(index2_tl) = High(crc_tl)
  672.       For X_tl = 1 To Index2_tl
  673.          Printbin #1 , Mbuf_tl(x_tl) ; 1
  674.       Next
  675.    End If
  676.  
  677.  
  678.    '****************RUTINA HLASKY*********************
  679.  
  680.  
  681.  
  682.    If Hlaska_bit <> Hlaska_bit_old Then
  683.       Incr Hlhl
  684.       If Hlaska_bit = 1 And Hlaska_bit_old = 0 Then
  685.  
  686.          Posun = 0
  687.          Odesli_hlasku
  688.  
  689.       End If
  690.       Hlaska_bit_old = Hlaska_bit
  691.    End If
  692.    Hlasky_rout
  693.  
  694.    If Hlaska <> Hlaska_old Then
  695.       Odesli_hlasku
  696.    End If
  697.  
  698.    If Hlasky_zasobnik_pole(1) = 0 And Hlaska <> 0 Then
  699.       Hlaska = 0
  700.    End If
  701.  
  702.  
  703.    If Hlasky_zasobnik_pole(1) <> 0 And Posun = 0 Then
  704.  
  705.       Hlaska = Hlasky_zasobnik_pole(1)
  706.       'Hlasky_zasobnik_pole(1) = 0
  707.  
  708.  
  709.    End If
  710.  
  711.  
  712.    'If Posun = 0 Then
  713.    'Odesli_hlasku
  714.    'Posun = 1
  715.    'End If
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.    '*****************RESET VSECH VYSTUPU***************
  723.    'Nejprve resetujeme vsechny vystupy - prvotni stav pri prochazeni smycky.
  724.    'Nasleduji vyhodnovaci rutiny podle jednotlivych sekci rozvadece, na jejichz
  725.    'konci mame pripraveny pozadovane vystupy k sepnuti.
  726.    'Nasleduje odeslani vystupu (send outputs, send pwm)
  727.  
  728.  
  729.  
  730.  
  731.    Reset_vystupu
  732.  
  733.    '********************VYVEVA**************************
  734.    '------'   '---------------------'    '----SOUPE----'
  735.    'ON/OFF'   'SANI/ODVETRANI/VYTLAK'    'DOLNI/0/HORNI'
  736.    '------'   '---------------------'    '-------------'
  737.    '****************************************************
  738.  
  739.    Vyh_vystupu_vyveva
  740.  
  741.    '****************VYSOKOTLAKE CERPADLO***********************
  742.    '------'   '----HADICE----'    '-----BUBEN----'    '-TLAK-'
  743.    'ON/OFF'   'DN13/0/DN25-30'    'DN13/0/DN25-30'    'ON/OFF'
  744.    '------'   '--------------'    '--------------'    '------'
  745.    '***********************************************************
  746.  
  747.    Vyh_vystupu_vystlak_cerpadlo
  748.  
  749.    '****************RECYKLACE*******************************************
  750.    '------'   'CIST HRUB FILTR'    'CISTENI CYKLON'    'ODCERP KAL VODY'
  751.    'ON/OFF'   '----ON/OFF-----'    '----ON/OFF----'    '-----ON/OFF----'
  752.    '------'   '---------------'    '--------------'    '---------------'
  753.    '********************************************************************
  754.  
  755.    Vyh_vystupu_recyklace
  756.  
  757.    '****************DOPLNKOVEFUNKCE***********************
  758.    '   ZAVODNENI   SVETLO      MAJAK       RADIO
  759.    '   '------'   '------'    '------'    '------'
  760.    '   'ON/OFF'   'ON/OFF'    'ON/OFF'    'ON/OFF'
  761.    '   '------'   '------'    '------'    '------'
  762.    '***********************************************************
  763.  
  764.    Vyh_vystupu_doplnkove_funkce
  765.  
  766.  
  767.    '************automatika_vyveva************************
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.    If Menu_bit = 1 Then
  789.    '#################### NASTAVENI PWM HRANIC A RAMP PRO VYSTUPY #############################
  790.       If Menu_pos < 17 And Refresh_bit = 1 Then
  791.          Reset Refresh_bit
  792.          Cls_
  793.          Setfont Font8x8
  794.          Lcdat 1 , 1 , "NASTAVENI"
  795.          Lcdat 2 , 1 , "VENTILU:                   ";
  796.          If Set_pos = 0 Then
  797.             Setfont 100 : Lcdat 1 , 80 , Menu_pos ; "::::::" ; : Lcdat 1 , 60 , ">>";
  798.          Else
  799.             Setfont 100 : Lcdat 1 , 80 , Menu_pos ; "::::::" ; : Lcdat 1 , 60 , "::";
  800.          End If
  801.  
  802.          Setfont Font8x8 : Lcdat 4 , 1 , "MINIMUM  "
  803.          If Set_pos = 1 Then
  804.             Setfont 100 : Lcdat 3 , 80 , Outb(menu_pos) ; "::" ; : Lcdat 3 , 60 , ">>";
  805.          Else
  806.             Setfont 100 : Lcdat 3 , 80 , Outb(menu_pos) ; "::" ; : Lcdat 3 , 60 , "::" ;
  807.          End If
  808.          Setfont Font8x8 : Lcdat 6 , 1 , "MAXIMUM  "
  809.          If Set_pos = 2 Then
  810.             Setfont 100 : Lcdat 5 , 80 , Oute(menu_pos) ; "::" ; : Lcdat 5 , 60 , ">>";
  811.          Else
  812.             Setfont 100 : Lcdat 5 , 80 , Oute(menu_pos) ; "::" ; : Lcdat 5 , 60 , "::" ;
  813.          End If
  814.          Setfont Font8x8 : Lcdat 7 , 1 , "RAM _/ :" ; : Lcdat 8 , 1 , "RAM \_ :";
  815.          If Set_pos = 3 Then
  816.             Lcdat 7 , 60 , ">>" ; : Lcdat 7 , 80 , Ramp_on(menu_pos) ; "  " ;
  817.          Else
  818.             Lcdat 7 , 60 , "  " ; : Lcdat 7 , 80 , Ramp_on(menu_pos) ; "  " ;
  819.          End If
  820.          If Set_pos = 4 Then
  821.             Lcdat 8 , 60 , ">>" ; : Lcdat 8 , 80 , Ramp_off(menu_pos) ; "  " ;
  822.          Else
  823.             Lcdat 8 , 60 , "  " ; : Lcdat 8 , 80 , Ramp_off(menu_pos) ; "  " ;
  824.          End If
  825.       Elseif Menu_pos = 17 And Refresh_bit = 1 Then
  826.          Reset Refresh_bit
  827.          Cls_
  828.          Setfont My12d
  829.          Lcdat 5 , 40 , "EXIT?  >"
  830.  
  831.       Elseif Menu_pos = 40 And Refresh_bit = 1 Then
  832.          Reset Refresh_bit
  833.          Cls_
  834.          Setfont Font8x8
  835.          Lcdat 1 , 1 , " HLADINA CISTA VODA     " , 1
  836.          Lcdat 4 , 1 , " HLADINA KALOVA VODA    " , 1
  837.          Lcdat 8 , 1 , ".CISTA:" , 1
  838.          Lcdat 8 , 60 , ".KALOVA:" , 1
  839.          Lcdat 8 , 36 , Akt_cista ; "%";
  840.          Lcdat 8 , 105 , Akt_kalova ; "%";
  841.  
  842.          Setfont 100 : Lcdat 2 , 1 , ; Prevodnik(7) ;
  843.          Setfont 100 : Lcdat 5 , 1 , ; Prevodnik(8) ;
  844.  
  845.          Setfont Font8x8 : Lcdat 2 , 60 , "MIN?" : Lcdat 3 , 60 , "MAX?" : Lcdat 5 , 60 , "MIN?" : Lcdat 6 , 60 , "MAX?" : Lcdat 7 , 60 , "EXIT?"
  846.  
  847.  
  848.  
  849.          If Set_pos = 2 Then
  850.             Lcdat 2 , 90 , "<< OK?"
  851.          Elseif Set_pos = 3 Then
  852.             Lcdat 3 , 90 , "<< OK?"
  853.          Elseif Set_pos = 5 Then
  854.             Lcdat 5 , 90 , "<< OK?"
  855.          Elseif Set_pos = 6 Then
  856.             Lcdat 6 , 90 , "<< OK?"
  857.          Elseif Set_pos = 7 Then
  858.             Lcdat 7 , 90 , "<< OK?"
  859.          Else
  860.             Lcdat 2 , 90 , "         "
  861.             Lcdat 3 , 90 , "         "
  862.             Lcdat 5 , 90 , "         "
  863.             Lcdat 6 , 90 , "         "
  864.             Lcdat 7 , 90 , "         "
  865.  
  866.          End If
  867.       Elseif Menu_pos = 50 And Refresh_bit = 1 Then
  868.          Reset Refresh_bit
  869.          Cls_
  870.          Setfont Font8x8
  871.          Lcdat 1 , 1 , " CIDLO      BLOKACE     " , 1
  872.          If Blokace_cista = 0 Then
  873.             Lcdat 3 , 1 , "1: Cista Voda "
  874.          Elseif Blokace_cista = 1 Then
  875.             Lcdat 3 , 1 , "1: Cista Voda " , 1
  876.          End If
  877.          If Blokace_kalova = 0 Then
  878.             Lcdat 4 , 1 , "2: Kalova Voda"
  879.          Elseif Blokace_kalova = 1 Then
  880.             Lcdat 4 , 1 , "2: Kalova Voda" , 1
  881.          End If
  882.  
  883.          If Blokace_bimetal = 0 Then
  884.             Lcdat 5 , 1 , "3: Vyveva Bim. "
  885.          Elseif Blokace_bimetal = 1 Then
  886.             Lcdat 5 , 1 , "3: Vyveva Bim. " , 1
  887.          End If
  888.  
  889.  
  890.  
  891.          Lcdat 7 , 1 , "EXIT"
  892.          If Set_pos = 3 Then
  893.             Lcdat 3 , 90 , "<< OK?"
  894.          Elseif Set_pos = 4 Then
  895.             Lcdat 4 , 90 , "<< OK?"
  896.          Elseif Set_pos = 5 Then
  897.             Lcdat 5 , 90 , "<< OK?"
  898.          Elseif Set_pos = 7 Then
  899.             Lcdat 7 , 90 , "<< OK?"
  900.          Else
  901.  
  902.             Lcdat 3 , 90 , "         "
  903.             Lcdat 4 , 90 , "         "
  904.             Lcdat 5 , 90 , "         "
  905.  
  906.          End If
  907.  
  908.       End If
  909.    '#################### PRIME OVLADANI VYSTUPU V TESTOVACIM REZIMU #############################
  910.    '' POKUD JE TESTOVACI REZIM, VYSTUPY NEOVLADA PROGRAM, JEN TLACITKA
  911.    '(
  912.       If Menu_pos => 20 And Menu_pos < 29 Then
  913.       Testovaci_rezim = 1
  914.       Else
  915.       Testovaci_rezim = 0
  916.       End If
  917. ')                                               ')
  918.       If Menu_pos = 20 And Refresh_bit = 1 Then
  919.          Reset Refresh_bit
  920.          Cls_
  921.          Setfont Font8x8
  922.          Lcdat 1 , 1 , "VENTIL VYVEVA"
  923.          Lcdat 6 , 1 , "VYVEVA SANI"
  924.          Setfont My12d
  925.          Lcdat 2 , 1 , "    CH:OUT1"
  926.          Lcdat 7 , 1 , "    H:OUT2"
  927.       Elseif Menu_pos = 21 And Refresh_bit = 1 Then
  928.          Reset Refresh_bit
  929.          Cls_
  930.          Setfont Font8x8
  931.          Lcdat 1 , 1 , "VYSTLAK CERPADLO."
  932.          Lcdat 6 , 1 , "VYVEVA ODVETRANI."
  933.          Setfont My12d
  934.          Lcdat 2 , 1 , "    E:OUT3"
  935.          Lcdat 7 , 1 , "    F:OUT4"
  936.       Elseif Menu_pos = 22 And Refresh_bit = 1 Then
  937.          Reset Refresh_bit
  938.          Cls_
  939.          Setfont Font8x8
  940.          Lcdat 1 , 1 , "VENTIL KALOVA VYSTUP"
  941.          Lcdat 6 , 1 , "VENTIL ZA CERP. KALY"
  942.          Setfont My12d
  943.          Lcdat 2 , 1 , "    CH:OUT5"
  944.          Lcdat 7 , 1 , "    H:OUT6"
  945.       Elseif Menu_pos = 23 And Refresh_bit = 1 Then
  946.          Reset Refresh_bit
  947.          Cls_
  948.          Setfont Font8x8
  949.          Lcdat 1 , 1 , "VE. CISTA ZA CYKLON."
  950.          Lcdat 6 , 1 , "VE. KALY ZA CYKLONE."
  951.          Setfont My12d
  952.          Lcdat 2 , 1 , "    E:OUT7"
  953.          Lcdat 7 , 1 , "    F:OUT8"
  954.       Elseif Menu_pos = 24 And Refresh_bit = 1 Then
  955.          Reset Refresh_bit
  956.          Cls_
  957.          Setfont Font8x8
  958.          Lcdat 1 , 1 , "REGULACNI HRIB TLAK"
  959.          Lcdat 6 , 1 , "VENTIL DN13"
  960.          Setfont My12d
  961.          Lcdat 2 , 1 , "    OUT9"
  962.          Lcdat 7 , 1 , "    OUT10"
  963.       Elseif Menu_pos = 25 And Refresh_bit = 1 Then
  964.          Reset Refresh_bit
  965.          Cls_
  966.          Setfont Font8x8
  967.          Lcdat 1 , 1 , "VENTIL DN25"
  968.          Lcdat 6 , 1 , "VE.CISTENI HR.FILTR"
  969.          Setfont My12d
  970.          Lcdat 2 , 1 , "    OUT11"
  971.          Lcdat 7 , 1 , "    OUT12"
  972.       Elseif Menu_pos = 26 And Refresh_bit = 1 Then
  973.          Reset Refresh_bit
  974.          Cls_
  975.          Setfont Font8x8
  976.          Lcdat 1 , 1 , "VE.NAPOUSTENI CISTA"
  977.          Lcdat 6 , 1 , "VE.NAPOUSTENI KALO."
  978.          Setfont My12d
  979.          Lcdat 2 , 1 , "    OUT13"
  980.          Lcdat 7 , 1 , "    OUT14"
  981.       Elseif Menu_pos = 27 And Refresh_bit = 1 Then
  982.          Reset Refresh_bit
  983.          Cls_
  984.          Setfont Font8x8
  985.          Lcdat 1 , 1 , "OVLADANI F"
  986.          Lcdat 6 , 1 , "SOUPE DOLNI"
  987.          Setfont My12d
  988.          Lcdat 2 , 1 , "    OUT15"
  989.          Lcdat 7 , 1 , "    OUT16"
  990.       Elseif Menu_pos = 28 And Refresh_bit = 1 Then
  991.          Reset Refresh_bit
  992.          Cls_
  993.          Setfont Font8x8
  994.          Lcdat 1 , 1 , "SOUPE HORNI"
  995.          Lcdat 6 , 1 , "AUTO STOP"
  996.          Setfont My12d
  997.          Lcdat 2 , 1 , "    OUT17"
  998.          Lcdat 7 , 1 , "    OUT18"
  999.       Elseif Menu_pos = 29 And Refresh_bit = 1 Then
  1000.          Reset Refresh_bit
  1001.          Cls_
  1002.          Setfont Font8x8
  1003.          Lcdat 1 , 1 , "AUTO OTACKY +"
  1004.          Lcdat 6 , 1 , "AUTO OTACKY -"
  1005.          Setfont My12d
  1006.          Lcdat 2 , 1 , "    OUT19"
  1007.          Lcdat 7 , 1 , "    OUT20"
  1008.       Elseif Menu_pos = 30 And Refresh_bit = 1 Then
  1009.          Reset Refresh_bit
  1010.          Cls_
  1011.          Setfont My12d
  1012.          Lcdat 1 , 50 , "EXIT? >"
  1013.           ''...
  1014.  
  1015.       End If
  1016.  
  1017.    Elseif Menu_bit = 0 Then
  1018.       If Refresh_bit = 1 Then
  1019.          Reset Refresh_bit
  1020.          Cls_
  1021.          Setfont Font8x8
  1022.          If Strana = 1 Then
  1023.             Strana1
  1024.          Elseif Strana = 2 Then
  1025.             Strana2
  1026.          Elseif Strana = 3 Then
  1027.             Strana3
  1028.          Elseif Strana = 4 Then
  1029.             Strana4
  1030.          Elseif Strana = 5 Then
  1031.             Strana5
  1032.          Elseif Strana = 6 Then
  1033.             Strana6
  1034.          Elseif Strana = 7 Then
  1035.             Strana7
  1036.          End If
  1037.       End If
  1038.    End If
  1039.  
  1040.  
  1041. '' PO OPUSTENI NASTAVENI VYSTUPU SE ZDE ULOZI DATA
  1042.    If Uloz_data = 1 Then
  1043.       Uloz_data = 0 :
  1044.       Setfont Font8x8 : Lcdat 8 , 1 , "SAVE................         " , 1
  1045.       Disable Interrupts
  1046.       For Index = 1 To 16
  1047.          Outb_ee(index) = Outb(index) : Oute_ee(index) = Oute(index)
  1048.          Ramp_on_ee(index) = Ramp_on(index) : Ramp_off_ee(index) = Ramp_off(index)
  1049.       Next Index
  1050.       Enable Interrupts
  1051.       Waitms 150 : Cls_ : Set Refresh_bit
  1052.    End If
  1053.  
  1054.  
  1055.  
  1056.    If Ad_bit = 1 Then
  1057.       Ad_bit = 0 : Read_inputs
  1058.    End If
  1059. '' NASTAVENI VYSTUPU V NORMALNIM REZIMU, POKUD JSME V TESTOVACIM, OVLADAJI SE VYSTUPY TLACITKY !!!
  1060.    If Refresh_out = 1 Then
  1061.       Refresh_out = 0
  1062.       If Testovaci_rezim = 0 Then Send_outputs
  1063.  
  1064.       Send_pwm
  1065.    End If
  1066.  
  1067.    If Bit_time = 1 Then
  1068.       Bit_time = 0 : Obsluha_tlacitek
  1069.    End If
  1070.  
  1071.  
  1072. Loop
  1073.  
  1074. Sub Reset_vystupu
  1075. 'pomocne funkce
  1076.    Reset Hadice_nastavena
  1077. 'ciste vystupy
  1078.    Reset Vyveva_pwm
  1079.    Reset Vyveva_sani
  1080.    Reset Vystlak_cerpadlo                                   'vystlak  ecerpadlo spojka'
  1081.    Reset Vyveva_odvetrani
  1082.    Reset Ventil_kalova_1
  1083.    Reset Ventil_zac_kaly_2
  1084.    Reset Ventil_cista_2
  1085.    Reset Ventil_horni_kaly_3
  1086.    Reset Ventil_reg_hrib
  1087.    Reset Ventil_dn13
  1088.    Reset Ventil_dn25
  1089.    Reset Cis_hruby_filtr
  1090.    Reset Klapka_nap_cista
  1091.    Reset Klapka_nap_kalova
  1092.    Reset Klapka_ovldaci_pro_f
  1093.    Reset Soupe_dolni
  1094.    Reset Soupe_horni
  1095.    Reset Auto_stop
  1096.    'Reset Otacky_plus
  1097.    'Reset Otacky_minus
  1098. 'vystupy slave
  1099.    Reset Cyklon
  1100.    Reset Recykl_cerp_hrub_filtr
  1101.  
  1102.    Reset Recyklace_zobraz
  1103.    Reset Vystlak_cerp_zobraz
  1104.    Reset Vyveva_zobraz
  1105. End Sub
  1106.  
  1107.  
  1108. Sub Vyh_vystupu_vyveva
  1109.  
  1110.    '************************SPUSTENI VYVEVY*************************************
  1111.    If Vak_cerp_sani = 1 And Vak_cerp_vytlak = 0 Then        'And Akt_kalova < 90 Then
  1112.  
  1113.       Vyveva_sani = 1
  1114.       Vyveva_odvetrani = 0
  1115.       Vyveva_ok = 1
  1116.  
  1117.    Elseif Vak_cerp_vytlak = 1 And Vak_cerp_sani = 0 Then    'And Akt_kalova > 20 Then
  1118.  
  1119.       Vyveva_sani = 0
  1120.       Vyveva_odvetrani = 0
  1121.       Vyveva_ok = 1
  1122.  
  1123.    Elseif Vak_cerp_sani = 0 And Vak_cerp_vytlak = 0 Then
  1124.  
  1125.       Vyveva_odvetrani = 1
  1126.       Vyveva_sani = 1
  1127.       Vyveva_ok = 1
  1128.  
  1129.    Else
  1130.       Vyveva_ok = 0
  1131.  
  1132.  
  1133.    End If
  1134.  
  1135.    If Blokace_bimetal = 1 Or Teplota_vyveva = 1 Then
  1136.       Vyveva_prehrati = 0
  1137.    Elseif Blokace_bimetal = 0 Or Teplota_vyveva = 0 Then
  1138.       Vyveva_prehrati = 1
  1139.    End If
  1140.  
  1141.  
  1142.    If Vyveva_ok = 1 And Vyveva_prehrati = 0 Then
  1143.       If Zavodneni_radio = 1 Then
  1144.  
  1145.          Vyveva_pwm = Vak_cerp_on_off
  1146.          Vyveva_prepocet = Vyveva_prepocet_radio
  1147.          If Vak_cerp_on_off = 1 Then
  1148.             Set Vyveva_zobraz
  1149.          End If
  1150.  
  1151.  
  1152.       End If
  1153.  
  1154.  
  1155.  
  1156.       If Zavodneni_radio = 0 Then
  1157.  
  1158.  
  1159.  
  1160.  
  1161.          Vyveva_pwm = Vak_cerp_on_off
  1162.          If Vak_cerp_on_off = 1 Then
  1163.             Set Vyveva_zobraz
  1164.          End If
  1165.  
  1166.       End If
  1167.  
  1168.  
  1169.       If Teplota_oleje > 0 And Teplota_oleje < 21 And Zmena_tepl = 0 Then
  1170.          Zmena_tepl = 1
  1171.          Temp_min = 1400
  1172.          Temp_max = 1500
  1173.       Elseif Teplota_oleje > 20 And Teplota_oleje < 26 And Zmena_tepl = 0 Then
  1174.          Zmena_tepl = 1
  1175.          Temp_min = 1420
  1176.          Temp_max = 1530
  1177.       Elseif Teplota_oleje > 25 And Teplota_oleje < 31 And Zmena_tepl = 0 Then
  1178.          Zmena_tepl = 1
  1179.          Temp_min = 1440
  1180.          Temp_max = 1560
  1181.       Elseif Teplota_oleje > 30 And Teplota_oleje < 36 And Zmena_tepl = 0 Then
  1182.          Zmena_tepl = 1
  1183.          Temp_min = 1460
  1184.          Temp_max = 1590
  1185.       Elseif Teplota_oleje > 35 And Teplota_oleje < 41 And Zmena_tepl = 0 Then
  1186.          Zmena_tepl = 1
  1187.          Temp_min = 1480
  1188.          Temp_max = 1620
  1189.       Elseif Teplota_oleje > 40 And Teplota_oleje < 46 And Zmena_tepl = 0 Then
  1190.          Zmena_tepl = 1
  1191.          Temp_min = 1500
  1192.          Temp_max = 1650
  1193.       Elseif Teplota_oleje > 45 And Teplota_oleje < 51 And Zmena_tepl = 0 Then
  1194.          Zmena_tepl = 1
  1195.          Temp_min = 1530
  1196.          Temp_max = 1680
  1197.       Elseif Teplota_oleje > 50 And Teplota_oleje < 56 And Zmena_tepl = 0 Then
  1198.          Zmena_tepl = 1
  1199.          Temp_min = 1550
  1200.          Temp_max = 1710
  1201.       Elseif Teplota_oleje > 55 And Teplota_oleje < 61 And Zmena_tepl = 0 Then
  1202.          Zmena_tepl = 1
  1203.          Temp_min = 1600
  1204.          Temp_max = 1740
  1205.       Elseif Teplota_oleje > 60 And Teplota_oleje < 66 And Zmena_tepl = 0 Then
  1206.          Zmena_tepl = 1
  1207.          Temp_min = 1640
  1208.          Temp_max = 1770
  1209.       Elseif Teplota_oleje > 65 And Teplota_oleje < 71 And Zmena_tepl = 0 Then
  1210.          Zmena_tepl = 1
  1211.          Temp_min = 1680
  1212.          Temp_max = 1800
  1213.       End If
  1214.  
  1215.       If Zmena_tepl = 1 And Teplota_time = 0 Then
  1216.          Zmena_tepl = 0
  1217.          Set Teplota_time
  1218.          Outb(1) = Temp_min
  1219.          Oute(1) = Temp_max
  1220.       End If
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.       If Vyveva_pwm = 1 Then
  1230.       'If Automat = 1 And Tlak_vody_hrib > 15 Then
  1231.  
  1232.          Otacky_pozadovane_vyveva = Vykon_vyveva * 4
  1233.          Otacky_pozadovane_vyveva = Otacky_pozadovane_vyveva + 1000
  1234.  
  1235.          Rozdil_otacek = Otacky_pozadovane_vyveva - Otacky_vyveva
  1236.  
  1237.  
  1238.  
  1239.         'If Rozdil_otacek < 100 Then
  1240.         '    Otacky_vyveva_const = 300
  1241.         '    Cekani_vyveva_const = 150
  1242.         'Elseif Rozdil_otacek > 100 Then
  1243.         '    Otacky_vyveva_const = 600
  1244.         '    Cekani_vyveva_const = 100
  1245.         'End If
  1246.  
  1247.          If Cekej = 0 Then
  1248.  
  1249.             If Rozdil_otacek = 1000 Then
  1250.                Vyveva_automat = 2000
  1251.             End If
  1252.  
  1253.            ' If Rozdil_otacek < 300 Then Set Najeto
  1254.  
  1255.             'If Najeto = 1 Then
  1256.             If Rozdil_otacek > 100 And Rozdil_otacek < 201 Then
  1257.                Vyveva_automat = Vyveva_automat + 10
  1258.                If Vyveva_automat > 4095 Then Vyveva_automat = 4095
  1259.                Cekej = 1
  1260.             Elseif Rozdil_otacek > 200 Then
  1261.                Vyveva_automat = Vyveva_automat + 20
  1262.                If Vyveva_automat > 4095 Then Vyveva_automat = 4095
  1263.                Cekej = 1
  1264.  
  1265.             Elseif Rozdil_otacek < -100 And Rozdil_otacek > -201 Then
  1266.                Vyveva_automat = Vyveva_automat - 10
  1267.                If Vyveva_automat < 20 Then Vyveva_automat = 0
  1268.                Cekej = 1
  1269.             Elseif Rozdil_otacek < -200 Then
  1270.                Vyveva_automat = Vyveva_automat - 20
  1271.                If Vyveva_automat < 20 Then Vyveva_automat = 0
  1272.                Cekej = 1
  1273.             End If
  1274.             'End If
  1275.          End If
  1276.          'Vyveva_automat_posli = Vyveva_automat_posli + Vyveva_automat
  1277.       Elseif Vyveva_pwm = 0 Then
  1278.  
  1279.          Otacky_pozadovane_vyveva = 0
  1280.          Vyveva_automat = 0
  1281.          Rozdil_otacek = 0
  1282.          Cekej = 0
  1283.          Najeto = 0
  1284.       End If
  1285.  
  1286.  
  1287.  
  1288.    End If
  1289.  
  1290.    '************************OVLADANI SOUPAT*************************************
  1291.  
  1292.    Soupe_dolni = Vak_cerp_soupe_spodni
  1293.  
  1294.    Soupe_horni = Vak_cerp_soupe_horni
  1295.  
  1296.  
  1297.    If Vystlak_cerp_kohout_dn13 = 1 And Vystlak_cerp_kohout_dn25_32 = 0 Then
  1298.       Ventil_dn13 = 1
  1299.       Ventil_dn25 = 0
  1300.    Elseif Vystlak_cerp_kohout_dn13 = 0 And Vystlak_cerp_kohout_dn25_32 = 1 Then
  1301.       Ventil_dn13 = 0
  1302.       Ventil_dn25 = 1
  1303.    Elseif Vystlak_cerp_kohout_dn13 = 0 And Vystlak_cerp_kohout_dn25_32 = 0 Then
  1304.       Ventil_dn13 = 0
  1305.       Ventil_dn25 = 0
  1306.    End If
  1307.  
  1308. End Sub
  1309.  
  1310. Sub Vyh_vystupu_vystlak_cerpadlo
  1311.    '**************SPUSTENI VYSOKOTLAKEHO CERPADLA (CISTENI HADICI)*****************
  1312.    If Vystlak_cerp_tlak_on_off = 1 Then Ventil_reg_hrib = 1
  1313.  
  1314.  
  1315.    If Vystlak_cerp_kohout_dn13 = 1 And Vystlak_cerp_kohout_dn25_32 = 0 And Akt_cista > 20 And Recyklace_cist_hrub_filtr = 0 Then
  1316.  
  1317.       Hadice_nastavena = 1
  1318.  
  1319.    Elseif Vystlak_cerp_kohout_dn13 = 0 And Vystlak_cerp_kohout_dn25_32 = 1 And Akt_cista > 20 And Recyklace_cist_hrub_filtr = 0 Then
  1320.  
  1321.       Hadice_nastavena = 1
  1322.  
  1323.    'Elseif Vystlak_cerp_hadice_dn13 = 0 And Vystlak_cerp_hadice_dn25_32 = 1 And Akt_cista > 20 And Recyklace_cist_hrub_filtr = 0 Then
  1324.    '   Hadice_nastavena = 1
  1325.    'Elseif Vystlak_cerp_hadice_dn13 = 1 And Vystlak_cerp_hadice_dn25_32 = 0 And Akt_cista > 20 And Recyklace_cist_hrub_filtr = 0 Then
  1326.    '   Hadice_nastavena = 1
  1327.  
  1328.    End If
  1329.  
  1330.    If Akt_cista < 21 And Hys4 = 0 Then
  1331.       Vypni_cerp = 1
  1332.       Hys4 = 1
  1333.    End If
  1334.  
  1335.    If Hys4 = 1 And Akt_cista > 25 Then
  1336.       Vypni_cerp = 0
  1337.       Hys4 = 0
  1338.    End If
  1339.  
  1340.  
  1341.    If Vystlak_cerp_on_off = 1 And Hadice_nastavena = 1 And Vypni_cerp = 0 Then
  1342.  
  1343.       Vystlak_cerpadlo = 1
  1344.       Klapka_nap_cista = 1
  1345.       Set Vystlak_cerp_zobraz
  1346.    End If
  1347.  
  1348.    '
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.    If Vystlak_cerp_tlak_on_off = 1 And Klapka_nap_cista = 1 And Vypni_cerp = 0 Then
  1355.  
  1356.       Ventil_reg_hrib = 1
  1357.  
  1358.       '***************automaticky_rezim_tlak******************************************
  1359.       If Zavodneni_radio = 1 Then
  1360.          If Tlak_pozadovany_automat_radio > 1 Then
  1361.             Tlak_pozadovany_automat = Tlak_pozadovany_automat_radio
  1362.             Automat = 1
  1363.  
  1364.          Elseif Tlak_pozadovany_automat_radio < 1 Then
  1365.             Tlak_pozadovany_automat = 0
  1366.  
  1367.          End If
  1368.       End If
  1369.  
  1370.  
  1371.  
  1372.       If Automat = 1 And Tlak_vody_hrib > 15 Then
  1373.  
  1374.          Rozdil_tlaku = Tlak_pozadovany_automat - Tlak_vody_hrib
  1375.  
  1376.          If Rozdil_tlaku < 10 Then
  1377.             Otacky_const = 300
  1378.             Cekani_const = 150
  1379.             Otacky_const_minus = 300
  1380.          Elseif Rozdil_tlaku > 10 Then
  1381.             Otacky_const = 600
  1382.             Cekani_const = 100
  1383.             Otacky_const_minus = 1200
  1384.          End If
  1385.  
  1386.          If Rozdil_tlaku > 5 And Men_otacky = 0 Then
  1387.             Set Otacky_pridej
  1388.  
  1389.  
  1390.          Elseif Rozdil_tlaku < -5 And Men_otacky = 0 Then
  1391.             Set Otacky_uber
  1392.  
  1393.          Else
  1394.             Reset Otacky_pridej
  1395.             Reset Otacky_uber
  1396.          End If
  1397.  
  1398.  
  1399.          If Otacky_pridej = 1 And Zmena_otacek_time < Otacky_const Then       ' pridej otacky
  1400.  
  1401.             Otacky_plus = 1
  1402.          End If
  1403.  
  1404.          If Otacky_uber = 1 And Zmena_otacek_time < Otacky_const_minus Then
  1405.  
  1406.             Otacky_minus = 1
  1407.          End If
  1408.  
  1409.          If Zmena_otacek_time > Otacky_const Then
  1410.             Otacky_plus = 0
  1411.             Otacky_minus = 0
  1412.             Reset Otacky_uber
  1413.             Reset Otacky_pridej
  1414.             Zmena_otacek_time = 0
  1415.             Cteni_otacek_time = 1
  1416.             Men_otacky = 1
  1417.          End If
  1418.  
  1419.          If Cteni_otacek_time > Cekani_const Then
  1420.             Men_otacky = 0
  1421.             Cteni_otacek_time = 0
  1422.          End If
  1423.       Elseif Automat = 0 Then
  1424.          Reset Otacky_uber
  1425.          Reset Otacky_pridej
  1426.       End If
  1427.  
  1428.    End If
  1429.  
  1430. End Sub
  1431.    'Zavodneni_90s
  1432. Sub Vyh_vystupu_recyklace
  1433.    If Recyklace_upr_vody = 1 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 0 And Zavodneni_90s = 0 Then
  1434.       Recyklace_funkce = 0
  1435.    Elseif Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 1 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 0 And Zavodneni_90s = 0 Then
  1436.       Recyklace_funkce = 0
  1437.    Elseif Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 1 And Recyklace_odcerp_kal = 0 And Zavodneni_90s = 0 Then
  1438.       Recyklace_funkce = 0
  1439.    Elseif Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 1 And Zavodneni_90s = 0 Then
  1440.       Recyklace_funkce = 0
  1441.    Elseif Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 0 And Zavodneni_90s = 1 Then
  1442.       Recyklace_funkce = 0
  1443.    Else
  1444.       Recyklace_funkce = 1
  1445.    End If
  1446.  
  1447.    If Zavodneni_90s = 1 And Recyklace_funkce = 0 And Akt_cista < 95 Then
  1448.  
  1449.  
  1450.  
  1451.       Set Ventil_zac_kaly_2                                 ' kalovy ventil za cerpadlem   cerpadlo--->VENTIL--->cyklon
  1452.       Set Ventil_cista_2                                    ' horni klapka pro odvod ciste vody z cyklonu do ciste nadrze
  1453.       Set Ventil_horni_kaly_3                               ' horni klapka pro odvod kalove vody z cyklonu do kalove nadrze
  1454.       Set Cyklon                                            ' spusteni cyklonu
  1455.       Set Klapka_nap_cista                                  ' otevreni napousteci klapky pro cistou nadrz ("odvzdusneni")
  1456.    End If
  1457.  
  1458.  
  1459.  
  1460.  '*****************SPUSTENI RECYKLACE ******************************************
  1461.  ''''''''''''''''''''''''''''''''''''''''''''''''''''And Vypni_recykl = 0
  1462.    If Recyklace_upr_vody = 1 And Recyklace_funkce = 0 And Akt_cista < 72 Then
  1463.  
  1464.       'If Recyklace_1sec = 1 Then
  1465.       Set Ventil_kalova_1
  1466.       'Elseif Recyklace_1sec = 2 Then
  1467.       Set Ventil_zac_kaly_2
  1468.       'Elseif Recyklace_1sec = 3 Then
  1469.       Set Ventil_cista_2
  1470.       'Elseif Recyklace_1sec = 4 Then
  1471.       Set Ventil_horni_kaly_3
  1472.       'Elseif Recyklace_1sec = 5 Then
  1473.       If Set_cerp = 1 Then
  1474.          Set Recykl_cerp_hrub_filtr
  1475.       'Elseif Recyklace_1sec = 6 Then
  1476.       End If
  1477.       If Set_cyklon = 1 Then
  1478.          Set Cyklon
  1479.          Recyklace_time_znovuspust = 1000
  1480.       End If
  1481.  
  1482.       'Set Klapka_ovldaci_pro_f
  1483.       'End If
  1484.  
  1485.       Set Recyklace_zobraz
  1486.       Set Klapka_nap_cista
  1487.    End If
  1488.  
  1489.  
  1490.  
  1491.  
  1492.    If Akt_cista > 70 And Hys2 = 0 Then
  1493.       Hys1 = 1
  1494.       Set Start_hystereze
  1495.    End If
  1496.  
  1497.    If Hys1 = 1 And Akt_cista > 90 Then
  1498.       Hys2 = 1
  1499.       Hys1 = 0
  1500.       Reset Start_hystereze
  1501.    End If
  1502.  
  1503.    If Hys2 = 1 And Akt_cista < 75 Then
  1504.       Hys2 = 0
  1505.       Recyklace_time_znovuspust = 0
  1506.       Reset Set_cerp
  1507.       Reset Set_cyklon
  1508.    End If
  1509.  
  1510. '(
  1511.    If Akt_cista < 21 And Hys3 = 0 Then
  1512.    Vypni = 1
  1513.    Hys3 = 1
  1514.    End If
  1515.  
  1516.    If Hys3 = 1 And Akt_cista > 25 Then
  1517.    Vypni = 0
  1518.    Hys3 = 0
  1519.    End If
  1520. ')
  1521.  
  1522.    '(
  1523.    If Akt_cista < 21 And Hys4 = 0 Then
  1524.    Hys3 = 1
  1525.    Set Hystereze_spodni
  1526.    End If
  1527.  
  1528.    If Hys3 = 1 And Akt_cista > 25 Then
  1529.    Hys3 = 0
  1530.    Reset Hystereze_spodni
  1531.    Hys4 = 1
  1532.    End If
  1533.  
  1534.    If Akt_cista > 30 Then
  1535.    Hys4 = 0
  1536.    End If
  1537. ')
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.   ''''''''''''''''''''''''''''''''''''''''''''''''''''And Akt_kalova > 20''''''''''''
  1544.    If Recyklace_upr_vody = 1 And Recyklace_funkce = 0 And Start_hystereze = 1 Then
  1545.  
  1546.       'If Recyklace_1sec = 1 Then
  1547.       Set Ventil_kalova_1
  1548.       'Elseif Recyklace_1sec = 2 Then
  1549.       Set Ventil_zac_kaly_2
  1550.       'Elseif Recyklace_1sec = 3 Then
  1551.       Set Ventil_cista_2
  1552.       'Elseif Recyklace_1sec = 4 Then
  1553.       Set Ventil_horni_kaly_3
  1554.       'Elseif Recyklace_1sec = 5 Then
  1555.       If Set_cerp = 1 Then
  1556.          Set Recykl_cerp_hrub_filtr
  1557.       'Elseif Recyklace_1sec = 6 Then
  1558.       End If
  1559.       If Set_cyklon = 1 Then
  1560.          Set Cyklon
  1561.          Recyklace_time_znovuspust = 1000
  1562.       End If
  1563.       'End If
  1564.       'Set Klapka_ovldaci_pro_f
  1565.       Set Klapka_nap_cista
  1566.       Set Recyklace_zobraz
  1567.  
  1568.    End If
  1569.  
  1570.    '**************SPUSTENI CISTENI_CYKLONU NA 10s*******************************
  1571.  
  1572.    If Recyklace_cist_cyklon = 0 And Cisteni_cyklonu_time = 20 Then
  1573.  
  1574.       Cisteni_cyklonu_time = 0
  1575.  
  1576.    End If
  1577.  
  1578.    If Recyklace_cist_cyklon = 1 And Recyklace_funkce = 0 And Cisteni_cyklonu_time < 10 Then
  1579.  
  1580.       Set Cyklon
  1581.       Set Ventil_horni_kaly_3
  1582.       Set Klapka_ovldaci_pro_f
  1583.  
  1584.    Elseif Recyklace_cist_cyklon = 0 Then
  1585.  
  1586.       Cisteni_cyklonu_time = 0
  1587.  
  1588.    Elseif Cisteni_cyklonu_time > 10 Then
  1589.  
  1590.       Reset_vystupu
  1591.  
  1592.    End If
  1593.  
  1594.  
  1595.    '****************CISTENI HRUBEHO FILTRU**************************************
  1596.  
  1597.    If Akt_cista < 21 And Hys3 = 0 Then
  1598.       Vypni = 1
  1599.       Hys3 = 1
  1600.    End If
  1601.  
  1602.    If Hys3 = 1 And Akt_cista > 25 Then
  1603.       Vypni = 0
  1604.       Hys3 = 0
  1605.    End If
  1606.  
  1607.  
  1608.    If Recyklace_cist_hrub_filtr = 1 And Recyklace_funkce = 0 And Akt_cista > 20 And Akt_kalova < 90 And Vypni = 0 Then
  1609.  
  1610.       If Otacky_motoru < 85 Then
  1611.  
  1612.          Reset Vystlak_cerp_tlak_on_off
  1613.  
  1614.          If Cist_hrub_filtru_time > 500 Then
  1615.  
  1616.             Cist_hrub_filtru_time = 600
  1617.             Vystlak_cerpadlo = 1
  1618.             Ventil_reg_hrib = 1
  1619.             Set Vystlak_cerp_zobraz
  1620.             Recykl_cerp_hrub_filtr = 1
  1621.  
  1622.          End If
  1623.          Set Klapka_nap_cista
  1624.          Ventil_horni_kaly_3 = 1
  1625.          Klapka_ovldaci_pro_f = 1
  1626.          Cis_hruby_filtr = 1
  1627.          Reset Ventil_cista_2
  1628.          'Set Ventil_zac_kaly_2
  1629.          'Set Ventil_kalova_1
  1630.  
  1631.       End If
  1632.  
  1633.       If Otacky_motoru > 80 Then
  1634.  
  1635.          Otacky_minus = 1
  1636.  
  1637.       End If
  1638.  
  1639.    Elseif Recyklace_cist_hrub_filtr = 0 Or Vypni = 1 Then
  1640.  
  1641.       Cist_hrub_filtru_time = 0
  1642.  
  1643.    End If
  1644.  
  1645.    '*****************ODCERPANI KALOVE VODY**************************************
  1646.  
  1647.    If Recyklace_odcerp_kal = 1 And Recyklace_funkce = 0 And Akt_kalova > 5 Then
  1648.  
  1649.       Set Recykl_cerp_hrub_filtr
  1650.       Set Ventil_kalova_1
  1651.    End If
  1652.  
  1653. End Sub
  1654.  
  1655. Sub Vyh_vystupu_doplnkove_funkce
  1656.  
  1657. End Sub
  1658.  
  1659.  
  1660.  
  1661. Sub Init_pca9685
  1662.  
  1663. '(
  1664.    / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
  1665.    /* Init code for the PCA9685                */
  1666.    /* Input:[address of the pc9685 to init]    */
  1667.    /* Output:[void]                            */
  1668.    /********************************************/
  1669. ')
  1670.    I2cstart                                                 '' Start
  1671.    I2cwbyte &B10000000                                      '' Slave address
  1672.    I2cwbyte &B00000000                                      '' Mode 1 address
  1673.    I2cwbyte &B00110001                                      '' Setting mode to sleep so we can change teh default PWM frequency
  1674.    I2cstop                                                  '' Stop
  1675.    Waitms 1                                                 '' Required 50 us delay
  1676.    I2cstart                                                 '' Start
  1677.    I2cwbyte &B10000000                                      '' Slave address
  1678.    I2cwbyte &HFE                                            '' PWM frequency PRE_SCALE address
  1679.    I2cwbyte 50                                              '' osc_clk/(4096*update_rate) '' 25000000/(4096*1500)= 4.069 ~4
  1680.    I2cstop                                                  '' Stop
  1681.    Waitms 1                                                 '' delay at least 500 us
  1682.    I2cstart                                                 '' Start
  1683.    I2cwbyte &B10000000                                      '' Slave address
  1684.    I2cwbyte &B00000000                                      '' Mode 1 register address
  1685.    I2cwbyte &HA1                                            '' Set to our prefered mode[ Reset, INT_CLK, Auto-Increment, Normal Mode]
  1686.    I2cstop                                                  '' Stop
  1687.    Waitms 1                                                 '' delay at least 500 us
  1688.    I2cstart                                                 '' Start
  1689.    I2cwbyte &B10000000                                      '' Slave Address
  1690.    I2cwbyte &B00000001                                      '' Mode2 register address
  1691.    I2cwbyte &B00000100                                      '' Set to our prefered mode[Output logic state not inverted, Outputs change on STOP,
  1692.    I2cstop                                                  '' totem pole structure, When OE = 1 (output drivers not enabled), LEDn = 0]
  1693.    Waitms 1
  1694.     '' all led off
  1695.    I2cstart
  1696.    I2cwbyte &B10000000
  1697.    I2cwbyte &HFC                                            '' Allled Off Regiter
  1698.    I2cwbyte &B00000000                                      ''data
  1699.    I2cwbyte &B00010000                                      '' ; / / Data
  1700.    I2cstop
  1701.  
  1702.  
  1703. End Sub
  1704.  
  1705.  
  1706. Sub Obsluha_tlacitek
  1707.    If Tl_ok = 0 And Tim_tl_ok < 1000 Then Incr Tim_tl_ok
  1708.    If Tl_ok = 1 Then Tim_tl_ok = 0
  1709.    If Tl_up = 0 And Tim_tl_up < 1000 Then Incr Tim_tl_up
  1710.    If Tl_up = 1 Then Tim_tl_up = 0
  1711.    If Tl_down = 0 And Tim_tl_down < 1000 Then Incr Tim_tl_down
  1712.    If Tl_down = 1 Then Tim_tl_down = 0
  1713.  
  1714.  
  1715.    If Menu_bit = 1 And Menu_pos > 0 And Menu_pos < 17 Then
  1716.    '' NASTAVOVANI PARAMETRU VYSTUPU
  1717.       Tlacitka_menu1
  1718.  
  1719.  
  1720.        'NASLEDUJE UZ NOVA FORMA REAKCE TLACITEK PRO ZMENU PWM, NEBO RAMP...
  1721.       Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1722.       If Set_pos = 0 Then
  1723.          If Tim_tl_up = 20 Then
  1724.             Incr Menu_pos
  1725.             If Menu_pos = 18 Then Menu_pos = 1
  1726.             Set Refresh_bit
  1727.          Elseif Tim_tl_down = 20 Then
  1728.             Decr Menu_pos
  1729.             If Menu_pos = 0 Then Menu_pos = 17
  1730.             Set Refresh_bit
  1731.          End If
  1732. '(
  1733. ''cislo 375 = 1 sekunda
  1734.          Const Reakce_tlacitka = 20                                  ''prodleva po jake se vyhodnoti, ze tlacitko je stlaceno - nabezna hrana
  1735.          Const Opakovana_reakce_tlacitka = 200                       '' doba podrzeni tlacitka, od ktere se hodnota " rozbehne "
  1736.          Const Rychlost_pridavku_pwm = 20                            ''cislo jak rychly bude pridavek
  1737.          Const Rychlost_pridavku_ram = 20                            ''cislo jak rychly bude pridavek
  1738.          Const Pridavek_pwm = 4                             '' o kolik se zmeni hodnota pri podrzeni tlacitka
  1739.          Const Pridavek_ram = 4
  1740. ')
  1741.       Elseif Set_pos = 1 Then
  1742.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1743.             If Outb(menu_pos) < 4096 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Outb(menu_pos)       ''po prvnim stisknuti
  1744.             If Outb(menu_pos) < 4096 And Tim_tl_up = Opakovana_reakce_tlacitka Then Outb(menu_pos) = Outb(menu_pos) + Pridavek_pwm       ''po podrzeni tlacitka
  1745.             If Tim_tl_up = Opakovana_reakce_tlacitka Then Tim_tl_up = Opakovana_reakce_tlacitka - Rychlost_pridavku_pwm       ''pokud je tlacitko drzeno, vraci se hodnota trochu nazpet...
  1746.             ''minimalni rozmezi (interva) max - minimum je 260. Pokud je tento interval mensi, automaticky se hranice koriguji
  1747.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1748.             While Pomw4 < 261                               '' korekce nastaveni dokud neni hranice minimalne 261, protoze pridavek muze rozdil libovolne vychylit
  1749.                Decr Outb(menu_pos)
  1750.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)      ''kontrolni odecet
  1751.             Wend
  1752.             Set Refresh_bit
  1753.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1754.             If Outb(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Outb(menu_pos)
  1755.             If Outb(menu_pos) > 0 And Tim_tl_down = Opakovana_reakce_tlacitka Then Outb(menu_pos) = Outb(menu_pos) - Pridavek_pwm
  1756.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_pwm
  1757.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1758.             While Pomw4 < 261 Or Outb(menu_pos) < 0
  1759.                Incr Outb(menu_pos)
  1760.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1761.             Wend
  1762.             Set Refresh_bit
  1763.          End If
  1764.       Elseif Set_pos = 2 Then
  1765.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1766.             If Oute(menu_pos) < 4096 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Oute(menu_pos)
  1767.             If Oute(menu_pos) < 4096 And Tim_tl_up = Opakovana_reakce_tlacitka Then Oute(menu_pos) = Oute(menu_pos) + Pridavek_pwm
  1768.             If Tim_tl_up = Opakovana_reakce_tlacitka Then Tim_tl_up = Opakovana_reakce_tlacitka - Rychlost_pridavku_pwm
  1769.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1770.             While Pomw4 < 261
  1771.                Decr Oute(menu_pos)
  1772.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1773.             Wend
  1774.             Set Refresh_bit
  1775.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1776.             If Oute(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Oute(menu_pos)
  1777.             If Oute(menu_pos) > 0 And Tim_tl_down = Opakovana_reakce_tlacitka Then Oute(menu_pos) = Oute(menu_pos) - Pridavek_pwm
  1778.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_pwm
  1779.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1780.             While Pomw4 < 261 Or Oute(menu_pos) < 0
  1781.                Incr Oute(menu_pos)
  1782.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1783.             Wend
  1784.             Set Refresh_bit
  1785.          End If
  1786.       Elseif Set_pos = 3 Then
  1787.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1788.             If Ramp_on(menu_pos) < 1000 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Ramp_on(menu_pos)
  1789.             If Ramp_on(menu_pos) < 1000 And Tim_tl_up = Opakovana_reakce_tlacitka Then Ramp_on(menu_pos) = Ramp_on(menu_pos) + Pridavek_ram
  1790.             If Tim_tl_up = Opakovana_reakce_tlacitka Then Tim_tl_up = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1791.             Set Refresh_bit
  1792.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1793.             If Ramp_on(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Ramp_on(menu_pos)
  1794.             If Ramp_on(menu_pos) > 5 And Tim_tl_down = Opakovana_reakce_tlacitka Then Ramp_on(menu_pos) = Ramp_on(menu_pos) - Pridavek_ram
  1795.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1796.             Set Refresh_bit
  1797.          End If
  1798.       Elseif Set_pos = 4 Then
  1799.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1800.             If Ramp_off(menu_pos) < 1000 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Ramp_off(menu_pos)
  1801.             If Ramp_off(menu_pos) < 1000 And Tim_tl_up = Opakovana_reakce_tlacitka Then Ramp_off(menu_pos) = Ramp_off(menu_pos) + Pridavek_ram
  1802.             If Tim_tl_up = Opakovana_reakce_tlacitka Then Tim_tl_up = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1803.             Set Refresh_bit
  1804.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1805.             If Ramp_off(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Ramp_off(menu_pos)
  1806.             If Ramp_off(menu_pos) > 5 And Tim_tl_down = Opakovana_reakce_tlacitka Then Ramp_off(menu_pos) = Ramp_off(menu_pos) - Pridavek_ram
  1807.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1808.             Set Refresh_bit
  1809.          End If
  1810.  
  1811.       End If
  1812.  
  1813.       If Tim_tl_ok = Reakce_tlacitka Then
  1814.          Incr Set_pos : Set Refresh_bit
  1815.       End If
  1816.       If Set_pos > 4 Then Set_pos = 0
  1817.  
  1818.  
  1819.  
  1820.  
  1821.       '(
  1822.       If Tim_tl_ok = 20 Then
  1823.       Incr Set_pos
  1824.       If Set_pos > 4 Then Set_pos = 0
  1825.       End If
  1826. ')
  1827.    Elseif Menu_bit = 1 And Menu_pos = 17 Then
  1828.       Tlacitka_menu1
  1829.       ''VYSKAKOVACI OBRAZOVKA
  1830.       If Tim_tl_ok = 20 Then
  1831.          Reset Menu_bit : Set Refresh_bit
  1832.          ''ulozeni zmenenych dat
  1833.          Set Uloz_data
  1834.       End If
  1835.    Elseif Menu_bit = 1 And Menu_pos >= 20 And Menu_pos < 32 Then
  1836.       '' SEVISNI A TESTOVACI FUNKCE
  1837.       '' TLACITKO OK - ROTOVANI PRES VYSTUPY
  1838.       If Tim_tl_ok = 20 Then
  1839.          Tim_tl_ok = 21                                     '' JASNE, PROTOZE SE TU PROCHAZELO DVAKRAT I VICKRAT :O)
  1840.          Incr Menu_pos
  1841.          If Menu_pos = 31 Then Menu_pos = 20
  1842.          Set Refresh_bit
  1843.       End If
  1844.       If Menu_pos = 20 Then
  1845.          If Tim_tl_up > 20 Then Pwm_driver(1) = 4092        '' OUT5 / VENTIL KALOVA VYSTUP
  1846.          If Tim_tl_up < 20 Then Pwm_driver(1) = 0           '' OUT5 / VENTIL KALOVA VYSTUP
  1847.          If Tim_tl_down > 20 Then Pwm_driver(2) = 4092      '' OUT6 / VENTIL ZA CERPADLEM KALY
  1848.          If Tim_tl_down < 20 Then Pwm_driver(2) = 0         '' OUT6 / VENTIL ZA CERPADLEM KALY
  1849.       Elseif Menu_pos = 21 Then
  1850.          If Tim_tl_up > 20 Then Pwm_driver(3) = 4092
  1851.          If Tim_tl_up < 20 Then Pwm_driver(3) = 0
  1852.          If Tim_tl_down > 20 Then Pwm_driver(4) = 4092
  1853.          If Tim_tl_down < 20 Then Pwm_driver(4) = 0
  1854.       Elseif Menu_pos = 22 Then
  1855.          If Tim_tl_up > 20 Then Pwm_driver(5) = 4092
  1856.          If Tim_tl_up < 20 Then Pwm_driver(5) = 0
  1857.          If Tim_tl_down > 20 Then Pwm_driver(6) = 4092
  1858.          If Tim_tl_down < 20 Then Pwm_driver(6) = 0
  1859.       Elseif Menu_pos = 23 Then
  1860.          If Tim_tl_up > 20 Then Pwm_driver(7) = 4092
  1861.          If Tim_tl_up < 20 Then Pwm_driver(7) = 0
  1862.          If Tim_tl_down > 20 Then Pwm_driver(8) = 4092
  1863.          If Tim_tl_down < 20 Then Pwm_driver(8) = 0
  1864.       Elseif Menu_pos = 24 Then
  1865.          If Tim_tl_up > 20 Then Pwm_driver(9) = 4092
  1866.          If Tim_tl_up < 20 Then Pwm_driver(9) = 0
  1867.          If Tim_tl_down > 20 Then Pwm_driver(10) = 4092
  1868.          If Tim_tl_down < 20 Then Pwm_driver(10) = 0
  1869.       Elseif Menu_pos = 25 Then
  1870.          If Tim_tl_up > 20 Then Pwm_driver(11) = 4092
  1871.          If Tim_tl_up < 20 Then Pwm_driver(11) = 0
  1872.          If Tim_tl_down > 20 Then Pwm_driver(12) = 4092
  1873.          If Tim_tl_down < 20 Then Pwm_driver(12) = 0
  1874.       Elseif Menu_pos = 26 Then
  1875.          If Tim_tl_up > 20 Then Pwm_driver(13) = 4092
  1876.          If Tim_tl_up < 20 Then Pwm_driver(13) = 0
  1877.          If Tim_tl_down > 20 Then Pwm_driver(14) = 4092
  1878.          If Tim_tl_down < 20 Then Pwm_driver(14) = 0
  1879.       Elseif Menu_pos = 27 Then
  1880.          If Tim_tl_up > 20 Then Pwm_driver(15) = 4092
  1881.          If Tim_tl_up < 20 Then Pwm_driver(15) = 0
  1882.          If Tim_tl_down > 20 Then Pwm_driver(16) = 4092
  1883.          If Tim_tl_down < 20 Then Pwm_driver(16) = 0
  1884.       Elseif Menu_pos = 28 Then
  1885.          If Tim_tl_up > 20 Then Out17 = 1
  1886.          If Tim_tl_up < 20 Then Out17 = 0
  1887.          If Tim_tl_down > 20 Then Out18 = 1
  1888.          If Tim_tl_down < 20 Then Out18 = 0
  1889.       Elseif Menu_pos = 29 Then
  1890.          If Tim_tl_up > 20 Then Out19 = 1
  1891.          If Tim_tl_up < 20 Then Out19 = 0
  1892.          If Tim_tl_down > 20 Then Out20 = 1
  1893.          If Tim_tl_down < 20 Then Out20 = 0
  1894.       Elseif Menu_pos = 30 Then
  1895.          If Tim_tl_up = 20 Then
  1896.             Tim_tl_up = 21
  1897.             Set Refresh_bit : Testovaci_rezim = 0 : Reset Menu_bit
  1898.          End If
  1899.       End If
  1900.  
  1901.  
  1902.    Elseif Menu_bit = 1 And Menu_pos = 40 Then
  1903.       '' NASTAVOVANI CIDEL HLADIN
  1904.       '' TLACITKO "-" - ROTOVANI PRES RADKY
  1905.  
  1906.       If Tim_tl_down = 20 Then
  1907.          Tim_tl_down = 21                                   '' JASNE, PROTOZE SE TU PROCHAZELO DVAKRAT I VICKRAT :O)
  1908.          Incr Set_pos
  1909.          If Set_pos = 1 Then Set_pos = 2
  1910.          If Set_pos = 4 Then Set_pos = 5
  1911.          If Set_pos = 8 Then Set_pos = 2
  1912.  
  1913.          Set Refresh_bit
  1914.       End If
  1915.       If Set_pos = 2 Then
  1916.          If Tim_tl_ok = 20 Then
  1917.             Cista_min = Hladina_vody
  1918.             Disable Interrupts
  1919.             Minimum_ee = Cista_min
  1920.             Enable Interrupts
  1921.             Waitms 100
  1922.             Set_pos = 3
  1923.          End If
  1924.       Elseif Set_pos = 3 Then
  1925.          If Tim_tl_ok = 20 Then
  1926.             Cista_max = Hladina_vody
  1927.             Disable Interrupts
  1928.             Maximum_ee = Cista_max
  1929.             Enable Interrupts
  1930.             Waitms 100
  1931.             Set_pos = 5
  1932.          End If
  1933.       Elseif Set_pos = 5 Then
  1934.          If Tim_tl_ok = 20 Then
  1935.             Kalova_min = Hladina_kalove_vody
  1936.             Disable Interrupts
  1937.             Minimum_kalova_ee = Kalova_min
  1938.             Enable Interrupts
  1939.             Waitms 100
  1940.             Set_pos = 6
  1941.          End If
  1942.       Elseif Set_pos = 6 Then
  1943.          If Tim_tl_ok = 20 Then
  1944.             Kalova_max = Hladina_kalove_vody
  1945.             Disable Interrupts
  1946.             Maximum_kalova_ee = Kalova_max
  1947.             Enable Interrupts
  1948.             Waitms 100
  1949.             Set_pos = 7
  1950.          End If
  1951.       Elseif Set_pos = 7 Then
  1952.          If Tim_tl_ok = 20 Then
  1953.             Set Refresh_bit : Testovaci_rezim = 0 : Reset Menu_bit
  1954.  
  1955.          End If
  1956.  
  1957.  
  1958.       End If
  1959.  
  1960.    Elseif Menu_bit = 1 And Menu_pos = 50 Then
  1961.       '' NASTAVOVANI CIDEL HLADIN
  1962.       '' TLACITKO "-" - ROTOVANI PRES RADKY
  1963.  
  1964.       If Tim_tl_down = 20 Then
  1965.          Tim_tl_down = 21                                   '' JASNE, PROTOZE SE TU PROCHAZELO DVAKRAT I VICKRAT :O)
  1966.          Incr Set_pos
  1967.          If Set_pos = 1 Then Set_pos = 3
  1968.          If Set_pos = 6 Then Set_pos = 7
  1969.          If Set_pos = 8 Then Set_pos = 3
  1970.          Set Refresh_bit
  1971.       End If
  1972.  
  1973.       If Set_pos = 3 Then
  1974.          If Tim_tl_ok = 20 Then
  1975.             Toggle Blokace_cista
  1976.  
  1977.          End If
  1978.       Elseif Set_pos = 4 Then
  1979.          If Tim_tl_ok = 20 Then
  1980.             Toggle Blokace_kalova
  1981.  
  1982.          End If
  1983.       Elseif Set_pos = 5 Then
  1984.          If Tim_tl_ok = 20 Then
  1985.             Toggle Blokace_bimetal
  1986.  
  1987.          End If
  1988.       Elseif Set_pos = 7 Then
  1989.          If Tim_tl_ok = 20 Then
  1990.  
  1991.             Set Refresh_bit : Testovaci_rezim = 0 : Reset Menu_bit
  1992.  
  1993.          End If
  1994.  
  1995.  
  1996.       End If
  1997.  
  1998.    Elseif Menu_bit = 0 Then
  1999.       If Tim_tl_up = 20 Then
  2000.          Incr Strana
  2001.          If Strana > 7 Then Strana = 1
  2002.          Set Refresh_bit
  2003.       Elseif Tim_tl_down = 20 Then
  2004.          Decr Strana
  2005.          If Strana = 0 Then Strana = 7
  2006.          Set Refresh_bit
  2007.       End If
  2008.  
  2009.       If Tim_tl_ok = 20 Then
  2010.          Tim_tl_ok = 21
  2011.          If Strana = 1 Then
  2012.          Elseif Strana = 2 Then
  2013.          Elseif Strana = 3 Then
  2014.          Elseif Strana = 4 Then
  2015.             Menu_pos = 1 : Set Menu_bit : Set_pos = 0 : Set Refresh_bit
  2016.          Elseif Strana = 5 Then
  2017.             Menu_pos = 40 : Set Menu_bit : Set_pos = 0 : Set Refresh_bit
  2018.  
  2019.          Elseif Strana = 6 Then
  2020.             Menu_pos = 20 : Set Menu_bit : Set_pos = 0 : Set Refresh_bit : Set Testovaci_rezim
  2021.                   '' PRECHOD DO TESTOVACIHO REZIMU MUSI VYPNOUT VYSTUPY
  2022.             For I = 1 To 17
  2023.                Pwm_driver(i) = 0
  2024.             Next I
  2025.          Elseif Strana = 7 Then
  2026.             Menu_pos = 50 : Set Menu_bit : Set_pos = 0 : Set Refresh_bit
  2027.          End If
  2028.       End If
  2029.    End If
  2030. End Sub
  2031.  
  2032. Sub Read_inputs
  2033.    Ain_(1) = Getadc(0)
  2034.    Ain_(2) = Getadc(1)
  2035.    Ain_(3) = Getadc(2)
  2036.    Ain_(4) = Getadc(3)
  2037.    Ain_(5) = Getadc(4)
  2038.    Ain_(6) = Getadc(5)
  2039.    Ain_(7) = Getadc(6)
  2040.    Ain_(8) = Getadc(7)
  2041.  
  2042.  
  2043. 'vzorky se pridaji postupne do pole promennych (max. 20 vzorku)
  2044.    Incr I2
  2045.    Pom_ain1(i2) = Ain_(1) : Pom_ain2(i2) = Ain_(2) : Pom_ain3(i2) = Ain_(3) : Pom_ain4(i2) = Ain_(4) : Pom_ain5(i2) = Ain_(5) : Pom_ain6(i2) = Ain_(6) : Pom_ain7(i2) = Ain_(7) : Pom_ain8(i2) = Ain_(8)
  2046.  
  2047. 'jednotliva pole nabranych vzorku se sectou a vydeli poctem vzorku
  2048.    If Pocet_vzorku > 20 Then Pocet_vzorku = 20
  2049.    Pom_ain1(21) = 0 : Pom_ain2(21) = 0 : Pom_ain3(21) = 0 : Pom_ain4(21) = 0 : Pom_ain5(21) = 0 : Pom_ain6(21) = 0 : Pom_ain7(21) = 0 : Pom_ain8(21) = 0 :
  2050.    For I3 = 1 To Pocet_vzorku
  2051.       Pom_ain1(21) = Pom_ain1(21) + Pom_ain1(i3)
  2052.       Pom_ain2(21) = Pom_ain2(21) + Pom_ain2(i3)
  2053.       Pom_ain3(21) = Pom_ain3(21) + Pom_ain3(i3)
  2054.       Pom_ain4(21) = Pom_ain4(21) + Pom_ain4(i3)
  2055.       Pom_ain5(21) = Pom_ain5(21) + Pom_ain5(i3)
  2056.       Pom_ain6(21) = Pom_ain6(21) + Pom_ain6(i3)
  2057.       Pom_ain7(21) = Pom_ain7(21) + Pom_ain7(i3)
  2058.       Pom_ain8(21) = Pom_ain8(21) + Pom_ain8(i3)
  2059.    Next
  2060. 'vypocet skutecne hodnoty zprumerovanim pole vzorku, vystup je cislo 0 - 1023
  2061.    If I2 = Pocet_vzorku Then
  2062.  
  2063.       I2 = 0
  2064.  
  2065.  
  2066. '***tlak_oleje_vyveva S2***proudovy
  2067. 'maximum 400baru, minimum 0
  2068. 'maximum 818, minimum 164
  2069. '654/400
  2070.  
  2071.       Pom_single = Pom_ain2(21) / Pocet_vzorku
  2072.       Prevodnik(2) = Pom_single
  2073.       Pom_single = Pom_single - 164
  2074.  
  2075.       Tlak_oleje_vyveva = Pom_single / 1.635
  2076.       If Tlak_oleje_vyveva > 10000 Then Tlak_oleje_vyveva = 0
  2077.       If Tlak_oleje_vyveva < 0 Then Tlak_oleje_vyveva = 0
  2078.       Pom_byte = Tlak_oleje_vyveva / 10
  2079.       Call Prepocet_bytu(pom_byte , 1)
  2080.  
  2081.       If Teplota_vyveva = 1 Then
  2082.          Call Prepocet_bytu(0 , 2)
  2083.       Elseif Teplota_vyveva = 0 Then
  2084.          Call Prepocet_bytu(1 , 2)
  2085.       End If
  2086. '***teplota_vyveva_bimetal S3***napetovy
  2087. '(
  2088.       Pom_single = Pom_ain3(21) / Pocet_vzorku
  2089.       Prevodnik(3) = Pom_single
  2090.  
  2091.  
  2092.       Teplota_vyveva = Pom_single
  2093.       If Teplota_vyveva > 10000 Then Teplota_vyveva = 0
  2094.       If Teplota_vyveva < 0 Then Teplota_vyveva = 0
  2095.  
  2096.       Pom_byte = Teplota_vyveva
  2097.       Call Prepocet_bytu(pom_byte , 2)
  2098. ')
  2099.  
  2100. '*** podtlak_vyveva S4***proudovy
  2101.  
  2102.       Pom_single = Pom_ain4(21) / Pocet_vzorku
  2103.       Prevodnik(4) = Pom_single
  2104.       Pom_single = Pom_single - 164
  2105.       Podtlak_vyveva = Pom_single / 32.7
  2106.  
  2107.       If Podtlak_vyveva > 10000 Then Podtlak_vyveva = 0
  2108.       If Podtlak_vyveva < 0 Then Podtlak_vyveva = 0
  2109.  
  2110.       Pom_byte = Podtlak_vyveva
  2111.       'Prevodnik(1) = Pom_byte
  2112.       Call Prepocet_bytu(pom_byte , 4)
  2113.  
  2114.  
  2115.  
  2116. '*** pretlak vyveva S5***proudovy
  2117. '0 - 654 ==> 0 bar = 327
  2118.  
  2119.       Pom_single = Pom_ain5(21) / Pocet_vzorku
  2120.       Prevodnik(5) = Pom_single
  2121.       Pom_single = Pom_single - 164
  2122.       Pretlak_vyveva = Pom_single / 65.4
  2123.  
  2124.       Pom_byte = Pretlak_vyveva
  2125.       Call Prepocet_bytu(0 , 3)
  2126.  
  2127.  
  2128. '*** tlak_vody_hrib S6***proudovy
  2129. ' max 400bar
  2130.       Pom_single = Pom_ain6(21) / Pocet_vzorku
  2131.       Prevodnik(6) = Pom_single
  2132.       Pom_single = Pom_single - 164
  2133.       'Tlak_vody_hrib = Pom_single / 1.92353
  2134.  
  2135.       Tlak_vody_hrib = Pom_single / 1.625
  2136.  
  2137.  
  2138.       If Tlak_vody_hrib > 10000 Then Tlak_vody_hrib = 0
  2139.       If Tlak_vody_hrib < 0 Then Tlak_vody_hrib = 0
  2140.  
  2141.       Pom_byte = Tlak_vody_hrib
  2142.       Call Prepocet_bytu(pom_byte , 5)
  2143.  
  2144. ' hladina vody rutina:
  2145. '
  2146. '*** hladina_vody S7***proudovy
  2147. 'dostavam hladinu v procentech
  2148.       Pom_single = Pom_ain7(21) / Pocet_vzorku
  2149.       Prevodnik(7) = Pom_single
  2150.       Pom_single = Pom_single - 164
  2151.       Hladina_vody = Pom_single                             '/ 6.54
  2152.       If Hladina_vody > 10000 Then Hladina_vody = 0
  2153.       If Hladina_vody < 0 Then Hladina_vody = 0
  2154.  
  2155.  
  2156. '*** hladina_kalove_vody S8***proudovy
  2157.       Pom_single = Pom_ain8(21) / Pocet_vzorku
  2158.       Prevodnik(8) = Pom_single
  2159.       Pom_single = Pom_single - 164
  2160.       Hladina_kalove_vody = Pom_single                      '/ 6.54
  2161.  
  2162.       If Hladina_kalove_vody > 10000 Then Hladina_kalove_vody = 0
  2163.       If Hladina_kalove_vody < 0 Then Hladina_kalove_vody = 0
  2164.  
  2165. '************prepocty********************'
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.       Vypocet_cista
  2174.       Vypocet_kalova
  2175.    End If
  2176.  
  2177. End Sub
  2178.  
  2179. Sub Vypocet_cista
  2180. '   vypocet hladin vody + prepocet hladiny na procenta
  2181. '   princip pro minimum vetsi nez maximum stejny, akorat se nakonci vysledna hodnota pocita odectenim od 100 %
  2182. '   interval 100% se pocita jako rozdil maxima a minima, nasledne se spocita 1 dilek z intervalu 100% (cista_konst),
  2183. '   kterym se nasledne deli aktualni hodnota hladiny vody. Od aktualni hladiny se jeste pred prepoctem na procenta odecte minimalni hodnota
  2184. '   takto vypocitana aktualni hladina se pak, pokud je minimum vetsi nez maximum, odecita od "100%"
  2185. '   pri nastaveni v rutine se hodnoty minima a maxima ukladaji do epromky
  2186.    If Blokace_cista = 0 Then
  2187.  
  2188.       If Cista_min > Cista_max Then
  2189.          Maximum = Cista_min
  2190.          Minimum = Cista_max
  2191.       Elseif Cista_max > Cista_min Then
  2192.          Maximum = Cista_max
  2193.          Minimum = Cista_min
  2194.       End If
  2195.  
  2196.  
  2197.  
  2198.       Cista_konst = Maximum - Minimum
  2199.  
  2200.       Cista_konst = Cista_konst / 100
  2201.  
  2202.       If Hladina_vody > Maximum Then
  2203.          Hladina_vody_prac = Maximum
  2204.       Else
  2205.          Hladina_vody_prac = Hladina_vody
  2206.       End If
  2207.  
  2208.  
  2209.  
  2210.       Pom_single = Hladina_vody_prac - Minimum
  2211.       Pom_single = Pom_single / Cista_konst
  2212.       Akt_cista = Pom_single
  2213.       If Cista_min > Cista_max Then
  2214.          Akt_cista = 100 - Akt_cista
  2215.       End If
  2216.  
  2217.       Pom_byte = Akt_cista
  2218.       If Akt_cista < 0 Then
  2219.          Akt_cista = 0
  2220.       End If
  2221.  
  2222.       If Akt_cista > 100 Then Akt_cista = 100
  2223.       If Akt_cista > 200 Then Akt_cista = 0
  2224.  
  2225.    Elseif Blokace_cista = 1 Then
  2226.       Akt_cista = 50
  2227.    End If
  2228.  
  2229.    Call Prepocet_bytu(akt_cista , 6)
  2230.  
  2231.  
  2232.  
  2233. End Sub
  2234.  
  2235. Sub Vypocet_kalova
  2236.    '   vypocet hladin vody + prepocet hladiny na procenta
  2237. '   princip pro minimum vetsi nez maximum stejny, akorat se nakonci vysledna hodnota pocita odectenim od 100 %
  2238. '   interval 100% se pocita jako rozdil maxima a minima, nasledne se spocita 1 dilek z intervalu 100% (kalova_konst),
  2239. '   kterym se nasledne deli aktualni hodnota hladiny vody. Od aktualni hladiny se jeste pred prepoctem na procenta odecte minimalni hodnota
  2240. '   takto vypocitana aktualni hladina se pak, pokud je minimum vetsi nez maximum, odecita od "100%"
  2241. '   pri nastaveni v rutine se hodnoty minima a maxima ukladaji do epromky
  2242.    If Blokace_kalova = 0 Then
  2243.       If Kalova_min > Kalova_max Then
  2244.          Maximum_kalova = Kalova_min
  2245.          Minimum_kalova = Kalova_max
  2246.       Elseif Kalova_max > Kalova_min Then
  2247.          Maximum_kalova = Kalova_max
  2248.          Minimum_kalova = Kalova_min
  2249.       End If
  2250.  
  2251.  
  2252.  
  2253.       Kalova_konst = Maximum_kalova - Minimum_kalova
  2254.       Kalova_konst = Kalova_konst / 100
  2255.  
  2256.       If Hladina_kalove_vody < Minimum_kalova Then
  2257.          Hladina_kalove_vody_prac = Minimum_kalova
  2258.       Elseif Hladina_kalove_vody > Maximum_kalova Then
  2259.          Hladina_kalove_vody_prac = Maximum_kalova
  2260.       Else
  2261.          Hladina_kalove_vody_prac = Hladina_kalove_vody
  2262.       End If
  2263.       Pom_single = Hladina_kalove_vody - Minimum_kalova
  2264.       Pom_single = Pom_single / Kalova_konst
  2265.       Akt_kalova = Pom_single
  2266.  
  2267.       If Kalova_min > Kalova_max Then
  2268.          Akt_kalova = 100 - Akt_kalova
  2269.       End If
  2270.       If Akt_kalova < 0 Then
  2271.          Akt_kalova = 0
  2272.       End If
  2273.       Pom_byte = Akt_kalova
  2274.  
  2275.       If Akt_kalova > 100 And Akt_kalova < 200 Then Akt_kalova = 100
  2276.       If Akt_kalova > 200 Then Akt_kalova = 0
  2277.  
  2278.  
  2279.    Elseif Blokace_kalova = 1 Then
  2280.       Akt_kalova = 50
  2281.    End If
  2282.  
  2283.    Call Prepocet_bytu(akt_kalova , 7)
  2284.  
  2285.  
  2286. End Sub
  2287.  
  2288. Sub Send_outputs
  2289.     'Vyveva_pwm = 1
  2290.    If Vyveva_pwm = 1 Then
  2291.       Pwm_driver(1) = Vyveva_prepocet
  2292.       'Pwm_driver(1) = 4095
  2293.    Else
  2294.       Pwm_driver(1) = 0
  2295.    End If
  2296.  
  2297.    If Vyveva_sani = 1 Then
  2298.       Pwm_driver(2) = 4095
  2299.    Else
  2300.       Pwm_driver(2) = 0
  2301.    End If
  2302.  
  2303.    If Vystlak_cerpadlo = 1 Then                             'vystlak  ecerpadlo spojka'
  2304.       Pwm_driver(3) = 4095
  2305.    Else
  2306.       Pwm_driver(3) = 0
  2307.    End If
  2308.  
  2309.    If Vyveva_odvetrani = 1 Then
  2310.       Pwm_driver(4) = 4095
  2311.    Else
  2312.       Pwm_driver(4) = 0
  2313.    End If
  2314.  
  2315.    If Ventil_kalova_1 = 1 Then
  2316.       Pwm_driver(5) = 4095
  2317.    Else
  2318.       Pwm_driver(5) = 0
  2319.    End If
  2320.  
  2321.    If Ventil_zac_kaly_2 = 1 Then
  2322.       Pwm_driver(6) = 4095
  2323.    Else
  2324.       Pwm_driver(6) = 0
  2325.    End If
  2326.  
  2327.    If Ventil_cista_2 = 1 Then
  2328.       Pwm_driver(7) = 4095
  2329.    Else
  2330.       Pwm_driver(7) = 0
  2331.    End If
  2332.  
  2333.    If Ventil_horni_kaly_3 = 1 Then
  2334.       Pwm_driver(8) = 4095
  2335.    Else
  2336.       Pwm_driver(8) = 0
  2337.    End If
  2338.  
  2339.    If Ventil_reg_hrib = 1 Then
  2340.       Pwm_driver(9) = 4095
  2341.    Else
  2342.       Pwm_driver(9) = 0
  2343.    End If
  2344.  
  2345.    If Ventil_dn13 = 1 Then
  2346.       Pwm_driver(10) = 4095
  2347.    Else
  2348.       Pwm_driver(10) = 0
  2349.    End If
  2350.  
  2351.    If Ventil_dn25 = 1 Then
  2352.       Pwm_driver(11) = 4095
  2353.    Else
  2354.       Pwm_driver(11) = 0
  2355.    End If
  2356.  
  2357.    If Cis_hruby_filtr = 1 Then
  2358.       Pwm_driver(12) = 4095
  2359.    Else
  2360.       Pwm_driver(12) = 0
  2361.    End If
  2362.  
  2363.  
  2364.    If Klapka_nap_cista = 1 Then
  2365.       Pwm_driver(13) = 4095
  2366.    Else
  2367.       Pwm_driver(13) = 0
  2368.    End If
  2369.  
  2370.    If Klapka_nap_kalova = 1 Then
  2371.       Pwm_driver(14) = 4095
  2372.    Else
  2373.       Pwm_driver(14) = 0
  2374.    End If
  2375.  
  2376.    If Klapka_ovldaci_pro_f = 1 Then
  2377.       Pwm_driver(15) = 4095
  2378.    Else
  2379.       Pwm_driver(15) = 0
  2380.    End If
  2381.  
  2382.    If Soupe_dolni = 1 Then
  2383.       Pwm_driver(16) = 4095
  2384.    Else
  2385.       Pwm_driver(16) = 0
  2386.    End If
  2387.  
  2388.    If Soupe_horni = 1 Then
  2389.       Out17 = 1
  2390.    Else
  2391.       Out17 = 0
  2392.    End If
  2393.  
  2394.    If Auto_stop = 1 Then
  2395.       Out18 = 1
  2396.    Else
  2397.       Out18 = 0
  2398.    End If
  2399.  
  2400.    If Otacky_plus = 1 And Otacky_minus = 0 Then
  2401.       Out19 = 1
  2402.    Else
  2403.       Out19 = 0
  2404.    End If
  2405.    If Otacky_minus = 1 And Otacky_plus = 0 Then
  2406.       Out20 = 1
  2407.    Else
  2408.       Out20 = 0
  2409.    End If
  2410. End Sub
  2411.  
  2412. Sub Tlacitka_menu1
  2413.    If Tim_tl_up = 20 And Set_pos = 0 Then
  2414.       Tim_tl_up = 21
  2415.       Incr Menu_pos
  2416.       If Menu_pos = 18 Then Menu_pos = 1
  2417.       Set Refresh_bit
  2418.    Elseif Tim_tl_down = 20 And Set_pos = 0 Then
  2419.       Tim_tl_down = 21
  2420.       Decr Menu_pos
  2421.       If Menu_pos = 0 Then Menu_pos = 17
  2422.       Set Refresh_bit
  2423.    End If
  2424. End Sub
  2425.  
  2426. Sub Send_pwm
  2427.    For I = 1 To 16
  2428.       Ii = 17 - I
  2429.       'vypocet hodnoty v intervalu
  2430.  
  2431.       If Pwm_out(i) = 0 Then
  2432.          Outp(ii) = 0
  2433.       Else
  2434.          Pomw1 = Oute(ii) - Outb(ii)                        ''vypocet poctu dilku regulacni oblasti ventilu
  2435.          If Pomw1 < 256 Then Pomw1 = 256                    'korekce
  2436.          Pomw2 = Pomw1 / 4096                               'urceni velikosti noveho dilku
  2437.          Pomw3 = Pwm_out(i) * Pomw2
  2438.          Outp(ii) = Pomw3 + Outb(ii)
  2439.       End If
  2440.  
  2441.       I2cstart                                              '' Start
  2442.       I2cwbyte &B10000000
  2443.       Pombyte = I * 4
  2444.       Pombyte = Pombyte + 2
  2445.       I2cwbyte Pombyte                                      '' select slected LED address
  2446.       I2cwbyte 0 : I2cwbyte 0
  2447.       Pombyte = Low(outp(ii)) : I2cwbyte Pombyte            '' LED_OFF_L
  2448.       Pombyte = High(outp(ii)) : I2cwbyte Pombyte           '' LED_OFF_H
  2449.       I2cstop
  2450.       Waitus 10
  2451.    Next I
  2452. End Sub
  2453.  
  2454. Sub Cls_:
  2455.    Cls
  2456.    Setfont Font8x8
  2457.    Lcdat 1 , 125 , " ";
  2458.    Lcdat 3 , 125 , " ";
  2459.    Lcdat 5 , 125 , " ";
  2460.    Lcdat 7 , 125 , " ";
  2461. End Sub
  2462.                                      'Otacky_vyveva = Vyveva_rpm
  2463. Sub Strana1
  2464.    Setfont Font8x8
  2465.  
  2466.    '(
  2467.    Lcdat 1 , 1 , "blok: " ; Blokace_bimetal ; "    "
  2468.    Lcdat 2 , 1 , "tepl: " ; Teplota_vyveva ; "    "
  2469.    Lcdat 3 , 1 , "RECY: " ; Recyklace_upr_vody ; "    "
  2470.    Lcdat 4 , 1 , "HRUB: " ; Recyklace_cist_hrub_filtr ; "    "
  2471.    Lcdat 5 , 1 , "VYVE: " ; Vak_cerp_on_off ; "    "
  2472.    Lcdat 6 , 1 , "SANI: " ; Vak_cerp_sani ; "    "
  2473.    Lcdat 7 , 1 , "VYTL: " ; Vak_cerp_vytlak ; "    "
  2474.    Lcdat 8 , 1 , "SOHO: " ; Vak_cerp_soupe_horni ; "    "
  2475.  
  2476.    Lcdat 1 , 64 , "SODO: " ; Vak_cerp_soupe_spodni ; "    "
  2477.    Lcdat 2 , 64 , "CERP: " ; Vystlak_cerp_on_off ; "    "
  2478.    Lcdat 3 , 64 , "2532: " ; Vystlak_cerp_kohout_dn25_32 ; "    "
  2479.    Lcdat 4 , 64 , "13: " ; Vystlak_cerp_kohout_dn13 ; "    "
  2480.    Lcdat 5 , 64 , "TLAK: " ; Vystlak_cerp_tlak_on_off ; "    "
  2481.    Lcdat 6 , 64 , "VYVV: " ; Pom_byte1 ; "    "
  2482.    Lcdat 7 , 64 , "vyok: " ; Vyveva_ok ; "    "
  2483.    Lcdat 8 , 64 , "vypr: " ; Vyveva_prepocet ; "    "
  2484. ')
  2485.  
  2486.           'Rozdil_otacek , Vyveva_automat , Otacky_pozadovane_vyveva
  2487.  
  2488.   ' Cista_konst Hladina_vody_prac Hladina_vody Minimum Maximum Akt_cista
  2489.  '(
  2490.    Lcdat 8 , 1 , "1: M20-MASTER/VSTUPY  " , 1
  2491.    Lcdat 1 , 1 , "cistkonst: " ; Cista_konst ; "    "
  2492.    Lcdat 2 , 1 , "hladvprac: " ; Hladina_vody_prac ; "    "
  2493.    Lcdat 3 , 1 , "hladvody: " ; Hladina_vody ; "    "
  2494.    Lcdat 4 , 1 , "Minimum: " ; Minimum ; "    "
  2495.    Lcdat 5 , 1 , "Maximum: " ; Maximum ; "    "
  2496.    Lcdat 6 , 1 , "Akt_cista: " ; Akt_cista ; "    "
  2497.    Lcdat 7 , 1 , "Cista_min: " ; Cista_min ; "     "
  2498. ')
  2499.    'Zmena_tepl = 0
  2500.    'Set Teplota_time
  2501.    'Outb(1) = Temp_min
  2502.    'Oute(1) = Temp_max
  2503.   '(
  2504.    Lcdat 8 , 1 , "1: M20-MASTER/VSTUPY  " , 1
  2505.    Lcdat 1 , 1 , "zmentepl: " ; Zmena_tepl ; "    "
  2506.    Lcdat 2 , 1 , "timebit: " ; Teplota_time ; "    "
  2507.    Lcdat 3 , 1 , "time" ; Teplota_vyveva_time ; "      "
  2508.    Lcdat 4 , 1 , "min: " ; Temp_min ; "    "
  2509.    Lcdat 5 , 1 , "outmin: " ; Outb(1) ; "    "
  2510.    Lcdat 6 , 1 , "max: " ; Temp_max ; "    "
  2511.    Lcdat 7 , 1 , "outmax:" ; Oute(1) ; "     "
  2512.    'Lcdat 7 , 1 , "time" ; Teplota_vyveva_time ; "      "
  2513. ')
  2514.  
  2515.    Lcdat 8 , 1 , "1: M20-MASTER/VSTUPY  " , 1
  2516.    Lcdat 1 , 1 , "In1: " ; Prevodnik(1) ; "    "
  2517.    Lcdat 2 , 1 , "In2: " ; Prevodnik(2) ; "    "
  2518.    Lcdat 3 , 1 , "In3: " ; Teplota_vyveva ; "    "
  2519.    Lcdat 4 , 1 , "In4: " ; Prevodnik(4) ; "    "
  2520.    Lcdat 1 , 64 , "In5: " ; Prevodnik(5) ; "    "
  2521.    Lcdat 2 , 64 , "In6: " ; Prevodnik(6) ; "    "
  2522.    Lcdat 3 , 64 , "In7: " ; Prevodnik(7) ; "    "
  2523.    Lcdat 4 , 64 , "In8: " ; Prevodnik(8) ; "    "
  2524.    Lcdat 6 , 1 , " ciste hodnoty z A/D"
  2525.  
  2526. End Sub
  2527.  
  2528. Sub Strana2
  2529.    Setfont Font8x8
  2530.    Lcdat 8 , 1 , "2: M20-MASTER/VYST.1  " , 1
  2531.    Lcdat 1 , 1 , "Out1: " ; Pwm_driver(1) ; "     "
  2532.    Lcdat 2 , 1 , "Out2: " ; Pwm_driver(2) ; "     "
  2533.    Lcdat 3 , 1 , "Out3: " ; Pwm_driver(3) ; "     "
  2534.    Lcdat 4 , 1 , "Out4: " ; Pwm_driver(4) ; "     "
  2535.    Lcdat 5 , 1 , "Out5: " ; Pwm_driver(5) ; "     "
  2536.    Lcdat 1 , 64 , "Out6: " ; Pwm_driver(6) ; "     "
  2537.    Lcdat 2 , 64 , "Out7: " ; Pwm_driver(7) ; "     "
  2538.    Lcdat 3 , 64 , "Out8: " ; Pwm_driver(8) ; "     "
  2539.    Lcdat 4 , 64 , "Out9: " ; Pwm_driver(9) ; "     "
  2540.    Lcdat 5 , 64 , "Out10: " ; Pwm_driver(10) ; "     "
  2541.  
  2542. End Sub
  2543.  
  2544. Sub Strana3
  2545.    Setfont Font8x8
  2546.    Lcdat 8 , 1 , "3: M20-MASTER/VYST.2  " , 1
  2547.    Lcdat 1 , 1 , "Out11: " ; Pwm_driver(11) ; "     "
  2548.    Lcdat 2 , 1 , "Out12: " ; Pwm_driver(12) ; "     "
  2549.    Lcdat 3 , 1 , "Out13: " ; Pwm_driver(13) ; "     "
  2550.    Lcdat 4 , 1 , "Out14: " ; Pwm_driver(14) ; "     "
  2551.    Lcdat 5 , 1 , "Out15: " ; Pwm_driver(15) ; "     "
  2552.    Lcdat 1 , 64 , "Out16: " ; Pwm_driver(16) ; "     "
  2553.    Lcdat 2 , 64 , "Out17: " ; Out17 ; "     "               '/vystupy 17 - 20 jsou ovladane primo z procesoru - tudiz nejsou pwm!
  2554.    Lcdat 3 , 64 , "Out18: " ; Out18 ; "     "
  2555.    Lcdat 4 , 64 , "Out19: " ; Out19 ; "     "
  2556.    Lcdat 5 , 64 , "Out20: " ; Out20 ; "     "
  2557. End Sub
  2558.  
  2559. Sub Strana4
  2560.    Setfont Font8x8
  2561.    Lcdat 8 , 1 , "4: M20-MASTER/NAST.VYST  " , 1
  2562.    Lcdat 6 , 1 , "LIMITY PWM,RAMPY.."
  2563.    Setfont My12d
  2564.    Lcdat 1 , 1 , "NASTAVIT"
  2565.    Lcdat 3 , 1 , "VYSTUPY?"
  2566. End Sub
  2567.  
  2568. Sub Strana5
  2569.    Setfont Font8x8
  2570.    Lcdat 8 , 1 , "5: M20-MASTER/NST.HLADINY  " , 1
  2571.    Setfont My12d
  2572.    Lcdat 1 , 1 , "NASTAVIT"
  2573.    Lcdat 3 , 1 , "SNIMACE"
  2574.    Lcdat 5 , 1 , "HLADIN?"
  2575. End Sub
  2576.  
  2577. Sub Strana6
  2578.    Setfont Font8x8
  2579.    Lcdat 8 , 1 , "6: M20-MASTER/TEST    " , 1
  2580.    Lcdat 6 , 1 , "TEST OVL. PRVKU"
  2581.    Setfont My12d
  2582.    Lcdat 1 , 1 , "TEST"
  2583.    Lcdat 3 , 1 , "VYSTUPU "
  2584. End Sub
  2585.  
  2586. Sub Strana7
  2587.    Setfont Font8x8
  2588.    Lcdat 8 , 1 , "6: M20-MASTER/BLOKACE    " , 1
  2589.    Lcdat 6 , 1 , "BLOKACE CIDEL"
  2590.    Setfont My12d
  2591.    Lcdat 1 , 1 , "BLOKOVAT"
  2592.    Lcdat 3 , 1 , "CIDLA? "
  2593. End Sub
  2594.  
  2595.  
  2596. Sub Sest_obr_spinacu
  2597. '*****************SESTAVENI OBRAZU STAVU TLACITEK**********
  2598.    If Mbuf_tl(2) = 2 Then
  2599.       Vak_cerp_on_off = M(40).1                             'M(51).1
  2600.       Tlacitka_1.0 = Vak_cerp_on_off
  2601.       Vak_cerp_sani = M(40).2
  2602.       Tlacitka_1.1 = Vak_cerp_sani
  2603.       Vak_cerp_vytlak = M(40).3
  2604.       Tlacitka_1.2 = Vak_cerp_vytlak
  2605.       Vak_cerp_soupe_spodni = M(40).4
  2606.       Tlacitka_1.3 = Vak_cerp_soupe_spodni
  2607.       Vak_cerp_soupe_horni = M(40).5
  2608.       Tlacitka_1.4 = Vak_cerp_soupe_horni
  2609.    End If
  2610.    If Mbuf_tl(2) = 3 Then
  2611.       Vystlak_cerp_on_off = M(44).1
  2612.       Tlacitka_1.5 = Vystlak_cerp_on_off
  2613.       Vystlak_cerp_kohout_dn13 = M(44).2
  2614.       Tlacitka_1.6 = Vystlak_cerp_kohout_dn13
  2615.       Vystlak_cerp_kohout_dn25_32 = M(44).3
  2616.       Tlacitka_1.7 = Vystlak_cerp_kohout_dn25_32
  2617.       Vystlak_cerp_hadice_dn13 = M(44).4
  2618.       Tlacitka_1.8 = Vystlak_cerp_hadice_dn13
  2619.       Vystlak_cerp_hadice_dn25_32 = M(44).5
  2620.       Tlacitka_1.9 = Vystlak_cerp_hadice_dn25_32
  2621.       Vystlak_cerp_tlak_on_off = M(44).6
  2622.       Tlacitka_1.10 = Vystlak_cerp_tlak_on_off
  2623.    End If
  2624.    If Mbuf_tl(2) = 4 Then
  2625.       Recyklace_upr_vody = M(48).1
  2626.       Tlacitka_2.0 = Recyklace_upr_vody
  2627.       Recyklace_cist_hrub_filtr = M(48).2
  2628.       Tlacitka_2.1 = Recyklace_cist_hrub_filtr
  2629.       Recyklace_cist_cyklon = M(48).3
  2630.       Tlacitka_2.2 = Recyklace_cist_cyklon
  2631.       Recyklace_odcerp_kal = M(48).4
  2632.       Tlacitka_2.3 = Recyklace_odcerp_kal
  2633.    End If
  2634.    If Mbuf_tl(2) = 5 Then
  2635.       Zavodneni_90s = M(52).1
  2636.       Tlacitka_2.4 = Zavodneni_90s
  2637.       Zavodneni_majak = M(52).2
  2638.       Tlacitka_2.5 = Zavodneni_majak
  2639.       Zavodneni_svetlo = M(52).3
  2640.       Tlacitka_2.6 = Zavodneni_svetlo
  2641.       'Zavodneni_radio = 1
  2642.       Zavodneni_radio = M(52).4
  2643.       Tlacitka_2.7 = Zavodneni_radio
  2644.    End If                                                   'M(54).4
  2645.             '' WORDY PREDAVANE SLEJVU A DISPLEJI
  2646. '(
  2647.    Tlacitka_1.0 = M(51).1 : Tlacitka_1.1 = M(51).2 : Tlacitka_1.2 = M(51).3 : Tlacitka_1.3 = M(51).4 : Tlacitka_1.4 = M(51).5
  2648.    Tlacitka_1.5 = M(52).1 : Tlacitka_1.6 = M(52).2 : Tlacitka_1.7 = M(52).3 : Tlacitka_1.8 = M(52).4 : Tlacitka_1.9 = M(52).5 : Tlacitka_1.10 = M(52).6 :
  2649.    Tlacitka_2.0 = M(53).1 : Tlacitka_2.1 = M(53).2 : Tlacitka_2.2 = M(53).3 : Tlacitka_2.3 = M(53).4:
  2650.    Tlacitka_2.4 = M(54).1 : Tlacitka_2.5 = M(54).2 : Tlacitka_2.6 = M(54).3 : Tlacitka_2.7 = M(54).4
  2651. ')
  2652. '(
  2653.    Tlacitka_1.0 = 1 : Tlacitka_1.1 = 1 : Tlacitka_1.2 = 1 : Tlacitka_1.3 = 1 : Tlacitka_1.4 = 1
  2654.    Tlacitka_1.5 = 1 : Tlacitka_1.6 = 1 : Tlacitka_1.7 = 1 : Tlacitka_1.8 = 1 : Tlacitka_1.9 = 1 : Tlacitka_1.10 = 1
  2655.    Tlacitka_2.0 = 1 : Tlacitka_2.1 = 1 : Tlacitka_2.2 = 1 : Tlacitka_2.3 = 1:
  2656.    Tlacitka_2.4 = 1 : Tlacitka_2.5 = 1 : Tlacitka_2.6 = 1 : Tlacitka_2.7 = 1
  2657. ')
  2658. End Sub
  2659.  
  2660. Tim0_int:
  2661.    Reset Watchdog
  2662.  
  2663.  
  2664.  
  2665.    If Teplota_time = 1 And Teplota_vyveva_time < 5000 Then
  2666.       Incr Teplota_vyveva_time
  2667.    Elseif Teplota_time = 0 Then
  2668.       Teplota_vyveva_time = 0
  2669.    End If
  2670.    If Teplota_vyveva_time = 4000 Then
  2671.  
  2672.       Teplota_vyveva_time = 0
  2673.       Teplota_time = 0
  2674.  
  2675.    End If
  2676.  
  2677.  
  2678.    If Recyklace_upr_vody = 1 And Recyklace_time_znovuspust < 1000 Then Incr Recyklace_time_znovuspust
  2679.  
  2680.    If Recyklace_time_znovuspust > 375 Then
  2681.       Set Set_cerp
  2682.    End If
  2683.    If Recyklace_time_znovuspust > 750 Then
  2684.       Set Set_cyklon
  2685.    End If
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.    If Recyklace_upr_vody = 0 Then
  2692.       Recyklace_time_znovuspust = 0
  2693.       Reset Set_cerp
  2694.       Reset Set_cyklon
  2695.  
  2696.    End If
  2697.  
  2698.   '
  2699.  
  2700.    If Tlak_oleje_kalove_cerpadlo > 180 And Tlak_time < 2000 Then
  2701.  
  2702.       Incr Tlak_time
  2703.  
  2704.    Elseif Tlak_oleje_kalove_cerpadlo < 180 Then
  2705.  
  2706.       Tlak_time = 0
  2707.       Reset Tlak_hlaska
  2708.  
  2709.    End If
  2710.  
  2711.    If Tlak_time = 1900 Then
  2712.  
  2713.       Tlak_time = 2200
  2714.       Set Tlak_hlaska
  2715.  
  2716.    End If
  2717.  
  2718. '' CASOVANI KOMUNINACE SLAVE1[ADRESA1] / DISPLEJ[ADRESA2]
  2719.    If Automat = 1 Then
  2720.       If Otacky_uber = 1 Or Otacky_pridej = 1 Then
  2721.          Incr Zmena_otacek_time
  2722.       Else
  2723.          Zmena_otacek_time = 0
  2724.       End If
  2725.    End If
  2726.  
  2727.    If Automat = 1 And Cteni_otacek_time > 0 Then
  2728.       Incr Cteni_otacek_time
  2729.    End If
  2730.  
  2731.  
  2732.    If Cekej = 1 Then Incr Cas_vyveva
  2733.  
  2734.  
  2735.  
  2736.    If Cas_vyveva > 150 Then
  2737.  
  2738.  
  2739.  
  2740.       Cekej = 0
  2741.       Cas_vyveva = 0
  2742.    End If
  2743.  
  2744.  
  2745.  
  2746.  
  2747.    If Recyklace_cist_hrub_filtr = 1 And Recyklace_funkce = 0 And Cist_hrub_filtru_time < 1000 Then
  2748.  
  2749.       Incr Cist_hrub_filtru_time
  2750.  
  2751.    End If
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.    Incr Comm_period
  2761.    If Comm_period = 50 Then
  2762.       Vysilej = 1 : Slave = 1
  2763.  
  2764.    Elseif Comm_period = 100 Then
  2765.       Vysilej_tlacitka = 1
  2766.    Elseif Comm_period = 150 Then
  2767.       Vysilej = 1 : Slave = 2
  2768.    Elseif Comm_period = 200 Then
  2769.       Vysilej_tlacitka = 1
  2770.       Comm_period = 0
  2771.  
  2772.    End If
  2773. '' CASOVANI KOMUNIKACE NA DRUHEM PORTU  - DESKY SE SPINACI
  2774.    Incr Comm_period_tlacitka
  2775.    If Comm_period_tlacitka = 80 Then
  2776.             '' KOLECKO ADERS SLEJVU SE RESI PRED VYSLANIM POZADAVKU
  2777.       Comm_period_tlacitka = 0
  2778.    End If
  2779. '' CASOVANI FUNKCNOSTI TLACITEK ZDE SE NASTAVI JEN BIT PROUCHODU CASOVACEM A OSTATNI SE RESI V HLAVNI PROG SMYCCE
  2780.    Set Bit_time
  2781. '' CASOVANI NACITANI ANALOGOVYCH VSTUPU
  2782.    Incr Ad_time
  2783.    If Ad_time = 20 Then
  2784.       Ad_time = 0 : Ad_bit = 1
  2785.    End If
  2786. '' CASOVANI NASTAVOVANI VYSTUPU - 50MS
  2787.    Incr Time_out_pom
  2788.    If Time_out_pom = 16 Then
  2789.       Time_out_pom = 0 : Set Refresh_out
  2790.    End If
  2791. '' CASOVANI REFRESH DISPLEJE - ZAKLAD JE 2 SEKUNDY PRO KONTROLNI OBRAZY, U NASTAVOVACICH REFR. VYVOLAVAJI I TLACITKA
  2792.    ''If Tim1 = 375 Then
  2793.    If Tim1 < 1000 Then Incr Tim1                            'casova zakladna 1 sekunda
  2794.    If Tim1 = 375 Then
  2795.       Tim1 = 0
  2796.       If Strana = 1 Or Strana = 2 Or Strana = 3 Or Menu_pos = 40 Or Menu_pos = 50 Then Set Refresh_bit
  2797.    End If
  2798.  
  2799.    Incr Tim3
  2800.  
  2801.    If Tim3 = 1875 Then
  2802.       'Reset Posun
  2803.       Tim3 = 0
  2804.    End If
  2805.  
  2806.  
  2807.    Incr Tim2
  2808.  
  2809.    If Tim2 = 375 Then
  2810.  
  2811.  
  2812.  
  2813.       Tim2 = 0
  2814.       'Pom_single = Vyveva_rpm * 1.765
  2815.  
  2816.       Pom_word = Vyveva_rpm / 4
  2817.  
  2818.       Otacky_vyveva = Pom_word * 60
  2819.  
  2820.       'Otacky_vyveva = Pom_single
  2821.  
  2822.       Pom_word = Otacky_vyveva / 100
  2823.       Pom_byte = Pom_word
  2824.       Prevodnik(1) = Pom_byte
  2825.       Call Prepocet_bytu(pom_byte , 0)
  2826.       'Prevodnik(1) = Otacky_vyveva
  2827.       Vyveva_rpm = 0
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.    End If
  2835.  
  2836.  
  2837.  
  2838.    If Recyklace_upr_vody = 1 Then
  2839.       If Recyklace_time < 700 Then Incr Recyklace_time
  2840.       If Recyklace_time = 200 Then
  2841.          Recyklace_time = 0
  2842.          If Recyklace_1sec < 10 Then
  2843.             Incr Recyklace_1sec
  2844.             If Recyklace_1sec > 6 Then
  2845.                Recyklace_1sec = 15
  2846.             End If
  2847.          End If
  2848.       End If
  2849.    End If
  2850.   '(
  2851.    If Recyklace_cist_hrub_filtr = 1 Then
  2852.    If Recyklace_time < 700 Then Incr Recyklace_time
  2853.    If Recyklace_time = 200 Then
  2854.    Recyklace_time = 0
  2855.    If Recyklace_1sec < 7 Then
  2856.    Incr Recyklace_1sec
  2857.    If Recyklace_1sec > 5 Then
  2858.    Recyklace_1sec = 10
  2859.    End If
  2860.    End If
  2861.    End If
  2862.    End If
  2863. ')
  2864.    If Recyklace_cist_cyklon = 1 Then
  2865.  
  2866.       Incr Recyklace_cist_cyklon_time
  2867.  
  2868.       If Recyklace_cist_cyklon_time = 375 Then
  2869.          If Cisteni_cyklonu_time < 15 Then Incr Cisteni_cyklonu_time
  2870.          Recyklace_cist_cyklon_time = 0
  2871.  
  2872.          If Cisteni_cyklonu_time > 9 Then
  2873.             Cisteni_cyklonu_time = 20
  2874.          End If
  2875.       End If
  2876.  
  2877.  
  2878.    End If
  2879.  
  2880.    If Space_time_tl < 150 Then Incr Space_time_tl
  2881.    If Space_time_tl > 120 Then Index_tl = 0
  2882.  
  2883.    If Space_time < 150 Then Incr Space_time
  2884.    If Space_time > 120 Then Index = 0                       ': Index_d = 0         ''cca 3,23 * 3ms = 9,75
  2885.  
  2886.    If Nodata_time < 500 Then
  2887.       Incr Nodata_time
  2888.    End If
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.    Incr Tim_ramp
  2895.    If Tim_ramp = 5 Then                                     ''
  2896.       Tim_ramp = 0
  2897.       For Index_ramp = 1 To 16
  2898.          Index3 = 17 - Index_ramp
  2899.          If Ramp_on(index_ramp) = 0 And Ramp_off(index_ramp) = 0 Then
  2900.             Pwm_out(index3) = Pwm_driver(index_ramp)
  2901.          Else
  2902.             If Pwm_out(index3) < Pwm_driver(index_ramp) Then
  2903.                Pwm_krok(index_ramp) = 1010 / Ramp_on(index_ramp)
  2904.                Pwm_out_integer(index_ramp) = Pwm_out_integer(index_ramp) + Pwm_krok(index_ramp)
  2905.                If Pwm_out_integer(index_ramp) > Pwm_driver(index_ramp) Then
  2906.                   Pwm_out_integer(index_ramp) = Pwm_driver(index_ramp)
  2907.                End If
  2908.  
  2909.                Pwm_out(index3) = Pwm_out_integer(index_ramp)
  2910.  
  2911.             Elseif Pwm_out(index3) > Pwm_driver(index_ramp) Then
  2912.                Pwm_krok(index_ramp) = 1010 / Ramp_off(index_ramp)
  2913.                Pwm_out_integer(index_ramp) = Pwm_out_integer(index_ramp) - Pwm_krok(index_ramp)
  2914.                If Pwm_out_integer(index_ramp) < Pwm_driver(index_ramp) Then
  2915.                   Pwm_out_integer(index_ramp) = Pwm_driver(index_ramp)
  2916.                End If
  2917.  
  2918.                Pwm_out(index3) = Pwm_out_integer(index_ramp)
  2919.             End If
  2920.          End If
  2921.       Next Index_ramp
  2922.  
  2923.    End If
  2924.  
  2925.  
  2926. Return
  2927.  
  2928. Urxc_isr:
  2929.    Disable Interrupts
  2930.    Modt_tl = Inkey(#1)
  2931.    'Pwm_driver(1) = 4095
  2932.    If Index_tl = 0 Then
  2933.       ''JAKA PRISLA ADRESA SKUPINY ?
  2934.       'Pwm_driver(2) = 4095
  2935.       If Modt_tl = 10 Then
  2936.       'Pwm_driver(3) = 4095
  2937.          Index_tl = Index_tl + 1                            'increase the buffer counter
  2938.          Mbuf_tl(1) = Modt_tl
  2939.                                         'store address in location 1
  2940.       End If
  2941.    Else
  2942.    'Pwm_driver(4) = 4095
  2943.       Index_tl = Index_tl + 1 : Mbuf_tl(index_tl) = Modt_tl ''INDEX 2 = ADRESA SLEJVA PO KTEREM CHCEME ODPOVED
  2944.       If Index_tl = 4 Then
  2945.       'Pwm_driver(5) = 4095
  2946.          ''NA TRETI POZICI JE ULOZEN POCET WORDU
  2947.          Buf_long_tl = 2 * Mbuf_tl(4)                       ''- PREPOCITAME NA BYTE
  2948.          Buf_long_tl = 6 + Buf_long_tl                      ''A SECTEME S UVODNI CASTI A DVEMA BYTE CRC
  2949.       End If
  2950.       If Index_tl = Buf_long_tl Then
  2951.          '' JAKMILE JE HOTOVO
  2952.          'Pwm_driver(6) = 4095
  2953.          Index_tl = 0
  2954.          If Mbuf_tl(2) = 2 Or Mbuf_tl(2) = 3 Or Mbuf_tl(2) = 4 Or Mbuf_tl(2) = 5 Then
  2955.             Data_prijata_tlacitka = 1
  2956.             'pwm_driver(7) = 4095
  2957.          End If
  2958.          '' SESTAVIME PAK PRICHOZI DATA V CYKLU PROGRAMU
  2959.          Nodata_time_tl = 0                                 'Print #1 , "HURA: "
  2960.       End If
  2961.    End If
  2962.    Space_time_tl = 0
  2963.    Enable Interrupts
  2964. Return
  2965.  
  2966. Urxc_isr1:                                                  ' komunikace s displejem
  2967.    Modt = Inkey(#2)
  2968.    If Index = 0 Then
  2969.       If Modt = Skupina Then
  2970.          Index = Index + 1                                  'increase the buffer counter
  2971.          Mbuf(1) = Modt                                     'store address in location 1
  2972.       End If
  2973.    Else
  2974.       Index = Index + 1 : Mbuf(index) = Modt                ''INDEX 2 = ADRESA SLEJVA PO KTEREM CHCEME ODPOVED
  2975.       If Index = 4 Then
  2976.          ''NA TRETI POZICI JE ULOZEN POCET WORDU
  2977.          Buf_long = 2 * Mbuf(4)                             ''- PREPOCITAME NA BYTE
  2978.          Buf_long = 6 + Buf_long                            ''A SECTEME S UVODNI CASTI A DVEMA BYTE CRC
  2979.       End If
  2980.       If Index = Buf_long Then
  2981.          '' JAKMILE JE HOTOVO
  2982.          Index = 0
  2983.          If Mbuf(2) = 1 Or Mbuf(2) = 2 Then
  2984.             Data_prijata = 1
  2985.          End If
  2986.          '' SESTAVIME PAK PRICHOZI DATA V CYKLU PROGRAMU
  2987.          Nodata_time = 0                                    'Print #1 , "HURA: "
  2988.       End If
  2989.    End If
  2990.    Space_time = 0
  2991. Return
  2992.  
  2993. Int4_int:
  2994.  
  2995.    Incr Vyveva_rpm
  2996.  
  2997. Return
  2998.  
  2999. End
  3000.  
  3001. Sub Zmena_otacek(byval Jak As Byte)
  3002.  
  3003.  
  3004.  
  3005. End Sub
  3006.  
  3007.  
  3008. Sub Prepocet_bytu(byval Bytebyte As Byte , Byval Prepocet_bytu_num As Byte)
  3009.  
  3010.  
  3011.    If Prepocet_bytu_num = 0 Then
  3012.  
  3013.       For Pt = 0 To 7
  3014.          Word1.pt = Bytebyte.pt
  3015.       Next
  3016.  
  3017.    End If
  3018.  
  3019.    If Prepocet_bytu_num = 1 Then
  3020.       For Pt = 0 To 7
  3021.          Ptx = Pt + 8
  3022.          Word1.ptx = Bytebyte.pt
  3023.       Next
  3024.    End If
  3025.    If Prepocet_bytu_num = 2 Then
  3026.       For Pt = 0 To 7
  3027.          Word2.pt = Bytebyte.pt
  3028.       Next
  3029.  
  3030.    Elseif Prepocet_bytu_num = 3 Then
  3031.  
  3032.       For Pt = 0 To 7
  3033.          Ptx = Pt + 8
  3034.          Word2.ptx = Bytebyte.pt
  3035.       Next
  3036.    Elseif Prepocet_bytu_num = 4 Then
  3037.       For Pt = 0 To 7
  3038.          Word3.pt = Bytebyte.pt
  3039.       Next
  3040.    Elseif Prepocet_bytu_num = 5 Then
  3041.  
  3042.       For Pt = 0 To 7
  3043.          Ptx = Pt + 8
  3044.          Word3.ptx = Bytebyte.pt
  3045.       Next
  3046.    Elseif Prepocet_bytu_num = 6 Then
  3047.       For Pt = 0 To 7
  3048.          Word4.pt = Bytebyte.pt
  3049.       Next
  3050.    Elseif Prepocet_bytu_num = 7 Then
  3051.  
  3052.       For Pt = 0 To 7
  3053.          Ptx = Pt + 8
  3054.          Word4.ptx = Bytebyte.pt
  3055.       Next
  3056.  
  3057.    End If
  3058.  
  3059.  
  3060.  
  3061.  
  3062. End Sub
  3063.  
  3064. Sub Prepocet_na_word(byval Word_poz As Word )
  3065.    For X = 0 To 7
  3066.       Otacky_motoru.x = Word_poz.x
  3067.    Next
  3068.  
  3069.  
  3070.  
  3071. End Sub
  3072.  
  3073. Sub Predavani_autec
  3074.    'Zavodneni_radio = 1
  3075.    If Zavodneni_radio = 1 Then
  3076.  
  3077.       Otacky_plus = Autec_1.0
  3078.  
  3079.       Otacky_minus = Autec_1.1
  3080.  
  3081.       Recyklace_upr_vody = Autec_1.2
  3082.  
  3083.       Recyklace_cist_hrub_filtr = Autec_1.3
  3084.  
  3085.       Vak_cerp_on_off = Autec_1.4
  3086.  
  3087.       Vak_cerp_sani = Autec_1.5
  3088.  
  3089.       Vak_cerp_vytlak = Autec_1.6
  3090.  
  3091.       Vak_cerp_soupe_horni = Autec_1.7
  3092.  
  3093.       Vak_cerp_soupe_spodni = Autec_1.8
  3094.  
  3095.       Vystlak_cerp_on_off = Autec_1.9
  3096.  
  3097.       Vystlak_cerp_kohout_dn25_32 = Autec_1.10
  3098.  
  3099.       Vystlak_cerp_kohout_dn13 = Autec_1.11
  3100.  
  3101.       Vystlak_cerp_tlak_on_off = Autec_1.12
  3102.  
  3103.       Pom_byte1 = Autec_2
  3104.  
  3105.       Tlak_pozadovany_automat_radio = Pom_byte1
  3106.  
  3107.       Shift Autec_2 , Right , 8
  3108.       Pom_byte2 = Autec_2
  3109.       If Pom_byte2 > 120 Then Pom_byte2 = 128
  3110.       Vyveva_prepocet_radio = Pom_byte2 * 32
  3111.  
  3112.  
  3113.    End If
  3114.  
  3115.  
  3116.  
  3117. End Sub
  3118.  
  3119. Sub Hlasky_rout
  3120.    Hlaska_exist = 0
  3121.  
  3122.    If Akt_kalova < 35 And Akt_kalova > 5 Then
  3123.       Call Hlasky_zasobnik(3 , 0)
  3124.       Set Hlaska_exist
  3125.    Else
  3126.       Call Hlasky_zasobnik(3 , 1)
  3127.    End If
  3128.  
  3129.  
  3130.  
  3131.    If Akt_kalova < 5 Then
  3132.       Call Hlasky_zasobnik(6 , 0)
  3133.       Set Hlaska_exist
  3134.    Else
  3135.       Call Hlasky_zasobnik(6 , 1)
  3136.    End If
  3137.  
  3138.  
  3139.    If Akt_cista < 20 Then
  3140.       Call Hlasky_zasobnik(2 , 0)
  3141.       Set Hlaska_exist
  3142.    Else
  3143.       Call Hlasky_zasobnik(2 , 1)
  3144.    End If
  3145.  
  3146.    If Vyveva_prehrati = 1 Then
  3147.       Call Hlasky_zasobnik(1 , 0)
  3148.       Set Hlaska_exist
  3149.    Else
  3150.       Call Hlasky_zasobnik(1 , 1)
  3151.    End If
  3152.    'Dim Teplota_oleje As Byte , Tlak_oleje_kalove_cerpadlo As Byte
  3153.  
  3154.  
  3155.    If Teplota_oleje > 70 Then
  3156.       Call Hlasky_zasobnik(4 , 0)
  3157.       Set Hlaska_exist
  3158.    Else
  3159.       Call Hlasky_zasobnik(4 , 1)
  3160.    End If
  3161.  
  3162.    If Tlak_hlaska = 1 Then
  3163.       Call Hlasky_zasobnik(5 , 0)
  3164.       Set Hlaska_exist
  3165.    Elseif Tlak_hlaska = 0 Then
  3166.       Call Hlasky_zasobnik(5 , 1)
  3167.    End If
  3168.  
  3169.    If Hlaska_exist = 0 Then
  3170.       Odesli_hlasku
  3171.    End If
  3172.  
  3173.  
  3174.  
  3175.    'If Akt_kalova < 40 Then
  3176.    'Hlasky_zasobnik(3)
  3177.    'End If
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183. End Sub
  3184.  
  3185.  
  3186.  
  3187. Sub Hlasky_zasobnik(byval Cislo_hlasky As Byte , Byval Vymaz As Byte)
  3188.    If Vymaz = 0 Then
  3189.       For Z = 1 To 49
  3190.  
  3191.          If Hlasky_zasobnik_pole(z) = Cislo_hlasky Then
  3192.             Set Zapsano
  3193.          End If
  3194.  
  3195.  
  3196.       Next
  3197.  
  3198.       For Zz = 1 To 49
  3199.  
  3200.          If Hlasky_zasobnik_pole(zz) = 0 And Zapsano = 0 Then
  3201.  
  3202.             Hlasky_zasobnik_pole(zz) = Cislo_hlasky
  3203.  
  3204.             Set Zapsano
  3205.  
  3206.          End If
  3207.  
  3208.       Next
  3209.  
  3210.       Reset Zapsano
  3211.    Elseif Vymaz = 1 Then
  3212.  
  3213.       For Z = 1 To 49
  3214.  
  3215.          If Hlasky_zasobnik_pole(z) = Cislo_hlasky Then
  3216.             Hlasky_zasobnik_pole(z) = 0
  3217.  
  3218.             Konec = 49 - Z
  3219.  
  3220.             For Zz = Z To Konec
  3221.  
  3222.                Hlasky_zasobnik_pole(zz) = Hlasky_zasobnik_pole(zz + 1)
  3223.  
  3224.             Next
  3225.  
  3226.          End If
  3227.  
  3228.  
  3229.       Next
  3230.  
  3231.  
  3232.    End If
  3233.  
  3234. End Sub
  3235.  
  3236. Sub Odesli_hlasku
  3237.  
  3238.    For Zz = 1 To 49
  3239.  
  3240.       Hlasky_zasobnik_pole(zz) = Hlasky_zasobnik_pole(zz + 1)
  3241.  
  3242.    Next
  3243.  
  3244.    Set Posun
  3245.  
  3246.  
  3247. End Sub
  3248.  
  3249.  
  3250. Logostep:
  3251.    $bgf "logostep.bgf"
  3252.    $include "font8x8.font"
  3253.    $include "my12D.font"
  3254.    $include "100.font"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement