Prost edky bezpe nostních systém pro integrovanou výuku VUT
Transkript
FAKULTA ELEKTROTECHNIKY A INFORMATIKY VYSOKÁ ŠKOLA BÁŇSKÁ – TECHNICKÁ UNIVERZITA OSTRAVA Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO Garant předmětu: Ing. Radek Novák, Ph.D. Autoři textu: Ing. Radek Novák, Ph.D. OSTRAVA * 2014 Vznik těchto skript byl podpořen projektem č. CZ.1.07/2.2.00/28.0062 Evropského sociálního fondu a státním rozpočtem České republiky. FEI Vysoká škola báňská – Technická univerzita Ostrava Autor Ing. Radek Novák, Ph.D. Název Prostředky bezpečnostních VUT a VŠB-TUO Nakladatel Vysoká škola báňská – Technická univerzita Ostrava systémů Fakulta elektrotechniky a informatiky Katedra telekomunikační techniky 17. Listopadu 15/2172, 708 33 Ostrava Vydání první Rok vydání 2014 Náklad elektronicky ISBN 978-80-248-3609-6 Tato publikace neprošla redakční ani jazykovou úpravou. pro integrovanou výuku Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO Obsah 1 ÚVOD ................................................................................................................................. 1 2 SENZORY POUŽÍVANÉ V ZABEZPEČOVACÍCH SYSTÉMECH ........................ 2 2.1 PASIVNÍ INFRAČERVENÉ DETEKTORY ............................................................................... 2 2.2 DTS OPTOVLÁKNOVÉ SYSTÉMY DETEKCE POŽÁRU .......................................................... 5 2.3 ŠTĚRBINOVÉ KABELY..................................................................................................... 10 2.4 ZABEZPEČOVACÍ KOAXIÁLNÍ KABELY VYUŽÍVAJÍCÍ TŘENÍ ............................................. 13 2.5 LIDAR .......................................................................................................................... 13 2.6 MIKROFONY A POUŽITÍ ZVUKU ...................................................................................... 16 2.7 TERAHERTZOVÁ SPEKTROSKOPIE................................................................................... 20 2.8 ZABEZPEČOVACÍ SYSTÉMY VYUŽÍVAJÍCÍ MIKROOHYBU OPTICKÉHO VLÁKNA ................ 21 2.9 RAMANOVA SPEKTROSKOPIE A ANALÝZA LÁTEK ........................................................... 23 2.10 ZABEZPEČOVACÍ SYSTÉMY VYUŽÍVAJÍCÍ INTERFERENCE SVĚTLA .................................. 25 2.11 SYSTÉMY ELEKTRONICKÉ POŽÁRNÍ SIGNALIZACE .......................................................... 26 2.11.1 Systémy EPS s kolektivní adresací ............................................................. 28 2.11.2 Systémy EPS s adresací ............................................................................. 30 2.11.3 EPS systémy s paralelní adresací .............................................................. 32 2.11.4 Snímače požáru .......................................................................................... 32 3 ŠIFROVÁNÍ INFORMACÍ............................................................................................ 38 3.1 ŠIFROVACÍ METODA LVF – KÓDOVÁNÍ .......................................................................... 38 3.2 ŠIFROVACÍ METODA LVF – DEKÓDOVÁNÍ...................................................................... 44 3.3 ZDROJOVÝ TEXT PROGRAMU LVF V JAZYCE C .............................................................. 48 4 ALARMNÍ SYSTÉMY ................................................................................................... 54 4.1 A4011 - JEDNODUCHÝ ALARM BEZ PROCESORU ............................................................. 54 4.2 ALARM S PROCESOREM PIC16F690 .............................................................................. 56 4.3 ALARM S VAZBOU DO GSM SÍTĚ MOBILNÍCH TELEFONŮ ............................................... 60 SEZNAM POUŽITÉ LITERATURY ................................................................................ 100 Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 1 1 Úvod Skripta Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO (PBS) mají poskytnout všem zájemcům základní orientaci v dané problematice. Tématicky PBS souvisí s mnoha obory (senzory, přenos informace, elektronické obvody, mikroprocesory, programování, šifrování, optika, akční členy, legislativa…), kvůli svému rozsahu skripta nemohou tyto obory detailně obsáhnout. Přesto je zevrubně popsáno několik klasických snímačů zabezpečovací techniky, i senzorické systémy poměrně nové (Ramanova spektroskopie). Z množství šifrovacích metod je uvedena metoda LVF s náležitým popisem i se zdrojovým textem programu. Součástí skript jsou i 3 kompletně zdokumentované alarmní systémy od nejjednoduššího bezprocesorového až po procesorový s vazbou do telekomunikační mobilní sítě GSM, včetně programů. Programy jsou v jazyce C, který je u jednočipových procesorů hodně používán. Zájemci nic nebrání si některý z alarmů realizovat event. modifikovat. U komerčních alarmů takovou možnost uživatel pochopitelně nemá, mj. program je v procesoru zamknut proti přečtení. Z hlediska výrobce je to pochopitelné i z toho důvodu, že může ručit jen za svoje řešení. Problematika PBS je mnohem širší než „senzor – ústředna - pult centrální ochrany“ (i když to klíčové prvky jsou), velmi těsně se prolíná s dalšími obory – požární ochrana a detekce požáru, zabezpečovací zařízení pro železnici, zpracování obrazu, zpracování signálů, analýza látek, proto jsou ve skriptech občas i zmínky týkající se těchto oborů. 2 FEI Vysoká škola báňská – Technická univerzita Ostrava 2 Senzory používané v zabezpečovacích systémech Nejdůležitější kritéria na senzory používané v zabezpečovaných systémech jsou spolehlivost, odolnost proti rušení a okolním vlivům, nezjistitelnost, cena. Téma by vydalo na samostatnou knihu, uveďme zde aspoň nejčastěji používané senzory. 2.1 Pasivní infračervené detektory Pasivní infračervené detektory (PIR – Passive Infrared Receiver) jsou senzory, které vyhodnocují změny elektromagnetického vyzařování těles v infračerveném pásmu spektra (rozsah vlnových délek přibl. 1µm – 300µm) [4][5][7][10]. Jsou to nejrozšířenější detektory pohybu používané v prostorové i perimetrické ochraně střeženého prostoru. Jsou konstrukčně jednoduché, vzájemně se neruší, a detekční zóny se mohou překrývat, mají malou spotřebu (50µA). Hlavní výhodou PIR detektorů je, že nevytvářejí vlastní pole, pouze změny vnějšího elmag. pole vyhodnocují. Z tohoto hlediska jsou nezjistitelné, na druhé straně v reálném použití jsou umístěny na viditelném místě. Jsou levné (výrobní náklady na samotné čidlo jsou asi 6Kč), výsledná cena PIR senzoru je navýšena o desku plošných spojů s ostatními součástkami, optickou soustavu, kryt aj. Detekčním prvkem je pyroelektrický senzor. Princip senzoru využívá pyroelektrickém jevu – při změně vlnové délky dopadajícího infračerveného záření na pyroelektrický senzor dojde k dočasné polarizaci molekul materiálu senzoru (sloučenina lithia a tantalu), a k dočasnému vzniku elektrického náboje na jeho elektrodách. Z principu plynou požadavky při nasazení PIR senzorů : - aby byla osoba zadetekována, musí mít teplotu odlišnou (vyšší) od teploty okolí, lidské tělo při své teplotě 37°C vyzařuje IR záření vlnové délky 9.34 µm - osoba se musí pohybovat mezi aktivními a mrtvými zónami PIR senzoru, protože jen tak dochází ke změnám dopadajícího IR záření na senzor a vzniku signálu. Působení snímané veličiny na senzor musí být vždy dynamické (přerušované). pyroelektrické cidlo a) Fresnelova čočka filtr b) pyroelektrická čidla FET tranzistor neprúhledná fólie lomené zrcadlo Obr. 2.1.1 a) PIR senzor s Fresnelovou čočkou a 2 čidly b) senzor s lomeným zrcadlem Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 3 Aktivní a mrtvé zóny PIR senzoru záměrně vytváří použitá optika – buď soustava Fresnelových čoček, a nebo soustava lomených zrcadel. Aktivní a mrtvé zóny se v prostoru střídají a vytvářejí známý vějíř. Samotné čidlo má okénko z materiálu propouštějícího jen „zajímavé“ vlnové délky 8 – 14 µm. Jelikož čidlo je citlivé i na vibrace, interference , sluneční světlo, tak se běžně používají čidla dvě zapojená sériově v protifázi. Signál samotného detektoru budí jednoduchý předzesilovač, který je zpravidla realizován FET tranzistorem. Tranzistor má záměrně mezi řídicí elektrodou a zemí zapojen rezistor (typicky 100 kΩ), který zaručuje vybití náboje čidla krátce po jeho vzniku. Z tohoto důvodu PIR detektory nemohou detekovat statický zdroj IR záření a musí se používat jako detektory pohybu. PIR čidlo a) b) Fresnelova čočka detekční prostor pohyb člověka výstupní signál Obr. 2.1.2 a) PIR čidlo b) signál senzoru při průchodu člověka detekčním prostorem K nevýhodám PIR senzorů (levných verzí) patří možnost falešných poplachů osvětlením automobilů, přímým slunečním zářením apod. Senzory mohou reagovat na změny teploty v místnosti, na zvířata (hlodavce, ptáky) a jiné. Kromě Fresnelových čoček jsou v PIR senzorech používány soustavy lomených zrcadel. Vhodným tvarováním těchto zrcadel se opět docílí střídání aktivních a mrtvých zón. PIR senzory s lomenými zrcadly mají lepší optické vlastnosti, vytvářejí různé ohniskové vzdálenosti pro každý segment zrcadla a vytvářejí tím optimální prostorovou snímací charakteristiku. Jedním z typů lomených zrcadel je tzv. černé zrcadlo, které k čidlu velmi dobře odráží záření vyzařované lidským tělem, ale umělé světlo (automobilu, baterka, odražené sluneční světlo) absorbuje. PIR senzory používající systém lomených zrcadel jsou zpravidla dražší než senzory s Fresnelovou čočkou. PIR senzory mohou být vybaveny těmito doplňkovými obvody : - ochrana před zaslepením (antimasking) – chrání senzor před zakrytím, zastříkáním apod. Obvykle se realizuje použitím infračervené bariéry integrované do pasivního infračerveného detektoru, případně použitím mikrovlnné jednotky integrované do detektoru, která vyhodnotí pohyb v bezprostřední blízkosti detektoru a vyhlásí sabotážní poplach. - Systém bez hluchých zón – kompletní ochrana ve vymezeném prostoru (technologie LODIF) - Paměť poplachu a dálkový Reset této paměti – umožňuje identifikaci narušení prostoru, a nebo poruchy detektoru v případech, kdy je na jednu smyčku připojeno více detektorů. 4 FEI Vysoká škola báňská – Technická univerzita Ostrava - Akustický vyhledávač zón – systém umožňuje nastavení charakteristiky detektoru podle signálu z akustického výstupu. Automatická kontrola po zapnutí – po zapnutí senzoru se generuje testovací signál, který kontroluje správnou činnost obvodů. Obvod teplotní kompenzace – slouží pro zvýšení odolnosti senzoru vůči planým poplachům při změnách teploty okolí. Obvod zpracování signálu s automatickým počítáním impulsů – senzor vyhlásí poplach až po napočítání stanoveného počtu impulsů, tím předchází falešným poplachům. Obr. 2.1.3 Aplikace PIR senzorů Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 5 b) a) Obr. 2.1.4 a) PIR senzor s Fresnelovou čočkou b) detekční zóny PIR senzoru 2.2 DTS optovláknové systémy detekce požáru V souvislosti s objevy v optice [1][2][3][11] a se zvládnutím těchto objevů i výrobní technologií v průmyslových podmínkách se v posledních desetiletích objevují v EPS (Elektronická Požární Signalizace) nová řešení automatické detekce požáru. Systémy využívající optická vlákna zde hrají významnou roli. Využívají fyzikálních jevů – teplotní závislosti Brillouinova rozptylu nebo Ramanova rozptylu. Jelikož aparatura využívající Brillouinův rozptyl je podstatně dražší, a výsledky měření jsou ovlivněny i mechanickým namáháním vlákna, bude v následujícím textu popsána pouze detekce požáru využívající Ramanova rozptylu. DTS (Distributed Temperature Sensing) jsou distribuované systémy, které s využitím optického vlákna dokážou měřit teplotu (některé navíc i mechanické napětí). Optické vlákno využívané DTS systémem si lze představit jako několik tisíc senzorů poskytujících po zpracování informaci o teplotním (tlakovém) profilu podél vlákna, přičemž je využito veškerých předností, které optické vlákno nabízí. Mezi tyto výhody patří : - Délka optického vlákna až do 10 km v případě DTS používající Ramanův rozptyl (až 30km pro DTS založených na Brillouinově rozptylu) - Délkové rozlišení 1m, tomu při 10km odpovídá teoreticky 10 000 bodů, ve kterých je teplota měřena, 10 000 snímačů. Současné odečítání několika tisíců naměřených hodnot. - Běžně dosahované teplotní rozlišení 0,01°C. Díky tomu je např. možno v chladných prostorách (jeskyně) zadetekovat přítomnost člověka v blízkosti vlákna. Dosahovaná přesnost je uváděna ± 1°C. - Odolnost vůči elektromagnetickému záření - Bezpečné použití v hořlavých a výbušných prostředích - Odolnost vůči agresivnímu prostředí (v případě použití speciálních typů kabelů) - Snadná instalace a téměř žádná údržba, dlouhodobá kontinuální měření (až 30 let) - Téměř okamžitá lokalizace změn teploty, tlaku, poruchy a událostí. 6 FEI Vysoká škola báňská – Technická univerzita Ostrava Plášť o 125um Jádro o 50um Technicky jsou DTS systémy založeny na principu optického reflektometru, tzn., že do vlákna je vylán světelný impuls o vlnové délce 1064 nm, s výkonem zdroje záření menším než 1 mW a šířce 10 ns, jehož část se vlivem nelineárního (nepružného) rozptylu v optickém vlákně vrací zpět na detektor systému DTS. Jevy nelineární (nepružné) způsobující návrat části světelného impulsu na detektor se nazývají Ramanův a Brillouinův rozptyl. DTS systémy se proto dělí dle konstrukce v závislosti na použitém druhu rozptylu, který potřebují ke své činnosti. DTS systémy detekující Ramanův stimulovaný rozptyl využívají mnohovidového (průměr jádra 50 µm) optického vlákna s velkou hodnotou numerické apertury pro maximalizování vedené intenzity zpětně odraženého světla, protože velikost zpětně odraženého Ramanova rozptylu je poměrně malá vlivem relativně vyšší útlumové charakteristiky mnohovidového vlákna, která omezuje dosah Ramanovských systémů na přibližně 8 - 10 km. Primární ochrana o 250um Obr. 2.2.1 Struktura použitého mnohovidového optického vlákna pro Raman DTS Ke vzniku rozptylu záření (stejně jako k absorpci či fluorescenci) dochází z důvodu průchodu záření prostředím. Avšak na rozdíl od absorpce a fluorescence u nich dochází rovněž k rozptylu je velikost rozptýlené záření menší. K rozptylu záření může dojít na malých tuhých částečkách hmoty (tzv. Tyndalův jev, např. průchod slunečního záření prostředím obsahujícím značné množství jemných prachových částic), nebo na molekulách. Budeme-li zkoumat rozptyl záření na molekulách, zjistíme, že převážná část rozptýleného záření má stejnou vlnovou délku jako záření původní (Rayleighův rozptyl). U malé části rozptýleného záření však dochází ke změně vlnové délky oproti původnímu budícímu záření (Ramanův či též kombinační rozptyl). Tento jev byl předpovězen rakouským vědcem Smekalem v roce 1923 a teoreticky se jím zabývali v letech 1925-1927 Heisenberg, Dirac, Kramers či Schrödinger. V roce 1928 jej experimentálně prokázal při studiu rozptylu světla indický vědec Chandrasekhara Venkata RAMAN, po němž byl pojmenován a jenž za tento objev obdržel v roce 1930 Nobelovu cenu za fyziku. Ve stejném roce jako Raman popsali změnu vlnové délky rozptýleného záření při studiu chování světla v krystalech i sovětští badatelé Landsberg a Mandělštam, kteří tento jev nazvali kombinační rozptyl světla. Jak již bylo uvedeno výše, dojde při průchodu záření zkoumanou látkou nejen k absorpci záření a případně i k fluorescenci, ale rovněž k rozptylu záření. Absorpce a fluorescence jsou jevy majoritními, zatímco na rozptylu záření se podílí pouze malá část záření vstupující do systému. Fluorescence je navíc při měření rozptylu záření dějem velmi rušivým (a tudíž nežádoucím). K rozptylu záření na molekulách dochází v okamžiku, kdy se foton vstupujícího záření srazí s molekulou zkoumané látky. Přibližně tisícina zářivého toku vstupujícího (budícího) záření se podílí na pružných srážkách fotonů budícího záření s molekulami. Při pružné srážce se energie (označená v 2.2.2 jako E) odraženého fotonu (ani u molekuly) nezmění a u vzniklého Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 7 rozptýleného záření tudíž nedochází ke změně vlnové délky oproti záření budícímu (viz obr. 2.2.2). Toto rozptýlené záření je označováno jako Rayleighův rozptyl. E=1 v´ Virtuální energetické stavy E=h v Budicí energie E=h v Rayleighyho rozptyl v=4 v=3 Vibrační v=2 energetické stavy v=1 IR absorbce v=0 E=0 Obr. 2.2.2 Vznik Rayleighova rozptylu Foton záření se srazí s molekulou. Během srážky se molekula dostane na virtuální excitovanou vibrační energetickou hladinu. Téměř okamžitě však klesne na původní základní energetickou hladinu. Nedochází tudíž k žádnému pohlcení ani k emisi energie. Foton po srážce s molekulou má proto stejnou energii (a tedy i frekvenci) jako před srážkou. Podstatně menší část budícího záření se účastní nepružných srážek fotonu s molekulou. Dojde-li k nepružné srážce, předá dopadající foton část své energie molekule nebo od ní určité kvantum energie přijme. Takto vzniklé rozptýlené záření bude mít rozdílnou frekvenci od záření budícího. Tento jev se nazývá Ramanův rozptyl. Při nepružných srážkách fotonů a molekul se nemění kinetická energie, ale pouze vnitřní energie zúčastněných molekul. Výsledkem změny vnitřní energie molekuly je její přechod z nižšího do vyššího vibračního (přesněji vibračně-rotačního) stavu nebo naopak. Rozdíl mezi frekvencemi fotonu před a po srážce (tzn. rozdíl frekvencí budícího a rozptýleného záření) se označuje jako Ramanův posun a odpovídá frekvenci příslušného pásu v Ramanově spektru. Aby bylo možné dokonale zaznamenat změnu frekvence rozptýleného záření je zapotřebí používat pro buzení Ramanova rozptylu záření monochromatické. Při neelastické (nepružné) srážce fotonu budícího záření s molekulou může dojít ke snížení i k zvýšení energie fotonu. V případě snížení energie fotonu, předá foton jisté kvantum, viz vzorec (1) své energie molekule, viz vzorec (2). Jedná se přesně o takové kvantum, které umožní molekule přejít do vyššího vibračního stavu viz vzorec (3). Foton má po srážce nižší energii a tedy i nižší frekvenci. Příslušný pás bude v Ramanově spektru posunut od pásu budícího záření směrem k nižším energiím do tzv. Stokesovy oblasti (viz obr. 2.2.3). Jedná se o červený posun; to je posun směrem k nižším frekvencím neboli k větším vlnovým délkám. E 0 = hv0 (1) E1 = hv1 (2) ∆E1 = h(v1 − v0 ) = h∆v (3) 8 FEI Vysoká škola báňská – Technická univerzita Ostrava E0 - energie fotonu před srážkou; E1 - energie fotonu po srážce; ν0 - frekvence fotonu před srážkou; ν1 - frekvence fotonu po srážce; ∆E - úbytek energie fotonu způsobený srážkou (je roven energii nutné k přechodu molekuly do vyššího vibračně-rotačního stavu); ∆ν frekvence Ramanova posunu (frekvence pásu v Ramanově spektru); h - Planckova konstanta. E=1 v´ E0= h v0 E1= h v1 Budicí energie Virtuální energetické stavy v=4 v=3 Vibrační v=2 energetické stavy v=1 v=0 E=0 Stokesova složka Ramanova rozptylu Obr. 2.2.3 Vznik Ramanova rozptylu ve Stokesově oblasti Rayleighyho rozptyl Foton záření se srazí s molekulou. Během srážky se molekula dostane na virtuální excitovanou vibrační energetickou hladinu a poté klesne na vibračně energetickou hladinu, která je vyšší než hladina základní. Molekula tedy zůstane po srážce s fotonem v excitovaném vibračním stavu. Energie nutná k udržení molekuly v excitovaném stavu je odebrána fotonu viz vzorec (5). Ten má proto po srážce nižší energii (frekvenci) než před srážkou - vzorec (4). V případě zvýšení energie fotonu získá foton energii od molekuly. Velikost obdržené energie je totožná s energetickým kvantem, které molekula uvolní při přechodu z vyšší na nižší vibračně-rotační energetickou hladinu. Foton má po srážce vyšší energii a tedy i vyšší frekvenci viz vzorec (6). Příslušný pás bude v Ramanově spektru posunut od pásu budícího záření směrem k vyšším energiím do tzv. anti-Stokesovy oblasti (viz obr. 2.2.4). Jedná se o modrý posun; tj. posun směrem ke kratším vlnovým délkám. E 0 = hv0 (4) E 2 = hv 2 (5) ∆E = h(v 0 + v 2 ) = h∆v (6) E0 - energie fotonu před srážkou; E2 - energie fotonu po srážce; ν0 - frekvence fotonu před srážkou; ν2 - frekvence fotonu po srážce; ∆E - nárůst energie fotonu způsobený srážkou (je roven energii uvolněné při přechodu molekuly z vyššího do niž. vibračně-rotačního stavu); ∆ν - frekvence Ramanova posunu (frekv. pásu v Ramanově spektru); h - Planckova konstanta. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO E=1 v´ 9 Virtuální energetické stavy E0= h v E2= h v1 Budicí energie v=4 v=3 Vibrační energetické stavy v=1 v=2 v=0 E=0 Rayleighyho rozptyl Stokesova složka AntiStokesova Ramanova složka Ramanova rozptylu rozptylu Obr. 2.2.4 Vznik Ramanova rozptylu v anti-Stokesově oblasti Intenzita spektrálních pásu v Stokesově, potažmo v anti-Stokesově oblasti Ramanova spektra, bude záviset na množství molekul nacházejících se v základním, resp. ve vyšším vibračněrotačním stavu. Podle Boltzmannova rozdělení se za normálních podmínek nachází mnohem více molekul v základním vibračně-rotačním stavu než ve vibračně-rotačním stavu excitovaném. Při růstu teploty se tato rovnováha postupně posunuje ve prospěch excitovaného stavu. Poměr intenzit jednotlivých pásů v obou oblastech je dán vztahem (7). 4 ∆E I aS (ν 0 + ν v ) − k ×T = ⋅e I S (ν 0 − ν v )4 (7) IaS - intenzita pásu v anti-Stokesově oblasti; IS - intenzita pásu ve Stokesově oblasti; ν0 - frekvence budícího záření; νv - frekvence spektrálního pásu (frekv. Ramanova posunu); ∆E - energetický rozdíl mezi základním a prvním excitovaným vibračním stavem; k - Boltzmannova konstanta (1,3807.10-23 J.K-1); T - termodynamická teplota. Ramanovo rozptýlené světlo vzniká termálně ovlivněnými vibracemi molekul, následkem čehož zpětně rozptýlené světlo nese informaci o lokální teplotě z místa rozptylu. Ve skutečnosti má Ramanovo zpětně rozptýlené světlo dvě frekvenčně posunuté složky Stokesovskou a anti-Stokesovskou složku. Amplituda anti-Stokesovské složky je silně teplotně závislá, zatímco amplituda Stokesovské složky téměř vůbec ne. Proto tedy na Ramanově jevu založené senzorové měření vyžaduje filtraci k oddělení důležitých frekvenčních složek. V těchto složkách spočívá záznam o vztahu mezi anti-Stokesovskou amplitudou a Stokesovskou amplitudou, který obsahuje teplotní informaci. Nákres DTS Ramanovy aparatury pro distribuované měření teplot je na následujícím obrázku. Laserová dioda vysílá periodicky do vlákny impulsy o délce 1-10ns, tyto impulsy se ve vláknu časově mnohonásobně prodlouží. K nepatrnému rozptylu světla dochází ve vlákně v každém místě, výraznější rozptyl spojený navíc se změnou vlnové délky světla vzniká v místech odlišné teploty vlákna. Toto rozptýlené světlo se šíří vláknem mj. také zpátky, ve spektrálně závislém děliči se rozdělí do dvou vláken jako vlnová délka Stokesova a antiStokesova. Intenzita těchto vlnových délek je měřena lavinovými fotodiodami. Vzdálenost měřeného místa je dána časem návratu světla, teplota je přímo úměrná poměru intentiz AntiStokesové složky ku Stokesově složce. FEI Vysoká škola báňská – Technická univerzita Ostrava = 1,40 m Kompenzační vlákno s posunutou disperzní křivkou Detekční lavinové InGaAs Avalanche fotodiody Procesor Zesilovače Spektrálně závislý vlnový dělič = 1,32 m Čerpací Laserová Dioda = 1,32 m Anti-Stokes Útlumový článek a izolátor = 1,50 m Ramanovský vláknový laser Stokes 10 Optické vlákno (senzor) Výpočet průměru z 212 216 hodnot Obr. 2.2.5 Schema Ramanovské DTS měřicí aparatury Obr. 2.2.6 Umístění optického vlákna pro detekci požáru pod dopravníkem v uhelném dole, Vyhodnocovací DTS jednotka FireFinder M (firma GESO GmbH Jena) 2.3 Štěrbinové kabely Pro perimetrickou ochranu objektů lze využít štěrbinové detekční kabely, které se řadí mezi skryté detekční technologie [7][10]. Detekční kabely jsou zpravidla dva koaxiální kabely, jeden ve funkci vysílače Tx, druhý má funkci přijímače Rx. Ve stínění koaxiálního kabeku vysílače jsou vytvořeny štěrbiny, kterými uniká elektromagetické pole do prostoru mimo kabel. Energie tohoto unikajícího pole je detekována paralelně vedeným přijímacím koaxiálním kabelem díky tomu, že má taktéž ve stínění štěrbiny. Elektromagnetické pole Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 11 vytvořené v okolí detekčních kabelů vytváří detekční zónu, která zasahuje nad i pod úroveň terénu. Tx Rx Obr 2.3.1 Detekční pole štěrbinových kabelů, vysílací a přijímací kabel umístěny zvlášť Vysílací a přijímací kabel lze umístit do jednoho společného dvojkabelu, nebo jsou umístěny zvlášť jako jednoduché kabely. 4 3 2 1 Obr 2.3.2 Příklad koaxiálního kabelu – RG 59 B/U 1 – poměděný ocelový drát (STAKU) ∅ = 0,584mm 2 – polyetylénová izolace (dielektrikum) ∅ = 3,7mm 3 – stínění opletením z holých měděných drátů 4 – vnější plášť z polyvinylchloridu (PVC), černý Parametry : , impedance 75 [Ohm] fmax 3 [GHz] útlum (100MHz) 11,1 [dB/100m] Detekční kabely jsou virtuálně rozděleny na buňky o délce 2m. V rámci jednotlivých buněk musí být optimalizovány detekční parametry. Výsledkem kalibrace je tzv. citlivostní profil a nastavení prahových detekčních úrovní pro každou buňku. Pokud pohybující se objekt vstoupí do detekčního pole Rx, pak detekční kabel zachytí změněný signál tohoto pole a přenese jej do detekčního modulu. Detekční modul provede analýzu amplitudy a fáze změněného signálu a srovnání s uloženými prahovými hodnotami. Pokud amplituda odezvy překročí prahovou hodnotu, systém vyhlásí poplach a identifikuje místo jeho vzniku. Detekční systém tvořený štěrbinovými kabely je schopen zajistit střežení úseku dlouhého až 400m. Štěrbinové kabely mohou být uloženy nejen do půdy, ale i betonu či asfaltu. Detekce je založena na elektrické vodivosti, velikosti a rychlosti pohybunarušitele. Pravděpodobnost detekce narušitele s hmotností větší než 35kg je vyšší než 99%, zatímco narušitel s hmotností menší než 10kg je ignorován s pravděpodobností 95%. Předností štěrbinových kabelů je velmi nízká četnost planých poplachů způsobených např. magnetickými vlivy, teplotními změnami, mlhou, větrem, krupobitím, bouřemi, sněhem apod. Elektromagnetické pole je hmotné(má silové účinky), jeho prostřednictvím se uskutečňuje vzájemné elektromagnetické působení elektricky nabitých těles nebo částic. Toto pole má složku elektrickou a magnetickou. V určitých případech mohou pole existovat samostatně, pak rozlišujeme elektrostatické pole a magnetické pole. Účinky elektrostatického pole se využívají v kapacitních detektorech a snímačích otisku prstu. V bezpečnostních technologiích se nejčastěji využívá elektromagnetické pole – ve štěrbinových kabelech, v detektorech kovů aj. 12 FEI Vysoká škola báňská – Technická univerzita Ostrava Budicí a vyhodnocovací přístroj Přesná lokalizace narušení Práh detekce dB Práh detekce dB Buńky Vyrovnávání citlivosti Tx Detekční pole Rx dB Odezva na pohyb narušitele překročila prahovou hodnotu Odezva na pohyb zvířete nepřekročila prahovou hodnotu Obr. 2.3.3 Detekční systém se štěrbinovými kabely – odezva na člověka a zvíře Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 13 2.4 Zabezpečovací koaxiální kabely využívající tření Tento druh kabelu využívá úplně jiný princip než štěrbinové kabely. Žádné štěrbiny v opředení vytvořeny nejsou. Je to opět koaxiální kabel, ale dvouplášťový – uvnitř obsahuje izolační vrstvy dvě. Významnými konstrukčními faktory s charakteristickými vlastnostmi je použití teflonové izolační dielektrické vrstvy, postříbřené stínění a pocínované stínění, které jsou od sebe navzájem odděleny první izolační vrstvou. Kabel se používá k obvodové ochraně budov a pozemků jako perimetrická ochrana. Typicky je připevněn podélně k obvodu plotu. Pokud se narušitel pokouší dostat přes plot, nebo jej prolomit, způsobí tím vibrace oplocení, a tím zároveň tření postříbřené vrstvy kabelu s teflonovou dielektrickou vrstvou. Tím se vytvářejí napěťové impulsy, které elektronické zařízení vyhodnocuje, a tato informace se následně odesílá na pult centrální ochrany. Obr. 2.4.1 Zabezpečovací koaxiální kabel využívající tření upevněný na plotu (f. nkt cables) středový vodič izolace(dielektrikum) vnitřní stínění vnitřní plášť vnější stínění vnější plastové krytí Obr. 2.4.2 Struktura zabezpečovacího koaxiálního kabelu využívajícího tření 2.5 LIDAR Slovo LIDAR je odvozeno z anglického názvu Light Detection and Ranging, jde do jisté míry o přístroj analogický Radaru [7][10]. LIDAR je laserový měřicí systém, který periodicky měří vzdálenost k okolním předmětům, „osahává“ svoje okolí. Zdánlivě nejjednodušší způsob jak změřit vzdálenost k objektu je využít známé rychlosti světla ve vakuu – 299 792 458 m/s. Pak dráhu 1m světlo urazí za 3,34ns, a dráhu 1mm za 3,34ps. Stanovit dostatečně přesně vzdálenost k objektu změřením doby, za jakou se laserový paprsek 14 FEI Vysoká škola báňská – Technická univerzita Ostrava vrátí, by znamenalo použít náročné (a drahé) technické řešení s extrémně rychlými elektronickými obvody. Technicky mnohem jednodušší řešení splňující požadavek rozlišení 0,1m je modulace laserového paprsku modulační frekvencí f mod , která je mnohonásobně nižší, než je frekvence samotného světla laserového paprsku (ta je pro lasery v infra oblasti řádu 10^14 Hz). Vzdálenost k objektu je L, doba od vyslání paprsku po jeho přijetí fotodetektorem je ∆t, platí tedy : c∆t (1) L= 2 Úhel, který svírá vyslaný a odražený paprsek, je pro celý rozsah LIDARU takřka nulový, a chyba z něj plynoucí je mnohem menší než rozlišovací schopnost aparatury a lze ji tedy zanedbat. Laserový paprsek je např. modulován signálem o frekvenci f mod 10MHz, tomu odpovídající perioda je T=100ns. Vzdálenost L k objektu je přímo úměrná počtu vyslaných celých period T a fázovému posuvu θ, se kterým se vlna vrátí. Obecně platí : ∆t θ = 2π (2) T Z hlediska vysvětlení fázovému posuvu θ můžeme na LIDAR pohlížet tak, jako by vysílal modulační signál samotný. Situace je na obr. 2.5.1 demonstrována pro vzdál. L = c*1,1T = = 3*10^8 * 1,1*0,0000001 = 33m. Je patrné, že vlna dorazí zpět s časovým posuvem (zpožděním) 0,2T, čemuž odpovídá fázový úhel 0,2 * 2π = 0,4π [rad]. Pro vzdálenost L z výše uvedených vztahů vyplývá : c∆t c θT cT cT L= = = θ= (θ + n2π ) (3) 2 2 2π 4π 4π kde člen n2π zohledňuje periodičnost modulačního signálu. Periodičnost signálu řeší elektronické obvody počítající počet celých period modulačního signálu. Tak jsou vlastnosti LIDARu (hlavně dálkové rozlišení) určovány modulační frekvencí a nikoli frekvencí laseru. Parametry komerčních systémů LIDAR Měřicí rozsah 200 m 16° horizontálně Snímací úhel 3° vertikálně Průměr laserového paprsku 30 mm Rozlišovací schopnost 0,1 m Přesnost 1% Přípustná teplota okolí -40°C až +85°C Tab. 2.5.1 Parametry komerčních systémů LIDAR V LIDARU pro zabezpečovací aplikace neustále rotuje hlavice s několika laserovými paprsky, které cyklicky „osahávají“ terén. Měření vzdálenosti k urč. objektu je častým požadavkem praxe, a tak je LIDAR uplatňován v mnoha aplikacích i mimo vojenské a zabezpečovací systémy. Například technologie PMD(Photon-Mixing Device) – měřicí systém, který kromě získání obrazu (CCD snímačem) také měří vzdálenost k jednotlivým bodům obrazu (Lidarem). Tak PMD poskytuje skutečný 3-rozměrný obraz. Dosahuje se rychlosti 100 snímků/s. Jsou vývojové práce v automobilovém průmyslu, které si kladou za cíl ovládat aitbagy právě pomocí PMD(a nikoli elektronickými akcelerometry). Signálový procesor přitom musí správně vyhodnotit prudký pohyb celého lidského těla, a nikoli třeba jen ruky, kterou člověk sahá pro něco do skříňky. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 15 a) Elektromagnetické vlnění laseru b) Modulační signál Tmod = 1 / f mod c) LIDAR fmod Elektrooptický modulátor LASER Demodulátor Měřič fázového posuvu objekt Foto detector Vyhodnocovací počítač, displej L = c 1,1 Tmod d) fázový posuv situace v čase t = Tmod = 100ns situace v čase t = 1,1Tmod = 110ns situace v čase t = 1,2Tmod = 120ns situace v čase t = 2,2Tmod = 220ns Obr. 2.5.1 LIDAR, měřicí aparatura, fázový posuv modulačního signálu Technologie ACC(Adaptive Cruise Control) je LIDAR aplikovaný v řídicím systému automobilu. Systém pomocí LIDARu měří vzdálenost od automobilu, který jede ve stejném silničním pruhu před daným autem. ACC upravuje rychlost jízdy tak, aby byl dodržen bezpečný odstup obou vozidel. Pochopitelně platí, že čím je větší rychlost jízdy, tím musí být větší odstup. Když první automobil začne brzdit, tak za ním jedoucí auto s ACC začne automaticky brzdit také, a to co nejvolněji, aby stihl zareagovat řidič, který jede ještě za ním. 16 FEI Vysoká škola báňská – Technická univerzita Ostrava Zárověň musí být brždění natolik razantní, aby nedošlo ke srážce. ACC vyrábí např. firma WABCO, systémy ACC jsou vybaveny kamióny, auta Audi aj. b) Aplikace systému LIDAR a) LIDAR ve stavebnictví b) systém ACC v silniční dopravě c) přenosný zabezpečovací LIDAR d) pevně instalovaný zabezpečovací LIDAR a) c) d) Obr. 2.5.2 Aplikace systému LIDAR 2.6 Mikrofony a použití zvuku Mikrofony jsou zařízení pro detekci zvuku, která transformují změny akustického tlaku na elektrický signál [7][10]. Ten je dále dále zesilován, upravován. Pokud je požadován přenos signálu na větší vzdálenost event. je-li požadován záznam na paměťové médium, je signál převeden do digitálního tvaru, a zkomprimován. Zvuk jakožto akustický tlak svým silovým působením rozkmitá membránu, a tyto její kmity jsou různými způsoby (elektricky, Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 17 opticky) snímány, nebo silově působí přímo na materiál senzoru (elektret nebo piesoelektrický krystal) a je snímána výstupní elektrická veličina senzoru, která samozřejmě závisí na zvuku. Celková kvalita nasnímaného zvuku je výsledkem kvality mikrofonu, nasměrování mikrofonu, místa, kde je zvuk snímán a vzdálenosti od zdroje zvuku. Mikrofon je jednoznačně nejpodstatnější částí nahrávacího řetězce a nelze jej nahradit ani tím nejdokonalejším následným zpracováním signálu. Základním parametrem mikrofonu je citlivost [mV / Pa] a s jistým zjednodušením lze říci, že se jedná o úroveň výstupního signálu mikrofonu v akustickém poli při akustickém tlaku 1 Pa (94 dB) při nezatíženém výstupu a při kmitočtu 1 kHz. Běžné studiové mikrofony mají citlivost přibližně 1 – 10 [mV / Pa]. Pojem šumový ekvivalent - je to úroveň akustického tlaku odpovídající vlastním šumům mikrofonu. Dynamický rozsah = maximální akustický tlak(nezkreslený) - šumový ekvivalent. Závislost citlivosti mikrofonu na směru se nazývá směrová charakteristika. Bývá obvykle symetrická. V závislosti na tvaru těla mikrofonu a umístění otvorů a absorpčních materiálů vůči poloze membrány lze dosáhnout různých směrových charakteristik nazývaných podle tvaru : - všesměrová - osmičková - kardioidní - superkardioidní - hyperkardioidní. Frekvenční charakteristika mikrofonu je závislost citlivosti na frekvenci snímaného signálu a jedná se o složitou funkci, která závisí na celkové konstrukci, velikosti a tloušťce membrány, použitých materiálech apod. a mění se i se směrem snímání. Impedance mikrofonu je jeho výstupní elektrická impedance. Protože zpravidla závisí na frekvenci, udává se pro 1 kHz. Mikrofony jsou vyráběny vysokoimpedanční 5 – 10kΩ, a nízkoimpedanční 150 – 600 Ω. Podle fyzikálního principu snímání pohybu membrány se mikrofony dělí na několik typů : - Dynamické mikrofony – jemná cívka spojena s membránou kmitá v magnetickém poli, které je vytvářeno v moderních konstrukcích magnety s prvky vzácných zemin. Jsou to levné odolné systémy, které snesou vysoké úrovně hlasitosti a nevyžadují externí napájení. Jejich nevýhodou je slabší signál, který vyžaduje velké zesílení a tím i celkové zvýšení šumu v signálu. - Páskové mikrofony – princip je stejný jako u dynamických mikrofonů, jen membrána a cívka je nahrazena pokoveným polymerovým páskem. Jejich výhodou je velmi dobrá frekvenční charakteristika, především na vysokých frekvencích. Velmi slabý signál u nich vyžaduje použití transformátoru, což následně vede ke zvýšení úrovně šumu. - Kapacitní mikrofony – kmitající membrána tvoří jednu elektrodu kondenzátoru, a vyhodnocována je změna kapacity tohoto systému, a to buď klasicky měřením změny elektrického napětí(je-li náboj konstantní a mění-li se kapacita kondenzátoru, projeví se to navenek jako změna napětí), nebo měřením změny kapacity na frekvenci 8MHz (RF kapacitní mikrofony). Tento typ mikrofonů má vysokou citlivost, velkou šířku frekvenčního pásma a nízký šum. Používají se nejen jako velmi kvalitní mikrofony, ale také jako mikrofony kalibrační. Vyžadují externí napájecí zdroj. 18 FEI Vysoká škola báňská – Technická univerzita Ostrava - Elektretový mikrofon – akustické vlny působí přímo na feroelektrický materiál, na jehož povrchu generuje elektrický náboj. Jedná se o velmi levný, kvalitní a velmi malý (Φ 2,5mm) mikrofon, který sice nedosahuje citlivosti kapacitních mikrofonů, ale v mnoha aplikacích se používá. - Kontaktní mikrofony – snímají přímo ozvučnice nástrojů s využitím piesoelektrického jevu nebo klasických tenzometrů. - Laserové mikrofony - využívají pro snímání pohybu membrány optických principů (interference, rozptyl záření aj.). Jsou extrémně citlivé, jejich použití je ve speciálních aplikacích (hydrofony pro detekci ponorek). Důležitou podmínkou pro kvalitní snímání zvuku je prostředí, ve kterém ke snímání dochází. Pro ilustraci si ukažme aplikace mikrofonů a vysílačů pro odposlechy. Ob. 2.6.1 a) Moderní výrobek odposlechové techniky b) Vybavení lovce zvuků Obr. 2.6.1.a) ilustruje možnosti miniaturizace mikrofonní techniky (mikrofon, zesilovač, vysílač i zdroj energie v jednom celku), která je využitelná pro odposlech v různých situacích. Na obr. 2.6.1b) je vidět parabolická akustická anténa pro zacílení na objekt zájmu, která musí být vyrobena z tvrdého materiálu s velkou akustickou impedancí, jak bylo uvedeno výše. Akustickými vlastnostmi prostředí se zabývá prostorová akustika. Akustika jako věda o akustických vlnách je disciplína velmi rozsáhlá a jednotlivým jejím částem (akustika staveb, podmořská akustika, akustické materiály, akustika koncertních sálů apod.) je věnováno velké množství literatury. Ve všech aplikacích je ovšem nutno vycházet ze základních fyzikálních zákonitostí a dobrý technik je nejenom zná, ale také je správně aplikuje. Akustika se zabývá i vnímáním zvuku lidskými smysly. Mezi zvukové jevy se mimo zvuku, který je pro lidské ucho slyšitelný, řadí i infrazvuk a ultrazvuk. Stále jde o mechanické vlny, jen s frekvencemi mimo rozsah slyšitelného zvuku(ten má kmitočet 20Hz – 20kHz). Sluchový vjem závisí především na frekvenci a intenzitě zvuku. Přesná hranice mezi zmíněnými oblastmi je individuální u každého člověka. Z hlediska lidského zdraví je obecně nebezpečná nadměrná hlasitost i doba, po kterou je člověk vystaven účinkům hluku. Nejvíce je pak postižena sluchová a nervová soustava. Infrazvuk Infrazvuk zahrnuje mechanické vlnění o frekvencích nižších než asi 16Hz. Zdroje infrazvuku lze dělit na : - přírodní (zemětřesení, sopečná činnost, vodopády, příboj a bouře na moři, polární záře, velryby, sloni aj.) Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 19 - umělé (provoz výrobních strojů, průmyslové ventilátory, exploze, elektrické lokomotivy, letadla, varhany aj.) Zkoumání infrazvuku a jeho působení na člověka je stále se rozvíjejícím se oborem zahrnujícím poznatky akustiky, geofyziky, medicíny. Infrazvuk je nebezpečný díky svým silným oscilacím a pronikáním všemi známými materiály. Výjimkou je samozřejmě vakuum, jímž se akustické vlny šířit nemohou. Člověk infrazvuk neslyší, ale cítí jej – obtěžuje akustickým tlakem celé tělo. Ocitne-li se člověk v infrazvukovém poli, může mu způsobit vážné zdravotní potíže. Nebezpečné jsou zejména frekvence odpovídající biologickým rytmům, frekvencím blízkým srdečnímu tepu(1-2Hz), specifickým frekvencím činnosti mozku(např. afla vlny 8-13Hz). Tyto frekvence tak mohou vyvolávat pocity nevolnosti, bolesti hlavy, mdloby, zrychlený tep, zástavy srdce, poruchy motoriky a vidění aj. Devastující vliv na lidský organismus mají frekvence 1-10Hz. K ohrožení života dochází při překročení hladin akustického tlaku 170 – 180 dB při frekvencích 0,1 – 100 Hz. Na živé buňky má infrazvuk ničivý vliv. Poškozuje je mechanicky (při určitých frekvencích rezonují a trhají se) i chemicky (vznikají volné radikály, mění se složení chemických látek). Infrazvuk působí také na lidskou psychiku, dokáže vyvolat úzkost, strach i extrémní citové rozrušení. Studie potrvzují, že lidé žijící v blízkosti větrných elektráren či velkých letišť mají sklon k ovlivnění psychiky, poruchám spánku, nevolnostem. Ultrazvuk Ultrazvukové vlny mají frekvence vyšší než 16kHz. Pro člověka jsou neslyšitelné, ale řada živočichů(delfíni, netopýři, včely) má schopnost ultrazvukové signály generovat, vnímat a využívat je k orientaci v prostoru i komunikaci. Jde o tzv. echolokaci. U ultrazvuku dochází vzhledem k malým vlnovým délkám k nepatrnému ohybu vlnění. Lze tak snadno vytvořit úzký paprsek, který se šíří přímočaře, pokud nenarazí na překážku o velikosti větší než je jeho vlnová délka – pak nastane úplný odraz a signál se šíří zpět. Tohoto jevu využívá řada aplikací, jako moderní ultrazvuková defektoskopie(zjišťování vnitřních vad a nehomogenit v materiálech) a ultrazvukové zobrazování. V lékařství se ultrazvuk používá pro zobrazování měkkých tkání již řadu let. Je zde použit ultrazvuk vysokých frekvencí (řádově MHz), který prostupuje tkáněmi a od různých struktur se odráží s různou mírou. Na základě přijatých vln je pak vytvářen dvoj/trojrozměrný obraz řezu tělem. Principu „ozvěny“ ultrazvuku tj. odrazu od pevné překážky a jejich detekce s časovým zpožděním se využívá v sonarech – k měření hloubky, pátrání po překážkách (i hejnech ryb) pod hladinou. Vzhledem k poměrně vysokým frekvencím se jako zdroje ultrazvuku využívají speciální zařízení na bázi mechanické, piesoelektrické nebo magnetostrikční (vznik kmitů v prostředí feromagnetické tyčinky umístěné ve střídavém magnetickém poli elektromagnetu). V přírodě vzniká ultrazvuk ve zvuku větru, mořského příboje, taktéž jej dokáže vytvářet některý hmyz(cikády, motýli). Sonické zbraně S tělesnými i psychickými účinky se počítá při konstrukci sonických zbraní pro použití policie i armády. Jedno z využití tzv. sonického(zvukového) děla se zaměřuje na kontrolu nezvladatelného davu v bojových zónách či zahánění pirátů na moři. Americké zařízení LRAD (Long Range Acoustic Device) je výkonným směrovým reproduktorem, který vysílá zvukový paprsek o frekvenci 2500Hz v kuželu o úhlu 30° při hlasitosti 150dB. Účinný dosah 20 FEI Vysoká škola báňská – Technická univerzita Ostrava zbraně je asi 300m, zasažené osoby pociťují silné bolesti hlavy a psychické nepohodlí. Čím blíže jsou osoby zdroji zvuku, tím je efekt silnější, kritická vzdálenost je asi 15m. 2.7 Terahertzová spektroskopie Obecně řečeno spektroskopie je vědní obor, který zkoumá vzájemné působení elektromagnetického pole a hmoty [7][10]. Stěžejní je přitom zkoumání spektra elmag. vlnění – jak jsou jednotlivé vlnové délky pohlcovány nebo emitovány apod. Zkoumaný rozsah je v prakt. v celém rozsahu technicky v současné době zvládnutých vlnových délek, lidským okem viditelný úsek tvoří přitom jen malou část (λ = 390 – 760nm). Z hlediska bezpečnostních systémů je aplikace spektroskopie především v identifikaci látek(drogy, výbušniny) a detekci kovových předmětů při letištních kontrolách apod. Mezi moderní spektroskopické metody zde patří terahertzová a Ramanova spektroskopie. Absorbce Terahertzová spektroskopie pracuje s elmag. zářením o frekvencích 1012 Hz (vlnové délky přibl. 0,0001 – 0,001m), jde o část spektra mezi mikrovlnnou a infračervenou oblastí. Terahertzové záření je nedestruktivní, nekontaktní, prochází elektricky nevodivými materiály. Proniká přes různé obalové materiály(papír, dřevo, plasty, textilie). THz záření je absorbováno vodou a kovy. Proto je možno pomocí kamer citlivých na THz záření skenovat a bezkontaktně prohlížet zásilky, balíky, zavazadla. Tato technologie je vhodná pro bezkontaktní skenování osob na letištích, soudech, věznicích, protože THz skenery zviditelní předměty skryté pod oblečením viz. obr. 2.7.1a. Toto použití THz skenerů je vzhledem k lidskému organismu neškodné – energie THz vln je asi milionkrát menší než energie rentgenová. Díky tomu je záření neionizující – nemůže způsobit odtržení elektronů z atomů a molekul, proto nemůže vyvolat nežádoucí změny v živém organismu a s tím související zdravotní poškození. Proto v některých bezpečnostních, lékařských i průmyslových aplikacích mohou THz skenery nahradit ionizující rentgeny. Trochu omezujícím parametrem THz skenerů je rozlišovací schopnost detailů(přibližně 2mm), což u bezpečnostních aplikací je vyhovující hodnota. Pomocí terahertzové spektroskopie se v současnosti získávají význačné a jednoznačné grafy („otisky“) materiálů, které nelze získat jiným elmag. zářením než terahertzovým. Měřením absorbce a emise THz vln různými materiály lze určit jejich chemické složení. Látky sledované z hlediska bezpečnosti(výbušniny, léčiva, drogy) mají v THz oblasti specifická spektra, kterých se využívá pro jejich detekci, teoreticky samotným počítačem bez účasti člověka. Na obr. 2.7.1b jsou absorbční spektra některých druhů výbušnin (pro přehlednost jsou v obrázku křivky posunuty ve svislém směru nad sebe). Semtex PE-4 RDX PETN HMX TNT 0 1 2 3 f[THz] Obr. 2.7.1 a) Snímky THz skeneru a fotografie b) Absorbční křivky výbušnin v THz oblasti Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 21 2.8 Zabezpečovací systémy využívající mikroohybu optického vlákna Princip mikroohybu je na obr. 2.8.1 [1][2][3]. Plášť optického vlákna má index lomu n1 , jádro n2 ; přičemž platí n1 < n2 . Je známým principem, že světlo se šíří optickým vláknem s využitím totálního odrazu. Při zakřivení vlákna dochází k tomu, že některé paprsky dopadnou na rozhraní jádro-plášť pod menším úhlem než je úhel mezní. V tom případě se zpět do jádra odrazí jen část paprsku, a část unikne do pláště jako ztráta. Situace je na obr. 2.8.1. První je napřímené vlákno, paprsek vstupuje do vlákna pod úhlem α, na rozhraní jádroplášť se odráží totálně zpět do jádra pod úhlem Φ 0 . Předpokládejme že Φ 0 je úhel mezní. Stačí jeho nepatrné zmenšení, a část paprsku už bude pronikat i do pláště. K tomu dochází na druhém obrázku – ohnuté vlákno. Situace na čele vlákna je stejná – paprsek vstupuje pod úhlem α . Rozhraní jádro-plášť dosahuje paprsek v bodě X. Elementární ploška rozhraní je zde nakloněna o úhel δ vůči přímému směru. Tím se úhel dopadu sníží o úhel δ, výsledný úhel je tedy Φ 0 - δ . Je to hodnota menší, než je mezní úhel, a dojde tedy k rozdělení paprsku na dva : b j (odražený zpět do jádra) a b p (přešlý do pláště, ztráty). n1 n2 n1 n1 X n2 bp bj n1 Obr. 2.8.1 Situace v optickém vláknu napřímeném a při mikroohybu 22 FEI Vysoká škola báňská – Technická univerzita Ostrava Na znatelném úbytku světla v jádře v důsledku mikroohybů je založeno použití optických vláken v zabezpečení podlah , prostranství pod širým nebem apod. Potřebná aparatura je na obr. 2.8.2. Snížení intenzity světla v jádře rozpozná koncový fotodetektor. Oddělovač světla z pláště Zdroj světla (laser) x Obr. 2.8.2 Zabezpečovací aparatura na principu mikroohybu optického vlákna Fotodetektor Oddělovač světla z pláště Délka vlákna v této aplikaci je max. 50km. Rozsah posunutí deformačního tělesa x je přibl. 1mm. Takovýto zabezpečovací systém je mezi mikroohybovými ten nejjednodušší a relativně levný. Nelze u něj zjistit místo na vlákně, kde k mikroohybu došlo, nedává ani informaci, zda došlo k více mikroohybům. Technicky dokonalejší (a dražší) je opatřit uvedenou aparaturu reflektometrem, v tom případě se pro aparatury tohoto uspořádání používá označení OTDR – Optical Time Domain Reflectometry. Aparatura OTDR nevyhodnocuje množství světla, které unikne do pláště. Tyto aparatury vyhodnocují optický výkon, který je v jádru vlákna rozptýlen (Rayleigho rozptyl) na některých místech (v důsledku lokální změny indexu lomu v daném místě např. vlivem stlačení). Rozptýlené světlo (jeho část) se vrátí jádrem vlákna zpět k reflektometru, který ho vyhodnotí. Metodou OTDR lze určit místo, kde k deformaci došlo(s přesností 10cm). Reflektometr rozezná i více míst, kde v danou chvíli k mikroohybům dochází. Pokud však dva mikroohyby jsou k sobě blíže, než je velikost „mrtvé zóny“, tak je reflektometr vyhodnotí jako jediný. Běžná velikost mrtvé zóny je 1m, u levných reflektometrů 10m. Cena reflektometru je 150 - 450 tisíc Kč(r. 2014). Konstrukční síla, Optické vylepšení samotného tlak Spirála vlákno kabelu s optickým vláknem je na obr.2.8.3. Spočívá v zabudované spirále, jenž obepíná samotné optické vlákno. Při Mikroohyb Opláštění Elastická stlačení dochází optického vlákna výplň k pružné deformaci spirály a následně k Obr. 2.8.3 Kabel s optickým vláknem a spirálou mikroohybům vlákna. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 23 2.9 Ramanova spektroskopie a analýza látek Ramanova spektroskopie [1][2][3] patří mezi metody vibrační spektroskopie. Vibrační spektroskopie se zabývá strukturální analýzou a určováním složení látek. Používá se k identifikaci neznámých látek. Základním principem je interakce fotonů s molekulami. Informace o měřeném vzorku jsou získávány na základě měření intenzit a vlnových délek záření, které částice měřeného materiálu emitují, nebo které je různými interakcemi s těmito částicemi pozměněno. Ramanova spektroskopie je moderní analytická metoda poskytující informace na molekulární úrovni, čímž umožňuje identifikaci chemického složení zkoumaných materiálů. Její popularita , stejně jako rozšiřování aplikací v celé řadě vědeckých oborů a průmyslových odvětvích, v posledních letech rapidně narůstá. Ramanovy spektrometry se stávají cennou součástí laboratoří po celém světě. Před více než osmdesáti lety objevil indický fyzik Sir Chandrasekhara Venkata Raman(18881970) neelastický rozptyl světla, který byl posléze nazván na jeho počest. Za tento objev a jeho práci o rozptylu světla získal v roce 1930 Nobelovu cenu za fyziku. Svou renesanci zažívá Ramanova spektroskopie díky technickému pokroku až na přelomu 20. a 21. století, kdy se začíná efektivně využívat a prokazovat, že se jedná o účinnou a perspektivní analytickou metodu. Mezi hlavní výhody Ramanovy spektroskopie patří především to, že se jedná o metodu : - Nekontaktní při měření nemůže dojít ke kontaminaci vzorku, vhodnou a výhodnou např. při analýze toxických látek nebo látek s výrazným aroma. Tyto látky (i jiné) mohou být měřeny skrze ochranné vrstvy a obaly z jiných materiálů, nejčastěji skla a polymerů. Spektra obalů lze posléze odečíst ze získaného spektra použitím softwarů navržených pro práci s daty tohoto charakteru. - Nedestruktivní, po Ramanově analýze může být vzorek následně podroben dalším procedurám a analýzám. - Bez nutnosti přípravy měřeného vzorku ve většině případů, což je pohodlné a rychlé. - Vysoce citlivou, vysoké prostorové rozlišení v řádech mikrometrů. V současnosti jsou Ramanovy spektrometry stále častěji kombinovány s mikroskopy, což přináší výhody optické mikroskopie. Vzorky lze zkoumat pod mikroskopem, částice či malé oblasti izolovat a následně získat jejich Ramanova spektra. V takových případech stačí pro získání Ramanových spekter jen malé množství látky – vzorky velikosti několika mikrometrů. - Rychlou, Ramanova spektra mohou být získána v řádech sekund až minut, chemické analýzy trvají obecně mnohem déle. - Poskytující možnost zkoumání vodních roztoků, jelikož voda obecně není Ramanovsky aktivní (na rozdíl od infračervené spektroskopie, kde přítomnost byť jen malého množství vody znemožňuje měření.) - Zaručující specifický chemický „otisk“ zkoumané substance. Technické úskalí je to, že Ramanův jev (nepružný rozptyl světla) je v podstatě slabý jev, což vyžaduje velice citlivé zařízení a také požadavek na čistotu vzorků, protože nežádoucí fluorescence (jež je silnější kvantový jev) může překrýt Ramanův rozptyl. Princip analytické metody využívající Ramanův rozptyl spočívá v ozáření vzorku látky monochromatickým světlem laseru. Tím dochází k interakci mezi fotonem a molekulou. Většina záření je rozptýlena pružně(Raileighův rozptyl) tj. se stejnou energií, část světla je absorbována, a zbývající velice malé množství světla je rozptýleno nepružně. Právě tato malá část světla je podstatná pro vznik Ramanových spekter. Nepružného Ramanova rozptylu se účastní 1 z 1 000 000 až z 10 000 000 fotonů. Nepružně rozptýlené fotony mají mírně FEI Vysoká škola báňská – Technická univerzita Ostrava Intenzita 24 A B C 12,5 10,0 8,3 7,1 6,3 [um] Ramanův posuv Intenzita Obr. 2.9.1 Ramanova spektra : A – kokain v plastovém sáčku B – plastový sáček C – spektrum samotného kokainu získané rozdílem spekter A a B Rohypnol Diazepam GHB 3,3 4,0 5,0 6,7 10,0 20,0[um] Ramanův posuv Obr. 2.9.2 Ramanova spektra látek : Rohypnol – hypnotikum, velmi silný lék na spaní používaný při bolestech Diazepam – lék pro zklidnění organismu, používaný např. při alergiích GHB – Gama – hydroxybutyrát (Gama – hydromáselná kyselina), pův. používána k narkóze při operacích, ve slabších koncentracích omamné účinky – droga Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 25 2.10 Zabezpečovací systémy využívající interference světla Tyto systémy využívají fyzikální jev interference světla. Principielní schema MachZehnderova interferometru [1][2][3] je na. Obr. 2.10.1. a RP RP Laser VO Mod RP Z FD RP-rozbočovač paprsku Mod-modulátor Z-zrcadlo FD-fotodetektor VO-vibrující objekt Obr. 2.10.1 Mach - Zehnderův interferometr pro laserovou vibrometrii Interferenční světelný obrazec vznikne tehdy, když se sloučí dva paprsky světla o stejných vlnových délkách, ale o různých fázových posuvech. Měřicí aparatura využívající MachZehnderův interferometr je na obr. 2.10.2. Snímací vlákno Jednosměrný optický člen Rozdělovač světla 50 : 50 3 dB Slučovač světla 3 dB Referenční vlákno Obr. 2.10.2 Měřicí aparatura s Mach – Zehnderovým interferometrem Světlo vysílané laserovou diodou prochází jednosměrným optickým členem(zabraňuje zpětnému chodu světla do laser. diody), a v rozdělovači je 50% vysláno do jednomódového snímacího vlákna, a 50% do referenčního. Konstrukční provedení je takové, že měřená fyzikální veličina ovlivňuje fázový posuv světla ve snímacím vláknu, například nepatrným prodoužením dráhy, kterou musí světlo urazit. Naopak vliv měřené veličiny na fázový posuv v referenčním vláknu musí být prakt. nulový. Oba paprsky jsou sloučeny ve slučovači do jednoho vystupujícího vlákna. Výsledný paprsek je snímán detektorem - fázový posuv se projeví ve vzniklém interferenčním obrazci, který je vyhodnocován zpravidla signálovým 26 FEI Vysoká škola báňská – Technická univerzita Ostrava procesorem. Je-li fázový posuv obou paprsků nulový(a nebo se liší o celistvý násobek vlnové délky), tak se na detektor dostává maximum světla. Naopak je-li fázový posun λ/2 , tak sloučený paprsek dodává minimum světla. Rozeznat v signálu detektoru razantní změnu(prodloužení vlákna při přelézání plotu narušitelem) od změn pozvolných (třeba prodloužení vlákna při nárůstu teploty při svítání), od změn periodických (závany větru) je úkol pro program v signálovém procesoru, a je otázkou, kolik situací programátor podchytil, a jak „robustně“ program udělal. Existuje několik dalších interferometrů (Michelsonův, FabryPerotův, Sagnacův), které se liší konstrukcí i aplikačními obory(např. Sagnacův je pro extrémně přesné gyroskopy). Špičková přesnost(nepřekonatelná jinými metodami v současné době) je při použití interferometrů pro měření vibrací, délek, rozměrů, posunutí - až 0,1pm (desetina pikometru) ! Extrémně přesná měření ve strojírenství, proměřování přesnosti tvaru velkých zrcadel astronomických dalekohledů (např. zrcadlo Hubbleova vesmírného dalekohledu muselo být vyrobeno s přesností 10nm) apod. Několik příkladů použití interferometrů při měření vibrací : - Detekce průjezdu automobilu – snímací vlákno je vhodným způsobem přitlačeno k vozovce, případně do ní zabudováno (zalito do betonu). V získaném záznamu lze rozpoznat osobní auto od nákladního automobilu. - Detekce chůze – Předpokládejme protáhlou budovu o půdorysu 40 x 15m, přízemí plus 2 nadzemní patra. Budova má společné klasické betonové schodiště na jediném konci budovy. Interferometrická aparatura má takovou citlivost, že rozezná chůzi osob po schodišti, přičemž kompletně celá aparatura včetně snímacího vlákna je umístěna na společné dlouhé chodbě pro dané podlaží ve vzdálenosti 20m od schodiště. Na schodišti ev. v jeho těsné blízkosti není umístěn žádný prvek aparatury. - Experimenty s odposlechem hovorů osob měřením vibrací okenního skla při hovoru. Má-li se signál poskytovaný interferometrem v reálném čase převádět na hlasovou informaci, tak je nezbytné použití signálového procesoru. Je otázkou, zda je metoda použitelná pro okna s několika skly. 2.11 Systémy elektronické požární signalizace Každoroční bilance požárů v ČR v posledních 10 letech je škody na majetku 2-3 miliardy Kč, smrt asi 130 lidí, několik set lidí lehce a těžce zraněno. O potřebnosti prevence požárů a jejich včasné detekci není nutno se rozepisovat. Systémy elektrické požární signalizace (EPS) [6] se v minulosti používaly předebším k prosté detekci vznikajícího požáru, překračujícího svou velikostí práh detekovatelnosti. Přesnější údaj o velikosti vznikajícího požáru, již ovšem není k dispozici. Určení místa vznikajícího požáru je vázáno na použitý systém EPS je na úrovni požární smyčky v případě systémů s kolektivní adresací hlásičů požáru nebo konkrétního hlásiče požáru v případě hlásičů s individuální adresací. V následujícím textu je v souladu s ČSN EN 54-x používána tato terminologie : - detektor požáru (senzor) – jakožto detektor provádí převod sledovaného parametru požáru na výst. signál detektoru, ten je zpravidla elektrický – napětí, proud, odpor - dvoustavový (klasický) hlásič požáru – zahrnuje detektor požáru, obvod jednoduché úpravy signálu detektoru – zesilovač, obvod časového zpoždění, komparátor, výstupní obvod, který je vhodným komunikačním standardem připojen k ústředně EPS. Komunikačních standardů je používána celá řada – radiové (WiFi, Bluetooth), metalické (RS485, Ethernet, …), optická vlákna a síťové komunik. protokoly u nich používané. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 27 - Analogový hlásič (s přenosem naměřené hodnoty do ústředny) – zahrnuje detektor požáru a obvody pro úpravu signálu do podoby vhodné pro přenos z hlásiče požáru do ústředny - Inteligentní hlásič požáru – zahrnuje stejné operace jako klasický dvoustavový hlásič, na rozdíl od něho však využívá podstatně složitějších algoritmů pro zpracování signálu, což je zpravidla činností vestavěného jednočipového mikropočítače. Současné systémy detekce požáru jsou navrhovány s ohledem na zajištění signalizace vzniku požáru překračujícího prahovou velikost ve stanoveném čase. Přesnost určení místa požáru závisí na použitém systému EPS. U sytému s tzv. kolektivní adresací hlásičů na hlásicí lince je ústředna schopna určit místo požáru jen s přesností na jednotlivé hlásicí linky a požár se tedy může nacházet kdekoliv v prostorech, ve kterých jsou hlásiče příslušné hlásicí linky umístěny. U sytému s tzv. individuální adresací je ústředna EPS schopna určit konkrétní hlásič požáru, který ve svém prostoru vznik požáru zjistil. Určení místa vzniku požáru je tedy podstatně přesnější a blíží se půdorysné ploše střežené jednotlivými hlásiči požáru. Ta se obvykle pohybuje v řádu desítek m2. Blokově je schema jednoduchého systému EPS na obr. 2.11.1. Ve střeženém prostoru jsou umístěny hlásiče požáru automatické, a obvykle i hlásiče tlačítkové. Ty jsou s ústřednou propojeny vedením zvaným „hlásicí linka“, resp. „požární smyčka“ u neadresovatelných hlásičů požáru a hlásičů tlačítkových. Prostřednictvím tohoto vedení jsou hlásiče z ústředny napájeny a v opačném směru se do ústředny přenášejí údaje o vzniku požáru. Pro zajištění vysoké spolehlivosti musí být provozuschopnost celého vedení hlásicí linky / požární smyčky trvale ústřednou kontrolována a případný vznik poruchy musí být obsluze signalizován. Tomuto požadavku musí odpovídat i způsob zapojení hlásičů na hlásicí lince / požární smyčce. Ústředna EPS zabezpečuje tyto základní funkce : - napájenín celého sytému EPS ze sítě, event. při výpadku z náhradního zdroje - vyhodnocuje signalizaci z hlásicích linek / požárních smyček, tuto podle potřeby dále zpracovává a příslušné stavy signalizuje obsluze - pomocí přenosových cest předává signál o požáru a případně i signály o dalších provozních stavech do doplňujících zařízení - kontroluje provozuschopnost jednak sebe sama, jednak hlásicích / požárních linek, případně i signalizačních linek a dalších komponent systému. U jednoduchých EPS nedokáže ústředna rozlišit, který z hlásičů signalizuje vznik požáru, ale pouze na které požární smyčce je tento hlásič zapojen. Jedná se o systémy s tzv. kolektivní adresací, nebo se též používá název neadresovatelné systémy. Dokonalejší systémy EPS umožňují připojení takových hlásicích linek, kde ústředna dokáže rozlišit přímo jednotlivé hlásiče na hlásicí lince. Jsou to adresovatelné hlásiče požáru. Takový systém nazýváme jako „systém s individuální adresací“. Obvykle je možné na systém s individuální adresací podle potřeby připojit i některé požární smyčky s adresací kolektivní. Konkrétní konfigurace je dána požadavky projektanta systému EPS na jeho funkci a na možnost identifikace místa požáru s požadovanou přesností. Většina dříve i nyní vyráběných systémů EPS pracuje s dvoustavovými hlásiči – mají pouze dva stavy výstupního signálu – „normální situace“ a „požár“. Zda došlo ve střeženém prostoru k požáru tedy prakticky rozhoduje hlásič, a jeho údaj je potom přenesen do ústředny. Ta může pro zvýšení spolehlivosti signalizace (odolnost proti planým poplachům) tento signál porovnat se signálem od dalších hlásičů ve střeženém prostoru anebo čekat nastavený časový interval (sekundy, desítky sekund) na opakování signalizace z hlásiče po zrušení předchozí signalizace a teprve potom signalizovat obsluze požár. 28 FEI Vysoká škola báňská – Technická univerzita Ostrava Systém EPS C Ústředna EPS E F J K G H L hlásič tlačítkový hlásič požáru automatický C požární poplachové zařízení E zařízení pro přenos požárního poplachu F ohlašovna požáru G řídicí jednotka samočinného zařízení požární ochrany H samočinné zařízení požární ochrany J zařízení pro přenos hlášení poruchových stavů K přijímací stanice hlášení poruchových stavů L napájecí zařízení Obr. 2.11.1 Blokové schema systému detekce požáru – EPS V současné době jsou už běžné i hlásiče, které do ústředny EPS posílají spojitou informaci o veličině, kterou se požár projevuje a kterou detektor měří. Čili ne pouze „normální situace“ a „požár“. Například hlásič měřící koncentraci CO vysílá ústředně spojité číslo(informaci) v rozmezí 0 – 1023 (0…koncentrace CO je rovna běžné koncentraci v ovzduší, 1023…koncentrace CO je ekvivalentní koncentraci při intenzivním hoření daného materiálu). V tom případě nerozhoduje o vzniku požáru hlásič, ten pouze vysílá naměřenou hodnotu příslušného parametru, ale ústředna EPS. V ní se totiž takto získané hodnoty zpracovávají zabudovaným mikropočítačem (je jádrem ústředny), a podle výsledku zpracování je potom obsluze signalizován příslušný provozní stav. Tyto hlásiče budou v dalším textu označovány jako senzory požáru. Použití senzorů požáru vždy vyžaduje jejich individuální adresaci – ústředna musí mít informaci, od kterého senzoru patřičná naměřená hodnota přichází. 2.11.1 Systémy EPS s kolektivní adresací Jsou to systémy, u kterých lze použít pouze požárních smyček s kolektivní adresací. Ústředna je schopna pouze rozlišit, ze které požární smyčky signál POŽÁR přišl, ale už nezjistí, od kterého hlásiče. V těchto systémech není také technicky možné používat hlásiče (senzory) s přenosem naměřených hodnot do ústředny EPS. Pro kontrolu provozuschopnosti požární smyčky se obvykle používá jedné z násl. metod : - kontrola klidového proudu požární smyčky - sledování impulsů aktivního zakončovacího členu. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 29 U první metody je za poslední hlásič na každé požární smyčce zapojen zakončovací rezistor. Jeho Ohmická hodnota je volena tak, aby součet proudu zakončovacím rezistorem plus součet klidových proudů všech hlásičů na požární smyčce byl v předepsané toleranci klidového proudu požární smyčky příslušné ústředny. Pokud dojde k přerušení smyčky (postačuje i odpojení zakončovacího rezistoru), tak dojde ke snížení proudu protékajícího požární smyčkou, což ústředna signalizuje jako poruchu – přerušení požární smyčky. Jestli dojde na smyčce ke zkratu, dojde ke zvýšení protékajícího proudu nad nastavenou mez. Toto ústředna signalizuje rovněž jako poruchu – zkrat požární smyčky. V případě dokonalého zkratu na smyčce je zkratový proud omezen na přípustnou hodnotu vnitřní impedancí zdroje pro napájení požární smyčky. V případě, že zemní svod požární smyčky je na závadu, je ústřednou kontrolován a signalizován i jeho výskyt. Druhá metoda je řešena jinak – v požární smyčce je za posledním hlásičem zapojen aktivní zakončovací člen. Ten vysílá do požární smyčky v pravidelných intervalech proudové impulsy, jejichž výskyt (velikost a periodu) ústředna kontroluje. Pokud dojde k přerušení požární smyčky, tak dojde k vymizení těchto impulsů a ústředna EPS signalizuje poruchu. Zkrat na požární smyčce je obvykle vyhodnocován stejně jako u předchozí metody. Při použití aktivního zakončovacího členu protéká požární smyčkou menší proud než u smyčky zakončené odporem. V případě velkého počtu požárních smyček je menší příkon výhodný především z hlediska dimenzování náhradního zdroje (menší potřebná kapacita akumulátoru). Pro přenos signálu POŽÁR z hlásiče do ústředny se obvykle používá jedna z následujících metod : - vyhodnocení proudových změn v požární smyčce - vyhodnocení napěťových změn v požární smyčce První metoda je založena na zvýšení proudového odběru hlásiče signalizujícího požár z klidové hodnoty I0 na hodnotu Ip . Hodnota Ip musí být podstatně větší než I0 a současně musí být pod proudovou úrovní, při které ústředna vyhodnotí a signalizuje zkrat na požární smyčce. Nevýhodou tohoto systému je riziko mylné signalizace zkratu v případě, kdy v jednom okamžiku začne signalizovat POŽÁR několik hlásičů na jedné smyčce. Pokud signalizace přijde od hlásičů postupně, tak k chybě nedojde, protože po vyhodnocení signalizace POŽÁR od prvního hlásiče se ústředna „zablokuje“ do signalizace POŽÁR u příslušné požární smyčky a již nemůže u této smyčky přejít do méně prioritní signalizace PORUCHA (až do zásahu obsluhy). Při této metodě se používá hlásičů požáru s proudovou charakteristikou. Ty se používaly např. u EPS typu MHU 106, které alternativně v některé variantě je schopná pracovat i s hlásiči s proudovou i napěťovou charakteristikou. EPS ústředna LITES Liberec MHU 108 již spolupracuje s hlásiči s napěťovou charakteristikou, lze však připojit i hlásiče s proudovou charakteristikou např. MHG 281, MHG 381, MHG 581. Naprostá většina výrobců EPS používá pro přenos signálu POŽÁR z hlásiče do ústředny metody vyhodnocení napěťových změn v požární smyčce. U této metody neexistuje riziko nesprávného vyhodnocení v případě současné signalizace několika hlásičů. Princip metody je založen na tom, že v případě zaregistrování požáru zvyšuje hlásič protékající proud tak dlouho, až napětí na požární smyčce poklesne (v důsledku vnitřní impedance napájecího zdroje) na nastavenou hodnotu (pro hlásiče s napěťovou charakteristikou). Ústředna tento pokles napětí požární smyčky na předem definovanou úroveň vyhodnotí jako signalizaci POŽÁR. V případě současné signalizace více hlásičů na jedné smyčce se napěťové poměry na požární smyčce nezmění, protože se všechny hlásiče snaží snížit napětí na požární smyčce na stejnou hodnotu. U většiny systémů EPS provozovaných v ČR se používá pro kontrolu provozuschopnosti požárních smyček a přenos signálu POŽÁR do ústředny některé z následujících kombinací možných metod : 30 FEI Vysoká škola báňská – Technická univerzita Ostrava - zakončovací rezistor + proudová charakteristika - zakončovací rezistor + napěťová charakteristika - aktivní zakončovací člen + napěťová charakteristika. 2.11.2 Systémy EPS s adresací Jedná se o systémy, kdy každý hlásič má svou jedinečnou adresu, kterou se na něj ústředna EPS obrací, když z něj čte informaci o stavu daného místa. Z hlediska přesné lokalizace signálu POŽÁR je to samozřejmě kvalitativně mnohem lepší řešení než EPS s kolektivní adresací, kde je informace pouze o tom, že kterýsi hlásič z hlásicí linky signál POŽÁR vydal, ale neví se který. Individuálně adresovatelné systémy se podle principu dělí na dvě základní skupiny : - systémy se sériovou adresací - systémy s paralelní adresací. Principielní schema systému se sériovou adresací je na obr. 2.11.2.1. Hlásič 1 Hlásič 2 Hlásič n S1 S2 Sn Ústředna Obr. 2.11.2.1 Zapojení systému se sériovou komunikací Stav hlásičů je přenášen do ústředny po hlásicí lince v periodických časových cyklech. Na počátku cyklu ústředna navodí stav START – na 50ms stáhne napětí hlásicí linky na 0Volt. Na to reagují všechny hlásiče tím, že se uvedou do výchozího stavu – rozepnou každý svůj elektronický spinač S. Od tohoto okamžiku je přerušeno napájení hlásičů z ústředny, a ty jsou napájeni ze svých interních kondenzátorů. Informace hlásiče o požárním stavu jeho místa je zakódovaná v časovém odstupu jeho proudového impulsu vůči proudovému impulsu hlásiče předchozího. Hlásič např. jako příznak hoření měří koncentraci CO. Při normální koncentraci CO v ovzduší je odstup jeho proudového impulsu 1ms. Při koncentraci CO odpovídající intenzivnímu požáru je odstup 20ms. Z obrázku je patrná funkce. Po prodlevě 50ms ústředna připojí napájecí napětí na hlásicí linku, a okamžitě ho má hlásič 1. To, že hlásič 1 dostal z ústředny napájecí napětí, se projeví taky krátkodobě zvýšeným proudovým odběrem z ústředny – proudovým impulsem i1 . Hlásič 1 si odměří čas t1 (ve kterém je obsažena jeho koncentrace CO), a pak sepnutím svého spinače S1 pustí napájecí napětí i k hlásiči 2 , což se zase projeví krátkodobým zvýšením proudu z ústředny (impuls i2), a zase hlásič 2 si odměří svůj čas t2 , po kterém sepne svůj spinač S2 a pustí napětí i k hlásiči S3. Ústředna má ve své paměti údaj o počtu hlásičů na lince, je jich třeba 20. Jsou-li všechny hlásiče v pořádku, tak dojde ke 20 proudovým impulsům. Je-li třeba spinač S4 porouchaný a nesepne, tak hlásič 5 napájecí napětí nedostane a ani jeho proudový impuls i5 nevznikne. Zde je závada ve spinači S4 hlásiče 4. Jiná závada, která se ústředně bude jevit úplně stejně – hlásič 4 je i se svým spinačem S4 v naprostém pořádku, ale porouchaný je hlásič 5. Hlásič 5 má třeba takovou vnitřní poruchu, že i když se mu připojí napětí, tak žádný proud neodebírá, a k proudovému impulsu taky nedojde. Oba případy znamenají pro ústřednu „porucha spinače s4 nebo interní vada hlásiče 5“. V propracovanějších řešeních systémů sériové adresace je Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO U [V] 31 2s 24 A 0,5 ms START cyklu START cyklu t I [mA] 5 t1 50ms t2 t3 t4 0,5 ms Obr. 2.11.2.2 Napětí a proud na sériové hlásicí lince t schopna ústředna v době mezi dvěma proudovými impulsy vyslat do senzoru, případně jiného zařízení zapojeného na hlásicí lince(poplachové světlo, ovládací jednotka protipožárních dveří, …) řídicí povel, obvykle ve tvaru napěťového impulsu odlišného od úrovně START cyklu (impuls A na obr. 2.11.2.2). Na konci cyklu jsou všechny spinače S hlásičů sepnuty, a kondenzátory v hlásičích se dobíjejí z ústředny. Doba celého cyklu je několik sekund. Např. u systému STI ZETTLER je průměrná doba mezi proudovými impulsy hlásičů cca 4ms, což při 32 hlásičích na lince dává dotazovací část cyklu 128ms. Celková doba cyklu je delší o START impuls cyklu a o dobu potřebnou na dobití kondenzátorů v hlásičích. Z výše popsaného principu je zřejmé, že adresy senzorů (hlásičů) a jiných zařízení zapojených na sériové hlásicí lince jsou pevně dány jejich pozicí na lince, a není tedy nutné je nějakým způsobem nastavovat. Sériový způsob adresace je relativně citlivý na rušení, zvláště impulsního charakteru. Pokud se v průběhu cyklu vyskytne rušení (a pokud to ústředna 32 FEI Vysoká škola báňská – Technická univerzita Ostrava pozná), musí se opakovat celý cyklus. Vzhledem k délce cyklu nebude systém při frekvenci rušení větší než asi 1 Hz schopen se senzory komunikovat. Obrázek znázorňuje průběh napětí a proudu na hlásicí lince se sériovou komunikací u systému STI firmy ZETTLER. 2.11.3 EPS systémy s paralelní adresací Základem paralelní adresace je vzájemná digitální komunikace mezi ústřednou a senzory (hlásiči) ve formě proudových příp. napěťových změn ve vedení hlásicí linky. Ústředna komunikuje se senzorem tak, že vyšle jeho adresu a další povely (např. pro ovládání signalizace v senzoru). Všechny senzory a další adresovatelná zařízení na hlásicí lince dekódují adresy vysílané ústřednou. Senzor (zařízení), který dekóduje (rozpozná) svoji adresu, přijme povely vysílané ústřednou a potom odpoví svým stavovým údajem, který obsahuje všechny potřebné informace pro ústřednu (naměřená hodnota sledované veličiny, druh senzoru, povely z ústředny uložené v paměti senzoru, adresa senzoru, …). Tak způsobem může ústředna libovolně komunikovat s jednotlivými senzory a dalšími zařízeními na hlásicí lince. Podle potřeby mohou být na hlásicí lince i adresovatelné hlásicí prvky např. pro protipožární uzávěry apod. Veškerý digitální přenos po hlásicí lince je sériový a je zabezpečen proti chybám při přenosu bezpečnostními kódy (parita, CRC, …). Pro zvýšení spolehlivosti je u adresovatelných systémů většinou možné používat tzv. kruhových (okružních) hlásicích linek, tj. hlásicí linka vychází z ústředny a opět se do ní vrací. Do vedení hlásicí linky je navíc zařazeno několik tzv. izolátorů. V případě vzniku poruchy na vedení (např. zkrat) dojde k rozpojení příslušných izolátorů tak, aby porouchaná část linky byla odpojena. Tím dojde k rozdělení kruhové hlásicí linky na dvě dílčí linky, které jsou provozovány samostatně až do odstranění poruchy. Ústředna Hlásič 1 Hlásič 2 Hlásič n Obr. 2.11.3.1 Systém EPS s paralelní adresací U systému sériové i paralelní adresace je obvykle možné použít tzv. podružných hlásicích linek (požárních smyček) s neadresovatelnými hlásiči napojených na adresovatelnou hlásicí linku prostřednictvím adresovací jednotky. Celá podružná linka potom v adresovatelném systému vystupuje pod jedinou adresou. Systémy se sér. a paralelní adresací se navzájem liší i možnou topologií (rozmístěním, uspořádáním) senzorů, hlásičů, adresovacích a ovládacích jednotek na hlásicích linkách. 2.11.4 Snímače požáru - Požár (nežádoucí hoření) má více projevů [6] : teplo uvolňované exotermní oxidační reakcí aerosol tvořený tuhými(saze) a kapalnými složkami ve zplodinách hoření plynné produkty spalování světelné (elektromagnetické) vyzařování plamene volné náboje (radikály) vzniklé působením vysoké teploty při hoření Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 33 Detektory vyzařování plamene Jsou bodového provedení. Nejčastěji jsou konstruovány pro detekci vyzařování v IR spektru. Pro spolehlivé odlišné vyzařování plamene od vyzařování ostatních zdrojů, slunečního záření apod. je využíváno buď detekce IR záření na dvou vlnových délkách, kdy na jedné se vyskytuje u vyzařování plamene lokální minimum a na druhé lokální maximum a přitom se na stejných vlnových délkách u slunečního světla po průchodu atmosférou vyskytuje lokální maximum a minimum, tedy opačné lokální extrémy. Pro odlišení rúzných zdrojů vyzařování je potom možné vycházet z porovnáná relativních intenzit vyzařování na stanovených vlnových délkách. Pro zvýšení odolnosti proti planým poplachům může být doplněna podmínka modulace záření plamene v předpokládaném frekvenčním rozsahu (např. 5Hz – 20Hz). Je možné použít i většího počtu vlnových délek. Takto konstruovaný detektor vyzařování plamene dosahuje velmi dobré odolnosti vůči jiným podnětům, než je vyzařování plamene. Pro méně náročné aplikace je možné použít detektoru s IR detektorem záření s širším pásmem citlivosti (s maximem citlivosti ležícím řádově v µm). Kritériem pro odlišení vyzařování plamene od jiných zdrojů vyzařování je modulační frekvence plamene ve stanoveném rozsahu (např. 5Hz – 15Hz). U takto konstruovaných detektorů je však nutné počítat se signalizací při výskytu modulovaného IR záření z jakéhokoliv zdroje. Pro speciální účely je možné použít i detekce záření v UV oblasti vyvolané radikálem OH- . Teplotní detektory Teplotní detektory využívají pro detekci požáru teplotních změn vyvolaných uvolňovaným teplem při exotermní oxidační reakci hoření. Teplotní detektory mohou být bodového, lineárního a liniového typu (ČSN EN 54-1 používá termín lineární hlásič). Bodové teplotní detektory jsou obvykle založeny na měření teploty v určitém místě prostoru pomocí teplotně elektrického převodníku (např. termistoru). Vyhodnocení takto získaného signálu se provádí buď z hlediska překročení stanovené maximální přípustné teploty prostoru – teploty reakce (statický hlásič), nebo z hlediska překročení maximální přípustné strmosti nárůstu teploty (diferenciální hlásič). Teplotní hlásiče diferenciální mohou být založeny i na využití objemových a tlakových změn plynu při měnící se teplotě. Lineární teplotní požární detektory jsou založeny na vyhodnocování modulační frekvence IR paprsku, který prochází z vysilače přes střežený prostor do přijímače. Procházíli paprsek rozhraním dvou oblastí, které mají indexy lomu rozdílné, tak na rozhraní dojde k odrazu a lomu paprsku. Pokud se v dráze paprsku vyskytne prostředí s turbulentním prouděním vzduchu s výrazně rozdílnými teplotami, tak toto prostředí má výrazně rozdílný indexem lomu, a dojde k lomu a odrazu. Vzhledem k dynamickému chování prostředí je i odraz a lom paprsku výrazně časově proměnný. Výsledkem potom je modulovaná intenzita paprsku dopadajícího na fotocitlivý prvek přijínače, který leží v optické ose vysilače paprsku. Liniové teplotní požární detektory (ČSN EN 54-1 používá i v tomto případě termín lineární hlásič) reagují na zvýšení teploty podél teplocitlivého kabelu metalického event. optického. Vycházejí z jednoho ze čtyř základních principů. Digitální liniové teplotní detektory jsou založeny na vzniku zkratu dvou, obvykle ocelových, předpružených vodičů vzájemně izolovaných termoplastickou izolací. Při překročení stanovené teploty dojde ke ztrátě pevnosti izolace,jejímu proříznutí předpruženými vodiči a jejich následnému zkratu. Z tohoto popisu je zřejmé, že teplotní detektor není reverzibilní, a po jeho reakci je nutná jeho výměna. 34 FEI Vysoká škola báňská – Technická univerzita Ostrava Analogový liniový teplotní detektor je opět tvořen dvoužilovým vodičem. Použitá izolace žil ztrácí s rostoucí teplotou elektrické izolační vlastnosti (snižuje odpor). Zvýšení teploty detektoru se tedy projevuje určitou vodivostí mezi žílami detektoru. Tento jev je do určité teploty reverzibilní – po poklesu teploty se parametry detektoru vrací do původních hodnot. Světlovodné liniové teplotní detektory jsou založeny buď na změně optických vlastností světlovodu vyvolaných jejich mechanickým namáháním (straší varianta hlásičů), nebo na využití Ramanova rozptylu (nová varianta hlásičů). Mechanického namáhání světlovodu při změně teploty je možné dosáhnout jeho mechanickým propojením s paralelně umístěným válečkem z materiálu s velkou teplotní roztažností. Zdroj světla (nejčastěji laserová dioda) do světlovodu vyšle světelný impuls. Změna optických vlastností světlovodu v mechanicky namáhaném místě je vyhodnotitelná na základě zpětného odrazu části světla v tomto místě. Příkladem takto konstruovaného liniového hlásiče je např. FibroLaser I. Modernější variantou je konstrukce světlovodných liniových hlásičů teploty založených na využití Ramanova rozptylu [1][2][3]. Zde není žádný váleček s velkou teplotní roztažností a deformace vlákna. Ramanovův rozptyl vzniká při interakci fotonů dopadajícího světla s vibračními stavy atomů nebo molekul. Rozptýlené záření má potom jinou vlnovou délku než původní dopadající světlo. V grafickém znázornění lze rozeznat dvě pásma vlnových délek rozptýleného záření : Stokesovo pásmo (má vlnové délky větší než dopadající záření) a intenzita Rayleighův rozptyl Brillouinův rozptyl Ramanův rozptyl anti-Stokesovo pásmo teplotně závislé posuv vlnové délky Ramanův rozptyl Stokesovo pásmo teplotně nezávislé laseru vlnová délka Obr. 2.11.4.1 Ramanův rozptyl u liniového hlásiče teploty používajícího optické vlákno anti-Stokesovo pásmo (má vlnové délky krattší než dopadající záření). Intenzita záření v antiStokesově pásmu je závislá na teplotě; s rostoucí teplotou se zvyšuje a naopak. Z doby, za kterou se rozptýlené záření vrátí zpět do vyhodnocovací jednotky, se vypočítá vzdálenost k místu rozptylu (tj. k místu zvýšené teploty). Z intenzity píku záření v anti – Stokesově pásmu se vypočítá teplota daného místa. Takto konstruovaný liniový detektor teplot je např. FibroLaser II. Reakce liniového detektoru je reverzibilní až do teploty, při které dochází k destrukci použitých materiálů. Světlovodné optické vlákno býva z vysoce čistého plastu. Parametry liniových detektorů využívajících Ramanův rozptyl jsou vynikající – rozlišovací schopnost až 0,01°C, délková rozlišitelnost 1m. Relativně vyšší útlum v používaném Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 35 mnohovidovém vlákně omezuje celkovou délku optického vlákna na 8 – 10 km. Velká citlivost klade následně nároky na propracované algoritmy v počítači, který naměřené hodnoty vyhodnocuje, aby správně rozpoznal znatelný nárůst teploty jako projev začínajícího požáru, a naopak nevyhodnotil údaje nesprávně a nevyvolal planý poplach. Liniové detektory využívajících Ramanův rozptyl by měly dávat podnět projektantům navrhovat budovy s vhodně umístěným optickým vláknem pro protipožární signalizaci. Nevýhodou je relativně značná cena takového řešení, aparatura má momentálně (r. 2014) cenu přibl. 1,5 miliónu Kč. Existují i liniové optovláknové detektory využívající Brillouinova rozptylu. Porovnejme alespoň některé parametry Brillouinovy aparatury (vůči Ramanově) : Brillouin - klady : délka vlákna až 100km Brillouin - zápory : horší délková rozlišitelnost 2m, dražší aparatura, zhr. 2,5 milionu Kč, citlivost i na mechanické ohyby vlákna. Pneumatické liniové teplotní detektory Tyto detektory jsou tvořeny tenkou trubičkou naplněnou plynem. Rozhodujícím činitelem pro vyhodnocení teplotních změn jsou objemové resp. tlakové změny plynu v trubičce detektoru vyvolané jeho objemovou roztažností. Mezi liniové teplotní hlásiče lze zařadit i tzv. mnohobodové hlásiče teploty, kdy ve vedení jsou integrovány jednotlivé diskrétní senzory teploty, jejichž odstup je do 10m. Kouřové detektory Kouřové detektory se používají pro detekci viditelného i neviditelného aerosolu (kouře) vznikajícího při hoření. Přítomnost kouře v místě detektoru je zjišťována buď na základě optických metod, nebo změn vodivosti ionizační komory. Optické metody jsou použitelné pro detektory bodové a lineární, změny vodivosti ionizační komory pro detektory bodové. Detekce kouře pomocí ionizační komory je založena na vyhodnocení poklesu její vodivosti při vniknutí kouře do prostoru mezi elektrodami. Průtok proudu prostředím mezi elektrodami ionizační komory je umožněn přítomností volných nábojů vzniklých ionizací vzduchu v komoře zářením α. Z hygienických i technických důvodů je použití α záření pro tento účel nejvhodnější. Pro praktické použití připadá v úvahu zejména použití sloučenin 241 Am a 226Ra. Použití 226Ra je však méně vhodné vzhledem k jeho vysoké radiotoxicitě. Z toho důvodu je jako zdroj ionizujícího záření vhodnější sloučenina 241Am ve formě uzavřeného radioaktivního zářiče s aktivitou obvykle v rozmezí 12 – 40 kB. Při vniknutí aerosolu do ionizační komory se ionty umožňující průchod proudu vážou na částice aerosolu, jež mají vzhledem k své velikosti a hmotnosti výrazně nižší pohyblivost. Přítpmnost volných nábojůumožňuje i ustanovení rovnováhy středního kvadratického náboje , čímž se jejich počet v důsledku probíhajících rekombinací snižuje. Důsledkem snížení počtu a pohyblivosti volných nábojů je pokles vodivosti ionizační komory. Velikost tohoto poklesu je závislá na vlastnostech aerosolu a jeho koncentraci. V praxi se často používá dvoukomorových ionizačních hlásičů.Jejich základní princip je uveden na. obr. 2.11.4.2. Obě komory (měrná i referenční) jsou zapojeny do série, takže přes obě protéká stejný proud. Spojnicí P-S proud neprotéká, protože impedanční převodník S je vybaven elektrometrickým vstupem (je řízen přivedeným napětím). Charakteristika měrné komory je znázorněna křivkou A, charakteristika referenční komory křivkou C. Referenční komora je v tomto případě navržena tak, že pracuje v oblasti nasyceného proudu. Za normálních podmínek se ustaví rovnováha napětí na měrné a referenční komoře v bodě A/C. Pokud dojde ke vniknutí kouře do měrné komory, změní se její charakteristika např. na B. Ustaví se nová rovnováha B/C , napětí na měrné komoře se přitom změní o hodnotu ∆UM . Pokud je tato změna větší než limitní hodnota ∆UMA , bude 36 FEI Vysoká škola báňská – Technická univerzita Ostrava hlásič signalizovat požár (maximální část). Pokud by hlásič byl vybaven i diferenciální částí, byla by kontrolována i rychlost změny napětí ∆UM . Hodnota ∆UMA udává citlivost hlásiče. Čím je tato hodnota nižší, tím je hlásič citlivější. Tuto hodnotu je možné elektricky měřit, mluvíme potom o tzv. elektrické citlivosti hlásiče (u hlásičů LITES se označuje ∆U). Na citlivost ionizačních hlásičů mají vliv (i při použití referenční komory) vnější podmínky jako teplota, tlak, vlhkost vzduchu, proudění vzduchu, napájecí napětí. Všechny tyto parametry mají pro konkrétní zářič stanoveny své limitní hodnoty, které nesmí být při provozu ani krátkodobě překročeny. Použití této metody je vhodné pro aerosoly s velikostí částic cca 0,08 – 0,3µm. KM IK P IK UM KR UR IA S UB A IK B A/C IK B/C KM měrná komora KR referenční komora S P IK impedanční převodník a další elektronika hlásiče společný bod obou komor proud ionizačních komor IA proud hlásiče požáru UB napájecí napětí UM napětí na měrné komoře A charakteristika měrné komory bez kouře charakteristika měrné komory s kouřem charakteristika referenční komory změna napětí na měrné komoře B C C UM UMA minimální změna napětí na měrné komoře nutná pro signalizaci “POŽÁR” 0UM 0 UR UMA UM A/C pracovní bod bez kouře B/C pracovní bod s kouřem U’R UR UM UB Obr. 2.11.4.2 Principielní zapojení a charakteristiky ionizačního hlásiče požáru Optické metody pro detekci aerosolů jsou založeny na absorbci či rozptylu optického, obvykle infračerveného, záření na částicích aerosolu. Detekční metoda založená na absorbci IR záření je dobře použitelná zejména zejména u lineárních kouřových detektorů skládajících se z odděleného vysílače IR paprsku a přijímače obsahujícího detektor IR záření. Pokud se v dráze IR paprsku objeví částice aerosolu, dojde na jejich povrchu k absorbci části Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 37 IR záření, což se projeví snížením intenzity ozáření detektoru. Tato metoda je vzhledem k vlnovým délkám použitého IR záření dobře použitelná pro detekci částic cca 0,1 – 10 µm. Detekční metoda založená na rozptylu IR záření je vhodná zvláště pro bodovou detekci. V měrné komoře detektoru je umístěn zdroj IR záření a jeho detektor (fotoelektrický prvek) tak, že za normálních podmínek (tj. bez přítomnosti aerosolu) IR záření na detektor nedopadalo. Pokud do komory vnikne aerosol, dojde na jeho částečkách k rozptylu IR záření a jeho část dopadne i na fotoelektrický prvek detekující IR záření. Reakce optického detektoru kouře je dána intenzitou ozáření fotoelektrického prvku. Za předpokladu zachování konstantních parametrů zdroje IR záření závisí intenzita ozáření fotoelektrického prvku na parametrech aerosolu, zejména na velikosti a počtu jeho částic. Vzhledem k fyzikálnímu principu je tato metoda vhodná pro aerosoly s velikostí částic přibližně 4 – 10 µm. Plynové detektory Plynové detektory používané pro detekci typických plynných produktů spalování, nejčastěji CO jsou zejména v bodovém provedení. Jako vlasrní čidla v detektorech jsou používána především čidla polovodičová, elektrochemická, a čidla založená na katalytickém spalování. Pro speciální aplikace je možné použít i optických metod plynové detekce. Ty mohou být použity i pro konstrukci lineárního plynového detektoru. Plynové detektory jsou obvykle bodové, případně je možné použít systémů ve vzorkovaném ovzduší ve chráněném prostoru. Elektrostatické detektory Elektrostatické detektory detekují náboj přenášený částicemi kouře z prostoru hoření k vlastnímu detektoru. Pro detekci není vhodné používat celkový vzniklý náboj, ale jen náboj jedné polarity. Takto konstruovaný detektor je na obr. 2.11.4.3. Skládá se ze tří elektrod (střední je elektrodou detekční), elektrometrického zesilovače a zdroje. Pro dobrou funkci detektoru jsou vhodné elektrody tvořené kovovou síťkou, typické rozměry síťky bývají 100 x 100mm. R2 R1 + - + detekční elektroda Obr. 2.11.4.3 Principielní schema elektrostatického detektoru U OUT 38 FEI Vysoká škola báňská – Technická univerzita Ostrava Výstupní signál elektrostatického detektoru UOUT je úměrný náboji jedné polarity částic kouře. Polarita detekovaného náboje závisí na polaritě zdroje, který napájí krajní elektrody detektoru. Vzhledem k použitému principu detekce bývají u tohoto typu detektoru funkční problémy při výskytu silného vnějšího elektrického pole, v blízkosti ionizátorů vzduchu, vysokonapěťových zařízení apod. 3 Šifrování informací Šifrování [4][5] existuje několik staletí. Např. K.H.Mácha si kolem roku 1830 psal svůj deník šifrovaně, princip byl však natolik jednoduchý, že byl rozluštěn ve 20. století, a to během několika dnů jediným člověkem, bez použití počítačových metod dešifrování. Existuje ohromné množství šifrovacích metod, zde se blíže budeme věnovat metodě LVF. 3.1 Šifrovací metoda LVF – kódování Metoda LVF je účinný nástroj jak zašifrovat a zpětně dešifrovat data. Nejprve objasníme několik pojmů a datových útvarů, které s metodou souvisí. Pole “val” je typicky pole bajtů v paměti RAM, které mají být zašifrovány. “Rámeček“ zahrnuje 3 bajty v poli “val”, se kterými se právě provádí úkony při šifrování (event. dešifrování). Při šifrování se rámeček pohybuje v poli val ve směru růstu indexů(v obrázcích shora dolů), při dešifrování směrem opačným. Rámeček označující tři právě zpracovávané hodnoty v poli “val” val Hodnota obsažená v proměnné “m”, pomocí které se dosáhne operandu “k” pro operaci XOR Hodnota val[op] která bude změněna v 2. Kroku m - tou šifrovací funkcí fm op : dp : Směr posuvu rámečku při šifování Směr růstu indexů Hodnota val[dp] , při šifrování je to hodnota nově dosažená rámečkem. Při šifrování bude změněna v 1. kroku operací XOR takto : val[dp] = val[dp] XOR i XOR k Obr. 3.1.1 Princip při šifrování metodou LVF Při šifrování se rámeček pohybuje shora dolů, a za sebou zanechává zašifrovaná data v definitivním tvaru. Při dešifrování se rámeček pohybuje zdola nahoru, a za sebou zanechává rozšifrovaná data.“KeyT“ je pole, které obsahuje klíče – libovolně zvolené pevné hodnoty, které se účastní procesu šifrování/dešifrování.Velikost pole KeyT bývá typicky několik tisíc hodnot klíčů, v našem příkladu jsme se omezili jen na počet 3. Pro větší odolnost proti Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 39 pokusům o nepřátelské dešifrování je vhodné zvolit velikost tohoto pole takovou, aby to nebyla mocnina dvou, vhodné velikosti jsou např. 101, 266, 8512. Pro práci s polem KeyT je v našem příkladu použit index „kp“. KeyT obsahuje 3 prvky, příklad je naprogramován v jazyku C, v něm se indexuje od 0, při zašifrování pole Val velikého např. 2000 bajtů se index „kp“ postupně mění „modulo 3“ čili 0 1 2 0 1 2 ..… . Pro hodnoty v poli „KeyT“ je použito jméno TV loutky mimozemšťana Alfa „Alf“ , v ASCII kódu ‘A’=41hex ‘l’=6Chex ‘f’=66hex . „CodeT“ (Code Table) je pole, které obsahuje další hodnoty používané při šifrování/dešifrování - kódy kódovací tabulky. Jsou to opět libovolně zvolené(nahodilé) pevné hodnoty. CodeT obsahuje v dále uvedeném příkladu 256bajtů, a jen z důvodu jednoduchosti výkladu je hodnota bajtu rovna indexu daného bajtu, čili CodeT[0] = 00, CodeT[1] = 01, CodeT[2] = 02, ….. , CodeT[255] = 255 (tj. FF hexadecimálně). Při skutečném nasazení šifrovací metody LVF je samozřejmě žádoucí, aby bajty pole CodeT měly zcela nahodilé hodnoty. fm(i) je m-tá šifrovací funkce, její argument je „i“. Kolik a jakých šifrovacích funkcí je při metodě LVF použito, to závisí od zadání event. na programátorovi. Výběr funkce (skok na místo, kde je m-tá šifr. funkce volána) lze v C dělat jednoduše rozskokem – příkazem switch(m). Příkladem šifrovací funkce je např. prohození hodnot některých dvou bitů v bajtu. Např. f9(240) ….. m je 9, je to 9.šifrovací funkce, je volána s argumentem i=240 tj. 11110000 binárně. Tato funkce f9 např. dělá pouze a právě to, že v argumentu „i“ zamění hodnoty bitů b[kp] a b[dp] a takto modifikovanou hodnotu vrátí zpět volajícímu programu. V tomto případě dojde tedy k modifikaci na hodnotu 11010001 binárně tj. 209 dekadicky. Pokud má argument „i“ bity b[kp] a b[dp] stejné, tak se jeho hodnota touto šifrovací funkcí nezmění. gm(a) je m-tá dešifrovací funkce, její argument je „a“. Je to inverzní funkce k patřičné šifrovací funkci fm(i) . Její úkol – dešifrovat to co fm(i) zašifrovala. Pokud v příkladu šifrovací fce f3 zaměňuje bity b5 a b0, tak dešifrovací fce g3(a) musí dělat totéž – znovu zamění b5 s b0, a tím z 11010001 získá původní hodnotu 11110000 tj. 240 dekadicky. Pořadové číslo funkce(šifrovací či dešifrovací) značíme „m“. V našem příkladu „m“ nabývá 16-ti hodnot (0-15), efektivně je zapotřebí 4 bitů. Hodnota „m“ je odvozena z hodnoty val[dp]. V našem(nejjednodušším) příkladu se z val[dp] vezmou bity b3-b0 (m bude rovno 0 0 0 0 b3 b2 b1 b0). Šlo by vymyslet mnoho dalších způsobů jak z val[dp] vytvořit 4-bitovou hodnotu – př. z val[dp] se vezmou jen liché bity(m bude rovno 0 0 0 0 b7 b5 b3 b1), nebo se z val[dp] vezmou třeba bity b6 b3 b1 b0 (m bude rovno 0 0 0 0 b6 b3 b1 b0). Postup kódování (šifrování) popíšeme na následujících obrázcích. Proces těsně souvisí s pohybem rámečku ve směru nárůstu indexů v poli „val“. Rámeček se posune vždy o 1 pozici vpřed. Bajty, které spadají do rámečku, jsou šifrovány. Bajty, které jsou za rámečkem, mají konečné(definitivně zašifrované) hodnoty. Hodnoty bajtů budeme v celé této kapitole vyjadřovat v hexadecimální soustavě(pro bajt je nutno použít dvě hexacifry). Pro názornost je vhodné v obrázcích nějak vyjádřit, jak se hodnota v průběhu šifrování mění. To je v kolonce daného bajtu vyjádřeno polohou hodnoty – na levém okraji kolonky je prapůvodní(nezašifrovaná) hodnota, na pravém okraji kolonky je konečně zašifrovaná hodnota. Šifrování budeme demonstrovat na textové zprávě o osmi ASCII znacích „abfdefgh“. V hexa soustavě mají tyto znaky hodnoty 61 62 63 64 65 66 67 68. Výchozí stav je, že pole val[] obsahuje původní tj. nazašifrované hodnoty viz obr. 3.1.2. Do políček 40 FEI Vysoká škola báňská – Technická univerzita Ostrava znázorňujících pole val[] budou vedle sebe znázorňovány hodnoty jednotlivých znaků, jakých v průběhu kódování nabývají. 61 62 63 64 65 66 67 68 val Obr. 3.1.2 Počáteční nezašifrovaná data „val“ (values, hodnoty) Celkově je na zašifrování osmi hodnot třeba osmi průchodů cyklem. Typicky se v každém průchodu provedou dva kroky : 1. krok(znázorněn červenými plnými křivkami) - hodnota val[dp] se modifikuje pomocí operace XOR(operátor operace XOR v jazyku C je ^ (tzv. stříška)); V tomto kroku je k dosažení operandu „k“ použita proměnná „m“. 2. krok(znázorněn zelenými tečkovanými křivkami) - hodnota val[op] se modifikuje pomocí některé šifrovací funkce fm(i). Je zde použita mj. proměnná „m“, jaké hodnoty nabyla z 1. kroku je lhostejné, protože zde nabyde nového významu a hodnoty - indexu šifrovací funkce. Situace v 1.a 2. průchodu je zvláštní v tom, že část rámečku je ještě mimo pole „val“, podobně jako u startu některé metody numerického řešení diferenciálních rovnic(Eulerova metoda, Runge-Kuttova metoda, metoda Predictor-Corrector aj.). Proto se v 1.a 2. průchodu činnosti dělají trochu jinak, než když je celý rámeček umístěn na kterési trojici bajtů v poli „val“. Jména proměnných, polí atd. (val[], KeyT[], CodeT[], …) jsou v násl. obrázcích taková, jaká jsou vnitřně používána ve funkcích EncryptLVF() a DecryptLVF() v dále uvedeném výpise programu. Je to proto, že všechny podstatné činnosti probíhají uvnitř těchto funkcí. Jsou to jména lokálních proměnných ve zmíněných funkcích. V hlavním programu main() některé datové objekty mají jiné názvy (např. pole hodnot určených k zašifrování má název values), což je zcela v souladu s pravidly jazyka C. Všechny hodnoty v obrázcích jsou uvedeny v hexadecimální soustavě. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 41 Situace Kódování 1. průchod je na obr. 3.1.3. 1.krok - prvek val[dp]) se modifikuje operací XOR takto: val[dp] = val[dp] XOR i XOR k. Výsledek je v daném případě 20. 2.krok se týká prvku val[op]. Tento krok se neprovede, protože prvek rámečku s indexem „op“ je zatím mimo pole „val“. Z toho plyne, že při dešifrování se v posledním průchodu (v něm půjde o rozšifrování prvku val[0]) provede jen činnost odpovídající zde popsanému 1. kroku. Činnost odpovídající 2. kroku ne. Úvodní hodnoty kp = 0 m = CT0 dp = 0 op = FF KeyT kp: 41 j 6C 66 CodeT 0: 00 1: 01 j: m m: i val dp 61 41 00 valdp^ i ^ k op: val dp: 61 20 62 63 64 65 66 67 68 k FF: FF 1. krok Obr. 3.1.3 Kódování LVF - 1. pruchod 42 FEI Vysoká škola báňská – Technická univerzita Ostrava Situace Kódování 2. průchod je na obr. 3.1.4 Rámeček je pořád částečně mimo „val“. V tomto 2.průchodu(a ve všech následujících s výjimkou posledního) se provedou oba kroky : 1. krok val[dp] = val[dp] XOR i XOR k. Výsledek je v daném případě 0F. 2. krok prvek val[op] se modifikuje pomocí m-té šifrovací funkce fm(i). Popišme zde tento 2.krok - modifikaci pomocí m-té šifrovací funkce detailně. Momentální hodnoty jsou (vše hexadecimálně) op = 00 val[op] = 20 dp = 01 val[dp] = 0F i=val[op]; //zkopirovani val[op] do i, argument sifrovaci fce, 20hex m=val[dp]; //zkopirovani val[dp] do m, cislo sifrovaci fce, 0Fhex tj. 15dekadicky Pak se příkazem switch(m) skočí na náv. case 15 : kde se m-tá (15.) šifr. funkce volá : case 15: i=SwapBit(i,j>>3,m>>5); //kde moment. i = 20 j = 6C m = 0F je zřejmé, že 15. šifrovací funkce je SwapBit() , a že má 3 argumenty : 1.argument – hodnota, ve které se mají zaměnit kterési dva bity. Hodnota tohoto argumentu se získá okopírováním z proměnné „i“ ta je 20 tj. 00100000binárně. 2.argument – index prvního bitu určeného k záměně. Indexy bitů v bajtu jsou 7 až 0. Ve volání fce SwapBit(i,j>>3,m>>5) je na místě tohoto argumentu uvedeno j>>3. Proměnná „j“ má hodnotu 6C, hodnota výrazu j>>3 vyjde 0D tj. 00001101bin, vnitřně funkce SwapBit() v této hodnotě vynuluje horních 5bitů(zachová b2-b0), vyjde 05, a tím je získán index prvího bitu určeného k záměně. Index tohoto bitu vyšel 5. 3.argument – index druhého bitu určeného k záměně. Ve volání fce SwapBit(i,j>>3,m>>5) je na místě tohoto argumentu uvedeno m>>5. Proměnná „m“ má hodnotu 05, hodnota výrazu m>>5 vyjde 00 tj. 00000000bin, vnitřně funkce SwapBit() v této hodnotě vynuluje horních 5bitů(zachová b2-b0), vyjde opět 00, a tím je získán index druhého bitu určeného k záměně. Index tohoto bitu vyšel 0. V hod. 00100000 se tedy zamění b5 s b0, výsledek je 00000001bin tj. 01hex. Tuto hodnotu funkce navrací hlavnímu programu, ten si ji poznačí do proměnné „i“. Úvodní hodnoty kp = 1 m = CT1 dp = 1 op = 0 KeyT 41 j kp: 6C 66 CodeT 0: 00 1: 01 j: m m: i valdp 62 6C 01 val dp ^ i ^ k val op: 61 20 01 dp: 62 0F 63 64 65 66 67 68 k FF: FF fm(i) 1. krok 2. krok Obr. 3.1.4 Kódování LVF - 2. pruchod Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 43 Situace Kódování 3. průchod je na obr. 3.1.5. Rámeček je už celý nastaven na pole „val“. Je to „ustálená“ situace v šifrování metodou LVF . I v tomto průchodu se provedou oba kroky : 1. krok val[dp] = val[dp] XOR i XOR k. Operand „i“ se získá starým způsobem j = KeyT[kp], i = CodeT[j] . Novým způsobem(nadále platným pro “ustálenou” situaci při šifrování) se získá operand “k” m = val[op-1] a pak k = CodeT[m] . Výsledek operace XOR je v daném případě 04. 2. krok platí m=4, prvek val[op] se modifikuje pomocí 4. šifrovací funkce fm(i), výsledkem je hodnota 66 tohoto prvku. U této 4. šifrovací funkce se pozastavme. Zatím jsme byli zvyklí, že při šifrování rámeček postupuje v poli val[] vpřed, a šifrovaná(modifikaovaná) data zanechával za sebou. Čtvrtá šifrovací funkce však dělá to, že zamění vzájemně hodntoty val[op] s val[valLen-dp-1], čili hodnotu op-tou s hodnotou dp-tou od konce pole. Prvek dptý od konce je val[valLen-dp-1], všimněte si že leží před rámečkem. valLen je 8, je to velikost pole val[]. Poslední prvek v poli je val[valLen-1] (jazyk C indexuje od nuly). V daném případě se zamění hodnoty 0F a 66. Úsek záměny val[op] s val[valLen-dp-1] je tento : i=val[op]; //argument sifrovaci fce, hodnota op-tého prvku switch(m & 0x0F) { //… (predchozi pripady case 0: az case 3:) case 4: j=val[valLen-dp-1]; // hodnota dp-tá od konce pole val[valLen-dp-1]=i; i=j; break; //… (dalsi pripady case 5: az case 15:) } val[op]=i; //zapis hodn. do op-teho prvku, zaver sifrovaci fce Tato šifrovací funkce tak mění hodnoty dvou prvků pole val[], přičemž jeden se může nacházet před rámečkem. KeyT Úvodní hodnoty kp = 2 m = val0 dp = 2 op = 1 kp: DataLen-dp-1: DataLen-1: j j: m m: i valdp op: dp: 41 6C 66 CodeT 0: 00 1: 01 val 61 20 01 62 0F 66 63 04 64 65 66 0F 67 68 63 66 01 valdp^ i ^ k k FF: FF fm(i) 1. krok 2. krok Obr. 3.1.5 Kódování LVF - 3. pruchod 44 FEI Vysoká škola báňská – Technická univerzita Ostrava Situace Kódování 8. průchod je na obr. 3.1.6. Je to poslední průchod při šifrování. I v tomto průchodu se provedou oba kroky (1. – XOR, 2. - šifrovací funkce fm(i)). Bajty val[0] až val[6] prodělaly 2 změny a 3. hodnota je definitivní. U posledního bajtu val[7] je tomu jinak prodělal jen 1 změnu a 2. hodnota je jeho definitivní. Konečné hodnoty bajtů v poli val[] jsou v obrázku pro lepší přehlednost zvýrazněny, kódování je hotovo. KeyT Úvodní hodnoty kp = 1 m = val 5 dp = 7 op = 6 kp: 41 6C 66 CodeT 0: 00 1: 01 j j: m valdp m: i 68 6C A8 k valdp^ i ^ k val 61 20 01 62 0F 66 63 04 04 64 43 43 65 0D 86 66 0F A8 op: 67 A0 0A dp: 68 AC FF: 1. krok FF 2. krok fm(i) Obr. 3.1.6 Kódování LVF - 8. pruchod 3.2 Šifrovací metoda LVF – dekódování Když víme, jak probíhalo zašifrování metodou LVF, tak princip dekódování (dešifrování) je zřejmý – rámeček se bude posouvat od konce pole k začátku, a za sebou bude zanechávat rozšifrovaná data. Dešifrování osmi hodnot v poli val[] bude na 8 průchodů cyklem, rámeček nabyde osmi pozic. Při šifrování bylo v jistém průchodu pořadí kroků toto : 1. operace XOR, 2. šifrovací funkce fm(). Poslední činností bylo v 8. průchodu provedení šifrovací funkce fm(). Při dešifrování se v každém průchodu opět vykonají dva kroky, ale jako první krok bude činnost inverzní vůči 2. kroku při šifrování /tím byla šifrovací funkce fm()/ . Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 45 Proto při dešifrování bude pořadí kroků toto : 1. krok (znázorněn zelenými tečkovanými křivkami) je modifikace hodnoty val[op] dešifrovací funkcí gm(i). Je to inverzní činnost vůči 2. kroku šifrování. 2. krok (znázorněn červenými plnými křivkami) je modifikace hodnoty val[dp] operací XOR, znázorněno červeně. Je to inverzní činnost vůči 1. kroku šifrování. Situace Dekódování 1. průchod je na obr. 3.2.1. Platí op = 6, dp = 7. 1. krok - modifikace hodnoty val[op] dvanáctou dešifrovací funkcí gm(i). Stará hodnota 0A, nová hodnota je A0. 2. krok je modifikace hodnoty val[dp] operací XOR. Stará hodnota AC, nová hodnota 68. Koncové hodnoty pole val[] po 1. průchodu jsou v obr. 3.2.1 zvýrazněny. KeyT kp = 1 m = val5 dp = 7 op = 6 kp: 41 6C 66 CodeT 0: 00 1: 01 j j: m valdp i AC 6C A8 k valdp^ i ^ k op: dp: val 61 20 01 62 0F 66 63 04 04 64 43 43 65 0D 86 66 0F A8 67 A0 0A 68 AC 1. krok Ob. 3.2.1 Dekódování LVF - 1.průchod m: FF: FF 2. krok g (i) m 46 FEI Vysoká škola báňská – Technická univerzita Ostrava Situace Dekódování 6. průchod je na obr. 3.2.2, platí op=1, dp=2. Je to situace, kdy naposledy je rámeček celý v poli val[]. Při šifrování se při této poloze rámečku zaměnily hodnoty prvků val[op] s val[valLen-dp-1]. Přesně totéž teď musí udělat dešifrovací funkce. Jde o záměnu hodnot 66 a 0F. Na tomto případě lze vidět, že při dešifrování může být modifikována nejen hodnota val[] spadající do rámečku, ale i hodnota, která zůstala za rámečkem. Koncové hodnoty pole val[] po 6. průchodu jsou v obrázku zvýrazněny. Tento 6. průchod je poslední situací, kdy celý rámeček je ještě v mezích pole val[]. KeyT kp = 2 dp = 2 m = val dp op = 1 kp: 41 6C 66 j j: m i 04 valdp op: dp: CodeT 0: 00 1: 01 val 61 20 01 62 0F 66 63 04 04 64 43 43 65 0D 86 66 0F A8 67 A0 0A 68 AC 66 01 valdp^ i ^ k k m: FF: FF gm(i) 1. krok 2. krok Ob. 3.2.2 Dekódování LVF - 6.průchod Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 47 Situace Dekódování 7. průchod je na obr. 3.2.3, platí op=0, dp=1. Rámeček už je horním bajtem mimo pole val[]. Hodnota horního bajtu rámečku při „ustáleném stavu“ při dešifrování sloužila ke stanovení operandu „k“ pro operaci XOR. Horní bajt je nyní nedefinované hodnoty. Operand „k“ se proto v tomto průchodu vyjímečně získá z tabulky CodeT[] takto : m=CodeT[1]; k=CodeT[m]. Koncové hodnoty pole val[] po 7. průchodu jsou v obrázku zvýrazněny. KeyT kp = 1 m = CT1 dp = 1 op = 0 kp: 41 6C 66 CodeT 0: 00 1: 01 j j: m i val dp 0F 6C 01 valdp^ i ^ k val op: 61 20 01 dp: 62 0F 66 63 04 04 64 43 43 65 0D 86 66 0F A8 67 A0 0A 68 AC k m: FF: FF gm(i) 1. krok 2. krok Ob. 3.2.3 Dekódování LVF - 7.průchod 48 FEI Vysoká škola báňská – Technická univerzita Ostrava Situace Dekódování 8. průchod je na obr. 3.2.4, platí op je nedefinované, dp=0. Rámeček zasahuje do pole val[] už je dolním bajtem. 1. krok - modifikace hodnoty val[op] dešifrovací funkcí gm(i) - se neprovede, protože „op“ už je mimo pole val[] . Analogicky se v prvním průchodu při šifrování taky neprovedla šifrovací funkce fm(i). 2. krok se provede – operace XOR. Hodnota horního bajtu rámečku při „ustáleném stavu“ při dešifrování sloužila ke stanovení operandu „k“ pro operaci XOR. Horní bajt je nyní nedef. hodnoty. Operand „k“ se proto v tomto průchodu vyjímečně získá z tabulky CodeT[] takto : m=CodeT[0]; k=CodeT[m]. Koncové hodnoty pole val[] po 8. průchodu jsou pro lepší přehlednost v obrázku zvýrazněny. Dekódování je hotovo. kp: KeyT kp = 0 m = CT0 dp = 0 41 6C 66 CodeT 0: 00 1: 01 j j: m i valdp 20 41 00 valdp^ i ^ k val dp: 61 20 01 62 0F 66 63 04 04 64 43 43 65 0D 86 66 0F A8 67 A0 0A 68 AC k m: FF: FF 2. krok Obr. 3.2.4 Dekódování LVF - 8.průchod 3.3 Zdrojový text programu LVF v jazyce C Zde uvedený program byl úspěšně naprogramován na procesoru PIC16F877 (f.Microchip) [12]. Jelikož program neobsahuje žádné hardvérově závislé části, tak jeho přenositelnost na jiné typy procesorů od jiných výrobců by měla být stoprocentní. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO // *************** LVF - unicate encryption / decryption method ************ const unsigned char CodeT[]= { // kodovaci tabulka 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 }; // funkce rotace doleva hodnotou "value" o "positions" pozic unsigned char ROL(unsigned char value, unsigned char positions) { switch(positions & 0x07) { case 0:return value; case 1:return (value>>7)|(value<<1); case 2:return (value>>6)|(value<<2); case 3:return (value>>5)|(value<<3); case 4:return (value>>4)|(value<<4); case 5:return (value>>3)|(value<<5); case 6:return (value>>2)|(value<<6); case 7:return (value>>1)|(value<<7); } return value; } // funkce rotace doprava hodnotou "value" o "positions" pozic unsigned char ROR(unsigned char value, unsigned char positions) { switch(positions & 0x07) { case 0:return value; case 7:return (value>>7)|(value<<1); case 6:return (value>>6)|(value<<2); case 5:return (value>>5)|(value<<3); case 4:return (value>>4)|(value<<4); case 3:return (value>>3)|(value<<5); case 2:return (value>>2)|(value<<6); case 1:return (value>>1)|(value<<7); } return value; } 49 50 FEI Vysoká škola báňská – Technická univerzita Ostrava // funkce vraci delku retezce (max. 255 znaku dlouheho) unsigned char size_of_string(char *po) {unsigned char retval=0; while(*po++) ++retval; return(retval); } // funkce zameny bitu v hodnote "value" unsigned char SwapBit( unsigned char value, unsigned char B1, unsigned char B2) { unsigned char N1,N2,C1,C2; B1 &= 7; B2 &= 7; N1 = 1<<B1; N2 = 1<<B2; C1 = N1&value; C2 = N2&value; if(C1) value |= N2; else value &= ~N2; if(C2) value |= N1; else value &= ~N1; return value; } /////////////////// kodovaci (sifrovaci) funkce //////////////////////////////////// void EncryptLVF( unsigned char * KeyT, //arguments unsigned char * val, unsigned char KeyTLen, unsigned char valLen, unsigned char Pass ) { unsigned char kp=0, //KeyTPosition //local variables m=CodeT[0], //Oper dp=0, //DataPosition op=0, //OperPosition i, j, k; --op; //setting from zero onto maximal value (FF) while(Pass--) {j=KeyT[kp]; i=CodeT[j]; k=CodeT[m]; i^=k; // XOR of three operands val[dp]^=i; // if(op!=0xFF) {i=val[op]; // argument of encryption function fm m=val[dp]; // index „m“ of encryption function fm switch(m & 0x0F)//branching on to encryption function fm {case 0: i=ROL(i,m>>4); break; case 1: i^=CodeT[val[dp]]; break; Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO case 2: j=valLen-dp-1; if(op!=j) i^=val[j]; break; case 3: i^=kp; break; case 4: j=val[valLen-dp-1]; val[valLen-dp-1]=i; i=j; break; case 5: i^=dp; break; case 6: i=ROL(i,kp); break; case 7: i=ROL(i,dp); break; case 8: i=SwapBit(i,CodeT[++j],CodeT[++j]); break; case 9: i=SwapBit(i,kp,dp); break; case 10:i=ROL(i,kp+dp); break; case 11:i=ROL(i,j>>4); break; case 12:i=ROL(i,CodeT[j]); break; case 13:i=ROL(i,m>>5); break; case 14:i=SwapBit(i,j>>4,m>>4); break; case 15:i=SwapBit(i,j>>3,m>>5); break; } val[op]=i; m=i; } else //plati op == 0xFF m=CodeT[1]; if((++kp)>=KeyTLen) kp=0; if((++dp)>=valLen) dp=0; if((++op)>=valLen) op=0; } } 51 52 FEI Vysoká škola báňská – Technická univerzita Ostrava ////////////////////// dekodovaci (desifrovaci) funkce //////////////////////////////////// void DecryptLVF(unsigned char * KeyT, //arguments unsigned char * val, unsigned char KeyTLen, unsigned char valLen, unsigned char Pass) { unsigned char kp=(Pass-1)%KeyTLen,//KeyTPosition //local variables m=CodeT[0], //Oper dp=(Pass-1)%valLen, //DataPosition op=(Pass-2)%valLen, //OperPosition FuSrc=(Pass-3)%valLen, i, j, k; while(Pass--) {m=val[dp]; // index „m“ of decryption function gm j=k=KeyT[kp]; if(Pass) { i=val[op]; // argument of decryption function gm switch(m&0x0F) //branching on to decryption function gm {case 0: i=ROR(i,(m>>4)); break; case 1: i^=CodeT[val[dp]]; break; case 2: k=valLen-dp-1; if(op!=k) i^=val[k]; break; case 3: i^=kp; break; case 4: k=val[valLen-dp-1]; val[valLen-dp-1]=i; i=k; break; case 5: i^=dp; break; case 6: i=ROR(i,kp); break; case 7: i=ROR(i,dp); break; case 8: i=SwapBit(i,CodeT[++k],CodeT[++k]); break; case 9: i=SwapBit(i,kp,dp); break; case 10:i=ROR(i,kp+dp); break; case 11:i=ROR(i,j>>4); break; case 12:i=ROR(i,CodeT[j]); break; Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 53 case 13:i=ROR(i,(m>>5)); break; case 14:i=SwapBit(i,j>>4,m>>4); break; case 15:i=SwapBit(i,j>>3,m>>5); break; } val[op]=i; } if(Pass>1) m=val[FuSrc]; else m=CodeT[Pass]; k=CodeT[m]; i=CodeT[j]; i^=k; val[dp]^=i; if(!kp) kp=KeyTLen; if(!dp) dp=valLen; if(!op) op=valLen; if(!FuSrc) FuSrc=valLen; kp--; dp--; op--; FuSrc--; // XOR of three operands // } } char Key[] = "Alf"; char values[] = "abcdefgh"; // 8 letters will be coded and decoded void main(void) //---------------------- hlavni program ---------------------------------------------{ unsigned char length_of_values=size_of_string(values); while(1) { //volani fce EncryptLVF - i.e. coding tj. zakodovani EncryptLVF( Key, // unsigned char *KeyT values, // unsigned char *val size_of_string(Key), // unsigned char KeyLen length_of_values, // unsigned char valLen length_of_values // unsigned char Pass ); 54 FEI Vysoká škola báňská – Technická univerzita Ostrava //volani fce DecryptLVF - i.e. decoding tj. dekodovani DecryptLVF( Key, // unsigned char *KeyT values, // unsigned char *val size_of_string(Key), // unsigned char KeyLen length_of_values, // unsigned char valLen length_of_values // unsigned char Pass ); }//koncova zavorka tela cyklu while(1) }//koncova zavorka fce main 4 Alarmní systémy Alarmní systémy mají za sebou dlouhodobou historii od rolničky nad dveřmi kupeckého krámku ve starověku až k počítačovému zpracování obrazu získaného špionážními družicemi s cílem detekovat start nukleárních raket nepřítele podle nezbytného plamene tryskového motoru. Celosvětově existuje ohromné množství profesionálních alarm systémů (v ČR je dominantní f. Jablotron) i velice chytrých konstrukcí nadšených erudovaných jedinců. 4.1 A4011 - jednoduchý alarm bez procesoru A4011 je příkladem zařízení, ve kterém není použit procesor. Je vhodné pro alarmní zabezpečení objektů malé důležitosti např. sklepů obytných domů apod. Jádrem zařízení je obvod MHB4011 – čtveřice 2-vstupových hradel NAND v provedení CMOS. První dvě hradla jsou spolu v zapojení RS klopného obvodu. Zbývající hradla jsou zapojena jako invertory. CMOS obvod byl použit pro velmi malou proudovou spotřebu ve statickém režimu, zařízení je napájeno z Pb 12V akumulátoru. Další výhodou MHB4011 je velký rozsah napájecího napětí (6-15V), napětí 12V Pb akumulátoru tomu plně vyhovuje, není třeba žádného stabilizátoru(jeho použití by znamenalo další ztrátu energetie). Navíc zařízení naprosto spolehlivě funguje jak při čerstvě nabitém akumulátoru(13,4V), tak při akumulátoru značně vybitém(12,3V). MHB4011 je napájen z 12V, jeho vstupy vyhodnotí signál jako „0“ je-li napětí 0-6V, a jako „1“ je-li napětí 6-12V. Klopí tedy(s malou hysterezí) při 6 Voltech. Další výhodou MHB4011 je to, že napětí na jeho vstupech se mohou měnit pozvolna (i když jde o vstupy digitální), nevyžaduje strmé hrany. Schema A4011 je na obr. 4.1.1a. Poplach je možno vyvolat rozpínacím kontaktem A(při střežení je sepnut), a spínacím kontaktem B(při střežení je rozepnut). K indikaci stavu slouží LEDzel a LEDžlu. LEDzel svitem indikuje „dobu přípravy“ ke střežení, po tuto dobu nelze žádným z kontaktů A, B poplach vyvolat. Až LEDzel zhasne, tak zařízení vstoupilo do stavu „střežení“. LEDžlu svitem indikuje dobu „zpoždění poplachu“ – některý z kontaktů A, B byl aktivován, poplach nastane se zpožděním několika vteřin. Jediný způsob jak během „zpoždění poplachu“ poplachu zabránit je zařízení vypnout skrytě umístěným vypinačem V. Činnost A4011 zahajuje obsluha tím, že v čase t=0 sepnutím vypinače V připojí napájecí napětí 12Volt. Začíná tím „doba přípravy“ . RS obvod má na pinu 3 úroveň L. na pinu 4 úroveň H, kondenzátor C3 se nabíjí, zatím je na malém napětí „0“. Na pinu 10 je negace této hodnoty(čili „1“) a přes T4 svítí LEDzel. Současně je vodivý T2 – překlenuje odpor R3 a přivádí na pin 1 „tvrdou 1“ – tato úroveň nemůže být stáhnuta do „0“ přizemněním kolektoru T1(rozepnutím A nebo sepnutím B). Tím RS obvod drží svůj stav, C3 se nabíjí. V čase t1 napětí C3 dosáhne 6V tj. „1“ T2 rozepne LEDzel zhasne Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 55 -„doba přípravy“ skončila. Od tohoto okamžiku je možno alarm vyvolat. C3 se nabíjí dál, a po určitém čase(přibl. 3časové konstanty čili 3*R7*C3 čili 90s) je prakt. nabit úplně na 12V. Ucc T5 V R8 R4 R3 10K 10 C5 3n3 10K 33K 1 2 C1 8 & R5 3 9 12 * 5 & 4 11 R7 1M5 6 Ucc Ucc 2n2 C2 & 13 R6 10K R2 1M 22n + A B C3 Řešení R5 1M8 a) 3M9 R10 1K T3 T4 LEDzlu 20M + R9 1K C4 * LEDzel T1 10M 12V Pb akumulátor R1 M56 & M47 S R11 T2 IO.....................MHB4011 T1,T2,T3,T4.....BC337 T5.....................IRF9530 D......................BAT42 D UC3 = U6,8 U1 t2 12V 6V t1 U3 t4 b) U 4 UC4 = U12,13 U10 U11 12V 6V t3 ALARM ! t5 Obr. 4.1.1 Alarm A4011 a) Schema zapojení b) Průběhy hlavních signálů 56 FEI Vysoká škola báňská – Technická univerzita Ostrava V čase t 2 dochází k aktivaci některého kontaktu A, B narušitelem. Napětí kolektoru T1 poklesne do „0“, tato úroveň se projeví na pinu 1 RS obvodu jako krátká „0“ a překlopí ho. Pin 3 přejde do „1“ a rozsvítí se LEDžlu – indikuje dobu „zpoždění poplachu“, je to úsek t 2 − t3 . Současně se začne nabíjet C4. Pin 4 přejde do „0“ - C3 se začne vybíjet. Během „zpoždění poplachu“ je možno odvrátit nabíhající alarm – vypnutím napájení vypinačem V. Pokud se odvrácení neprovede, tak v čase t3 nastane alarm - napětí na C4 dosáhne „1“ , toto je vedeno na piny 12,13 koncového invertoru který svým pinem 11 zvodiví T5, a ten připojí napětí na sirénu S. Napětí na C3 klesá, v čase t 4 poklesne na 6V , to je pinem 6 RS obvodu vyhodnoceno jako „0“ a RS obvod opět překlopí. Nyní je pin 3 „0“, a pin 4 „1“ a napětí C4 začne klesat. Siréna pořád burácí. V čase t5 napětí C4 poklesne na 6V, koncový invertor překlopí(pin 11 přejde do „1“) , T5 rozepne a siréna přestane burácet. Tím alarm splňuje i požadavek předpisů, aby hluk sirény byl časově omezený. Tento požadavek je splněn i v situaci, kdy kontakt A rozepnutím vyvolal poplach a zůstane trvale rozepnutý - narušitel při spuštění sirény utekl a nechal všechno být. Parametry alarmního zařízení A4011 : napájení 6 – 15V ss „doba přípravy“ 40s „zpoždění poplachu“ 15s max. proud sirénou 14A doba trvání poplachu 35s proudový odběr 30µA 7 µA ve variantě pouze s kontaktem B (kontakt A nepoužit) . 4.2 Alarm s procesorem PIC16F690 Použití procesoru dává alarmu inteligenci a nové vlastnosti (bez procesoru prakticky nedosažitelné). Je důležité si ujasnit vlastnosti alarmu a důležitost střeženého objektu : - zvolit procesor se SLEEP režimem s minimální proudovou spotřebou - zdroj napájení nezávislý na síti 230V~, způsob dobíjení - vazba do GSM sítě, vazba do internetu (pokud jsou požadovány), vazba na PCO. Zde uvedené řešení alarmu používá jednočipový procesor PIC16F690 f. Microchip [12]. Tento procesor byl zvolen proto, že se od alarmu nepožaduje vazba do GSM ani k internetu. Další důvod je, že procesor má mimořádně nízkou proudovou spotřebu ve SLEEP režimu (nanoWatt technology), výrobce udává ve SLEEP režimu a při Ucc = 2,0V nejmenší odběr 50nA ! Pokud je v procesoru používán časovač Watch Dog, tak odběr podstatně stoupne na cca 1µA, což je pořád skvělá hodnota. Procesor má velké rozmezí napájecího napětí 2,0 – 5,5V, to dává možnost jej napájet ze superkondenzátoru velké kapacity (např. E1000G/5.5V f. VISHAY – kapacita 1F, max. napětí 5,5V). Pro ilustraci – pokud zařízení napájené ze superkondenzátoru 1F odebírá konstantní proud 1µA, tak tomu odpovídá pokles napětí superkondenzátoru 1µV/s tj. 3,6mV/hod. Pokud je klidový odběr takto malý, tak k dobíjení superkondenzátoru přes den není ani nutný poměrně drahý solární panel, postačí několik mnohem levnějších velkoplošných fotodiod. Je-li použit stabilizátor, tak je nutné vybrat typ o nízké vlastní spotřebě, MCP1703 tomu vyhovuje – odebírá cca 1µA . Celkově je schema alarmu díky procesoru velmi jednoduché, viz. následující obr. 4.2.1. Obrázek znázorňuje standardní klidovou situaci hlídání. Jako senzor je použit jazýčkový přepínací kontakt KSK1C90-1520, magnet je v jeho blízkosti, procesor má na vstupu RA0 úroveň „1“ díky internímu Pull-up rezistoru. V procesoru je aktivní časovač Watch Dog, který přetéká s Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 47n 5V PIC16F690 5V 8K2 5V 5V 4 47n 12V 1 KON 5V RB4 13 IRF9530 10K BC547 piesoklakson AKU 12V P MCP 1703 10R Zdrojová část 1N4007 2,7uA 47K 12V 57 MCLR 19 RA0/PGD 18 RA1 / PGC RB5 12 560R LEDzlu KSK1C90-1520 RB6 11 560R LEDzel 20 N S Obr. 4.2.1 Schema alarmu s procesorem PIC16F690 periodou 0,58s; procesor je v tom okamžiku probuzen ze SLEEP režimu, zjistí zda je změna v signálu senzoru a podle toho reaguje. Bližší je zřejmé z výpisu programu. Konektor KON slouží k přehrání jiné varianty programu z osobního počítače do PIC16F690, debugging apod. /******************** Alarm procesor : PIC16F690 ********************** Watch Dog pouzivan, v konfig. slove je zakazan-pak ho lze spoustet/zastavovat softverove */ #include <pic16f69x.h> #define klakson RB4 //pin 13 #define LEDzlu RB5 //pin 12 #define LEDzel RB6 //pin 11 #define dvere_otevrene (RA0==0) #define dvere_zavrene (RA0==1) #define NASTAVENI_600s 1034 // 1034.....600s #define DOBA_ZPOZDENI_ALARMU 213 //213.....30s nabeh alarmu #define POCET_SEPNUTI_KLAKSONU 30 // pozn. volit maximalne 127 bit stary_RA0, zmena_RA0; // globalni promenne 58 FEI Vysoká škola báňská – Technická univerzita Ostrava main() //hlavni program { unsigned char pomuchar; unsigned int pomuint, romuint; unsigned long int ulint; OSCCON=0b00000001; // LFINTOSC 31kHz while(!LTS); // LTS==0...LFINTOSC is not stable // LTS==1...LFINTOSC is stable, OSCCON.1 ANSEL=0; // 12 pins are digital I/O ANSELH = 0; // (not Analog inputs), datasheet page 61 TRISB=0b00000000; TRISA=0b00000011; TRISC=0; // Pull-Up rezistors on PORTA, PORTB inputs enabled ( bit RABPU je OPTION_REG.7 ) OPTION_REG &= 0b01111111; while(1) { blikani_LEDzel: //***************** WDT ********************* /* 8-bitovy prescaler OPTION_REG , zbytecne - bity jsou 1 z Resetu PSA=1; //1...prescaler is assigned to WDT PS2=PS1=PS0=1; //...prescaler rate is 1:128 */ /* 16-bitovy prescaler */ WDTCON=0b00000101; // 1 : 128(...pretece kazdych 0,58s), SWDTEN=1 pomuchar=PORTA; pomuchar=PORTB; RABIF=0; RABIE=0; klakson=0; LEDzel=1; LEDzlu=0; for(pomuint=23; pomuint--; ) { stary_RA0=RA0; //nyni zde , srpen2012 asm("NOP"); asm("NOP"); asm("SLEEP"); //WDT pretekl a vzbudil ho asm("NOP"); asm("NOP"); LEDzel = !LEDzel; WDTCON=(LEDzel)?0b00000001:0b00000101; } Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO LEDzel = 0; stary_RA0=RA0; WDTCON=0b00000101; for(pomuint=NASTAVENI_600s; dvere_otevrene || (pomuint--); ) {if(dvere_otevrene) pomuint=NASTAVENI_600s;//znovunaladovani na 600s if((stary_RA0==1) && (RA0==0)) goto blikani_LEDzel; //prave doslo k otevreni dveri stary_RA0 = RA0; asm("NOP"); asm("SLEEP"); asm("NOP"); //WDT pretekl a vzbudil procesor } hlidani: //dvere_zavrene a pomuint kleslo na 0, zacina hlidani SWDTEN=0; /* Stop WDT (WDTCON.0) ve stavu hlidani ho WDT periodicky probouzet nebude, probudi ho jen změna od senzoru na RA0 . */ IOCA0=1; // Interrupt On Change control bit for RA.0 pomuchar=PORTA; pomuchar=PORTB; RABIF=0; RABIE=1; asm("NOP"); asm("SLEEP"); //bere jen cca 2uA //doslo ke zmene na RA0 nabeh_alarmu: asm("NOP"); asm("NOP"); IOCA0=0; // Interrupt On Change control bit for RA.0 pomuchar=PORTA; pomuchar=PORTB; RABIF=0; RABIE=0; SWDTEN=1; LEDzlu=1; WDTCON=0b00000001; // 1 : 32(pretece kazdych 0,15s), SWDTEN=1 for(pomuint=DOBA_ZPOZDENI_ALARMU; pomuint--; ) {// Alarm lze odvratit jen vypnutim zarizeni skrytym vypinacem P asm("NOP"); asm("SLEEP"); //WDT pretekl a vzbudil procesor asm("NOP"); asm("NOP"); LEDzlu = !LEDzlu; WDTCON=(LEDzlu)?0b00000001:0b00000101; } 59 60 FEI Vysoká škola báňská – Technická univerzita Ostrava alarm: // "pomuint" kleslo na 0, ALARM !!! SWDTEN=0; //Pri kazde zmene signalu RA0 se nastavi promenna "zmena_RA0" //a znovu se spusti klaksonovani POCET_SEPNUTI_KLAKSONU - krat. //Az konecne behem klaksonovacich cyklu je RA0 porad nemenny, //tak klaksonovani skonci, a jde na blikani_LEDzel. zmena_RA0=0; for(klakson=1,pomuchar=2*POCET_SEPNUTI_KLAKSONU; pomuchar--; ) { for(pomuint=20; (!zmena_RA0)&&(pomuint--); ) { stary_RA0 = RA0; for(romuint=100; romuint--; ) ; if(stary_RA0 != RA0) zmena_RA0=1; } if(!zmena_RA0) klakson = !klakson; // invertovani signalu klakson else {// zjistena zmena signalu RA0 zmena_RA0=0; pomuchar=2*POCET_SEPNUTI_KLAKSONU; //znovunaladovani klakson=1; } } } } Závěrem dodejme, že má-li mít alarmní zařízení nulové nároky na servis, tak je vhodné udělat hardvérové a softvérové rozšíření o zcela automatický test stavu akumulátoru, jeho inteligentní dobití, jednou za dobu cca 6měsíců se doporučuje pořádné vybití akumulátoru a vzápětí jeho nabití (příznivý vliv na životnost) apod. Zde má čtenář volné pole působnosti. 4.3 Alarm s vazbou do GSM sítě mobilních telefonů V daném řešení alarmu jsou klíčové dva prvky – procesor PIC16F876A [13] a GSM komunikační modul SIM300D. SIM300D umožňuje snadné připojení mikropočítače do GSM sítě. Blokové schema systému je na obr. 4.3.1. RS232 Procesor PIC16F876A DTMF dekodér HT9170 Displej Mobilní telefon Modul SIM300D SIM karta Obr. 4.3.1 Alarm systém s modulem SIM300D, blokové schema LEDzel LEDzlu LEDcerv TL1 TL2 RB4 RB7 RC5 RB5 RA5 RC1 RC2 RA1 RA2 RA3 RA4 10 9. RS232 7 8 7 H 10 RB2 RB1 RB3 9. 3 10 4 TXD R1 C1 OE 23 D0 DTMF VP 1 EAR+ 12 D1 dekodér 13 R2 C2 D2 HT9170 24 2 14 VN EARD3 DV 15 Data Displej s řadičem Clk M5450 netlight 41 RI 11 pwrkey 12 61 RXD 11 RB0 RC4 RC3 8 Mobilní telefon Modul SIM300D klakson RC7/RX Procesor PIC16F876A senzor naruseni RC6/TX MAX232 3,6864MHz Ucc 3,8V MAX3232 Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO SIM karta NETLIGHT RI pwrkey Obr. 4.3.2 Detailní schema systému Při prvopočátečním rozběhu systému je nutno procesorem vygenerovat signál pwrkey dle obr. 4.3.3 a. Signál NETLIGHT vysílá SIM300D jako indikátor toho, že je už regulérně připojen v radiové síti. Signál je impulsní , pokud je už modul regulérně připojen v radiové síti tak impulsy mají periodu v rozm. 3,0 až 4,5s . V úvodu programu je nutno čekat až se vyhodnotí první správná perioda těchto impulsů, a od této chvíle je nutno ji hlídat neustále. Pokud se při tomto hlídání zjistí že perioda je mimo uvedené přípustné rozmezí, tak musí procesor pro SIM300D vygenerovat signál pwrkey dle obr. 4.3.3 b (a ne dle obr. 4.3.3a). V této situaci se rovněž musí znovu rozběhnout program od svého počátku. 3s Obr. 4.3.3 a) pwrkey signál při rozběhu(nastartování) systému b) pwrkey signál při mimotolerantní periodě impulsů NETLIGHT 0,5s 3s 0,5s Máme k dispozici systém dle obr. 4.3.2. Je to upozorňovací alarmní systém. Senzor narušení má binární výstup, při narušení objektu změní úroveň, a tato změna vzbudí procesor ze SLEEP módu. Mikroprocesor PIC16F876A má funkci řadiče tohoto systému podle následujícího popisu. Watch Dog procesoru je v aplikaci používán. Přenosová rychlost sériové linky RS232 procesoru je nastavena na 9 600 Bd (aby byla rychlost přesná byt použit krystal o frekvenci 3,6864MHz). V řadě situací bude potřeba odměřovat čas , přičemž dostatečné rozlišení je 0,01s. Nastavíme Timer1 tak, aby přetékal přesně každých 0,01s a vyvolával přitom přerušení. Vytvoříme globální 16bitovou proměnnou, nazvěme ji „ps“ (pocitadlo_setin), obsahuje cas v setinách sekundy. Je-li třeba odměřit čas např. 20s tak v hlavním prgmu ji nastavíme na 62 FEI Vysoká škola báňská – Technická univerzita Ostrava 2000. V obslužném pprgmu přerušení se nejprve ověří, je-li ps ≠ 0. Pokud tomu tak je, pak tato proměnná je dekrementována. Pokud tomu tak není, tak proměnná zůstane na nulové hodnotě ponechána. V hlavním prgmu se pozná, že čas uplynul podle toho, že ps kleslo na 0. Pokud je potřeba odměřovat několik časů současně, tak je vhodné vytvořit několik proměnných tohoto typu, nazvěme je třeba „ps_A“ „ps_B“ „ps_C“ a uvedeným způsobem je používat. Bajt na adr. 0xFF v interní DATA EEPROM obsahuje počet telefonních čísel, která jsou uložena rovněž v DATA EEPROM. Regulérní hodnota je 1 až 9, v okně vidíme hodnotu 02. Pokud se v úvodu programu zjistí hodnota neregulérní, tak se do tohoto bajtu zapíše 0, což znamená uloženo 0 telefonních čísel. Pokud se zjistí hodnota regulérní, tak procesor musí nastavit proměnnou „ukazovatko“ těsně za poslední telefonní číslo. Předpokládá se přitom, že telefonní čísla jsou uložena jako ASCII řetězce podle konvence jazyka C (řetězec je ukončen nulovým bajtem, který už do řetězce nepatří). Tak např. pokud jsou v EEPROM právě dvě telefonní čísla +420596123456 603567890 tak to v EEPROM vypadá takto : Obr. 4.3.4 Obsah DATA EEPROM procesoru, uložená tlf. čísla +420596123456 603567890 Data ze sítě GSM procesor dostává od SIM300D skrze DTMF dekodér HT9170. Převod z DTMF kódováni do ASCII udává násl. tabulka : Tab. 4.3.1 Převod výstupů DTMF dekodéru na ASCII hodnoty Výstupy DTMF dekodéru HT9170 D3 D2 D1 D0 [bin] 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 Význam 0 1 2 3 4 5 6 7 8 9 * # ASCII hodnota uložená do EEPROM [hex] 30 31 32 33 34 35 36 37 38 39 2A (neukládá se) 23 (neukládá se) Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 63 Indikace na 4-místném displeji. Program se skládá třeba z 80 ucelených úseků různých činností. Jen pro účely ladění programu je výhodné si na displeji průběžně indikovat číslo úseku, do kterého se běh programu právě dostal a mít informaci o tom, v kterém úseku se běh programu nachází. Je to mnohdy nezbytné, protože při spolupráci s GSM sítí skrze SIM300D často nepřichází v úvahu použití běžných debug prostředků (break pointy atd.). K indikaci použijeme 4-místný displej s řadičem M5450, jeho popis je v závěru kapitoly. 35 34 RF_GNG RF_ANT 32 RF_GND VBAT VBAT GND GND GND 5 10 GND 30 GND 31 29 TEMP_BAT VCHG_IN Auxadc1 27 17 mic2p 18 mic2n mic1n 20 mic1p AGND EAR+ EARAUDIOOUT- 25 AUDIOOUT+ 26 DB_RX DB_TX RXD TXD STATUS simdata simclk simreset vsim KBROW0 RI pwrkey DISP_CLK DISP_DO Backup Disp_A0 GND 39 48 GND sim_presence DISP_EN 45 CTS RTS DTR DCD NETLIGHT 40 GPIO8 Základní parametry modulu SIM300D - Třípásmový GSM/GPRS modul 900/1800/1900 MHz - Řízení pomocí AT příkazů (GSM 07.07, 07.05 a SIMCOM rozšířených AT příkazů) - Interní obvod reálného času (RTC) - Rozhraní : - k externí SIM kartě 3V / 1,8V - Napájecí napětí 3,4…..4,5V - dvě analogová audio rozhraní - Rozměry 33 x 33 x 3mm - sériové rozhraní RS232 - Hmotnost 7,8g - rozhr. pro připojení modemu - SPI Obr. 4.3.5 Rozmístění signálů modulu SIM300D, pohled shora Procesor komunikuje s modulem SIM300D pomocí AT příkazů. SIM300D zná mnoho AT příkazů, ty, které jsou v aplikaci používány, jsou popsány v následujícím textu. 64 FEI Vysoká škola báňská – Technická univerzita Ostrava AT příkazy pro modul SIM300D (výtah, kompletně viz. SIM300D_ATC_V2.00.pdf) Procesor PIC16F876A RX RS232 MAX3232 TX MAX232 AT příkazy se do modulu posílají z procesoru sériovým rozhraním RS232(horní linka). Na příkazy modul posílá zpět odezvu(Response) o tom, jak provedení příkazu dopadlo (dolní linka). Toto spojení pomocí rozhraní RS232 zde nakresleme detailně : RXD TXD Modul SIM300D Obr. 4.3.6 Propojení procesoru s modulem SIM300D linkou RS232 Zavedená označení ASCII tabulka, ASCII kód…..American Standard Code for Information Interchange, kód často používaný pro přenos dat. Znaky o hodnotách 00hex až 7Fhex jsou základní znaky ASCII kódu(př. „A” má kód 41hex „a“ má kód 61hex „0“ má kód 30hex „#“ má kód 23hex ). Znaky ASCII tabulky o hodnotách 80hex až FFhex vyjadřují symboly národních jazyků (jsou zde např. hodnoty pro písmena s diakritikou v češtině „á“ „é“ „í“ atd. ) . CR…..Carriage Return, bajt z ASCII tabulky, má hodnotu 0Dhex tj. 13dec tj. 00001101bin LF…...Line Feed, bajt z ASCII tabulky, má hodnotu 0Ahex tj. 10dec tj. 00001010bin Touto dvojicí znaků CR LF se ukončuje většina AT příkazů. Označení GSM přístrojů : ME(Mobile Equipment) mobilní zařízení, v našem případě mobilní telefon TA(Terminal Adapter) term.. adapter, adaptér pro přizpůsobení různých standardů DCE(Data Communication Equipment) nebo DCE-fax v našem případě je to SIM300D TE(Terminal Equipment) DTE(Data Terminal Equipment) koncové zařízení, v našem systému dle obr. 4.3.2 je to mikroprocesor PIC16F876A . Upozornění zde uvedené AT příkazy jsou pro lepší přehlednost psány s mezerami mezi jednotl. parametry, při vysílání těchto příkazů se žádné mezery nevysílají . Upozornění standardně má SIM300D zapnuté ECHO, to znamená že ve své odpovědi pošle nejprve řetězec, který mu byl poslán, a po něm teprve pošle významově hodnotnou odpověď. Pokud ECHO vypnete, tak SIM300D bude posílat jen významově hodnotnou odpověď. AT CR LF AT příkaz bez parametrů. Lze ho použít k tomu, aby se modul SIM300D nastavil přenosovou rychlost, kterou mu jsou tyto znaky AT CR LF posílány(autobaud). V praxi se provede tak, že se modulu tento příkaz několikrát za sebou pošle, a on se na danou rychlost „chytne“. Je přitom vhodné mezi jednotlivá vyslání vkládat prodlevu cca 100ms. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 65 ATD telefonní_číslo ; CR LF Volba(Dialling) - modul zavolá do GSM sítě na dané telefonní číslo. Středník znamená hovorový přenos (bez středníku by šlo o přenos datový). Příklad hovorového přenosu : ATD123456789; CR LF ATH0 CR LF Zrušení stávajícího spojení (Disconnect Existing Connection), ukončení hovoru. ATV0 CR LF Stanovení formátu, jakým má SIM300D odpovídat procesoru (TA Response format). ATV0 CR LF…SIM300D bude odpovídat čísly(např. pošle ASCII číslo 4 (tj. 34hex) což znamená že SIM300D neporozuměl příkazu – Command Not Recognized) ATV1 CR LF… SIM300D bude odpovídat řetězci(např. při neporozumění příkazu pošle řetězec „ERROR“ Bližší v datasheetu. AT+CPOWD=1 CR LF Uspani modulu SIM300D (POWerDown). ATS0=3 CR LF Příkazy ATS slouží k zápisu hodnoty do S registrů modulu SIM300D. V daném případě je zapsána hodnota 3 do registru S0. Hodnotou v registru S0 se volí počet zvonění(Rings) , po kterých modul SIM300D automaticky přijme hovor(přijetí hovoru je u klasického telefonu ekvivalentní zvednutí sluchátka). V našem příkladu tedy modul odpoví na volání(přijme hovor) po 3. zvonění. ATS0=0 CR LF SIM300D nebude přijímat žádné hovory, nebude automaticky přijat žádný hovor. ATE0=0 CR LF Vypni echo, do zarizeni DCE(SIM300D) se posilá pokyn, že nemá zpět do zařízeni DTE(v našem případě je to procesor PIC16F876A) posílat kopii přijatých AT příkazů. AT+COLP=1 CR LF (COLP - Connected Line Identification Presentation) příkaz identifikuje toho, kdo do našeho systému(modul SIM300D & procesor PIC) volá. Odpovědí na tento AT příkaz je identifikace, provede se tím, že z telefonní sítě je dodáno tlf.číslo volajícího. Po vyslání tohoto AT příkazu procesor ještě příkazem ATD telefonní_číslo ; CR LF zavolá na dané číslo a pak čeká na odpověď od mobilního telefonu. Tato odpověď vypadá typicky takto : COLP: "+420603273951",145 CR LF 0 CR (vše v ASCII kódu) Pozn. ASCII 0 před koncovým CR je důsledek toho, že jsme příkazem ATV0 CR LF nastavili číselné odpovědi. Tato 0 znamená, že je vše v pořádku. Přenosové rychlosti po RS232 Standardně je SIM300D od výrobce nastaven na 115200Bd . Zároveň umožňuje autobaud – dokáže se „chytnout“ na přenosovou rychlost, kterou je mu vysíláno. Přitom se 66 FEI Vysoká škola báňská – Technická univerzita Ostrava mu musí několikrát opakovaně vyslat AT CR LF a procesor přitom čte odpovědi (na svém RXD vstupu). Až v odpovědi procesor pozná řetězec „OK“ tak se modul chytil na přenosovou rychlost a od této chvíle bude správně reagovat na všechny AT příkazy. Pokud je žádoucí trvale modulu nastavit přenosovou rychlost např. na 9600Bd, tak zadáme příkaz AT+IPR=9600;&W CR LF . Odpovědí je OK CR LF . Tuto rychlost si modul uloží do pevné paměti a při příštím zapnutí ji použije. Displej s řadičem Thomson M5450 Řadič M5450 slouží k připojení až 34-segmentového LED displeje, musí jít o displej se společnou anodou (SA). Náš displej je 4-místný (4 znaky po 8 segmentech tj. 32-bitový). Hlavní část řadiče je posuvný 34-bitový registr, jehož koncových 34 bitů řídí 34proudových nor. Chceme-li aby patřičná nora proud vtahovala a patřičný segment svítil, tak musíme v patřičném okamžiku vyslat 1. Naopak chceme-li aby patřičný segment byl zhaslý, tak musíme vyslat 0 . Displeji se sériově posílají Data která jsou taktována hodinami Clk. Úvodní stav signálů musí být vždy Data=0 Clk=0 . Přenos dat pro displej musí nejprve začít režijním Startem, v obrázcích označeno jako S . Před Startem musí být oba signály 0. Start musí proběhnot v tomto pořadí : - Data = 1 - Clk = 1 - Clk = 0 - Data = 0 1. Prvotní uvedení displeje do výchozího stavu a jeho zhasnutí je na obr. 4.3.7. Musí se provést jen jedenkrát v historii - v úvodu činnosti displeje. Je nutno provést Start, pak nastavit Data=0 a vyslat více než 35 hodinových impulsů, zde ilustrováno pro 40 impulsů. S Data Clk 1 2 3 Obr. 4.3.7 Prvotní uvedení displeje do výchozího stavu a jeho zhasnutí 40 2. Vyslání užitečné informace pro jednotlivé segmenty displeje. Každá pozice displeje má 8 segmentů označených abcdefgh. Pro levou pozici (řád tisíců tj. 10^3) se vysílá informace jako první v pořadí. Pro pravou pozici (řád jednotek tj. 10^0) se vysílá informace jako poslední v pořadí. 10^3 10^2 10^1 10^0 a f g b e d ch Obr. 4.3.8 Displej a označení jednotlivých segmentů S a b7 Informace pro pozici 10^3 b c d e f g b6 b5 b4 b3 b2 b1 h b0 10^2 a b7 67 Přepis na displej Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 10^0 h b0 Data Clk 1 2 3 4 5 6 7 8 9 32 33 34 35 Obr. 4.3.9 Vysílání informace pro displej Při vysílání informace pro danou pozici se vysílá bit pro segment a jako první , pro segment h jako poslední. Při vysílání bitu si nejprve nastavíme Data signál do patřičné hodnoty, a pak v Clk vyšleme jeden impuls(vzestupná hrana a pak sestupná hrana). Tak se postupně vyšle 4x8=32 bitů. Jelikož je ale řadič 34 bitový, je nutno mu zbývající 2 bity (33. a 34.) rovněž poslat, doporučuji oba poslat nulových hodnot. K přepisu informace z vnitřního 34bitového posuvného registru do proudových nor(ke kterým jsou segmenty připojeny) dojde až při vzestupné hraně dalšího hodinového impulsu, na obr. 4.3.9 označen jako 35. Tento impuls je tedy nutno taktéž vyslat, Data při něm jsou 0. Tím je zápis hotov a na displeji se v tomto okamžiku musí objevit nová informace. V uvedeném průběhu Segmenty Kód „Vysílání informace pro Požadovaná cifra a b c d e f g h v hexadecimální soustavě displej“ je vidět informace 0 11111100 FC pro pozici 10^3, je to 1 01100000 60 abcdefgh = 10110110 . 2 11011010 DA Svítit v této pozici budou 3 11110010 F2 tedy segmenty a c d f g což 4 01100110 66 vytvoří cifru 5 bez 5 10110110 B6 desetinné tečky. Čili 6 10111110 BE požadujeme-li aby byla 7 11100100 E4 zobrazena cifra 5 musíme 8 11111110 FE vyslat bajt (kód) 10110110 9 11110110 F6 tj. B6hex. Není problém si A 11101110 EE stanovit kódy pro zbývající b 00111110 3E cifry, viz tabulka. C 10011100 9C d 01111010 7A E 10011110 9E Tab. 4.3.2 Kódy pro displej F 10001110 8E Celý alarm systém se mobilní síti jeví jako mobilní telefon. Jeho tlf. číslo je jak je obvyklé na SIM kartě připojené k SIM300D. Toto číslo je řekněme např. 603111999. Při vyvolání alarmu začne procesor skrze SIM300D volat na telefonní čísla, která má ve své Data EEPROM. Z uživatelského hlediska je podstatné, aby na mobilech, na které je snaha se dovolat, bylo toto číslo 603111999 v jejich seznamech s vhodným textem – např. ALARMSKLAD. Na displeji telefonu se objeví ono ALARM-SKLAD, a vlastníku telefonu je jasné o co jde a jak reagovat. Uživatel takového mobilu musí zareagovat tím, že hovor přijme a vzápětí (po cca 2s) hned zavěsí (ukončí hovor). Toto vzápětí rozpozná procesor v alarmu, a poznačí si, že na dané tlf. číslo se úspěšně dovolal. Pokračuje ve vyzvánění na další tlf. čísla tak dlouho, až se dotelefonuje na MIN_POCET_DOVOLANYCH_TLF_CISEL , což je zadefinováno jako 3. 68 FEI Vysoká škola báňská – Technická univerzita Ostrava Alarm systém má i určité servisní možnosti. Pro využití servisních možností alarmu musí být k dispozici mobilní telefon, a musí se znát tlf.č. alarmu (v příkladu 603111999). Je možno dálkově z mobilního telefonu zrušit platnost všech tlf. čísel (jsou v Data EEPROM procesoru). Zrušení se provede z mobilu tak, že (poté co se dovolal na Alarm) se zadá dvojice znaků *# a zavěsí se. Další servisní možnost je doplnění dalších tlf. čísel do Data EEPROM procesoru. Provede se z mobilu tak, že (poté co se dovolal na Alarm) se zadá znak * a nové tlf. číslo. Lze zadat více tlf. čísel, oddělují se znakem *. Po posledním čísle je nutno zadat # a zavěsit. Můj program zde předkládaný umožňuje max. 8 tlf. čísel Data EEPROM procesoru, což je pro běžného uživatele dostatečný počet. Modul SIM300D je procesorem podle potřeby probouzen a uspáván, viz. funkce probuzeni_modulu_SIM300D(), detaily se lze dočíst v manuálu k SIM300D (f. SIMCOM) přístupném na internetu. Je-li SIM300D aktivní a připojen v GSM síti, tak to dává navenek najevo signálem NETLIGHT, který musí mít periodu 3,0 až 4,5s . Perioda se v tom případě procesorem musí vyhodnocovat, děje se to v přerušení, používá se k tomu proměnná ps_perioda_NETLIGHT (počítadlo setin sekundy pro měření periody NETLIGHT). Procesor používá SLEEP režim , ze kterého je probouzen buď Watch Dogem anebo změnou v signálu senzoru narušení. Z ryze elektronického hlediska stojí za upozornění, že SIM300D během vysílání do GSM sítě odebírá krátkodobě z napájecího zdroje až několik Ampér, zdroj tomu musí vyhovovat. Děkuji na tomto místě našemu vynikajícímu technikovi panu Vráťovi Hrdému za spolupráci na tomto Alarmu. Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO Zdrojový text programu // Alarm system, pouziva modul SIM300D, LED displej s M5450. // Procesor PIC16F876A Krystal = 3,6864 MHz . #include <pic.h> #define F_OSC 3686400.0 // ----------------------- definovani I/O signalu procesoru ---------------------------#define LEDcerv RA5 #define signal_RI RB1 #define signal_NETLIGHT RB2 #define PWRKEY RB3 #define jazyckovy_kontakt RB4 //signal senzoru, vzbudi procesor ze SLEEP modu #define indikacni_bit RB5 // LEDzlu #define klakson RB7 #define tl1 RC1 #define tl2 RC2 #define clk_M5450 RC3 #define d_M5450 RC4 #define LEDzel RC5 // ------------------------ další definice --------------------------------------------------#define jazyckovy_kontakt___aktivni jazyckovy_kontakt==0 #define tl1_stlaceno tl1==0 #define tl2_stlaceno tl2==0 #define DTMF_KOD_0 10 #define DTMF_KOD_1 1 #define DTMF_KOD_9 9 #define DTMF_KOD_HVEZDICKA 11 #define DTMF_KOD_MRIZKA 12 #define CARRIAGE_RETURN 0x0D //CR #define LINE_FEED 0x0A //LF #define ADRESA_SPECIALNICH_DAT 250 #define ADRESA_POCTU_TLF_CISEL 0xFF //na teto adrese je pocet tlf cisel, na //ktera se bude volat v pripade Alarmu #define DOBA_PRECHODU_DO_HLIDANI 60000 //v setinach sekundy #define CAS_LIMIT 2000 #define MAX_POCET_TLF_CISEL 8 // NESMI BYT VETSI !!! (napr. 9, 11, 54) #define MIN_POCET_DOVOLANYCH_TLF_CISEL 3 #define NETLIGHT_LADUNG 500 //v setinach vteriny #define POCET_CIFER_DISPLEJE 4 // ----- hodnoty promenne "dosavadni_stav" #define STAV_NEHLIDANI 123 #define STAV_PRECHOD_DO_HLIDANI 127 #define STAV_HLIDANI 137 #define STAV_NABEH_ALARMU 141 #define STAV_ALARM 147 #define STAV_SERVIS 148 #define PREDN_6s 125000 #define PREDN_600s 12500000 #define PREDN_NABEH_ALARMU 1250000 //cca 60s 69 70 #define #define FEI Vysoká škola báňská – Technická univerzita Ostrava IB___0xA3 0b10100011 IB___0xA5 0b10100101 // ----- hodnoty promenne "indikacni_bajt" // #define KOD_segm_a 0b10000000 // ----- kody pro displej #define KOD_segm_b 0b01000000 #define KOD_segm_c 0b00100000 #define KOD_segm_d 0b00010000 #define KOD_segm_e 0b00001000 #define KOD_segm_f 0b00000100 #define KOD_segm_g 0b00000010 #define KOD_segm_h 0b00000001 #define KOD_0 0b11111100 #define KOD_1 0b01100000 #define KOD_2 0b11011010 #define KOD_3 0b11110010 #define KOD_4 0b01100110 #define KOD_5 0b10110110 #define KOD_6 0b10111110 #define KOD_7 0b11100100 #define KOD_8 0b11111110 #define KOD_9 0b11110110 #define KOD_A 0b11101110 #define KOD_b 0b00111110 #define KOD_c 0b00011010 #define KOD_C 0b10011100 #define KOD_d 0b01111010 #define KOD_E 0b10011110 #define KOD_F 0b10001110 #define KOD_G KOD_6 #define KOD_h 0b00101110 #define KOD_H 0b01101110 #define KOD_i KOD_segm_c #define KOD_I 0b01100000 #define KOD_J 0b01111000 #define KOD_L 0b00011100 #define KOD_n 0b00101010 #define KOD_N 0b11101100 #define KOD_o 0b00111010 #define KOD_O KOD_0 #define KOD_P 0b11001110 #define KOD_r 0b00001010 #define KOD_S KOD_5 #define KOD_t 0b00011110 #define KOD_u 0b00111000 #define KOD_U 0b01111100 #define KOD_Y 0b01110110 #define KOD_MINUS KOD_segm_g #define KOD_PODTRZITKO KOD_segm_d #define KOD_ZHASNUTO 0 Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO // GLOBALNI PROMENNE //Pokud se v uvodu Servisniho rezimu zjisti, ze v EEPROM je ulozeno //MAX_POCET_TLF_CISEL(nebo vice) , tak se tato promenna //"poz_cekani_5s_na_hvezdicku" da do 1, v opacnem pripade do 0. //Pokud nabyde hodnoty 1, tak se zacne odmerovat 5s, //behem kterych je mozno zadat znak '*' a tim se vynuluje ptr. //Jestlize se behem techto 5s znaku '*' nedocka, tak zavesi. bit poz_cekani_5s_na_hvezdicku; bit blikani_LEDkami; bit pozadavek_Reset; bit vysilani; bit pozadavek_konce_zadavani_tlf_cisel; bit pozadavek_pockani_5s; bit posledni_znak_z_DTMF_byl_mrizka; bit posledni_znak_z_DTMF_byl_cifra; bit cihani_na_prvni_znak_z_DTMF; bit rezim_pocitani_setin; bit ukonci_tento_cyklus; bit pombit; bit rombit; bit jde_o_nevyznamnou_nulu; bit novy_bajt_z_RS232; bit novy_bajt_z_DTMF_dekoderu; bit zjisteno_stlaceni_TL2; bit zjisteno_stlaceni_TL1; bit hlidani_periody_NETLIGHT; bit stary_vzorek_NETLIGHT; bit zmena_v_signalu_probuzeni; persistent bit uspani_SIM300D; //pri uvodni rezii se nenuluje, funguje to OK // ptr ..... pointer to DATA EEPROM, funguje jako ukazovatko na zasobnik //Pouziti pri zapisu : nejprve zapis a pak inkrementace //Pouziti pri cteni : nejprve dekrementace a pak cteni unsigned char ptr; unsigned char pomuchar, stary_PORTB, stav_TL1; unsigned char stav_TL2; unsigned char Buffer_RS232; unsigned char Buffer_DTMF_dekoder; unsigned char hodnota_z_PORTB; unsigned char servisni_bajt; //tyto dve promenne s privlastkem "persistent" v uvodni rezii nulovany NEJSOU persistent unsigned char dosavadni_stav, indikacni_bajt; unsigned int ps; //pocitadlo_setin unsigned int ps_perioda_NETLIGHT; //pouzivano vyhradne pro hlidani periody ! 71 72 FEI Vysoká škola báňská – Technická univerzita Ostrava void set_ps(unsigned int argument_uint) { TMR1ON=0; ps = argument_uint; TMR1ON=1; } void cekej_na_uvolneni_tl1(void) {unsigned int local_uint; for( local_uint=3000; local_uint; --local_uint) //ceka na uvolneni tl1 {asm("CLRWDT"); //vcetne osetreni zakmitu tlacitka if(tl1_stlaceno) local_uint=3000; //znovunaladovani } zjisteno_stlaceni_TL1=0; } void cekej_na_uvolneni_tl2(void) {unsigned int local_uint; for( local_uint=3000; local_uint; --local_uint) //ceka na uvolneni tl2 {asm("CLRWDT"); //vcetne osetreni zakmitu tlacitka if(tl2_stlaceno) local_uint=3000; //znovunaladovani } zjisteno_stlaceni_TL2=0; } void TXOut(const char * String) // Vyšle řetězec znaků na sériovou linku {char BufPtr=0; while(String[BufPtr]!=0) { asm("CLRWDT"); TXREG=String[BufPtr++];//Vyšli znak, automaticky znuluje TXIF,nejde nulovat SW asm("nop"); // Chviličku čekej, aby data mohl přenést a vynulovat IF while(!TXIF); // Čekej na dokončení vyslání znaku } } void EEPromWrite(unsigned char Adresa,unsigned char Data) {EEADR=Adresa; // Zápis adresy do registru EEDATA=Data; // Zápis dat do registru GIE=0; // Zakázat globální přerušení EEPGD=0; // Zapisovat se bude do datové paměti WREN=1; // Povolit zapisování EECON2=0x55; // Zapsat 55h EECON2=0xAA; // Zapsat AAh WR=1; // Start zápisu while(WR) // Dokud se zapisuje, čekej asm("CLRWDT"); WREN=0; // Zakázat zapisování GIE=1; // Povolit globální přerušení } Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO char EEPromRead(unsigned char Adresa) {EEADR=Adresa; // Adresa do registru EEPGD=0; // Číst se bude z datové paměti RD=1; // Start čtení return EEDATA; // Přečtená data } void vysli_bajt_do_RS232(unsigned char h) { TXREG = h; // Vyšli h, automaticky vynuluje TXIF (nejde vynulovat SW) asm("nop"); // Chviličku čekej, aby data mohl přenést a vynulovat IF while(!TRMT) // Čekej na dokončení vyslání znaku asm("CLRWDT"); } void vysli_bajt_do_RS232___CR_LF(void) { vysli_bajt_do_RS232(CARRIAGE_RETURN); vysli_bajt_do_RS232(LINE_FEED); } void clkimp_M5450(void) { asm("CLRWDT"); clk_M5450=1; clk_M5450=1; clk_M5450=1; clk_M5450=0; clk_M5450=0; clk_M5450=0; } void zaver_M5450(void) { d_M5450=0; clkimp_M5450(); clkimp_M5450(); clkimp_M5450(); } void start_M5450(void) { d_M5450=1; d_M5450=1; d_M5450=1; clkimp_M5450(); d_M5450=0; } // ***** displej s radicem M5450 ***** 73 74 FEI Vysoká škola báňská – Technická univerzita Ostrava unsigned char koduj(unsigned char bhb) // vrati patricny kod pro displej { switch(bhb) {case 0 : case '0': return KOD_0; case 1 : case '1': return KOD_1; case 2 : case '2': return KOD_2; case 3 : case '3': return KOD_3; case 4 : case '4': return KOD_4; case 5 : case '5': return KOD_5; case 6 : case '6': return KOD_6; case 7 : case '7': return KOD_7; case 8 : case '8': return KOD_8; case 9 : case '9': return KOD_9; case 10 : case 'A': return KOD_A; case 11 : case 'b': return KOD_b; case 'c': return KOD_c; case 12 : case 'C': return KOD_C; case 13 : case 'd': return KOD_d; case 14 : case 'E': return KOD_E; case 15 : case 'F': return KOD_F; case 'G': return KOD_G; case 'h': return KOD_h; case 'H': return KOD_H; case 'i': return KOD_i; case 'I': return KOD_I; case 'J': return KOD_J; case 'L': return KOD_L; case 'n': return KOD_n; case 'N': return KOD_N; case 'o': return KOD_o; case 'O': return KOD_O; case 'P': return KOD_P; case 'r': return KOD_r; case 'S': return KOD_S; case 't': return KOD_t; Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO case 'u': case 'U': case 'Y': case '-': case '_': case ' ': default: } 75 return KOD_u; return KOD_U; return KOD_Y; return KOD_MINUS; return KOD_PODTRZITKO; return KOD_ZHASNUTO; return KOD_segm_a | KOD_segm_b; } void vysli_bajt_na_M5450(unsigned char bajt) {unsigned char rot; for(rot=0x80; rot; rot>>=1) {asm("CLRWDT"); if(bajt & rot) d_M5450=1; else d_M5450=0; clkimp_M5450(); } } // const…..retezec není v RAM, ale v pameti programu (FLASH) void zobraz_retezec(const char *p) {unsigned char bajt, pocitadlo_bajtu; start_M5450(); for(pocitadlo_bajtu=0; *p && (pocitadlo_bajtu!=4); ++pocitadlo_bajtu, ++p) {bajt = *p; bajt = koduj(bajt); vysli_bajt_na_M5450(bajt); } for( ;pocitadlo_bajtu != 4; ++pocitadlo_bajtu) vysli_bajt_na_M5450(KOD_ZHASNUTO); zaver_M5450(); } //Dekadicky zobrazi udaj unsigned int na 4-mistnem LED displeji v rozmezi 0 az 9999 //pri pokusu o zobrazeni vetsiho cisla rozsviti segmentky g. Potlacuje nevyznamne nuly. void zobraz_uint(unsigned int cislo_uint) {unsigned char index, pole[POCET_CIFER_DISPLEJE]; start_M5450(); if(cislo_uint>9999) {for(index=POCET_CIFER_DISPLEJE; index; --index) vysli_bajt_na_M5450(KOD_segm_b); goto zaver_zcuint_0_9999; } index = POCET_CIFER_DISPLEJE - 1; 76 FEI Vysoká škola báňská – Technická univerzita Ostrava do{asm("CLRWDT"); pole[index] = cislo_uint - 10*(cislo_uint/10); cislo_uint/=10; } while(index--); jde_o_nevyznamnou_nulu = 1; index = 0; do{ if(pole[index]) jde_o_nevyznamnou_nulu = 0; if( jde_o_nevyznamnou_nulu && (index != POCET_CIFER_DISPLEJE-1) && (!(pole[index])) ) pole[index] = KOD_ZHASNUTO; else pole[index] = koduj(pole[index]); } while((++index) != POCET_CIFER_DISPLEJE); for(index=0; index != POCET_CIFER_DISPLEJE; ++index) vysli_bajt_na_M5450(pole[index]); zaver_zcuint_0_9999: zaver_M5450(); } //Do RS232 posle tlf.cislo prectene z EEPROM // index_tlf_cisla musi byt 0 az (MAX_POCET_TLF_CISEL-1) !!! void posli_tlf_cislo_z_EEPROM(unsigned char index_tlf_cisla) {// priklad retezce ATD cislo_z_EEPROM ; CR LF unsigned char prectena_hodnota; unsigned char ptr_to_EEPROM=0; //preskoc tlf. cisla, ktera jsou v EEPROM pred hledanym tlf.cislem for( ; index_tlf_cisla--; ) { do {prectena_hodnota = EEPromRead(ptr_to_EEPROM); ++ptr_to_EEPROM; } while(prectena_hodnota); } // ptr_to_EEPROM by mel nyní byt nastaven na zacatecni cifru hledaneho tlf.cisla vysli_bajt_do_RS232('A'); //volba (Dialling), v prikazu je znak ';' to vysli_bajt_do_RS232('T'); //znamena ze bude uskutecnen hovorovy prenos vysli_bajt_do_RS232('D'); //(bez znaku ';' by slo o prenos datovy) for( ; prectena_hodnota = EEPromRead(ptr_to_EEPROM); ) {vysli_bajt_do_RS232(prectena_hodnota); ++ptr_to_EEPROM; } // narazili jsme na \0 vysli_bajt_do_RS232(0x3B); //strednik ';' vysli_bajt_do_RS232___CR_LF(); } Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO void pauza_100ms(void) { for( set_ps(10); ps; ) asm("CLRWDT"); } void pauza_500ms(void) { for( set_ps(50); ps; ) asm("CLRWDT"); } void AT_CR_LF(void) {vysli_bajt_do_RS232('A'); vysli_bajt_do_RS232('T'); vysli_bajt_do_RS232___CR_LF(); } void ATH0_CR_LF(void) // ukončení hovoru { vysli_bajt_do_RS232('A'); vysli_bajt_do_RS232('T'); vysli_bajt_do_RS232('H'); vysli_bajt_do_RS232('0'); vysli_bajt_do_RS232___CR_LF(); } //SIM300D bude posilat zpet do PICu hlaseni o tom, //jak provedeni urciteho AT prikazu dopadlo, viz manual tabulka 2.2.26 void ATV0_CR_LF(void) // SIM300D(TA-Terminal Adapter) bude {vysli_bajt_do_RS232('A'); // odpovidat strucne(cislem) vysli_bajt_do_RS232('T'); // a ne kosate(textem). vysli_bajt_do_RS232('V'); vysli_bajt_do_RS232('0'); vysli_bajt_do_RS232___CR_LF(); } // ATE0 CR LF - vypni echo, do zarizeni DCE se posila pokyn, ze nemá zpet do // zarizeni DTE(PIC) posilat kopii prijatych AT prikazu. Manual kap 1.3 void ATE0_CR_LF(void) // ECHO OFF {vysli_bajt_do_RS232('A'); vysli_bajt_do_RS232('T'); vysli_bajt_do_RS232('E'); vysli_bajt_do_RS232('0'); vysli_bajt_do_RS232___CR_LF(); } //fce vraci hodnotu : 0 bez chyby // 1-9 zavazna chyba // 10-89 lehka chyba unsigned char zpracuj_znak_z_DTMF(void) { unsigned char tempuchar; unsigned int tempuint; 77 78 FEI Vysoká škola báňská – Technická univerzita Ostrava novy_bajt_z_DTMF_dekoderu=0; if(Buffer_DTMF_dekoder == DTMF_KOD_0) {Buffer_DTMF_dekoder = '0'; posledni_znak_z_DTMF_byl_cifra = 1; goto s10; } if((DTMF_KOD_1<=Buffer_DTMF_dekoder)&&(Buffer_DTMF_dekoder<= DTMF_KOD_9)) {Buffer_DTMF_dekoder |= '0'; posledni_znak_z_DTMF_byl_cifra = 1; goto s10; } if(Buffer_DTMF_dekoder == DTMF_KOD_HVEZDICKA) {Buffer_DTMF_dekoder = '*'; goto s10; } if(Buffer_DTMF_dekoder == DTMF_KOD_MRIZKA) Buffer_DTMF_dekoder = '#'; else //z DTMF dekoderu se dodal NEZNAMY ZNAK !!! return(1); //zavazna chyba 9901 s10: if(cihani_na_prvni_znak_z_DTMF) {//jde o historicky 1. znak z DTMF cihani_na_prvni_znak_z_DTMF=0; if(('0' <= Buffer_DTMF_dekoder ) && (Buffer_DTMF_dekoder <= '9')) {//prvni bajt je 0-9, neni to '*' , obsluha chce doplnit dalsi tlf. cisla EEPromWrite(ptr,Buffer_DTMF_dekoder); ++ptr; return(0); } if(Buffer_DTMF_dekoder == '*') // prvni bajt je '*' do pameti budeme ukladat od adr. 0x00 ptr=0x00; EEPromWrite(ADRESA_POCTU_TLF_CISEL,0); poz_cekani_5s_na_hvezdicku=0; // 12.8.2010 return(0); if(Buffer_DTMF_dekoder == '#') posledni_znak_z_DTMF_byl_mrizka=1; } else {//jde o 2. 3. 4. ..... znak z DTMF dekoderu if(('0' <= Buffer_DTMF_dekoder ) && (Buffer_DTMF_dekoder <= '9')) { if(EEPromRead(ADRESA_POCTU_TLF_CISEL)< MAX_POCET_TLF_CISEL) {// 0 az (MAX_POCET_TLF_CISEL - 1) OK, muzeme ukladat if(ADRESA_SPECIALNICH_DAT <= ptr) return(2); //zavazna chyba 9902 Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO EEPromWrite(ptr,Buffer_DTMF_dekoder); ++ptr; posledni_znak_z_DTMF_byl_cifra=1; posledni_znak_z_DTMF_byl_mrizka=0; return(0); } else {//uz je ulozeno MAX_POCET_TLF_CISEL, //to by vedlo k chybe - k vytvoreni dalsiho tlf.cisla //neudelame nic, cekame na ukonceni znakem # //prave prijata cifra bude ztracena posledni_znak_z_DTMF_byl_cifra=0; pozadavek_pockani_5s=1; return(10); //lehka chyba 9910 } } if(Buffer_DTMF_dekoder == '*') { if(posledni_znak_z_DTMF_byl_mrizka) { ATH0_CR_LF(); //(ukončení hovoru) pozadavek_konce_zadavani_tlf_cisel = 1; return(0); } if(posledni_znak_z_DTMF_byl_cifra) {//touto '*' je pozadovano smazani posledni cifry //jednodussi nez fyzicky smazat cifru v EEPROM //je dekrementovat ukazovatko posledni_znak_z_DTMF_byl_cifra = 0; if(ptr) --ptr; else {//ptr je uz 0, nelze dekrementovat !!! return(4); //zavazna chyba 9904 } } else {//chce doplnit dalsi tlf.cisla (az do poctu MAX_POCET_TLF_CISEL) if(EEPromRead(ADRESA_POCTU_TLF_CISEL)< MAX_POCET_TLF_CISEL) {// 0 az (MAX_POCET_TLF_CISEL - 1) OK ; } else {// MAX_POCET_TLF_CISEL az 255, //to by vedlo k chybe - k vytvoreni tlf.cisla mimo rozsah. //Neudelame nic, cekame na ukonceni znakem # return(11); //lehka chyba 9911 } } 79 80 FEI Vysoká škola báňská – Technická univerzita Ostrava posledni_znak_z_DTMF_byl_mrizka=0; } if(Buffer_DTMF_dekoder == '#') {posledni_znak_z_DTMF_byl_mrizka=1; if(ADRESA_SPECIALNICH_DAT <= ptr) return(3); //zavazna chyba 9903 if(!ptr) return(5); //zavazna chyba 9905 if(ptr && (!(EEPromRead(ptr-1)))) {//Pokud je ptr != 0 a predchozi znak je \0 //Pokud bychom i ted do EEPROM zapsali nulu, //tak by tam byly dve nuly za sebou. return(12); //lehka chyba 9912 } EEPromWrite(ptr,0x00); //ukoncovaci nula ASCII retezce ++ptr; for(tempuint=10000; --tempuint; ) //pauza po zapisu asm("CLRWDT"); tempuchar=EEPromRead(ADRESA_POCTU_TLF_CISEL); ++tempuchar; EEPromWrite(ADRESA_POCTU_TLF_CISEL,tempuchar); for(tempuint=10000; --tempuint; ) //pauza po zapisu asm("CLRWDT"); return(0); } } return(0); } //Argument by mel byt 1-89 !!! //Pokud je argument 1-9 tak VE FCI UVIZNE NAVEKY !!! //Pokud je argument 10-89 tak se z fce vrati //Na displeji zobrazi 99xx, kde xx je kod chyby v rozmezi 1-89 /* Uz pouzita cisla chyb : zavazne chyby : 9901 9902 9903 9904 9905 9909 lehke chyby : 9910 9911 9912 9913 9989 */ void zpracuj_chybu_9901_9989(unsigned char cislo_chyby) { unsigned char parametr_uchar; unsigned int parametr_uint=0; LEDcerv = LEDzel = 0; if(cislo_chyby==0) return; if(89 < cislo_chyby) {// bmb 90-255 coz je nepripustny argument LEDcerv=1; zobraz_uint(9989); return; } Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO if(cislo_chyby < 10) {//zavazna chyba 1-9 GIE=PEIE=0; zobraz_uint(9900+cislo_chyby); while(1) {// blika LED_cervena tolikrat, podle cisla chyby for( ; --parametr_uint; ) //pauza asm("CLRWDT"); for( ; --parametr_uint; ) asm("CLRWDT"); for( ; --parametr_uint; ) asm("CLRWDT"); for( ; --parametr_uint; ) asm("CLRWDT"); for( ; --parametr_uint; ) asm("CLRWDT"); for(parametr_uchar=cislo_chyby; parametr_uchar; --parametr_uchar) { LEDcerv = 1; for( ; --parametr_uint; ) asm("CLRWDT"); LEDcerv = 0; for( ; --parametr_uint; ) asm("CLRWDT"); } } } else {//lehka chyba 10-89 LEDcerv = 1; zobraz_uint(9900+cislo_chyby); LEDcerv = 0; } } void podmineny_Reset(void) { if(pozadavek_Reset) {pozadavek_Reset = 0; GIE=PEIE=0; if(vysilani) ATH0_CR_LF(); //zavesi, ukonci spojeni indikacni_bajt = IB___0xA5; while(1) //nahrazuje goto start_hl_prgmu; { ; //WDT pretece a zpusobi Reset LEDcerv=!LEDcerv; LEDzel=!LEDzel; indikacni_bit = !indikacni_bit; } } } 81 82 FEI Vysoká škola báňská – Technická univerzita Ostrava // *** Vyhodnoceni periody impulsu NETLIGHT *** // Z teto fce se vrati az tehdy, kdyz vyhodnoti spravnou periodu, kratke impulsy do L //ad4 testuj jestli přicházejí impulsy NETLIGHT // ( L=64 ms, spravna perioda 3000 až 4500 ms ) //ad5 pokud nejsou tak čekej (SIM300D ještě není přihlášen k GSM síti) void Vyhodnoceni_periody_impulsu_NETLIGHT(void) { unsigned int temp_uint; //ciha na sestupnou hranu while(!signal_NETLIGHT) //pokud je L tak cykli na miste asm("CLRWDT"); while(signal_NETLIGHT) //pokud je H tak cykli na miste asm("CLRWDT"); //v signalu NETLIGHT prave doslo k sestupne hrane, signal je L do{//Zmerime periodu signalu NETLIGHT, mela by byt 3000-4500 ms = 300-450setin //Merime ji mezi sestupnymi hranami. V tomto miste prgmu periodu //budeme schvalne jeste vyhodnocovat s pouzitim promenne "ps" ! asm("CLRWDT"); // pozn. NETLIGHT_LADUNG je 500[setin vteriny] ........ 5[sekund] //cykluje pri signal_NETLIGHT == L for(set_ps(NETLIGHT_LADUNG); ps&&(!signal_NETLIGHT); ) asm("CLRWDT"); //pokud je perioda v norme tak ps != 0 a signal_NETLIGHT==H for(;ps&& signal_NETLIGHT; )//cykluje pri signal_NETLIGHT==H asm("CLRWDT"); //pokud je perioda v norme tak ps != 0 a signal_NETLIGHT==L TMR1ON=0; temp_uint = ps; TMR1ON=1; } while((temp_uint < 45) || (210 < temp_uint)); //opakuj je-li mimo pripustny interval stary_vzorek_NETLIGHT = 0; // perioda signalu NETLIGHT (konecne) v toleranci ps_perioda_NETLIGHT = NETLIGHT_LADUNG; hlidani_periody_NETLIGHT=1; } void cnutl2(void) //ceka na uvolneni tl2, pritom rychle stridave blika obema LEDkami. { unsigned char temp_uchar; unsigned int temp_uint; for(temp_uint=0b0000010000000000,temp_uchar=0; --temp_uchar; asm("CLRWDT")) { if(tl2_stlaceno) temp_uchar=0; //znovunaladovani if(blikani_LEDkami) { LEDzel = ((temp_uint++)&0b0000010000000000)?1:0; LEDcerv =!LEDzel; } } zjisteno_stlaceni_TL2=0; if(blikani_LEDkami) {blikani_LEDkami=0; LEDzel=LEDcerv=0; } } Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO void probuzeni_modulu_SIM300D(void)// pozn. PWRKEY by mel byt L {if(uspani_SIM300D) {//vzbudime SIM300D - dame PWRKEY H/1s?0,5s? L/1s H/4s a trvale do L PWRKEY=1; for(set_ps(50); ps; ) // 0,5s do H {asm("CLRWDT"); if(tl1_stlaceno) LEDzel=1; } PWRKEY=0; for(set_ps(100); ps; asm("CLRWDT")) // 1s do L {if(tl1_stlaceno) LEDzel=1; } PWRKEY=1; for(set_ps(400); ps; asm("CLRWDT")) // 4s do H {if(tl1_stlaceno) LEDzel=1; } PWRKEY=0; uspani_SIM300D=0; } } void uspani_modulu_SIM300D(void) { if(!uspani_SIM300D) {hlidani_periody_NETLIGHT=0; vysli_bajt_do_RS232('A'); vysli_bajt_do_RS232('T'); vysli_bajt_do_RS232('+'); vysli_bajt_do_RS232('C'); vysli_bajt_do_RS232('P'); vysli_bajt_do_RS232('O'); vysli_bajt_do_RS232('W'); vysli_bajt_do_RS232('D'); vysli_bajt_do_RS232('='); vysli_bajt_do_RS232('1'); vysli_bajt_do_RS232___CR_LF(); uspani_SIM300D=1; } } unsigned char spocitej_1(unsigned char argument) //spocita jednicky v bajtu { unsigned char rotating_1=0b00000001; unsigned char returned_value=0; for( ; rotating_1; rotating_1<<=1) if(rotating_1 & argument) ++returned_value; return(returned_value); } 83 84 FEI Vysoká škola báňská – Technická univerzita Ostrava //------------------------------------------- servisni rutina preruseni --------------------------void interrupt Preruseni(void) { if(tl1_stlaceno) zjisteno_stlaceni_TL1=1; if(INTF) { INTF=0; novy_bajt_z_DTMF_dekoderu = 1; Buffer_DTMF_dekoder = PORTA&0b00011110; Buffer_DTMF_dekoder >>= 1; } if(TMR1IF&&TMR1IE) {// CT1 preteka kazdych 0,01s if(ps) --ps; if(hlidani_periody_NETLIGHT && ps_perioda_NETLIGHT) { if(!(--ps_perioda_NETLIGHT)) { pozadavek_Reset=1; //havarie periody impulsu NETLIGHT !!! } //test zda doslo k sestupne hrane if((stary_vzorek_NETLIGHT==1) && (signal_NETLIGHT==0)) {// doslo k sestupne hrane if((ps_perioda_NETLIGHT < 50) || (300 < ps_perioda_NETLIGHT)) {//havarie periody impulsu NETLIGHT !!! pozadavek_Reset=1; } else {//OK perioda v toleranci ps_perioda_NETLIGHT = NETLIGHT_LADUNG; } } stary_vzorek_NETLIGHT = signal_NETLIGHT; } TMR1H = 0xDC; TMR1IF=0; } if(RBIF && RBIE) {RBIE=0; //PORTB je nutno precist, aby v proc, pominul stav "zjistena zmena na PORTB" !!! hodnota_z_PORTB = PORTB; zmena_v_signalu_probuzeni=1; RBIF=0; } Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO if(RCIF) // Přerušení od příjmu USARTu { Buffer_RS232=RCREG; //timto ctenim registru RCREG se nuluje bit RCIF novy_bajt_z_RS232=1; } } //koncova zavorka obsl. rutiny preruseni main() // ||||||||||||||||||||||||||||||||||||||||||||||||| hlavni program ||||||||||||||||||||||||||||||||||||||||||||||||| {unsigned char index_tlf_cisla; // rozmezi 0 az (MAX_POCET_TLF_CISEL-1) unsigned char pocitadlo_uchar, romuchar, xomuchar, indikatory_dovolani, rot_bajt; unsigned int pomuint, romuint; start_hl_prgmu: TRISB = 0b00010111; TRISC = 0b10000110; TRISA = 0b11011111; PWRKEY=0; ADCON0=0b10000000; ADCON1=0b11001110; OPTION_REG &= 0b01111111; //RBPU=0 na RB vstupech zapnout pull-upy INTEDG=1; // bude reagovat na vzest. hr.na RB0 od DTMF dekoderu HT9170B TXSTA=0x00; // Asynchronní mód, Low speed(bit BRGH je 0) SPBRG=5; // Nastavení generátoru na 9600Bd @ 3686400Hz TXEN=1; // Zapnutí vysílání, SFR TXSTA RCIE=1; // Povolit přerušení od Rx // Bank0 RCSTA=0x90; // SPEN=1 Zapnutí modulu USART CREN=1 Zapnutí příjmu RBIF=0; RCIF=0; //Nastaveni CT1 tak, aby pretekal s per. 0,01s pri F_OSC=3686400Hz TMR1H = 0xDC; //prednastaveni DC00 tj. 56320 TMR1L = 0x00; TMR1ON=1; //SFR T1CON //RBIE...PORTB change Interrupt Enable bit (na RB4 je jazyckovy kontakt) //INTE...RB0/INT External Interrupt Enable bit (na RB0 signal z DTMF dekoderu) GIE=PEIE=RBIE=INTE=TMR1IE=1; //povoleni preruseni klakson = 0; cihani_na_prvni_znak_z_DTMF = 1; PS2=1; //delici pomer Prescaleru pro WDT, Option reg. PS1=PS0=0; // for(clk_M5450 = 0,romuchar=5; romuchar--; ) // --------------- zhasnuti displeje asm("CLRWDT"); for(d_M5450 = 0,romuchar=5; romuchar--; ) asm("CLRWDT"); start_M5450(); for(romuchar=40; --romuchar; ) clkimp_M5450(); //ve fci se mj. dela i asm("CLRWDT"); 85 86 FEI Vysoká škola báňská – Technická univerzita Ostrava switch(indikacni_bajt) // při rozjezdu zobrazi udaj o typu Resetu { default: //rozjezd po Resetu od nahozeni Ucc zobraz_uint(870); indikacni_bajt = IB___0xA3; dosavadni_stav = STAV_NEHLIDANI; //PWRKEY by mel byt L. Dame ho na 4s do H. PWRKEY=1; for(set_ps(400); ps; ) asm("CLRWDT"); PWRKEY=0; uspani_SIM300D=0; break; case IB___0xA3: //Reset od ICD, ev. odpojeni ICD, kolisani Ucc apod. zobraz_uint(873); break; case IB___0xA5: // Reset vyvolany tim, ze se ve fci podmineny_Reset() zobraz_uint(875); // nechal schvalne pretect WDT break; } for(set_ps(100); ps; ) asm("CLRWDT"); // Osetreni hodnoty "pocet_telefonnich_cisel" v EEPROM // a nastaveni "ptr" tesne za posledni ulozene tlf. cislo romuchar = EEPromRead(ADRESA_POCTU_TLF_CISEL); //pocitadlo tlf.cisel zobraz_uint(400+romuchar); // zobrazeni poctu tlf.cisel if(MAX_POCET_TLF_CISEL < romuchar) // hodnota v EEPROM je MAX_POCET_TLF_CISEL+1 az 255 EEPromWrite(ADRESA_POCTU_TLF_CISEL,romuchar=0x00); pocitadlo_uchar = romuchar; for(ptr = 0x00; romuchar--; ) { // romuchar (tj. hodnota v EEPROM) je 1 az MAX_POCET_TLF_CISEL // Nastaveni ptr tak, aby ukazoval na prvni volny bajt za ulozenymi tlf cisly. // Predp. - kazde ulozene tlf cislo je ukonceno \0 !!! do{asm("CLRWDT"); if(ADRESA_SPECIALNICH_DAT == ptr) {EEPromWrite(ADRESA_POCTU_TLF_CISEL,pocitadlo_ucharromuchar); zpracuj_chybu_9901_9989(9); //9909 ve fci uvizne!!! } xomuchar = EEPromRead(ptr); ++ptr; } while(xomuchar); //xomuchar je == 0, jde o ukoncovaci nulu retezce v jazyku C } asm("CLRWDT"); Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO if(uspani_SIM300D) { probuzeni_modulu_SIM300D(); zobraz_uint(26); } else zobraz_uint(25); //PWRKEY by mel byt L Vyhodnoceni_periody_impulsu_NETLIGHT(); ad6: //ad6 když už maji impulsy NETLIGHT periodu OK, //tak nekolikrat pošli AT CR LF (autobaud) a posli ATE0 CR LF (vypni echo) //pak pockej 100ms, a posli ATV0 CR LF zobraz_uint(6); for(romuchar=4; romuchar--; ) //provedeme 4x { pauza_100ms(); AT_CR_LF(); } if(tl2_stlaceno) goto reseni_servisniho_pozadavku; klidovy_stav___nehlidani: // -------------------------------------------------dosavadni_stav = STAV_NEHLIDANI; hlidani_periody_NETLIGHT=0; LEDcerv=0; for(pomuint=0b0010000000000000,romuint=1000; romuint--; ) //ceka na uvolneni tl1 { asm("CLRWDT"); LEDzel = ((pomuint++)&0b0010000000000000)?1:0; if(tl1_stlaceno) romuint=1000; //znovunaladovani } zjisteno_stlaceni_TL1=0; if(!uspani_SIM300D) zobraz_uint(110); else zobraz_uint(111); //pokud SIM300D neni uspan, tak tu jsou videt impulsy NETLIGHT pomuint=0b0010000000000000; set_ps(1500); //15s for( ; ps && (dosavadni_stav == STAV_NEHLIDANI); ) {asm("CLRWDT"); LEDzel = ((pomuint++)&0b0010000000000000)?1:0; if(tl1_stlaceno) dosavadni_stav = STAV_PRECHOD_DO_HLIDANI; } uspani_SIM300D=0; //to aby v nasledujici fci doslo k uspani uspani_modulu_SIM300D(); 87 88 FEI Vysoká škola báňská – Technická univerzita Ostrava for( romuint=1000; romuint--; ) { asm("CLRWDT"); LEDzel = ((pomuint++)&0b0010000000000000)?1:0; if(tl1_stlaceno) romuint=1000; //znovunaladovani } zjisteno_stlaceni_TL1=0; zobraz_uint(10); //usek programu c. 10 tj. STAV_NEHLIDANI while(dosavadni_stav == STAV_NEHLIDANI) // ------------------------------------------------{RBIE=0; sleep_mod___nehlidani: hodnota_z_PORTB = PORTB;//precte PORTB hlidani_periody_NETLIGHT=0; asm("SLEEP"); // Přejde do sleep režimu probuzeni_nehlidani: // WDT pretekl a probudil procesor asm("NOP"); hodnota_z_PORTB = PORTB;//precte PORTB if(tl2_stlaceno) dosavadni_stav=STAV_SERVIS; else {// tl2 stlaceno neni if(tl1_stlaceno) {LEDzel=0; //blikani cervenou a prechod do hlidani for(pomuint=0b0010000000000000,romuint=1000; romuint--; ) { asm("CLRWDT"); LEDcerv = ((pomuint++)&0b0010000000000000)?1:0; if(tl1_stlaceno) romuint=1000; //znovunaladovani } zjisteno_stlaceni_TL1=0; dosavadni_stav = STAV_PRECHOD_DO_HLIDANI; } else {LEDzel = !LEDzel; // tl1_stlaceno není zustava v klidovem stavu nehlidani LEDcerv=0; } } } if(dosavadni_stav==STAV_SERVIS) goto reseni_servisniho_pozadavku; else //by melo byt dosavadni_stav==STAV_PRECHOD_DO_HLIDANI goto prechod_do_hlidani; prechod_do_hlidani: zobraz_uint(15); RBIE = RBIF = 0; LEDzel=0; // --------------------------------------------------------------- Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO for(pomuint=0b0010000000000000,romuint=1000; romuint--; ) {asm("CLRWDT"); LEDcerv = ((pomuint++)&0b0010000000000000)?1:0; if(tl1_stlaceno) romuint=1000; //znovunaladovani } zjisteno_stlaceni_TL1=0; for(set_ps(DOBA_PRECHODU_DO_HLIDANI); ps&&(!tl1_stlaceno); ) {asm("CLRWDT"); LEDcerv = ((pomuint++)&0b0010000000000000)?1:0; if(jazyckovy_kontakt___aktivni) set_ps(DOBA_PRECHODU_DO_HLIDANI); //znovunaladovani } if(ps) {LEDcerv = 0; //doslo k stlaceni tl1 LEDzel = 1; goto klidovy_stav___nehlidani; } else goto stav_hlidani; //uplynula DOBA_PRECHODU_DO_HLIDANI zacneme hlidat stav_hlidani: // ---------------------------------------------------------------------------dosavadni_stav=STAV_HLIDANI; zobraz_uint(16); uspani_modulu_SIM300D(); while(dosavadni_stav == STAV_HLIDANI) {LEDzel = LEDcerv = 0; RBIE=0; sleep_mod___hlidani: zmena_v_signalu_probuzeni=0; GIE=PEIE=1; hodnota_z_PORTB = PORTB;//precte PORTB RBIF=0; // Vynuluj příznak přerušení RBIE=1; hlidani_periody_NETLIGHT=0; asm("SLEEP"); // Přejde do sleep režimu probuzeni___hlidani: // Probuzeni od zmeny na RB7-RB4 anebo WDT asm("NOP"); //probudil se na zaklade // - WDT preteceni , v tomto pripade se NEROZJEL od adr 0000, // ale od instrukce nasledujici za instrukci SLEEP // - Zmeny RB7-RB4 a provedl i obsl. pprgm preruseni if(zmena_v_signalu_probuzeni) {//probudil se od Zmeny RB7-RB4, od alarm. senzoru na RB4 zmena_v_signalu_probuzeni = 0; dosavadni_stav = STAV_NABEH_ALARMU; } 89 90 FEI Vysoká škola báňská – Technická univerzita Ostrava else {//probudil se od WDT preteceni if(tl1_stlaceno) {LEDzel=1; cekej_na_uvolneni_tl1(); dosavadni_stav = STAV_NEHLIDANI; } } } if(dosavadni_stav == STAV_NABEH_ALARMU) goto nabeh_alarmu; else goto klidovy_stav___nehlidani; nabeh_alarmu: // -------------------------------------------------------------------------------dosavadni_stav = STAV_NABEH_ALARMU; LEDzel=0; LEDcerv=1; zjisteno_stlaceni_TL1=0; if(uspani_SIM300D) { zobraz_uint(44); probuzeni_modulu_SIM300D(); Vyhodnoceni_periody_impulsu_NETLIGHT(); } else zobraz_uint(30); if(zjisteno_stlaceni_TL1) { LEDcerv=0; zobraz_uint(45); pauza_500ms(); goto zastaveni_nabehu_alarmu; } zobraz_uint(50); //imp. NETLIGHT maji spravnou periodu, tak nekolikrat pošli AT CR LF (autobaud) //a posli ATE0 CR LF (vypni echo) pockej 100ms, posli ATV0 CR LF for(romuchar=4; romuchar--; ) // autobaud provedeme 4x { pauza_100ms(); AT_CR_LF(); if(tl1_stlaceno) {pombit=LEDzel=1;} } pauza_100ms(); ATE0_CR_LF(); //vypni echo zobraz_uint(60); //samotny nabeh alarmu ---------------------------------------------------------for(set_ps(4500); ps && (!tl1_stlaceno); ) asm("CLRWDT"); if(ps) goto zastaveni_nabehu_alarmu; else goto alarm; //spustime alarm Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO zastaveni_nabehu_alarmu: //--------------------------------------------------------------//doslo k zazehnani alarmu stlacenim tl1 zobraz_uint(70); LEDcerv=0; LEDzel=1; cekej_na_uvolneni_tl1(); pauza_500ms(); dosavadni_stav = STAV_NEHLIDANI; goto klidovy_stav___nehlidani; alarm: // ----------------------------------------------------------------------------zobraz_uint(80); klakson = 1; dosavadni_stav = STAV_ALARM; //ZACATEK *** Volani na ulozena tlf. cisla *** Volani na ulozena tlf. cisla *** ad17: // ad17 - Volani na ulozena telefonni cisla zobraz_uint(17); pauza_500ms(); //ad17 testuj proměnnou v EEprom zda je v rozsahu 1 až MAX_POCET_TLF_CISEL, // pokud není tak konec a vypni se (není nic uloženo) romuchar=EEPromRead(ADRESA_POCTU_TLF_CISEL); if((!romuchar) || (MAX_POCET_TLF_CISEL<romuchar)) goto alarm_vyhodnoceni_tl1; //romuchar je OK, je 1 az MAX_POCET_TLF_CISEL //ad18 tak pošli 4x AT CR LF s pauzami 100 ms a pošli ATE0 CR LF (vypne echo) for(xomuchar=4; xomuchar; --xomuchar) { AT_CR_LF for( ps=10; ps; ) asm("CLRWDT"); } //ad19 počkej 100 ms, pošli ATE0 CR LF(vypne echo), počkej 100 ms //a pošli ATV0 (odpovídá číselnými hláškami). zobraz_uint(19); pauza_100ms(); ATE0_CR_LF(); // ECHO OFF pauza_100ms(); ATV0_CR_LF(); //odpovídá číselnými hláškami zobraz_uint(20); // ad20 Pockat 100 ms (během nichž posílá OK nebo 0) pauza_100ms(); // Pošli ATS0=0 (nebudou přijímány žádné hovory) vysli_bajt_do_RS232('A'); // (Set number of rings before automatically answering vysli_bajt_do_RS232('T'); // the call) vysli_bajt_do_RS232('S'); vysli_bajt_do_RS232('0'); vysli_bajt_do_RS232('='); vysli_bajt_do_RS232('0'); vysli_bajt_do_RS232___CR_LF(); 91 92 FEI Vysoká škola báňská – Technická univerzita Ostrava zobraz_uint(22); // ad22 Pockat 100 ms (behem nichž posila OK nebo 0) pauza_100ms(); // pošli AT+COLP=1 (dostanu odpověď od volaného) vysli_bajt_do_RS232('A'); // AT+COLP.....Connected Line identification Presentation vysli_bajt_do_RS232('T'); // Odpověd na tento AT příkaz je identifikace-provede se vysli_bajt_do_RS232('+'); // tim, že z telefonní sítě je dodáno tlf.číslo volajícího. vysli_bajt_do_RS232('C'); // Tato odpověď vypadá typicky takto : vysli_bajt_do_RS232('O'); // COLP: "+420603273951",145 CR LF 0 CR vysli_bajt_do_RS232('L'); // pozn. ASCII 0 před koncovým CR je důsledek toho, vysli_bajt_do_RS232('P'); // že jsme příkazem ATV0 CR LF nastavili číselné odpovědi. vysli_bajt_do_RS232('='); // Tato 0 znamená OK, vše je v pořádku. vysli_bajt_do_RS232('1'); vysli_bajt_do_RS232___CR_LF(); ad24: //ad24 odpočítávej dobu CAS_LIMIT(délku prodlevy vyzkoušíme) // a během teto doby testuj zda poslal potvrzovaci 0 CR LF // (RS232 - řetězec znaků). Tato 0 znamena, ze vse je OK. // Pokud posle nenulovou hodnotu, tak to není OK. // Potvrzovaci 0 je součásti retezce, (je za znakem LF) : // COLP: "+420603495954",145 CR LF 0 CR // Může přijít i tohle: LF 3 CR zobraz_uint(24); vysilani=1; zjisteno_stlaceni_TL1=0; indikatory_dovolani=0; rombit=1; //pri 1 se masinerie opakuje, pri 0 se s masineriemi skonci romuchar=EEPromRead(ADRESA_POCTU_TLF_CISEL); // 1 az 8 for(pomuchar=100; rombit&&pomuchar;--pomuchar)//pomuchar...pocitadlo masinerii {asm("CLRWDT"); spocitej_1(indikatory_dovolani)) rot_bajt=0b00000001; index_tlf_cisla = 0; //pohybuje se v rozm. 0 az (MAX_POCET_TLF_CISEL-1) while((index_tlf_cisla < romuchar) && rombit && (!zjisteno_stlaceni_TL1)) {asm("CLRWDT"); zobraz_uint(8000+indikatory_dovolani); if(!(indikatory_dovolani & rot_bajt)) //na tlf.cislo s danym indexem se {podmineny_Reset(); //zatim nedovolal, zkusime to nyni posli_tlf_cislo_z_EEPROM(index_tlf_cisla); //volej_dalsi_cislo indikacni_bit = !indikacni_bit; for( set_ps(100); ps; ) //pauza 1s { asm("CLRWDT"); podmineny_Reset(); } novy_bajt_z_RS232=0; zobraz_uint(123); ukonci_tento_cyklus = 0; novy_bajt_z_RS232=0; Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO 93 for( set_ps(CAS_LIMIT); ps && (!ukonci_tento_cyklus); asm("CLRWDT")) // cekani na '+' {if(novy_bajt_z_RS232) // konkretne prislo {novy_bajt_z_RS232=0; //+COLP: "603495754",129 CR LF if(Buffer_RS232 == '+') // '+' tj. 0x2B ukonci_tento_cyklus = 1; } podmineny_Reset(); } zobraz_uint(112); if(!ukonci_tento_cyklus) goto ad28; ukonci_tento_cyklus = 0; //………. '+' prislo, bezi zbytek z casoveho useku CAS_LIMIT novy_bajt_z_RS232=0; //cekani na uvozovky for( ; ps && (!ukonci_tento_cyklus); ) {asm("CLRWDT"); if(novy_bajt_z_RS232) {novy_bajt_z_RS232=0; //+COLP: "603495754",129 CR LF if(Buffer_RS232 == '"') // " uvozovky tj. 0x22 ukonci_tento_cyklus = 1; } podmineny_Reset(); } if(!ukonci_tento_cyklus) goto ad28; //………………….. " tj. uvozovky prislo ukonci_tento_cyklus = 0; //….." tj. uvozovky prislo,bezi zbytek z cas. useku CAS_LIMIT novy_bajt_z_RS232=0; for( ; ps && (!ukonci_tento_cyklus); ) //cekani na '0' {asm("CLRWDT"); if(novy_bajt_z_RS232) {novy_bajt_z_RS232=0;//+COLP: "603495754",129 CR LF 3 CR LF if(Buffer_RS232 == '0') ukonci_tento_cyklus = 1; } podmineny_Reset(); } if(!ukonci_tento_cyklus) goto ad28; // ………………. '0' prislo pozn. bezi zbytek z casoveho useku CAS_LIMIT indikacni_bit = !indikacni_bit; for(ukonci_tento_cyklus = 0,novy_bajt_z_RS232=0; ps && (!ukonci_tento_cyklus); ) {asm("CLRWDT"); if(novy_bajt_z_RS232) //cekani na CARRIAGE RETURN {novy_bajt_z_RS232=0; if(Buffer_RS232 == CARRIAGE_RETURN) ukonci_tento_cyklus = 1; } podmineny_Reset(); } 94 FEI Vysoká škola báňská – Technická univerzita Ostrava if(!ukonci_tento_cyklus) goto ad28; //……………………CARRIAGE_RETURN prislo pauza_100ms(); //behem teto pauzy mozna prijde LINE_FEED indikacni_bit = !indikacni_bit; ukonci_tento_cyklus = 0; for( set_ps(500); ps && (!ukonci_tento_cyklus); asm("CLRWDT")) {if(novy_bajt_z_RS232) //cekani na '3' {novy_bajt_z_RS232=0; if(Buffer_RS232 == '3') ukonci_tento_cyklus = 1; } podmineny_Reset(); } zobraz_uint(7000+xomuchar); //pokud vse probehlo OK tak zobrazi 7003 for( set_ps(200); ps; asm("CLRWDT")) //pauza 2s podmineny_Reset(); ad28: //ad28 pošli ATH0 CR LF (ukončení hovoru) ATH0_CR_LF(); if(ukonci_tento_cyklus) {indikatory_dovolani |= rot_bajt; //'3' prislo, dovolal se, tim se prijalo vse if(MIN_POCET_DOVOLANYCH_TLF_CISEL<=spocitej_1(indikatory_dovolani)) rombit=0; } ++index_tlf_cisla; //zaverecna rezie cyklu while rot_bajt <<= 1; // } if(!rombit) //rombit==0...dovolal se na MIN_POCET_DOVOLANYCH_TLF_CISEL uspani_modulu_SIM300D(); else { LEDcerv=LEDzel=1; //nedovolal se na MIN_POCET_DOVOLANYCH_TLF_CISEL for(zobraz_uint(7400), set_ps(60000); ps && (!zjisteno_stlaceni_TL1); ) //pauza 600s {asm("CLRWDT"); if(tl1_stlaceno || zjisteno_stlaceni_TL1) {zjisteno_stlaceni_TL1=1; rombit=0; dosavadni_stav = STAV_PRECHOD_DO_HLIDANI; } } LEDcerv=LEDzel=0; zobraz_uint(7500); } } //zaverecna zavorka cyklu for //KONEC *** Volani na ulozena tlf. cisla KONEC *** Volani na ulozena tlf. cisla Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO vysilani=0; //Sem se dostane ze dvou moznych pricin : // -dovolal se na nejmene MIN_POCET_DOVOLANYCH_TLF_CISEL // -stlacilo se skryte tl. tl1 alarm_vyhodnoceni_tl1: zobraz_uint(7600); while(dosavadni_stav == STAV_ALARM) {asm("CLRWDT"); if(tl1_stlaceno || zjisteno_stlaceni_TL1) dosavadni_stav = STAV_PRECHOD_DO_HLIDANI; } zjisteno_stlaceni_TL1=0; klakson = 0; goto prechod_do_hlidani; reseni_servisniho_pozadavku: // ------------------------------------------------------------dosavadni_stav=STAV_SERVIS; zobraz_uint(500); blikani_LEDkami=1; cnutl2(); //ceka na uvolneni tl2, pritom rychle stridave blika obema LEDkami //tl2 je uvolneno //zadavani cisla servisni operace, pocitani jednotlivych stlaceni for(servisni_bajt = 0,set_ps(6000); ps; ) {asm("CLRWDT"); if(tl2_stlaceno) {LEDzel=LEDcerv=1; ++servisni_bajt; zobraz_uint(500+servisni_bajt); cekej_na_uvolneni_tl2(); LEDzel=LEDcerv=0; set_ps(500); //znovunaladovani } } //konec zadavani cisla servisni operace, parkrat blikneme LEDkami LEDzel=0; LEDcerv=1; for(set_ps(20),xomuchar=10; xomuchar; ) {asm("CLRWDT"); if(!ps) {--xomuchar; //ps kleslo na 0 set_ps(20); //znovunaladovani LEDzel=!LEDzel; LEDcerv=!LEDcerv; } } LEDzel=LEDcerv=0; 95 96 FEI Vysoká škola báňská – Technická univerzita Ostrava switch(servisni_bajt) {case 0: break; case 1: //nedoslo k volbe zadne servisni operace //cinnost 1 - Zadavani tlf. cisel do EEPROM pomoci mobilu, // ukládání tel. čísel na ktera se bude volat //cinnost 1 cinnost 1 cinnost 1 cinnost 1 cinnost 1 cinnost 1 if(uspani_SIM300D) { zobraz_uint(321); probuzeni_modulu_SIM300D(); for(set_ps(1000); ps; ) asm("CLRWDT"); Vyhodnoceni_periody_impulsu_NETLIGHT(); } else zobraz_uint(322); pauza_100ms(); pauza_100ms(); pauza_100ms(); ad7: // Pošli ATS0=3 CR LF.....po 3. zvonění se příjme hovor (obsahem zobraz_uint(107);// hovoru bude ukládání tel. čísel na ktera se bude volat) for(romuchar=4; romuchar--; ) //provedeme 4x { AT_CR_LF(); //AutoBaud pauza_100ms(); } vysli_bajt_do_RS232('A'); vysli_bajt_do_RS232('T'); vysli_bajt_do_RS232('S'); vysli_bajt_do_RS232('0'); vysli_bajt_do_RS232('='); vysli_bajt_do_RS232('3'); vysli_bajt_do_RS232___CR_LF(); pauza_100ms(); ATV0_CR_LF(); //SIM300D bude odpovidat ciselne(a ne textove) set_ps(18000); //cihani na vzest.hranu RI, limit 180s while(signal_RI && ps) //cykluje pri H {asm("CLRWDT"); podmineny_Reset(); } while((!signal_RI) && ps) //cykluje pri L {asm("CLRWDT"); podmineny_Reset(); } if(!ps) //ps==0…….maler - ubehlo 180s !!! vzestupna hrana RI vubec nedosla {ATH0_CR_LF(); //zavesi, ukonceni hovoru uspani_modulu_SIM300D(); goto konec_cinnost_1; } Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO //prave doslo k vzestupne hrane signal_RI je H while(signal_RI) //cykluje pri H {asm("CLRWDT"); podmineny_Reset(); } // signal_RI je L prave doslo k sestupne hrane cihani_na_prvni_znak_z_DTMF=1; if(MAX_POCET_TLF_CISEL <= EEPromRead(ADRESA_POCTU_TLF_CISEL)) poz_cekani_5s_na_hvezdicku = 1; else poz_cekani_5s_na_hvezdicku = 0; if(poz_cekani_5s_na_hvezdicku) {//Vystrazne blikani - 8x blikneme LEDcerv - indikace toho, ze uz je //ulozeno MAX_POCET_TLF_CISEL for(LEDzel=LEDcerv=0,romuchar=3; romuchar--; ) // 3x { for(xomuchar=8; xomuchar; --xomuchar) { pauza_500ms(); LEDcerv=1; pauza_500ms(); LEDcerv=0; } for( set_ps(300); ps; ) //pauza 3s asm("CLRWDT"); } } romuchar=0; while(!romuchar) //puv while(1) {asm("CLRWDT"); if(poz_cekani_5s_na_hvezdicku) {for(set_ps(500); poz_cekani_5s_na_hvezdicku && ps; ) {asm("CLRWDT"); podmineny_Reset(); if(novy_bajt_z_DTMF_dekoderu) {if(xomuchar = zpracuj_znak_z_DTMF()) //je nejaka chyba. Pokud je zavazna, tak se z fce nevrati!!! zpracuj_chybu_9901_9989(xomuchar); } } if(poz_cekani_5s_na_hvezdicku) {ATH0_CR_LF(); //behem 5s se znaku '*' nedockal, zavesi - zrusi spojeni romuchar=4; } } podmineny_Reset(); if(novy_bajt_z_RS232) {novy_bajt_z_RS232=0; if(Buffer_RS232=='3') {ATH0_CR_LF(); //zavesi, ukonceni hovoru pozadavek_konce_zadavani_tlf_cisel = 1; } } 97 98 FEI Vysoká škola báňská – Technická univerzita Ostrava if(novy_bajt_z_DTMF_dekoderu) {if(xomuchar = zpracuj_znak_z_DTMF()) //je nejaka chyba. Pokud je zavazna, tak se z fce nevrati!!! zpracuj_chybu_9901_9989(xomuchar); } if(pozadavek_konce_zadavani_tlf_cisel) {pozadavek_konce_zadavani_tlf_cisel = 0; romuchar=1; } if(pozadavek_pockani_5s && (!romuchar)) {//tento pozadavek vznika ve fci zpracuj_znak_z_DTMF() pri pokusu zapsat //tlf.cislo ktere uz je mimo MAX_POCET_TLF_CISEL(zadala se jeho prvni cifra) pozadavek_pockani_5s=0; Buffer_DTMF_dekoder = 0; //pocka 5s for(set_ps(500); ps&&(Buffer_DTMF_dekoder!= DTMF_KOD_MRIZKA); ) {asm("CLRWDT"); podmineny_Reset(); } if(Buffer_DTMF_dekoder == DTMF_KOD_MRIZKA) {// DTMF_KOD_MRIZKA behem 5s prislo for( ; ps && (Buffer_DTMF_dekoder != DTMF_KOD_HVEZDICKA); ) {asm("CLRWDT"); podmineny_Reset(); } if(!ps) {// DTMF_KOD_HVEZDICKA behem 5s neprislo ATH0_CR_LF(); //uplynulo 5s zrusime spojeni romuchar=3; } else {// DTMF_KOD_HVEZDICKA behem 5s prislo // Behem 5s prisel # a pak * Smazeme vse v EEPROM a jedeme znovu ptr=0x00; EEPromWrite(ADRESA_POCTU_TLF_CISEL,0x00); } } else {// DTMF_KOD_MRIZKA behem 5s neprislo ATH0_CR_LF(); //uplynulo 5s zrusime spojeni romuchar=2; } novy_bajt_z_DTMF_dekoderu = 0; } } goto konec_cinnost_1; // romuchar by mel byt 1 ci 2 ci 3 ci 4 konec_cinnost_1: zobraz_uint(9010); break; //cinnost 1 cinnost 1 cinnost 1 cinnost 1 cinnost 1 cinnost 1 Prostředky bezpečnostních systémů pro integrovanou výuku VUT a VŠB-TUO case 2: case 3: default: //cinnost c.2 rezerva do budoucna break; //cinnost c.3 rezerva do budoucna break; //servisni_bajt nabyl nepripustne hodnoty break; } goto klidovy_stav___nehlidani; } 99 100 FEI Vysoká škola báňská – Technická univerzita Ostrava Seznam použité literatury Monografie [1] HAUS, J. Optical Sensors. WILEY-VCH Verlag GmbH & KGaA, 2010. 177 s. ISBN 978-3-527-40860-3. [2] KROHN, D. A. Fiber optic sensors. Instrument Society of America, 1991. 270 s. ISBN 0-55617-010-6. [3] UDD, E. Fiber optic sensors. A WILEY-INTERSCIENCE PUBLICATION, John Wiley & Sons, Inc., 1991. 270 s. ISBN 0-471-83007-0. [4] FENNELLY, L. J. Effective Physical Security. ELSEVIER, 2013. 365 s. ISBN 978-0-12-415892-4. [5] BAKER, P. R.; BENNY, D. J. The Complete Guide to Physical Security. CRC Press, 2013. 339 s. ISBN 978-1-4200-9963-8. [6] DUDÁČEK, A. Automatická detekce požáru. Sdružení požárního a bezpečnostního inženýrství v Ostravě, 2008. 97 s. ISBN 978-80-7385-060-9. [7] LUKÁŠ, L. a kol. Bezpečnostní technologie, systémy a management I. VerBuM, 2011. 316 s. ISBN 978-80-87500-05-7. [8] LUKÁŠ, L. a kol. Bezpečnostní technologie, systémy a management II. VerBuM, 2012. 386 s. ISBN 978-80-87500-19-4. [9] LUKÁŠ, L. a kol. Bezpečnostní technologie, systémy a management III. VerBuM, 2013. 456 s. ISBN 978-80-87500-35-4. Skripta [ 10 ] UHLÁŘ, J. Technická ochrana objektů II. díl – elektrické zabezpečovací systémy. Druhé vydání. Praha: Policejní akademie České republiky v Praze, 2009. 228 s. ISBN 978-80-7251-313-0. Elektronické dokumenty [ 11] LÁTAL, J.; KOUDELKA, P.; HANÁČEK, F. Využití distribuovaných optovláknových systémů při detekci průvanů v jeskynních systémech. In Elektrorevue [online]. Rok 2010, svazek 12, číslo 1. Dostupné na internetu: http://www.elektrorevue.cz. ISSN 1213-1539. [ 12] Katalogový list k procesoru Microchip PIC16F690. Dostupné na internetu: http://ww1.microchip.com/downloads/en/DeviceDoc/41262E.pdf. [ 13] Katalogový list k procesoru Microchip PIC16F876A. Dostupné na internetu: http://ww1.microchip.com/downloads/en/DeviceDoc/39582C.pdf. [ 14] SIM300D Hardware Specifications. Dostupné http://www.simcom.us/product_detail.php?cid=1&pid=11 na internetu:
Podobné dokumenty
Monolitické mikropočítače III
Velice zajímavou novinkou je sériová metoda programování
tzv. In System Programming. Jedná se o možnost snadného programování již osazených mikrořadičů pomocí dvou datových a tří
na- pájecích vodič...
jatek leiras 3 nyelv
Ha a játékos 6-ost dob dönthet, hogy egy bábuját
a startmezôre állítja, vagy a játékmezôn valamelyik
bábujával tovább lép. A startmezôn egyszerre
Monolitické mikropočítače IV
měnič. Nepoužité vývody portů jsou konfigutovány jako výstupy, aby při uvedení obvodu
do stavu SLEEP nezakmitávaly a tak nechtěně nezvyšovaly jeho spotřebu.
Žádná část programu této konstrukce
nevy...
Číslo 6 - Aither
kruhy a prsteny, kdy byl akcent poloţen na nepřetrţitost a souvislost.i Ch.
H. Kahn tak navíc poukázal ke kořeni περ- (podobně jako ve slovech
πείρω, περάω, περαίνω odkazujících ke směru dopředu, k...
PGSM-M10 - GSM/GPRS moduly s M10
Moduly GSM mají specifické napájecí napětí, které vychází z možnosti napájení pomocí jediného LiIon/Pol článku (s napětím 3,7V). Základní napájecí napětí PGSM-M10 se proto může pohybovat v
rozmezí ...
vlastnosti, použití
radiové vlny, zvukové tony nebo světelné záření
Číslicový
Číslicové signály jsou vlastně řadou impulsů či měnících se
úrovní, které se mění nespojitě. Jsou to tedy impulsy napětí
pulsující mezi dvě...
Ceníky
Jde o komplexně řešený systém založený na moderní řadě mikroprocesorů Atmel X51, určený pro výuku
mikroprocesorové techniky. Tento systém se skládá z vlastního vývojového prostředí, HW podporu zaji...
Zobrazovací zařízení, zpracování analogových signálů
Pro komunikaci s řadičem T6963 byl použit mikroprocesor PIC16F690, který má
datovou paměť o velikosti 4kB. Další vlastnosti tohoto mikrokontroléru jsou popsány
v literatuře [3]. Pro použitý typ di...