Advertisement
Guest User

Untitled

a guest
Dec 23rd, 2016
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $regfile = "m128def.dat"                                    ' specify the used micro
  2. $crystal = 12000000                                         ' used crystal frequenc8
  3. '$baud1 = 19200                                              ' use baud rate
  4. '$baud = 19200
  5. $hwstack = 128                                              ' default use 32 for the hardware stack
  6. $swstack = 128                                              ' default use 10 for the SW stack
  7. $framesize = 512
  8. $lib "modbus.lbx"
  9. $lib "glcdeadogm128x6.lbx"
  10.  
  11. ''$prog &HFF , &H8E , &HC1 , &HFF                             ' generated. Take care that the chip supports all fuse bytes.
  12.  
  13. ''Config Graphlcd = 128 * 64eadogm , Cs1 = Porta.4 , A0 = Porta.5 , Si = Porta.7 , Sclk = Porta.6 , Rst = Porta.3
  14.  
  15.  
  16. Config Com2 = 57600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8       ', Clockpol = 0
  17. Open "com2:" For Binary As #2
  18.  
  19. Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8       ', Clockpol = 0
  20. Open "com1:" For Binary As #1
  21.  
  22. On Urxc Urxc_isr
  23. Enable Urxc
  24.  
  25.  
  26. On Urxc1 Urxc_isr1
  27. Enable Urxc1
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. 'Config Int4 = Rising                                        'preruseni od snimace otacek vyvevy
  36. 'On Int4 Int4_int
  37. 'Enable Int4
  38.  
  39.  
  40. $lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI
  41. Config Scl = Portd.0                                        ' we need to provide the SCL pin name
  42. Config Sda = Portd.1                                        ' we need to provide the SDA pin name
  43. I2cinit
  44. Config Twi = 100000
  45.  
  46. Declare Sub Init_pca9685
  47. Init_pca9685
  48. Declare Sub Send_pwm
  49.  
  50.              '(
  51. Config Timer0 = Timer , Prescale = 256
  52. On Timer0 Tim0_int
  53. Enable Timer0
  54. ')
  55.  
  56.  
  57.  
  58. Tccr0 = &B10001_101                                         'nastaveni casovace do ctc rezimu / 128
  59. Ocr0 = 249                                                  ''1 sekundd = 375 dilku (249 je korekce, protoze dilek je i nula a celkovy pocet je pak 250 taktu do sekundy
  60. Set Timsk.1
  61. On Oc0 Tim0_int
  62. 'KONFIGURACE DISPLEJE A TLACITEK
  63.  
  64. Config Graphlcd = 128 * 64eadogm , Cs1 = Portc.7 , A0 = Portc.3 , Si = Portc.4 , Sclk = Portc.5 , Rst = Portc.6
  65. Tl_up Alias Pinc.0 : Config Portc.0 = Input : Set Portc.0
  66. Tl_down Alias Pinc.1 : Config Portc.1 = Input : Set Portc.1
  67. Tl_ok Alias Pinc.2 : Config Portc.2 = Input : Set Portc.2
  68. Glcdcmd &H23
  69. Glcdcmd &H81
  70. Glcdcmd 55
  71. Glcdcmd &H1C
  72. ''OTOCENI DISPLEJA
  73. Glcdcmd &B11001111
  74. Glcdcmd &B10100000
  75. Declare Sub Obsluha_tlacitek
  76. Declare Sub Tlacitka_menu1
  77. Declare Sub Read_inputs
  78. Declare Sub Send_outputs
  79. Declare Sub Sest_obr_spinacu
  80. Declare Sub Cls_
  81. Declare Sub Strana1
  82. Declare Sub Strana2
  83. Declare Sub Strana3
  84. Declare Sub Strana4
  85. Declare Sub Strana5
  86. Declare Sub Strana6
  87. Declare Sub Strana7
  88. Declare Sub Strana8
  89. Declare Sub Strana9
  90. Declare Sub Strana10
  91. Declare Sub Strana11
  92. Declare Sub Strana12
  93. Declare Sub Vypocet_cista
  94. Declare Sub Vypocet_kalova
  95. Declare Sub Prepocet_bytu(byval Bytebyte As Byte , Byval Prepocet_bytu_num As Byte)
  96. Declare Sub Prepocet_na_word(byval Word_poz As Word )
  97.  
  98. Cls_
  99.  
  100. Setfont Font8x8
  101.  
  102. 'KONFIGURACE AD PREVODNIKU
  103. Config Adc = Single , Prescaler = Auto , Reference = Avcc
  104.  
  105. 'Out17 Alias Porta.4 : Config Porta.4 = Output
  106. 'Out18 Alias Porta.5 : Config Porta.5 = Output
  107. 'Out19 Alias Porta.6 : Config Porta.6 = Output
  108. 'Out20 Alias Porta.7 : Config Porta.7 = Output
  109.  
  110.  
  111. 'Tlac1 Alias Pinf.0 : Config Pinf.2 = Input
  112. 'Tlac2 Alias Pinf.1 : Config Pinf.0 = Input
  113. 'Tlac3 Alias Pinf.2 : Config Pinf.1 = Input
  114.  
  115. Out17 Alias Porta.4 : Config Porta.4 = Output
  116. Out18 Alias Porta.5 : Config Porta.5 = Output
  117. Out19 Alias Porta.6 : Config Porta.6 = Output
  118. Out20 Alias Porta.7 : Config Porta.7 = Output
  119. Dim Bit_time As Bit
  120.  
  121.  
  122. Dim Pombyte As Byte , I As Byte , Ii As Byte , Index As Byte
  123. Dim Tim1 As Word , Pomw1 As Single , Pomw2 As Single , Pomw3 As Single
  124. Dim Pomw4 As Word
  125. Dim Outp(20) As Word
  126. Dim Outp_old(20) As Word
  127. Dim Outb(20) As Integer                                     ''out begin
  128. Dim Oute(20) As Integer                                     ''out end
  129. Dim New_ee As Eram Byte
  130. Dim Outb_ee(20) As Eram Word
  131. Dim Oute_ee(20) As Eram Word
  132. Dim Pwm_out(20) As Word                                     ''zakladni cislo pro rizeni vystupu - 255 urovni
  133. Dim Slave_tlac As Word
  134. Dim Xy(20) As Byte
  135.  
  136. Dim Pocitadlo As Word
  137. Dim Ramp_on(20) As Word
  138. Dim Ramp_on_ee(20) As Eram Word
  139. Dim Ramp_off(20) As Word
  140. Dim Ramp_off_ee(20) As Eram Word
  141. Dim Pwm_driver(20) As Word
  142. Dim Pwm_krok(20) As Word , Pwm_out_integer(20) As Integer ,
  143. Dim Pwm_krok_prom(20) As Word
  144. ''Dim Pwm_timer_limit(20) As Word
  145. Dim Tim_ramp As Word
  146. Dim Index_ramp As Word
  147. Dim Ext_u As Bit
  148. Dim Thisslave As Word
  149. Dim Hadice_nastavena As Bit
  150. Dim Data_prijata_tlacitka As Bit
  151. Dim Vysilej_tlacitka As Bit
  152. Dim Prevodnik(8) As Word
  153. 'Dim Pwm_out_skut(20) As Word
  154. '' zakladni nastaveni promennych nez se nahraji nove hodnoty z EEPROM
  155.  
  156.  
  157. '' maximalni rozliseni vystupu je 4095 dilku
  158. '' definujeme vsak pocatecni uroven reakce vystupu a konecnou uroven reakce vystupu
  159. '' zbyvajici vnitrni oblast je aktivni cast pro rizeni proprcionaliho hydraulickeno ventilu
  160. '' avsak i definovany aktivni interval by mel byt vetsi nez 200, coz muzeme povazovat za dostatecne velkou stupnici pro rizeni ventilu.
  161. '' konecny interval pak je oute - outb
  162. Showpic 5 , 10 , Logostep
  163. Setfont Font8x8
  164. Lcdat 7 , 1 , "MAUS16 UFO"
  165. Lcdat 8 , 1 , "V.1.1. / 15.3.2016   "
  166. Waitms 500
  167. ''Cls_
  168.  
  169. Declare Sub Modbus(byval Modbus_s As Byte , Byval Modbus_prikaz As Byte , Byval Modbus_adresa As Word , Byval Modbus_pocetbajtu As Word)
  170.  
  171. '''M-LITE DEKLACE PROMENNYCH =-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-==-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=
  172. Dim Skupina As Byte , Slave As Byte , Master As Bit
  173. Dim Mbuf(120) As Byte , Modt As Byte , Crc As Word , Crc2 As Word , Index1 As Word , Index2 As Word , Index3 As Word
  174. Dim M(60) As Word
  175. Dim Pocet_wordu As Byte , Adresa_pameti As Byte , X As Byte
  176. Dim Space_time As Word , Vysilej As Bit
  177. Dim Buf_long As Byte
  178. Dim Data_prijata As Bit
  179. Skupina = 10 : Slave = 0                                    ''skupina a adresa slejva,
  180. If Slave = 0 Then
  181.    Master = 1                                               ''pokud je slejv nenulovy, je master 0, jinak jsme master
  182. Else
  183.    Master = 0
  184. End If
  185.  
  186. Dim Index2_tl As Word , Crc_tl As Word , Crc2_tl As Word , X_tl As Byte
  187. 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
  188.  
  189.  
  190. Pocitadlo = 1
  191. ''Dim Ypom As Word , Xpom As Word , Yypom As Word , Xxpom As Word
  192.  
  193. Dim Prikaz As String * 2 , Pipani As Word
  194.  
  195. Dim Att As Byte , Pinh1_old As Byte
  196. Dim Pomword As Bit
  197. Dim Nodata_time As Word , Index_d As Word
  198. Dim Bufik As Byte
  199. Dim Adresa_pameti_tl As Byte
  200.  
  201. '' dale je mozne definovat intervaly pro maximalni cas mezi koncem dotazu a zacatkem odpovedi, co ruzny timeout pro cteni a zapis
  202. Index = 0
  203. 'Flaga = 0
  204.  
  205. '****************************************
  206. '****************************************
  207. Dim Tlacitko As Word , Osax As Word , Osay As Word
  208. '****************************************
  209. '****************************************
  210. Dim Tim_tl_up As Word , Tim_tl_down As Word , Tim_tl_ok As Word
  211. Dim Tl_up_old As Bit , Tl_down_old As Bit , Tl_ok_old As Bit , Uloz_data As Bit
  212. Dim Set_bit As Bit , Refresh_bit As Bit , Menu_bit As Bit , Set_pos As Byte , Menu_pos As Byte
  213. Dim S As String * 20 , Refresh_out As Bit , Strana As Byte
  214. Dim Vstup As Word , Tlac1_ As Bit , Tlac2_ As Bit , Tlac3_ As Bit
  215. 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
  216. Dim I1 As Byte , I2 As Byte , I3 As Byte , Pocet_vzorku As Byte , Ain_(8)as Long
  217. 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
  218. Dim Vystupni_tlak_real As Word , Prutok_real As Word , Tlak_pozadovany As Word , Automat As Bit , Pom_rozdil As Word
  219. Dim Nuluj_irc_bit As Bit , Irc_step As Byte , Irc_sample As Byte
  220. 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
  221. Dim Irc_val_celk_2 As Long , Zmena As Bit , Testovaci_rezim As Bit
  222.  
  223. Dim Hladina_kalove_vody_prac As Word , Hladina_vody_prac As Word
  224.  
  225.  
  226. Dim Vrstva_zmena As Word , Vrstva As Word , Vrstva_old As Word , Polomer As Single , Tloustka_hadice As Single
  227. Dim Odvinuto As Single , Buben_otacky As Single , Obvod As Single , Pocet_rad As Single , Obvod_konstant As Single , Vrstva_old1 As Word
  228. Dim Buben_otackyp10 As Long , Buben_otackym10 As Long , Zmena_vrstvy As Integer
  229. Dim Buben_word As Long , Odvinuto_celk As Single , Fn As Word , Buben_otacky_pro As Single , Vrstkonst As Word , Odvin As Word
  230. Dim Pom_str As String * 10 , Time_out_pom As Byte , Navinbitufo As Bit , Navinbitovladac As Bit , Navinvyp As Bit
  231. Dim Potik As Word , Pocetzmacknuti As Byte
  232.  
  233. Dim Kodery_ufo As Word
  234.  
  235. Dim Pole_vrstvy(20) As Single , Comm_period As Word , Comm_period_tlacitka As Byte
  236. Dim Zarizeni As Byte , Druh_komunikace As Byte , Pocet_stisku As Byte
  237.  
  238.  
  239. Dim Tlak_vyveva_disp As Word , Otacky_motoru As Word , Tlak_real As Word
  240.  
  241. Dim Recyklace_funkce As Bit
  242. '**********PROMENNE PRO TLACITKA NA DVERICH****************
  243. 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,
  244. Dim Vystlak_cerp_on_off As Bit , Vystlak_cerp_kohout_dn13 As Bit , Vystlak_cerp_kohout_dn25_32 As Bit
  245. Dim Vystlak_cerp_hadice_dn13 As Bit , Vystlak_cerp_hadice_dn25_32 As Bit , Vystlak_cerp_tlak_on_off As Bit
  246. Dim Recyklace_upr_vody As Bit , Recyklace_cist_hrub_filtr As Bit , Recyklace_cist_cyklon As Bit , Recyklace_odcerp_kal As Bit
  247. Dim Zavodneni_90s As Bit , Zavodneni_majak As Bit , Zavodneni_svetlo As Bit , Zavodneni_radio As Bit
  248. '**********PROMENNE PRO VSTUPY****************
  249. Dim Vyveva_otacky As Word , Tlak_oleje_vyveva As Word , Teplota_vyveva As Word , Pretlak_vyveva As Word , Podtlak_vyveva As Word
  250. Dim Tlak_vody_hrib As Word , Hladina_vody As Word , Hladina_kalove_vody As Word
  251. Dim Cista_min As Word , Cista_max As Word , Kalova_min As Word , Kalova_max As Word
  252. '**********PROMENNE PRO VYSTUPY****************
  253. 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
  254. 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,
  255. 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
  256. Dim Soupe_dolni As Bit , Soupe_horni As Bit , Auto_stop As Bit , Otacky_plus As Bit , Otacky_minus As Bit
  257. Dim Tlak_vyveva As Word , Vyveva_prepocet As Word
  258. Dim Ad_bit As Bit , Ad_time As Word
  259. Dim Time_cisteni_cyklonu As Word , Time_zavodneni As Word
  260. Dim Kodery_ufo_2 As Word
  261. Dim Tlacitka_1 As Word , Tlacitka_2 As Word
  262.  
  263. Dim Recykl_cerp_hrub_filtr As Bit , Cyklon As Bit
  264. Dim Cist_hrub_filtru_time As Word
  265. '**********PROMENNE PRO VYPOCTY****************
  266. Dim Maximum As Word , Minimum As Word , Cista_konst As Single , Akt_cista As Word
  267. Dim Akt_kalova As Word , Maximum_kalova As Word , Minimum_kalova As Word , Kalova_konst As Single
  268. Dim Maximum_ee As Eram Word , Minimum_ee As Eram Word , Maximum_kalova_ee As Eram Word , Minimum_kalova_ee As Eram Word
  269. Dim Recyklace_1sec As Word , Recyklace_time As Word
  270.  
  271. Dim Cisteni_cyklonu_time As Word , Recyklace_cist_cyklon_old As Bit , Recyklace_cist_cyklon_time As Word
  272.  
  273. Dim Vystlak_cerpadlo As Bit
  274. Dim Vypnout_vystupy As Bit
  275. Dim Tim2 As Word , Otacky_vyveva As Word , Vyveva_rpm As Word
  276.  
  277. Dim Pom_byte As Byte , Prepocet_bytu_num As Byte , Word1 As Word , Word2 As Word , Word3 As Word , Word4 As Word
  278. Dim Word5 As Word , Word6 As Word , Word7 As Word , Word8 As Word
  279.  
  280. Dim Vykon_vyveva As Word , Tlak_pozadovany_automat As Word
  281. Dim Ee_hladiny As Eram Byte
  282. Dim Vyveva_ok As Bit
  283. Dim Pt As Byte , Ptx As Byte
  284. Dim Otacky_pridej As Bit , Otacky_uber As Bit , Zmena_otacek_time As Word , Cteni_otacek_time As Word
  285. Dim Rozdil_tlaku As Single , Men_otacky As Bit
  286. Declare Sub Zmena_otacek(byval Jak As Byte)
  287.  
  288. Pocet_vzorku = 10
  289.  
  290. Strana = 1
  291.  
  292. If New_ee <> 3 Then
  293.    For Index = 1 To 19
  294.       Outb_ee(index) = 0
  295.       Oute_ee(index) = 4096
  296.       Ramp_on_ee(index) = 1
  297.       Ramp_off_ee(index) = 1
  298.    Next
  299.    New_ee = 3
  300. End If
  301. '(
  302. For Index = 1 To 16
  303. Ramp_on_ee(index) = 20
  304. Ramp_off_ee(index) = 20
  305. Next
  306. ')
  307. For Index = 1 To 19
  308.    Outb(index) = Outb_ee(index) : Oute(index) = Oute_ee(index)
  309.    Ramp_on(index) = Ramp_on_ee(index)
  310.    Ramp_off(index) = Ramp_off_ee(index)
  311. Next Index
  312.  
  313. Menu_bit = 0
  314. Irc_val_celk = 0
  315. Irc_val = 0
  316. 'Krok_val = 0
  317. 'Ii = 2900
  318. Zmena = 0
  319. Irc_val_celk_2 = 0
  320. Irc_val = 0
  321. 'Nast_konst = 0
  322. Comm_period_tlacitka = 25                                   '' ROZSYNCHONIZOVANI S CASOVACEM PRVNI KOMUNIKACE
  323.  
  324.  
  325.  
  326. Const Reakce_tlacitka = 20                                  ''prodleva po jake se vyhodnoti, ze tlacitko je stlaceno - nabezna hrana
  327. Const Opakovana_reakce_tlacitka = 200                       '' doba podrzeni tlacitka, od ktere se hodnota " rozbehne "
  328. Const Rychlost_pridavku_pwm = 20                            ''cislo jak rychly bude pridavek
  329. Const Rychlost_pridavku_ram = 20                            ''cislo jak rychly bude pridavek
  330. Const Pridavek_pwm = 10                                     '' o kolik se zmeni hodnota pri podrzeni tlacitka
  331. Const Pridavek_ram = 5
  332.  
  333.  
  334.  
  335.  
  336. Setfont Font8x8
  337. Set Refresh_bit
  338. Cls
  339.  
  340.  
  341.  
  342. If Ee_hladiny <> 6 Then
  343.    Cista_min = 835 / 5.65
  344.    Minimum_ee = Cista_min
  345.    'Minimum = Cista_max
  346.    Cista_max = 270 / 5.65
  347.    Maximum_ee = Cista_max
  348.    'Maximum = Cista_min
  349.    Ee_hladiny = 6
  350. End If
  351. Waitms 100
  352. Cista_min = Minimum_ee
  353. Cista_max = Maximum_ee
  354. Kalova_min = Minimum_kalova_ee
  355. Kalova_max = Maximum_kalova_ee
  356. Enable Interrupts
  357.  
  358.  
  359.  
  360.  
  361. Do
  362.  
  363.  
  364. '******** MODBUS PRIJEM OD UFA A DISPLEJE ********************
  365.    If Data_prijata = 1 Then
  366.  
  367.       Data_prijata = 0
  368.       '' sestaveni hodnoty crc z poslednich dvou bajtu
  369.       Index2 = Buf_long - 1
  370.       Crc = Makeint(mbuf(index2) , Mbuf(buf_long))          ' create word of received crc
  371.       Decr Index2
  372.       ''vypocet crc z prichozi informace (je potreba modbus.lib)
  373.       Crc2 = Crcmb(mbuf(1) , Index2)
  374.       Adresa_pameti = 1
  375.       If Crc = Crc2 Then
  376.          If Master = 1 Then
  377.             '' pokud jsme master, zapiseme si data podle toho ktery slejv nam odpovida
  378.             If Mbuf(2) = 1 Then Adresa_pameti = 30
  379.             If Mbuf(2) = 2 Then Adresa_pameti = 20
  380.          ''Else...
  381.          '' JSME NYNI MASTER
  382.          End If
  383.          Zarizeni = Mbuf(3)                                 '' Naplneni "m"                 '' hodnot podle adresy
  384.          Pocet_wordu = Mbuf(4)
  385.          Index2 = 5
  386.          For X = 1 To Pocet_wordu                           'Pocet_polozek
  387.             M(adresa_pameti) = Mbuf(index2) * 256
  388.             Incr Index2
  389.             M(adresa_pameti) = M(adresa_pameti) + Mbuf(index2)
  390.             Incr Index2
  391.             Incr Adresa_pameti
  392.          Next
  393.       End If
  394.  
  395.       Index = 0
  396.       '**** SESTAVENI PRACOVNICH PROMENNYCH ***********
  397.       Otacky_plus = M(30).3
  398.       Otacky_minus = M(30).2
  399.       'Otacky_motoru = M(31)
  400.       Tlak_pozadovany_automat = M(20)
  401.       Vykon_vyveva = M(21)
  402.       Automat = M(22).0
  403.       Word5 = M(30)
  404.       Word6 = M(31)
  405.       Word7 = M(32)
  406.       Word8 = M(33)
  407.  
  408.       Tlak_vyveva = Vykon_vyveva
  409.       If Vykon_vyveva > 100 Then
  410.          Tlak_vyveva = 100
  411.       End If
  412.    End If
  413.  
  414.    Skupina = 10
  415.    Pocet_wordu = 2
  416.  
  417.    Tlacitka_1.11 = Recykl_cerp_hrub_filtr
  418.    Tlacitka_1.12 = Cyklon
  419.  
  420.  
  421. '(
  422.    If Vyveva_sani = 1 Then
  423.    Tlak_vyveva_disp = Podtlak_vyveva
  424.    Elseif Vyveva_sani = 0 And Vyveva_odvetrani = 0 Then
  425.    Tlak_vyveva_disp = Pretlak_vyveva
  426.    Elseif Vyveva_odvetrani = 1 Then
  427.    Tlak_vyveva_disp = 0
  428.    End If
  429. ')
  430.  
  431.   ' Tlak_vyveva_disp = Podtlak_vyveva
  432.  
  433.    'M(3) = Tlak_vyveva_disp
  434.    'M(3) = Word1
  435.    'Tlacitka_1.0 = 1
  436.    'Tlacitka_1.5 = 1
  437.    'Tlacitka_2.0 = 1
  438.    M(1) = Tlacitka_1
  439.    M(2) = Tlacitka_2
  440.    M(3) = Word1
  441.    M(4) = Word2
  442.    M(5) = Word3
  443.    M(6) = Word4
  444.    'Call Prepoct_na_word(word6)
  445.    M(7) = Word5
  446.    M(8) = Word6
  447.    Call Prepocet_na_word(word6)
  448.    M(9) = Word7
  449.    M(10) = Word8
  450.  
  451.  
  452.  
  453.  
  454.    If Vysilej = 1 Then
  455.       Reset Vysilej
  456.       Mbuf(1) = Skupina
  457.       If Master = 1 Then
  458.          Mbuf(2) = Slave
  459.       ''Else  ''JSME MASTER
  460.          ''Mbuf(2) = 1
  461.       End If
  462.       Mbuf(3) = 0
  463.       If Slave = 2 Then
  464.          Pocet_wordu = 10
  465.          Mbuf(4) = 10
  466.       Elseif Slave = 1 Then
  467.          Pocet_wordu = 2
  468.          Mbuf(4) = 2
  469.       End If
  470.  
  471.       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
  472.  
  473.       For X = 1 To Pocet_wordu                              'Pocet_polozek
  474.          Mbuf(index2) = High(m(adresa_pameti))
  475.          Incr Index2
  476.          Mbuf(index2) = Low(m(adresa_pameti))
  477.          Incr Index2
  478.          Incr Adresa_pameti
  479.       Next
  480.       Decr Index2
  481.       Crc = Crcmb(mbuf(1) , Index2)                         ' create checksum
  482.       Incr Index2
  483.       Mbuf(index2) = Low(crc)                               'add to buffer
  484.       Incr Index2
  485.       Mbuf(index2) = High(crc)
  486.       For X = 1 To Index2
  487.          Printbin #2 , Mbuf(x) ; 1
  488.       Next
  489.    End If
  490.  
  491. '**************KOMUNIKACE_TLACITKA******************************
  492.    If Data_prijata_tlacitka = 1 Then
  493.       Data_prijata_tlacitka = 0
  494.       '' sestaveni hodnoty crc z poslednich dvou bajtu
  495.       Index2_tl = Buf_long_tl - 1
  496.       Crc_tl = Makeint(mbuf_tl(index2_tl) , Mbuf_tl(buf_long_tl))       ' create word of received crc
  497.       Decr Index2_tl
  498.        ''vypocet crc z prichozi informace (je potreba modbus.lib)
  499.       Crc2_tl = Crcmb(mbuf_tl(1) , Index2_tl)
  500.       Adresa_pameti = 1
  501.       If Crc_tl = Crc2_tl Then
  502.          If Master = 1 Then
  503.  
  504.             If Mbuf_tl(2) = 2 Then Adresa_pameti_tl = 40 : Bufik = 2
  505.             If Mbuf_tl(2) = 3 Then Adresa_pameti_tl = 44 : Bufik = 3
  506.             If Mbuf_tl(2) = 4 Then Adresa_pameti_tl = 48 : Bufik = 4
  507.             If Mbuf_tl(2) = 5 Then Adresa_pameti_tl = 52 : Bufik = 5
  508.          End If
  509.          Zarizeni = Mbuf_tl(3)                              '' Naplneni "m"                 '' hodnot podle adresy
  510.          Pocet_wordu = 2
  511.          Index2_tl = 5
  512.          For X_tl = 1 To Pocet_wordu                        'Pocet_polozek
  513.             M(adresa_pameti_tl) = Mbuf_tl(index2_tl) * 256
  514.             Incr Index2_tl
  515.             M(adresa_pameti_tl) = M(adresa_pameti_tl) + Mbuf_tl(index2_tl)
  516.             Incr Index2_tl
  517.             Incr Adresa_pameti_tl
  518.          Next
  519.  
  520.       End If
  521.       '' NAHRANI PRACOVNICH BITU V SUBROUTINE
  522.       Sest_obr_spinacu
  523.       Index_tl = 0
  524.    End If
  525.  
  526.    If Vysilej_tlacitka = 1 Then
  527.       Reset Vysilej_tlacitka
  528.       '' POSTUONE OSLOVENI VSECH DESEK - ADRESY 2,3,4,5
  529.       Incr Pocitadlo
  530.       If Pocitadlo > 5 Then
  531.          Pocitadlo = 2
  532.       End If
  533.       Druh_komunikace = 0                                   ''princip - je to modbus odpoved, odpovidame slejvovi nase hodnoty, on pak nasledne odpovi zase jeho pole promennych
  534.       Mbuf_tl(1) = 10                                       'Skupina
  535.       Mbuf_tl(2) = Pocitadlo
  536.       Mbuf_tl(3) = 1                                        'Druh_komunikace
  537.       Pocet_wordu = 2
  538.       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
  539.       For X_tl = 1 To Pocet_wordu                           'Pocet_polozek
  540.          Mbuf_tl(index2_tl) = High(m(adresa_pameti_tl))
  541.          Incr Index2_tl
  542.          Mbuf_tl(index2_tl) = Low(m(adresa_pameti_tl))
  543.          Incr Index2_tl
  544.          Incr Adresa_pameti_tl
  545.       Next
  546.       Decr Index2_tl
  547.       Crc_tl = Crcmb(mbuf_tl(1) , Index2_tl)                ' create checksum
  548.       Incr Index2_tl
  549.       Mbuf_tl(index2_tl) = Low(crc_tl)                      'add to buffer
  550.       Incr Index2_tl
  551.       Mbuf_tl(index2_tl) = High(crc_tl)
  552.       For X_tl = 1 To Index2_tl
  553.          Printbin #1 , Mbuf_tl(x_tl) ; 1
  554.       Next
  555.    End If
  556.  
  557.  
  558.  
  559.  
  560.  
  561.    'Sest_obr_spinacu
  562.  
  563.  
  564.  
  565.  
  566. '''************OVLADANI_VYSTUPU*************************
  567. ' VYSTUPY:
  568. '  VYVEVA_PWM -         1     Vak_cerp_on_off
  569. '  VYVEVA_SANI -        2
  570. '  VYVEVA_VYTLAK -      3
  571. '  VYVEVA_ODVETRANI -   4
  572. '  VENTIL_KALOVA_1 -    5
  573. '  VENTIL_ZAC_KALY_2 -  6
  574. '  VENTIL_CISTA_2 -     7
  575. '  VENTIL_HORNI_KALY_3- 8
  576. '  VENTIL_REG_HRIB -    9
  577. '  VENTIL_DN13 -        10
  578. '  VENTIL_DN25 -        11
  579. '  CIS_HRUBY_FILTR -    12
  580. '  KLAPKA_NAP_CISTA -  13
  581. '  KLAPKA_NAP_KALOVA -  14
  582. '  KLAPKA_OVLDACI_PRO_F 15
  583. '  SOUPE_DOLNI          16
  584. '  SOUPE_HORNI          17
  585. '  AUTO_STOP            18
  586. '  OTACKY_PLUS          19
  587. '  OTACKY_MINUS         20
  588.  
  589.    '(
  590.    Vak_cerp_on_off = M(110).1
  591.    Vak_cerp_sani = M(110).2
  592.    Vak_cerp_vytlak = M(110).3
  593.    Vak_cerp_soupe_spodni = M(110).4
  594.    Vak_cerp_soupe_horni = M(110).5
  595.  
  596.    Vystlak_cerp_on_off = M(120).1
  597.    Vystlak_cerp_kohout_dn13 = M(120).2
  598.    Vystlak_cerp_kohout_dn25_32 = M(120).3
  599.    Vystlak_cerp_hadice_dn13 = M(120).4
  600.    Vystlak_cerp_hadice_dn25_32 = M(120).5
  601.    Vystlak_cerp_tlak_on_off = M(120).6
  602.  
  603.    Recyklace_upr_vody = M(130).1
  604.    Recyklace_cist_hrub_filtr = M(130).2
  605.    Recyklace_cist_cyklon = M(130).3
  606.    Recyklace_odcerp_kal = M(130).4
  607.  
  608.    Zavodneni_90s = M(140).1
  609.    Zavodneni_majak = M(140).2
  610.    Zavodneni_svetlo = M(140).3
  611.    Zavodneni_radio = M(140).4
  612.  
  613.  
  614.    '**************SPUSTENI VYSOKOTLAKEHO CERPADLA (CISTENI HADICI)*****************
  615.  
  616. ') if Vystlak_cerp_kohout_dn13 = 1 and Vystlak_cerp_kohout_dn25_32 = 0 And Akt_cista > 20 And Akt_kalova < 90  then
  617.       Hadice_nastavena = 1
  618.    Elseif Vystlak_cerp_kohout_dn13 = 0 And Vystlak_cerp_kohout_dn25_32 = 1 Then
  619.       Hadice_nastavena = 1
  620.    Else
  621.       Hadice_nastavena = 0
  622.    End If
  623.  
  624.  
  625.    If Vystlak_cerp_on_off = 1 And Vystlak_cerp_tlak_on_off = 1 And Hadice_nastavena = 1 Then
  626.       Ventil_reg_hrib = 1
  627.       Klapka_nap_cista = 1
  628.    Elseif Vystlak_cerp_on_off = 0 Or Vystlak_cerp_tlak_on_off = 0 Or Hadice_nastavena = 0 Or Recyklace_cist_hrub_filtr = 1then
  629.       Ventil_reg_hrib = 0
  630.       Klapka_nap_cista = 0
  631.    End If
  632.  
  633.    If Ventil_reg_hrib = 1 And Klapka_nap_cista = 1 Then
  634.       Vystlak_cerpadlo = 1
  635.    Elseif Hadice_nastavena = 0 Or Ventil_reg_hrib = 0 Or Vystlak_cerp_on_off = 0 Or Vystlak_cerp_tlak_on_off = 0 Or Klapka_nap_cista = 0 Then
  636.       Vystlak_cerpadlo = 0
  637.    End If
  638.  
  639.  
  640.    '***************automaticky_rezim_tlak******************************************
  641.    If Automat = 1 Then
  642.  
  643.       Rozdil_tlaku = Tlak_pozadovany_automat - Tlak_vody_hrib
  644.  
  645.       If Rozdil_tlaku > 5 And Men_otacky = 0 Then
  646.          Set Otacky_pridej
  647.  
  648.  
  649.       Elseif Rozdil_tlaku < -5 And Men_otacky = 0 Then
  650.          Set Otacky_uber
  651.  
  652.       Else
  653.          Reset Otacky_pridej
  654.          Reset Otacky_uber
  655.       End If
  656.  
  657.  
  658.       If Otacky_pridej = 1 And Zmena_otacek_time < 250 Then ' pridej otacky
  659.  
  660.          Otacky_plus = 1
  661.       End If
  662.  
  663.       If Otacky_uber = 1 And Zmena_otacek_time < 250 Then
  664.  
  665.          Otacky_minus = 1
  666.       End If
  667.  
  668.       If Zmena_otacek_time > 250 Then
  669.          Otacky_plus = 0
  670.          Otacky_minus = 0
  671.          Reset Otacky_uber
  672.          Reset Otacky_pridej
  673.          Zmena_otacek_time = 0
  674.          Cteni_otacek_time = 1
  675.          Men_otacky = 1
  676.       End If
  677.  
  678.       If Cteni_otacek_time > 500 Then
  679.          Men_otacky = 0
  680.          Cteni_otacek_time = 0
  681.       End If
  682.    Elseif Automat = 0 Then
  683.       Reset Otacky_uber
  684.       Reset Otacky_pridej
  685.    End If
  686.  
  687.  
  688.  
  689.    If Recyklace_upr_vody = 1 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 0 Then
  690.       Recyklace_funkce = 0
  691.    Elseif Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 1 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 0 Then
  692.       Recyklace_funkce = 0
  693.    Elseif Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 1 And Recyklace_odcerp_kal = 0 Then
  694.       Recyklace_funkce = 0
  695.    Elseif Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 1 Then
  696.       Recyklace_funkce = 0
  697.    Else
  698.       'Set Vypnout_vystupy
  699.       Recyklace_funkce = 1
  700.    End If
  701.  
  702.    If Vypnout_vystupy = 1 Then
  703.       'RECYKLACE
  704.       Recyklace_1sec = 0
  705.       Recyklace_time = 0
  706.       Reset Ventil_kalova_1
  707.       Reset Ventil_zac_kaly_2
  708.       Reset Ventil_cista_2
  709.       Reset Ventil_horni_kaly_3
  710.       Reset Recykl_cerp_hrub_filtr
  711.       Reset Cyklon
  712.       'CISTENI CYLKONU
  713.       Reset Cyklon
  714.       Reset Klapka_ovldaci_pro_f
  715.  
  716.  
  717.      ' Reset Vystlak_cerpadlo
  718.      ' Reset Ventil_reg_hrib
  719.       Reset Cis_hruby_filtr
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.       If Recyklace_upr_vody = 0 And Recyklace_cist_cyklon = 0 And Recyklace_cist_hrub_filtr = 0 And Recyklace_odcerp_kal = 0 Then
  728.          Recyklace_funkce = 0
  729.       End If
  730.       Vypnout_vystupy = 0
  731.    End If
  732.  
  733.  '*****************SPUSTENI RECYKLACE ******************************************
  734.    If Recyklace_upr_vody = 1 And Recyklace_funkce = 0 And Akt_kalova > 20 And Akt_cista < 90 Then
  735.  
  736.       'If Recyklace_1sec = 1 Then
  737.       Set Ventil_kalova_1
  738.       'Elseif Recyklace_1sec = 2 Then
  739.       Set Ventil_zac_kaly_2
  740.       'Elseif Recyklace_1sec = 3 Then
  741.       Set Ventil_cista_2
  742.       'Elseif Recyklace_1sec = 4 Then
  743.       Set Ventil_horni_kaly_3
  744.       'Elseif Recyklace_1sec = 5 Then
  745.       Set Recykl_cerp_hrub_filtr
  746.       'Elseif Recyklace_1sec = 6 Then
  747.       Set Cyklon
  748.  
  749.  
  750.       'End If
  751.  
  752.    Elseif Recyklace_upr_vody = 0 Then
  753.  
  754.       Set Vypnout_vystupy
  755.  
  756.    End If
  757.  
  758.    '**************SPUSTENI CISTENI_CYKLONU NA 10s*******************************
  759.  
  760.    If Recyklace_cist_cyklon = 0 And Cisteni_cyklonu_time = 20 Then
  761.       Cisteni_cyklonu_time = 0
  762.    End If
  763.    If Recyklace_cist_cyklon = 1 And Recyklace_funkce = 0 And Cisteni_cyklonu_time < 10 Then
  764.  
  765.       Set Cyklon
  766.       Set Ventil_horni_kaly_3
  767.       Set Klapka_ovldaci_pro_f
  768.    Elseif Recyklace_cist_cyklon = 0 Then
  769.  
  770.    'asdasdasd
  771.       Set Vypnout_vystupy
  772.  
  773.       Cisteni_cyklonu_time = 0
  774.    Elseif Cisteni_cyklonu_time > 10 Then
  775.       Set Vypnout_vystupy
  776.  
  777.    End If
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.    '****************CISTENI HRUBEHO FILTRU**************************************
  785.  
  786.    If Recyklace_cist_hrub_filtr = 1 And Recyklace_funkce = 0 And Akt_cista > 20 And Akt_kalova < 90 Then
  787.  
  788.       If Otacky_motoru < 85 Then
  789.          Reset Vystlak_cerp_tlak_on_off
  790.          If Cist_hrub_filtru_time > 500 Then
  791.             Cist_hrub_filtru_time = 600
  792.             Vystlak_cerpadlo = 1
  793.             Recykl_cerp_hrub_filtr = 1
  794.          End If
  795.       'Ventil_kalova_1 = 1
  796.          Ventil_horni_kaly_3 = 1
  797.          Klapka_ovldaci_pro_f = 1
  798.  
  799.          Cis_hruby_filtr = 1
  800.  
  801.          Ventil_cista_2 = 1
  802.       End If
  803.       If Otacky_motoru > 80 Then
  804.          Otacky_minus = 1
  805.       Elseif Otacky_motoru < 80 Then
  806.          Otacky_minus = 0
  807.       End If
  808.  
  809.    Elseif Recyklace_cist_hrub_filtr = 0 Then
  810.  
  811.  
  812.       Set Vypnout_vystupy
  813.  
  814.  
  815.  
  816.  
  817.       Cist_hrub_filtru_time = 0
  818.  
  819.    End If
  820.  
  821.    '*****************ODCERPANI KALOVE VODY**************************************
  822.  
  823.    If Recyklace_odcerp_kal = 1 And Recyklace_funkce = 0 And Akt_kalova > 5 Then
  824.      ' Set Ventil_horni_kaly_3
  825.       Set Recykl_cerp_hrub_filtr
  826.    Elseif Recyklace_odcerp_kal = 0 Then
  827.       Set Vypnout_vystupy
  828.    End If
  829.    '************************SPUSTENI VYVEVY*************************************
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.    If Vak_cerp_sani = 1 And Vak_cerp_vytlak = 0 And Akt_kalova < 90 Then
  837.       Vyveva_sani = 1
  838.       Vyveva_odvetrani = 0
  839.       Vyveva_ok = 1
  840.    Elseif Vak_cerp_vytlak = 1 And Vak_cerp_sani = 0 And Akt_kalova > 20 Then
  841.       Vyveva_sani = 0
  842.       Vyveva_odvetrani = 0
  843.       Vyveva_ok = 1
  844.    Elseif Vak_cerp_sani = 0 And Vak_cerp_vytlak = 0 Then
  845.       Vyveva_odvetrani = 1
  846.       Vyveva_sani = 0
  847.       Vyveva_ok = 1
  848.    Elseif Vak_cerp_sani = 1 And Vak_cerp_vytlak = 0 And Akt_kalova > 91 Then
  849.       Vyveva_ok = 0
  850.    Elseif Vak_cerp_vytlak = 1 And Vak_cerp_sani = 0 And Akt_kalova < 20 Then
  851.       Vyveva_ok = 0
  852.    End If
  853.    If Vyveva_ok = 1 And Teplota_vyveva > 500 Then
  854.       Vyveva_pwm = Vak_cerp_on_off
  855.    End If
  856.  
  857.    '************************OVLADANI SOUPAT*************************************
  858.    Soupe_dolni = Vak_cerp_soupe_spodni
  859.    Soupe_horni = Vak_cerp_soupe_horni
  860.  
  861.    If Vystlak_cerp_kohout_dn13 = 1 And Vystlak_cerp_kohout_dn25_32 = 0 Then
  862.       Ventil_dn13 = 1
  863.       Ventil_dn25 = 0
  864.    Elseif Vystlak_cerp_kohout_dn13 = 0 And Vystlak_cerp_kohout_dn25_32 = 1 Then
  865.       Ventil_dn13 = 0
  866.       Ventil_dn25 = 1
  867.    Elseif Vystlak_cerp_kohout_dn13 = 0 And Vystlak_cerp_kohout_dn25_32 = 0 Then
  868.       Ventil_dn13 = 0
  869.       Ventil_dn25 = 0
  870.    End If
  871.  
  872.  
  873.  
  874.  
  875.    'Ventil_reg_hrib = Vystlak_cerp_tlak_on_off
  876.  
  877.    'VYVEVA_SANI = Vak_cerp_sani
  878.                       ' Pozor Vystlak Cerpadlo ""
  879.    'VYVEVA_ODVETRANI =
  880.    'VENTIL_KALOVA_1 =
  881.    'VENTIL_ZAC_KALY_2 =
  882.    'VENTIL_CISTA_2 =
  883.    'VENTIL_HORNI_KALY_3 =
  884.    'VENTIL_REG_HRIB =
  885.    'VENTIL_DN13 =
  886.    'VENTIL_DN25 =
  887.    'CIS_HRUBY_FILTR =
  888.  
  889.    If Menu_bit = 1 Then
  890.    '#################### NASTAVENI PWM HRANIC A RAMP PRO VYSTUPY #############################
  891.       If Menu_pos < 17 And Refresh_bit = 1 Then
  892.          Reset Refresh_bit
  893.          Cls_
  894.          Setfont Font8x8
  895.          Lcdat 1 , 1 , "NASTAVENI"
  896.          Lcdat 2 , 1 , "VENTILU:                   ";
  897.          If Set_pos = 0 Then
  898.             Setfont 100 : Lcdat 1 , 80 , Menu_pos ; "::::::" ; : Lcdat 1 , 60 , ">>";
  899.          Else
  900.             Setfont 100 : Lcdat 1 , 80 , Menu_pos ; "::::::" ; : Lcdat 1 , 60 , "::";
  901.          End If
  902.  
  903.          Setfont Font8x8 : Lcdat 4 , 1 , "MINIMUM  "
  904.          If Set_pos = 1 Then
  905.             Setfont 100 : Lcdat 3 , 80 , Outb(menu_pos) ; "::" ; : Lcdat 3 , 60 , ">>";
  906.          Else
  907.             Setfont 100 : Lcdat 3 , 80 , Outb(menu_pos) ; "::" ; : Lcdat 3 , 60 , "::" ;
  908.          End If
  909.          Setfont Font8x8 : Lcdat 6 , 1 , "MAXIMUM  "
  910.          If Set_pos = 2 Then
  911.             Setfont 100 : Lcdat 5 , 80 , Oute(menu_pos) ; "::" ; : Lcdat 5 , 60 , ">>";
  912.          Else
  913.             Setfont 100 : Lcdat 5 , 80 , Oute(menu_pos) ; "::" ; : Lcdat 5 , 60 , "::" ;
  914.          End If
  915.          Setfont Font8x8 : Lcdat 7 , 1 , "RAM _/ :" ; : Lcdat 8 , 1 , "RAM \_ :";
  916.          If Set_pos = 3 Then
  917.             Lcdat 7 , 60 , ">>" ; : Lcdat 7 , 80 , Ramp_on(menu_pos) ; "  " ;
  918.          Else
  919.             Lcdat 7 , 60 , "  " ; : Lcdat 7 , 80 , Ramp_on(menu_pos) ; "  " ;
  920.          End If
  921.          If Set_pos = 4 Then
  922.             Lcdat 8 , 60 , ">>" ; : Lcdat 8 , 80 , Ramp_off(menu_pos) ; "  " ;
  923.          Else
  924.             Lcdat 8 , 60 , "  " ; : Lcdat 8 , 80 , Ramp_off(menu_pos) ; "  " ;
  925.          End If
  926.       Elseif Menu_pos = 17 And Refresh_bit = 1 Then
  927.          Reset Refresh_bit
  928.          Cls_
  929.          Setfont My12d
  930.          Lcdat 5 , 40 , "EXIT?  >"
  931.  
  932.       Elseif Menu_pos = 40 And Refresh_bit = 1 Then
  933.          Reset Refresh_bit
  934.          Cls_
  935.          Setfont Font8x8
  936.          Lcdat 1 , 1 , " HLADINA CISTA VODA     " , 1
  937.          Lcdat 4 , 1 , " HLADINA KALOVA VODA    " , 1
  938.          Lcdat 8 , 1 , ".CISTA:" , 1
  939.          Lcdat 8 , 60 , ".KALOVA:" , 1
  940.          Lcdat 8 , 36 , Akt_cista ; "%";
  941.          Lcdat 8 , 105 , Akt_kalova ; "%";
  942.  
  943.          Setfont 100 : Lcdat 2 , 1 , ; Prevodnik(7) ;
  944.          Setfont 100 : Lcdat 5 , 1 , ; Prevodnik(8) ;
  945.  
  946.          Setfont Font8x8 : Lcdat 2 , 60 , "MIN?" : Lcdat 3 , 60 , "MAX?" : Lcdat 5 , 60 , "MIN?" : Lcdat 6 , 60 , "MAX?" : Lcdat 7 , 60 , "EXIT?"
  947.  
  948.  
  949.  
  950.          If Set_pos = 2 Then
  951.             Lcdat 2 , 90 , "<< OK?"
  952.          Elseif Set_pos = 3 Then
  953.             Lcdat 3 , 90 , "<< OK?"
  954.          Elseif Set_pos = 5 Then
  955.             Lcdat 5 , 90 , "<< OK?"
  956.          Elseif Set_pos = 6 Then
  957.             Lcdat 6 , 90 , "<< OK?"
  958.          Elseif Set_pos = 7 Then
  959.             Lcdat 7 , 90 , "<< OK?"
  960.          Else
  961.             Lcdat 2 , 90 , "         "
  962.             Lcdat 3 , 90 , "         "
  963.             Lcdat 5 , 90 , "         "
  964.             Lcdat 6 , 90 , "         "
  965.             Lcdat 7 , 90 , "         "
  966.  
  967.          End If
  968.  
  969.  
  970.       End If
  971.    '#################### PRIME OVLADANI VYSTUPU V TESTOVACIM REZIMU #############################
  972.    '' POKUD JE TESTOVACI REZIM, VYSTUPY NEOVLADA PROGRAM, JEN TLACITKA
  973.    '(
  974.       If Menu_pos => 20 And Menu_pos < 29 Then
  975.       Testovaci_rezim = 1
  976.       Else
  977.       Testovaci_rezim = 0
  978.       End If
  979.    ')                                               ')
  980.       If Menu_pos = 20 And Refresh_bit = 1 Then
  981.          Reset Refresh_bit
  982.          Cls_
  983.          Setfont Font8x8
  984.          Lcdat 1 , 1 , "VENTIL KALOVA VYSTUP"
  985.          Lcdat 6 , 1 , "VENTIL ZA CERP. KALY"
  986.          Setfont My12d
  987.          Lcdat 2 , 1 , "    CH:OUT5"
  988.          Lcdat 7 , 1 , "    H:OUT6"
  989.       Elseif Menu_pos = 21 And Refresh_bit = 1 Then
  990.          Reset Refresh_bit
  991.          Cls_
  992.          Setfont Font8x8
  993.          Lcdat 1 , 1 , "VE. CISTA ZA CYKLON."
  994.          Lcdat 6 , 1 , "VE. KALY ZA CYKLONE."
  995.          Setfont My12d
  996.          Lcdat 2 , 1 , "    E:OUT7"
  997.          Lcdat 7 , 1 , "    F:OUT8"
  998.       Elseif Menu_pos = 22 And Refresh_bit = 1 Then
  999.          Reset Refresh_bit
  1000.          Cls_
  1001.          Setfont Font8x8
  1002.          Lcdat 1 , 1 , "REGULACNI HRIB TLAK"
  1003.          Lcdat 6 , 1 , "VENTIL DN13"
  1004.          Setfont My12d
  1005.          Lcdat 2 , 1 , "    OUT9"
  1006.          Lcdat 7 , 1 , "    OUT10"
  1007.       Elseif Menu_pos = 23 And Refresh_bit = 1 Then
  1008.          Reset Refresh_bit
  1009.          Cls_
  1010.          Setfont Font8x8
  1011.          Lcdat 1 , 1 , "VENTIL DN25"
  1012.          Lcdat 6 , 1 , "VE.CISTENI HR.FILTR"
  1013.          Setfont My12d
  1014.          Lcdat 2 , 1 , "    OUT11"
  1015.          Lcdat 7 , 1 , "    OUT12"
  1016.       Elseif Menu_pos = 24 And Refresh_bit = 1 Then
  1017.          Reset Refresh_bit
  1018.          Cls_
  1019.          Setfont Font8x8
  1020.          Lcdat 1 , 1 , "VE.NAPOUSTENI CISTA"
  1021.          Lcdat 6 , 1 , "VE.NAPOUSTENI KALO."
  1022.          Setfont My12d
  1023.          Lcdat 2 , 1 , "    OUT13"
  1024.          Lcdat 7 , 1 , "    OUT14"
  1025.       Elseif Menu_pos = 25 And Refresh_bit = 1 Then
  1026.          Reset Refresh_bit
  1027.          Cls_
  1028.          Setfont Font8x8
  1029.          Lcdat 1 , 1 , "OVLADANI F"
  1030.          Lcdat 6 , 1 , "SOUPE DOLNI"
  1031.          Setfont My12d
  1032.          Lcdat 2 , 1 , "    OUT15"
  1033.          Lcdat 7 , 1 , "    OUT16"
  1034.       Elseif Menu_pos = 26 And Refresh_bit = 1 Then
  1035.          Reset Refresh_bit
  1036.          Cls_
  1037.          Setfont Font8x8
  1038.          Lcdat 1 , 1 , "SOUPE HORNI"
  1039.          Lcdat 6 , 1 , "AUTO STOP"
  1040.          Setfont My12d
  1041.          Lcdat 2 , 1 , "    OUT17"
  1042.          Lcdat 7 , 1 , "    OUT18"
  1043.       Elseif Menu_pos = 27 And Refresh_bit = 1 Then
  1044.          Reset Refresh_bit
  1045.          Cls_
  1046.          Setfont Font8x8
  1047.          Lcdat 1 , 1 , "AUTO OTACKY +"
  1048.          Lcdat 6 , 1 , "AUTO OTACKY -"
  1049.          Setfont My12d
  1050.          Lcdat 2 , 1 , "    OUT19"
  1051.          Lcdat 7 , 1 , "    OUT20"
  1052.       Elseif Menu_pos = 28 And Refresh_bit = 1 Then
  1053.          Reset Refresh_bit
  1054.          Cls_
  1055.          Setfont My12d
  1056.          Lcdat 1 , 50 , "EXIT? >"
  1057.           ''...
  1058.  
  1059.       End If
  1060.  
  1061.    Elseif Menu_bit = 0 Then
  1062.       If Refresh_bit = 1 Then
  1063.          Reset Refresh_bit
  1064.          Cls_
  1065.          Setfont Font8x8
  1066.          If Strana = 1 Then
  1067.             Strana1
  1068.          Elseif Strana = 2 Then
  1069.             Strana2
  1070.          Elseif Strana = 3 Then
  1071.             Strana3
  1072.          Elseif Strana = 4 Then
  1073.             Strana4
  1074.          Elseif Strana = 5 Then
  1075.             Strana5
  1076.          Elseif Strana = 6 Then
  1077.             Strana6
  1078.          End If
  1079.       End If
  1080.    End If
  1081.  
  1082.  
  1083. '' PO OPUSTENI NASTAVENI VYSTUPU SE ZDE ULOZI DATA
  1084.    If Uloz_data = 1 Then
  1085.       Uloz_data = 0 :
  1086.       Setfont Font8x8 : Lcdat 8 , 1 , "SAVE................         " , 1
  1087.       Disable Interrupts
  1088.       For Index = 1 To 16
  1089.          Outb_ee(index) = Outb(index) : Oute_ee(index) = Oute(index)
  1090.          Ramp_on_ee(index) = Ramp_on(index) : Ramp_off_ee(index) = Ramp_off(index)
  1091.       Next Index
  1092.       Enable Interrupts
  1093.       Waitms 150 : Cls_ : Set Refresh_bit
  1094.    End If
  1095.  
  1096.  
  1097.  
  1098.    If Ad_bit = 1 Then
  1099.       Ad_bit = 0 : Read_inputs
  1100.    End If
  1101. '' NASTAVENI VYSTUPU V NORMALNIM REZIMU, POKUD JSME V TESTOVACIM, OVLADAJI SE VYSTUPY TLACITKY !!!
  1102.    If Refresh_out = 1 Then
  1103.       Refresh_out = 0
  1104.       If Testovaci_rezim = 0 Then Send_outputs
  1105.  
  1106.       Send_pwm
  1107.    End If
  1108.  
  1109.    If Bit_time = 1 Then
  1110.       Bit_time = 0 : Obsluha_tlacitek
  1111.    End If
  1112.  
  1113.  
  1114. Loop
  1115.  
  1116. Sub Init_pca9685
  1117.  
  1118. '(
  1119.    /********************************************/
  1120.    /* Init code for the PCA9685                */
  1121.    /* Input:[address of the pc9685 to init]    */
  1122.    /* Output:[void]                            */
  1123.    /********************************************/
  1124. ')
  1125.    I2cstart                                                 '' Start
  1126.    I2cwbyte &B10000000                                      '' Slave address
  1127.    I2cwbyte &B00000000                                      '' Mode 1 address
  1128.    I2cwbyte &B00110001                                      '' Setting mode to sleep so we can change teh default PWM frequency
  1129.    I2cstop                                                  '' Stop
  1130.    Waitms 1                                                 '' Required 50 us delay
  1131.    I2cstart                                                 '' Start
  1132.    I2cwbyte &B10000000                                      '' Slave address
  1133.    I2cwbyte &HFE                                            '' PWM frequency PRE_SCALE address
  1134.    I2cwbyte 50                                              '' osc_clk/(4096*update_rate) '' 25000000/(4096*1500)= 4.069 ~4
  1135.    I2cstop                                                  '' Stop
  1136.    Waitms 1                                                 '' delay at least 500 us
  1137.    I2cstart                                                 '' Start
  1138.    I2cwbyte &B10000000                                      '' Slave address
  1139.    I2cwbyte &B00000000                                      '' Mode 1 register address
  1140.    I2cwbyte &HA1                                            '' Set to our prefered mode[ Reset, INT_CLK, Auto-Increment, Normal Mode]
  1141.    I2cstop                                                  '' Stop
  1142.    Waitms 1                                                 '' delay at least 500 us
  1143.    I2cstart                                                 '' Start
  1144.    I2cwbyte &B10000000                                      '' Slave Address
  1145.    I2cwbyte &B00000001                                      '' Mode2 register address
  1146.    I2cwbyte &B00000100                                      '' Set to our prefered mode[Output logic state not inverted, Outputs change on STOP,
  1147.    I2cstop                                                  '' totem pole structure, When OE = 1 (output drivers not enabled), LEDn = 0]
  1148.    Waitms 1
  1149.     '' all led off
  1150.    I2cstart
  1151.    I2cwbyte &B10000000
  1152.    I2cwbyte &HFC                                            '' Allled Off Regiter
  1153.    I2cwbyte &B00000000                                      ''data
  1154.    I2cwbyte &B00010000                                      '' ; / / Data
  1155.    I2cstop
  1156.  
  1157.  
  1158. End Sub
  1159.  
  1160.  
  1161. Sub Obsluha_tlacitek
  1162.    If Tl_ok = 0 And Tim_tl_ok < 1000 Then Incr Tim_tl_ok
  1163.    If Tl_ok = 1 Then Tim_tl_ok = 0
  1164.    If Tl_up = 0 And Tim_tl_up < 1000 Then Incr Tim_tl_up
  1165.    If Tl_up = 1 Then Tim_tl_up = 0
  1166.    If Tl_down = 0 And Tim_tl_down < 1000 Then Incr Tim_tl_down
  1167.    If Tl_down = 1 Then Tim_tl_down = 0
  1168.  
  1169.  
  1170.    If Menu_bit = 1 And Menu_pos > 0 And Menu_pos < 17 Then
  1171.    '' NASTAVOVANI PARAMETRU VYSTUPU
  1172.       Tlacitka_menu1
  1173.  
  1174.  
  1175.        'NASLEDUJE UZ NOVA FORMA REAKCE TLACITEK PRO ZMENU PWM, NEBO RAMP...
  1176.       Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1177.       If Set_pos = 0 Then
  1178.          If Tim_tl_up = 20 Then
  1179.             Incr Menu_pos
  1180.             If Menu_pos = 18 Then Menu_pos = 1
  1181.             Set Refresh_bit
  1182.          Elseif Tim_tl_down = 20 Then
  1183.             Decr Menu_pos
  1184.             If Menu_pos = 0 Then Menu_pos = 17
  1185.             Set Refresh_bit
  1186.          End If
  1187. '(
  1188. ''cislo 375 = 1 sekunda
  1189.          Const Reakce_tlacitka = 20                                  ''prodleva po jake se vyhodnoti, ze tlacitko je stlaceno - nabezna hrana
  1190.          Const Opakovana_reakce_tlacitka = 200                       '' doba podrzeni tlacitka, od ktere se hodnota " rozbehne "
  1191.          Const Rychlost_pridavku_pwm = 20                            ''cislo jak rychly bude pridavek
  1192.          Const Rychlost_pridavku_ram = 20                            ''cislo jak rychly bude pridavek
  1193.          Const Pridavek_pwm = 4                             '' o kolik se zmeni hodnota pri podrzeni tlacitka
  1194.          Const Pridavek_ram = 4
  1195. ')
  1196.       Elseif Set_pos = 1 Then
  1197.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1198.             If Outb(menu_pos) < 4096 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Outb(menu_pos)       ''po prvnim stisknuti
  1199.             If Outb(menu_pos) < 4096 And Tim_tl_up = Opakovana_reakce_tlacitka Then Outb(menu_pos) = Outb(menu_pos) + Pridavek_pwm       ''po podrzeni tlacitka
  1200.             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...
  1201.             ''minimalni rozmezi (interva) max - minimum je 260. Pokud je tento interval mensi, automaticky se hranice koriguji
  1202.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1203.             While Pomw4 < 261                               '' korekce nastaveni dokud neni hranice minimalne 261, protoze pridavek muze rozdil libovolne vychylit
  1204.                Decr Outb(menu_pos)
  1205.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)      ''kontrolni odecet
  1206.             Wend
  1207.             Set Refresh_bit
  1208.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1209.             If Outb(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Outb(menu_pos)
  1210.             If Outb(menu_pos) > 0 And Tim_tl_down = Opakovana_reakce_tlacitka Then Outb(menu_pos) = Outb(menu_pos) - Pridavek_pwm
  1211.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_pwm
  1212.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1213.             While Pomw4 < 261 Or Outb(menu_pos) < 0
  1214.                Incr Outb(menu_pos)
  1215.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1216.             Wend
  1217.             Set Refresh_bit
  1218.          End If
  1219.       Elseif Set_pos = 2 Then
  1220.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1221.             If Oute(menu_pos) < 4096 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Oute(menu_pos)
  1222.             If Oute(menu_pos) < 4096 And Tim_tl_up = Opakovana_reakce_tlacitka Then Oute(menu_pos) = Oute(menu_pos) + Pridavek_pwm
  1223.             If Tim_tl_up = Opakovana_reakce_tlacitka Then Tim_tl_up = Opakovana_reakce_tlacitka - Rychlost_pridavku_pwm
  1224.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1225.             While Pomw4 < 261
  1226.                Decr Oute(menu_pos)
  1227.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1228.             Wend
  1229.             Set Refresh_bit
  1230.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1231.             If Oute(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Oute(menu_pos)
  1232.             If Oute(menu_pos) > 0 And Tim_tl_down = Opakovana_reakce_tlacitka Then Oute(menu_pos) = Oute(menu_pos) - Pridavek_pwm
  1233.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_pwm
  1234.             Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1235.             While Pomw4 < 261 Or Oute(menu_pos) < 0
  1236.                Incr Oute(menu_pos)
  1237.                Pomw4 = Oute(menu_pos) - Outb(menu_pos)
  1238.             Wend
  1239.             Set Refresh_bit
  1240.          End If
  1241.       Elseif Set_pos = 3 Then
  1242.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1243.             If Ramp_on(menu_pos) < 1000 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Ramp_on(menu_pos)
  1244.             If Ramp_on(menu_pos) < 1000 And Tim_tl_up = Opakovana_reakce_tlacitka Then Ramp_on(menu_pos) = Ramp_on(menu_pos) + Pridavek_ram
  1245.             If Tim_tl_up = Opakovana_reakce_tlacitka Then Tim_tl_up = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1246.             Set Refresh_bit
  1247.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1248.             If Ramp_on(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Ramp_on(menu_pos)
  1249.             If Ramp_on(menu_pos) > 5 And Tim_tl_down = Opakovana_reakce_tlacitka Then Ramp_on(menu_pos) = Ramp_on(menu_pos) - Pridavek_ram
  1250.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1251.             Set Refresh_bit
  1252.          End If
  1253.       Elseif Set_pos = 4 Then
  1254.          If Tim_tl_up = Reakce_tlacitka Or Tim_tl_up = Opakovana_reakce_tlacitka Then
  1255.             If Ramp_off(menu_pos) < 1000 And Tim_tl_up < Opakovana_reakce_tlacitka Then Incr Ramp_off(menu_pos)
  1256.             If Ramp_off(menu_pos) < 1000 And Tim_tl_up = Opakovana_reakce_tlacitka Then Ramp_off(menu_pos) = Ramp_off(menu_pos) + Pridavek_ram
  1257.             If Tim_tl_up = Opakovana_reakce_tlacitka Then Tim_tl_up = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1258.             Set Refresh_bit
  1259.          Elseif Tim_tl_down = Reakce_tlacitka Or Tim_tl_down = Opakovana_reakce_tlacitka Then
  1260.             If Ramp_off(menu_pos) > 0 And Tim_tl_down < Opakovana_reakce_tlacitka Then Decr Ramp_off(menu_pos)
  1261.             If Ramp_off(menu_pos) > 5 And Tim_tl_down = Opakovana_reakce_tlacitka Then Ramp_off(menu_pos) = Ramp_off(menu_pos) - Pridavek_ram
  1262.             If Tim_tl_down = Opakovana_reakce_tlacitka Then Tim_tl_down = Opakovana_reakce_tlacitka - Rychlost_pridavku_ram
  1263.             Set Refresh_bit
  1264.          End If
  1265.  
  1266.       End If
  1267.  
  1268.       If Tim_tl_ok = Reakce_tlacitka Then
  1269.          Incr Set_pos : Set Refresh_bit
  1270.       End If
  1271.       If Set_pos > 4 Then Set_pos = 0
  1272.  
  1273.  
  1274.  
  1275.  
  1276.       '(
  1277.       If Tim_tl_ok = 20 Then
  1278.       Incr Set_pos
  1279.       If Set_pos > 4 Then Set_pos = 0
  1280.       End If
  1281. ')
  1282.    Elseif Menu_bit = 1 And Menu_pos = 17 Then
  1283.       Tlacitka_menu1
  1284.       ''VYSKAKOVACI OBRAZOVKA
  1285.       If Tim_tl_ok = 20 Then
  1286.          Reset Menu_bit : Set Refresh_bit
  1287.          ''ulozeni zmenenych dat
  1288.          Set Uloz_data
  1289.       End If
  1290.    Elseif Menu_bit = 1 And Menu_pos >= 20 And Menu_pos < 30 Then
  1291.       '' SEVISNI A TESTOVACI FUNKCE
  1292.       '' TLACITKO OK - ROTOVANI PRES VYSTUPY
  1293.       If Tim_tl_ok = 20 Then
  1294.          Tim_tl_ok = 21                                  '' JASNE, PROTOZE SE TU PROCHAZELO DVAKRAT I VICKRAT :O)
  1295.          Incr Menu_pos
  1296.          If Menu_pos = 29 Then Menu_pos = 20
  1297.          Set Refresh_bit
  1298.       End If
  1299.       If Menu_pos = 20 Then
  1300.          If Tim_tl_up > 20 Then Pwm_driver(5) = 4092     '' OUT5 / VENTIL KALOVA VYSTUP
  1301.          If Tim_tl_up < 20 Then Pwm_driver(5) = 0        '' OUT5 / VENTIL KALOVA VYSTUP
  1302.          If Tim_tl_down > 20 Then Pwm_driver(6) = 4092   '' OUT6 / VENTIL ZA CERPADLEM KALY
  1303.          If Tim_tl_down < 20 Then Pwm_driver(6) = 0      '' OUT6 / VENTIL ZA CERPADLEM KALY
  1304.       Elseif Menu_pos = 21 Then
  1305.          If Tim_tl_up > 20 Then Pwm_driver(7) = 4092
  1306.          If Tim_tl_up < 20 Then Pwm_driver(7) = 0
  1307.          If Tim_tl_down > 20 Then Pwm_driver(8) = 4092
  1308.          If Tim_tl_down < 20 Then Pwm_driver(8) = 0
  1309.       Elseif Menu_pos = 22 Then
  1310.          If Tim_tl_up > 20 Then Pwm_driver(9) = 4092
  1311.          If Tim_tl_up < 20 Then Pwm_driver(9) = 0
  1312.          If Tim_tl_down > 20 Then Pwm_driver(10) = 4092
  1313.          If Tim_tl_down < 20 Then Pwm_driver(10) = 0
  1314.       Elseif Menu_pos = 23 Then
  1315.          If Tim_tl_up > 20 Then Pwm_driver(11) = 4092
  1316.          If Tim_tl_up < 20 Then Pwm_driver(11) = 0
  1317.          If Tim_tl_down > 20 Then Pwm_driver(12) = 4092
  1318.          If Tim_tl_down < 20 Then Pwm_driver(12) = 0
  1319.       Elseif Menu_pos = 24 Then
  1320.          If Tim_tl_up > 20 Then Pwm_driver(13) = 4092
  1321.          If Tim_tl_up < 20 Then Pwm_driver(13) = 0
  1322.          If Tim_tl_down > 20 Then Pwm_driver(14) = 4092
  1323.          If Tim_tl_down < 20 Then Pwm_driver(14) = 0
  1324.       Elseif Menu_pos = 25 Then
  1325.          If Tim_tl_up > 20 Then Pwm_driver(15) = 4092
  1326.          If Tim_tl_up < 20 Then Pwm_driver(15) = 0
  1327.          If Tim_tl_down > 20 Then Pwm_driver(16) = 4092
  1328.          If Tim_tl_down < 20 Then Pwm_driver(16) = 0
  1329.       Elseif Menu_pos = 26 Then
  1330.          If Tim_tl_up > 20 Then Out17 = 1
  1331.          If Tim_tl_up < 20 Then Out17 = 0
  1332.          If Tim_tl_down > 20 Then Out18 = 1
  1333.          If Tim_tl_down < 20 Then Out18 = 0
  1334.       Elseif Menu_pos = 27 Then
  1335.          If Tim_tl_up > 20 Then Out19 = 1
  1336.          If Tim_tl_up < 20 Then Out19 = 0
  1337.          If Tim_tl_down > 20 Then Out20 = 1
  1338.          If Tim_tl_down < 20 Then Out20 = 0
  1339.       Elseif Menu_pos = 28 Then
  1340.          If Tim_tl_up = 20 Then
  1341.             Tim_tl_up = 21
  1342.             Set Refresh_bit : Testovaci_rezim = 0 : Reset Menu_bit
  1343.          End If
  1344.       End If
  1345.  
  1346.  
  1347.    Elseif Menu_bit = 1 And Menu_pos = 40 Then
  1348.       '' NASTAVOVANI CIDEL HLADIN
  1349.       '' TLACITKO "-" - ROTOVANI PRES RADKY
  1350.  
  1351.       If Tim_tl_down = 20 Then
  1352.          Tim_tl_down = 21                                   '' JASNE, PROTOZE SE TU PROCHAZELO DVAKRAT I VICKRAT :O)
  1353.          Incr Set_pos
  1354.          If Set_pos = 1 Then Set_pos = 2
  1355.          If Set_pos = 4 Then Set_pos = 5
  1356.          If Set_pos = 8 Then Set_pos = 2
  1357.  
  1358.          Set Refresh_bit
  1359.       End If
  1360.       If Set_pos = 2 Then
  1361.          If Tim_tl_ok = 20 Then
  1362.             Cista_min = Hladina_vody
  1363.             Disable Interrupts
  1364.             Minimum_ee = Cista_min
  1365.             Enable Interrupts
  1366.             Waitms 100
  1367.             Set_pos = 3
  1368.          End If
  1369.       Elseif Set_pos = 3 Then
  1370.          If Tim_tl_ok = 20 Then
  1371.             Cista_max = Hladina_vody
  1372.             Disable Interrupts
  1373.             Maximum_ee = Cista_max
  1374.             Enable Interrupts
  1375.             Waitms 100
  1376.             Set_pos = 5
  1377.          End If
  1378.       Elseif Set_pos = 5 Then
  1379.          If Tim_tl_ok = 20 Then
  1380.             Kalova_min = Hladina_kalove_vody
  1381.             Disable Interrupts
  1382.             Minimum_kalova_ee = Kalova_min
  1383.             Enable Interrupts
  1384.             Waitms 100
  1385.             Set_pos = 6
  1386.          End If
  1387.       Elseif Set_pos = 6 Then
  1388.          If Tim_tl_ok = 20 Then
  1389.             Kalova_max = Hladina_kalove_vody
  1390.             Disable Interrupts
  1391.             Maximum_kalova_ee = Kalova_max
  1392.             Enable Interrupts
  1393.             Waitms 100
  1394.             Set_pos = 7
  1395.          End If
  1396.       Elseif Set_pos = 7 Then
  1397.          If Tim_tl_ok = 20 Then
  1398.             Set Refresh_bit : Testovaci_rezim = 0 : Reset Menu_bit
  1399.  
  1400.          End If
  1401.  
  1402.  
  1403.       End If
  1404.  
  1405.  
  1406.    Elseif Menu_bit = 0 Then
  1407.       If Tim_tl_up = 20 Then
  1408.          Incr Strana
  1409.          If Strana > 6 Then Strana = 1
  1410.          Set Refresh_bit
  1411.       Elseif Tim_tl_down = 20 Then
  1412.          Decr Strana
  1413.          If Strana = 0 Then Strana = 6
  1414.          Set Refresh_bit
  1415.       End If
  1416.  
  1417.       If Tim_tl_ok = 20 Then
  1418.          Tim_tl_ok = 21
  1419.          If Strana = 1 Then
  1420.          Elseif Strana = 2 Then
  1421.          Elseif Strana = 3 Then
  1422.          Elseif Strana = 4 Then
  1423.             Menu_pos = 1 : Set Menu_bit : Set_pos = 0 : Set Refresh_bit
  1424.          Elseif Strana = 5 Then
  1425.             Menu_pos = 40 : Set Menu_bit : Set_pos = 0 : Set Refresh_bit
  1426.  
  1427.          Elseif Strana = 6 Then
  1428.             Menu_pos = 20 : Set Menu_bit : Set_pos = 0 : Set Refresh_bit : Set Testovaci_rezim
  1429.                   '' PRECHOD DO TESTOVACIHO REZIMU MUSI VYPNOUT VYSTUPY
  1430.             For I = 1 To 17
  1431.                Pwm_driver(i) = 0
  1432.             Next I
  1433.          End If
  1434.       End If
  1435.    End If
  1436. End Sub
  1437.  
  1438. Sub Read_inputs
  1439.    Ain_(1) = Getadc(0)
  1440.    Ain_(2) = Getadc(1)
  1441.    Ain_(3) = Getadc(2)
  1442.    Ain_(4) = Getadc(3)
  1443.    Ain_(5) = Getadc(4)
  1444.    Ain_(6) = Getadc(5)
  1445.    Ain_(7) = Getadc(6)
  1446.    Ain_(8) = Getadc(7)
  1447.  
  1448.  
  1449. 'vzorky se pridaji postupne do pole promennych (max. 20 vzorku)
  1450.    Incr I2
  1451.    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)
  1452.  
  1453. 'jednotliva pole nabranych vzorku se sectou a vydeli poctem vzorku
  1454.    If Pocet_vzorku > 20 Then Pocet_vzorku = 20
  1455.    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 :
  1456.    For I3 = 1 To Pocet_vzorku
  1457.       Pom_ain1(21) = Pom_ain1(21) + Pom_ain1(i3)
  1458.       Pom_ain2(21) = Pom_ain2(21) + Pom_ain2(i3)
  1459.       Pom_ain3(21) = Pom_ain3(21) + Pom_ain3(i3)
  1460.       Pom_ain4(21) = Pom_ain4(21) + Pom_ain4(i3)
  1461.       Pom_ain5(21) = Pom_ain5(21) + Pom_ain5(i3)
  1462.       Pom_ain6(21) = Pom_ain6(21) + Pom_ain6(i3)
  1463.       Pom_ain7(21) = Pom_ain7(21) + Pom_ain7(i3)
  1464.       Pom_ain8(21) = Pom_ain8(21) + Pom_ain8(i3)
  1465.    Next
  1466. 'vypocet skutecne hodnoty zprumerovanim pole vzorku, vystup je cislo 0 - 1023
  1467.    If I2 = Pocet_vzorku Then
  1468.  
  1469.       I2 = 0
  1470.  
  1471. '***vyveva otacky S1***napetovy
  1472. '(
  1473.       Pom_single = Pom_ain1(21) / Pocet_vzorku
  1474.       Prevodnik(1) = Pom_single
  1475.    'Pom_single = Pom_single - 164
  1476.  
  1477.       Vyveva_otacky = Pom_single / 1
  1478.       If Vyveva_otacky > 10000 Then Vyveva_otacky = 0
  1479.       If Vyveva_otacky < 0 Then Vyveva_otacky = 0
  1480.  
  1481.       ')
  1482. '***tlak_oleje_vyveva S2***proudovy
  1483. 'maximum 400baru, minimum 0
  1484. 'maximum 818, minimum 164
  1485. '654/400
  1486.  
  1487.       Pom_single = Pom_ain2(21) / Pocet_vzorku
  1488.       Prevodnik(2) = Pom_single
  1489.       Pom_single = Pom_single - 164
  1490.  
  1491.       Tlak_oleje_vyveva = Pom_single / 1.635
  1492.       If Tlak_oleje_vyveva > 10000 Then Tlak_oleje_vyveva = 0
  1493.       If Tlak_oleje_vyveva < 0 Then Tlak_oleje_vyveva = 0
  1494.       Pom_byte = Tlak_oleje_vyveva
  1495.       Call Prepocet_bytu(pom_byte , 1)
  1496.  
  1497.  
  1498. '***teplota_vyveva_bimetal S3***napetovy
  1499.       Pom_single = Pom_ain3(21) / Pocet_vzorku
  1500.       Prevodnik(3) = Pom_single
  1501.    'Pom_single = Pom_single - 162
  1502.  
  1503.       Teplota_vyveva = Pom_single / 1
  1504.       If Teplota_vyveva > 10000 Then Teplota_vyveva = 0
  1505.       If Teplota_vyveva < 0 Then Teplota_vyveva = 0
  1506.  
  1507.       Pom_byte = Teplota_vyveva
  1508.       Call Prepocet_bytu(pom_byte , 2)
  1509.  
  1510. '*** pretlak_vyveva S4***proudovy
  1511.       Pom_single = Pom_ain4(21) / Pocet_vzorku
  1512.       Prevodnik(4) = Pom_single
  1513.       Pom_single = Pom_single - 164
  1514.       Pretlak_vyveva = Pom_single / 65.4
  1515.       If Pretlak_vyveva > 10000 Then Pretlak_vyveva = 0
  1516.       If Pretlak_vyveva < 0 Then Pretlak_vyveva = 0
  1517.  
  1518.       Pom_byte = Pretlak_vyveva
  1519.       Call Prepocet_bytu(pom_byte , 3)
  1520.  
  1521. '*** podtlak_vyveva S5***proudovy
  1522. '0 - 654 ==> 0 bar = 327
  1523.       Pom_single = Pom_ain5(21) / Pocet_vzorku
  1524.       Prevodnik(5) = Pom_single
  1525.       Pom_single = Pom_single - 164
  1526.  
  1527.       If Pom_single < 327 Then
  1528.          Pom_single = 0 - Pom_single
  1529.          Podtlak_vyveva = Pom_single / 327
  1530.       Elseif Pom_single > 327 Then
  1531.          Podtlak_vyveva = Pom_single / 327
  1532.       End If
  1533.       Pom_byte = Podtlak_vyveva
  1534.       Call Prepocet_bytu(pom_byte , 4)
  1535.  
  1536.  
  1537. '*** tlak_vody_hrib S6***proudovy
  1538. ' max 400bar
  1539.       Pom_single = Pom_ain6(21) / Pocet_vzorku
  1540.       Prevodnik(6) = Pom_single
  1541.       Pom_single = Pom_single - 164
  1542.       'Tlak_vody_hrib = Pom_single / 1.92353
  1543.  
  1544.       Tlak_vody_hrib = Pom_single / 1.625
  1545.  
  1546.  
  1547.       If Tlak_vody_hrib > 10000 Then Tlak_vody_hrib = 0
  1548.       If Tlak_vody_hrib < 0 Then Tlak_vody_hrib = 0
  1549.  
  1550.       Pom_byte = Tlak_vody_hrib
  1551.       Call Prepocet_bytu(pom_byte , 5)
  1552.  
  1553. ' hladina vody rutina:
  1554. '
  1555. '*** hladina_vody S7***proudovy
  1556. 'dostavam hladinu v procentech
  1557.       Pom_single = Pom_ain7(21) / Pocet_vzorku
  1558.       Prevodnik(7) = Pom_single
  1559.       Pom_single = Pom_single - 164
  1560.       Hladina_vody = Pom_single / 6.54
  1561.       If Hladina_vody > 10000 Then Hladina_vody = 0
  1562.       If Hladina_vody < 0 Then Hladina_vody = 0
  1563.  
  1564.  
  1565. '*** hladina_kalove_vody S8***proudovy
  1566.       Pom_single = Pom_ain8(21) / Pocet_vzorku
  1567.       Prevodnik(8) = Pom_single
  1568.       Pom_single = Pom_single - 164
  1569.       Hladina_kalove_vody = Pom_single / 6.54
  1570.  
  1571.       If Hladina_kalove_vody > 10000 Then Hladina_kalove_vody = 0
  1572.       If Hladina_kalove_vody < 0 Then Hladina_kalove_vody = 0
  1573.  
  1574. '************prepocty********************'
  1575.       Vyveva_prepocet = Tlak_vyveva * 11.5
  1576.       Vyveva_prepocet = 950 + Vyveva_prepocet
  1577.  
  1578.  
  1579.       Vypocet_cista
  1580.       Vypocet_kalova
  1581.    End If
  1582.  
  1583. End Sub
  1584.  
  1585. Sub Vypocet_cista
  1586. '   vypocet hladin vody + prepocet hladiny na procenta
  1587. '   princip pro minimum vetsi nez maximum stejny, akorat se nakonci vysledna hodnota pocita odectenim od 100 %
  1588. '   interval 100% se pocita jako rozdil maxima a minima, nasledne se spocita 1 dilek z intervalu 100% (cista_konst),
  1589. '   kterym se nasledne deli aktualni hodnota hladiny vody. Od aktualni hladiny se jeste pred prepoctem na procenta odecte minimalni hodnota
  1590. '   takto vypocitana aktualni hladina se pak, pokud je minimum vetsi nez maximum, odecita od "100%"
  1591. '   pri nastaveni v rutine se hodnoty minima a maxima ukladaji do epromky
  1592.  
  1593.  
  1594.    If Cista_min > Cista_max Then
  1595.       Maximum = Cista_min
  1596.       Minimum = Cista_max
  1597.    Elseif Cista_max > Cista_min Then
  1598.       Maximum = Cista_max
  1599.       Minimum = Cista_min
  1600.    End If
  1601.  
  1602.  
  1603.  
  1604.    Cista_konst = Maximum - Minimum
  1605.  
  1606.    Cista_konst = Cista_konst / 100
  1607.  
  1608.    If Hladina_vody > Maximum Then
  1609.       Hladina_vody_prac = Maximum
  1610.    Else
  1611.       Hladina_vody_prac = Hladina_vody
  1612.    End If
  1613.  
  1614.  
  1615.    Pom_single = Hladina_vody_prac - Minimum
  1616.    Pom_single = Pom_single / Cista_konst
  1617.    Akt_cista = Pom_single
  1618.    If Cista_min > Cista_max Then
  1619.       Akt_cista = 100 - Akt_cista
  1620.    End If
  1621.  
  1622.    Pom_byte = Akt_cista
  1623.    If Akt_cista < 0 Then
  1624.       Akt_cista = 0
  1625.    End If
  1626.  
  1627.    Call Prepocet_bytu(pom_byte , 6)
  1628.  
  1629.  
  1630.  
  1631. End Sub
  1632.  
  1633. Sub Vypocet_kalova
  1634.    '   vypocet hladin vody + prepocet hladiny na procenta
  1635. '   princip pro minimum vetsi nez maximum stejny, akorat se nakonci vysledna hodnota pocita odectenim od 100 %
  1636. '   interval 100% se pocita jako rozdil maxima a minima, nasledne se spocita 1 dilek z intervalu 100% (kalova_konst),
  1637. '   kterym se nasledne deli aktualni hodnota hladiny vody. Od aktualni hladiny se jeste pred prepoctem na procenta odecte minimalni hodnota
  1638. '   takto vypocitana aktualni hladina se pak, pokud je minimum vetsi nez maximum, odecita od "100%"
  1639. '   pri nastaveni v rutine se hodnoty minima a maxima ukladaji do epromky
  1640.    If Kalova_min > Kalova_max Then
  1641.       Maximum_kalova = Kalova_min
  1642.       Minimum_kalova = Kalova_max
  1643.    Elseif Kalova_max > Kalova_min Then
  1644.       Maximum_kalova = Kalova_max
  1645.       Minimum_kalova = Kalova_min
  1646.    End If
  1647.  
  1648.  
  1649.  
  1650.    Kalova_konst = Maximum_kalova - Minimum_kalova
  1651.    Kalova_konst = Kalova_konst / 100
  1652.  
  1653.    If Hladina_kalove_vody < Minimum_kalova Then
  1654.       Hladina_kalove_vody_prac = Minimum_kalova
  1655.    Elseif Hladina_kalove_vody > Maximum_kalova Then
  1656.       Hladina_kalove_vody_prac = Maximum_kalova
  1657.    Else
  1658.       Hladina_kalove_vody_prac = Hladina_kalove_vody
  1659.    End If
  1660.    Pom_single = Hladina_kalove_vody - Minimum_kalova
  1661.    Pom_single = Pom_single / Kalova_konst
  1662.    Akt_kalova = Pom_single
  1663.  
  1664.    If Kalova_min > Kalova_max Then
  1665.       Akt_kalova = 100 - Akt_kalova
  1666.    End If
  1667.    If Akt_kalova < 0 Then
  1668.       Akt_kalova = 0
  1669.    End If
  1670.    Pom_byte = Akt_kalova
  1671.    Call Prepocet_bytu(pom_byte , 7)
  1672.  
  1673.  
  1674. End Sub
  1675.  
  1676. Sub Send_outputs
  1677.    If Vyveva_pwm = 1 Then
  1678.       Pwm_driver(1) = Vyveva_prepocet
  1679.    Else
  1680.       Pwm_driver(1) = 0
  1681.    End If
  1682.  
  1683.    If Vyveva_sani = 1 Then
  1684.       Pwm_driver(2) = 4095
  1685.    Else
  1686.       Pwm_driver(2) = 0
  1687.    End If
  1688.  
  1689.    If Vystlak_cerpadlo = 1 Then                             'vystlak  ecerpadlo spojka'
  1690.       Pwm_driver(3) = 4095
  1691.    Else
  1692.       Pwm_driver(3) = 0
  1693.    End If
  1694.  
  1695.    If Vyveva_odvetrani = 1 Then
  1696.       Pwm_driver(4) = 4095
  1697.    Else
  1698.       Pwm_driver(4) = 0
  1699.    End If
  1700.  
  1701.    If Ventil_kalova_1 = 1 Then
  1702.       Pwm_driver(5) = 4095
  1703.    Else
  1704.       Pwm_driver(5) = 0
  1705.    End If
  1706.  
  1707.    If Ventil_zac_kaly_2 = 1 Then
  1708.       Pwm_driver(6) = 4095
  1709.    Else
  1710.       Pwm_driver(6) = 0
  1711.    End If
  1712.  
  1713.    If Ventil_cista_2 = 1 Then
  1714.       Pwm_driver(7) = 4095
  1715.    Else
  1716.       Pwm_driver(7) = 0
  1717.    End If
  1718.  
  1719.    If Ventil_horni_kaly_3 = 1 Then
  1720.       Pwm_driver(8) = 4095
  1721.    Else
  1722.       Pwm_driver(8) = 0
  1723.    End If
  1724.  
  1725.    If Ventil_reg_hrib = 1 Then
  1726.       Pwm_driver(9) = 4095
  1727.    Else
  1728.       Pwm_driver(9) = 0
  1729.    End If
  1730.  
  1731.    If Ventil_dn13 = 1 Then
  1732.       Pwm_driver(10) = 4095
  1733.    Else
  1734.       Pwm_driver(10) = 0
  1735.    End If
  1736.  
  1737.    If Ventil_dn25 = 1 Then
  1738.       Pwm_driver(11) = 4095
  1739.    Else
  1740.       Pwm_driver(11) = 0
  1741.    End If
  1742.  
  1743.    If Cis_hruby_filtr = 1 Then
  1744.       Pwm_driver(12) = 4095
  1745.    Else
  1746.       Pwm_driver(12) = 0
  1747.    End If
  1748.  
  1749.  
  1750.    If Klapka_nap_cista = 1 Then
  1751.       Pwm_driver(13) = 4095
  1752.    Else
  1753.       Pwm_driver(13) = 0
  1754.    End If
  1755.  
  1756.    If Klapka_nap_kalova = 1 Then
  1757.       Pwm_driver(14) = 4095
  1758.    Else
  1759.       Pwm_driver(14) = 0
  1760.    End If
  1761.  
  1762.    If Klapka_ovldaci_pro_f = 1 Then
  1763.       Pwm_driver(15) = 4095
  1764.    Else
  1765.       Pwm_driver(15) = 0
  1766.    End If
  1767.  
  1768.    If Soupe_dolni = 1 Then
  1769.       Pwm_driver(16) = 4095
  1770.    Else
  1771.       Pwm_driver(16) = 0
  1772.    End If
  1773.  
  1774.    If Soupe_horni = 1 Then
  1775.       Out17 = 1
  1776.    Else
  1777.       Out17 = 0
  1778.    End If
  1779.  
  1780.    If Auto_stop = 1 Then
  1781.       Out18 = 1
  1782.    Else
  1783.       Out18 = 0
  1784.    End If
  1785.  
  1786.    If Otacky_plus = 1 And Otacky_minus = 0 Then
  1787.       Out19 = 1
  1788.    Else
  1789.       Out19 = 0
  1790.    End If
  1791.    If Otacky_minus = 1 And Otacky_plus = 0 Then
  1792.       Out20 = 1
  1793.    Else
  1794.       Out20 = 0
  1795.    End If
  1796. End Sub
  1797.  
  1798. Sub Tlacitka_menu1
  1799.    If Tim_tl_up = 20 And Set_pos = 0 Then
  1800.       Tim_tl_up = 21
  1801.       Incr Menu_pos
  1802.       If Menu_pos = 18 Then Menu_pos = 1
  1803.       Set Refresh_bit
  1804.    Elseif Tim_tl_down = 20 And Set_pos = 0 Then
  1805.       Tim_tl_down = 21
  1806.       Decr Menu_pos
  1807.       If Menu_pos = 0 Then Menu_pos = 17
  1808.       Set Refresh_bit
  1809.    End If
  1810. End Sub
  1811.  
  1812. Sub Send_pwm
  1813.    For I = 1 To 16
  1814.       Ii = 17 - I
  1815.       'vypocet hodnoty v intervalu
  1816.  
  1817.       If Pwm_out(i) = 0 Then
  1818.          Outp(ii) = 0
  1819.       Else
  1820.          Pomw1 = Oute(ii) - Outb(ii)                        ''vypocet poctu dilku regulacni oblasti ventilu
  1821.          If Pomw1 < 256 Then Pomw1 = 256                       'korekce
  1822.          Pomw2 = Pomw1 / 4096                                  'urceni velikosti noveho dilku
  1823.          Pomw3 = Pwm_out(i) * Pomw2
  1824.          Outp(ii) = Pomw3 + Outb(ii)
  1825.       End If
  1826.  
  1827.       I2cstart                                              '' Start
  1828.       I2cwbyte &B10000000
  1829.       Pombyte = I * 4
  1830.       Pombyte = Pombyte + 2
  1831.       I2cwbyte Pombyte                                      '' select slected LED address
  1832.       I2cwbyte 0 : I2cwbyte 0
  1833.       Pombyte = Low(outp(ii)) : I2cwbyte Pombyte            '' LED_OFF_L
  1834.       Pombyte = High(outp(ii)) : I2cwbyte Pombyte           '' LED_OFF_H
  1835.       I2cstop
  1836.       Waitus 10
  1837.    Next I
  1838. End Sub
  1839.  
  1840. Sub Cls_:
  1841.    Cls
  1842.    Setfont Font8x8
  1843.    Lcdat 1 , 125 , " ";
  1844.    Lcdat 3 , 125 , " ";
  1845.    Lcdat 5 , 125 , " ";
  1846.    Lcdat 7 , 125 , " ";
  1847. End Sub
  1848.                                      'Otacky_vyveva = Vyveva_rpm
  1849. Sub Strana1
  1850.    Setfont Font8x8
  1851. '(
  1852.     Lcdat 8 , 1 , "1: M20-MASTER/VSTUPY  " , 1
  1853.    Lcdat 1 , 1 , "In1: " ; Akt_cista ; "    "
  1854.    Lcdat 2 , 1 , "In2: " ; Hladina_vody ; "    "
  1855.    Lcdat 3 , 1 , "In3: " ; Hladina_vody_prac ; "    "
  1856.    Lcdat 4 , 1 , "In4: " ; Cista_min ; "    "
  1857.    Lcdat 1 , 64 , "In5: " ; Cista_max ; "    "
  1858.    Lcdat 2 , 64 , "In6: " ; Minimum ; "    "
  1859.    Lcdat 3 , 64 , "In7: " ; Maximum ; "    "
  1860.    Lcdat 4 , 64 , "In8: " ; Prevodnik(8) ; "    "
  1861.    Lcdat 6 , 1 , " ciste hodnoty z A/D"
  1862. ')
  1863.    Lcdat 8 , 1 , "1: M20-MASTER/VSTUPY  " , 1
  1864.    Lcdat 1 , 1 , "In1: " ; Prevodnik(1) ; "    "
  1865.    Lcdat 2 , 1 , "In2: " ; Prevodnik(2) ; "    "
  1866.    Lcdat 3 , 1 , "In3: " ; Prevodnik(3) ; "    "
  1867.    Lcdat 4 , 1 , "In4: " ; Prevodnik(4) ; "    "
  1868.    Lcdat 1 , 64 , "In5: " ; Prevodnik(5) ; "    "
  1869.    Lcdat 2 , 64 , "In6: " ; Prevodnik(6) ; "    "
  1870.    Lcdat 3 , 64 , "In7: " ; Prevodnik(7) ; "    "
  1871.    Lcdat 4 , 64 , "In8: " ; Prevodnik(8) ; "    "
  1872.    Lcdat 6 , 1 , " ciste hodnoty z A/D"
  1873.  
  1874. End Sub
  1875.  
  1876. Sub Strana2
  1877.    Setfont Font8x8
  1878.    Lcdat 8 , 1 , "2: M20-MASTER/VYST.1  " , 1
  1879.    Lcdat 1 , 1 , "Out1: " ; Pwm_driver(1) ; "     "
  1880.    Lcdat 2 , 1 , "Out2: " ; Pwm_driver(2) ; "     "
  1881.    Lcdat 3 , 1 , "Out3: " ; Pwm_driver(3) ; "     "
  1882.    Lcdat 4 , 1 , "Out4: " ; Pwm_driver(4) ; "     "
  1883.    Lcdat 5 , 1 , "Out5: " ; Pwm_driver(5) ; "     "
  1884.    Lcdat 1 , 64 , "Out6: " ; Pwm_driver(6) ; "     "
  1885.    Lcdat 2 , 64 , "Out7: " ; Pwm_driver(7) ; "     "
  1886.    Lcdat 3 , 64 , "Out8: " ; Pwm_driver(8) ; "     "
  1887.    Lcdat 4 , 64 , "Out9: " ; Pwm_driver(9) ; "     "
  1888.    Lcdat 5 , 64 , "Out10: " ; Pwm_driver(10) ; "     "
  1889.  
  1890. End Sub
  1891.  
  1892. Sub Strana3
  1893.    Setfont Font8x8
  1894.    Lcdat 8 , 1 , "3: M20-MASTER/VYST.2  " , 1
  1895.    Lcdat 1 , 1 , "Out11: " ; Pwm_driver(11) ; "     "
  1896.    Lcdat 2 , 1 , "Out12: " ; Pwm_driver(12) ; "     "
  1897.    Lcdat 3 , 1 , "Out13: " ; Pwm_driver(13) ; "     "
  1898.    Lcdat 4 , 1 , "Out14: " ; Pwm_driver(14) ; "     "
  1899.    Lcdat 5 , 1 , "Out15: " ; Pwm_driver(15) ; "     "
  1900.    Lcdat 1 , 64 , "Out16: " ; Pwm_driver(16) ; "     "
  1901.    Lcdat 2 , 64 , "Out17: " ; Out17 ; "     "               '/vystupy 17 - 20 jsou ovladane primo z procesoru - tudiz nejsou pwm!
  1902.    Lcdat 3 , 64 , "Out18: " ; Out18 ; "     "
  1903.    Lcdat 4 , 64 , "Out19: " ; Out19 ; "     "
  1904.    Lcdat 5 , 64 , "Out20: " ; Out20 ; "     "
  1905. End Sub
  1906.  
  1907. Sub Strana4
  1908.    Setfont Font8x8
  1909.    Lcdat 8 , 1 , "4: M20-MASTER/NAST.VYST  " , 1
  1910.    Lcdat 6 , 1 , "LIMITY PWM,RAMPY.."
  1911.    Setfont My12d
  1912.    Lcdat 1 , 1 , "NASTAVIT"
  1913.    Lcdat 3 , 1 , "VYSTUPY?"
  1914. End Sub
  1915.  
  1916. Sub Strana5
  1917.    Setfont Font8x8
  1918.    Lcdat 8 , 1 , "5: M20-MASTER/NST.HLADINY  " , 1
  1919.    Setfont My12d
  1920.    Lcdat 1 , 1 , "NASTAVIT"
  1921.    Lcdat 3 , 1 , "SNIMACE"
  1922.    Lcdat 5 , 1 , "HLADIN?"
  1923. End Sub
  1924.  
  1925. Sub Strana6
  1926.    Setfont Font8x8
  1927.    Lcdat 8 , 1 , "6: M20-MASTER/TEST    " , 1
  1928.    Lcdat 6 , 1 , "TEST OVL. PRVKU"
  1929.    Setfont My12d
  1930.    Lcdat 1 , 1 , "TEST"
  1931.    Lcdat 3 , 1 , "VYSTUPU "
  1932. End Sub
  1933.  
  1934. Sub Sest_obr_spinacu
  1935. '*****************SESTAVENI OBRAZU STAVU TLACITEK**********
  1936.    If Mbuf_tl(2) = 2 Then
  1937.       Vak_cerp_on_off = M(40).1                             'M(51).1
  1938.       Tlacitka_1.0 = Vak_cerp_on_off
  1939.       Vak_cerp_sani = M(40).2
  1940.       Tlacitka_1.1 = Vak_cerp_sani
  1941.       Vak_cerp_vytlak = M(40).3
  1942.       Tlacitka_1.2 = Vak_cerp_vytlak
  1943.       Vak_cerp_soupe_spodni = M(40).4
  1944.       Tlacitka_1.3 = Vak_cerp_soupe_spodni
  1945.       Vak_cerp_soupe_horni = M(40).5
  1946.       Tlacitka_1.4 = Vak_cerp_soupe_horni
  1947.    End If
  1948.    If Mbuf_tl(2) = 3 Then
  1949.       Vystlak_cerp_on_off = M(44).1
  1950.       Tlacitka_1.5 = Vystlak_cerp_on_off
  1951.       Vystlak_cerp_kohout_dn13 = M(44).2
  1952.       Tlacitka_1.6 = Vystlak_cerp_kohout_dn13
  1953.       Vystlak_cerp_kohout_dn25_32 = M(44).3
  1954.       Tlacitka_1.7 = Vystlak_cerp_kohout_dn25_32
  1955.       Vystlak_cerp_hadice_dn13 = M(44).4
  1956.       Tlacitka_1.8 = Vystlak_cerp_hadice_dn13
  1957.       Vystlak_cerp_hadice_dn25_32 = M(44).5
  1958.       Tlacitka_1.9 = Vystlak_cerp_hadice_dn25_32
  1959.       Vystlak_cerp_tlak_on_off = M(44).6
  1960.       Tlacitka_1.10 = Vystlak_cerp_tlak_on_off
  1961.    End If
  1962.    If Mbuf_tl(2) = 4 Then
  1963.       Recyklace_upr_vody = M(48).1
  1964.       Tlacitka_2.0 = Recyklace_upr_vody
  1965.       Recyklace_cist_hrub_filtr = M(48).2
  1966.       Tlacitka_2.1 = Recyklace_cist_hrub_filtr
  1967.       Recyklace_cist_cyklon = M(48).3
  1968.       Tlacitka_2.2 = Recyklace_cist_cyklon
  1969.       Recyklace_odcerp_kal = M(48).4
  1970.       Tlacitka_2.3 = Recyklace_odcerp_kal
  1971.    End If
  1972.    If Mbuf_tl(2) = 5 Then
  1973.       Zavodneni_90s = M(52).1
  1974.       Tlacitka_2.4 = Zavodneni_90s
  1975.       Zavodneni_majak = M(52).2
  1976.       Tlacitka_2.5 = Zavodneni_majak
  1977.       Zavodneni_svetlo = M(52).3
  1978.       Tlacitka_2.6 = Zavodneni_svetlo
  1979.       Zavodneni_radio = M(52).4
  1980.       Tlacitka_2.7 = Zavodneni_radio
  1981.    End If                                                   'M(54).4
  1982.             '' WORDY PREDAVANE SLEJVU A DISPLEJI
  1983. '(
  1984.    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
  1985.    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 :
  1986.    Tlacitka_2.0 = M(53).1 : Tlacitka_2.1 = M(53).2 : Tlacitka_2.2 = M(53).3 : Tlacitka_2.3 = M(53).4:
  1987.    Tlacitka_2.4 = M(54).1 : Tlacitka_2.5 = M(54).2 : Tlacitka_2.6 = M(54).3 : Tlacitka_2.7 = M(54).4
  1988.    ')
  1989. '(
  1990.    Tlacitka_1.0 = 1 : Tlacitka_1.1 = 1 : Tlacitka_1.2 = 1 : Tlacitka_1.3 = 1 : Tlacitka_1.4 = 1
  1991.    Tlacitka_1.5 = 1 : Tlacitka_1.6 = 1 : Tlacitka_1.7 = 1 : Tlacitka_1.8 = 1 : Tlacitka_1.9 = 1 : Tlacitka_1.10 = 1
  1992.    Tlacitka_2.0 = 1 : Tlacitka_2.1 = 1 : Tlacitka_2.2 = 1 : Tlacitka_2.3 = 1:
  1993.    Tlacitka_2.4 = 1 : Tlacitka_2.5 = 1 : Tlacitka_2.6 = 1 : Tlacitka_2.7 = 1
  1994. ')
  1995. End Sub
  1996.  
  1997. Tim0_int:
  1998. '' CASOVANI KOMUNINACE SLAVE1[ADRESA1] / DISPLEJ[ADRESA2]
  1999.    If Automat = 1 Then
  2000.       If Otacky_uber = 1 Or Otacky_pridej = 1 Then
  2001.          Incr Zmena_otacek_time
  2002.       Else
  2003.          Zmena_otacek_time = 0
  2004.       End If
  2005.    End If
  2006.  
  2007.    If Automat = 1 And Cteni_otacek_time > 0 Then
  2008.       Incr Cteni_otacek_time
  2009.    End If
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.    If Recyklace_cist_hrub_filtr = 1 And Recyklace_funkce = 0 And Cist_hrub_filtru_time < 1000 Then
  2017.  
  2018.       Incr Cist_hrub_filtru_time
  2019.  
  2020.    End If
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.    Incr Comm_period
  2030.    If Comm_period = 50 Then
  2031.       Vysilej = 1 : Slave = 1
  2032.  
  2033.    Elseif Comm_period = 100 Then
  2034.       Vysilej_tlacitka = 1
  2035.    Elseif Comm_period = 150 Then
  2036.       Vysilej = 1 : Slave = 2
  2037.    Elseif Comm_period = 200 Then
  2038.       Vysilej_tlacitka = 1
  2039.       Comm_period = 0
  2040.  
  2041.    End If
  2042. '' CASOVANI KOMUNIKACE NA DRUHEM PORTU  - DESKY SE SPINACI
  2043.    Incr Comm_period_tlacitka
  2044.    If Comm_period_tlacitka = 80 Then
  2045.             '' KOLECKO ADERS SLEJVU SE RESI PRED VYSLANIM POZADAVKU
  2046.       Comm_period_tlacitka = 0
  2047.    End If
  2048. '' CASOVANI FUNKCNOSTI TLACITEK ZDE SE NASTAVI JEN BIT PROUCHODU CASOVACEM A OSTATNI SE RESI V HLAVNI PROG SMYCCE
  2049.    Set Bit_time
  2050. '' CASOVANI NACITANI ANALOGOVYCH VSTUPU
  2051.    Incr Ad_time
  2052.    If Ad_time = 20 Then
  2053.       Ad_time = 0 : Ad_bit = 1
  2054.    End If
  2055. '' CASOVANI NASTAVOVANI VYSTUPU - 50MS
  2056.    Incr Time_out_pom
  2057.    If Time_out_pom = 16 Then
  2058.       Time_out_pom = 0 : Set Refresh_out
  2059.    End If
  2060. '' CASOVANI REFRESH DISPLEJE - ZAKLAD JE 2 SEKUNDY PRO KONTROLNI OBRAZY, U NASTAVOVACICH REFR. VYVOLAVAJI I TLACITKA
  2061.    ''If Tim1 = 375 Then
  2062.    If Tim1 < 1000 Then Incr Tim1                            'casova zakladna 1 sekunda
  2063.    If Tim1 = 110 Then
  2064.       Tim1 = 0
  2065.       If Strana = 1 Or Strana = 2 Or Strana = 3 Or Menu_pos = 40 Then Set Refresh_bit
  2066.    End If
  2067.  
  2068.    Incr Tim2
  2069.  
  2070.    If Tim2 = 375 Then
  2071.       Tim2 = 0
  2072.       Otacky_vyveva = Vyveva_rpm / 34
  2073.       Prevodnik(1) = Vyveva_rpm
  2074.       Otacky_vyveva = Otacky_vyveva * 60
  2075.       Vyveva_rpm = 0
  2076.       Pom_byte = Otacky_vyveva
  2077.       Call Prepocet_bytu(pom_byte , 0)
  2078.    End If
  2079.  
  2080.  
  2081.  
  2082.    If Recyklace_upr_vody = 1 Then
  2083.       If Recyklace_time < 700 Then Incr Recyklace_time
  2084.       If Recyklace_time = 200 Then
  2085.          Recyklace_time = 0
  2086.          If Recyklace_1sec < 10 Then
  2087.             Incr Recyklace_1sec
  2088.             If Recyklace_1sec > 6 Then
  2089.                Recyklace_1sec = 15
  2090.             End If
  2091.          End If
  2092.       End If
  2093.    End If
  2094.   '(
  2095.    If Recyklace_cist_hrub_filtr = 1 Then
  2096.    If Recyklace_time < 700 Then Incr Recyklace_time
  2097.    If Recyklace_time = 200 Then
  2098.    Recyklace_time = 0
  2099.    If Recyklace_1sec < 7 Then
  2100.    Incr Recyklace_1sec
  2101.    If Recyklace_1sec > 5 Then
  2102.    Recyklace_1sec = 10
  2103.    End If
  2104.    End If
  2105.    End If
  2106.    End If
  2107. ')
  2108.    If Recyklace_cist_cyklon = 1 Then
  2109.  
  2110.       Incr Recyklace_cist_cyklon_time
  2111.  
  2112.       If Recyklace_cist_cyklon_time = 375 Then
  2113.          If Cisteni_cyklonu_time < 15 Then Incr Cisteni_cyklonu_time
  2114.          Recyklace_cist_cyklon_time = 0
  2115.  
  2116.          If Cisteni_cyklonu_time > 9 Then
  2117.             Cisteni_cyklonu_time = 20
  2118.          End If
  2119.       End If
  2120.  
  2121.  
  2122.    End If
  2123.  
  2124.    If Space_time_tl < 600 Then Incr Space_time_tl
  2125.    If Space_time_tl > 500 Then Index_tl = 0
  2126.  
  2127.    If Space_time < 600 Then Incr Space_time
  2128.    If Space_time > 600 Then Index = 0 : Index_d = 0         ''cca 3,23 * 3ms = 9,75
  2129.  
  2130.    If Nodata_time < 500 Then
  2131.       Incr Nodata_time
  2132.    End If
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.    Incr Tim_ramp
  2139.    If Tim_ramp = 5 Then                                     ''
  2140.       Tim_ramp = 0
  2141.       For Index_ramp = 1 To 16
  2142.          Index3 = 17 - Index_ramp
  2143.          If Ramp_on(index_ramp) = 0 And Ramp_off(index_ramp) = 0 Then
  2144.             Pwm_out(index3) = Pwm_driver(index_ramp)
  2145.          Else
  2146.             If Pwm_out(index3) < Pwm_driver(index_ramp) Then
  2147.                Pwm_krok(index_ramp) = 1010 / Ramp_on(index_ramp)
  2148.                Pwm_out_integer(index_ramp) = Pwm_out_integer(index_ramp) + Pwm_krok(index_ramp)
  2149.                If Pwm_out_integer(index_ramp) > Pwm_driver(index_ramp) Then
  2150.                   Pwm_out_integer(index_ramp) = Pwm_driver(index_ramp)
  2151.                End If
  2152.  
  2153.                Pwm_out(index3) = Pwm_out_integer(index_ramp)
  2154.  
  2155.             Elseif Pwm_out(index3) > Pwm_driver(index_ramp) Then
  2156.                Pwm_krok(index_ramp) = 1010 / Ramp_off(index_ramp)
  2157.                Pwm_out_integer(index_ramp) = Pwm_out_integer(index_ramp) - Pwm_krok(index_ramp)
  2158.                If Pwm_out_integer(index_ramp) < Pwm_driver(index_ramp) Then
  2159.                   Pwm_out_integer(index_ramp) = Pwm_driver(index_ramp)
  2160.                End If
  2161.  
  2162.                Pwm_out(index3) = Pwm_out_integer(index_ramp)
  2163.             End If
  2164.          End If
  2165.       Next Index_ramp
  2166.  
  2167.    End If
  2168.  
  2169.  
  2170. Return
  2171.  
  2172. Urxc_isr:
  2173.    Disable Interrupts
  2174.    Modt_tl = Inkey(#1)
  2175.    'Pwm_driver(1) = 4095
  2176.    If Index_tl = 0 Then
  2177.       ''JAKA PRISLA ADRESA SKUPINY ?
  2178.       'Pwm_driver(2) = 4095
  2179.       If Modt_tl = 10 Then
  2180.       'Pwm_driver(3) = 4095
  2181.          Index_tl = Index_tl + 1                            'increase the buffer counter
  2182.          Mbuf_tl(1) = Modt_tl
  2183.                                         'store address in location 1
  2184.       End If
  2185.    Else
  2186.    'Pwm_driver(4) = 4095
  2187.       Index_tl = Index_tl + 1 : Mbuf_tl(index_tl) = Modt_tl ''INDEX 2 = ADRESA SLEJVA PO KTEREM CHCEME ODPOVED
  2188.       If Index_tl = 4 Then
  2189.       'Pwm_driver(5) = 4095
  2190.          ''NA TRETI POZICI JE ULOZEN POCET WORDU
  2191.          Buf_long_tl = 2 * Mbuf_tl(4)                       ''- PREPOCITAME NA BYTE
  2192.          Buf_long_tl = 6 + Buf_long_tl                      ''A SECTEME S UVODNI CASTI A DVEMA BYTE CRC
  2193.       End If
  2194.       If Index_tl = Buf_long_tl Then
  2195.          '' JAKMILE JE HOTOVO
  2196.          'Pwm_driver(6) = 4095
  2197.          Index_tl = 0
  2198.          If Mbuf_tl(2) = 2 Or Mbuf_tl(2) = 3 Or Mbuf_tl(2) = 4 Or Mbuf_tl(2) = 5 Then
  2199.             Data_prijata_tlacitka = 1
  2200.             'pwm_driver(7) = 4095
  2201.          End If
  2202.          '' SESTAVIME PAK PRICHOZI DATA V CYKLU PROGRAMU
  2203.          Nodata_time_tl = 0                                 'Print #1 , "HURA: "
  2204.       End If
  2205.    End If
  2206.    Space_time_tl = 0
  2207.    Enable Interrupts
  2208. Return
  2209.  
  2210. Urxc_isr1:                                                  ' komunikace s displejem
  2211.    Modt = Inkey(#2)
  2212.    If Index = 0 Then
  2213.       If Modt = Skupina Then
  2214.          Index = Index + 1                                  'increase the buffer counter
  2215.          Mbuf(1) = Modt                                     'store address in location 1
  2216.       End If
  2217.    Else
  2218.       Index = Index + 1 : Mbuf(index) = Modt                ''INDEX 2 = ADRESA SLEJVA PO KTEREM CHCEME ODPOVED
  2219.       If Index = 4 Then
  2220.          ''NA TRETI POZICI JE ULOZEN POCET WORDU
  2221.          Buf_long = 2 * Mbuf(4)                             ''- PREPOCITAME NA BYTE
  2222.          Buf_long = 6 + Buf_long                            ''A SECTEME S UVODNI CASTI A DVEMA BYTE CRC
  2223.       End If
  2224.       If Index = Buf_long Then
  2225.          '' JAKMILE JE HOTOVO
  2226.          Index = 0
  2227.          If Mbuf(2) = 1 Or Mbuf(2) = 2 Then
  2228.             Data_prijata = 1
  2229.          End If
  2230.          '' SESTAVIME PAK PRICHOZI DATA V CYKLU PROGRAMU
  2231.          Nodata_time = 0                                    'Print #1 , "HURA: "
  2232.       End If
  2233.    End If
  2234.    Space_time = 0
  2235. Return
  2236.  
  2237. 'Int4_int:
  2238.  
  2239. '   Incr Vyveva_rpm
  2240.  
  2241. 'Return
  2242.  
  2243. End
  2244.  
  2245. Sub Zmena_otacek(byval Jak As Byte)
  2246.  
  2247.  
  2248.  
  2249. End Sub
  2250.  
  2251.  
  2252. Sub Prepocet_bytu(byval Bytebyte As Byte , Byval Prepocet_bytu_num As Byte)
  2253.  
  2254.  
  2255.    If Prepocet_bytu_num = 0 Then
  2256.  
  2257.       For Pt = 0 To 7
  2258.          Word1.pt = Bytebyte.pt
  2259.       Next
  2260.  
  2261.    End If
  2262.  
  2263.    If Prepocet_bytu_num = 1 Then
  2264.       For Pt = 0 To 7
  2265.          Ptx = Pt + 8
  2266.          Word1.ptx = Bytebyte.pt
  2267.       Next
  2268.    End If
  2269.    If Prepocet_bytu_num = 2 Then
  2270.       For Pt = 0 To 7
  2271.          Word2.pt = Bytebyte.pt
  2272.       Next
  2273.  
  2274.    Elseif Prepocet_bytu_num = 3 Then
  2275.  
  2276.       For Pt = 0 To 7
  2277.          Ptx = Pt + 8
  2278.          Word2.ptx = Bytebyte.pt
  2279.       Next
  2280.    Elseif Prepocet_bytu_num = 4 Then
  2281.       For Pt = 0 To 7
  2282.          Word3.pt = Bytebyte.pt
  2283.       Next
  2284.    Elseif Prepocet_bytu_num = 5 Then
  2285.  
  2286.       For Pt = 0 To 7
  2287.          Ptx = Pt + 8
  2288.          Word3.ptx = Bytebyte.pt
  2289.       Next
  2290.    Elseif Prepocet_bytu_num = 6 Then
  2291.       For Pt = 0 To 7
  2292.          Word4.pt = Bytebyte.pt
  2293.       Next
  2294.    Elseif Prepocet_bytu_num = 7 Then
  2295.  
  2296.       For Pt = 0 To 7
  2297.          Ptx = Pt + 8
  2298.          Word4.ptx = Bytebyte.pt
  2299.       Next
  2300.  
  2301.    End If
  2302.  
  2303.  
  2304.  
  2305.  
  2306. End Sub
  2307.  
  2308. Sub Prepocet_na_word(byval Word_poz As Word )
  2309.    For X = 0 To 7
  2310.       Otacky_motoru.x = Word_poz.x
  2311.    Next
  2312.  
  2313. End Sub
  2314.  
  2315. Logostep:
  2316.    $bgf "logostep.bgf"
  2317.    $include "font8x8.font"
  2318.    $include "my12D.font"
  2319.    $include "100.font"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement