14.06.2014 Views

Sisteme de conducere cu logica flexibila

Sisteme de conducere cu logica flexibila

Sisteme de conducere cu logica flexibila

SHOW MORE
SHOW LESS

Transform your PDFs into Flipbooks and boost your revenue!

Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.

<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 1<br />

SISTEME DE CONDUCERE CU LOGICA<br />

FLEXBILĂ<br />

Structurile <strong>de</strong> comandă în <strong>logica</strong> cablată dis<strong>cu</strong>tate în capitolul anterior sunt<br />

pretabile pentru <strong>conducere</strong>a unor roboţi sau manipulatoare caracterizată printr-o<br />

rigiditate <strong>de</strong>osebită traiectoriilor <strong>de</strong> mişcare. În foarte <strong>de</strong>se cazuri, modificările<br />

tehnologice ale instalaţiilor, alterarea unor parametrii ai sistemului mecanic,<br />

condiţii noi impuse <strong>de</strong> o sporire a productivităţii, o modificare a sistemului <strong>de</strong><br />

restricţii etc, <strong>de</strong>termină necesitatea unor corecţii ale parametrilor mişcării. O astfel<br />

<strong>de</strong> corecţie reclamă existenta unor structuri <strong>de</strong> <strong>conducere</strong> <strong>de</strong> tip nou, flexibile,<br />

capabile să preia fie modificări mici ale parametrilor legii <strong>de</strong> comandă sau chiar<br />

schimbări totale ale acesteia.<br />

În cadrul acestui capitol vor fi abordate configuraţiile <strong>de</strong> bază ale acestor<br />

sisteme, configuraţii bazate pe implementarea automatelor <strong>de</strong> <strong>conducere</strong> prin<br />

sisteme <strong>de</strong> memorii PROM (REPROM) sau prin structuri microprogramate.<br />

8.1. Automate implementate prin memorii PROM<br />

(REPROM)<br />

8.1.1. Structura <strong>de</strong> bază<br />

Cantitatea relativ mare <strong>de</strong> informaţii pe care o poate memora, posibilitatea<br />

reactualizării acestei informaţii pre<strong>cu</strong>m şi robusteţea generală a întregului sistem<br />

fac ca memoriile <strong>de</strong> tip PROM (REPROM) să reprezinte un suport <strong>de</strong> stare i<strong>de</strong>al<br />

pentru <strong>conducere</strong>a unui robot. Organizarea datelor în memorie, alocarea unor<br />

câmpuri fixe pentru anumite tipuri <strong>de</strong> informaţie oferă, <strong>de</strong> asemenea, facilitaţi<br />

<strong>de</strong>osebite atât în partea <strong>de</strong> proiectare a sistemului <strong>de</strong> <strong>conducere</strong> cât şi, în special, în<br />

partea <strong>de</strong> analiză şi testare a acestuia.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 2<br />

<strong>cu</strong>vânt intrare<br />

adresă<br />

1<br />

x<br />

2<br />

n<br />

1<br />

' y 2<br />

x<br />

y<br />

tact RR<br />

s<br />

PROM D<br />

PROM G<br />

a<br />

<strong>cu</strong>vânt ieşire comenzi rob.<br />

z 1<br />

z<br />

2<br />

Robot<br />

m <br />

y 1<br />

2<br />

y s<br />

<br />

...<br />

ieşiri secv. rob.<br />

ieşiri num. rob.<br />

Figura 8.1<br />

Automatul а este realizat în principiu din două memorii PROM, prima<br />

<strong>de</strong>numită PROM <strong>de</strong>codificator (PROM D) furnizează vectorul <strong>de</strong> adresă pentru a<br />

doua memorie, generatoare, PROM G. Acesta din urma <strong>de</strong>termină prin vectorul sau<br />

<strong>de</strong> ieşire atât comportarea robotului în momentul respectiv cât şi comportarea<br />

viitoare a automatului.<br />

Mărimile <strong>de</strong> intrare în automat sunt formate direct din mărimile <strong>de</strong> ieşire ce<br />

<strong>de</strong>finesc poziţia robotului. În general, aceste mărimi sunt grupate în variabile<br />

binare,<br />

<br />

x T<br />

n<br />

x x x ,...,<br />

(8.1)<br />

1 , 2<br />

şi variabilele numerice.<br />

xx<br />

<br />

x T<br />

n<br />

<br />

x<br />

x<br />

1<br />

,<br />

2<br />

,..,<br />

(8.2)<br />

Primele <strong>de</strong>finesc starea unor elemente <strong>de</strong> măsurare <strong>de</strong> tipul “tot sau nimic”<br />

(limitatoare <strong>de</strong> poziţie, întrerupătoare, etc.) iar celelalte reprezintă ieşirile unor<br />

traductoare numerice <strong>de</strong> poziţie. Tot în prima categorie intră şi anumite mărimi <strong>de</strong><br />

comandă externe, variabile <strong>de</strong> iniţializare, anumite comenzi prioritare, întreblocări<br />

etc.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 3<br />

Vectorul <strong>de</strong> adresă al memoriei PROM D <strong>cu</strong>prin<strong>de</strong> în afara acestor două<br />

seturi <strong>de</strong> mărimi x, x<br />

şi vectorul y ce <strong>de</strong>fineşte starea la momentul respectiv a<br />

automatului,<br />

<br />

y T<br />

s<br />

y y y ,...,<br />

(8.3)<br />

1 , 2<br />

Ansamblul acestor mărimi x , x , y<br />

constituie <strong>de</strong>ci adresa memoriei<br />

PROM D. Această memorie va realiza <strong>de</strong> fapt o <strong>de</strong>codificare a informaţiilor <strong>de</strong><br />

intrare şi stare şi va furniza la ieşire adresa pentru PROM G. Această memorie<br />

generează la ieşire doua tipuri <strong>de</strong> mărimi, mărime <strong>de</strong> ieşire efectivă a automatului<br />

<br />

z T<br />

m<br />

z z z ,...,<br />

(8.4)<br />

1 , 2<br />

ce <strong>de</strong>termină evoluţia în momentul respectiv t a robotului şi vectorul funcţiilor<br />

se<strong>cu</strong>ndare<br />

<br />

y T<br />

s<br />

y y y ,...,<br />

(8.5)<br />

1 , 2<br />

ce <strong>de</strong>fineşte comportarea la momentul următor a automatului. Aceste ultime<br />

mărimi sunt introduse în registrul <strong>de</strong> reacţie RR sub controlul unui generator <strong>de</strong><br />

tact <strong>de</strong> perioadă T ce <strong>de</strong>termină noul vector <strong>de</strong> stare,<br />

y<br />

t<br />

T <br />

yt<br />

<br />

Mărimea perioa<strong>de</strong>i <strong>de</strong> tact T <strong>de</strong>pin<strong>de</strong> <strong>de</strong> parametrii sistemului <strong>de</strong> acţionare ai<br />

robotului şi în special <strong>de</strong> complexitatea traiectoriei par<strong>cu</strong>rse <strong>de</strong> acesta.<br />

<br />

IZ<br />

{y 1 ,y 2 ,y 3 }<br />

<br />

0<br />

X<br />

1<br />

<br />

a<br />

b<br />

Figura 8.2


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 4<br />

Implementarea legii <strong>de</strong> <strong>conducere</strong> la un astfel <strong>de</strong> sistem se bazează pe<br />

anumite modalităţi <strong>de</strong> interpretare a organigramelor ce <strong>de</strong>finesc evoluţia robotului,<br />

respectiv a automatului. Aceste organigrame sunt similare celor utilizate în<br />

programarea cal<strong>cu</strong>latoarelor având câteva parti<strong>cu</strong>larităţi în conformitate <strong>cu</strong> noua<br />

direcţie <strong>de</strong> aplicabilitate. În figura 8.2 sunt prezentate principalele simboluri<br />

utilizate. Figura 8.2a <strong>de</strong>scrie simbolul <strong>de</strong> stare. Starea automatului este <strong>de</strong>semnată<br />

printr-un in<strong>de</strong>x alfa-numeric şi un cod <strong>de</strong> stare format din variabilele <strong>de</strong> stare<br />

corespunzătoare y 1<br />

, y2<br />

,..., y s<br />

. Indicativul IZ <strong>de</strong>fineşte informaţia privind ieşirea<br />

ce urmează a fi generate în starea respectivă.<br />

Simbolul <strong>de</strong> <strong>de</strong>cizie <strong>de</strong>fineşte traseele logice într-o evoluţie secvenţiala<br />

controlată printr-o <strong>de</strong>cizie x. Aceasta poate fi o simplă variabilă <strong>de</strong> intrare sau<br />

poate sintetiza o condiţie logică complexă. Dacă evoluţia automatului se produce<br />

pe calea x<br />

0, <strong>de</strong>cizie nerealizată, ea este <strong>de</strong>terminată ca evoluţie falsă. În<br />

cazul în care <strong>de</strong>cizia este realizată x<br />

1, evoluţia este <strong>de</strong>numită ca a<strong>de</strong>vărată.<br />

Implementarea legii <strong>de</strong> <strong>conducere</strong> şi înscrierea memorii a informaţiilor<br />

<strong>de</strong>pind modul <strong>de</strong> codificare a stărilor automatului, <strong>de</strong> interpretarea <strong>de</strong>ciziilor şi <strong>de</strong><br />

modalităţile finale prin care sunt generate semnalele <strong>de</strong> comandă către robot. În<br />

funcţie <strong>de</strong> aceste elemente, din această informaţie generală <strong>de</strong> <strong>conducere</strong> se resping<br />

câteva structuri parti<strong>cu</strong>lare ce implică meto<strong>de</strong> specifice şi oferă anumite facilitate<br />

<strong>de</strong> realizare.<br />

8.1.2. Configuraţie DSI (<strong>de</strong>codificator <strong>de</strong> stare şi intrare)<br />

Această primă structură <strong>de</strong> <strong>conducere</strong> se obţine direct din configuraţia <strong>de</strong><br />

bază prin înlo<strong>cu</strong>irea primei memorii PROM D <strong>cu</strong> un <strong>de</strong>codificator integrat realizat<br />

<strong>de</strong> obicei în tehnologii MSI. Intrarea în acest bloc este formată din vectorul <strong>de</strong><br />

intrare x şi <strong>de</strong> stare y, <strong>de</strong>ci ieşirea <strong>de</strong>codificatorului va selecta una din perechile<br />

posibile stare-intrare (s-au consi<strong>de</strong>rat numai intrări secvenţiale). Transpusa la nivel<br />

<strong>de</strong> organigramă, aceasta înseamnă că la ieşirea <strong>de</strong>codificatorului se va selecta orice<br />

traseu logic <strong>de</strong>finit <strong>de</strong> o stare pre<strong>cu</strong>m şi <strong>de</strong>ciziile ce condiţionează evoluţia din<br />

starea respective. Se va nota prin<br />

<br />

Q q q ,...,<br />

1 , 2<br />

q P<br />

<br />

vectorul tuturor traseelor logice astfel realizate. Întot<strong>de</strong>auna un singur traseu logic<br />

este active <strong>de</strong>ci o singură componentă q<br />

1<br />

este egală <strong>cu</strong> 1 logic, restul fiind 0.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 5<br />

A doua memorie PROM G se păstrează ca şi în configuraţia generală,<br />

adresarea ei realizându-se prin fiecare linie activă a unui anumit traseu logic.<br />

Această memorie furnizează la ieşire un <strong>cu</strong>vânt in formatul<br />

IY<br />

IZ<br />

un<strong>de</strong> IY <strong>de</strong>semnează informaţia <strong>de</strong> stare succesoare, <strong>de</strong>ci starea în care se<br />

finalizează evoluţia automatului pe un anumit traseu logic, iar IZ reprezintă<br />

informaţia <strong>de</strong> ieşire <strong>de</strong>ci practic vectorul ieşirilor z<br />

<br />

z z z ,...,<br />

1 , 2<br />

z T<br />

m<br />

active pe traseul logic respective.<br />

Procedura <strong>de</strong> implementare a unui automat în această configuraţie <strong>cu</strong>prin<strong>de</strong><br />

următoarele etape:<br />

* Din traiectoria <strong>de</strong> mişcare impusă robotului se construieşte organigrama<br />

<strong>de</strong> stări corespunzătoare. Aceasta presupune <strong>de</strong>falcarea traiectoriei în secvenţe<br />

funcţionale, fiecărei secvenţe alocându-i-se o stare. Sunt <strong>de</strong>terminate totodată<br />

<strong>de</strong>ciziile care realizează comutarea pe anumite secvenţe (trasee logice).<br />

* Se codifică stările obţinute prin variabilele se<strong>cu</strong>ndare y 1<br />

, y2<br />

,..., y s<br />

. Se<br />

stabilesc traseele logice q 1<br />

, q2<br />

,..., q p<br />

ale organigramei şi se <strong>de</strong>termină funcţiile<br />

