Hardware. Popis zařízení. řízení - procesor popis, software



Podobné dokumenty
NAM technology. Uživatelský manuál. REGGAE alarm verze: /2011

Úvod do mobilní robotiky AIL028

Autonomní zámek LOG2

Příručka k zařízení Sebury K3-3

manuál Sebury W2 Manuál Karta samostatný provoz / Wiegand 26 Dokumentace vytvořena dne JM VARIANT plus s.r.o. strana 1

Modulární autoalarm

Výuková laboratorní sestava seminář pro učitele

NÁVOD K OBSLUZE konfigurační SW CS-484

manuál Manuál Kód + karta samostatný provoz / Wiegand 26 Dokumentace vytvořena dne JM VARIANT plus s.r.o. strana 1

Adresovatelný systém ústředny MHU 109 Návod k obsluze (SW verze 3.50) Vnější ovládací a signalizační prvky

Překročení teploty nebo vlhkosti limity

W1-A manuál Sebury W1-A Manuál Kód + karta samostatný provoz 2 samostatné reléové výstupy

Reprodukce tohoto návodu k obsluze, nebo jeho části, v jakékoli formě bez předchozího písemného svolení společnosti DEGA CZ s.r.o. je zakázána.

Hamletovygumy.net HPS 840 NEW (H) Uživatelský návod CZ. PATROL LINE - CAN BUS Budoucnost v současnosti

QC300 3fáze 400V řídící jednotka / QC300R 3fáze 230V / QC301 1fáze

Univerzální watchdog WDT-U2/RS485

Kódová klávesnice a čtečka čipů CP1000 Čtečka RFID čipů 125 khz

SW24x3 programovatelné relé

Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování

Popis a funkce čtečky otisku prstu

Cvičení 2. Obsah a cíle cvičení. Obsah. A5MPL Programování mikropočítačů Digitální vstupy a výstupy - LED a tlačítka.

SE528. Zabezpečovací systém do automobilu. Instalační a uživatelská příručka

Číslicový zobrazovač CZ 5.7

Časovače μpočítače AT89C51CC03

POKROČILÉ PROGRAMOVÁNÍ. Pípání / Poplach

GSM-01. Pro lepší pochopení tohoto výrobku, přečtěte si uživatelská příručka důkladně před použitím.

Zabezpečovací systém pro vozidla vybavená sběrnicí CAN a zabudovaným centrálním zamykáním na dálkové ovládání SE 525

DIGI Timer 8 8 kanálové stopky se záznamem dat

SPY 11. Automobilový zabezpečovací systém

MODULÁRNÍ AUTOALARM UŽIVATELSKÝ MANUÁL.

1. Univerzální watchdog WDT-U2

NÁVOD K OBSLUZE. Ústředna CS

Vstupní jednotka E10 Návod na použití

Programovatelná řídící jednotka REG10. návod k instalaci a použití 2.část Program pro regulaci kaskády čerpadel v závislosti na tlaku SGC3

SPY15 Zabezpečovací systém pro motocykly

Uživatelský manuál. KNX232e / KNX232e1k

Úvod do mobilní robotiky NAIL028

Návod a popis funkcí pro klávesnici W1-E originální anglický manuál je nedílnou součástí tohoto českého návodu.

Kódová klávesnice DPA-CODE

Program "Světla" pro mikropočítač PMI-80

Měření Záznam Online monitorování Regulace Alarmování

SPY16 Zabezpečovací systém pro motocykly Uživatelská příručka

Klávesnice EKB3. Stručný uživatelský návod k použití. Verze 1.00

Čtečky s klávesnicí EDK3, EDK3B, EDK3M

Průvodce programováním.

Uživatelský manuál. KNXgal. řízení zabezpečovacích ústředen. Galaxy ze sběrnice KNX. napájeno ze sběrnice KNX. indikace komunikace na KNX

PŘIJÍMAČ DÁLKOVÉHO OVLÁDÁNÍ FLOXR

MSP 430F1611. Jiří Kašpar. Charakteristika

MODULÁRNÍ AUTOALARM UŽIVATELSKÝ MANUÁL.

SPÍNACÍ HODINY. Nastavení hodin a předvolby. Obr. 1

Konfigurátor Duo. Manuál pro konfiguraci systémů DUO Standard / Basic. Obsah + vybraná nastavení: - 1 -

