ЛАБОРАТОРНА РОБОТА №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. Як відреагує алгоритм на сигнали подібні на дережання контакту?