Реферат на тему "Приемно адаптерный прибор пожарной сигнализации"




Реферат на тему

текст обсуждение файлы править категориядобавить материалпродать работу




Научная работа на тему Приемно адаптерный прибор пожарной сигнализации

скачать

Найти другие подобные рефераты.

Научная работа *
Размер: 65.64 кб.
Язык: русский
Разместил (а): Хегстрем С.С.
Предыдущая страница 1 2 3 4

добавить материал

При его использовании достигается:
1).  Повышение эффективности использования установок автоматического пожаротушения и сигнализации;
2).  Сокращение времени реагирования оперативного персонала на экстремальную информацию;
3).  Ведение бланка протоколов событий;
4).  Улучшение социальных условий труда.
На программном уровне обеспечивается документирование информации о загораниях и техническом состоянии системы пожарной сигнализации, ведется банк протоколов текущих событий, осуществляется дистанционное управление приемно-контрольным прибором, и пуском АУП. Возможна автоматизация контроля состояния установок автоматического пожаротушения. Адаптер прост и удобен в эксплуатации, в определенной степени сможет составить конкуренцию зарубежным приборам. Необходимо глубже проработать вопрос об универсальности подключения прибора к различным типам ПКП.
Несомненно, его применение на объектах хозяйствования даст положительный эффект в улучшении  информативности в системе МЧС, а следовательно и повышении пожарной безопасности. Массовое внедрение системы в жилых домах, квартирах, дачах, общежитиях, гостиницах, промышленных предприятиях и других помещениях с постоянным проживанием людей и пребыванием персонала позволит существенно сократить число погибающих (уменьшение времени обнаружения, прибытия), а в сочетании с комплексом других профилактических мер либо исключить их, либо свести к минимуму.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ЛИТЕРАТУРА
 
 
1.   ГОСТ 12.1.004-91. Пожарная безопасность. Общие требования.
2.     ГОСТ 12.3.046 Установки пожаротушения автоматические. Общие требования.
3.     Касаткин А.И. Профессиональное программирование на языке СИ. Управление ресурсами: Справочное пособие. – Мн.: Выш. Шк., 1992.
4.     Малешин В.Г. Аппаратно-программные комплексы систем автоматического контроля и управления процессами пожаротушения, пожарной сигнализации//Пожарная безопасность. Материалы первой республиканской научно-практической конференции, -Мн.; 1994г.
5.     Нилов В.А. Технические средства охранно-пожарной сигнализации.; НОУ «Такир», -М., 1998г.
6.     Панель охранно-пожарная «Control Equipment». Техническое описание.
7.     Пожарная безопасность. Специализированный каталог. – М.: «Гротек», 2000г.
8.     Пожарная сигнализация. Современные устройства пожарной сигнализации. Проектирование систем безопасности на основе компьютерных технологий.; «Гротеск», -М, 1998г.
9.     Пожарно-охранный извещатель «Apollo XP95». Техническое описание.
10.                      Пульт приемно-контрольный ППК-2. Паспорт еу2.407.003 ПС.
11.                      Руководство по архитектуре IBM PC/AT. под ред. М.Л.Махрхасина.; ООО «Консул», -Мн., 1993г.
12.                      СНиП 2.04.09-84 Пожарная автоматика.
13.                      Собурь В.А. Установки автоматической пожарной сигнализации: Справочник. Вып. 1-й – М.: Спецтехника, 1999.
14.                       Современные средства пожарной и пожарно-охранной сигнализации.; -М, 1990г.
15.                      СТБ 11.16.01-98 Системы пожарной сигнализации.
16.                       Юлин В.А., Булатова И.Р. Приглашение к СИ. – Мн.: Выш. Шк.,
   1990.

 

 

ПРИЛОЖЕНИЕ 1

               
   // ======================================================================
   // = Базовая программа работы с последовательным портом COMi.
   // = Обмен с использованием прерываний
   // ======================================================================
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <process.h>
#define COM 2  // задается номер порта 1-COMi; 2-COM2
               // дальнейший код справедлив для машин класса AT
#define INTRS 13-COM
#define m_speed 2   // множитель задает скорость передачи
                 // 1-9600
                 // 2-19200 и т.д.
                 // 6-57600
                 // 12-115200
#define cbuf  2000   // размер буфера данных
#ifdef __cplusplus
    #define __CPPARGS ...