Motocyklový alarm s integrovaným pagerem SENTINEL 1100 MOTO. uživatelský manuál

Návod na obsluhu. PS02 Poruchová signalizace

Sebury W1-A Instalační manuál

Zabezpečovací systém určený k montáži do nákladních vozidel

MK3x3 programovatelné relé

Návod na použití Dveřní jednotka DJ 1T KEY Stránka 1

Čtečka EDK2-KPA. Návod pro instalaci. Identifikační systém ACS-line. Popis EDK2-KPA-NEW.doc - strana 1 (celkem 5)

Zabezpečovací systém pro motocykly

Sfera Keypad Module. Instalační manuál 07/12-01 PC

Uživatelský manuál. Ústředny MB-Secure 1000, 2000, 3000, 4000, 5000, 6000 P VDS příprava CZ EMBSC.00.

Návod na použití E KR11

Sebury BC Manuál. Kód + karta. Samostatný provoz / Wiegand 26. Dokumentace vytvořena dne strana 1. JM VARIANT plus s.r.o.

Vstupní terminál LOG3

ŘÍDÍCÍ AUTOMATIKA EMA 194, 196

Mikrokontroléry. Doplňující text pro POS K. D. 2001

CNC Technologie a obráběcí stroje

Modelová úloha Zabezpečení a správa budovy

Autonomní snímací jednotky řady SU104*

NÁVOD K OBSLUZE. Ústředna CS

Přerušovací systém s prioritním řetězem

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

FILIP SCHWANK. Katedra měření, listopad 2017

Klávesnice EKB2. Stručný uživatelský návod k použití. Verze 1.00

Ksenia auxi wls. Instalační a programovací manuál. Ksenia: Bezpečnost on-line. 1

SPY18 - RFID MOTO ALARM

Návod k použití pro fóliovou klávesnici

USB3x3 sekvenční automat s USB portem pro nahrávání programů

Popis a funkce klávesnice K3

NÁVOD K OBSLUZE. ústředna CS-484E-3

Uživatelský manuál. KNXgal

TECHNIKA V POHYBU MACO PROTECT. Návod k obsluze Systém kontroly přístupu. čeština TOUCH

Kovová minikamera do auta, 1080p

Návod k základní instalaci alarmu GSM02

9. Rozšiřující desky Evb_Display a Evb_keyboard

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

POKYNY K OBSLUZE. Bezpečnostní systém MODEL: VOYAGER. Vlastnosti systému :

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

Algoritmy a datové struktury

motoalarm s dálkovým ovládáním SE 540

SE560. Dvoucestný zabezpečovací systém do automobilu. Uživatelská příručka

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

BASPELIN MRP Popis obsluhy indikační a řídicí jednotky MRP T2

PROGRAMOVATELNÝ TERMOSTAT CT Citherm 6.0 Návod k obsluze

GSM ALARM - základní sada Návod k použití

GPS lokátor do auta - výdrž 100 dní

Ovládání domu s PLC SAIA

Návod k použití Commeter C0111 Digitální teploměr pro teplotní sondy s odporovým senzorem Ni1000/6180ppm

Uživatelský manuál. KNXnet

Transkript:

