Виберіть свою мову

Іноді виникає необхідність зафіксувати інформацію про використання телефонної лінії: набирається номер, час і тривалість розмови. Особливо це актуально з запровадженням погодинної оплати телефонних розмов і при частих міжміських і міжнародних дзвінках. Описуваний пристрій призначено для реєстрації вихідних телефонних дзвінків у базі даних комп'ютера.

Пристрій дозволяє фіксувати всі набираються телефонні номери, дату і час розмови, його тривалість, вести тарифікацію і робити деяку статистичну обробку накопиченої інформації. Передбачено також захист від несанкціонованого підключення до лінії і можливість блокування міжміських дзвінків окремо для кожного з п'яти підключаються телефонів.

Описувана система складається з реєстратора набраних номерів і комп'ютера з встановленою на ньому програмою. Реєстратор підключають до телефонної лінії. Він зчитує набираються номери і передає їх комп'ютера через послідовний порт. Якщо в момент дзвінка комп'ютер був вимкнений, або обробна програма не запущена, то зареєстровані дані тимчасово зберігаються в енергонезалежній пам'яті пристрою.

Основа пристрою - РІС-контролер DD3 (рис. 1), найбільш дешевий з пропонованих компанією Microchip. Дані про дзвінки та налаштування зберігаються в енергонезалежній пам'яті DD2. Телефонні апарати (ТА) можна підключати як безпосередньо до лінії, так і через реєстратор. В останньому випадку реєстратор зможе визначити, з якого апарату велася розмова. Цю можливість зручно використовувати, наприклад, для поділу рахунків за міжміські переговори між декількома користувачами однієї телефонної лінії. Зв'язок з комп'ютером здійснюється через оптопару U5. що дозволяє розв'язати гальванічно комп'ютер та телефонну лінію. Живлення пристрою здійснюється від телефонної лінії.

(натисніть для збільшення)

У вихідному стані (тобто коли телефонні трубки лежать на всіх апаратах, підключених до лінії) контролер відстежує стан датчика напруги в лінії - дільника R4R6. виробляє рахунок поточного часу і приблизно кожні півхвилини викликає обробну програму комп'ютера. Якщо комп'ютер включений і програма запущена, реєстратор звіряє свої внутрішні годинники з часом комп'ютера і при необхідності передає накопичену інформацію про дзвінки.

Після зняття трубки контролер визначає шляхом вимірювання напруги на колекторах транзисторів оптопар U1.1 - U1.44, з якого саме апарату зняли слухавку. Якщо цей телефон підключений безпосередньо до лінії, то вважається, що трубку зняли з ТА1. Потім інформація про занятті лінії і номер певного апарату передається комп'ютеру, що відображається в рядку стану програми і в її значку на панелі задач. Далі пристрій зчитує набирається номер і одночасно передає його в комп'ютер для подальшої індикації. Після набору кожної цифри в контролері скидається програмний лічильник часу, який дозволяє визначити закінчення набору номера.

Якщо після набору цифри пройшло більше 5 с і кількість набраних цифр більше п'яти, вважається, що набраний номер. При цьому на керуючий електрод ключа К1 надходить високий рівень, ключ відкривається і підключає компаратор DA1 до загального проводу. Проте контролер продовжує відслідковувати стан датчика напруги в лінії R4R6 на той випадок, якщо набір номера буде відновлено. Сіли це станеться, компаратор знову вимикається і знову скинеться лічильник часу.

Після закінчення набору номера пристрій починає вимірювати тривалість розмови. Найбільш складним моментом тут є реєстрація початку з'єднання з абонентом, так як міські телефонні станції не посилають абонентським пристроям ніяких сигналів про початок розмови. У більшості телефонних апаратів або міні-АТС з вбудованими реєстраторами ця проблема вирішується таким чином, по закінченню набору останньої цифри відлічується заданий час, після чого розмова вважається почалося. Це призводить до того, що в базу даних вихідних дзвінків потрапляють дані про розмови, які на насправді не велися (наприклад, коли дзвонить чекав відповіді більш заданого часу, а потім повісив трубку).

Оскільки подібних випадків буває досить багато, то результуюча база даних може бути сильно "засмічена" неправильною інформацією. Якщо для домашніх умов це ще може бути прийнятним, то для організацій, де за день проводиться безліч дзвінків, невірна інформація сильно утруднить обробку отриманих даних. До того ж підрахунок сумарної вартості розмов, звичайно, буде неточним.

