Igazán ütős kártya

20130802_165221

Elképzelhető, hogy egy ekkora kártyán fusson LinuxCNC?

Hát hogyne!

És az is elképzehető, hogy pontos Step/Dir jeleket esetleg PWM kimenetet is generáljon?
ÉS mindennek tetejébe van elég általános célú be-/kimenet is rajta?

20130802_165320

Bizony mindez igaz.

A minap kaptam kezembe a kártyát, és lenyűgözött a fekete kis csöppség.

Itt a konfiguráció-választó képernyő:

m3screen

A kártya neve BeagleBone Black .

Ára: 45 USD

Pár hónapja már volt ilyenekről szó a Raspberry Pi kapcsán, de a BBB sokkal erősebb procival bír mint az RPi.

Munka közben:

Léptető jelek oszcilloszkópon:
scope_2

Alapbeállítások mellett a Programozható Valós idejű Egység (PRU) 50KHz frekivel tudja generálni a Step/Dir jeleket. A beállítások módosításával ez állítólag 100-200KHz-ig is felmehet. Talán még tovább is el lehet menni, de sajnos a Texas Instruments nem “dokumentált” néhány érdekes technikai részletet, így egyelőre marad a kísérletezés.

További részletek: amint lesz időm játszani 🙂

Kategória: Hírek | Címke: | 1 hozzászólás

drl2ngc: Excellon szűrő LinuxCNC-hez

Senci készített egy szűrőt (angolul filter) ami az Excellon által készített drl fájlból készít a ngc fájlt. Az alábbiakban található a leírást és linkek a letöltésekhez. Köszönet érte Sneci!

Ez a filter hirtelen felindulásból készült egy minta drl fájl alapján.
Nem tartalmazza az Excellon teljes készletét, csak a mintafájlban használt elemeket kezeli.

HASZNÁLATA

Futó LinuxCNC programból a “Fájl megnyitás” menüvel válasszuk ki a .drl kiterjesztésű munkaállományt. Az LinuxCNC filter funkciója meghívja a drl2ngc scriptet, ami az Excellon-ból előállítja az RS274 G-kódú munkaprogramot. Hibátlan konverzió esetén megjelenik a program listája és a kirajzolódik a program szimulációja.

A “config” könyvtárban van egy drl2ngc.ini nevű fájl. A konvertálás előtt innen olvassa be a művelet paramétereit. A tartalma a következő:

# drl2ngc.ini
# Required parameters

[EXCELON]
DISABLE_TOOLCHANGE = 1
FEED = 200
SPINDLE = 16000
SAFE_Z = 3
Z_LEVEL = -1.5
RETRACT_LEVEL = 2
WAIT_FOR_SPINDLE = 0

Paraméterek jelentése:

DISABLE_TOOLCHANGE
Ha a paraméter értéke 1, figyelmen kí­vül hagyja a szerszámváltásokat.

FEED
A fúrás sebessége mm/perc-ben

SPINDLE
A főorsó fordulaszáma

SAFE_Z
Biztonsági Z értéke.

Z_LEVEL
A furat mélysége.

RETRACT_LEVEL
Fúrásnál a szerszám a RETRACT_LEVEL-ig gyorsjáratban, innen a FEED sebességgel mozog.

WAIT_FOR_SPINDLE
Ha értéke 1, akkor az itt megadott másodpercig várakozik az M3 után.

TELEPÍTÉSE

Töltsük le a következő fájlokat a linuxcnc/configs/az_en_cnc_konfigom (ezt mindenki írja át a saját könyvtárnevére!!) könyvtárba:
drl2ngc.ini paraméter fájl
drl2ngc script

Majd a scriptet tegyük futtathatóvá:
chmod +x drl2ngc

A LinuxCNC .ini fájlban a következő bejegyzések kellenek:
[FILTER]
ROGRAM_EXTENSION = .drl,.DRL Drill file
drl = ./drl2ngc
DRL = ./drl2ngc

Megjegyzés: ha már van FILTER szekció, akkor csak bővítsük a meglévőt ezzel a három sorral.

Nálam ez í­gy néz ki (mert másra is van filter):
# Section for filters
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
PROGRAM_EXTENSION = .drl,.DRL Drill file

png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
drl = ./drl2ngc
DRL = ./drl2ngc

Sok örömet a használatához!

Kategória: Cikkek | Hozzászólás most!

Mesa: I. Általános áttekintés a kártyákról

1. Bevezetés

Ezzel a cikk sorozattal a Mesa kártyák világába szeretnénk betekintést nyújtani. A Mesa mellett léteznek más gyártók is a piacon, de ezek a legelterjedtebb kiegészítő és bővítő kártyák a LinuxCNC-t felhasználók körében.