Hardware řízení - procesor popis, software K řízení byl použit procesor, neboť algoritmy, které je potřeba zpracovávat jsou natolik složité, že by řešení na bázi logických polí bylo příliš složité a drahé. Zvolen byl procesor typu 8052 (např. firmy Atmel 89C52), který koncepčně vychází z 8051. Jádro původního procesoru se stále zdokonaluje a vybavuje o další periferie. 89C52 má 8 kb Flash EPROM, což je kapacita, která pro menší aplikace vhodnější než použití externí EPROM. Navíc má výhodu v možnosti vícenásobného přepisu bez nutnosti mazání UV zářením. Počet přepisovacích cyklů se udává až 10000. Dále má 256 bytů RAM, což usnadňuje práci vzhledem k možnosti definování vlastních proměnných a v případě té to práce je to dokonce nutností, neboť se zde zadává mnoho konfiguračních parametrů ukládaných právě do paměti RAM. Ke styku s okolím jsou k dispozici 4 osmibitové vstupně výstupní brány. 89C52 má 3 časovače/čítače, využitelné např. pro vykonávání více činností v režimu přerušení nebo k záznamu vnějších podnětů na pozadí. Pro sériovou komunikaci se používá zabudovaný UART, s volbou různých režimů. Lze volit počty datových a stop bitů, rychlost atd.. Taktování se provádí pomocí externího krystalu a kapacit a procesor zvládá až 24 MHz. Pouzdro je nejčastěji typu DIL40 (zde zvoleno 11Mhz). Klávesnice Klávesnice je zapojena jako matice 4x3. Je připojena přímo na I/O bránu P2, protože je takto lépe ovladatelná. Čtení se provádí následovně. Vstupy na které jsou připojeny sloupce se nastaví jako vstupní tj. zapíše se na ně log 1. Potom se na výstupech na řádky nechá rotovat log 0 (log 0 je vždy na jednom, na ostatních jsou log 1), a v každém cyklu se přečtou všechny sloupce. Jestliže je na některém z nich log 0, znamená to, že byl spojen s řádkem tj. byla stisknuta klávesa. Zjistí se, který řádek a sloupec se spojily, a je patrné, o jakou klávesu se jedná. Odpory slouží jako upínací. Signalizační LED Jsou zde použity nízkopříkonové LED (2 ma). Jsou zapojeny na I/O bránu P0 a jejich činnost je tedy přímo určena stavem bitů na konkrétních adresách (viz výše). V případě log 1 svítí, při log 0 jsou zhasnuté. Připojení čidlových okruhů Stavy čidlových okruhù jsou reprezentovány logickými hodnotami, kde log 1 značí připravenost okruhu tj. klidový stav, a log 0 narušení resp. poruchu na čidlovém okruhu. Jednotlivé vstupy jsou připojeny na I/O bránu P1. To znamená, že jsou opět přímo adresovatelné. Popis zařízení Zařízení je velmi jednoduchou zabezpečovací ústřednou spadající do 4. kategorie - tedy bez možnosti rozsáhlejší konfigurace. Vzhledem k nedostupnosti jakýchkoli konkrétnějších specifikací jsem ji založil na TTL logice.