logice asociate.<br />

* Se dimensionează componentele principale ale arhitecturii din figura 8.3.<br />

Astfel, se aleg memoria, <strong>de</strong>codificatorul D şi registrul <strong>de</strong> reacţie RR acoperitoare<br />

faţă <strong>de</strong> dimensiunile următoare:<br />

PROM G: PROM (p x(s+m)).<br />

D: DECOD (n+s)<br />

RR: R (s)<br />

* Se înscrie informaţia în PROM G în conformitate <strong>cu</strong> <strong>logica</strong> organigramei.<br />

Pentru fiecare linie <strong>de</strong> adresă (traseu logic) se înscriu datele privind starea în care<br />

va evalua automatul în vectorul <strong>de</strong> ieşire la momentul respectiv.<br />

Pentru exemplificare se va trata implementarea automatului pentru<br />

<strong>conducere</strong>a unui robot secvenţial ce exe<strong>cu</strong>tă o traiectorie simplă tip triunghiular<br />

(fig). 8.4a).


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 6<br />

Robotul se <strong>de</strong>plasează în planul (X,Y) acţionat pe fiecare axă în ambele<br />

1<br />

sensuri (x+, x-, y+, y-), mişcările respective fiind controlate <strong>de</strong> limitatoarele L<br />

x<br />

,<br />

L<br />

2 1 2<br />

x , Ly<br />

. Ly<br />

(pentru simplitatea traiectoriei s-a consi<strong>de</strong>rat că segmentul 23 este<br />

paralel <strong>cu</strong> a doua bisectoare). Organigrama asociată acestei traiectorii este<br />

prezentată în fig.8.4b. Se disting cinci stări din care starea 1 reprezintă o stare <strong>de</strong><br />

aşteptare corespunzătoare staţionarii robotului în punctual 1. Pornirea este dată<br />

printr-o comandă START dar mişcarea este condiţionata <strong>de</strong> închi<strong>de</strong>rea griperului<br />

(<strong>de</strong>cizia GRIPER ÎNCHIS, GI=1). Dacă această condiţie nu este realizată se trece<br />

în starea 2 în care se exe<strong>cu</strong>tă ÎNCHIDEREA GRIPER, IG=1, după care se revine în<br />

starea iniţială şi se reîncepe testarea celor 2 condiţii, START şi GI. Dacă ambele<br />

<strong>de</strong>cizii sunt în<strong>de</strong>plinite, automatul trece în starea 3 în care se produce mişcarea<br />

<br />

2 1<br />

robotului pe axa x până la satisfacerea condiţiei L<br />

x<br />

, L y<br />

1. Stările următoare 4<br />

şi 5 realizează celelalte segmente <strong>de</strong> traiectorie după care se revine în starea iniţiala<br />

1.<br />

x<br />

y<br />

q<br />

q<br />

1<br />

2<br />

3<br />

4<br />

5<br />

PROM G<br />

q<br />

<br />

p<br />

TACT<br />

RR<br />

y<br />

1<br />

y 2 y 3<br />

IY<br />

y<br />

s<br />

IZ<br />

<strong>cu</strong>vânt<br />

ieşire<br />

z<br />

z<br />

1<br />

z 2 3<br />

z<br />

m<br />

Figura 8.3


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 7<br />

(001)<br />

1<br />

q<br />

1<br />

start<br />

0 1<br />

q<br />

3<br />

q 0 1<br />

2<br />

GI<br />

(010) (011)<br />

<br />

2 IG<br />

3 x<br />

q<br />

5<br />

q<br />

4<br />

y<br />

2<br />

L<br />

y<br />

q<br />

10<br />

3<br />

a<br />

4<br />

5<br />

1<br />

L 2<br />

L 1 0<br />

x y<br />

q 1<br />

6<br />

<br />

x , y (100)<br />

q<br />

L 1<br />

L 2<br />

x y<br />

1<br />

8<br />

<br />

y<br />

L 1<br />

L 1<br />

x y<br />

0<br />

(101)<br />

0<br />

q<br />

7<br />

q<br />

9<br />

1<br />

L<br />

y<br />

2<br />

1<br />

1 START 2<br />

L L x<br />

x<br />

x<br />

b<br />

Figura 8.4<br />

Cele cinci stări ale organigramei se pot codifica prin trei variabile<br />

y , y y , codificarea fiind arbitrară (pentru comoditate s-a utilizat<br />

se<strong>cu</strong>ndare y<br />

1 2,<br />

codul binar natural).<br />

3


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 8<br />

Traseu<br />

logic<br />

Simbol<br />

Funcţie <strong>logica</strong><br />

q<br />

1<br />

q<br />

q<br />

q<br />

q<br />

q<br />

q<br />

q<br />

q<br />

q<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

1 START<br />

1 START GI<br />

1 START GI<br />

2<br />

3 L<br />

3 L<br />

4 L<br />

4 L<br />

5 L<br />

5 L<br />

2 1<br />

x<br />

L y<br />

2<br />

L 1<br />

x y<br />

1 2<br />

x<br />

L y<br />

1<br />

L 2<br />

x y<br />

1 1<br />

x<br />

L Y<br />

1 1<br />

x<br />

L Y<br />

y1<br />

y2<br />

y1<br />

y2<br />

y1<br />

y2<br />

y3<br />

y3<br />

y1<br />

y2<br />

y<br />

3<br />

y1<br />

y2<br />

y3<br />

y1<br />

y2<br />

y<br />

y1<br />

y2<br />

y<br />

3<br />

y1<br />

y2<br />

y<br />

3<br />

START<br />

y3<br />

y1<br />

y2<br />

y<br />

3<br />

y1<br />

y2<br />

y<br />

3<br />

<br />

<br />

START GI<br />

START GI<br />

2 1<br />

L xL y<br />

L X L<br />

2 1<br />

3 y<br />

L<br />

L<br />

L<br />

1 2<br />

x<br />

L y<br />

1<br />

L 2<br />

x y<br />

1 1<br />

x<br />

L y<br />

1 1<br />

x<br />

L Y<br />

L<br />

Tabelul 8.1<br />

Organigrama conţine asemenea zece trasee logice<br />

Q <br />

<br />

q , q q<br />

1 2<br />

,...,<br />

10<br />

<br />

primele trei trasee fiind generate din starea iniţială 1 (liniile punctate din fig 8.4b).<br />

De exemplu, traseul q<br />

1<br />

este generat <strong>de</strong> starea 1, este <strong>de</strong>terminat <strong>de</strong> <strong>de</strong>cizia START<br />

nerealizată şi se închi<strong>de</strong> tot în starea 1. Formal, aceasta poate fii scrisă prin<br />

q1<br />

:1 START y1<br />

y2<br />

y3<br />

START<br />

Similar, traseul q<br />

2<br />

este <strong>de</strong>finit prin<br />

q2<br />

:1 START . GI y y y . 3<br />

START.<br />

GI<br />

1<br />

2<br />

În tabelul 8.1 sunt prezentate expresiile logice ale celorlalte trasee ale<br />

organigramei.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 9<br />

Fiecare traseu logic astfel constituit trebuie să conţină informaţiile privind<br />

starea în care evoluează automatul la punctul final al traseului şi informaţia <strong>de</strong><br />

ieşire ce se generează în starea iniţială a acestuia. Ieşirile automatului sunt<br />

reprezentate <strong>de</strong> cele patru comenzi <strong>de</strong> acţionare a mişcării şi închi<strong>de</strong>rea griperului,<br />

<br />

<br />

z x , x , y , y . IG<br />

<br />

Stabilirea exacta a vectorilor Q,x,y,z permite dimensionarea elementelor<br />

configuraţiei,<br />

PROM G : PROM (10 x (3+5))<br />

D : DECOD (8)<br />

RR : R (3)<br />

La realizarea cir<strong>cu</strong>itului se vor alege componente tipizate acoperite, <strong>de</strong><br />

exemplu, PROM (16 x 8) şi R (4). Introducerea unui DECOD (8) din care numai<br />

10 linii sunt utile este nepracticată <strong>de</strong> aceea se va prefera sinteza logică a acestui<br />

<strong>de</strong>codificator <strong>cu</strong> porţi logice elementare.<br />

În figura 8.5a este prezentată arhitectura completă a automatului, informaţia<br />

înscrisă în PROM reprezentând datele specificate pe fiecare traseu logic (punctul în<br />

memorie reprezintă valoarea <strong>logica</strong> 1). De exemplu, pentru traseul logic q 1<br />

,<br />

informaţia este reprezentată <strong>de</strong> codul stării următoare, starea 1 codificată prin 001,<br />

informaţia <strong>de</strong> ieşire neexistand. Pentru traseul q<br />

8<br />

, starea viitoare este starea 5, cod<br />

101 şi simultan sunt generate ieşirile x- si y+ etc.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 10<br />

q 1<br />

q 2<br />

START<br />

q 3<br />

GI<br />

L 2<br />

L<br />

q<br />

1<br />

4<br />

x y<br />

q 5<br />

L 1<br />

L 2<br />

q 6<br />

x y<br />

L 1<br />

L 1<br />

D q 7<br />

x y<br />

q 8<br />

q 9<br />

q 10<br />

PRO<br />

RR<br />

IY<br />

Y 1 Y 2<br />

<strong>cu</strong>vânt<br />

ieşire<br />

a<br />

X + X - Y + Y - IG


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 11<br />

START<br />

GI<br />

Lx L 2 Ly L 1<br />

L Lx 1 L Ly<br />

2<br />

L 1 L 1<br />

Lx Ly<br />

q 1<br />

q 2<br />

q 3<br />

q 4<br />

y 1 y 2 y 3<br />

Figura 8.5<br />

.<br />

.<br />

.<br />

b<br />

În figura 8.5b, este prezentată o modalitate <strong>de</strong> sinteză a <strong>de</strong>codificatorului <strong>cu</strong><br />

porţi logice, soluţia aceasta fiind întot<strong>de</strong>auna referabilă sub raport economic.<br />

8.1.3. Configuraţia DS (<strong>de</strong>codificator <strong>de</strong> stare)<br />

Implementarea unui automat în această configuraţie se bazează pe o anumită<br />

implementare a stărilor succesoare într-o evoluţie. Pentru exemplificare, să<br />

consi<strong>de</strong>răm stările 2 şi 3 ca succesoare stării 1 prin <strong>de</strong>cizia x (fig. 8.6).


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 12<br />

1 1<br />

4<br />

0<br />

x<br />

1<br />

0<br />

x<br />

1 0 1<br />

1 x 2<br />

2<br />

3 3<br />

a<br />

b<br />

Figura 8.6<br />

Starea 2 succesoare a stării 1 prin <strong>de</strong>cizie x nerealizată (x=0) se numeşte<br />

stare succesoare “falsă” în raport <strong>cu</strong> 1, iar starea 3 succesoare stării 1 prin <strong>de</strong>cizie<br />

realizată (x=1) se numeşte stare succesoare “a<strong>de</strong>vărată” în raport <strong>cu</strong> 1 [92].<br />

Definirea acestor stări este strâns legată <strong>de</strong> starea iniţială, în acest caz 1. Este<br />

evi<strong>de</strong>nt că aceeaşi stare poate fi stare succesoare prin doua <strong>de</strong>cizii <strong>cu</strong> valori<br />

complementare, <strong>de</strong> exemplu starea 3 (fig. 8.6b) care este a<strong>de</strong>vărată <strong>cu</strong> starea 1 şi<br />

falsă în raport <strong>cu</strong> starea 4.<br />

Această împărţire a stării în cele doua clase F şi A constituie un factor <strong>de</strong><br />

prim ordin în exprimarea necesarului <strong>de</strong> informaţie pentru <strong>de</strong>finirea evoluţiei unui<br />

automat. La aceste date se mai adaugă, evi<strong>de</strong>nt, cele referitoare la selecţia<br />

<strong>de</strong>ciziilor şi generarea ieşirilor dorite. Ca urmare, formatul <strong>cu</strong>vântului la ieşirea<br />

memoriei PROM G va fi:<br />

IT<br />

IY<br />

IYF IYA<br />

un<strong>de</strong> IT <strong>de</strong>semnează instrucţiunea <strong>de</strong> test prin care se i<strong>de</strong>ntifică <strong>de</strong>cizia (mărimea<br />

<strong>de</strong> intrare) ce intervine într-o anumită stare, IYF şi IYA <strong>de</strong>finesc codurile<br />

