SISTEME DE CONDUCERE CU MULTIPROCESOR
Complexitatea structurilor mecanice într-o serie de roboti industriali, a sistemelor senzoriale precum si gradul ridicat de dificultate al operatiilor tehnologice conexe necesita sisteme de conducere cu rezerve hardware si software suficiente, care sa acopere cerintele impuse de regimurile specifice în care opereaza aceste sisteme. Una din solutiile cele mai curent utilizate în aceasta directie consta în implementarea sistemului de conducere pe o structura bazata pe microprocesoare.
Microprocesorul acopera relativ usor cerintele specificate mai sus si asigura în acelasi timp o flexibilitate deosebita a domeniului de utilizare, o fiabilitate ridicata si, nu în ultimul rând, o solutie economica în general unanim acceptabila.
Principii generale
Caracteristica de baza a unui sistem robotic este miscarea robotului în cicluri reprogramabile si capacitatea acestuia de a schimba, modifica, traiectoria si punctele esentiale ale acesteia în conformitate cu modificarea cerintelor de operare. Aceasta presupune existenta unor sisteme de conducere flexibile care sa asigure generarea unor legi de conducere adecvate si modificarea acestora când este cazul. Implementarea lor necesita fie existenta unui sistem de programare, cu programe realizate off-line, fie a unui sistem de instruire specific. În ambele cazuri va fi necesara introducerea unei memorii care sa asigure informatia de control corespunzatoare.
Deci, aceste sisteme trebuie sa fie dotate cu o memorie de dimensiuni adecvate si cu o structura hardware si software de control a acesteia.
Robotii generatiilor recente sunt dotati cu structuri ierarhizate de conducere ceea ce asigura o comportare adecvata la schimbarile mediului de lucru. Aceasta impune fie existenta unui calculator puternic care sa acopere întregul sistem de conducere, fie a unor procesoare specializate atasate fiecarui nivel ierarhic. Ultima solutie este de cele mai multe ori preferabila, atât în ceea ce priveste flexibilitatea de ansamblu a configuratiei, cât si sub raport economic.
Robotii actuali au în general un câmp de aplicatie bine conturat, acesta fiind definit de structura mecanica existenta si, în special, de specificul sistemului de calcul si al programelor utilizate. Astfel, un robot destinat unor operatii de vopsire trebuie sa fie echipat cu un sistem hardware - software care sa-i permita programarea prin instruire a traiectoriilor de miscare, pe când un robot utilizat în operatii de asamblare cuprinde un sistem de masurare si senzorial de înalta calitate pentru a asigura conducerea complianta adecvata.
10.2. Structura de baza
Solutiile hardware implicate în orice sistem de conducere cu micrprocesor pot fi grupate în doua clase mari: arhitecturi microprocesor si arhitecturi multiprocesor.
Într-o structura multiprocesor, fiecarei axe de miscare i se asociaza câte un procesor împreuna cu modulele de interfata auxiliare catre dispozitivul de actionare si catre sistemul de traductoare de deplasare. Un procesor specializat coordoneaza si supervizeaza întregul proces, acesta asumându-si, în acelasi timp, o serie de sarcini ce nu pot fi distribuite procesoarelor locale.
Aceasta distributie a functiilor de conducere între câteva procesoare are, în primul rând, avantajul unei distributii a efortului de calcul care, într-o conducere în timp real, este întotdeauna prioritar.Aceasta solutie va fi, deci, recomandabila în sistemele mai lente, cu un set de instructiuni redus, si cu timpi de prelucrare mari.
Daca procesoarele utilizate sunt microprocesoare pe 16 sau 32 biti cu o prelucrare rapida de informatie si care contin un set bogat de 212b14c instructiuni, atunci o arhitectura de tip multiprocesor nu este recomandata, întregul sistem de conducere putând fi acoperit cu un singuur procesor.
Indiferent de tipul arhitecturii utilizate, o caracteristica de baza a acesteia este modularitatea. Aceasta modularitate trebuie privita sub doua aspecte:
Modularitate functionala ce reflecta tendinta sistemului de a ramâne constant (ca structura) pentru orice extindere solicitata. Astfel, daca se doreste introducerea unei bucle de conducere pentru înca o axa de miscare, aceasta implica integrarea unui set nou de functii (hardware si software) fara a modifica structura existenta.
Modularitatea fizica indica integrarea uneia sau a mai multor unitati fizice într-o singura unitate functionala. Aceasta organizare ofera avantaje deosebite în fazele de proiectare si de explorare ale echipamentului.
În continuare va fi analizata detaliat o arhitectura tip monoprocesor a carei structura se va regasi în toate configuratiile uzuale de conducere (figura 10.1).
Unitatea principala a sistemului este microprocesorul împreuna cu unitatile de memorie aferente. Caracteristicile microprocesorului determina direct puterea unitatii de control si flexibilitatea acesteia.
În principiu, performantele microprocesorului trebuie sa corespunda unui standard ridicat, prin aceasta întelegând:
O unitate aritmetica si logica capabila sa manipuleze date pe 16 biti si sa realizeze operatii aritmetice complexe ca adunarea si inmultirea;
Un sistem puternic de gestionare a intrarilor si iesirilor în timp real;
Un set bogat de instructiuni cu mai multe moduri de adresare;
Timpul asociat ciclurilor masina sa fie mic;
O serie de microprocesoare comerciale satisfac aceste deziderate. Mentionam în acest sens seria 9000 de la Texas Instruments, Motorola 6800, Intel 8086 etc.
Memoria sistemului este formata din componente ROM, PROM sau EPROM ce memoreaza programul de control general al robotului si componentele RAM utilizate în fazele de executie si pentru memorarea unor variabile în ciclurile de instruire.
Arhitectura sistemului cuprinde un set de module de interfata prin care se achizitioneaza informatiile traductoarelor de masura sau ale sistemului senzorial si prin care se transmit comenzile de actionare.
Informatia de pozitie este primita de la un traductor incremental sau absolut si este convertita în circuitul de interfata în semnale compatibile cu microprocesorul. Informatia de comanda este obtinuta în urma unei prelucrari numerice a algoritmului de conducere sub forma unui semnal numeric si este convertita în sistemul de interfatare într-un semnal, de obicei analogic, care activeaza blocul de actionare corespunzator.
Cele doua marimi, de pozitie si de comanda, asigura legatura microprocesorului cu obiectul condus, robotul, si asigura functionalitatea arhitecturii ca un sistem în circuit închis.
O functionare tipica de conducere a robotului pe o traiectorie data se realizeaza în modul urmator. La intervale de timp egale, microprocesorul calculeaza coordonatele necesare pentru deplasarea terminalului, cu o marime corespunzatoare intervalului de timp si cu o orientare adecvata, în lungul traiectoriei de lucru. Aceste coordonate sunt comparate cu cele primite de la traductoare, eroarea rezultata este introdusa intr-un regulator PID (implementat software) ai carui coeficienti sunt dependenti de caracteristicile sistemului. Iesirile regulatorului comanda sistemul de actionare prin circuitul de interfatare. În scopul obtinerii unei stabilitati garantate în circuit închis, întregul sistem trebuie sa opereze la o frecventa ridicata.
Un modul de interfata specific acestei arhitecturi este cel care asigura legatura cu operatorul. În mod normal operatorul actioneaza asupra microprocesorului prin doua moduri: un pupitru (tablou) de comanda si un panou (pupitru de intruire).
Primul asigura o legatura permanenta cu robotul si cu microprocesorul semnalând diferitele regimuri functionale si permitând o interventie directa. Al doilea sistem asigura functiile de instruire si este realizat ca o unitate fizica portabila ce permite deplasarea operatorului în imediata vecinatate a robotului în scopul obtinerii unei instructiuni concrete.
Ultimul modul în aceasta configuratie asigura legatura directa intrare - iesire cu spatiul extern al microprocesorului, acesta fiind concretizat aici de structura mecanica a robotului si de mediul de operare al acestuia. Prin acest sistem de interfata microprocesorul primeste informatiile senzorilor din structura robotului sau a spatiului de lucru al acestuia si permite obtinerea unei comportari adaptive fata de orice modificare a parametrilor respectivi.
A doua categorie de sisteme, cele de tip multiprocesor, corespund unor arhitecturi mai avansate, adecvate unei conduceri evoluate a robotilor.
În figura 10.2 este prezentata o astfel de structura bazata pe o ierarhizare master - slave a procesoarelor. Procesorul master - slave stabileste legile generale de conducere a robotului, strategia de functionare a acestuia si împarte fiecarui procesor sclav sarcinile în conducerea fiecarui element. Astfel, un procesor sclav coordoneaza functiile tactile ale mâinii, iar celelalte controleaza miscarea asociata fiecarei articulatii mecanice pe baza informatiilor primite de la traductoarele si senzorii sistemului.
Pe lânga caracteristicile mentionate mai sus, un astfel de sistem mai cuprinde si numeroase avantaje cum ar fi: suplete tehnologica, posibilitatea interconectarii unor subsisteme de conducere specializata, testabilitate facila etc.
10.3. Implementarea sistemelor de conducere
Indiferent de structura de conducere adoptata, una din functiile de baza ale microprocesorului va consta în acoperirea controlerului numeric ce asigura performantele de regim stationar si dinamic ale elementelor mecanice. O functionare corecta în acest sens este posibila numai daca controlerul realizat opereaza în timp real ceea ce impune o prelucrare adecvata a semnalelor (esantionate si cuantificate), o procesare interna conform algoritmului adoptat si o generare corespunzatoare a marimilor de comanda necesare.
În anumite configuratii standard, controlerul numeric nu reprezinta altceva decât o transpunere digitala a clasicului regulator sau compensator utilizat în buclele de reglare conventionale. În acest caz efortul de calcul este minim si acoperirea este posibila utilizând un suport hardware modest. În cazurile unor abordari mai sofisticate a sistemului de conducere se impune mai întâi o îmbunatatire si filtrare a acestuia utilizând tehnici de calcul corespunzatoare si apoi implementarea unor legi de conducere cu performante ridicate.
Indiferent de complexitatea solutiilor abordate, structura generala a sistemului de conducere are forma prezentata în figura 10.3. Un bloc de esantionare determina discretizarea marimilor de tip analogic asigurând în acest fel caracteristicile necesare prelucrarii numerice ulterioare,
(10.1)
unde T este perioada de esantionare.
Eroarea sistemului de conducere se determina din semnalele astfel formate:
(10.2)
Controlerul numeric genereaza comenzile ui conform relatiei:
(10.3)
unde G reprezinta legea de control utilizata.
Ambele functii de prelucrare numerica, a controlerului si cea a blocului comparator (calculul erorii) sunt acoperite de microprocesor. Acesta furnizeaza la iesire o marime de comanda numerica incompatibila în general cu sistemul de actionare al robotului. Conversia semnalului de comanda discret într-un semnal continuu se realizeaza cu circuite de extrapolare. Se prefera utilizarea unor extrapolare de ordin zero având în vedere facilitatile de realizare fizica a acestora. Într-adevar, datorita caracteristicilor specifice
(10.4)
ele pot fi obtinute cu simple elemente de memorie analogica.
Principiile teoretice referitoare la gasirea celor mai adecvate solutii privind implementarea sistemului numeric de control au fost analizate într-un numar mai mare de lucrari [3, 32, 89, 118]. În cele ce urmeaza vor fi abordate câteva metode ce permit obtinerea unor solutii relativ comode.
10.3.1. Proceduri de implementare conventionale
Una din cele mai simple modalitati de proiectare consta în utilizarea procedurilor clasice de sinteza a sistemului de conducere pentru semnale continue în timp si conversia acestui sistem într-un sistem discret analizând toate implicatiile ce decurg din aceasta transformare. Acestea se refera în general la efectele privind deteriorarea stabilitatii sistemului ca urmare a esantionarii semnalelor.
Într-o forma simplificata, etapele ce definesc aceste proceduri sunt urmatoarele:
i) Se proiecteaza structura de conducere a fiecarei articulatii mecanice astfel încât sa se asigure performantele de regim stationar si dinamice impuse utilizând tehnicile specifice semnalelor continue. Aceste metode au fost analizate în capitolul 5 si corespund unor proceduri destul de familiare proiectantilor de sisteme automate. Reluând anumite aspecte discutate anterior, un astfel de sistem va avea forma prezentata în figura 10.4,a. Mai exact, pentru cazul unei articulatii de rotatie, în figura 10.4,b. sunt indicate functiile de transfer ale elementului mecanic si al sistemului de actionare (motor de curent continuu . Regulatorul va avea o functie de transfer mai mult sau mai putin complicata conform performantelor impuse întregului sistem de conducere.
ii) Se alege perioada de esantionare T a sistemului discretizat. Aceasta alegere este determinata atât din ratiuni de implementare tehnologica cât si, în special, din consideratii privind pastrarea performantelor stationare si dinamice sau altfel spus, pastrarea raspunsului la impuls si în frecventa al noului sistem discretizat.
Prima conditie implica practic determinarea uunei anumite lungimi a cuvântului si deci este corelata direct cu arhitectura sistemului de calcul, cu resursele hardware disponibile. Asupra acestui aspect se va reveni ulterior.
Respectarea celei de a doua conditii implica satisfacerea unor restrictii legate de constantele de timp sau frecventele critice ale sistemului condus. În literatura aceste restrictii sunt date sub forma [119],
unde
iar este largimea de banda a sistemului în bucla închisa.
Alte criterii [118] impun o solutie de forma :
(10.6)
unde sunt constantele de timp principale ale partii fixe, sau [82],
în care min este cea mai mica constanta de timp a elementelor mecanice. De asemenea, dupa [80] se propune
Toate aceste criterii mai mult sau mai putin empirice permit alegerea unei perioade de esantionare T într-o prima etapa. Se impune ulterior verificarea corectitudinii acestei selectii printr-o analiza riguroasa a implicatiilor introduse în comportarea sistemului de conducere.
Plecând de la premisa ca regulatorul si elementele de comparatie alanogica sunt implementate corect sub raportul performantelor prin controlerul numeric si blocurile de esantionare si de calcul al erorii (fig. 10.9.), diferentierile între cele doua structuri de conducere, cea continua si cea discreta sunt date de blocul de extrapolare. Se impune, deci, verificarea gradului de alterare al performantelor prin întârzierile introduse de extrapolare.
Figura 10.5
În practica, se analizeaza stabilitatea unui sistem de conducere de forma prezentata in figura 10.5 în care s-a intercalat un bloc de extrapolare.
Tehnica curent utilizata consta în trasarea locului
radacinilor pentru noul sistem de conducere în circuit închis si
verificarea regimurilor stabile pentru o functie de transfer a extrapolarului.
De exemplu, daca se considera un extrapolar de ordin zero, atunci
(10.8)
În conditiile în care aceasta modificare structurala mentine calitativ regimurile functionale dorite se poate trece le etapa urmatoare, în caz contrar o modificare a perioadei de esantionare T (micsorarea acesteia) fiind imperios necesara.
iii) Se aplica transformanta Z functiei de transfer a regulatorului determinând astfel functia de transfer directa a controlerului numeric.
(10.9)
De asemenea, notând prin
(10.10)
si
(10.11)
se obtine forma discreta a sistemului de conducere (figura 10.6).
În aceasta prezentare, functia de transfer are forma generala,
(10.12)
Relatia (10.2) constituie punctul de plecare al implementarii controlerului numeric.
iv) Se determina algoritmul de functionare al controlerului
sau, în domeniul timp
(10.13)
v) Se adopta o solutie hardware pentru întregul sistem de conducere. Se implementeaza prin software-ul procesorului algoritmul (10.13).
Figura 10.6
În figura 10.7 este prezentata structura generala a sistemului de conducere. În afara elementelor discutate se remarca prezenta unui convertor analog-numeric ce realizeaza esantionarea si cuantificarea marimilor de reactie . S-a constatat, de asemenea, ca valorile prescrise sunt introduse direct în forma discreta .
Figura 10.7
Pentru exemplicarea procedurii se va aborda sistemul de conducere al unei articulatii de rotatie descrisa prin functia de transfer (inclusiv actionarea).
(10.14)
Performantele solicitate sistemului sunt :
Supraurmarirea
Eroarea stationara nula pentru semnalul treapta unitar
(10.15)
Eroare stationara la semnale rampa unitara
(10.16)
Largimea de banda
(10.17)
În conformitate cu cele prezentate în capitolul v) si în [93] solutia problemei de conducere este data de introducerea unui regulator cu fuctia de transfer.
(10.18)
Pentru alegerea perioadei de esantionare T se determina constanta de timp a elementelor mecanice.
Utilizând drept criteriu de selectie realtia (10.7) rezulta
În acest sens se alege perioada de esantionare la valoarea . Functia de transfer a extrapolarului de ordin zero, se poate aproxima printr-o dezvoltare Pade de ordin 1 sub forma:
Functia de transfer a caii directe va deveni în acest caz (figura 10.5)
Analiza stabilitatii implica trasarea locului radacinilor functiei de transfer :
În figura 10.8 sunt prezentate comparativ locul radacinilor pentru cazul prezentei extrapolarului în functia de transfer în circuit deschis si în cazul eliminarii acestuia. Este evidenta înrautatirea stabilitatii datorita întârzierii introdusa de extrapolator dar se observa usor ca ramura critica determinata de cei doi poli si determina instabilitate pentru un factor general de amplificare (punctele M si N). Se poate aprecia deci ca esantionarea cu perioada nu afecteaza stabilitatea sistemului de conducere.
În continuare se determina functia de transfer discreta a regulatorului. Tinând cont de forma acesteia (10.18) se poate utiliza metoda transformarii directe [119] astfel încât:
(10.19)
unde:
(10.20)
Din (10.18) rezulta:
Pentru , se obtine:
Utilizând relatia (10.4) se determina :
Deci :
(10.21)
sau
Trecând în domeniul discret se obtine:
(10.22)
Pentru implementarea numerica a relatiei (10.6) se impune utilizarea coeficientilor subunitari. Definind, pentru aceasta, variabila:
Figura 10.8
(10.23)
rezulta:
(10.24)
Structura generala de implementare poate fi urmarita în figura 10.9. Multiplicarea prin 256 solicitata este usor si rapid realizata prin software-ul procesorului.
Figura 10.9
10.3.2. Proiectarea directa în domeniul timp
Aceasta metoda de proiectare specifica sistemelor discrete permite determinarea directa a functiei de transfer a regulatorului numeric pe baza raspunsului dorit, impus la un semnal de referinta dat (de obicei o treapta unitara discreta sau o rampa unitara discreta). Procedura are avantajul unei simplitati remarcabile ea eliminând tehnicile laborioase de alocare a zerourilor si polilor în domenii specificate unor metode ce implica un calcul pretentios si nu întotdeauna exact [118,119].
Pentru exemplificarea procedurii sa consideram schema ganerala de reglare a pozitiei printr-o articulatie de rotatie (figura 10.6). Sistemul de conducere urmareste obtinerea unei comportari impuse, unei evolutii dorite a variabilei pentru un semnal tipizat pe intrare, de exemplu treapta unitara (figura 10.10).
Fie deci multimea valorilor discrete ale raspunsului dorit, un semnal treapta. Cu aceste date se poate obtine transformata în Z a marimii de iesire.
unde:
datorita atingerii valorii stationare dupapasi.
Figura 10.10
Relatia (10.25) poate fi rescrisa sub forma:
(10.26)
sau:
(10.27)
Pe de alta parte, daca este functia de transfer corespunzatoare în circuitul închis, atunci raspunsul la un semnal treapta unitara :
(10.28)
este :
(10.29)
Comparând relatiile (10.27) si (10.29) rezulta functia de transfer în circuit închis dorita:
(10.30)
Functia de transfer a regulatorului se obtine din :
(10.31)
unde rezulta din figura (10.6) sub forma :
(10.32)
Aplicând tehnicile cunoscute de transformare, rezulta:
(10.33)
Întrucât nu contine zerouri, exista riscul introducerii unor elemente instabile în circuit închis, deci se poate determina direct din (10.31):
(10.34)
Pentru exemplificare, sa consideram ca evolutia dorita a semnalului de iesire este data prin valorile:
Primele doua valori nule se datoreaza timpului mort apreciat la acest sistem:
Utilizând aceleasi valori ca si în aplicatia precedenta, pentru T=0.02s din (10.32) rezulta :
Prelucrarea acestei relatii determina algoritmul final:
10.4. Implementarea sistemului de masurare al marimilor analogice
Numeroase criterii concureaza la stabilirea componentelor si dimensiunilor sistemului de conducere. Între aceste elemente putem amintii:
Acoperirea performantelor impuse;
Eliminarea incertitudinilor functionale în conditii reale de operare;
Facilitati de testare;
Preturi de cost rezonabile pe componente si pe întreaga structura, etc.
Toate aceste criterii permit stabilirea unui cadru general în care trebuie cuprinsa arhitectura viitorului sistem. Alegerea exacta a unor solutii hardware de implementare se realizeaza prin utilizarea unor metode specifice, bazate pe o analiza amanuntita a semnalelor prelucrate si a algoritmului implementat.
În cele ce urmeaza vom aborda principalele etape ce intervin în aceste proceduri.
10.4.1 Dimensionarea convertorului analog-numeric
Implementarea oricarui algoritm de conducere presupune, în primul rând, determinarea parametrilor elementului de conversie al marimilor masurate de traductoarele de pozitie, în speta convertorul analog-numeric.
Parametrul principal al acestui convertor îl reprezinta numarul de biti ce defineste conversia analog-numerica. Daca se noteaza prin si valoarea minima (rezolutia) si respectiv maxima semnalului analogic, atunci numarul de biti necesari pentru acoperirea conversiei sunt determinati din relatia [119].
(10.35)
deci
(10.36)
De exemplu, presupunând un semnal normalizat, deci si o rezolutie 1% atunci :
Se alege deci . Într-o reprezentare în complement fata de 2 se aloca un bit pentru semn, deci în final :
În figura 10.11.a este prezentata schema generala a unui astfel de convertor precum si semnalele principale aferente acestuia.
Ponderea bitului cel putin semnificativ LSB este :
Caracteristica generala a conversiei si câteva marimi semnificative sunt prezentate în figura 10.11.b
Figura 10.11
Functionarea convertorului este realizata prin aplicarea unor semnale de control. Amorsarea mecanismului conversiei se obtine prin semnalul START conversie. Conversia propiu-zisa este realizata sub controlul unui semnal de tact ce permite prin tehnici specifice (aproximatii succesive) secventierea procesului.
Starea operatiei de conversie este accesibila utilizatorului sub forma semnalului ST care devine 1 logic la începerea conversiei si se anuleaza odata cu terminarea ei. Iesirea digitala se obtine dupa acest interval de timp (tc) de ordinul 15 μs la convertoarele rapide. Captarea acestei informatii se realizeaza prin activarea semnalului CS care aduce în regim de transparenta partile de iesire tri-state ale convertorului.
10.4.2. Conectarea convertorului analog-numeric la procesor
Interfatarea cu un microprocesor a convertorului cere executarea unui dialog între cele doua sisteme. Acest dialog se poate rezuma în executarea urmatoarelor operatii :
UC-ul microprocesorului trimite un semnal de START convertorului pentru initializarea procesului;
UC analizeaza bitul de stare ST pentru a aprecia închiderea conversiei;
UC încarca într-un registru intern informatia numerica .
Figura 10.12
O astfel de solutie este prezentata în figura 10.12. S-a utilizat un procesor cu 16 linii de adresa, convertorul fiind cuplat în spatiul de adresare rezervat paginii FD din memorie. Semnalele CS, START si controlul portii P1 de acces al starii ST se obtin prin adresele FD00, FD01, FD02.
Iesirile D7.D0 sunt legate la magistrala de date a microprocesorului si pot deveni accesibile la formarea semnalului CS (adresa FD00 prin poarta P1). Testarea starii convertorului se realizeaza prin deschiderea portii P1 si transferarea continutului semnalului de stare ST pe linia D7 (adresa FD02 prin poarta P4). Activarea tuturor portilor este conditionata de decodificarea paginii de adrese FD în decodificatorul D si executarea de catre UC a operatiei de citire din memorie (MERM=1).
De exemplu, utilizând instructiunile specifice microprocesorului 8080, programul de achizitie este urmatorul :
NRX: NRA: TEST DATA |
DW DW LDA MVI MOV RAL JNC JMP LDA STA |
0001H; 00FDH; NRA+1; AOFFH; A,NRA+2; DATA; TEST; NRA; NRX; |
ETICHETEAZĂ ADRESELE DE LUCRU GENEREAZĂ SEMNALUL START INTRODUCE SET PE REGISTRU A ÎNCARCĂ BITUL ST TESTEAZĂ BITUL ST GENEREAZĂ CS sI ÎNCARCA ÎN A VALOREA CONVERSIEI ÎNCARCĂ DATELE LA ADRESA DORITĂ |
În unele cazuri, în locul testului efectuat asupra bitului de stare se prefera realizarea unei întârzieri software de 25 μs dupa care se transfera rezultatul conversiei [120].
LDA MVI MVI MVI MVI MVI MVI MVI MVI LDA STA |
NRA+1; A,0; A,0; A,0; A,0; A,0; A,0; A,0; A,0; NRA; NRX; |
GENEREAZĂ SEMNALUL START SE REALIZEAZĂ ÎNTÂRZIEREA DORITĂ SE ÎNCARCĂ VALOAREA CONVERSIEI SE ÎNCARCĂ DATELE LA ADRESA DORITĂ |
10.5. Implementarea controlerului numeric
Functia de baza a microprocesorului consta în generarea secventelor de comanda în conformitate cu algoritmul de control stabilit. Propriu-zis, realizarea acestui deziderat implica dimensionarea corecta a structurii hardware necesare si apoi implementarea software a algoritmului ce genereaza secventele dorite.
Un prim factor important în stabilirea configuratiei sistemului îl constituie determinarea corecta a lungimii cuvântului de date. Desigur, în estimarea numarului de biti necesar pentru acoperirea operatiilor matematice concura numerosi factori cum ar fi: frecventa de esantionare, complexitatea algoritmului utilizat, disponibilitatile hardware etc. În cadrul acestei sectiuni vor fi analizate elementele ce deriva din implementarea numerica a algoritmului în contextul existentei unor restrictii privind lungimea maxima de cuvânt acceptata de suportul hardware al sistemului.
10.5.1 Dimensionarea lungimii cuvântului de date
În conformitate cu cele discutate în sectiunile precedente, forma generala a functiei de transfer a controlerului numeric este (relatia 10.12)
(10.37)
unde coeficientii ai, bj sunt marimi cuantificate, exprimate într-un cod numeric.
Sa presupunem ca n biti sunt utilizati pentru reprezentarea acestor coeficienti. În acest caz, utilizarea unui cuvânt de lungime impusa n poate determina o reprezentare eronata. Fie
(10.38)
(10.39)
unde si desemneaza valorile obtinute prin reprezentarea numerica în n biti a coeficientilor reali ai, bi, respectiv iar αi, βi sunt erorile corespunzatoare.
Într-o reprezentare în complement fata de doi, marimea treptei de discretizare numerica Δ corespunde valorii
Din figura 10.11 se obtine imediat conditia:
(10.40)
deci (10.41)
Ţinând cont de alterarea coeficientilor ai si bi functia de transfer a controlerului devine:
(10.42)
Functia astfel obtinuta difera cantitativ de cea initiala si acest lucru poate duce la modificari substantiale în comportarea în frecventa a sistemului si implicit la schimbarea caracteristicilor de lucru . Pentru aprecierea, de exemplu, a efectelor asupra stabilitatii sistemului se pot analiza modificarile survenite în polii functiei de transfer. În [32] se arata ca polii pi se deplaseaza la conform relatiei:
(10.43)
Este evident ca în conditiile plasarii unor poli în apropierea cercului unitate în planul Z deplasarea polilor poate fi suficient de pronuntata pentru a determina o instabilitate a sistemului.
Este interesant de precizat care este numarul minim de biti care mentine stabilitatea sistemului. În [32] se arata ca daca perioada de esantionare este T si functia de transfer are m poli distincti, stabilitatea este garantata daca:
(10.44)
unde e-zrT, r=1,2,. m sunt polii sistemului.
Pentru exemplificare, sa consideram functia de transfer (10.21) rescrisa sub forma:
cu T=0,02s. Exista un singur pol z1 = e-71,07T deci relatia (10.44) devine
Deci o lungime de cuvânt de 4 biti este suficienta pentru asigurarea conditiei de stabilitate numerica.
Tinând cont de acest rezultat si având în vedere ca s-a obtinut o lungime de cuvânt de 8 biti pentru convertorul analog-numeric, se poate considera ca un microprocesor de 8 biti acopera în totalitate cerintele de implementare numerica a sistemului de conducere.
10.5.2. Implementarea algoritmului de control
Functia de control a microprocesorului consta în calculul erorii sistemului de conducere si generarea pe baza acesteia a marimii de comanda.
Eroarea este obtinuta prin diferenta între valoarea prescrisa si cea masurata si convertita de CAN. Toate marimile sunt subunitare si reprezentate numeric în complement fata de 2. Întrucât calculul diferentei poate determina uneori erori prin depasirea capacitatii registrelor, se impune semnalizarea acestor cazuri.
În continuare se va prezenta un subprogram de calcul; utilizând instructiunile microprocesorului 8080.
NRX: NRQ: NRF: NRP: |
DW DW DW DW LDA SUI STANRF |
0001H; 1001H; 0004H; 0006H; NRQ; NRX |
ADRESA DATELOR CONVERTITE DIN CAN ADRESA DATELOR PRESCRISE ADRESA MĂRIMII DE EROARE ADRESA SEMNALULUI DE DEPĂsIRE ÎNCARCĂ ÎN ACC VALOAREA PRESCRISĂ SCADE MĂRIMEA MĂSURATĂ SALVEAZĂ VALOAREA ERORII |
Pentru identificarea situatiilor de depasire se compara bitii de semn ai fiecarui termen cu cel obtinut prin adunare. În acest scop se executa o functie logica SAU - EXCLUSIV între marimile analizate urmata de o deplasare la stânga ceea ce permite izolarea bitului de semn.
CONT: IMPR1: IMPR2: CALC: INCORECT: CORECT: |
LHLD XRA RLC JC LDA LHLD XRA RLC JC JMP MVI JMP MVI LDA CMP UZ JMP MVI |
NRX; H; IMPR1 NRF; NRQ; H; IMPR2 CALC C, OFFH; CONT; D, OFFH; D; C; NRF, OFFH; |
SE COMPARĂ BITUL DE SEMN ÎNTRE UN TERMEN sI REZULTAT SE COMPARĂ BITUL DE SEMN ÎNTRE AL DOILEA TERMEN sI REZULTAT ÎN PRIMUL CAZ SE ÎNSCRIE ÎN C NUMARUL FFH ÎN AL DOILEA CAZ SE ÎNSCRIE ÎN D NUMĂRUL FFH SE COMPARĂ REZULTATELE INCORECT CORECT REVENIREA DIN SUBPROGRAM |
Pentru implementarea în continuare a algoritmului de calcul vom considera sistemul de control definit prin relattile (10.23), (10.24), care va fi reluat sub forma
(10.45)
(10.46)
Coeficientii c1, c2, c3 sunt numere subunitare ce vor fi definite prin:
Relatia (10.45) poate fi rescrisa pentru o implementare numerica sub forma:
(10.47)
Unde U1 si E1 poate fi rescrisa pentru o implementare într-o faza anterioara. Pentru initializare se va considera:
|
|
|
Generarea marimii W2 se obtine dupa trei operatii de înmultire si doua de adunare.
Operatia de înmultire se va realiza dupa algoritmul clasic de înmultire al numerelor subunitare exprimate în complement fata de 2[32,120]. În acest scop se defineste o microinstructiune specifica MULT.
unde P este un parametru ce exprima coeficientii utilizati in (10.47) iar U reprezinta variabila asociata fiecarui termen. Rezultatul fiecarui produs este desemnat prin Z:
U: P: Z; |
DW DW DW |
2200H 3000H 2000H |
Se initializeaza registrele:
START: ADR1: FINAL: |
MOV MOV MOV MVI MOV RAR; MOV MOV JNC ADD RLC; RRC; RAR MOV MOV RAR MOV DCR JNZ MOV RAR; JNC MOV SUI MOV MOV MOV END |
B, U P, C1 C, P D, 07H A, B; B, A; A, H ADR1; C; H, A; A, L; L, A D; START; A, B; FINAL; A, H; U H, A Z, H; Z+1,H M |
SE TESTEAZĂ BITUL CEL MAI PUTIN SEMNIFICATIV AL LUI U DACĂ ACEST BIT=1 SE ADUNĂ C SE DEPLASEAZĂ LA DREAPTA CONŢINUTUL REGISTRELOR H SI L CONSIDERATE IN PRELUNGIRE SI RESPECTÂND REGULA DEPLASĂRII BITUL DE SEMN SE VERIFICĂ CONTINUTUL CONTOARULUI SE TESTEAZĂ BITUL CEL MAI SEMNIFICATIV DACĂ B7=1 SE SCADE DIN ULTIMA VALOARE NUMĂRUL U REZULTATUL ESTE STOCAT IN Z |
Produsul rezultat pe 16 biti în perechea de registri h-l este stocat în adresele Z, Z+1. Întrucât fiecare factor este subunitar la aceasta operatie nu apar riscurile unei depasiri ale capacitatii registrelor. Operatia se repeta pentru celalalte doua produse în mod similar modificând parametrii macroinstructiunii MULT.
Pentru implementarea operatiei de adunare este utilizata o procedura de tipul celei prezentate în calculul erorii, înlocuind functia de scadere cu cea de adunare si pastrând aceleasi reguli de protejare al calculului în cazul depasirii capacitatii registrelor.
Generarea comenzii finale necesita de asemena multiplicarea rezultatului cu 256 (relatia 10.46). Operatia se poate obtine simplu prin deplasarea virgulei cu 8 biti.
10.5.3.Formarea semnalelor de iesire pentru actionare electrica
Comanda finala a dispozitivelor de actionare (motoare de c.c.) necesita refacerea analogica a semnalului numeric. Aceasta conversie de semnal este realizata prin blocuri specializate CNA care genereaza la iesire un semnal continuu corespunzator ponderii coeficientilor ce apar în expresia numerica prelucrata.
Domeniul tensiunii de iesire este bipolar si poate fi ales, în functie de o marime de referinta aplicata Uref în gama ±2.5 V, ±5 V, ±10 V.
Cuplarea unui astfel de convertor la microprocesor este prezentata în figura 10.13.
Magistrala de date este cuplata pe intrarea convertorului, conversia fiind realizata pe 8 biti prin trunchierea celor 16 biti rezidenti în zonele Z, Z+1 de memorie. Daca se doreste o conversie pe 16 biti, cuplarea se realizeaza prin doua porturi si prin utilizarea unui convertor de constructie speciala.
Figura 10.13
Initializarea conversiei este obtinuta prin activarea bornei CS a convertorului, comanda este obtinuta de obicei prin decodificarea adresei careia îi este asociat convertorul si prin generarea unuia din semnalele de control ale memoriei, de exemplu MEMW.
Figura 10.14
CNA: |
DW LDA STA |
FFOAH Z CNA |
In conditiile în care procesorul comanda mai multe dispozitive analogice, se impune o demultiplexare analogica controlata (figura 10.14).
De asemenea, în cazul în care nivelele în putere si tensiune ale semnalelor furnizate depasesc resursele circuitelor utilizate, se pot utiliza circuite speciale pentru adaptare.
10.6. Controlul interfatarii microprocesor-robot printr-un limbaj evoluat
Sistemul de conexiuni microprocesor-robot se bazeaza pe existenta unuia sau mai multor circuite de intrare-iesire (PIA-Peripheral Interface Adaptor) care realizeaza interfata între porturile microprocesorului si perifericile robotului. Programarea microprocesorului în scopul realizarii interfetei dorite se poate realiza fie în limbajul de asamblare al microprocesorului, fie într-un limbaj de nivel înalt, de exemplu în Basic, limbaj facil si usor implementabil. Utilizarea asamblorului ofera avantaje deloc neglijabile cum ar fi:
O viteza de executie de 10-100 ori mai mare, ceea ce poate constitui un element esential într-o serie de aplicatii de conducere
Un spatiu de memorie redus, sub 2k.
Daca însa aceste caracteristici nu sunt prioritare, utilizarea limbajului Basic, sau a altui limbaj evoluat, este recomandabila.
10.6.1. Tehnici intrare-iesire
Orice port al microprocesorului cuprinde un registru de date D si un registru de control al sensului de propagare S. Registrul D memoreaza valorile achizitionate din exterior (port de intrare) sau stocheaza datele înainte de emiterea lor în exterior (port de iesire).
Figura 10.15
În Basic, controlul portului ca port de intrare se poate realiza usor prin instructiunile
S-a presupus ca adresa registrului D este 56577 iar a registrului de control 56579.Similar, utilizarea ca port de iesire se realizeaza prin
ceea ce inseamna încarcarea registrului S cu valoarea (255)10 =(1111 1111)2,deci schimbarea sensului de deplasare în portile liniilor de date (fig.10.15).
În multe situatii, complexitatea problemelor de control cere ca anumite linii de date sa fie utilizate pentru achizitie iar altele pentru generarea unor iesiri. În acest caz controlul va fi obtinut prin
unde s-a considerat ca liniile D0-D3 opereaza ca iesiri iar D4-D7 ca intrari.
În general, numarul mare de variabile implicat în conducerea unui robot este incompatibil cu posibilitatile de interfatare directa intrare-iesire al unui microprocesor.Din acest motiv se utilizeaza frecvent proceduri de extensie.O solutie larg utilizata este cea prezentata în figura 10.16.
Figura 10.16
Sistemul cuprinde o serie de circuite de extensie modularizate în cartele.O cartela cuprinde circuite specializate pentru prelucrarea intrarilor sau a iesirilor, numerice sau analogice.O cartela principala sau de baza asigura cuplarea directa cu microprocesorul. Ea permite identificarea cartelelor de serviciu prin activarea unor linii de selectie.
În general sistemul este format din patru cartele de achizitie si patru cartele de iesiri.Cuplarea se realizeaza printr-o magistrala interna de date.Daca se considera ca adresele acestor cartele sunt 56832-56835, atunci selectia unei cartele de iesire se face prin instructiunea
ceea ce va determina transmiterea valorii dorite pe magistrala cartelei adresate.De asemenea, adresarea unei cartele de intrare se realizeaza prin
În acest caz, pe magistrala interna se va transmite combinatia binara, ponderata, a variabilei conectate.
În figura 10.17 sunt prezente doua cartele pentru variabile binare.Astfel, instructiunea
va însemna transferul în microprocesor a valorii 00 110 100 iar instructiunea
va determina anclasarea motorului de curent continuu si a releului R prin comanda 00000011.
Figura 10.17
În afara cartelelor pentru variabile binare, sistemul poate contine si cartele pentru prelucrarea unor marimi analogice. De exemplu, cartela pentru intrari continue din figura 10.18 este utilizata pentru achizitionarea semnalelor în gama 0-5 V furnizate de traductoarele de masurare analogica ale pozitiilor unghiulare.Cartela contine opt borne de conexiune deci poate prelucra simultan opt marimi.Dupa o conversie analog-numerica pe opt biti (domeniul 0-255), valoarea numerica rezultata este transmisa prin magistrala de date catre microprocesor.
Programarea cartelei se realizeaza în doua etape:
Prima instructiune selecteaza un anumit canal analogic si lanseaza conversia A/N iar a doua citeste valoarea convertita anterior.
Figura 10.18
Cartela pentru iesiri analogice formeaza un semnal continuu utilizat în reglarea motoarelor de c.c. ale sistemelor de actionare.Conversia se realizeaza printr-o scara liniara, fiecarui bit fiindu-i alocat 1 mV semnal continuu, deci semnalul maxim generat este de 2,56 V. De exemplu, comanda unei tensiuni de 50 mV se realizeaza prin
iar a unei tensiuni de 2 V
10.6.2. Comanda accelerarii unui motor de c.c.
Ca o prima aplicatie se va lua în considerare sistemul de accelerare-decelerare al unui motor de c.c. Se va utiliza cartela de iesiri analogice conectata pe adresa 56835. Întrucât semnalul furnizat nu corespunde parametrilor ceruti de motor, se utilizeaza un amplificator de putere intermediar (figura 10.19b.)
Diagrama tensiunii de comanda pentru un regim de accelerare dorit este prezentata în figura 10.19a. Panta regimului este
unde U este aptitudinea palierului semnalului (echivalenta cu un semnal numeric de valoare 255) iar T1 este timpul real de evolutie. Apreciind ca scara de timp a procesorului este mult mai mare ca a elementului comandat
Figura 10.19
relatia de mai sus devine:
Programul complet de conducere va fi :
10 REM-ACCELERARE-
20 T = 1000* T1
30 P = 255/T
40 FOR UI = 0 TO 255 STEP P
50 POKE 56835,UI
60 NEXT UI
70 END
10.6.3. Controlul unui manipulator ce deserveste un punct de tratare chimica
Se propune, în continuare, analiza posibilitatii de implementare a sistemului de control pentru un manipulator cu dubla actionare: electrica si hidraulica.
Manipulatorul alimenteaza cu piese grele o cuva cu solutii preparate pentru tratarea chimica.Tratarea se realizeaza la o temperatura prescrisa si pe o durata de timp predeterminata (figura 10.20).
Manipulatorul se deplaseaza pe orizontala pe o linie L printr-o actionare electrica si ridica sau coboara piesele printr-o actionare hidraulica. Temperatura cuvei este masurata cu un termometru Th si poate fi controlata prin deschiderea unei conducte de vapori de apa V. Un sistem de limitatoare P0, P1, L0, L1 permite controlul pozitiei. Organigrama întregului proces este prezentata în figura 10.21.
Rezervarea variabilelor si cartelelor utilizate este urmatoarea :
Cartela de intrari binare (adresa 56832) : 0 - Limitator P0
1 - Limitator P1
2 - Limitator L0
3 - Limitator L1
Cartela de iesiri binare (adresa 56833) : 0 - Mers dreapta D
1 - Mers stânga S
2 - Electroventil ridicare R
3 - Electroventil coborâre C
4 - Electroutil abur V
5 - Melanjor M
Cartela intrari analogice (adresa 56834) : 0 - Termometru Th
Programul de conducere va avea forma urmatoare :
|
REM - CONTROLUL MANIPULATOR- TO = T0 POKE 556833,1 X=PEEK 56832 AND 2↑1 IF X=0 THEN 40 POKE 56833, 2↑3 + 2↑5 Y=PEEK 56832 AND 2↑3 IF Y=0 THEN 70 POKE 56833, 2↑4 POKE 56834, 2↑0 TL=PEEK 56834 TA=20+TL * 180/250 IF TA < TO THEN 100 POKE 56832, 2↑5 T1=3600*1000 FOR I=1 to T1: NEXT I POKE 56833, 2↑2 Y=PEEK 56832 AND 2↑2 IF Y=0 THEN 180 POKE 56833, 2↑1 X=PEEK 56832, 2↑0 IF X=0 THEN 210 POKE 56833, 0 END |
Figura 10.21
Instructiunea 120 actualizeaza valoarea temperaturi TL care este convertita numeric în gama 0-255 considerând ca domeniul de temperatura 20-200° (al cuvei) este un domeniu liniar.
10.6.4. Controlul actionarii prin motoare pas cu pas.
Se va aborda în continuare controlul în bucla deschisa al actionarilor robotice cu motoare pas cu pas discutate în capitolul 3.1.2. Se va considera un motor p.p. cu patru înfasurari statorice alimentate prin intermediul unei interfete de putere cu circuite Darlington (figura 3.18). Microprocesorul va asigura controlul alimentarii fazelor conform unei logici impuse (figura 10.22).
Figura 10.22.a
Logica de control a fazelor |
Pondere binara |
Vectorul de control |
|
|
F(0)=5 F(1)=6 F(2)=10 F(3)=9 |
Figura 10.22(b)
Pentru început se va lua în consideratie comanda simetrica dubla a fazelor motorului (figura 3.14.b).
În acest caz se poate defini un vector de alimentare al fazelor F=(F(0), F(1), F(2), F(3)) care va lua succesiv valorile 5, 6, 10, 9 (figura 10.22b). Microprocesorul va actiona bornele B0, B1, B2, B3 ale interfetei de putere astfel încât sa asigure valorile dorite ale fazelor F(I). Programul corespunzator va fi urmatorul :
|
S=56579 : D=56577 DIM F(4) FOR I=0 TO 3 READ F(I) NEXT I DATA 5,6,10,9 POKE S, 15 FOR I=0 TO 3 POKE D, F(I) NEXT I END |
Instructiunile de mai sus genereaza alimentarea fazelor în ordinea solicitata fara a asigura sensul de deplasare sau al distantei parcurse. O varianta imbunatatita a programului, completa cu elementele suplimentare de comanda, este prezentata mai jos:
|
S=56579 : D=56577 DIM F(4) FOR I=0 TO 3 READ F(I) NEXT I DATA 5,6,10,9 POKE S, 15 IF PEEK(D) AND 2↑6 THEN 80 DI="DISTANŢA" SENS="SENS" V="VITEZA" V=256-V IF SENS=1 THEN W=-1: ROT=1: GO TO 150 IF SENS=0 THEN W=0 :ROT=-1 FOR I=1 TO DI W=W+ROT POKE D, F(W AND3) FOR J=1 TO V:NEXT J NEXT I END |
Instructiunile 20-60 definesc , ca si în programul anterior, logica de comutare a fazelor. Instructiunea 80 introduce o conditie de oprire a deplasarii motorului printr-o variabila, un buton de presiune ce cupleaza linia D6 la masa. Daca acest întrerupator este deschis (valoarea 1) atunci programul ramâne blocat la linia 80. La închiderea întrerupatorului, linia de date se cupleaza la masa (valoarea 0) si programul trece la instructiunea urmatoare. Instructiunile 90-100 permit introducerea valorilor dorite ale distantei (echivalenta în numar de pasi de motor), a sensului de deplasare si a vitezei.
Sensul de deplasare este o marime binara cu valori 0,1 corespunzând rotatiei inverse sau normale a motorului.
Instructiunea de viteza introduce o variabila V ce determina durata impulsurilor aplicate pe fazele motorului. Aceasta valoare se complementeaza în raport cu 256 (instructiunea 120) pentru a asigura corelarea acestei valori cu viteza rezultata: durata mare a impulsurilor corespunde unor viteze mici si invers. Instructiunea 180 formeaza efectiv semnalul în durata prin blocarea avansului programului pâna se atinge valoarea dorita.
Instructiunile 130 - 190 genereaza, în functie de sensul impus, logica semnalelor ce activeaza fazele motorului. În acest scop sunt introduse doua variabile W si ROT care, prin instructiunea 170, determina valoarea vectorului F în fiecare secventa. Pentru exemplificare se vor considera câteva secvente de lucru.
a) Sens pozitiv de rotatie (W=-1, ROT=1)
Secventa 1: I=1, W=-1+1=0, D=F(0 AND 3)=F(0)
Secventa 2: I=2, W=0+1=1, D=F(1 AND 3)=F(1)
AND se calculeaza vectorial între componentele 1 si 3 deci
(00000001) AND (00000011) = (00000001) = 1;
Secventa 3: I=3, W=1+1=2, D=F(2 AND 3)=F(2) pentru ca
(00000010) AND (00000011) = (00000010) = 2;
Secventa 4: I=4, W=-2+1=3, D=F(3 AND 3)=F(3):
Secventa 5: I=5, W=3+1=4, D=F(4 AND 3)=F(0) pentru ca (00000100) AND (00000011)=(00000000)=0 etc.
b) Sens negativ de rotatie (W=0, ROT=-1)
Secventa 1: I=1, W=0-1=-1, D=F (-1 AND 3) = F (3). În acest caz se realizeaza functia AND între -1(exprimata în complement fata de 2) si 3 deci
-1 AND 3 = (11111111) AND (00000011) = (00000011) = 3
Secventa 2: I=2, W=-1-1=-2, D=F (-2 AND 3) = F (2) pentru ca
-2 AND 3 = (11111110) AND (00000011) = (00000010) = 2 etc.
O procedura similara poate fi utilizata pentru alte moduri de comanda a fazelor motorului. Astfel, în figura 10.23 este determinata logica de comanda pentru controlul numeric al fazelor (figura 3.14,c).
10 S=56579: D=56577: DIM F(4)
20: POKE S,15
30: FOR I=0 TO 7
40: READ F(I)
50: NEXT I
60: DATA 1,5,4,6,,2,10,8,9
Logica de control a fazelor |
Pondere Binara |
Vectorul de Control |
|
|
F(0)=1 F(1)=5 F(2)=4 F(3)=6 F(4)=2 F(5)=10 F(6)=8 F(7)=9 |
Figura 10.23
În numeroase aplicatii, efectul de programare este considerabil simplificat prin utilizarea unor module "inteligente" care preiau o parte din functiile cerute. Astfel introducerea circuitului integrat SAA 1027 asigura automat logica de comutare a fazelor, prin programare introducându-se numai parametrii esentiali: distanta si sens.
Circuitul SAA 1027 este format dintr-un distribuitor în inel urmat de o logica de generare a semnalelor de tip "simetrie dubla" (figurile 3.15 si 3.16) precum si de amplificatoarele de putere corespunzatoare (figura 10.24) [24] .
Controlul circuitului se realizeaza prin bornele T(triger) si R(rotatie), acestea desemnând impulsurile de tact ale distribuitorului si respectiv semnul de rotatie. Aceste semnale sunt controlate direct de micrprocesor prin liniile de date D0 si D1. Doua porti cu colector în gol asigura compatibilitatea electrica între magistrala de date si circuit.
Figura 10.24 (a)
Secv. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figura 10.24.(b)
Iesirile circuitului alimenteaza fazele motorului , , , , dupa o logica corespunzatoare (tabelul 10.24,b).Programarea microprocesorului se va rezuma la generarea semnalelor T si R astfel încât sa se realizeze rotatia motorului cu o viteza impusa, într-un sens specificat, si sa acopere o distanta de deplasare dorita.
10 S=56579 : D=56577
20 POKE S, 3
DI = "DISTANŢA"
SENS = "SENS"
IF SENS=1 THEN R=2
60 IF SENS=0 THEN R=0
70 FOR I=1 TO DI
80 POKE D, 1+R
90 POKE D, 0+R
100 NEXT I
END.
Instructiunile 80 si 90 determina transmisia pe liniile de date, succesiv, a valorilor 3,2,3,2,3,2,. (pentru SENS=1) si 1,0,1,0,. (pentru SENS=0) deci în binar 11, 10, 11, 10,.sau 01, 00, 01, 00,. formând deci bitul de sens la valoarea 1 si respectiv 0 iar bitul de tact sub forma unui impuls cu o perioada egala cu cea a explorarii instructiunilor 70-100. Modificarea frecventei de tact necesita introducerea unor instructiuni de întârziere de aceeasi forma ca cele utilizate în programele anterioare.
Comanda unui robot în coordonate carteziene
Ca o aplicatie directa a celor prezentate în paragraful anterior se va aborda problema comenzii unui robot ce asigura manipularea unei piese într-un depozit (fig. 9.16). Actionarea robotului pe axele X-Y se obtine prin motoare p.p iar pe axa Z prin motoare de curent continuu.
Figura 10.25
În figura 10.25 este prezentat un segment al unei traiectorii de lucru. Robotul prinde o piesa în punctul A (închide griperul), se ridica în punctul B, se deplaseaza pe axa Y pe distanta pâna în punctul C, se deplaseaza pe axa X pe distanta pâna în punctul D, coboara în E si depune piesa (deschide griperul).
Deplasarile pe axele X si Y se obtin prin controlul numarului de impulsuri aplicat motoarelor p.p.,
iar deplasarea pe axa Z este restrictionata de limitatoarele de jos Lj si Ls.
În tabelul 10.1 este prezentata rezervarea variabilelor. Porturile cu adresele 56577 si 56573 sunt utilizate pentru comanda actionarilor pe cele trei axe ale griperului, respectiv pentru actionarea limitatoarelor de pozitie. Acestor porturi li se asociaza porturile de adrese 56575 si 56579 ce controleaza sensul propagarii informatiei prin porturile de date. Codificarea completa a comenzilor generate prin portul 56577, tinând cont de comenzile cu dublu sens ale fiecarei axe, este prezentata în tabelul 10.2.
10 REM - CONTROL ROBOT XYZ -
20 POKE 56575,0
30 POKE 56579, 255
40 DI1 = N1: DI2=N2: V="VITEZA"
50 IF PEEK(56573) AND 2 2 THEN 50
60 POKE 56577, 64+16
70 IF PEEK(56573) AND 2 1 THEN 70
80 FOR I=1 TO DI2
90 POKE 56577,4
100 FOR J=1 TO V: NEXT J
110 POKE 56577,0
120 FOR J=1 TO V: NEXT J
130 NEXT I
Adr. 56577 (iesire) |
Comanda X Sens pe X Comanda Y Sens pe Y Comanda Z Sens pe Z Închide griper Deschide griper |
|
||
Adr. 56573 (intrare) |
Buton primire |
|
Tabelul 10.1
Comanda |
Date |
Valoare numerica |
X+ X- Y+ Y- Z+ Z- G inchis G deschis |
|
|
Tabelul 10.2
Figura 10.26
140 FOR I=1 TO DI1
150 POKE 56577,1
160 FOR J=1 TO V: NEXT J
170 POKE 56577,0
180 FOR J=1 TO V: NEXT J
190 NEXT I
200 POKE 56577,32
210 IF PEEK (56573) AND 2 0 THEN 210
220 POKE 56577,128
END
Organigrama din figura 10.26 si programul asociat sunt determinate conform procedurilor stabilite.
Instructiunile 20, 30 definesc portul 56573 ca port de intrare si 56577 ca port de iesire. Instructiunea 40 introduce valorile distantelor pe axele X si Y precum si viteza V, de fapt durata impulsului de tact al motoarelor p.p.
Pentru interpretarea variabilelor asociate limitatoarelor si butonului de pornire s-a considerat ca acestea prin închidere transmit potentialul masei (0 logic) iar prin deschidere formeaza semnal logic 1. În acest sens, instructiunile 70 si 210 blocheaza avansul programului pâna la închiderea contactelor respective.
Instructiunile 80-130 genereaza comanda motorului p.p al axei Y în sens pozitiv pe o distanta echivalenta cu N2 impulsuri. Impulsul de tact este transmis prin linia (sensul rotatiei este linia ) prin instructiunile 90 si 110 cu durata egala cu V cicluri FOR - TO- : NEXT- (figura 10.27)
Figura 10.27.
În mod similar, prin instructiunile 140 - 190 este comandat motorul axei X în sens pozitiv pe distanta .
10.6.5. Comanda actionarilor cu motor de curent continuu
a) Reglajul "tot sau nimic" al pozitiei liniare
În conditiile în care masele elementelor mecanice sunt mici iar performantele impuse sistemului de reglare sunt modeste se poate accepta acest sistem de reglare, remarcabil prin simplitatea sa. Microprocesorul compara valoarea prescrisa a pozitiei cu cea masurata de un traductor analogic si aplica motorului tensiunea nominala de comanda atâta timp cât nu s-a realizat cea dorita.
Schema completa de control este prescurtata în figura 10.28. Sunt utilizate doua cartele: 56834 pentru achizitionarea marimilor de intrare si 56835 pentru generarea iesirii. Pe borna 0 a lui 56834 este conectat
traductorul de pozitie T iar pe borna 1 potentiometrul valorii prescrise. Programul de comanda al motorului va fi:
10 REM - REGLAJ TOT SAU NIMIC -
20 U="TENSIUNE NOMINALĂ"
30 POKE 56834,1
40 W = PEEK(56834)
50 POKE 56834,0
60 X = PEEK(56834)
70 IF X<W THEN POKE 56835,U
80 IF X>=W THEN POKE 56834,0
GO TO 30
Instructiunea 20 introduce tensiunea nominala de comanda a motorului. Valoarea prescrisa W este obtinuta prin instructiunile 30,40 iar cea masurata prin 50,60. Ultimele instructiuni definesc logica de generare a tensiunii de iesire.
O astfel de solutie de reglare este aplicabila în general articulatiilor de translatie orizontale (mecanisme de culisare) la care, odata cu atingerea cotei prescrise si decuplarea tensiunii, se pastreaza pozitia. Solutia este mai putin aplicabila articulatiilor de rotatie.
b) Reglajul pozitiei unghiulare
În acest caz se utilizeaza o schema de comanda de tipul celei din figura 10.29. Motorul este controlat printr-o tensiune de comanda în domeniul [0,10V] prin intermediul unui amplificator al carui semnal de referinta este fixat la jumatatea domeniului, 5V. La atingerea valorii prescrise, microprocesorul genereaza un semnal de 5V (dupa A1) ceea ce va determina blocarea motorului. Abateri într-un sens sau altul fata de valoarea prescrisa vor produce tensiuni corespunzatoare în jurul tensiunii de 5V.
Cartela de iesiri analogice 56835 formeaza o tensiune în domeniul dupa o conversie numeric - analogica a unei marimi binare în domeniul 0-155 biti, valoare amplificata de A1 în domeniul [0,10V].
Logica de generare a iesirii este urmatoarea:
Daca W<X se genereaza un semnal de comanda de forma
Într-adevar, daca X=W rezulta Y=128 deci 1,28 V dupa conversia A/N si 5V dupa A1. Daca X-W [0;255] se obtine o tensiune finala în gama [5;10V].
Daca W>X, semnalul de comanda va fi
Figura 10.29
Pentru X=W se obtine la iesirea lui A1 o tensiune de iar pentru W-X [0;255] conversia si A1 va forma o tensiune in domeniul [5;10V].
Programul complet are forma:
10 REM - REGLAJ DE POZIŢIE UNGHIULARĂ -
20 POKE 56834,1
W=PEEK(56834)
40 POKE 56834,0
X=PEEK(56834)
60 IF W>X THEN Y=128+(W-X)/2: GO TO 90
70 IF W<X THEN Y=128-(W-X)/2: GO TO 90
80 IF W=X THEN Y=128
90 POKE 56835,Y
100 GO TO 20
|