• Nem Talált Eredményt

A PCI 1784 számláló használata -- Motion control/Exercise 3 menüpont alatt található control/Exercise 3 menüpont alatt található

In document Digitális szervo hajtások (Pldal 78-83)

Jm 12.6 gcm^2 = 12.6E-7 kgm^2 rotor tehetetlenségi nyomatéka

8. A PCI 1784 számláló használata -- Motion control/Exercise 3 menüpont alatt található control/Exercise 3 menüpont alatt található

laboratóriumi mérési gyakorlat

A számlálót az enkóderből jövő jel beolvasására használjuk, amit aztán numerikusan megjelenítünk. A számláló értékét a TimerHandler függvény olvassa be, ami a valós óra minden jelére végrehajtódik.

8.1. A PCI 1784-es kártya inicializálása a DRV_DeviceOpen függvénnyel

Függvény hívása: status = DRV_DeviceOpen(DeviceNum, DriverHandle)

Rendeltetése: megszerzi az eszköz működtetéséhez szükséges paramétereket a regiszter ill. konfigurációs fájlból, és lefoglalja a memóriát a gyors hivatkozáshoz. Ezt a függvényt minden más függvény előtt meg kell hívni.

5.2. táblázat - Paraméterek

Név Irány Típus Tartomány Leírás

DeviceNum Input határozatlan hosszú alapértelmezett eszköz száma

DriverHandle Output long pointer alapértelmezett pointer a az

eszközhöz való konfigurációs

adatokhoz Eredmény:

1. SUCCESS, ha sikeres;

2. MemoryAllocateFailed, ha a memória allokáció hibás;

3. ConfigDataLost, ha a konfigurációs adat elveszett,

4. CreateFileFailed, ha egy alacsonyabb szintű drivert nem lehet megnyitni.

Megjegyzések:

1. Minden további függvény a DriverHandle által beszerzett konfigurációs adatok alapján hajtja végre az I/O műveleteket.

mérési gyakorlatok leírása)

2. Az I/O műveletek után a felhasználónak meg kell hívni a DRV_DeviceClose, hogy szabaddá tegye a DRV_DeviceOpen által allokált memóriát.

8.2. A számláló értékek visszaállítása a PCI 1784-es kártyán a DRV_CounterReset függvénnyel

Függvény meghívása: status = DRV_CounterReset(DriverHandle, counter) Rendeltetése: Kikapcsolja az adott számláló műveletet.

5.3. táblázat - Paraméterek

Név Irány Típus Tartomány Leírás

DriverHandle Input long alapértelmezett DRV_DeviceOpen

rendeli el

counter Input long alapértelmezett számláló csatorna

Eredmény:

1. SUCCESS, ha sikeres;

2. InvalidDriverHandle, ha DriverHandle = NULL;

3. BoardIDNotSupported, ha a függvényt nem támogatja az eszköz;

4. InvalidChannel, ha a port száma az értelmezési tartományon kívül van.

8.3. A számlálás elindítása a PCI-1784 a kártyán a DRV_CounterEventStart függvénnyel

Függvény meghívása: status = DRV_CounterEventStart(DriverHandle, lpCounterEventStart) Rendeltetése: Konfigurálja a kiválasztott számlálót a feladatra és elindítja azt.

5.4. táblázat - Paraméterek

Név Irány Típus Tartomány Leírás

DriverHandle Input long alapértelmezett DRV_DeviceOpen

rendeli el LpCounterEventStart Input/Output long pointer a

PT_CounterEventStart-hoz

alapértelmezett a tárolási címe counter-nek és GateMode-nak Eredmény:

1. SUCCESS, ha sikeres;

2. InvalidDriverHandle, ha DriverHandle = NULL;

3. BoardIDNotSupported, ha a függvény nem támogatott az eszközön, 4. InvalidChannel, ha a port száma tartományon kívül esik.

Műveletek:

mérési gyakorlatok leírása)

1. A programozás módszere a lapon található számláló/időzítő chiptől függ. Két fajta chipet szoktak használni az A/D kártyákon: Intel 8254 és AMD Am9513A. Az Am9513A-nél, a 0-9 es csatornák felmenő él számlálóként is tudnak működni. Csatlakoztassa a külsőjel generátorát a használni kívánt bemenő órajel csatornára. Ha a hardveres ”kapuzás”, amelyben a számlálót egy külső eszköz indíthatja egy másik bemenetről, előírt, válasszon egy kapuzás típust és használjon külső eszközt a számláló bemenetének triggereléséhez.

2. Mindkét előbb említett időzítő/számláló chip 16 bites, de a függvény 32 biteset támogat, vagy 232-ig számol.

Leellenőrzi, hogy a számláló nem csordult-e túl, és átszámolja 32 bitre.