(informaţia stărilor false şi a<strong>de</strong>vărate, respectiv, iar IZ reprezintă instrucţiunea <strong>de</strong><br />

ieşire generată în starea <strong>cu</strong>rentă a automatului.<br />

Prelucrarea acestui format se realizează într-o structură <strong>de</strong>stul <strong>de</strong> diferită <strong>de</strong><br />

cea anterioară, <strong>cu</strong> numeroase elemente specifice (fig.8.7).


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 13<br />

stare s i<br />

PROM G<br />

y 1<br />

D<br />

y S<br />

TACT<br />

RR<br />

IT IY F IY A IZ<br />

<strong>cu</strong>vant<br />

iesire<br />

z 1<br />

x 1<br />

z 2<br />

DZ<br />

x 2<br />

w<br />

MUX 1 MUX 2<br />

z m<br />

x N<br />

y 1<br />

y 2<br />

y S<br />

Figura 8.7<br />

Se remarcă, în primul rând, că adresarea memoriei PROM G se realizează<br />

prin <strong>de</strong>codificarea vectorului <strong>de</strong> stare <strong>de</strong>ci fiecare linie <strong>de</strong> adresă i<strong>de</strong>ntifică o stare a<br />

automatului. În consecinţă, fiecare <strong>cu</strong>vânt adresat trebuie să conţină toată<br />

informaţia asociată unei stări: intrare, stare succesoare, ieşire, în conformitate <strong>cu</strong><br />

formatul stabilit. Această informaţie este prelucrată într-o structură hardware la<br />

ieşirea memoriei formată din: un multiplexor scalar MUX 1, un multiplexor<br />

vectorial MUX 2 şi un <strong>de</strong>codificator DZ.<br />

Primul multiplexor MUX 1 selectează o mărime <strong>de</strong> intrare x 1<br />

în<br />

conformitate <strong>cu</strong> informaţia înscrisă în instrucţiunea <strong>de</strong> text IT ( k 1<br />

biţi) <strong>de</strong>ci<br />

k1 log<br />

2<br />

n<br />

MUX 2 joacă rolul unui comunicator, transformând la ieşire fie codul stării<br />

false IYF, fie a<strong>de</strong>vărate IYA (s biţi), după <strong>cu</strong>m variabila <strong>de</strong> control w este 0 şi<br />

respectiv 1.<br />

Ultimul cir<strong>cu</strong>it, <strong>de</strong>codificatorul <strong>de</strong> ieşire DZ, generează una din cele m<br />

intrări conform codului oferit <strong>de</strong> cei k<br />

2<br />

biţi din instrucţiunea <strong>de</strong> ieşire IZ.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 14<br />

k2 log<br />

2<br />

m<br />

Informaţia <strong>de</strong> stare IY (IYF sau IYA) este stocată într-un registru <strong>de</strong> reacţie<br />

RR la ieşirea căruia, într-o nouă perioadă <strong>de</strong> tact, se obţine codul<br />

stării y 1<br />

, y2<br />

,..., y s<br />

.<br />

Algoritmul <strong>de</strong> implementare a unui sistem <strong>de</strong> <strong>conducere</strong> în această<br />

configuraţie <strong>cu</strong>prin<strong>de</strong> următoarele etape:<br />

* Se <strong>de</strong>termină, după aceeaşi procedură ca şi în configuraţia prece<strong>de</strong>ntă,<br />

organigrama <strong>de</strong> stări a automatului.<br />

* Se dimensionează formatul <strong>cu</strong>vântului din memorie stabilind necesarul <strong>de</strong><br />

variabile pentru codificarea intrărilor (test), stărilor şi intrărilor. Se alocă coduri<br />

corespunzătoare tuturor mărimilor implicate.<br />

* Se dimensionează toate componentele acestei configuraţiei alegându-se<br />

întot<strong>de</strong>auna valori acoperitoare:<br />

s<br />

PROM G : PROM 2 xk1 2s<br />

k2<br />

<br />

MUX 1 : MUX k x1 1<br />

<br />

MUX 2 : MUX 1<br />

xs<br />

DZ : DECOD k<br />

RR : R s<br />

<br />

1<br />

<br />

* Se construieşte informaţia în PROM G astfel încât să acopere organigrama<br />

stărilor.<br />

* Se interconectează toate componentele <strong>de</strong> cir<strong>cu</strong>it într-o arhitectură <strong>de</strong> tipul<br />

DS.<br />

Observaţia 1. Anumite evoluţii impun trecerea <strong>de</strong> la o stare la alta fără<br />

implicarea unei <strong>de</strong>cizii, necondiţionat (fig.8.8). În această situaţie, starea<br />

succesoare 2 poate fi consi<strong>de</strong>rată fie ca stare succesoare falsă (IYF) dacă o <strong>de</strong>cizie<br />

inexistentă este interpretată ca o <strong>de</strong>cizie niciodată realizată, fie ca o stare<br />

succesoare a<strong>de</strong>vărată (IYA) dacă <strong>de</strong>cizia inexistentă este interpretată ca o mărime<br />

întot<strong>de</strong>auna realizată (x=1). Această funcţionare poate fi obţinută relativ uşor<br />

conectând borna <strong>de</strong> intrare a multiplexorului MUX 1 ce corespun<strong>de</strong> unei <strong>de</strong>cizii<br />

inexistente (<strong>de</strong> obicei codul 00…0) la valoarea permanentă 0 logic (pentru fals) şi 1<br />

logic (pentru a<strong>de</strong>vărat).


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 15<br />

1<br />

2<br />

Figura 8.8<br />

Observaţia 2. O configuraţie <strong>de</strong> acest tip nu poate implementa organigrame<br />

ce conţin structuri ierarhizate <strong>de</strong> <strong>de</strong>cizii (fig.8.9a).<br />

Pentru astfel <strong>de</strong> evoluţie este necesară modificarea organigramei prin<br />

intercalarea unor stări suplimentare care să rupă lanţul <strong>de</strong>cizional.<br />

1<br />

rang 0<br />

rang 1<br />

0<br />

0<br />

X 1<br />

1<br />

0 1<br />

X 2 X 2<br />

1<br />

q 1 q 2<br />

a<br />

q 3<br />

q 4<br />

2 3 4 5<br />

0<br />

X 1<br />

1<br />

1 * 1 **<br />

0<br />

X 2<br />

1<br />

0 1<br />

X2<br />

2 3 4 5<br />

b<br />

Figura 8.9<br />

În figura 8.9b stările nou introduse 1’, 1” separă cele doua <strong>de</strong>cizii x , x 1 2<br />

<strong>de</strong>terminând o <strong>de</strong><strong>cu</strong>plare a condiţiilor <strong>de</strong> evoluţie.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 16<br />

Observaţia 3. Conform celor arătate mai sus, fiecărei stări s<br />

1<br />

i se atribuie o<br />

unică <strong>de</strong>cizie x 1<br />

. Deci, numărul <strong>de</strong>ciziilor este egal <strong>cu</strong> cel al stărilor (exclu<strong>de</strong>m<br />

cazurile <strong>de</strong>ciziilor inexistente dis<strong>cu</strong>tate la Observaţia 1.). În consecinţă, codurile ce<br />

i<strong>de</strong>ntifică starea pot fi utilizate şi pentru i<strong>de</strong>ntificarea mărimilor <strong>de</strong> intrare<br />

(<strong>de</strong>cizii x<br />

1). Formatul instrucţiunilor din memorie nu va conţine <strong>de</strong>ci câmpul<br />

informaţiilor <strong>de</strong> test [54].<br />

IYF<br />

IY<br />

IYA<br />

IZ<br />

În figura 8.10 este prezentat un automat implementat după acest<br />

consi<strong>de</strong>rente. Se remarcă absenţa informaţiilor <strong>de</strong> test şi controlul direct al<br />

multiplexorului MUX 1 prin variabilele <strong>de</strong> stare y 1<br />

.<br />

S-a arătat că această configuraţie nu poate implementa structuri <strong>de</strong><br />

organigrame conţinând <strong>de</strong>cizii ierarhizate. Acest lucru este <strong>de</strong>terminat <strong>de</strong> faptul că<br />

pe aceste lanţuri <strong>de</strong> <strong>de</strong>cizii noţiunea <strong>de</strong> fals şi a<strong>de</strong>vărat nu mai are sens. Dacă, însă,<br />

se atribuie anumite funcţii logice evoluţiei pe diferite trasee ale lanţului <strong>de</strong>cizional<br />

iar stările succesoare pe aceste trasee capătă o semnificaţie logică corespunzătoare,<br />

atunci implementare în această configuraţie <strong>de</strong>vine posibilă [54].<br />

D<br />

PROM G<br />

y<br />

IYF IYA IZ<br />

<strong>cu</strong>vant<br />

iesire<br />

TACT<br />

RR<br />

X 1<br />

X 2<br />

MUX 1<br />

MUX 2 DZ<br />

X n<br />

y<br />

Z 1<br />

Z m


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 17<br />

Figura 8.10<br />

Pentru exemplificare să consi<strong>de</strong>răm organigrama prezentată în figura 8.9a.<br />

Aceasta conţine două <strong>de</strong>cizii x , x 1 2<br />

grupate în doua ranguri, 0 şi 1. Cele patru<br />

trasee logice q<br />

1<br />

, q2<br />

, q3,<br />

q4<br />

formate <strong>de</strong>finesc patru condiţii logice,<br />

Q <br />

1<br />

x1<br />

x2<br />

Q <br />

2<br />

x1x2<br />

Q <br />

3<br />

x1<br />

x2<br />

Q <br />

4<br />

x1x2<br />

În acest sens, putem <strong>de</strong>fini starea 2 ca succesoare <strong>de</strong> tip Q<br />

1<br />

a stării 1, starea<br />

3 ca succesoare <strong>de</strong> tip Q<br />

2<br />

a stării 1 s.a.m.d. Aceste noi tipuri <strong>de</strong> stării 1, succesoare<br />

impun organizarea unui format <strong>de</strong> instrucţiuni corespunzător în memorie.<br />

IT<br />

0<br />

IT<br />

1<br />

IYQ1<br />

Q2<br />

IY<br />

IY IYQ3<br />

IY Q 4<br />

IZ<br />

Formatul <strong>cu</strong>prin<strong>de</strong> câmpuri distincte ce i<strong>de</strong>ntifică mărimile <strong>de</strong> test după<br />

rangul <strong>de</strong> care aparţin IT<br />

0<br />

, IT<br />

1<br />

pre<strong>cu</strong>m şi codurile stărilor succesoare<br />

IY<br />

Q1 , ITQ<br />

2<br />

, ITQ3<br />

, ITQ<br />

4<br />

<strong>de</strong>finite în conformitate <strong>cu</strong> <strong>logica</strong> realizată.<br />

Implementarea acestui tip <strong>de</strong> dată în figura 8.11. Selectarea <strong>de</strong>ciziilor după<br />

0 1<br />

ranguri este realizată în două multiplexoare MUX<br />

1<br />

, MUX<br />

1<br />

, câte unul pentru<br />

fiecare rang. Ieşirile lor controlează multiplexorul MUX<br />

2<br />

ce selectează una din<br />

cele patru informaţii <strong>de</strong> stare IY.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 18<br />

y<br />

DZ<br />

PROM G<br />

IT 0 IT 1 I Y Q1<br />

I<br />

Y<br />

I<br />

Y<br />

Q 3<br />

I<br />

Y<br />

IZ<br />

<strong>cu</strong>vant<br />

iesire<br />

TACT<br />

RR<br />

<strong>de</strong>cizii<br />

rang 0<br />

W 0<br />

W 1 Z1 Z 2 Z m<br />

0<br />

MUX 1<br />

MUX 2<br />

DZ<br />

MUX 1<br />

<strong>de</strong>cizii<br />

rang 1<br />

1<br />

Figura 8.11<br />

Procedura <strong>de</strong>scrisă, valabilă numai pentru două ranguri <strong>de</strong> <strong>de</strong>cizie, poate fi<br />

extinsă la structuri oricât <strong>de</strong> complexe, bineînţeles sub rezerva complexităţii<br />

arhitecturii sistemului.<br />

În finalul acestei prezentări se va explica procedura <strong>de</strong> implementare a unui<br />

automat în configuraţie DS pentru <strong>conducere</strong>a robotului din figura 8.4.<br />

Organigrama <strong>de</strong> stări asociată <strong>cu</strong>prin<strong>de</strong> stări controlate prin <strong>de</strong>cizii <strong>de</strong> cel<br />

mult două ranguri ierarhice, rangurile zero şi unu. Se remarcă <strong>de</strong> asemenea,<br />

evoluţia din starea 2 în starea 1 realizată direct, fără nici o <strong>de</strong>cizie. Absenţa acestei<br />

<strong>de</strong>cizii va fi interpretată ca <strong>de</strong>cizie întot<strong>de</strong>auna zero, <strong>de</strong>ci starea 1 <strong>de</strong>vine starea<br />

falsă în raport <strong>cu</strong> starea 2.<br />

Într-o prima abordare a problemei, se va rupe lanţul <strong>de</strong>cizional q<br />

2<br />

,q3<br />

(figura 8.4b) prin introducerea unei stări suplimentare 1’, cod 110. În acest sens,<br />

formatul instrucţiunilor în memorie <strong>cu</strong>prin<strong>de</strong> câmpurile:<br />

IT : K 3 1<br />

IY : 2s<br />

2x3<br />

IZ : k 3 2


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 19<br />

y 1<br />

y 2<br />

y 3<br />

D<br />

001<br />

010<br />

011<br />

100<br />

101<br />

110<br />

PROM G<br />

IT IYF IYA IZ<br />

<strong>cu</strong>vant<br />

iesire<br />

TACT<br />

RR<br />

START<br />

GI<br />

L 2 1<br />

x L 1 2<br />

y<br />

L x L y<br />

1 1<br />

L x L y<br />

0<br />

1<br />

2<br />

3<br />

MUX 1<br />

4<br />

5<br />

6<br />

7<br />

MUX 2<br />

DZ<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

IG<br />

X +<br />

X - ,Y +<br />

Y -<br />

Figura 8.12<br />

Mărimi <strong>de</strong> intrare IT Mărimi <strong>de</strong> ieşire IZ<br />

Intrare<br />

Inexistentă<br />

0 0 0<br />

Ieşire<br />

inexistentă<br />

0 0 0<br />

START<br />

0 0 1<br />

IG<br />

0 0 1<br />

GI<br />

0 1 0<br />

X<br />

<br />

0 1 0<br />

L<br />

L<br />

L<br />

2<br />

L 1<br />

x y<br />

1 2<br />

x<br />

L Y<br />

1 1<br />

x<br />

L Y<br />

0 1 1<br />

1 0 0<br />

1 0 1<br />

X ; Y <br />

<br />

Y<br />

0 1 1<br />

1 0 0<br />

Tabelul 8.2<br />

Conform <strong>cu</strong> cele prezentate mai sus, se vor selecta componente şi module <strong>de</strong><br />

cir<strong>cu</strong>ite care să acopere valorile necesare. Astfel, se vor alege


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 20<br />

2 3 3 8x12<br />

PROM G : PROM x3<br />

2x3<br />

MUX1 : MUX 3X<br />

MUX2 : MUX 1x<br />

DZ : DECOD 3<br />

RR : R 3<br />

1<br />

3<br />

Cu aceste elemente se construieşte arhitectura generală a automatului <strong>de</strong><br />

<strong>conducere</strong> (fig. 8.12) şi se înscrie în memorie informaţia ce acoperă organigrama<br />

<strong>de</strong> funcţionare a robotului conform codurilor impuse (tabelul 8.2).<br />

Pentru exemplificare, să consi<strong>de</strong>răm starea 3 din organigramă. Informaţia<br />

corespunzătoare este înscrisă pe adresa 001 şi <strong>cu</strong>prin<strong>de</strong>: codul mărimii <strong>de</strong> intrare<br />

selectat (IT=011), codurile stărilor false şi a<strong>de</strong>vărate, 011 şi respectiv 100 pre<strong>cu</strong>m<br />

şi codul ieşirii selectate (IZ=010). Ultima adresă utilizată 110 corespun<strong>de</strong> stării nou<br />

introdusa 1’ prin care se realizează interpretarea stărilor 2 şi 3 ca stări false, cod<br />

010, şi respectiv a<strong>de</strong>vărate, cod 011.<br />

O a doua modalitate <strong>de</strong> tratare a acestei probleme <strong>de</strong> <strong>conducere</strong> constă în<br />

abordarea lanţului <strong>de</strong> <strong>de</strong>cizii în ansamblul lor fără ruperea succesiunii lor logice.<br />

Cu toate că această procedura nu este recomandabilă la această organigramă întrucât<br />

aceste <strong>de</strong>cizii condiţionează numai o singura stare, starea 1 şi <strong>de</strong>ci abordarea<br />

propusă este <strong>cu</strong> totul neeconomică, se va analiza şi acest mod <strong>de</strong> implementare<br />

pentru a preciza în <strong>de</strong>taliu aspectele <strong>de</strong> proiectare solicitate <strong>de</strong> această metodă.<br />

Într-o primă etapă se impune sortarea pe ranguri a <strong>de</strong>ciziilor implicate. În<br />

acest caz, aceasta revine la i<strong>de</strong>ntificarea <strong>de</strong>ciziei START ca <strong>de</strong>cizie <strong>de</strong> rang 0 şi a<br />

<strong>de</strong>ciziei GI ca <strong>de</strong>cizie <strong>de</strong> rang 1. Toate celelalte <strong>de</strong>cizii se vor interpreta fie ca<br />

<strong>de</strong>cizii <strong>de</strong> rang 0 fie <strong>de</strong> rang 1, sortarea lor în una din cele două categorii fiind<br />

arbitrară (tabelul 8.3).<br />

Păstrând aceleaşi coduri pentru mărimile <strong>de</strong> stare şi ieşire (fig.8.5b) se obţine<br />

următorul format în memorie<br />

IT<br />

0<br />

1<br />

IT IY<br />

Q1<br />

IY<br />

Q2<br />

IY<br />

Q3<br />

IY IZ<br />

Q4<br />

2x2 biţi 4x3 biţi 3biţi<br />

un<strong>de</strong> cele patru trasee logice posibile corespund următoarelor funcţii,<br />

IY Q<br />

IY Q<br />

1<br />

IT0<br />

IT1<br />

2<br />

IT0<br />

IT0


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 21<br />

IY Q<br />

IY Q<br />

3<br />

IT0<br />

IT1<br />

4<br />

IT0<br />

IT1<br />

Decizii<br />

<strong>de</strong> rang 0<br />

Decizie<br />

inexistentă<br />

IT Decizii<br />

0<br />

<strong>de</strong> rang 1<br />

0 0<br />

Decizie<br />

inexistentă<br />

IT 1<br />

0 0<br />

START<br />

0 1<br />

GI<br />

0 1<br />

L<br />

L<br />

2 1<br />

X<br />

L Y<br />

1 2<br />

X<br />

L Y<br />

1 0<br />

1 1<br />

L<br />

Tabelul 8.3<br />

1 1<br />

X<br />

L Y<br />

1 0<br />

Arhitectura completă a automatului este prezentată în figura 8.13. Selecţia<br />

<strong>de</strong>ciziilor se obţine prin două multiplexoare MUX şi MUX , câte unul pentru<br />

fiecare rang. Înscrierea informaţiei se realizează conform formatului dis<strong>cu</strong>tat mai<br />

sus. De exemplu, pentru adresa 001 (starea 1) sunt active cele doua <strong>de</strong>cizii <strong>de</strong><br />

ranguri diferite START şi GI. Informaţia <strong>de</strong> stare IY <strong>de</strong>fineşte patru evoluţii<br />

posibile în funcţie <strong>de</strong> valoarea logică a acestor <strong>de</strong>cizii. Pentru START=0 şi GI=0<br />

sau 1 (<strong>de</strong>ci indiferent <strong>de</strong> <strong>de</strong>cizia GI) evoluţia se produce în stare 1 (cod 001), pentru<br />

START=1, GI=0 se obţine starea finala 2 (cod 010) iar pentru START=1, GI=1<br />

rezultă starea 3 (cod 011). Pentru 010 (starea 2) evoluţia nu este condiţionată <strong>de</strong><br />

nici o mărime <strong>de</strong> intrare, <strong>de</strong>ci ambele câmpuri sunt IT<br />

0<br />

IT1<br />

00 ceea ce<br />

<strong>de</strong>termină selecţia unică a stării succesoare 1 codificată IY<br />

Q1<br />

001. Într-o manieră<br />

similară sunt implementate celelalte stări ale automatului.<br />

8.1.4. Configuraţia DSCU (DS-cod unic)<br />

Configuraţia DS, dis<strong>cu</strong>tată în paragraful prece<strong>de</strong>nt, oferă o tehnică facilă<br />

pentru implementarea oricăror structuri <strong>de</strong> <strong>conducere</strong> indiferent <strong>de</strong> gradul lor <strong>de</strong><br />

complexitate. Din păcate, ceea ce s-ar putea reproşa acestei meto<strong>de</strong> se referă la<br />

excesul <strong>de</strong> informaţie necesar pentru codificarea stărilor succesoare, exces care se<br />

reper<strong>cu</strong>tează în utilizarea unor memorii <strong>de</strong> mari dimensiuni.<br />

0<br />

1<br />

1<br />

1


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 22<br />

O îmbunătăţire consi<strong>de</strong>rabilă a acestei proceduri este realizată printr-o nouă<br />

configuraţie, DSCU (Decodificarea <strong>de</strong> stare-cod unic) care păstrează avantajele <strong>de</strong><br />

bază ale configuraţiei DS micşorând totodată câmpurile informaţiei <strong>de</strong> stare prin<br />

utilizarea unor componente hardware suplimentare [92].<br />

Pentru ilustrarea modului <strong>de</strong> implementare în această procedură, să<br />

consi<strong>de</strong>răm organigrama din fig. 8.14 în care stările 2 şi 3 sunt succesoare false şi<br />

respective a<strong>de</strong>vărate ale stării 1.<br />

y 1<br />

y 2<br />

y 3<br />

D<br />

001<br />

010<br />

011<br />

100<br />

101<br />

PROM G<br />

IT 0 IT 1 IY Q 1<br />

IYQ 2<br />

IY Q 3<br />

IYQ 4<br />

IZ<br />

TACT<br />

RR<br />

START<br />

2 1<br />

L x L<br />

1 2 y<br />

L x L y<br />

GI<br />

1 1<br />

L x L y<br />

0 MUX 1<br />

1<br />

2 0<br />

3<br />

0<br />

MUX<br />

1<br />

1<br />

2 1<br />

3<br />

0<br />

0<br />

0<br />

1<br />

1<br />

0<br />

1<br />

1<br />

Y 1 Y 2 Y 3<br />

MUX 2 DZ<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

IG<br />

X +<br />

X -<br />

Y -<br />

Figura 8.13<br />

Datoria relaţiei <strong>de</strong> succesiune a acelor două stări, este posibil să <strong>de</strong>terminăm<br />

codul unei stări succesoare Y în funcţie <strong>de</strong> codul stării 1,<br />

IF <br />

f<br />

y<br />

În acest caz codul stării 2 se va <strong>de</strong>termina printr-un cir<strong>cu</strong>it specializat ce<br />

cal<strong>cu</strong>lează funcţia f(y), în memoria PROM G fiind introdus numai câmpul stării<br />

a<strong>de</strong>vărate. Deci, formatul utilizat va fi,<br />

IT IYA IZ<br />

(Format A)


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 23<br />

În mod similar, în figura 8.14b, codul stării a<strong>de</strong>vărate 3 este <strong>de</strong>terminat după<br />

YA gy<br />

iar codul YF este extras din memorie după formatul,<br />

IT IYF IZ<br />

(Format F)<br />

1 *<br />

(y)<br />

(y)<br />

0<br />

X<br />

1<br />

1<br />

1 * 0<br />

X<br />

2<br />

f(y)<br />

YA<br />

YF<br />

3 2 3<br />

g(y)<br />

a<br />

Figura 8.14<br />

b<br />

Pentru a nu mări în mod exagerat structura hardware utilizată în această<br />

implementare, funcţiile f şi g se introduce sub forma celor mai simple funcţii<br />

aritmetice sau logice. În mod frecvent, se utilizează în acest scop adunarea<br />

numărului 1, incrementarea codului stării, <strong>de</strong>ci<br />

YF Y 1<br />

pentru Formatul A sau<br />

YA y 1<br />

pentru Formatul F, respectiv.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 24<br />

Întru-cât tehnica <strong>de</strong> implementare este simplă, în continuare se va analiza<br />

procedura <strong>de</strong> lucru pe Formatul A, rezultatele putând fi uşor extinse la cel <strong>de</strong> al<br />

doilea format.<br />

Structura generală a sistemului <strong>de</strong> <strong>conducere</strong> în această configuraţie este<br />

asemănătoare <strong>cu</strong> cea a configuraţiei DS remarcându-se în plus cir<strong>cu</strong>itele <strong>de</strong><br />

incrementare a codului <strong>de</strong> stare (fig.8.15).<br />

Pentru generarea codului stării succesoare false YF, se utilizează un sumator<br />

la care unul din operanzi este întot<strong>de</strong>auna 0, al doilea este reprezentat chiar <strong>de</strong><br />

codul stării y iar variabila <strong>de</strong> transport c<br />

1<br />

este permanent legată <strong>de</strong> valoarea logică<br />

1.<br />

Se remarcă reducerea memoriei, lungimea <strong>cu</strong>vântului la ieşirea ei fiind<br />

numai <strong>de</strong> k1 s k 2<br />

biţi.<br />

O arhitectură mai economică se poate obţine după funcţia <strong>de</strong> incrementare a<br />

stării este preluată <strong>de</strong> registrul <strong>de</strong> reacţie RR.<br />

Întru-cât registrul memorează toate codurile stării succesive IY, prin această<br />

nouă funcţie arbitrară se preiau şi funcţiile <strong>de</strong> selecţie realizate <strong>de</strong> MUX 2 (fig.<br />

8.16).<br />

D<br />

PROM G<br />

y<br />

∑<br />

c i<br />

1<br />

[y+1]<br />

IT IYA IZ<br />

<strong>cu</strong>vânt<br />

ieşire<br />

TACT<br />

RR<br />

x 1<br />

x 2<br />

.<br />

.<br />

.<br />

MUX<br />

1<br />

MUX 2<br />

x n<br />

z 1 z 2 … z 3<br />

DZ<br />

Figura 8.15<br />

Pentru controlul registrului este introdus un cir<strong>cu</strong>it <strong>de</strong> selecţie CS care<br />

<strong>de</strong>termină cele două funcţii: incrementarea vectorului y sau încărcarea paralel fără<br />

alterarea vectorului (load). Aceste regimuri <strong>de</strong> lucru se obţin direct din ieşirea w a<br />

multiplexorului MUX 1; pentru w 0 se realizează incrementarea registrului<br />

(generarea la ieşirea sa a codului stării false y 1<br />

,iar pentru w 1 registrul<br />

lucrează în regim <strong>de</strong> transparenţă, la ieşire transferându-se codul IYA din memorie.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 25<br />

Implementarea unui sistem <strong>de</strong> <strong>conducere</strong> în această configuraţie implica<br />

anumite elemente specifice datorate restricţiilor impuse <strong>de</strong> codificarea stărilor.<br />

Trebuie subliniat faptul că, dacă în toate configuraţiile prece<strong>de</strong>nte se acceptau orice<br />

modalităţi <strong>de</strong> codificare a stărilor, în configuraţia DSCU acestea sunt condiţionate<br />

<strong>de</strong> necesitatea generării stărilor false prin incrementarea registrului RR.<br />

Etapele specifice pentru implementarea acestei proceduri sunt:<br />

* Se <strong>de</strong>termină în organigrama stărilor toate traseele logice <strong>de</strong>finite prin<br />

<strong>de</strong>cizii nerealizate. Pe aceste trasee, codul oricărei stării trebuie să fie egal <strong>cu</strong> cel al<br />

stării prece<strong>de</strong>nte plus 1,<br />

YF y 1<br />

Dacă, în anumite cazuri, apar situaţii conflictuale, se introduce stări sau<br />

<strong>de</strong>cizii suplimentare care să evite conflictul. Trebuie subliniat faptul că o <strong>de</strong>cizie<br />

inexistentă trebuie interpretată aici într-un singur sens, ca <strong>de</strong>cizie întot<strong>de</strong>auna<br />

realizată (<strong>de</strong>ci starea succesoare este a<strong>de</strong>vărată).<br />

* Se codifică celelalte stări, neaparţinând traseelor logice menţionate,<br />

arbitrar, utilizând restul combinaţiilor <strong>de</strong> cod disponibile.<br />

Celelalte faze ale implementări privind alegerea componentelor <strong>de</strong> cir<strong>cu</strong>it,<br />

dimensionarea şi interconectarea lor sunt similare <strong>cu</strong> cele dis<strong>cu</strong>tate la configuraţiile<br />

prece<strong>de</strong>nte.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 26<br />

Y<br />

D<br />

PROM G<br />

IT IYA IZ<br />

Z 1<br />

Z 2<br />

RR<br />

incr/load<br />

DZ<br />

X 1<br />

X 2<br />

MUX 1<br />

W<br />

CS<br />

Z m<br />

X n<br />

Figura 8.16<br />

Pentru exemplificarea procedurii se va reconsi<strong>de</strong>ra sistemul <strong>de</strong> <strong>conducere</strong> al<br />

robotului secvenţial <strong>de</strong>finit prin organigrama stărilor din figura 8.4b.<br />

Analiza traseelor logice din organigrama indică 5 trasee <strong>de</strong>finite prin <strong>de</strong>cizii<br />

nerealizate: q<br />

1, q2<br />

, q5,<br />

q<br />

7<br />

, q9.<br />

Pe toate aceste trasee logice, codul oricărei stări<br />

trebuie să respecte relaţia (8.7).<br />

În primul rând se impune introducerea stări 1’ pentru ruperea lanţului<br />

<strong>de</strong>cizional START, GI. În acest fel, starea 2 <strong>de</strong>vine succesoare falsă a lui 1’,<br />

condiţie uşor <strong>de</strong> respectat. Dar starea 1 are succesor fals pe ea însăşi, situaţie <strong>de</strong><br />

conflict care se poate rezolva numai prin introducerea unei noi stări 1”.<br />

O situaţie similară este întâlnită pe traseele q<br />

5<br />

, q7<br />

, q9<br />

ceea ce impune<br />

introducerea stărilor 3’, 4’, 5’. Noile stări introduse reclamă extin<strong>de</strong>rea <strong>cu</strong>vântului<br />

<strong>de</strong> cod <strong>de</strong> la 3 la 4 biţi.<br />

Codificarea completă a stărilor se poate urmării în figura 8.17.<br />

Starea 1, cod 0001, are succesor fals pe 1”, cod 0010, iar aceasta are ca<br />

succesor a<strong>de</strong>vărat (<strong>de</strong>cizie inexistenta) starea 1. Analog, starea 2 are ca succesor<br />

a<strong>de</strong>vărat starea 1, situaţie neconflictuală. Codurile celorlalte stări respectă în<br />

aceeaşi manieră toate condiţiile specificate.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 27<br />

1 ** 1<br />

0<br />

Start<br />

0001<br />

1<br />

1 *<br />

0011<br />

2<br />

0100<br />

0<br />

GI<br />

0101<br />

3 X + 3 *<br />

0111<br />

L 2 2<br />

x L y<br />

1<br />

0<br />

q 5<br />

4<br />

0111 1000<br />

X - ,Y +<br />

4 *<br />

L 1 2<br />

x L y<br />

1<br />

0<br />

q z<br />

5<br />

1001<br />

5 *<br />

1010<br />

1<br />

L x 1 L y<br />

1 0<br />

q g<br />

Figura 8.17<br />

În figura 8.18 este prezentat întregul sistem <strong>de</strong> <strong>conducere</strong>, structura<br />

informaţiei în PROM G pentru fiecare stare şi legăturile directe <strong>cu</strong> sistemul <strong>de</strong><br />

acţionare sau <strong>de</strong> măsurare a robotului. Pentru intrări şi ieşiri s-au folosit codurile<br />

stabilite anterior.<br />

Trebuie remarcată conectarea bornei 0 <strong>de</strong> la MUX 1 la semnal logic 1<br />

constant (+5 V) pentru a permite interpretarea <strong>de</strong>ciziilor inexistente ca <strong>de</strong>cizii<br />

întot<strong>de</strong>auna realizate.<br />

Observaţie. Metoda <strong>de</strong> implementare analizată se referă la configuraţii<br />

DSCU <strong>cu</strong> Format A. Procedura se păstrează şi în cazul <strong>cu</strong>vintelor în Format F <strong>cu</strong><br />

următoarele menţiuni:<br />

- incrementarea stărilor se realizează pe traseele logice caracterizate prin<br />

<strong>de</strong>cizii realizate x 1;<br />

- <strong>de</strong>ciziile inexistente sunt interpretate întot<strong>de</strong>auna ca <strong>de</strong>cizii false.<br />

8.1.5. Configuraţia FV (format variabil)


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 28<br />

În toate procedurile dis<strong>cu</strong>tate mai sus, fiecare bit din memorie avea o<br />

semnificaţie unică, formatele <strong>de</strong> lucru fiind consi<strong>de</strong>rate fixe. O posibilitate <strong>de</strong><br />

reducere a spaţiului <strong>de</strong> memorie se poate obţine prin utilizarea formatelor variabile,<br />

fiecare bit din formatul <strong>cu</strong>vântului având semnificaţii multiple în funcţie <strong>de</strong> tipul<br />

formatului activ la un moment dat [92,77]. Precizarea formatului activ se obţine<br />

printr-un câmp special INDICATOR DE FORMAT (IF) <strong>cu</strong> o lungime<br />

corespunzătoare.<br />

0<br />

1<br />

IZ Format 1<br />

IT IYA Format 2<br />

În formatul <strong>de</strong> mai sus, un bit poate <strong>de</strong>fini fie codul IZ, fie codul intrării IT<br />

sau al stării (IYA), i<strong>de</strong>ntificarea fiind realizată printr-un singur bit în IF. Sunt<br />

posibile, evi<strong>de</strong>nt, şi alte structuri <strong>de</strong> <strong>cu</strong>vinte, pentru implementarea sistemelor <strong>de</strong><br />

<strong>conducere</strong> ale roboţilor utilizându-se frecvent formatele următoare:<br />

Sistemul <strong>de</strong> <strong>conducere</strong> implementat în configuraţia FV este similar celui<br />

utilizat la configuraţia DSCU conţinând în plus cir<strong>cu</strong>ite <strong>de</strong> i<strong>de</strong>ntificare ala<br />

formatelor. În practică această operaţie se realizează uşor prin bituri <strong>de</strong> format BF<br />

care, pentru valoarea 0 vali<strong>de</strong>ază <strong>de</strong>codificatorul <strong>de</strong> ieşire DZ şi inhibă<br />

multiplexorul MUX 1, iar pentru valoare 1 activează multiplexorul şi blochează<br />

ieşirea.<br />

0 IZ<br />

1 IT IYF<br />

IZ<br />

IF<br />

IT<br />

IYF<br />

IYA<br />

Implementarea informaţiei în PROM G este diferită faţă <strong>de</strong> configuraţiile<br />

prece<strong>de</strong>nte datorită formatului variabil prin care se operează. Aceste diferenţieri se<br />

pot rezuma la:


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 29<br />

* Modificarea organigramei stărilor prin dublarea lor în conformitate <strong>cu</strong> cele<br />

două formate utilizate. Prima stare implementează Formatul 1 şi generează ieşirea,<br />

a doua stare <strong>de</strong>termină mărimea <strong>de</strong> intrare (<strong>de</strong>cizia) şi starea succesoare a<strong>de</strong>vărată<br />

(fig. 8.20).<br />

* Se <strong>de</strong>termină toate traseele logice <strong>de</strong>terminate prin <strong>de</strong>cizii nerealizate. Se<br />

codifică stările <strong>de</strong>-lungul acestor trasee astfel încât codul unei stări este egal <strong>cu</strong> cel<br />

al stării prece<strong>de</strong>nte plus 1. Deciziile inexistente se consi<strong>de</strong>ră <strong>de</strong>cizii întot<strong>de</strong>auna<br />

nerealizate (borna 0 <strong>de</strong> la MUX 1 este legată la punctual <strong>de</strong> masă).<br />

* Dacă codificarea anumitor stări creează situaţii conflictuale, se introduc<br />

stări şi <strong>de</strong>cizii suplimentare;<br />

* Celelalte stări primesc codurile rămase disponibile, fără nici o restricţie în<br />

procedura <strong>de</strong> atribuire.<br />

Y 2<br />

Y 3<br />

Y 4<br />

D<br />

0001<br />

0010<br />

0011<br />

0100<br />

0101<br />

0110<br />

0111<br />

1000<br />

1001<br />

1010<br />

Y 1<br />

7<br />

PROM G<br />

IT IYA IZ<br />

TACT<br />

Incr/load +5V 0<br />

RR<br />

START 1<br />

1<br />

GI 2<br />

Y 1 Y 2 1<br />

2<br />

Y 2 Y 3 4 L 3 x Ly<br />

MUX 1<br />

3<br />

L 1 2 4<br />

DZ<br />

x L 4<br />

y<br />

1 1<br />

L<br />

5<br />

5<br />

x L y 6<br />

6<br />

7<br />

w<br />

CS<br />

IG<br />

X +<br />

X - ,Y +<br />

Y -<br />

Figura 8.18


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 30<br />

y<br />

D<br />

PROM G<br />

BF<br />

VM<br />

X 1<br />

X 2<br />

MUX 1<br />

RR<br />

CS<br />

DZ<br />

VD<br />

RR<br />

Incr/load<br />

X n<br />

Z 1 Z 2 Z m<br />

y<br />

Figura 8.19<br />

1<br />

IZ<br />

1 * IZ<br />

0<br />

X<br />

1<br />

1 ** 0<br />

1<br />

a<br />

Figura 8.20<br />

b<br />

Pentru exemplificare se va relua exemplul <strong>de</strong> la paragraful 8.1.2<br />

(organigrama din fig. 8.4,b). Modificarea organigramei <strong>de</strong> stări dis<strong>cu</strong>tată mai sus<br />

impune apariţia a încă 6 stări (s-a consi<strong>de</strong>rat existenţa stării 1’, care realizează<br />

<strong>de</strong><strong>cu</strong>plarea lanţului <strong>de</strong>cizional START, GI (fig. 8.21). Pentru simplificarea<br />

codificării anumite variabile <strong>de</strong> intrare au fost luate în forma complementată.<br />

În acest fel, primul traseu logic <strong>cu</strong> stări succesoare false este format din: 1*,<br />

1**, 1’* 1’** 2*, 2**. Situaţia <strong>de</strong> conflict creată <strong>de</strong> evoluţia <strong>de</strong> la 2** la 1* se


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 31<br />

poate rezolva prin introducerea unei intrări suplimentare notată <strong>cu</strong> a, în permanentă<br />

conectată la valoarea logică 1, ceea ce face ca 1* să fie succesor a<strong>de</strong>vărat al lui<br />

2**. Al doilea lanţ <strong>de</strong> stări false 3*, 3**, …, 5** se rezolvă în aceeaşi manieră<br />

excepţie făcând faptul că evoluţia din starea 5** în 1* nu este posibilă direct ceea<br />

ce impune introducerea stării 6 ce preia condiţia <strong>de</strong> incrementare a codului stării 5<br />

**.<br />

Stării 6 îi succe<strong>de</strong> prin aceeaşi <strong>de</strong>cizie a=1 starea 1*, codurile acestor stări<br />

nemaifiind supuse nici unei restricţii.<br />

Dimensiunea memoriei necesare pentru implementarea acestei configuraţii<br />

se obţine din relaţia:<br />

PROM G : 2<br />

s p<br />

un<strong>de</strong> p k<br />

, k<br />

s 1, k k , s<br />

max<br />

2 1<br />

<br />

1 2<br />

fiind lungimea codurilor instrucţiunilor <strong>de</strong><br />

test, ieşirea şi starea, respectiv.<br />

În fig. 8.22 este prezentată configuraţia completă a sistemului <strong>de</strong> <strong>conducere</strong><br />

şi informaţia din memorie pentru acoperirea organigramei <strong>de</strong> stări modificate.<br />

Codurile utilizate sunt cele explicate în aplicaţiile prece<strong>de</strong>nte în plus fiind introdusă<br />

<strong>de</strong>cizia a=1 pentru combinaţia <strong>de</strong> cod 110. Se remarcă existenţa celor două formate<br />

<strong>de</strong>terminate prin indicatorul <strong>de</strong> format IF, în codul fiecăreia activându-se ieşirea<br />

sau intrarea şi starea, respective.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 32<br />

1<br />

0001<br />

0010<br />

1<br />

Start<br />

0<br />

0011<br />

0100<br />

0 1<br />

a<br />

1<br />

2 k<br />

0101<br />

IG<br />

0110<br />

X +<br />

0011<br />

3 x 0100<br />

1<br />

L x 2 ,L y<br />

1<br />

4 x 0<br />

X - ,Y +<br />

6<br />

1101<br />

L x 1 ,L y<br />

2 1<br />

0<br />

5 x<br />

Y -<br />

5 k<br />

L x 1 ,L y<br />

2<br />

Figura 8.21<br />

Observaţie. Dublarea stărilor impusă în această configuraţie este necesară în<br />

stările în care se generează o ieşire, <strong>de</strong>ci în care trebuie <strong>de</strong>clarat formatul 1. Dacă<br />

anumite stări nu formează o mărime <strong>de</strong> ieşire, se poate renunţa la formatul<br />

x x<br />

respective, eliminând stările corespunzătoare (<strong>de</strong> exemplu 1 si 1 ' in fig. 8.21).


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 33<br />

y 1<br />

y 2<br />

y 3<br />

y 4<br />

0001<br />

0010<br />

0011<br />

0100<br />

0101<br />

0110<br />

0111<br />

1000<br />

1001<br />

1010<br />

1011<br />

1100<br />

1101<br />

TACT<br />

RR<br />

incr./load<br />

0<br />

1<br />

IT<br />

IZ<br />

IYA<br />

Format 1<br />

Format 2<br />

<strong>cu</strong>vânt<br />

ieşire<br />

IF<br />

+5V<br />

Start<br />

GI<br />

2 1<br />

y<br />

L xL<br />

1 2<br />

x L y<br />

L<br />

MUX 1<br />

w<br />

CS<br />

1 1<br />

x L y<br />

L<br />

a<br />

+5V<br />

DZ<br />

0 1 2 3 4 5 6 7<br />

VD<br />

Figura 8.22<br />

IG X + Y -<br />

X - ,Y +<br />

8.2. Automate microprogramate<br />

Un automat este <strong>de</strong>finit ca microprogramat dacă evoluţia sa în timp este<br />

<strong>de</strong>terminată <strong>de</strong> o secvenţa coerentă <strong>de</strong> microinstrucţiuni din memoria sa internă. În<br />

acest caz, adresa microinstrucţiunii reprezintă codul stării automatului.<br />

O microinstrucţiune trebuie să <strong>cu</strong>prindă următoarele părţi:(1) condiţia<br />

externă (dacă exista) ce <strong>de</strong>termină tranziţia <strong>de</strong> la o stare o adresa la adresa<br />

următoare; (2) adresa următoare în care va evolua automatul; (3) mărimile <strong>de</strong> ieşire<br />

care trebuiesc generate in fiecare faza.<br />

În funcţie <strong>de</strong> tipul microinstrucţiunii utilizate şi <strong>de</strong> condiţiile externe impuse,<br />

evoluţia se poate realiza:


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 34<br />

a) pas <strong>cu</strong> pas sau prin salt necondiţionat <strong>de</strong> factori externi.<br />

b) pas <strong>cu</strong> pas prin salt sub controlul factorilor externi specificaţi în<br />

microinstrucţiune.<br />

Structura generală a unui astfel <strong>de</strong> automat <strong>cu</strong>prin<strong>de</strong> două părţi (fig.8.23):<br />

memoria microprogram rezi<strong>de</strong>ntă a setului <strong>de</strong> microinstrucţiunii şi un control ce<br />

realizează controlul evoluţiei automatului pe baza informaţiei furnizate <strong>de</strong><br />

microinstrucţiunea <strong>cu</strong>rentă şi a intrărilor primate din exterior (robot). Simultan,<br />

automatul generează ieşirile necesare pentru comanda secvenţelor funcţionale ale<br />

robotului.<br />

a μ P<br />

Intrări<br />

(senzori <strong>de</strong> poziţie)<br />

CONTROLER<br />

Adresă<br />

(cod stare)<br />

MEMORIE<br />

MICROPRO-<br />

GRAMATĂ<br />

Ieşiri<br />

(comenzi robot)<br />

ROBOT<br />

Figura 8.23<br />

În continuare vor fi analizate principalele structuri <strong>de</strong> automate<br />

microprogramate insistându-se asupra modalităţilor <strong>de</strong> implementare a unor legi <strong>de</strong><br />

<strong>conducere</strong> pentru roboţi industriali.<br />

8.2.1. Structura <strong>de</strong> bază<br />

Configuraţia <strong>de</strong> bază a unui automat microprogramat <strong>de</strong>rivă direct din cea<br />

prezentată în fig.8.23 <strong>cu</strong>prinzând cele două blo<strong>cu</strong>ri principale: controlerul şi<br />

memoria, pre<strong>cu</strong>m şi cir<strong>cu</strong>itele suplimentare care facilitează interfaţarea <strong>cu</strong> sistemul<br />

condus (fig.8.24).<br />

În acest sens, se remarcă prezenţa, ca şi în automatele implementate <strong>cu</strong><br />

PROM-uri, a unui cir<strong>cu</strong>it general <strong>de</strong> multiplexare care sintetizează <strong>logica</strong> semnelor<br />

<strong>de</strong> intrare sub forma unei condiţii generale FLAG. În funcţie <strong>de</strong> valoarea logică a<br />

acestei variabile, se obţine evoluţia viitoare a automatului.<br />

Bornele 0 şi 1 ale multiplexorului sunt conectate la 0 şi respectiv 1 logic<br />

realizând condiţia fals şi a<strong>de</strong>vărat în mod necondiţionat.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 35<br />

Cuplarea <strong>cu</strong> robotul, pe ieşire, este realizată <strong>cu</strong> un <strong>de</strong>codificator DZ ce<br />

selectează comenzile <strong>de</strong> acţionare ale robotului în conformitate <strong>cu</strong><br />

microinstrucţiunea <strong>cu</strong>rentă.<br />

În mod normal, arhitectura unui astfel <strong>de</strong> automat este o arhitectură pe 4 biţi<br />

dar, în funcţie <strong>de</strong> necesităţi, se pot adapta instrucţiuni <strong>cu</strong> formate convenabile<br />

pentru acoperirea tuturor domeniilor variabilelor. Formatul <strong>cu</strong>rent al <strong>cu</strong>vântului în<br />

memorie <strong>cu</strong>prin<strong>de</strong> patru câmpuri: codul <strong>de</strong> operare (codul microinstrucţiunii -<br />

OPCOD), adresa variabilei <strong>de</strong> intrare, adresele salt si codul variabilelor <strong>de</strong> ieşire.<br />

OP.COD ADR.INTRĂRI ADR.SALT ADR. IEŞIRE<br />

3 biţi<br />

k biţi<br />

s biţi<br />

k biţi<br />

k1 log<br />

2<br />

k2 log<br />

2<br />

N<br />

M<br />

1<br />

2<br />

Variabile <strong>de</strong> intrare<br />

N<br />

2 1 0<br />

MUX<br />

Flag<br />

CONTROLER<br />

OPCOD<br />

3<br />

Adresa<br />

MEMORIE<br />

MICROPROGRAM<br />

0 1 2<br />

DZ<br />

Figura 8.24<br />

Variabile <strong>de</strong> iesire


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 36<br />

Evoluţia simplă a acestor tipuri <strong>de</strong> automate face ca cinci tipuri <strong>de</strong><br />

microinstrucţiunii să fie, în general, suficiente pentru acoperirea tuturor condiţiilor<br />

<strong>de</strong> funcţionare. Datorită acestui fapt, lungimea codului <strong>de</strong> operare este limitată la<br />

trei biţi ceea ce permite realizarea următoarelor funcţii generale:<br />

* incrementare condiţionată a adresei (codului <strong>de</strong> stare)-microinstrucţiunea<br />

HIC;<br />

* salt condiţionat la o adresă specificată - microinstrucţiunea HBC;<br />

* incrementare necondiţionată a adresei- microinstrucţiunea IUC;<br />

* salt necondiţionat la o adresă specificată - microinstrucţiunea BUC;<br />

* incrementare pe o anumită valoare logică a <strong>de</strong>ciziei Flag şi salt <strong>de</strong> adresă<br />

pe valoarea complementara a <strong>de</strong>ciziei – microinstrucţiunea IBC.<br />

Cei trei biţi ce <strong>de</strong>finesc OPCOD-ul împreună <strong>cu</strong> variabila Flag <strong>de</strong>termină<br />

funcţia controlerului şi implicit adresa finală generate <strong>de</strong> aceasta. Analiza<br />

instrucţiunilor prezentate mai sus indică doua regimuri funcţionale <strong>de</strong> bază:<br />

incrementarea codului adresei (realizata <strong>cu</strong> un proces <strong>de</strong> numărare (COUNT)) şi<br />

salt la o adresa specificată BRANCH) (realizată printr-un proces <strong>de</strong> încărcare<br />

(LOAD)).<br />

Nr.<br />

crt. Mnemonic<br />

1 HIC<br />

2 HBC<br />

3 IUC<br />

4 BUC<br />

5 IBC<br />

OPCOD<br />

OC 2 OC1<br />

OC0<br />

0 0 0 0<br />

1<br />

0 0 1 0<br />

1<br />

0 1 0 0<br />

1<br />

0 1 1 0<br />

1<br />

1 0 0 0<br />

1<br />

Flag C L Comentariu<br />

0<br />

1<br />

0<br />

0<br />

1<br />

1<br />

0<br />

0<br />

1<br />

0<br />

Tabelul 8.4<br />

0<br />

0<br />

0<br />

1<br />

0<br />

AU AP<br />

AU<br />

AP1<br />

AU AP<br />

AU ADR.<br />

BRANCH <br />

0 } AU<br />

