Aplicații de timp real

Țîr Șerban

Introducere

Aplicațiile de timp real reprezintă o clasă de produse software caracterizate prin parametrii specifici. Aceste aplicații sunt dezvoltate cu ustensile speciale de dezvoltare și sunt destinate exploatării pe platforme cu sisteme de operare speciale (sisteme de operare concepute pentru acest tip de aplicații).

Dintre cele mai populare sisteme de operare de timp real menționăm: QNX pentru platforme bazate pe microprocesoare din familia Intel i86 și OS/9 – pentru platforme cu microprocesoare Motorola din seria 68xxx. Semnalăm, de asemenea, existența unor module software de tip add-on, care transformă sistemele de operare comerciale de uz general (MS-DOS, MS Windows NT, SCO UNIX) în sisteme de operare cu facilități și funcționalități de timp real.

În lumea platformelor bazate pe microprocesoare din familia Intel i86, liderul mondial in tehnologia sistemelor de operare de timp real este firma Canadiana QNX Software Systems Ltd. care a dezvoltat sistemul de operare QNX de la care și-a și luat numele. QNX a ajuns acum la versiunea 4.24 și este pe deplin compatibil cu setul de standarde POSIX , adăugând în plus funcții legate de procesarea în timp real.

Ce înseamnă sistem de operare de timp real

Un sistem de operare este considerat de timp real, dacă se poate garanta un timp maxim de răspuns, cum ar fi de pildă intervalul de timp scurs de la apariția unei întreruperi hardware, până la execuția primei instrucțiuni din rutina de deservire a întreruperii respective, interval numit latență de întrerupere. Pentru exemplificare, în cazul sistemului de operare de timp real QNX și a unui sistem cu microprocesor Intel Pentium 133 MHz, latența de întrerupere este de 4,3 microsecunde. Este necesar ca valorile maxime admisibile ale acestor intervale timp să fie bine precizate de către proiectantul sistemului de operare de timp real, deoarece depășirea lor este inadmisibilă, indiferent de gradul de utilizare al microprocesorului, de ocuparea memoriei sau cantitatea ei etc.

Exemplu de aplicație specifică de timp real

În cele ce urmează, dorim să prezentăm o aplicație specifică de timp real, dezvoltată de firma E.D.C.G din București și care rulează sub sistemul de operare de timp real QNX. Aplicația este în exploatare la Secția de Cale Ferată Roșiori și are ca scop supravegherea și comanda alimentării cu energie electrică a tuturor elementelor din subordinea secției, care sunt dispuse în teren de-a lungul a 180 kilometri de cale ferată. Aceste elemente sunt grupate în:
• 3 stații de tracțiune
• 4 posturi de secționare
• 5 posturi de subsecționare
• 5 stații pentru comanda de la distantă a separatoarelor.
• 12 stații cu elemente de comutație manuală

Scopul aplicației este acela de a înlocui vechea instalație total uzată, atât fizic, cât și moral cu o nouă structură formată din punct de vedere hardware dintr-un sistem compatibil IBM PC dotat cu o interfața de comunicație specifică (PROFIBUS), și din punct de vedere software, din programul de aplicație mai sus menționat. Funcțiile vechiului sistem au fost îmbogățite cu altele noi. Aplicația rezultată poate realiza:
• urmărirea, în timp real, pe tabloul sinoptic din dispecerat a situației elementelor de comutație și a avariilor (sunt monitorizate 240 de dispozitive de comutație dintre care 120 pot fi telecomandate);
• urmărirea pe tabloul sinoptic a elementelor de comutație manuală a căror poziție dorită este transmisă telefonic de personalul din stații;
• modificarea stării elementelor de comutație telecomandabile de către dispecer chiar de la sediul dispeceratului feroviar Roșiori;
• crearea unui jurnal de evenimente apărute (consolog);
• afișarea condițiilor de circulație apărute în urma scoaterii de sub tensiune a unor porțiuni de fir;
• prelucrarea statistică a evenimentelor apărute;
• înregistrarea și redarea convorbirilor operative purtate între dispecer și personalul turant din stații;
• realizarea tabloului sinoptic pe mai multe monitoare, datorită facilităților Photon microGUI care permite funcționarea unui sistem compatibil IBM PC standard în configurație cu mai multe card-uri video uzuale (În aplicație s-au utilizat S3 Trio. În afara instalării driver-ului pentru mai multe card-uri video, nu se mai fac alte modificări speciale, programarea interfeței grafice făcându-se ca și in cazul unei placi video cu un număr echivalent de puncte egal cu suma de puncte prin care se reprezintă interfața pe fiecare card video.).

Aplicația este tipică de timp real și a fost dezvoltată cu un efort relativ redus (patru persoane în decurs de patru luni). Aceasta performanță se datorează pe lângă îndemânarea programatorilor și facilităților sistemului de operare de timp real QNX, a interfeței Photon microGUI și a ustensilelor de dezvoltare disponibile în Photon Application Builder interfațate cu compilatorul Watcom C/C++ 10.6 pentru QNX.

Structura aplicației

Pentru a ușura dezvoltarea, a exploata la maxim performanțele sistemului și pentru a asigura o extindere ulterioară fără dificultăți, aplicația a fost împărțită în mai multe taskuri care se execută simultan. Fiecare task este dedicat îndeplinirii unei funcții specifice. (vezi figura „Structura aplicației”.)

Lansarea proceselor în execuție simultană se face cu funcții de tip spawn (funcții binecunoscute în sistemele compatibile POSIX). Comunicația între procesele paralele se face prin mai multe modalități standard POSIX, cum ar fi : memorie partajată (share memory), mesaje, semnale, proxy-uri și pipe-uri.

Comunicația cu echipamentele locale de tip rețea PROFIBUS este realizată de task-ul serial. Acesta actualizează ciclic în zona de memorie partajată starea sistemului electroenergetic din fiecare stație și transmite spre execuție comenzile aflate într-o coadă din aceeași memorie partajată.

Modificarea stării sistemului electroenergetic este detectată de task-ul chgdetect. Orice modificare de stare declanșează formarea și transmiterea unui mesaj specific QNX către task-ul sinoptic.

Task-ul sinoptic realizează interfața grafică cu operatorul uman. Acesta actualizează în același timp și fișierele de jurnal cronologic al evenimentelor apărute în sistem.

Determinarea prezenței sau absenței tensiunilor pe fiecare linie se face pe baza datelor din zona de memorie partajată de către task-ul linesfill, valorile calculate fiind apoi înscrise în memoria partajată.

Comenzile preluate de la operatorul uman prin intermediul interfeței grafice sunt formate și înscrise în coada din memoria partajată de către task-ul output.

Task-ul beep este activat de către task-ul sinoptic pentru avertizarea sonoră a operatorului uman în cazul apariției de modificări în starea sistemului. Semnalele sonore sunt diferențiate în funcție de gravitatea evenimentului apărut.

De înregistrarea, respectiv redarea, convorbirilor operative se ocupa task-ul sound. Acesta este implementat peste driverul Audio (pentru placi de sunet) al sistemului de operare QNX.

Prelucrarea statistică a evenimentelor apărute în sistemul de alimentare cu energie electrică se realizează periodic de către task-ul makeproto.

Cel mai bun argument în favoarea bunei calități a aplicației este faptul că funcționează în exploatare curentă din luna decembrie 1997 fără întrerupere, zilnic, 24 de ore din 24.


BYTE România - iunie 1998


(C) Copyright Computer Press Agora