3. Intel 8254 hardware 2 ciklusidőt igényel a számláló beállításainak visszaállításához, tehát a számláló programnak 2 külsőjelet (ciklusidőt) meg kell várnia, hogy pontos számláló értéket olvasson be. A

”DRV_CounterEventStart” első meghívásakor, az Intel 8254 hardware alapértékeket használ a számláló beállításainak inicializálásához. Ez az inicializálás két külsőjelig (ciklusideig) tart. Ha a

”DRV_CounterEventRead” az inicializálás befejezése előtt hívódik meg, a program helytelen értéket kap.

Tehát 2 külsőjelet (ciklusidőt) kell késleltetni a programban, mielőtt meghívjuk a

”DRV_CounterEventRead”-et, hogy a visszakapott érték pontos legyen. A késleltetés ideje függ a külső jelek közti időtől.

8.4. A számláló értékeinek olvasása PCI-1784 kártyán a DRV_CounterEventRead függvénnyel

Függvény meghívása: status = DRV_CounterEventRead(DriverHandle, lpCounterEventRead)

Rendeltetése:Kiolvassa a jelenlegi számláló összeget anélkül, hogy a számlálást megzavarná és visszaadja a számláló és túlcsordulás feltételeit.

5.5. táblázat - Paraméterek:

Név Irány Típus Tartomány Leírás

DriverHandle Input long alapértelmezett aDRV_DeviceOpen

rendeli el lpCounterEventRead Input/Output long pointer a

PT_CounterEventRead-hez

alapértelmezett a tárolási cím counter, overflow-hoz és

count-hoz Eredmény:

1. SUCCESS, ha sikeres;

2. InvalidDriverHandle, ha DriverHandle = NULL;

3. BoardIDNotSupported, ha a függvényt az eszköz nem támogatja;

4. InvalidChannel, ha a port száma tartományon kívülre esik.

8.5. Mintaprogram számlálási műveletekre a PCI-1784 kártyán

Megjegyzés:

A paraméterek nevei a bemutatott példában eltérnek a mérésben valójában használt nevektől. Nem szabad egyszerűen kivágni és beilleszteni a részeket a példából.

/*

*****************************************************************************

* Program : COUNTER.CPP * * Description : Demo program for counter function * * Boards Supp. : *

mérési gyakorlatok leírása)

* APIs used : DRV_DeviceOpen,DRV_DeviceClose, DRV_GetErrorMessage, * * DRV_CounterReset, DRV_CounterEventStart, DRV_CounterEventRead * * Revision : 1.00 *

PT_CounterEventRead tCounterEventRead;

//Step 1: Display hardware and software settings for running this example printf("Before running this example, please\n");

printf("use the device installation utility to add the device.\n");

//Step 2: Input parameters

printf("\nPlease input parameters:");

printf("\nDevice Number (check the device installation utility): ");

scanf("%d", &lDevNum);

printf("\nInput Channel: ");

scanf("\n%d", &wChannel);

//Step 3: Open device

dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);

if (dwErrCde != SUCCESS)

// Step 5: Start counting operation by DRV_CounterEventStart tCounterEventStart.counter = wChannel;

dwErrCde = DRV_CounterEventStart(lDriverHandle, &tCounterEventStart);

if (dwErrCde != SUCCESS)

// Step 6: Read counter values by DRV_CounterEventRead in while loop // and display counter value, exit when pressing any key tCounterEventRead.counter = wChannel;

tCounterEventRead.overflow = &wOverflow;

tCounterEventRead.count = &dwReading;

while( !kbhit() )

mérési gyakorlatok leírása) {

dwErrCde = DRV_CounterEventRead(lDriverHandle, &tCounterEventRead);

if (dwErrCde != SUCCESS)

dwErrCde = DRV_DeviceClose(&lDriverHandle);

getch();

DRV_GetErrorMessage(dwErrCde, szErrMsg);

printf("\nError(%d): %s\n", dwErrCde & 0xffff, szErrMsg);

}//ErrorHandler

void ErrorStop(long *pDrvHandle, DWORD dwErrCde) {

//Error message

ErrorHandler(dwErrCde);

printf("Program terminated!\n");

//Close device

DRV_DeviceClose(pDrvHandle);

printf("Press any key to exit....");

getch();

exit(1);

}//ErrorStop

5 . 10 mérési feladat a PCI 1784-es kártya használata

A feladat a számláló értékének beolvasása a PCI 1784-es kártya 3-as csatornájáról.

Szükséges lépések:

• Kártya inicializálása.

• Számláló értékek visszaállítása.

mérési gyakorlatok leírása)

• A számláló művelet elindítása.

• A számláló érték beolvasása a művelet elején.

• A számláló értékének minden egyes órajelre való beolvasása.

9. Nyílt szabályozó kör mérése -- Motion

In document Digitális szervo hajtások (Pldal 78-83)