#else
    #define __CPPARGS
#endif
#define rgmask 16/COM  //маска в регистре маски прерываний
#define byte_sync 33
#define byte_divam 85
int IMR=0x21;    // регистр маски прерываний
int  base,IER,IIR,LCR,LSR,MSR,MCR,LSB,MSB; // регистры контроллера
                              // последовательного интерфейса
char fl_d=0;        // флаг устанавливается если принят байт
                // если=0 то буфер пуст
char overb=0;       // флаг устанавливается если буфер переполнен
char area[cbuf];  // буфер данных
int  head=0,teil=0; // указатели головы и хвоста
char count0=0;    // help count
char exiterr=0;           //номер ошибки при приеме
                             // exiterr=0 - ошибок нет
                             // exiterr=1 - ошибка приема
                             // exiterr=2 - ошибка по тайм-ауту
                             // exiterr=3 - cбой в приеме: передано неверное
                                          //число байт
                             // exiterr=4 - сбой при приeмe или переполнение
                                          //буфера
char errcode=0;     // код ошибки
void interrupt obrcom(__CPPARGS);    /* interrupt prototype */
void interrupt (*oldfunc)(__CPPARGS); /* interrupt function pointer */
void nevid(void);   //делает курсор невидимым
void initrs(void);  //инициализация COM порта
void init(void);   //инициализация переменных
void  exitp(void); //!!! необходимо вызывать перед выходом из программы
int  trans(char);   //передача байта через СОМ порт
void deside(void);  //обработка данных
void signal(void);  //звуковой сигнал
void outinfo(void); //вывод информации на экран
void reseterr(void);   //сброс ошибок RS232
void instvect(void);    //Замена вектора прерываний COMi
void restorevect(void);  //Восстановление старого обработчика C
void incteil(void);      //Увеличение указателя хвоста
void err(char *);  //Выход по ошибке
void Transb(char); // посылка байта с сервисом
int Transb_hiden(char);  // Не выдает сообщения об ошибках
void clearbof(void);  // очистка буфера данных
void definit(void);    // определяет работоспособность с той стороны
void clearbofkey(void);  // очистка буфера клавиатуры
void pusk(void);
struct k_win           // координаты окна
{ int x0,y0,x1,y1,lastx,lasty; } wmain,wmes;
//=======================
void nevid(void)      //невидимый курсор
{  asm{ push    cx
        push    ax
        mov     ah,01
        mov     ch,20H
        mov     cl,0
        int     10H
        pop     ax
        pop     cx
      }
}
// ===========  инициализация переменных ====================
void init(void)
{ int i;
  wmain.x0=1; wmain.y0=1; wmain.x1=80; wmain.y1=16;
  wmes.x0=1; wmes.y0=wmain.y1+2; wmes.x1=80; wmes.y1=25;
  wmain.lastx=wmain.lasty=wmes.lastx=wmes.lasty=1;
  exiterr=0;
}
//============ инициализация последовательного порта ===========
void initrs(void)
{
  asm { push    es
        push    bx
        mov     bx,COM
        dec     bx
        shl     bx,1
        mov     ax,40H      //вычислить базовый адрес
        mov     es,ax
        mov     dx,es:[bx]
        mov     base,dx
        pop     bx
        pop     es
      }
  IER=base+1;  IIR=base+2;  LCR=base+3;  MCR=base+4;  LSR=base+5;
  MSR=base+6;  LSB=base; MSB=base+1;
  disable();
  instvect(); // установить обработчик
  outportb(IMR,(inportb(IMR)&(255-rgmask))); // разрешить прерывание
  outportb(IER,5); //разрешить прерывания по доступности данных и по ошибке
  outportb(LCR,(inportb(LCR)|0x80)); // доступ к делителю частоты
  outportb(LSB,12/m_speed);    // 1843200/(x*16)=y бит/c
  outportb(MSB,0);
  outportb(LCR,27); // установить параметры :
      
            // длина слова обмена 8 бит + контроль четности + DLAB=0
  outportb(MCR,(8));    //   ;rts=0 ;dtr=0
            // сбросить условия возникновения прерываний
  //outportb(base,0);
  inportb(base);
  inportb(MSR);
  inportb(LSR);
  enable();
}
//=========== звуковой сигнал ==================
void signal(void)
{ sound(700); delay(200); nosound();
}
         // чтение LSR - сброс ошибок
