ЛАБОРАТОРНА РОБОТА №4 Тема: Дослідження алгоритму аналізу номера NumAnlz(). Мета роботи: Засвоєння роботи другого етапу обслуговування абонентів – прийому набору номера. Теоретичні відомості. Алгоритм аналізу номера використовується для визначення кінця набору номера, напрямку виклику (внутрістанційний, зовністанційний чи екстремальний) та переводу абонента на наступний етап обслуговування із внесенням в регістр виклику, для подальшої обробки, необхідних значень. Період запуску алгоритму 230 мс. Блок схема алгоритму аналізу номера приведена на рис. 4.1 Після запуску алгоритма диспетчером, як уже звично, робота починається з аналізу черги заявок на прийом номера. Якщо заявки відсутні, тобто відсутні абоненти, які здійснюють набір, тоді алгоритм закінчує свою роботу переходом у вихідний стан. Якщо хоча б одна заявка присутня в черзі, то починає роботу головна частина алгоритму, яка заключається в наступному: 1. по номеру АК визначається номер РВ, який закріплений за даним АК; 2. якщо після аналізу кількості цифр визначено, що їх кількість достатня, тоді збільшується рівень обслуговування абонента (level) та визначається напрямок виклику (CREG[].direction), а саме: - при неіснуючому напрямку (CREG[].direction=0), абонент повідомляється про це за допомогою включення йому сигналу “Зайнято”, звільнюється регістр виклику, який був призначений для цього абонента; абонент переводиться в чергу на відбій та знімається з черги на прийом набору номера; - при внутрістанційному напрямку виклику (CREG[].direction=3), визначається лінійний номер АК абонента призначення та координати (g_abn, n_abn) і за допомогою масиву Rbusy[], який відображає стани всіх абонентів (в пам’яті), визначається стан уже конткретного абонента призначення; при вільному стані джерельний абонент переводиться з етапу прийняття номера на етап пошуку вільного з’єднувального шляху в КП та його резервування; в протилежному випадку, коли абонент призначення зайнятий (розмова), чи заблокований – джерельний абонент повідомляється про це включенням сигналу “Зайнято” та виконанням тих самих функцій, які були описані у випадку неіснуючого напрямку. - при зовністанційному (CREG[].direction=2), або екстримальному (CREG[].direction=1) напрямків виклику – джерельний абонент переводиться на наступний етап пошуку вільного з’єднувального шляху в КП у заданому напрямку. Закінчується робота алгоритму після перегляду всієї черги на прийом номера. В процесі аналізу номера дуже важливо, щоб обробка інформації, тобто визначення чи потрібно подальше накопичення додаткових цифр для здійснення повного аналізу номера, чи вже достатньо їх, здійснювався ефективно. Вимога до ефективності обробки ставиться за рахунок того, що алгоритми, які записані в ОЗП на станціях, повинні забезпечувати роботу в реальному масштабі часу. Ця вимога задовільняється використовуючи спеціальні пошукові таблиці – найкраща з яких є деревовидна пошукова таблиця. Рис. 4.1. Блок-схема алгоритму аналізу номера Графова модель деревовидної структури пошукової таблиці приведена на рисунку 4.2. Верхній вузол називають корнем, нижні вузли – термінальні елементи, які містять необхідну інформацію (в нашому конкретному випадку – шукану інформацію про напрямок виклику). Вершини дерева розташовуються по рівнях. Корінь має рівень 1, безпосередньо зв’язані з ним вершини 2 рівень і т. д. Максимальний рівень h мають термінальні елементи. Кожен вузол дерева, за виключенням, містять адреси зв’язаних з ними наступних вузлів утворюючи при цьому логічну послідовність кроків швидкого пошуку напрямку. В моделі реалізований пошук за допомогою пошукової таблиці розглянутої вище, яка названа TabOrDir[][]. Розглянемо коротко її функціонування (рис. 4.3). Нехай під час прийому номера, для невизначеного абонента, виявлена перша цифра 2, тоді при запуску алгоритму аналізу номера (при ітерації для абонента від якого прийнято цифру 2), пошук починається з початку деревовидної структури, тобто з корневої таблиці (0). Цифра 2 для цієї таблиці є індексом, який вказує на елемент в ній. Елементи таблиць містять два типи значень інформації. Нехай за індексом 2 міститься значення +2 (TabOrDir[0][2]=+2). Перший тип значень інформації розміщений в знаковому розряді і визначає чи потрібно ще добір цифр номера для подальшого аналізу, чи ні. Додатній знак (+) означає, що ще потрібні додаткові цифри, при цьому значення вказує адресу наступного вузла в деревовидній структурі. Кількість цифр (один) вказує до якого рівня дійшов пошук. Від’ємний знак означає, що досягнутий термінальний елемент, при цьому значення визначає вже не адресу наступного вузла, а шуканий напрямок виклику (0, 1, 2, 3). В нашому випадку (TabOrDir[0][2]=+2) необхідний добір цифр, але вже відома адреса наступного вузла (2).
Рис. 4.3. Функціонування пошукової таблиці при аналізу номера. Алгоритм аналізу номера закінчує роботу. Через деякий час виявлено наступну – другу цифру 5 набору номера. При запуску алгоритму аналізу номера пошук починається, як завжди з корня графу і продовжується до рівня два. Нехай на цьому рівні присутнє значення +3 (TabOrDir[2][5]=+3), що також визначає адресу наступного вузла (3) та необхідність у доборі додаткових цифр. Ще через деякий проміжок часу надійшла третя цифра – 9, яка при черговому запуску алгоритму аналізу номера дозволяє визначити необхідний напрямок виклику. В пошуковій графовидній таблиці значення за індексом 9 на третьому рівні є -3 (TabOrDir[3][9]=-3). Отже напрямок виклику рівний 3, що визначає внутрістанційний виклик. На рис. 4.4 зображено вікно виклику функції NumAnlz(), де: NN – порядковий номер; SHLF – лінійний номер АК джерельного абонента А; L – відображає етап обслуговування на якому знаходиться виклик; io – кількість прийнятих цифр при попередньому опитуванні; ic – кількість прийнятих цифр на теперішній момент часу; NUM – визначений системою номер, який надійшов зі сторони джерельного абонента А; Shlf – лінійний номер АК абонента призначення Б; D – напрямок виклику (екстремальний, зовністанційний і внутрістанційний). Рис. 4.4. Вікно виклику функції NumAnlz() Хід роботи. 1. Ознайомитись з теоретичними відомостями; 2. Запустити програму main.exe; 3. Ввести дані: кількість абонентів – 10, кількість регістрів – 10; 4. Запустити на виконання програму; 5. Натискаючи клавішу F7 слідкувати за зміною значень в вікні алгоритму; 6. Після закінчення програми, переписати в звіт значення з головного вікна Registers; 7. Запустити ще раз програму main.exe; 8. Відкрити для виконання файл 4_1; 9. Після закінчення програми, переписати в звіт значення з головного вікна Registers; 10. Пояснити, як відреагувала комутаційна система при наборі абонентів різних номерів. Контрольні запитання. 1. Для чого використовується деревовидна пошукова таблиця і як вона працює? 2. Як зміниться робота системи змінивши період запуску алгоритму? 3. В яких випадках алгоритм посилає абонентам сигнал “Занято”? 4. Які види напрямків використовуються в даній імітаційній моделі?