Sunteți pe pagina 1din 5

Lucrarea 2 – Sistem de pozitionare pneutronic

Lucrarea 4 – Sistem de actionare utilizat ca partener in jocul de sah

1. Scopul lucrarii este studiul unui sistem de actionare pneumatic de tip pick-and-place
utilizat ca partener in jocul de sah.

2. Algoritmul si programul de comanda

In cadrul lucrarii este prezentata structura software si hardware a unui robot utilizat ca
partener in jocul de jocul de sah, lucrarea fiind axata in jurul prezentarii algoritmiului si programului
Labview creat pe baza acestuia.

3. Algoritmul de lucru

Sistemul de comanda propus pentru punerea in aplicare a temei a presupus conceperea si


implementarea unui algoritm care sa permita folosirea raspunsului primit de la aplicatia proprie
tablei de sah USB(PS). Pentru aceasta a fost folosit mediul de programare Labview, varianta 7.1. In
figura 1 sunt prezentate principalele etape ale acestui algoritm.
Generarea
Initializare Mutare Interpretare fisier
Configurare comenzilor
partener sah, salvat, Executarea
robot, Software, tinand cont de
Start verificare Pregatire joc salvarea formularea
comenzilor
conditionari.
mutarii
robotului
sah jocului curent Aplicarea
pozitie Start pentru robot
intarzierilor.

Fig. 1

1
Lucrarea 2 – Sistem de pozitionare pneutronic

Etapele algoritmului sunt următoarele :

- Start – Startul aplicatiei realizata in LabView;


- Initializarea robotului si verificarea pozitiei de start a robotului presupune verificarea
pozitiei curente a axei Z si gripperului urmate compunerea comenzilor pentru corectarea
eventualelor abateri;
- Configurare software, pregatire joc sah – In cadrul acestei etape utilizatorul indica cele
trei butoane, in ordine, ce vor trebui apasate in vederea salvarii jocului curent din
fereastra aplicatiei PS
- Mutare partener sah, Salvarea jocului curent – Aceasta etapa imita mutarea partenerului
uman. Dupa ce utlizatorul semnalizeaza incheierea mutarii, jocul curent este salvat prin
mutarea automata a mouse-ului in pozitiile indicate anterior si efecutarea cate unui click
stanga in fiecare din aceste pozitii
- Interpretarea fisierului salvat, formularea comenzilor
- Generarea comenzilor, intarzieri – In urma generarii comenzilor, este necesara apelarea
unor fisiere ce contin comenzile tipizate pentru mutarea pieselor in fiecare dintre pozitiile
tablei de sah. In aceasta etapa se mai face si determinarea necesitatii eliminarii unei piese
de pe tabla de sah.
- Executarea mutarii robotului – Fisierul de date este citit rand cu rand, iar comenzile sunt
trimise serial catre sistem, tinand cont de intarzierile si conditionarile necesare
pozitionarii corecte.

4. Programul de comanda pentru jocul de sah

Dupa cum se poate observa din figura, sistemul trece printr-o etapa de configurare initiala ce
presupune verificare prezentei in pozitia de referinta a robotului cat si configurarea intiala a celor
doua aplicatii. Cele doua aplicatii sunt pornite concomitent, prin apasarea butonului Run din cadrul
aplicatiei LV (fig 2).

Fig 2

2
Lucrarea 2 – Sistem de pozitionare pneutronic

Urmatorul pas il reprezinta setarea aplicatiei PS: selectarea optiunii de joc impotriva
calculatorului si setarea nivelului de dificultate. Diagrama bloc a programului master este prezentata
in figura 3.

Fig 3

Pentru a micsora dimensiunea diagramei bloc a programului au fost create o serie de


subvi-uri. Acestea sunt:

- init file – prin intermediul acestui subvi se realizeaza golirea fisierului master de comanda
Sah_RUN.txt.
- conf mouse – subvi-ul este compus din functii specifice Labview prin intermediul carora
este determinata pozitia curenta pe ecran a acestuia. Subvi-ul memoreaza trei pozitii
consecutive semnalate de utilizator prin apasarea butonului stanga mouse.
- Apasa ctrl – subvi-ul urmareste starea curenta a tastei CTRL stanga, apasarea acesteia
reprezinta semnalul de start pentru salvarea jocului curent si prelucrarea datelor din
fisierul salvat
- Click winapi – salvarea jocului curent din programul PS se face prin intermediul acestui
subvi prin executarea in mod automat a unui click stanga in pozitiile memorate anterior
prin intermediul subvi-ului conf mouse. Diagrama bloc a acestui subvi este prezentata in
figura 4

Fig 4

3
Lucrarea 2 – Sistem de pozitionare pneutronic

- Open ccp – preia datele din fisierul salvat de catre subvi-ul anterior. Acestea vor fi de
forma:
<S1 ST="3600" GL="1" S2="P2" SS="S1" S1="P1" DG="1">