AP1<br />

1<br />

1 } AU ADR.<br />

BRANCH <br />

0 AU<br />

AP1<br />

1<br />

AU ADR.<br />

BRANCH <br />

Analiza <strong>de</strong>taliată a microinstrucţiunilor este prezentată în tabelul 8.4. Pentru<br />

exemplificare , să consi<strong>de</strong>răm microinstrucţiunea HIC, OPCOD 000. Pentru<br />

Flag=0, adresa următoare (AU) este i<strong>de</strong>ntică <strong>cu</strong> adresa prezentă (AP) (funcţia<br />

HOLD) iar pentru Flag=1 conţinutul adresei prezente este incrementat (funcţia<br />

COUNT). La microinstrucţiunea HBC, pentru Flag=0 se păstrează adresa (HOLD)


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 37<br />

iar pentru Flag=1se realizează încărcarea paralel <strong>cu</strong> adresa <strong>de</strong> salt (BRANCH),<br />

funcţia LOAD. Următoarele doua microinstrucţiunii realizează fie incrementarea<br />

(IUC), fie încărcarea (BUC) indiferent <strong>de</strong> valoarea logică a <strong>de</strong>ciziei. Ultima<br />

instrucţiune IBC <strong>de</strong>termină o funcţie LOAD pentru Flag=1.<br />

