ЛАБОРАТОРНА РОБОТА №2
Тема: Дослідження алгоритму прийому та накопичення імпульсів набору номера GetImp().
Мета роботи: Засвоєння роботи другого етапу обслуговування заявок абонентів – прийому набору номера.
Теоретичні відомості.
Алгоритм прийому номера залежить від типу номеронабирача, який визначає процес набору. У випадках тастатурного номеронабирача з частотним кодуванням інформації цифри номеру передаються одним двухчастотним імпульсом. В реалізованій імітаційній моделі інформація набору номера визначається при використанні абонентами дискового номеронабирача, параметри якого в моделі реалізовані за допомогою змінних, значення яких наведені в таб. 2.1.
Алгоритм прийому номера від дискового номеронабирача складається з двох окремих самостійно функціонуючих частин, які мають різні призначення. Програмна реалізація першої частини алгоритму прийому номера називається getimp() і призначена для прийому та накопичення імпульсів набору і має фіксований період запуску 10 мс, що виключає можливість загублення хоча б одного імпульсу.
Таблиця 2.1
Параметри дискових номеронабирачів абонентів моделі
Назва
Змінної
Призначення
Значення
Умовна одиниця

doz
Тривалість імпульса
4
мс*101

iip
Міжімпульсна пауза
6
мс*101

idp
Міжцифрова пауза
min 30
мс*101


Для роботи алгоритму необхідна інформація про стан абонентського шлейфу знімається шляхом опиту змінної SHLF[], який відображає стани кожного імпульсного ключа (ІК) телефонних апаратів. Кількість зісканованих станів з високим і низьким рівнями (для полегшення будемо важати високий рівень за одиничку ‘1’, а низький рівень стану абонентського шлейфу за нуль ‘0’) та кількість виявлених імпульсів записуються у відповідні поля РВ, які виділяються за АК активних абонентів.
Після запуску алгоритма диспетчером, його робота починається з аналізу черги заявок на прийом номера. Заявки формуються вище згаданим алгоритмом прийому сигналів виклику Scaner(). Якщо заявки відсутні, тобто відсутні абоненти, які здійснюють набір, то алгоритм закінчує свою роботу переходом у вихідний стан.
Якщо хоча б одна заявка присутня в черзі, то починає роботу головна частина алгоритму, яка заключається в наступному:
1. по номеру АК визначається номер РВ, який закріплений за даним АК;
2. формуються координати АК (номер групи – g_abn, положення в групі – n_abn);
3. опитуємо стан КТ АК, тобто зчитуємо значення із змінної (SHLF[]), яка імітує контрольну точку;
4. використовуючи попередній стан КТ текучого АК (поле shlf_old в РВ) визначаємо тип переходу, а саме:
а) якщо стан КТ без змін (shlf_old = shlf), тоді в залежності від рівня збільшуємо відповідно лічильник станів з рівнем 1 – n1, чи лічильник станів з рівнем 0 – n0;
б) якщо відбувся перехід з 1 на 0, то при виявленні (за кількістю імпульсів та цифр), що це є початок набору відключаємо сигнал “Відповідь станції”, команду на включення якого дав алгоритм Scaner();
Рис. 2.1. Блок-схема алгоритму прийому та накопичення імпульсів.
в) у випадку переходу з 0 на 1, фіксується виявлення імпульсів, при умові, що кількість зісканованих станів з низьким рівнем більше 3-х (інакше імпульс важається помилковим – дережання контакту). При цьому збільшується лічильник імпульсів (imp_cur);
5. далі запамятовується новий стан абонентського шлейфу (shlf_old=shlf) і продовжується аналіз черги на наявність наступної заявки.
Закінчується робота алгоритму після перегляду всієї черги на прийом номера.
Хід роботи.
1. Ознайомитись з теоретичними відомостями;
2. Запустити програму main.exe;
3. Відкрити для виконання файл 2_1;
4. Натискаючи клавішу F6 слідкувати за зміною значень в вікні функції;
5. Намалювати в звіті форми сигналів набраних номерів від абонентів;
Контрольні запитання.
1. Чому до програми ставляться вимоги необхідності високої швидкодії?
2. Які параметри сигналу імпульсного набору номера?
3. Як відреагує алгоритм на сигнали подібні на дережання контакту?