void reseterr(void)
{
  inportb(LSR);
}
char foi=0;
// ================= передача байта 'dm' в канал связи ==========
int trans(char dm)
{
inlsr:
 asm {
        mov     dx,base
        add     dx,5
        in      al,dx          //прочитать LSR
        test    al,00011110B  // ошибка ?
        jnz     toer
        test    al,1
        jnz     indata
        test    al,32       // Передатчик освобожден ?
        jz      inlsr
        sub     dx,5
        mov     al,dm
        out     dx,al
      }
   return 0;
toer:  reseterr(); return -1;
indata:  return 1;
}
void instvect(void)       // замена вектора прерывания
{
  oldfunc  = _dos_getvect(INTRS);
  _dos_setvect(INTRS,obrcom);
}
              // восстановление старого вектора
void restorevect(void)
{  /* restore to original interrupt routine */
  _dos_setvect(INTRS,oldfunc);
}
char d;
//=========== прием данных не используя прерываний  =============
int priem(void)
{  char clt; int i=0;
  do { clt=inportb(LSR);
       if ((clt&30)!=0) { errcode=clt; reseterr(); return -1; }
             // байт принят ?
       if (clt&1)  { d=inportb(base); return 0; }
       i++;
     }
  while (i!=0);
  return 1;
}
            // новый обработчик прерывания от COMi
void interrupt obrcom(__CPPARGS)
{ char p;
   p=((inportb(IIR)>>1)&3);
      switch (p) // определить тип прерывания
        { case 0:   // изменение линии состояния устройства с той стороны
                inportb(MSR); break;
          case 1: // прерывание от передатчика
                break;
          case 3: // по ошибке
               errcode=inportb(LSR); inportb(base); break;
        case 2: // доступность данных
               { area[head++]=inportb(base);  //записать байт в буфер
                 if (head==cbuf) head=0;
                 if (head==teil) overb=1;  // отметить если голова догнала
                                           // хвост
                 fl_d=1; // отметить заполнение буфера
                 break;
               };
          default: // неизвестное прерывание
               errcode=128;
        }
enfin:         // завершить прерывание
  asm { mov   al,20H
        out   20H,al
      }
}
          // очищает буфер данных
void clearbof(void)
{ while (fl_d) incteil(); }
void clearbofkey(void)
{ while (kbhit()) getch(); }
             // Выход по ошибке
void err(char *mes)
{
  exitp(); clearbofkey();
  printf("%s\n",mes); exit(0);
}
            // Увеличение указателя хвоста
void incteil(void)
{  if (teil==(cbuf-1)) teil=0; else teil++;
   asm cli;
   if (head==teil) fl_d=0;   // если буфер пуст
   asm sti;
}
                 // посылка байта с ожиданием и с очищением буфера
                     // от байта который был послан
void Transb(char CC)
{ int li,opf,hp;
  li=1; opf=0;
      do     // цикл посылки и ожидания освобождения передатчика
        { hp=trans(CC);
          switch (hp)
            { case 0:  opf=1; break;
              case 1:  li++;  hp=inportb(base); break;
            case -1: { printf("Ошибка при передаче\n"); reseterr(); break;}
            }
          if (li==0) printf("Тайм-аут при передаче\n");
        }
      while (!opf);
}
                 // посылка байта с ожиданием и с очищением буфера
                 // от байта который был послан
                 // Не выдает сообщения об ошибках
int Transb_hiden(char CC)
{ int li,opf,hp;
  li=0; opf=0;
      do     // цикл посылки и ожидания освобождения передатчика
        { hp=trans(CC);
          switch (hp)
            { case 0:  opf=1; break;
              case 1: { //доступность данных
                        li++;
                        inportb(base);
                  reseterr;
                        break;
                      };
              case -1: return -1; //err("Ошибка при передаче"); break;
            }
          if (li==100) return 1; //err("Тайм-аут при передаче");
        }
      while (opf==0);
             // цикл ожидания приема байта - того что был послан
      li=0;
      while (fl_d==0)
        {
          if (++li==0) return 2; //err("Тайм-аут Не принято ни 1 символа");
        }
      if (area[teil]!=CC) return 3; //err("Не принято то что послано");
      incteil();
      return 0;
}
void priembig(void)
{  int a;
   a=priem();
      switch (a)
        { case 0:  printf("Принято %d\n",d); break;
          case 1:  printf("Тайм-аут\n"); break;
          case -1:  printf("ErorCode=%d\n",errcode); inportb(base);
        }
}
#define pi      3.1416
      // Возвращает главное значение ARCTAN [0..2*pi]