Для мінімізації цієї проблеми в реєстраторі початок розмови визначається відстеженням сигналу контролю посилки виклику (КПВ) станції. Для цього і служить компаратор DA1. Як вже було сказано, після закінчення набору номера компаратор підключається до лінії. Живиться він через резистор R5, а сигнал з лінії надходить на нього через конденсатор C3 і резистор R10. При цьому програма контролера аналізує сигнал з виходу компаратора, зіставляючи його з частотою сигналу контролю посилки виклику. Ця частота має бути 425±2 Гц.

Після того, як відбудеться з'єднання, хто телефонує абонент почує сигнал КПВ, викликуваному буде подаватися сигнал виклику, а контролер виявить сигнал частотою 425 Гц. Тривалість посилки сигналу КПВ близько 1 с. а пауза між посилками - не більше 5 стор. Таким чином, зареєструвавши відсутність сигналу КПВ протягом більше 5, можна вважати, що на іншому кінці зняли трубку (почався розмова). В реальному пристрої цей час прийнято трохи більше (10 с), а рахунок тривалості розмови починається з 5 с. т. е. точність становить ±5 с.

Однак частота КПВ не завжди дорівнює 425±2 Гц. вона може значно відрізнятися в залежно від того, на яку АТС проводиться виклик. Програма контролера дозволяє виявляти частоту в межах 410...440 Гц. але й цього не завжди буває достатньо. Якщо частота сигналу контролю посилки виклику виходить за ці межі, розмова вважається розпочатим через 20 с після закінчення набору останньої цифри у разі міського дзвінка і через 40 с - у разі міжміського.

Потім реєстратор проводить підрахунок тривалості розмови і чекає, коли трубка буде покладена на апарат. Як тільки це відбудеться, контролер зафіксує отриману інформацію в пам'яті і передасть її програмі комп'ютера (якщо вона запущена). Об'єму енергонезалежної пам'яті достатньо для запам'ятовування приблизно 100 внутрішньоміських дзвінків. Після цього контролер повертається в стан очікування зняття трубки.

Вже згадувалося, що зв'язок з комп'ютером здійснюється через оптопари U5.1, U5.2 Прийом даних проводиться з колектора оптрона U5.2. Для передачі запалюється світлодіод оптрона U5.1. при цьому на висновках порту комп'ютера RTS і DTR програмно виставляються відповідно позитивний і негативний рівні для живлення транзисторів VT2, VT3. Коли світлодіод оптопари U5.1 погашений, її транзистор закритий. Тому транзистор VT2 закритий, a VT3 відкрито і на прийомний висновок порту R. надходить негативний рівень. При включенні оптрона U5.1 транзистор VT2 відкривається, VT3 закривається і на комп'ютер надходить позитивний рівень.

Для включення оптрона U5.1 потрібен великий струм (більше, ніж струм. який можна споживати від телефонної лінії). Тому після передачі кожного байта контролер робить паузу для зарядки накопичувального конденсатора С1, внаслідок чого швидкість передачі даних буде невелика, близько 100 біт/с. Але і цього цілком достатньо для цих цілей. Якщо живити пристрій від батареї гальванічних елементів, то швидкість можна підвищити до 300 біт/с. Для цього необхідно додається програмі прошивки вміст за адресами 0x01C-0x01F змінити на нуль.

Кварцовий резонатор ZQ1 задає частоту роботи внутрішнього тактового генератора контролера DD3. Мультивібратор на елементах DD1.1 і DD1.2 призначений для роботи внутрішніх годин контролера, час на яких коригується при кожному обмін даних з комп'ютером. Для збереження свідчень годин при короткочасних відключення від лінії служить іоністор С2. Він заряджається через резистор R3 з високим опором (100 кОм). щоб не шунтувати ланцюг живлення контролера у момент включення пристрою. Тому зарядка ионистора С2 триває досить довго, близько 5...6 годин, а його ємності вистачає на 20...30 хвилин роботи реєстратора, чого цілком достатньо для підтримки роботи годин при недовгому зникненні напруги живлення.

Замість ионистора С2 допустимо встановити батарею гальванічних елементів з напругою 3...4.5 В. Якщо є впевненість, що телефонна лінія відключатися не буде, можна не встановлювати ні іоністор. ні батарею.

Пристрій не вимагає налагодження і повинно працювати відразу після збирання. Біти конфігурації для прошивки: генератор LP. сторожовий таймер може бути включеним або вимкненим.

Реєстратор працездатний на стандартних телефонних лініях з напругою 48...60 Ст. На спарених лініях і на АТС типу "Квант" він працювати не буде.