OC 1<br />

OC 2<br />

OC 0<br />

Flag<br />

0 0<br />

1<br />

OC 1<br />

OC 2<br />

OC 0<br />

0 Flag 1 0<br />

Flag<br />

- -<br />

-<br />

Flag<br />

- -<br />

-<br />

C<br />

L<br />

Figura 8.25<br />

Cele două funcţii <strong>de</strong> bază COUNT (C) şi LOAD (L)din tabelul 8.4 pot fii<br />

redate sintetic în tabelele <strong>de</strong> sinteza logică (fig. 8.25).<br />

Implementarea controlerului este posibilă printr-una din procedurile <strong>cu</strong>rente<br />

<strong>de</strong> proiectare logică. S-a preferat sinteza prin cir<strong>cu</strong>ite multiplexoare, câte unul<br />

pentru fiecare funcţie C respectiv L (fig. 8.26), ieşirile acestora controlând funcţiile<br />

<strong>de</strong> numărare şi respectiv încărcare ale unui numărător NUM. Starea numărătorului<br />

poate fi <strong>de</strong>ci obţinută fie prin incrementarea (C) fie prin încărcarea paralel (L) a<br />

adresei <strong>de</strong> salt (BRANCH).<br />

+5V<br />

Flag<br />

+5V<br />

