Prost edky bezpe nostních systém pro integrovanou výuku VUT

Transkript

Prost edky bezpe nostních systém pro integrovanou výuku VUT
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

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č...

Více

jatek leiras 3 nyelv

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

Více

Monolitické mikropočítače IV

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...

Více

Číslo 6 - Aither

Čí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...

Více

PGSM-M10 - GSM/GPRS moduly s M10

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í ...

Více

vlastnosti, použití

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ě...

Více

Ceníky

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...

Více

Zobrazovací zařízení, zpracování analogových signálů

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...

Více