<S2 FS="a2" TS="a4" SS="1" SN="S_1" />

<S2 FS="d7" TS="d6" SS="0" SN="S_1" />

<S2 FS="g1" TS="h3" SS="3" SN="S_1" />

<S2 FS="e7" TS="e5" SS="1" SN="S_1" />

<S2 FS="e2" TS="e3" SS="4" SN="S_1" />

<S2 FS="b8" TS="c6" SS="1" SN="S_1" />

- Prelucrare date sah – acest subvi extrage din fisierul salvat anterior ultima mutare a
partenerului uman, cat si ultima mutare a calculatorului.
- User input – subvi-ul genereaza fisierul de comanda necesar executarii mutarii curente a
calculatorului. Prin intermediul acest subvi programul determina si daca este necesara
eliminarea unei piese de pe tabla de sah. Pe baza datelor extrase din fisierul salvat este
construita calea catre un fisier de comanda corespondent unei anumite etape a miscarii
unei piese. Astfel, exista o serie de fisiere secundare pentru luarea piesei din pozitia
initiala, o alta serie pentru aducerea piesei in noua pozitie cat si o serie de fisiere
secundare pentru eliminarea unei piese de pe tabla de sah. Continutul acestor fisiere este
copiat in fisierul master de comanda in ordinea logica a operatiilor. Sintaxa pe baza careia
se construieste calea catre aceste fisiere este :
Root:\Program_Sah\Fisiere_Tip\T{etapa_miscare}\T{etapamiscare}_{caracter_1}_{caracter_2}.t
xt

Fisierele din care se face copierea comenzilor difera,pe etapa,doar prin numarul programului
selectat pe controllere. In cazul in care in timpul jocului este necesara eliminarea unei piese de pe
tabla de sah la inceputul fisierului master va mai fi inserat un segment ce contine comenzile
necesare apucarii piesei ce trebuie eliminata si depozitarea ei intr-o magazie speciala, aflata sub
pozitia de referinta a robotului. Pentru a determina momentul in care este necesara executarea unei
asemenea operatiuni s-a apelat la o matrice de valori booleene stocata de asemenea in cadrul unui
fisier. Aceasta matrice stocheaza pozitiile in care exista o piesa, indiferent de tipul sau culoarea ei.
Astfel, in momentul care la o mutare dintr-o pozitie de valoare 1 se face o mutare intr-o pozitie care
este de asemenea de valoare 1(deci in pozitia respectiva exista deja o piesa) programul compune, in
mod asemanator unor mutari normale, calea spre unul dintre fisierele tip ce contine succesiunea de
miscari necesara eliminarii piesei si o adauga la inceputul fisierului master de comanda.

- 32 bit false – subvi-ul initializeaza un vector ce contine 32 de variabile boolene cu valoarea


0; vectorul constituie baza comenzilor ce vor fi aplicate la iesirea din sistem. Acest vector este
modificat prin intermediul subvi-urilor comanda x/y si program x/y inainte de a fi transmis catre
sistem

- comanda axa x/y – acest subvi realizeaza modificarea vectorului de 32 de biti, in functie de
datele citite din fisierul de comenzi. Astfel, comanda curenta citita din fisier reprezinta indexul
4
Lucrarea 2 – Sistem de pozitionare pneutronic

variabilei din vector a carui valoare va fi schimbata in 1. Daca valoarea citita este pozitiva, variabila
de la indexul citit va capata valoarea 1, in caz contrar aceasta va deveni 0. Pentru a putea pastra
comenzile intre iteratiile programului s-a apelat la transmiterea vectorului curent iteratiei urmatoare
prin intermediul unui shift register. Diagrama bloc a acestui subvi este prezentata in figura 5.

Fig. 5

- program axa x/y – subvi-ul realizeaza schimbarea programului curent al celor doua
controllere, intr-un mod asemanator celui enuntat la subvi-ul comanda x/y. Diferenta apare in faptul
ca sunt modificati 4 biti concomitent, biti ce reprezinta intrarile de selectie program ale
controllerului.

- scriere comenzi – acest subvi (fig 6) realizeaza generarea semnalului de ceas si scrierea
datelor pentru fiecare front al ceasului. Sincronizarea scrierii datelor se face prin intermediul unui vi
flat sequence si prin transmiterea erorii intre vi-urile DaqMX in ordinea in care se doreste exectuarea
acestora.

Fig. 6

Citirea datelor de intrare se face prin intermediul unei bucle While in care sunt incadrate
restul vi-urilor, responsabila cu generarea semnalelor de Load_IN si Clock_IN, necesare
sincronizarii datelor primite pe canalul Data_IN. Vectorul obtinut este citit element cu element
folosind un vi Index Array iar datele obtinute sunt afisate sub forma paralela.

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