Sisteme de conducere cu logica flexibila
Sisteme de conducere cu logica flexibila
Sisteme de conducere cu logica flexibila
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.