7 6 5 4 3 2 1 0<br />

7 6 5 4 3 2 1 0<br />

MUX<br />

Adresa <strong>de</strong> salt<br />

(BRANCH)<br />

MUX<br />

OPCOD<br />

OPCOD<br />

3<br />

C<br />

NUM<br />

L<br />

Adresa<br />

Spre memoria


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 38<br />

Figura 8.26<br />

Celelalte elemente ale arhitecturii automatului reprezintă componente<br />

integrate <strong>cu</strong>rente <strong>de</strong> tip MSI sau LSI şi care pot fii preluate direct sau <strong>cu</strong> mici<br />

adaptări. În general, se caută realizarea acestor automate sub forma unor arhitecturi<br />

standard organizate în jurul unor magistrale pe 4 biţi, pentru eventuale extensii<br />

preferându-se conexiuni <strong>de</strong> tip bit-slice.<br />

Implementarea sistemului <strong>de</strong> <strong>conducere</strong> a unui robot <strong>cu</strong> un automat <strong>de</strong> acest<br />

tip necesită par<strong>cu</strong>rgerea aceloraşi etape ca cele <strong>de</strong>terminate la automatele <strong>cu</strong><br />

PROM-uri, având în plus câteva parti<strong>cu</strong>larităţi specifice:<br />