Обробна програма розроблена в середовищі C++Builder V1.0 і являє собою стандартну многооконную програму для операційної системи Windows (рис. 2).

Програма в своїй роботі використовують BDE (Borland Database Engine), яка частково включена в дистрибутив. Тому його обсяг вийшов щодо великим і становить 2.3 МБайт. Процес установки простий: від користувача потрібно тільки задати папку для файлів програми. За замовчуванням програма буде встановлена в "Program Files". Після установки програма розмістить свій ярлик меню "автозавантаження". Якщо при кожному включенні комп'ютера немає необхідності її запускати, цей ярлик видаляють вручну.

Робота програми ґрунтується на аналізі отриманих з реєстратора цифр набраного номера. За нього вона може визначати, чи є дзвінок внутрішніх міських, міжміських або міжнародних, знаходити у своїй базі даних відповідний місто і ім'я абонента (якщо вони задані заздалегідь), підраховувати вартість дзвінка. Програма забезпечена докладною контекстної довідкою, більшість команд продубльовані клавішами швидкого доступу і відповідними кнопками, забезпеченими спливаючими підказками. Для того, щоб дізнатися призначення тієї чи іншої кнопки, треба просто затримати курсор над нею.

Після першого запуску програми відкривають вікно "Налаштування" (через головне меню) і у вкладці "Місцезнаходження" зазначають код країни (для Росії - "7") і код міста, де буде знаходиться реєстратор. Якщо вихід в місто здійснюється через додаткову цифру, то її також слід зазначити. Після цього потрібно натиснути на кнопку "Так". Потім необхідно встановити зв'язок з реєстратором. Через меню "Реєстратор -> Вибір порту" вкажіть послідовний порт, до якого підключається реєстратор і через "Реєстратор -> Установка зв'язку" перевірте зв'язок з реєстратором. Після встановлення зв'язку зробіть початковий скидання всіх налаштувань енергонезалежній пам'яті реєстратора через меню "Реєстратор -> Скидання". Тепер пристрій готовий до роботи.

Як відбувається сам процес роботи пристрою? Як тільки ви зніміть трубку з апарату, у рядку стану і в значку програми на панелі завдань буде написано: трубка знята і вказаний номер телефону. Потім наберіть який-небудь номер. Під час набору в рядку стану і в значку програми ви побачите набираються цифри. Після того, як процесор реєстратора визначить, що набір закінчено, з'явиться напис "Набір закінчено" і по виявленню сигналу контролю посилки виклику буде написано "З'єднання", а по зникненню повідомлення - "Розмова". У момент початку розмови включиться лічильник тривалість переговорів. Коли розмова закінчиться, дані про це дзвінку будуть передані в комп'ютер.

