Sunteți pe pagina 1din 4

CAP. 3.

PROGRAMAREA SISTEMATICĂ A APLICAŢIILOR DE


SUPRAVEGHERE ŞI CONDUCERE ÎN TIMP REAL A PROCESELOR
INDUSTRIALE

Un sistem de calcul pentru conducerea unui proces reprezintă o unitate dialectică între
componenta hardware a sa, cea care defineşte configuraţia sistemului, şi componenta sa software,
care constituie totalitatea programelor sistemului. Programele implementate pe un astfel de sistem
de calcul se împart în două mari categorii:
a) programe de sistem;
b) programe de utilizator sau de aplicaţie.
Programele de sistem - sunt programe care au un caracter universal şi sunt parte
componentă a unui anumit tip de calculator, independent de procesul pe care-l va conduce. Acest
ansamblu de programe formează ceea ce se numeşte sistemul de operare al calculatorului şi are
rolul de a asigura executarea corectă a sarcinilor sale. O funcţie foarte importantă a SO este aceea
de a asigura interfaţa între calculator şi utilizator, altfel spus el este interpretul cerinţelor
utilizatorului exprimate într-un limbaj adecvat, cerinţe care trebuie satisfăcute cu ajutorul
instrucţiunilor maşină prin planificarea adecvată a componentelor hardware (HW) a sistemului de
calcul (SC).
Natura funcţiilor, precum şi modul în care acestea sunt realizate, determină atributele care
caracterizează şi departajează sistemele de operare.
Sistemele de calcul destinate conducerii proceselor industriale trebuie să posede în mod
necesar SO în timp real cu facilităţi multitasking. Privit prin prisma utilizatorului şi a programelor
de aplicaţie, ansamblul de programe al acestui tip de SO poate fi împărţit în două categorii:
- programe necesare în faza de pregătire, elaborare şi testare a programelor de aplicaţie
(editorul de texte, compilatorul, link-editorul, debuggerul etc.), numite, din acest motiv, şi
programe de serviciu;
- programe necesare în etapa de conducere, care se leagă cu programele utilizatorului în
faza de dezvoltare, formând aplicaţia dedicată care se implementează pe echipamentul de
conducere.
Programele de utilizator (de aplicaţie sau de conducere), în opoziţie cu programele de
sistem, au un caracter specific, funcţie de proces, ele fiind o imagine a ceea ce se întâmplă în
proces.
O particularitate esenţială a ansamblului programe de sistem - programe de aplicaţie constă
în aceea că acestea trebuie să realizeze atributele de timp real, adică să precizeze cu exactitate
locul şi timpul desfăşurării evenimentelor din procesul condus. Pentru programarea sistemelor de
calcul care să răspundă acestor cerinţe se folosesc două tehnici de bază:
1. Utilizarea mecanismului de întreruperi al microprocesorului şi a ceasului de timp real,
problemele specifice timpului real fiind rezolvate de la caz la caz prin tehnici mai mult sau puţin
unitare şi sistematice. Acest procedeu este mai puţin accesibil unui utilizator obişnuit necesitând
un efort mai mare precum şi cunoştinte fine de programare în limbajul microprocesorului.
Metoda are însă avantajul că programul, odată pus la punct, oferă un optim din punct de vedere al
eficienţei şi al timpului de răspuns.
2. Utilizând facilităţile multitasking ale unui program special creat, numit EXECUTIV de
timp real implementat pe echipament în acest scop. Acest al doilea procedeu este mai avantajos
pentru utilizator din punct de vedere al programării. Utilizatorul are posibilitatea să realizeze
cerinţele de timp real ale aplicaţiei utilizând serviciile pe care le poate oferi acest EXECUTIV,

3-1
servicii care apar în programul utilizatorului sub forma unor apeluri de subrutine (instrucţiuni
CALL) sau macrouri de apel. Aceste subrutine, parte componentă a EXECUTIVULUI (pe care
utilizatorul le poate doar utiliza, dar nu modifica), poartă denumirea de directive sau primitive,
deoarece la nivelul taskului se comportă ca şi instrucţiunile, deci sunt indivizibile şi
neîntreruptibile. Ele au o semantică uşor accesibilă şi pot fi utilizate fară a fi necesară cunoaşterea
modului lor de implementare în SW-ul EXECUTIVULUI. Pentru a şti dacă o directivă a lucrat
sau nu, unul din parametrii ei, numit parametru de stare al directivei ne indică acest lucru prin
diferitele valori pe care le returnează.
Astfel, programul aferent unei anume aplicaţii, reprezintă un ansamblu de instrucţiuni scrise
de utilizator în care sunt incluse şi cererile de servicii către EXECUTIV în vederea obţinerii
atributelor de timp real. În realitate, EXECUTIVUL foloseşte mecanismul de întreruperi şi ceasul
de timp real, dar aceasta este o activitate programată o singură dată şi utilizată ulterior ori de câte
ori este nevoie. În felul acesta programatorul va fi preocupat mai puţin de aspectele particulare
ale implementării diferitelor comenzi, concentrându-se strict asupra organizării programului de
aplicaţie. În plus, performanţele acestor programe sunt comparabile cu cele din cazul anterior
oferind însă avantaje nete în ceea ce priveşte flexibilitatea, extensibilitatea şi portabilitatea lor.

Arhitectura programelor de aplicaţie

Bazându-ne pe existenţa unui EXECUTIV în timp real putem aborda în mod sistematic
dezvoltarea programelor de aplicaţie pe baza următoarelor elemente:
1. Definirea conceptului de "echipament virtual de conducere", un echipament ipotetic
(care nu există fizic), dar care înglobează caracteristicile unor echipamente de conducere
existente, cărora le va fi destinat programul de aplicaţie. Aceste echipamente au o structură de
tipul celei din Fig. 3.1.

