ДВ Індустріальний Комп'ютер Ltd.
 | Новини | Продукти | Підтримка | Замовити |   
 Приклад використистання WatchDog таймера.

WatchDog таймер призначений для боротьби із зупинкою “завислого" комп'ютера. Як правило комп'ютер майже ніколи не “зависає”. Але якщо він “завис” і “зупинився”, то звичайно на місці або нікого немає, щоб натискувати кнопку “скидання” або ніхто не знає де саме знаходиться “завислий" комп'ютер оскільки звичайно з ним немає проблеми. Саме для цієї мети і служить WatchDog таймер – автоматично перезапустити “завислий" комп'ютер. При включенні контроллера WatchDog таймер вимкнений і для того, щоб його включити по послідовній лінії послается команда "Esc[WW" з необхідним значенням лічильника таймауту W (число тиків від 0 до 255, кожний тик рівний 0,3 сік). Для того, щоб вимкнути таймер, встановити таймаут=0 - "Esc[W0". Управлінням завантаженням лічильника і контролем його вмісту займається спеціальна програма-драйвер. Для безперервної роботи комп'ютера програма-драйвер повинна періодично встановлювати таймаут для уникнення “гонгу” і подальшого замикання контактів “сбросу”. Якщо комп'ютер “залипнув”, то прграмма-драйвер перестає посилати “свіжі команди” установки таймауту і WatchDog таймер “вдарить в гонг” - замикае контактів “сбросу”. WatchDog таймер реалізований так, що він “ударяє” тільки один раз. Це дозволяє уникнути “ударів”, що повторюються, під час перевірки файлової системи, яка вірогідніше за все слідує після скидання (або при першому включенні контроллера/комп'ютера). Після того, як комп'ютер знову “підіймається”, програма-драйвер повинна себе повторно дозволити (послати команду Esc[WW з необхідним значенням таймауту). WatchDog таймер гарантує, що система завжди здатна виконувати програми. Він не гарантує, що программа все ще виконується і озивається. Для того, щоб перевірити ці дві речі можна використовувати crontab entry для Linux/UNIX або інші програми. Можна бути упевненим у виконанні головної програми, доти поки працює crontab, оскільки WatchDog таймер забезпечує це. Наприклад, можна створити скрипт, який автоматично запускається за допомогою cronjob і завантажує веб-сторіночку з деякого вебсервера кожні 50 секунд, але потрібно розуміти, що вебсервер може бути повністю завантажений безліччю запитів і тому це нормально що не може відповісти скрипту.

В нашому прикладі ми створили скрипт watchdog.cgi для інтерактивного вивчення можливостей WatchDog таймера. Приклад реалізований на мові программування Perl. Робота скриптів перевірялася в ОС SuSE Linux але вони також повинні запрацювати в будь-якій іншій Unix подібній операційній системі. Функції інтерфейсу з контроллером, винесені в окремий модуль TeleServ.pm. Необхідно переписати цей файл в який-небудь каталог і відповідно визначити змінну оточення PERLLIB. Простіше всього - це додати у файл /etc/profile рядок:

    PERLLIB=”назва вашого каталога”
    export PERLLIB

Можна вказати каталог пошуку модулів безпосередньо в самому скрипті, додавши в його початок директиву:

    use libs “назва вашого каталога”

Такий шлях кращий, оскільки скрипт запускається в оточенні web-серверу Apache у вигляді CGI програми. Інформацію про поточні значення частот обертання вентиляторів значень напруги і температури віддаленого хоста можна одержувати у вікно браузера вашого комп'ютера. Для цього на віддалений хост з підключеним контроллером інсталюється і запускається web-сервер і скрипт monitoring - що забезпечує такий сервіс. Цей скрипт перевірявся зі встановленим на контрольований (віддалений) хост web серверу Apache. В настройках Apachе повинно бути дозволено виконання CGI програм (за подробицями звернетеся до документації до web серверу). Скрипт watchdog потрібно скопіювати в каталог де знаходяться CGI програми контрольованого хоста. Для перевірки, можна запустити web браузер і набрати в адресному рядку локальний URL скрипта, наприклад:

    http://127.0.0.1/cgi-bin/watchdog

на екрані з'явитися сторінка з наступною таблицею:



В полі Refresh time вкажіть час автоматичного оновлення інформацію на екрані браузера. Комфортний час 2-3 секунди.

В полі WatchDog timeout вкажіть початкове значення лічильника (наприклад 50 секунд).

В полі Update time вкажіть час оновлення початкового значення лічильника (наприклад 30 секунд).

Клік на кнопку start запускає сторінку на безперервне оновлення (з періодом вказаним в Refresh time), “зводить” лічильник таймера в початкове значення і дозволяє спостерігати як періодично значення лічильника зменшується а потім знову встановлюється в початкове значення. Бажано не підключати коннектор J13 контроллера до коннектора “скидання” на материнській платі коли підбираються різні початкові значення лічильника і час оновлення. Інакше всякий раз коли значення лічильника обнулятиметься, комп'ютер йтиме на перезавантаження.

Якщо хост підключений до мережі, то в адресному рядку вашого браузера необхідно ввести URL скрипта і спостерігати таку ж картинку, але вже знаходячись на відстані від контрольованого хоста.


На головну | Зв'язатися з нами | Про нас |