double mARCTAN(double z_sin,double z_cos)
{ double ang;
    if (z_sin==0)
      { if (z_cos<0) return (pi/2.0);
        else return (1.5*pi);
      }
    ang=-atan(z_cos/z_sin);
    if (z_sin<0) ang+=pi;
    if (ang<0) ang+=2*pi;
    return ang;
}
char getsym(void)
{ char a;
  a=area[teil]; incteil();
  return a;
}
//---------------------------------
void  exitp(void)     //!!! необходимо вызывать перед выходом из программы
{
  disable();
  reseterr();
  outportb(MCR,8); //rts=0  out2=1
  restorevect();   // восстановить обработчик
  outportb(IMR,(inportb(IMR)|rgmask)); // запретить прерывание
  enable();
}
int get_size(void)  // возвращает число байт в буфере
{ int i;
  if ( (i=(head-teil))<0 ) i+=cbuf;
  return i;
}
//===== отобразить информацию ==================
void outinfo(void)
{ char a;  char str1[40];
   while ( (get_size()>=1) & (!kbhit()) )
     {
       printf(" %X",(int)getsym());
       if (errcode!=0) { printf("ErrCode=%d\n",errcode);
                  errcode=0;
                   }
     }
}
struct dostime_t w,w1;
double at,bt;
void fix_time(void)  // фиксирует системное время во внутреней переменной
{
  _dos_gettime(&w);
  at=(double)(w.hour*360000+w.minute*6000+w.second*100+(double)w.hsecond);
}
double get_time(void) // возвращает время прошедшее с момента последнего
                  // фиксирования
{
  _dos_gettime(&w1);
  bt=(double)(w1.hour*360000+w1.minute*6000+w1.second*100+(double)w1.hsecond);
  bt-=at;
  return bt;}
int wait(int x)
{ fix_time();
  while (get_size()<x)
    { if (get_time()>(double)(x*4)) return 0;
    }
  return 1;}
#define Esc 27
#define     sym_S 83
#define sym_W     87
#define sym_Z     90
#define sym_A     65
//====================================
void main(void)
{ char hpl,hph,ch;  char mas[100];
  int j,i,jh;
  long li;
  int cos,sin,sh,am;
  double sr;
//  printf("my_dt=%7.4f  \n",(mARCTAN(14927.0,-28113.0)/pi*2000));
//  return ;
  init(); initrs();
  clrscr();
  Transb(85);
  Transb(6);
  Transb(0);
  while (!kbhit()) // { Transb(85); delay(100); }
              outinfo();
me:
  errcode=0;
  clearbofkey();
  exitp();
}

Аннотация научной работы

 
   Девиз:   "Не отступать и не сдаваться!"
1.     Приемно-адаптерный прибор пожарной сигнализации.
2.     УДК 614.842.4
3.     КИИ МЧС Республики Беларусь.
4.     2000 год.
5.     Объём работы: 44 с.
6.     Количество приложений: 3
7.     Количество иллюстраций: 3
8.     Количество таблиц: 2
9.     Источников литературы: 16.
Характеристика работы.
1. Цель: Обеспечение возможности автоматизированной компьютерной                обработки информации систем пожарной сигнализации. 
2. Методы: анализ технических решений, опытно-конструкторская проработка, программирование.
Основные результаты:  разработан проект конструкции приемно-адаптерного прибора пожарной сигнализации и программа информационного обмена.
Наличие документа об использовании научных результатов: да.
подпись автора  ______________

 

 

СВЕДЕНИЯ

 
об авторе и научном руководителе работы,
представленной под девизом: «Не отступать и не сдаваться!»

 АВТОР                    НАУЧНЫЙ РУКОВОДИТЕЛЬ

 
document.getElementById("lc").innerHTML="Загрузка 70%";
Предыдущая страница 1 2 3 4


Приемно адаптерный прибор пожарной сигнализации

Скачать научную работу бесплатно


Постоянный url этой страницы:
http://referatnatemu.com/?id=183&часть=4




Рейтинг@Mail.ru
Copyright © 2010-2015 referatnatemu.com