A Mesa I/O kártyák az FPGA technológiára épülnek. Különböző firmware tartalmakat lehet letölteni rájuk. A LinuxCNC alatt jelenleg a HostMot2 meghajtó szoftver szolgálja ki az összes Mesa kártyát. A HostMot2 meghajtó különböző firmware verzióban létezik a LinuxCNC-hez.

2. LinuxCNC által támogatott FPGA kártyák

A legtöbb be-/kimeneti (Mesa terminológia szerint Anything I/O) FPGA kártya 50-pines csatlakozó felülettel rendelkezik. Ezen a csatlakozón 24 be-kimeneti láb, ugyanennyi GND és a táp vezetékek (GND, Vcc) van. Az alábbi rövid felsorolásban találhatók a leggyakoribb 50 kivezetéses kártyák.

Kártya neve kapuszám csatlakozók PC interfész
5i20 200k 3×50-pin csatlakozó, 72 pin PCI
5i21 400k 68 pin, 12xRS422/RS485, 10MB PCI
5i22 1.0M vagy 1.5M 4 csatlakozó, 96 pin PCI
5i23 400k 3 50-pin csatlakozó, 72 pin PCI
5i25 400k 2x DB25 csatlakozó PCI
7i43 200k vagy 400k 2 50-pin csatlakozó, 48 pin Parallel port interface
3×20 1.0M, 1.5M vagy 2.0M 6×50-pin csatlakozó, 144 pin PCI-E
7i80HD 2.0M 3×50-pin csatlakozó, 72 pin Ethernet

Megjegyzések:
A nagyobb kapuszámú FPGA összetettebb, bonyolultabb firmware-t képes futtatni.
Az interfész arra értendő, ahogy a kártya csatlakozik a PC-hez

7i43 kártya:
7i43

3. Támogatott bővítő kártyák

3.1. 50-pin-es bővítő kártyák (az 5i25 kivételével az összes FPGA-hoz)

Kártya típusa funkciója
7i37 leválasztó I/O kártya
7i42 leválasztó I/O kártya
7i30 4 x 100 Watt H-híd 4I27,4I34,4I65,5I20,7I60 kártyákhoz
7i40 dual 400W meghajtó
7i29 dual 2KW H-híd 4I27 és FPGA kártyákhoz
7i39 BLDC meghajtó
7i44 8 csatornás RS-422 interfész
7i47 12 csatornás mozgás vezérlő RS-422 interfész
7i48 6 csatornás analóg szervó meghajtó enkóder bemenetekkel
7I52S 6 enkóder + 6 Step/Dir vagy PWM/DIR
7I53 12 enkóder + 2 RS-422 interfész

7i42 leválasztó kártya:
7i42

3.2. 25-pin-es bővítő kártyák (5i25-höz)

Kártya típusa funkciója
7i74 8 csatornás RS-422 interfész
7i75 leválasztó I/O kártya
7i76 5 Step/Dir + 48 leválasztott I/O + főorsó vezérlés + RS-422 port
7i77 6 csatornás analóg szervó + 48 leválasztott I/O + RS-422 port
7i78 4 Step/Dir + 48 leválasztott I/O + főorsó vezérlés + RS-422 port

7i77 kiegészítő kártya:
7i76

4. Firmware konfigurációk és komponensek

Négy különböző funkcióból (komponensből) választhatunk a Mesa kártyák konfigurálásakor:
PWM jel: 3 láb (Out1, Out2, Not_Enable)
Step/Dir jel: 2 láb (Step, Dir)
Encoder jel: 3 vagy 4 láb (A, B, Index, Index-mask)
Általános I/O: 1 láb (tetszőleges funkció)

Ha a PWM, Enkóder vagy Step/Dir funkciókat választjuk akkor azok automatikusan létrejönnek a kimeneteken a firmware betöltésekor. Az összes fennmaradó láb pedig szabadon felhasználható be-/kimenet lesz.

Gyári firmware-ek a 7i43 (400k) kártyához:

Firmware Enkóder PWM StepGen GPIO
SV8 8 8 0 0
SVST4_4 4 4 4 0
SVST4_6 4 4 6 0
SVST4_12 4 4 12 0
SVST2_4_7I47 4 2 4 24

A fenti táblázaból vegyük például a SVST4_12 jelű firmware-t a harmadik sorban:
az SVST4_12 azt jelenti, hogy gyári alapkonfigurációban van 4 PWM szervó vezérlésünk és 12 Step/Dir párosunk. A 4 szervó vezérlést lebontva kapunk 4 enkódert (A,B,Index) és 4 PWM vezérlést (Out1, Out2, Not_Enable). Ha ezt összeadjuk akkor eddig 24 be-/kimenetet használtunk el a 7i43-nál lehetséges 48-ból. A maradék 24 pontosan kiadja a 12 darab Step/Dir kimenetet. Persze ilyen kiépítettségű gépet senki sem épít (4 szervó hajtás és 12 léptető minden egyéb szükséges be-/kimenet nélkül), de szerencsére ennél sokkal rugalmasabban lehet kezelni a firmware konfigurációt.