Fig. 3.1.

Ca atare, configuraţia echipamentului virtual, poate fi definită, din punct de vedere al


utilizatorului, astfel:
- unitatea centrală cu microprocesor I80x86 sau de alt tip;
- modul de intrări analogice;
- modul de ieşiri analogice;
- modul de intrări numerice;
- modul de ieşiri numerice;
- consolă operator (display + tastatură + imprimantă);
- 8 sau mai multe nivele de întrerupere;
- ceas de timp real;
- interfaţă de comunicare cu nivelul ierarhic superior.
Utilizatorul va fi preocupat de modul de scriere a aplicaţiei, având în minte structura acestui
echipament virtual şi mai puţin modul cum se comandă concret modulele specificate mai sus.

3-2
2. Scrierea şi organizarea executivului astfel încât să fie compatibil cu conceptul de
echipament virtual. Aceasta presupune organizarea lui pe două categorii de module SW
(software) având următoarele caracteristici:
- o primă categorie de module nu trebuie să conţină nimic legat de structura concretă a
vreunui echipament fizic, adică să fie independentă de echipament, având deci o portabilitate de
100%;
- a doua categorie de module pe care o vom numi "interfaţa între echipamentul virtual şi
echipamentul real" depinde de echipament şi formează o bibliotecă ce conţine o serie de
proceduri specifice, purtând nume dedicate.
În felul acesta, odată scris EXECUTIVUL şi puse la punct interfeţele cu diferitele
echipamente reale, utilizatorul îşi scrie programul de aplicaţie pe un sistem de dezvoltare
utilizând serviciile executivului şi procedurile de interfaţă aferente acestui sistem. După scrierea,
depanarea şi testarea programului, schimbând interfaţa se va obţine aplicaţia destinată
echipamentului fizic real (ţintă). Comutarea de la o interfaţă la alta se realizează link-editând
programul cu o bibliotecă sau alta, funcţie de situaţie, programul nu suferă nici o modificare,
procedurile din interfaţă având, aşa cum am mai spus, nume dedicate.
Din cele de mai sus rezultă următoarea arhitectură a programului de aplicaţie:

Fig. 3.2.

Pentru clasa echipamentelor de conducere, "interfeţele" ar trebui să conţină următoarele


subrutine şi funcţii:
- subrutină de programarea sistemului prioritar de întreruperi (circuitelor din familia
8259);
- subrutină de poziţionare şi citire a măştilor circuitului 8259;
- subrutină de achitare a întreruperii (uzual se lucrează în modul nespecificat);
- funcţie pentru preluarea unui caracter de la tastatură în urma unei întreruperi;

3-3
- subrutină de transmisie a unui caracter la display în urma unei întreruperi de tip TxRDY
(interfaţă gata de transmisie);
- subrutină de programare a circuitului 8253 (ceasul de timp real);
- subrutina de programare a circuitului 8251 (USART - comunicaţii asincrone seriale);
- subrutină de selecţie a canalului analogic de intrare şi declanşare a conversiei analog -
numerice;
- funcţie de preluare a valorii de la convertorul analog-numeric în urma unei întreruperi de
tip EOC (End Of Convertion);
- subrutină pentru ieşiri numerice;
- subrutină pentru ieşiri analogice (transmise prin intermediul convertorului numeric
analogic);
- subrutină pentru tratarea intrărilor numerice.
Pe baza celor spuse mai sus, programarea sistemică a unei aplicaţii de supraveghere şi/sau
conducere în timp real a unui proces presupune parcurgerea următoarelor etape:
- scrierea EXECUTIVULUI de timp real compatibil cu conceptul de echipament virtual;
- scrierea "interfeţelor" pentru clasa de echipamente avută în vedere;
- descompunerea în taskuri a programului de aplicaţie având în vedere ca taskurile
componente să fie disjuncte sau să interacţioneze cât mai slab;
- programarea pe sisteme de dezvoltare a aplicaţiei (descompusă în taskuri) utilizând
principiile programării paralele şi serviciile EXECUTIVULUI de timp real;
- depanarea şi testarea în mediu simulat a programului astfel obţinut;
- link-editarea programului cu interfaţa corespunzătoare echipamentului real;
- implementarea aplicaţiei pe echipamentul real.
Primele două etape, deşi necesită un efort de programare considerabil, se parcurg o singură
dată, rezultatele putând fi folosite în toate aplicaţiile ulterioare destinate unei anumite clase de
echipamente.
Următoarele două etape par, la prima vedere, că trebuie complet dezvoltate, în mod
specific, pentru fiecare aplicaţie în parte. Dar, şi în aceste cazuri, datorită descompunerii
programelor în taskuri, pot fi refolosite, de la o aplicaţie la alta, o serie de produse program
reprezentând taskuri comune mai multor aplicaţii (taskuri de achiziţie şi conversie de date din
proces, taskuri de reglare etc.). Se obţine astfel, şi la acest nivel, posibilitatea de tipizare şi
refolosire a unor produse program, ceea ce va uşura şi va reduce substanţial activitatea de
programare a unei aplicaţii.
De asemenea, procedând în această manieră, programarea unei aplicaţii poate fi începută de
un programator sau de un grup de programatori şi poate fi modificată şi dezvoltată fără probleme
de alt grup de programatori care sunt familiarizaţi însă cu metodologia de programare prezentată
mai sus. În cazul realizării unei aplicaţii după concepţii mai mult sau mai puţin particulare şi
nesistematice, acest deziderat este, în general, foarte greu de realizat.
În cele ce urmează, după prezentarea unor probleme specifice sistemelor de operare în timp
real, va fi prezentată modalitatea de proiectare şi scriere a unui EXECUTIV în timp real.

3-4

S-ar putea să vă placă și