zdrojový KÓD Hlavní ovládací částí je procesor 8052, který má na starosti řízení a vyhodnocovaní všech událostí ze čtyř nezávislých smyček. (Potencionálně až osmi.) U čidel byl udělán předpoklad, že jejich klidové výstupní napětí je na úrovni logické 1, v případě, že senzor zaregistruje podnět přepne do logické 0, čímž je vyvolán poplach. Logická 1 jako klidové napětí byla zvolena z důvodu jednoduché ochrany. Případ poškození čidla totiž bude signalizován jako poplach. Ve své podstatě je jedno co bude připojeno na danou smyčku a jaký význam bude mít který signál, nicméně je doporučení hodné, aby na každé ze smyček byl jednotný soubor čidel (a doporučuje to tak i norma) - tedy např. na jedné smyčce čidla pohybová na druhé oken a dveří (magnetické snímače), na třetí střežení krytů čidel a na čtvrté např. kouřová čidla. Jak je vidět z popisu hardware, skládá se celá ústředna z vlastního procesoru na jehož tři vstupní brány jsou připojeny klávesnice (4x3 klávesy), LED a akustická signalizace, a vstupy z čidlových smyček. Software Obecně pro programování menších microcontrolerů je vhodné použít přímo strojový kód. Protože se mi však nepodařilo sehnat žádný volně šiřitelný kompilátor přímo pro assembler, napsal jsem celý program v jazyce C++ pro nějž již byl dostupný freeware kompilátor SDCC (http://sdcc.sourceforge.net/). Od laděn byl program na dostupném simulátoru 8052. Základní stavba programu Základním úkolem procesoru a tedy programu je obsluhovat vstupně výstupní zařízení - tedy v tomto případě vstupní klávesnici a čidlové smyčky a výstupní indikaci stavu na LED a sirénu. Ústředna má dva základní módy činnosti, mezi kterými přechází zadáním správného hesla, které v tomto případě tvoří čtyřmístný číselný kód. Po zapnutí napájení ústředny je kód defaultně nastaven na '0000'. Ústředna svou inicializaci oznámí rozsvícením a zhasnutím všech signalizačních diod, po té by již měla zůstat svítit jen dioda signalizující napájení a ústředna se nachází v neaktivním módu, tedy nereaguje na vstupy z čidel, pouze čeká na zadání kódu. Pokud bude kód zadán správně přejde ústředna do aktivního módu a uživatel má 5s na to, aby opustil střežené prostory. Na zadání každé, krom první, klávesy je časový limit 2s. Pokud je kód zadán špatně nebo není stisknuta klávesa v daném limitu je to oznámeno blikáním všech 4 okruhových diod a je dána možnost opravy. Pokud je zadán podruhé špatně, nebo není zadána klávesa v časovém limitu, je vyvolán poplach. V případě, že během aktivního módu dojde k narušení, musí být do 5s zadáno heslo jinak je opět vyvolán poplach - opticky je signalizována smyčka na které došlo k narušení a je spuštěna siréna na dobu 25s případně do doby než je zadán správný vstupní kód. LED signalizace zůstává až do okamžiku zadání správného kódu nebo do nového narušení, neboť po 25s přejde ústředna opět do aktivního módu. Pokud přecházíme zadáním kódu z módu aktivního do neaktivního je nám dána možnost kód změnit. Signalizováno je to semaforovým blikáním diod 1-2 a 3-4. Dále uvádím komentovaný výpis celého programu

ustredna.c. #include "reg51.h" //#include "stdio.h" //pro debugovani typedef unsigned char byte; byte Pass[4]; byte LEDMode; byte UMode; byte LEDState; byte CounterLED; unsigned int CounterAl; byte naruseni; /* EchoPort: byte; Absolute P0; // LED,akustika na portu 2 LoopPort: byte; Absolute P1; // Vstup ze smycek KyePort: byte; Absolute P2; // I/O klavesnice */ void Wait(unsigned char Delay) unsigned int j; for (i=0; i<=delay; i++) for (j=0; j<=11520; j++) //melo by byt asi 0.05s byte porovnej(byte PassO[3], byte PassZ[3]) for (i=0; i<=3; i++) if (PassO[i]!=PassZ[i]) return(0); return(1); byte KBD() byte cisl; P2=0x0df; do cisl=p2; while (P2!= cisl); P2=0x0ff; cisl=cisl & 0x0f; switch (cisl) case 0x07: return(1); case 0x0b: return(2); case 0x0d: return(3); P2=0x0bf; do cisl=p2; //vlastni pristup na HW klavesnice //zapis nulu do 1. radky //zapis nulu do 2. radky

while (P2!= cisl); P2=0xff; cisl=cisl & 0x0f; switch (cisl) case 0x07: return(4); case 0x0b: return(5); case 0x0d: return(6); case 0x0e: return(0); P2=0x07f; do cisl=p2; while (P2!= cisl); P2=0xff; cisl=cisl & 0x0f; switch (cisl) case 0x07: return(7); case 0x0b: return(8); case 0x0d: return(9); return(10); //zapis nulu do 2. radky void AlarmCheck() interrupt 1 byte alarm; //snad preruseni 1 - Timer 0 owerflow alarm=p1; if ((alarm!=0x0ff) && (UMode==1)) // LEDMode=4; //mod alarmu vyvolaneho narusenim smycky UMode=2; //mod ustredny - alarm - jeste neni dan na venek naruseni=~alarm; //rosvit diodu prislusne smycky CounterAl++; //zvys counter // else CounterAl++; //Counter>=100 = 5s pauza pred vyvolanim poplachu if (UMode==2) if ((CounterAl>=100) && (CounterAl<=3000)) LEDState=naruseni; //dej do LEDDtate stav pri vyvolani poplachu LEDMode=4; //mod poplach CounterAl++; //v dobe od 5s po naruseni do 30s po nar. sirena else LEDMode=5; //jinak pouze indikace stavu na diodach (zustane do dalsiho naruseni) UMode=1; //prejdi zpet do aktivniho modu if (UMode==0) //pokud neaktivni stav - nuluj Counter LEDMode=1; //nastav diody na nesviti naruseni=0; switch (LEDMode) case 0: LEDState=0x02f; break; case 1: LEDState=0x20; break; case 2: if (CounterLED==20) LEDState=0x02f; if (CounterLED==0) LEDState=0x20; //rozsvit vsechny diody //zhasni vsechny diody krom power //blikej po sekunde vsemi ctyrmi diodami

if (CounterLED==40) CounterLED=0; else break; case 3: if (CounterLED==20) LEDState=0x023; if (CounterLED==0) LEDState=0x02b; if (CounterLED==40) CounterLED=0; else break; case 4: LEDState=LEDState 0x10; break; case 5: LEDState=LEDState & 0x10; break; P0=LEDState; //vlackovy semaforek po sekunde //poplach - pridej sirenu //poplach ale jiz bez sireny //posli stav na port //scanuje klavesnici, pocita cas na klavesu byte ScanKey() byte znak; byte wtime; wtime=255; znak=10; while ((wtime!=0) (znak==10)) scanuj KBD znak=kbd(); wtime--; return(znak); //interval kdy musi byt zadana klavesa //inertni znak //dokud neutece cas, nebo neni stisknuta klavesa /* na zacatku mainu ji odmital volat... kdo vi proc... void UInitx() //INICIALIZACE // printf("here!!"); P0=0xff; Wait(20); UMode=0; for (i=0; i<=3; i++) Pass[i]=0; P0=0; //rozsvit vsechny diody na uvitanou //mod ustredny - neaktivni //vynuluj heslo //zhasni diody //nastaveni preruseni (zrejme ve strojaku) //Timer0 = 46079 = 0.05s => 40*timer1=2s mov _TH0,179; //maximalni hodnota Timeru - horni bajt mov _TL0,255; // dolni bajt mov _TMOD,1; //16bitovy mod citace setb _ET0; //umozni preruseni pri preteceni timeru0 setb _TR0; //spust Timer0 */ //povol vsechna preruseni byte WCode(byte Typ) byte TmpPass[4],i; //WaitCode - cekej na zadani kodu

if (Typ==1) //Typ cekani 1 - cekame na zadani poprve TmpPass[0]=10; while (TmpPass[0]==10) TmpPass[0]=ScanKey(); //cekej na prvni stisk klavesy for (i=1; i<=3; i++) TmpPass[i]=ScanKey(); if (TmpPass[i]==10) return (0); if (porovnej(pass,tmppass)) return (1); else return (0); if (Typ==2) //Typ 2 - cekame na opravu Wait(40); //chvili pockej at se vzpamatuje (2s) LEDMode=2; //varovne blikame diodami for (i=0; i<=3; i++) //druha sance zadat heslo TmpPass[i]=ScanKey(); if (TmpPass[i]==10) return (0); //spatne nebo nestihl if (porovnej(pass,tmppass)) //bylo zadano spravne? return (1); //ano LEDMode=1; //znasni LED else return (0); //zadano spatne, nebo nestihl main() byte TmpPass[4]; //inicializace ------- P0=0xff; Wait(40); UMode=0; for (i=0; i<=3; i++) Pass[i]=0; P0=0x20; proudu //rozsvit vsechny diody na uvitanou //mod ustredny - neaktivni //vynuluj heslo //zhasni diody krom power diody - ta bude svitit do vypnuti //nastav LED mod na 0 LEDMode=0; //nastav smycky bez poplachu; poplach = 1 na vstupu P1.X P1=0xff; naruseni=0; //nastaveni preruseni (zrejme ve strojaku) //Counter pro pocitani casu do spusteni alarmu po naruseni CounterLED=0; //Counter pro blikani diod //oba se zvysuji pri preruseni Timer) overflow //Timer0 = 46079 = 0.05s => 40*timer1=2s mov _TH0,179; //maximalni hodnota Timeru - horni bajt mov _TL0,255; // dolni bajt mov _TMOD,1; //16bitovy mod citace setb _ET0; //umozni preruseni pri preteceni timeru0 setb _TR0; //spust Timer0 //povol vsechna preruseni //konec inicial ------- do if (WCode(1) && (UMode==0))

clr _EA; //zakaz preruseni a tedy CheckAlarm Wait(100); //cekej nez odejde (5s) //povol preruseni a tedy CheckAlarm UMode=1; //nastav mod ustredny jako aktivni else if (WCode(2) && (UMode==0)) //druhy pokus o zadani clr _EA; Wait(100); //cekej nez odejde UMode=1; else UMode=2; //mod naruseni if (WCode(1)) UMode=0; //cekej na opetovne zadani spravneho kodu - pro deaktivaci else if (WCode(2)) UMode=0; else UMode=2; if (UMode==0) //pri zadani spravneho hesla pro deaktivaci LEDMode=3; //moznost zmenit heslo - roluj diodami for (i=0; i<=3; i++) TmpPass[i]=ScanKey(); if (TmpPass[i]==10) TmpPass[0]=10; break; if (TmpPass[0]!=10) for (i=0; i<=3; i++) Pass[i]=TmpPass[i]; while (0);