Nézzünk azt a nagyon általános esetet, amikor van 3 léptetőmotorunk és hozzá egy kézikerék meg az összes szükséges be-/kimenet. A 3 Step/Dir jelpár elfoglal 6 lábat, a kézikerék mint enkóder elfoglal további 3 lábat, és a fennmaradó 39 láb megmarad végállás és referencia kapcsolókra, vészstop és tapintó bemenetekre, főorsó és hűtés vezérlésre, program indítás és leállítás gombokra és bármi másra amire szükség lehet.

A sorozat következő részében elindulunk egy konkrét 7i43 konfiguráció felépítésével.

A Mesa kártyákkal kapcsolatos kérdéseket a itt a Mesa fórumon várjuk.

Kategória: Cikkek | Hozzászólás most!

A főorsó a kívánt sebességen

Ahhoz, hogy egy mozgás sorozat előtt a LinuxCNC várakozzon amíg a főorsó eléri a beállított vagy kívánt sebességet, a “motion.spindle-at-speed” paramétert “true” (igaz) értékre kell beállítani. Ezért a főorsóról szükséges egy enkóder visszacsatolás. Mivel a visszacsatolás és a beállított sebesség értékei általában nem pontosan egyeznek, használni kell a “near” (közelség) HAL komponenst, amivel a két szám közelségét határozzuk meg.

A főorsó beállított sebességet össze kell kapcsolni a “near.n.in1”-vel míg főorsó visszacsatolt sebességét az enkóderről a “near.n.in2”-vel. A komponens kimenetét (near.n.out) pedig “motion.spindle-at-speed”-el. A “near.n.scale” paraméterbe azt kell megadni, milyen közel legyen a két beállított érték egymáshoz mielőtt a kimenet bekapcsol. Az Ön gépenek adottságainak megfelelően kell ezt az értéket beállítani. Ellenőrizze, hogy a jelek nevei megegyeznek az Ön HAL beállításaival!


# a "near" komponens betöltése és a servo szálhoz fűzése
loadrt near
addf near.0 servo-thread

# egyik bemenetre bekötjük a kívánt főorsó sebességet
net spindle-cmd => near.0.in1

# a másik bemenetre kötjük az enkóderről mért sebességet
net spindle-velocity => near.0.in2

# a kimenetet bevisszük a "spindle-at-speed" bemenetére
net spindle-at-speed motion.spindle-at-speed <= near.0.out # beállítjuk, hogy ha 1% két bemenet közötti eltérés akkor egyeznek setp near.0.scale 1.01

A fent egy tipikus példa a HAL fájlban szükséges beállításokhoz, amivel a "főorsó a kívánt sebességen"-t lehet engedélyezni. Ha Önnek már van "near" komponens a HAL fájlban, akkor csak meg kell növelni annak előfordulását eggyel. Ez azt jelenti, hogy ha például Önnek az alábbi sorok egyike volt a HAL fájlban eredetileg:

a) loadrt near
(a "count" paraméter adja meg, hogy hány példányt akarunk az adott komponensből, ebben az esetben ez olyan, mintha loadrt near count=1 lenne)

vagy
b) loadrt near count=3

akkor az alábbiakra kell módosítani:
a) loadrt near count=2

vagy
b) laodrt near count=4

Tehát, ha eddig volt már használatban a HAL fájlban near komponens (a példákban near.0, vagy near.0, near.1, near.2 néven), akkor Önnek az új komponense a sorban következő számot kell hogy kapja (near.1 vagy near.3) és ennek megfelelően kell módosítani a fenti sorokat. Ennél van egy újabb és elegánsabb módja is a komponensek elnevezésének, de az egy nagyobb lélegzetvételű leírás.

A fenti példa szavakban: hasonlítsd össze a beállított és visszacsatolt sebességet és ha a kettő elég közel van egymáshoz, akkor a "motion.spindle-at-speed" jelet váltsd igazra. Úgy kell ezt elképzelni, hogy van a egy fekete doboz, aminek van két bemenete és egy kimenete, és a kimenet akkor lesz igaz, ha a bemeneti értékek közel vannak egymáshoz. Ez a HAL (Hardver Absztrakciós Szint), amivel nagyon szépen és rugalmasan lehet sok különböző hardvert kezelni, csak ismerni kell a lehetőségeket.

Kategória: Cikkek | Címke: , , | Hozzászólás most!