* Se construieşte organigrama stărilor, din protocolul <strong>de</strong> funcţionare al<br />

robotului, şi se modifica structura acesteia pentru a obţine compatibilitatea<br />

traseelor logice <strong>cu</strong> instrucţiunile automatului. Eventualele incompatibilităţi se<br />

rezolvă prin introducerea unor stări suplimentare. Fiecare cod <strong>de</strong> stare <strong>de</strong>fineşte o<br />

adresa a memoriei.<br />

* Se codifică toate variabilele <strong>de</strong> intrare (<strong>de</strong> la robot) şi <strong>de</strong> ieşire (spre<br />

comenzile robotului).<br />

* Se <strong>de</strong>termină formatul microinstrucţiunilor utilizate ţinând cont <strong>de</strong><br />

lungimea codurilor adoptate.<br />

* Pentru fiecare <strong>cu</strong>vânt <strong>de</strong> adresa <strong>de</strong> <strong>de</strong>termină microinstrucţiunea<br />

corespunzătoare.<br />

* Se înscrie întreaga informaţie în memorie şi se interconectează toate<br />

componentele conform arhitecturii <strong>de</strong> bază.<br />

Pentru exemplificarea procedurii se va relua problema implementării<br />

sistemului <strong>de</strong> <strong>conducere</strong> al robotului <strong>de</strong>scris în 8.1.2. Organigrama modificată şi<br />

codurile <strong>de</strong> stare adaptate sunt prezentate in fig. 8.27.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 39<br />

1<br />

0001<br />

0 1<br />

Start<br />

0010<br />

1 * 0 1<br />

GI<br />

2<br />

IG<br />

0010<br />

3<br />

X +<br />

0011<br />

L x 2 ,L y<br />

1<br />

0<br />

0110<br />

4<br />

1<br />

0100<br />

X - ,Y +<br />

6<br />

L x 1 ,L y<br />

2<br />

0<br />

5<br />

1<br />

Y -<br />

0101<br />

1<br />

L 1 2 0<br />

x L y<br />

a<br />

OPCOD ADR.MUX ADR.BRANCH COD IESIRI<br />

3b 4b 4b 4b<br />

b


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 40<br />

Variabile <strong>de</strong> intrare Cod Variabile <strong>de</strong> iesire Cod<br />

START<br />

GI<br />

L 2 x L 1 y<br />

L 1 x L 2 y<br />

L 1 x L 1 y<br />

0 0 1 0<br />

0 0 1 1<br />

0 1 0 0<br />

0 1 0 1<br />

0 1 1 0<br />

c<br />

Figura 8.27<br />

I G 0 0 0 1<br />

X +<br />

0 0 1 0<br />

X ,Y 0 0 1 1<br />

Y <br />

0 1 0 0<br />

S-a utilizat un format asociat unei arhitecturi pe 4 biţi (nu neapărat necesar)<br />

din consi<strong>de</strong>rentele expuse mai sus.<br />

Implementarea organigramei utilizează două tipuri <strong>de</strong> microinstrucţiunii:<br />

IBC în stările 1, 1’, 3, 4, 5 şi BUC în stările 2 şi 6. Starea este introdusă<br />

suplimentar pentru a permite aplicarea microinstrucţiunii IBC în starea 5 un<strong>de</strong><br />

funcţia <strong>de</strong> salt se realizează pe traseul 5 5 iar incrementarea pe traseul 5 6 .<br />

Întregul sistem <strong>de</strong> <strong>conducere</strong> este prezentat în fig. 8.28. Se observă că<br />

mărimile <strong>de</strong> intrare sunt introduse prin complementare întru-cât codificarea prin<br />

IBC este realizată complementar <strong>de</strong>finirii acestei microinstrucţiunii (tabelul 8.4). În<br />

figură este prezentată <strong>de</strong>taliat şi informaţia conţinută în memorie. De exemplu,<br />

adresa 0001 (starea 1) i<strong>de</strong>ntifică un <strong>cu</strong>vânt în care primul câmp (3 biţi) <strong>de</strong>termină<br />

microinstrucţiunea IBC, următorul câmp (4 biţi) i<strong>de</strong>ntifică codul mărimii <strong>de</strong> intrare<br />

START, al treilea câmp <strong>de</strong>termină adresa <strong>de</strong> salt 0001 (starea 1) iar ultimul câmp,<br />

asociat variabilei <strong>de</strong> ieşire primeşte cod 0000 întru-cât stării 1 nu i se asociază nici<br />

o ieşire. Toate celelalte <strong>cu</strong>vinte din memorie sunt construite după aceeaşi<br />

procedură.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 41<br />

L 1 XL 1 Y<br />

L 1 XL 2 Y<br />

L 2 XL 1 Y<br />

GI<br />

START<br />

+5V<br />

15 ……….6 5 4 3 2 1<br />

MUX<br />

CONTROLER<br />

MEMORIE<br />

0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0<br />

0 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0<br />

0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0<br />

0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1<br />

0 1 0 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0<br />

0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0<br />

0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1<br />

DZ<br />

0 1 2 3 4 5 …. 15<br />

IG X + Y + Y -<br />

X -<br />

Figura 8.28<br />

8.2.2. Automate <strong>cu</strong> stivă<br />

Evoluţiile unui robot industrial reprezintă, <strong>de</strong> foarte <strong>de</strong>se ori, cicluri<br />

tehnologice, condiţionate <strong>de</strong> factori externi sau <strong>de</strong> mărimi interne proprii robotului.<br />

Într-o interpretare mai generală a acestor evoluţii, acestea pot fi consi<strong>de</strong>rate ca<br />

secvenţe funcţionale <strong>de</strong> tip subrutină în cadrul unor programe <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> o<br />

structură riguros <strong>de</strong>finită.<br />

De exemplu, evoluţiile <strong>de</strong> tipul celor prezentate în figura 8.29 necesită apelul<br />

succesiv al unor subrutine şi revenirea din acestea ori <strong>de</strong> câte ori condiţiile <strong>de</strong><br />

finalizare (CF) sunt realizate.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 42<br />

s<br />

1<br />

s<br />

2<br />

s 3<br />

s<br />

4<br />

s 5<br />

'<br />

s 6<br />

'<br />

s 2<br />

'<br />

s 3<br />

"<br />

s 1<br />

"<br />

s 2<br />

s 6<br />

'<br />

s 4<br />

"<br />

s 3<br />

'<br />

s 5<br />

CF”<br />

"<br />

s 4<br />

CF’<br />

'<br />

s 6<br />

Nr.<br />

crt.<br />

Figura 8.29<br />

OPCOD Flag Comentariu<br />

OC<br />

AU<br />

AP1<br />

AU ADR. BRANCH ; STIVA AP <br />

OC 2 OC 1 0<br />

6 1 0 1 0<br />

1<br />

7 1 1 0 0<br />

1<br />

1<br />

AU <br />

ADR.<br />

BRANCH <br />

AU STIVA<br />

Tabelul 8.5<br />

Implementarea unor automate care să asigure o funcţionare pe principiul<br />

stivei reclamă în primul rând introducerea, pe lângă instrucţiunile folosite în mod<br />

<strong>cu</strong>rent, a unor instrucţiuni specifice funcţiilor <strong>de</strong> tip subrutină. În mod <strong>cu</strong>rent, se<br />

utilizează două instrucţiuni <strong>de</strong> acest fel (tabelul 8.5), BSR (BRANCH<br />

SUBRUTINE) şi RSR (RETURN SUBRUTINE).<br />

În microinstrucţiunea BRS este testată condiţia Flag, dacă Flag=0 se<br />

realizează incrementarea normală a adresei, dacă Flag=1 se face un salt la adresa <strong>de</strong><br />

început a subrutinei, în stivă memorandu-se codul (AP)+1. A doua


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 43<br />

microinstrucţiune asigură revenirea din subrutină: pentru FLAG=0 se rămâne în<br />

subrutină exe<strong>cu</strong>tându-se un salt la adresa <strong>de</strong> început a subrutinei, iar pentru<br />

FLAG=1 se revine în subrutina superioară pe baza adresei memorată în stivă.<br />

Se observă <strong>de</strong>ci, că funcţiile implicate <strong>de</strong> lucrul în subrutină al acestui<br />

automat sunt aceleaşi <strong>cu</strong> ale oricărui cal<strong>cu</strong>lator numeric. Diferenţa este numai <strong>de</strong><br />

ordin cantitativ dimensiunile registrului stivă fiind mult mai mo<strong>de</strong>ste. În mod<br />

<strong>cu</strong>rent, se poate utiliza o stivă <strong>de</strong> 4 registre a 4 biţi (pentru o magistrală similară)<br />

fig.8.30.<br />

Stiva (4x4)<br />

A<br />

B<br />

C<br />

CONTROL<br />

S 0<br />

S 0<br />

0<br />

S 1 0<br />

1<br />

1<br />

A<br />

0<br />

1<br />

0<br />

1<br />

Functie<br />

Stare<br />

neschimbata<br />

PUSH<br />

POP<br />

*<br />

D<br />

Figura 8.30<br />

Arhitectura automatului (fig.8.31) este similară <strong>cu</strong> cea dis<strong>cu</strong>tată în cadrul<br />

configuraţiei <strong>de</strong> bază, aceasta conţinând în plus o magistrală pentru adrese, în cazul<br />

lucrului <strong>cu</strong> o consolă sau întru-un sistem <strong>de</strong> întreruperi (adrese <strong>de</strong> fortaj). În<br />

schimb, apare <strong>cu</strong> totul diferită structura controlerului (fig.8.32). Se remarcă în<br />

primul rând complexitatea configuraţiei şi numărul relativ mare <strong>de</strong> variabile <strong>de</strong><br />

control implicate.<br />

Controlerul este realizat sub forma unei configuraţii <strong>de</strong> cir<strong>cu</strong>ite grupate în<br />

jurul unui multiplexor MUX. Sursa multiplexorului poate fi construită <strong>de</strong>: adrese<br />