Щоб побачити ці дані, необхідно відкрити таблицю вихідних дзвінків - "Відкрити -> Дзвінки". Тут буде представлена вся наявна база даних входять дзвінків. Для кожного з них є поля з зазначенням дати і часу закінчення розмови, коду країни, міста, номера абонента, якому був адресований дзвінок, номера телефону, з якого дзвонили (один з п'яти), назви країни, міста, імені абонента, тривалість розмови, ціни за одиницю використаного часу і сумарної вартості розмови, що відбулася. Після відкриття цієї таблиці головне меню програми буде замінено на меню таблиці дзвінків.

Враховуючи, що записи про дзвінки з часом накопичується досить багато, передбачена можливість звуження обсягу їх перегляду. Наприклад, через команду Сортування -> За період" можна переглянути дані про дзвінки за певний період часу, скажімо, за останній місяць. А використовуючи одночасно команди Сортування -> Міжміські та міжнародні" і "Сервіс -> Сума за період" можна визначити приблизну суму оплати міжміських дзвінків за місяць. Через пункти меню Перегляд -> ..." переглядають дзвінки, зроблені з конкретного телефону. Так як програма багатовіконна, то одну і ту ж таблицю ви зможете відкривати кілька разів одночасно і переглядати в різних варіантах. Висновок на друк здійснюється через "Сервіс -> Друк". Цей пункт виводить форму попереднього перегляду (QuickReport). з якої натисканням кнопки Print report" форма виводиться на принтер.

Крім таблиці прийнятих дзвінків у програмі є ще дві таблиці. Одна з них називається "Записна книжка" (рис. 3), інша - "Таблиця тарифів" (рис. 4). В першою містяться коди країн і міст, номери та імена абонентів. З цієї таблиці інформація переноситься в таблицю вихідних дзвінків відповідно до отриманих від реєстратора номером. "Записну книжку" можна редагувати, додавати нові номери та імена абонентів або видаляти непотрібні. Є можливість пошуку в ній потрібних відомостей.

Тарифікація здійснюється на основі інформації, що міститься в "Таблиці тарифів". У ній задаються тарифи окремо на кожен напрямок, яке прив'язане до конкретного кодом міста або країни. Потім вони ставляться в відповідність прийнятим з реєстратора номером і поміщаються в таблицю дзвінків. Такий підхід до тарифікації дещо спрощено, але зате він дозволяє абонентам не користуватися інформацією про тарифних зонах, з придбанням якої і підключенням до програми можуть виникнути складності. Від користувача вимагається тільки задати тарифи для тих міст, які він може дзвонити.

Завдання тарифів відбувається наступним чином. В таблиці тарифів потрібно додати новий рядок натисканням кнопки "+". Після цього вводять код країни і міста і назва пункту призначення. Для далекого зарубіжжя можна задавати тільки код країни, код міста - не обов'язково. Необхідно також вказати дату набрання тарифу чинності. У зв'язку з тим. що тарифи періодично змінюються, то за вказаною дату програма визначить, який з діючих тарифів для даного пункту дійсний на момент конкретного дзвінка. Припустимо, що для певного міста було задано тариф, чинний з 01.01.99. Потім був введений новий тариф з 01.06.99. Таким чином, для цього міста повинні бути задані обидва тарифу. При цьому дзвінки, зроблені в період з 01.01.99 по 01.06.99. будуть обраховуватися за першим тарифом, а пізніше - з другого. Якщо дзвінок був зроблений до 01.01.99. то вважатиметься, що його вартість дорівнює нулю.

Після створення нового рядка в таблиці тарифів потрібно натиснути на кнопку "Зберегти зміна рядка", тобто запам'ятати нову запис в базі даних. Потім необхідно двічі клацнути мишею по цьому рядку. При цьому з'явиться діалогове вікно завдання самого тарифу (рис. 4). Воно дозволяє вводити кілька різних тарифів протягом доби (наприклад, денний і нічний), задавати одні тарифи, що діють в робочі дні. а інші - у вихідні та свята.

Припустимо, треба задати денний тариф, що діє з 07:00 до 23:00. і нічний на інший час. Спочатку потрібно перейти в перше вікно "Час:" і задати "06:59:59". У вікні "Тариф Р задати нічний тариф. При цьому у другому вікні "Час з:" з'явиться 07:00:00. Потім у другому вікні "Час:" задаємо час "23:00:00", а у вікні "Тариф 2" - денний тариф. При цьому в третьому вікні "Час:" з'явиться час "23:00:01". Далі необхідно задати у вікні "Тариф 3" "Час: "23:59:59" та нічний тариф.

Якщо у вихідні та святкові дні існує окремий тариф, то слід перейти на вкладку "Додатково" і встановити прапорець "Окремий тариф у вихідні та святкові дні". Після цього вкладка "Вихідні та свята" стане доступною і можна буде задати відповідний тариф. Також у вкладці "Додатково" видно таблиця святкових днів, яку можна редагувати. При встановленому прапорці "Посекундно" програма вважає, що тариф вказано за секунду. Якщо після з'єднання оплата береться відразу за якийсь час, то вона задається у вікні "Враховувати... перших хвилин (секунд)".

Крім основних функцій пропонована система може виконувати ряд допоміжних. У вікні "Налаштування" у вкладці "Блокування" можна встановити прапорці заборони міжміських дзвінків окремо для кожного телефону. При цьому, якщо перша цифра набраного номера - "8", подальший набір стає неможливим. Також блокується набір будь-якого номера з першого телефону (ТА1). Оскільки цим телефоном вважається той. який підключений безпосередньо до лінії, то ця можливість еквівалентна захист від несанкціонованого використання лінії.

Після будь-якої зміни прапорців у вкладці "Блокування" і натискання кнопки "Так" відбувається передача інформації про настройках в реєстратор. У тому разі, коли реєстратор не з'єднаний з комп'ютером, користувач отримає відповідне повідомлення.

Якщо ярлик програми знаходиться в папці "Автозавантаження", зручно встановити прапорець "Запускати програму в згорнутому вигляді" у вкладці "Додатково" вікна "Налаштування". Це дозволить програмі працювати у фоновому режимі, а користувач зможе контролювати стан телефонів, не розгортаючи програму, за повідомлень на значку програми в панелі завдань.

Дистрибутив програми і прошивка PIC-контролера.

Автор: Ст. Кулаков