<strong>de</strong> fortaj, adrese <strong>de</strong> salt (BRANCH), adresa <strong>cu</strong>renta şi stivă. Stiva, la rândul ei, este<br />

încărcată <strong>de</strong> la un bloc sumator funcţionând în regim <strong>de</strong> incrementare prin controlul<br />

variabilei <strong>de</strong> transport c. Ieşirea multiplexorului este preluată <strong>de</strong> un numărător care<br />

realizează funcţiile uzuale <strong>de</strong> încărcare şi incrementare. Controlul acestor cir<strong>cu</strong>ite<br />

este realizat <strong>de</strong> un <strong>de</strong>codificator D implementat, în mod <strong>cu</strong>rent, printr-un PROM.<br />

Aceasta primeşte ca vector <strong>de</strong> adresă variabila.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 44<br />

Intrari<br />

+5V<br />

N 2 1 0<br />

MUX<br />

Adrese <strong>de</strong> fortaj<br />

Adrese <strong>de</strong> salt<br />

Flag<br />

OPCOD<br />

CONTROLER<br />

MEMORIE<br />

DZ<br />

Iesiri<br />

Figura 8.31


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 45<br />

c i<br />

<br />

Flag<br />

OC 2<br />

S 0<br />

S 1<br />

STIVA<br />

Adresa<br />

salt<br />

Adresa<br />

<strong>de</strong> fortaj<br />

OC 1<br />

D<br />

OC 0<br />

A<br />

B<br />

3 2 1 0<br />

MUX<br />

C<br />

L<br />

NUM<br />

Adresa<br />

Figura 8.32<br />

Flag şi OPCOD-ul microinstrucţiunii şi generează la ieşire cele şapte<br />

semnale <strong>de</strong> control interne, c<br />

1<br />

, S, S, A, B, C, L conform <strong>cu</strong> funcţiile impuse <strong>de</strong><br />

fiecare microinstrucţiune (tabelul 8.6).<br />

Primele şapte microinstrucţiunii au funcţii <strong>de</strong>ja analizate, ultima LJA<br />

(LOAD JAM ADRESS) este utilizată în regimuri <strong>de</strong> lucru <strong>cu</strong> operator realizând<br />

incrementarea normală a adresei în cazul în care FLAG=0 sau salt la o adresa <strong>de</strong><br />

forţare (JAM) <strong>cu</strong> memorarea în stivă a adresei următoare dacă condiţia FLAG este<br />

1.<br />

Mnemonic OPCOD Flag C L A B<br />

0<br />

OC<br />

2<br />

OC<br />

1<br />

OC<br />

0<br />

1 HIC 0 0 0 0<br />

1<br />

S S<br />

1<br />

C<br />

1<br />

0 1 1 0 - - - - - -<br />

1 0 - - - - - - - - - -


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 46<br />

2 HBC 0 0 1 0<br />

1<br />

3 IUC 0 1 0 0<br />

1<br />

4 BUC 0 1 1 0<br />

1<br />

5 IBC 1 0 1 0<br />

1<br />

6 BSR 1 0 1 0<br />

1<br />

7 RSR 1 0 1 0<br />

1<br />

8 LJA 1 1 1 0<br />

1<br />

Tabelul 8.6<br />

0 1 1 0 - - - -<br />

0 1 0 1 - - - -<br />

1 0 - - - - - - - -<br />

1 0 - - - - - - -<br />

0 1 0 1 - - - - -<br />

0 1 0 1- - - - - -<br />

1 0 - - - - - -<br />

0 1 0 1 - - -<br />

1 0 - - -- - -<br />

0 1 0 1 0 1 1<br />

1 0 - - - - - -<br />

0 1 1 1 1 0 0<br />

1 0 - - - - - - -<br />

0 1 0 0 0 1 1<br />

8.2.3. Conducerea unui robot-manipulator prin automate <strong>cu</strong> stivă.<br />

Pentru ilustrarea modului <strong>de</strong> utilizare a acestui automat, se va consi<strong>de</strong>ra<br />

sistemul <strong>de</strong> <strong>conducere</strong> al unui robot manipulator ce <strong>de</strong>serveşte o linie <strong>de</strong> acoperiri<br />

galvanice (fig.8.38).<br />

s<br />

T 1 T 2 T 3<br />

J C 1 C 2 C 3 C 4 C 5 C 6 C 7<br />

Figura 8.33<br />

În conformitate <strong>cu</strong> analiza efectuată în capitolul prece<strong>de</strong>nt, robotul preia piese<br />

dintr-o <strong>cu</strong>vă, exe<strong>cu</strong>tă un ciclu <strong>de</strong> ridicare, <strong>de</strong>plasare la dreapta <strong>cu</strong> un pas, coborâre<br />

<strong>cu</strong> menţinerea poziţiei în <strong>cu</strong>vă un timp prestabilit etc. Acest ciclu poate fi<br />

interpretat ca o subrutină tehnologică în care parametrii sunt menţinuţi constanţi <strong>cu</strong><br />

excepţia timpului <strong>de</strong> tratare în <strong>cu</strong>vă. În fig. 8.34, organigrama <strong>de</strong> stări este <strong>de</strong>falcată<br />

în două părţi: stările asociate fluxului tehnologic principal (1, 2, 3, ……, 7,….) şi<br />

stările subrutinei (1’, 2’, 3’, 4’). Condiţia <strong>de</strong> trecere pe subrutină este dată <strong>de</strong><br />

<strong>de</strong>cizia FT (final-timp), condiţie care marchează în acelaşi timp şi sfârşitul<br />

subrutinei.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 47<br />

1<br />

D<br />

0001<br />

(subrutină)<br />

a<br />

2<br />

C 1<br />

0010<br />

Timp 1<br />

0<br />

1’<br />

1000<br />

R<br />

s<br />

0<br />

3<br />

001<br />

FT<br />

D<br />

1<br />

b<br />

a<br />

2’<br />

1001<br />

D<br />

C*<br />

0<br />

4<br />

C 3<br />

0100<br />

Timp 2<br />

0<br />

3’<br />

1010<br />

C<br />

J<br />

0<br />

5<br />

6<br />

FT<br />

0101<br />

D<br />

C 6<br />

0110<br />

Timp 3<br />

0<br />

b<br />

a<br />

4’<br />

101<br />

TIMP<br />

FT<br />

b<br />

0<br />

FT<br />

1<br />

b<br />

7<br />

0111<br />

D<br />

a<br />

Figura 8.34<br />

Valoarea temporizării impuse din motive tehnologice diferă în fiecare ciclu, ceea<br />

ce face necesara introducerea ei, în afara subrutinei, în starea ce prece<strong>de</strong> subrutina.


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 48<br />

Datorită rolului <strong>de</strong>osebit al informaţilor <strong>de</strong> temporizare, acestora li se vor<br />

aloca un timp special în formatul <strong>cu</strong>vântului din memorie. Se va consi<strong>de</strong>ra ca o<br />

lungime <strong>de</strong> 4 biţi este suficientă pentru acoperirea temporizărilor solicitate (tabelul<br />

8.7). În consecinţă, formatul microinstrucţiunilor va fi<br />

OPCOD ADR.INTR ADR.BRANCH COD COD<br />

IEŞIRE TEMP<br />

3b 4b 4b 4b 4b<br />

Variabile <strong>de</strong><br />

intrare<br />

FT<br />

C<br />

*<br />

Cod<br />

C 0 0 1 0<br />

1<br />

0 0 1 1<br />

C2<br />

0 1 0 0<br />

C3<br />

0 1 0 0<br />

0 1 0 1<br />

C4<br />

0 1 1 0<br />

C5<br />

0 1 1 1<br />

C<br />

1 0 0 0<br />

6<br />

1 0 0 1<br />

C7<br />

1 0 1 0<br />

J<br />

1 0 1 0<br />

1 1 0 0<br />

s<br />

Variabile<br />

<strong>de</strong><br />

ieşire<br />

D<br />

R<br />

C<br />

TIMP<br />

L TIMP<br />

Cod<br />

0 0 0 1<br />

0 0 1 0<br />

0 0 1 1<br />

0 1 0 0<br />

0 1 0 1<br />

0 1 1 0<br />

Temporizări<br />

TIMP 1<br />

TIMP 2<br />

TIMP 3<br />

Cod timp<br />

T3 T2 T1 T0<br />

1 0 1 0<br />

1 1 0 0<br />

0 1 1 0


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 49<br />

*<br />

C U 7 <br />

i1<br />

c<br />

i<br />

OPCOD ADR.INTRĂRI ADR.BRANCH COD IEŞIRI COD<br />

TEMPORIZĂRI<br />

3b 4b 4b 4b 4b<br />

Tabelul 8.7<br />

Adresa<br />

0 0 0 1<br />

0 0 1 0<br />

0 0 1 1<br />

0 1 0 0<br />

0 1 0 1<br />

0 1 1 0<br />

.<br />

.<br />

.<br />

1 0 0 0<br />

1 0 0 1<br />

1 0 1 0<br />

1 0 1 1<br />

1 0 0<br />

1 0 1<br />

1 0 0<br />

1 0 1<br />

1 0 0<br />

1 0 1<br />

1 0 0<br />

1 0 0<br />

1 0 0<br />

1 1 0<br />

Structura <strong>cu</strong>vintelor în memorie<br />

0 0 1 0<br />

1 0 1 1<br />

0 1 0 0<br />

1 0 1 1<br />

0 1 1 1<br />

1 0 1 1<br />

1 0 1 0<br />

1 1 0 0<br />

1 0 0 1<br />

1 0 1 1<br />

0 0 0 1<br />

1 0 0 0<br />

0 0 1 1<br />

1 0 0 0<br />

0 1 0 1<br />

1 0 0 0<br />

1 0 0 0<br />

1 0 0 1<br />

1 01 0<br />

1 0 1 1<br />

Tabelul 8.8<br />

0 0 0 1<br />

0 1 1 0<br />

0 0 0 1<br />

0 1 1 0<br />

0 0 0 1<br />

0 1 1 0<br />

0 0 1 1<br />

0 0 0 1<br />

0 1 0 0<br />

0 1 0 1<br />

0 0 0 0<br />

1 0 1 0<br />

0 0 0 0<br />

1 1 0 0<br />

0 0 0 0<br />

0 1 1 0<br />

0 0 0 0<br />

0 0 0 0<br />

0 0 0 0<br />

0 0 0 0


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 50<br />

ADR.<br />

INTRĂRI<br />

C FT s J C 7 C 6 C 5 C +5V<br />

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />

C 3 C 2 C 1<br />

MEMORIE<br />

ADR. SALT<br />

OPCOD<br />

CONTROLER<br />

INF. TEMPORIZARE<br />

DZ<br />

0 1 2 3 4 5 6 7 …. 15<br />

L TIMP<br />

N<br />

GT<br />

TIMP<br />

Figura 8.35<br />

FT<br />

Variabile <strong>de</strong> ieşire <strong>cu</strong>prind cele patru comenzi D S R C pentrtu<br />

acţionarea robotului, o variabilă TIMP ce <strong>de</strong>termină <strong>de</strong>clanşarea generatorului <strong>de</strong><br />

tact ce formează baza <strong>de</strong> timp a sistemului şi o variabilă LTIMP ce încecarcă codul<br />

temporizării dorite.<br />

Configuraţia completă a sistemului <strong>de</strong> <strong>conducere</strong> este prezentată în fig. 8.35<br />

iar structura <strong>de</strong>taliată a informaţiei în memorie se poate urmării în tabelul 8.8. Se<br />

remarcă prezenţa unui cir<strong>cu</strong>it specializat pentru marcarea temporizărilor format<br />

dintr-un numărător N încărcat în paralel din câmpul corespunzător al memoriei sub<br />

controlul variavilei <strong>de</strong> încărcare LTIMP. În generatorul <strong>de</strong> tact GT ale cărui<br />

impulsuri <strong>de</strong>crementează valoarea memorată în numărător. La atingerea timpului<br />

impus, numărătorul N <strong>de</strong>vine zero şi un cir<strong>cu</strong>it logic <strong>de</strong>tectează starea respectivă


<strong>Sisteme</strong> <strong>de</strong> <strong>conducere</strong> <strong>cu</strong> <strong>logica</strong> flexibilă 51<br />

formând totodată un semna FT (final timp) utilizat în <strong>logica</strong> <strong>de</strong> control a<br />

automatului.<br />

O remarcă <strong>de</strong>osebită trebuie alocată spaţiului redus <strong>de</strong> memorie utilizată<br />

având în ve<strong>de</strong>re complexitatea cir<strong>cu</strong>itului funcţional impus. Este o consecinţă<br />

firească a utilizării facilităţilor oferite <strong>de</strong> configuraţiile <strong>cu</strong> stivă care asigură o mai<br />

judicioasă utilizare a resurselor interne ale automatelor.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!