NGCGUI részletesen

NGCGUI

Tartalomjegyzék
1. Áttekintés
2. Demó konfigurációk
3. Könyvtárak
4. NGCGUI integrálása az Axis felületbe
4.1. INI Fájl
4.2. Truetype Tracer
4.3. INI fájl példák
5. Szubrutin követelmények
6. DB25 példa

1. Áttekintés

  • Az NGCGUI a LinuxCNC-ben használható szubrutinokhoz készült segédprogram
  • Az NGCGUI futtatható mint önálló alkalmazás vagy az Axis felületbe építhető egy vagy több fül formájában
  • Ugyanannak a szubrutinak több másolata is létrehozható
  • A szubrutinokat össze lehet fűzni egy teljes G-kódú programba
  • Új szubrutinokat lehet hozzáadni menet közben

Az NGCGUI egy hatásos eszköz, amellyel menet közben lehet létrehozni G-kódú programokat szubrutinokból. Egyazon szubrutin többszöri előfordulásával ugyanazt a műveletsort lehet elvégezni a munkadarab különböző pontjain. Bármilyen érvényes G-kód felhasználható a szubrutinokban.

2. Demó konfiguráció

Három minta beállítás található a LinuxCNC program konfiguráció választó felületén a “sim” könyvtár alatt. A konfiguráció választó felület az Alkalmazaások > CNC > LinuxCNC menüpontban érhető el.

ngcgui – egy összetett példa amely az alábbi szubrutinokat tartalmazza:

  • simp – egyszerű szubrution példa, két kört készít
  • xyz – létrehoz egy négyszöget annak két átellenes sarka ismeretében
  • iquad – belső négyszög készítése
  • db25 – DB25 csatlakozó kontúrkivágása
  • ihex – belső hatszög létrehozása
  • gosper – rekurzív demó
  • Custom – betölt más ngcgui-kompatibilis szubrutinokat
  • ttt – True Type Tracer által generált szöveg készítése gravírozáshoz

ngcgui-lathe – eszterga mintaprogramok

  • id – belső furat készítése
  • od – külső átmérő esztergálása
  • taper-od – külső kúp esztergálás
  • Custom – további egyedi fülek létrehozása

ngcgui-simple – egyszerű példák

  • simp – egyszerű szubrution példa, két kört készít
  • xyz – létrehoz egy négyszöget annak két átellenes sarka ismeretében

A demó szubrutinok megtekintéséhez LinuxCNC elindítása után nyomd meg az E-stop gombot (F2), Gép bekapcsolása (F3), Referencia pontok felvétele (Home All / CTRL-Home), válassz egy NGCGUI fület, majd Create Feature (“tulajdonság” létrehozása) és végül Finalize (befejezés). Ezután nyomd meg a Futtatás (Run) gombot a létrehozott G-kód megtekintéséhez.

Megjegyzés:A demó szubrutonok működnek a disztribúcióban megtalálható szimulációs gépeken is. A szubrutinok valós gépen történő futtatása előtt felhasználónak tisztában kell lennie a létrehozott program céljával és működésével.

3. Könyvtárak

Az NGCGUI szimulációs konfiguráció állományok mutatókat használnka a felhasználó által nem írható LinuxCNC könytárakhoz:
NGCGUI kompatibilis szubrutinok – ngcgui_lib
segéd szubrutinok – ngcgui_lib/utilitysubs
felhaszálói M fájlok – ngcgui_lib/mfiles

Ezek a könytárak az .INI fájlban a következő paraméterekkel kerütek definiálásra:
[RS274NGC]
SUBROUTINE_PATH = ../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = ../../../nc_files/ngcgui_lib/mfiles

Megjegyzés:Ezek a hosszú sorok (amelyek egy sorba írandók és nem lehet folytatni őket a következő sorban) definiálják a keresési könyvtárakat. A könyvtárnevek elválasztása kettőspont (:) karakterrel történik. A felhasználó létrehozhat saját könyvtárakat a saját szubrutinjainak és M fájljainak és hozzáadhatja azokat a keresési útvonalhoz.

Például egy felhasználó a terminál ablakban a következő könyvtárakat hozza létre:
mkdir /home/felhasznalonevem/sajat_szubrutinok
mkdir /home/felhasznalonevem/sajat_fajlok

Aztán vagy készít vagy átmásol fájlotat a fenti felhasználó által írható könytárakba.
Például a felhasználó létrehozhat NGCGUI kompatibilis szubrutint:
/home/felhasznalonevem/mysubs/pelda.ngc

Az .INI fájlt ezután módosítani kell:
[RS274NGC]

SUBROUTINE_PATH = /home/felhasznalonevem/sajat_szubrutinok:../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs
USER_M_PATH = /home/felhasznalonevem/sajat_fajlok:../../../nc_files/ngcgui_lib/mfiles

[DISPLAY]
NGCGUI_SUBFILE = pelda.ngc

A LinuxCNC és az NGCGUI az elérési útvonalakat azok felsorolási sorrendjében nézi végig, és ha valamelyikben megtalálja a keresett fált akkor nem megy tovább. Ezzel a módszerrel elérhető, hogy a saját könytárakat előre téve az aznos nevű saját és “gyári” szubrutinok közül a sajátjaink kerülnek először a találati listára.

4. Az NGCGUI beillesztése az AXIS felületbe
Néhány NGCGUI példaprogram elérhető a LinuxCNC-ben a “sim/ngcgui” könyvtárban.

4.1. .INI fájl
A következő NGCGUI vonatkozású sorok a [DISPLAY] szekcióba kerülnek:
TKPKG = Ngcgui 1.0 – a fő NGCGUI csomag neve (Ngcguittt előtt kell szerepelnie)
TKPKG = Ngcguittt 1.0 – True Type Tracer csomag gravírozott szöveghez
NGCGUI_FONT = Helvetica -12 normal – fontkészlet megadása
NGCGUI_PREAMBLE = in_std.ngc – a szubrutinok elejére beszúrandó bevezető fálj. Több szubrutin összefűzése esetén csak egyszer kerül beépítésre
NGCGUI_SUBFILE = simp.ngc – az adott szubrutin névvel létrehoz egy fület
NGCGUI_SUBFILE = “” – egyedi fül létrehozása
NGCGUI_OPTIONS = opt1 opt2 … – NGCGUI opciók
nonew – új egyedi fülek létrehozásának tiltása
noremove – fülek eltávolításának tiltása
noauto – nincs automatikus G-kód küldás (fálj létrehozása majd kézi küldés)
noiframe – nincs belső képfájl, kép egy mások felső szinten
TTT = truetype-tracer – a True Type Tracer program neve
TTT_PREAMBLE = in_std.ngc – opcionális bevezető a ttt szubrutinok elé

Az alábbiakban egy minta konfiguráció található az NGCGUI program AXIS felületbe tröténő integrálására A szubrutinoknak a [RS274NGC]SUBROUTINE_PATH paraméter által meghatározott könytárban kell lenniük. Némelyik szubrutin további szubrutinokat is használ, ezért ellenőrizni kell a függőségeket a SUBROUTINE_PATH könytvárban. Előfordulhat, hogy egy szubrutin M fájlokat használ, ezeket a [RS274NGC]USER_M_PATH paraméter által megadott könyvtárban kell elhelyezni.

Megjegyzés:Ez nem egy teljes .INI fájl, csak az NGCGUI használatához szükséges sorok vannak itt. Sok további beállítás szükséges a LinuxCNC-nek a teljes .INI fájlhoz.

Minta .INI beállítások:
[RS274NGC]

SUBROUTINE_PATH = ../../../nc_files/ngcgui_lib:../../../ngcgui_lib/utilitysubs
USER_M_PATH = ../../../nc_files/ngcgui_lib/mfiles

[DISPLAY]
TKPKG = Ngcgui 1.0
TKPKG = Ngcguittt 1.0
# Ngcgui meg kell hogy eőzze az Ngcguittt-t

NGCGUI_FONT = Helvetica -12 normal
# csak fájlneveket kell megadni, a fájloknak a[RS274NGC]SUBROUTINE_PATH-ban leírt könytárban kell lenniük
NGCGUI_PREAMBLE = in_std.ngc
NGCGUI_SUBFILE = simp.ngc
NGCGUI_SUBFILE = xyz.ngc
NGCGUI_SUBFILE = iquad.ngc
NGCGUI_SUBFILE = db25.ngc
NGCGUI_SUBFILE = ihex.ngc
NGCGUI_SUBFILE = gosper.ngc

# egyedi fül készítéséhez üres szubrutinnevet (“”) kell megadni
NGCGUI_SUBFILE = “”
TTT = truetype-tracer
TTT_PREAMBLE = in_std.ngc
PROGRAM_PREFIX = ../../nc_files

4.2. Truetype Tracer

Ngcgui_ttt valósítja meg a True Type Tracer (v4) támogatást az NGCGUI alatt. Létrehoz egy AXIS fület, amelyben a gravírozandó szöveget, a fontkészletet és más paramétereket lehet megadni. A True Type Tracer-t külön kell telepíteni.

Az ngcgui_ttt AXIS felületbe való beillsztéséhez a következő paramétereket kell beállítani:
Paraméter: [DISPLAY]TKPKG = Ngcgui_ttt verziószám
Példa: [DISPLAY]TKPKG = Ngcgui_ttt 1.0
Megjegyzés: Kötelező megadn, hatására az AXI-ban egy “ttt” nevü fülön létrejön az ngcgui_ttt. A TKPKG = Ngcgui után kell hogy következzen.

Paraméter: [DISPLAY]TTT = true_type_tracer_elérési_útvonala
Példa: [DISPLAY]TTT = truetype-tracer
Megjegyzés: Opcionális, ha nincs megdava, akkor a /local/bin/truetype-tracer útvonalat próbálja használni.Vagy teljes elérési útvonalt kell megadni vagy csak a futtatható fálj nevét, de ebben az esetben a felhasználó PATH környezeti változójának értéke kerül felhasználásra.

Paraméter: [DISPLAY]TTT_PREAMBLE = bevezető_fájl_neve
Példa: [DISPLAY]TTT_PREAMBLE = in_std.ngc
Megjegyés: Opcionális, a ttt szubrutin által létrehozott fájlok bevezető fájlját definiálja

4.3. .INI példák
Az NGCGUI a LinuxCNC keresési útvonalát használja a fájlok kereséséshez. A keresési útvonal a [DISPLAY]PROGRAM_PREFIX által definiált standard könyvtárral kezdődik, majd a [RS274NGC]SUBROUTINE_PATH sorban egy vagy több, kettősponttal (:) elválasztott könyvtárelérést is meg lehet adni.

Könyvtárak
A könyvtárakat meg lehet adni abszolút vagy relatív elérési útvonalakkal
Példa: [DISPLAY]PROGRAM_PREFIX = /home/myname/emc2/nc_files
Példa: [DISPLAY]PROGRAM_PREFIX = ~/emc2/nc_files
Példa: [DISPLAY]PROGRAM_PREFIX = ../../../nc_files

Az abszolút elérési útvonal “/” jellel kezdődik és a teljes elérési útvonalt definiálja a fájlrendszeren belül. A “~/”-vel kezdődő elérési útvonal az adott felhasználó saját könytárától kezdőd relatív útvonalat definiálja. Így például a “~kovacsjanos/” útvonal a “kovacsjanos” felhasználó saját könyvtárától kezdődően definiálja az elérési útvonalat.

Relatív elérési útvonalak
A relatív elérési útvonalak az .INI fájlt tartalamazó indítási könytárhoz képest számított elérési útvonalak. A relatív könyvtármegadással a konfigurációk áthelyezhetőek, de az útvonal megértése feltételezi a linuxos elérési útvonalakban használható karakterek jelentésének mélyebb ismeretét.

./d0 gyakorlatilag az indítási könytárban szereplő “d0” könyvtár
../d1 a szülő könytárban szereplő “d1” könyvtárra hivatkozik
../../d2 a szülő könytár a feletti szülő könytárban szereplő “d2” könyvtárra hivatkozik
../../../d3 és így tovább.

Pontosvesszővel elválasztva több könyvtár elérést is meg lehet adni a [RS274NGC]SUBROUTINE_PATH paraméterrel Az alábbi példa demonstrálja a többször könytár megadást relatív és abszolút elérési útvonalakkal.

Példa: [RS274NGC]SUBROUTINE_PATH = ../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs:/tmp/tmpngc

Ez egy hoszú sor, nem lehet a megkezdett sort a következőben folytatni. Amikor a LinuxCNC vagy az NGCGUI fájlokat keres, akkor az elsőként megtalált fájlt fogja használni.A LinuxCNC és az NGCGUI számára az adott NGCGUI szubrutinból meghívásra kerülő az összes szubrutinnak és egyéb segédrutinnak elérhetőnek kell lennie. Az a kényelmes megoldás erre, ha az összes segédprogram egy külön könyvtárban helyezkedik el, ahogy a fenti példa is mutatja.

Az NGCGUI telepítőkészlet tartalmazza az ngcgui_lib könyvtárat, demonstrációs szubrutinokat, bevezető, záró és segéd fájlokat. Ha módosítani szeretné valamely fájl működését, akkor az dott fájlt másolja át az előbb említett keresési útvonalak közül az előrébb állók egyikébe. Az első ami keresés alá esik a [DISPLAY]PROGRAM_PREFIX. Használhatja ezt a könyvtárat is, de az a jobb módszer ha készít egy vagy több külön könyvtárat, és azok az elérési útvonalát a [RS274NGC]SUBROUTINE_PATH lista elejére teszi.

Az alábbi példában in a /home/myname/emc2/mysubs könyvtárban levő fáljok a ../../../nc_files/ngcgui_lib könyvtárban levők előtt szereplenek, így az előbbiek kerülnek felhasználásra.
Példa: [RS274NGC]SUBROUTINE_PATH = /home/myname/emc2/mysubs:../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs

Az új felhasználók gyakran esnek abba a hibába, hogy ez NGCGUI struktúrális elvárásainak nem megfelelő fájlokat próbálnak használni. Ilyen esetben az NGCGUI valószínűleg jelentős számú hibajelzést fog generálni. Az a jó gyakorlat, ha az NGCGUI kompatibilis szubrutinokat egy erre kijelölt könyvtárba kerülnek, míg a bevezető, zár és segédfájlok egy vagy több ettől eltérő könytár(ak)ba kerülnek, így megakadályozva hogy ezeket szubrutinként lehessen felhasználni. Azokat a fájlokat, amelyeket nem szándékozik szubrutinként felhasználni megjelölheti egy speciális megjegyzéssel:”(not_a_subfile)”, így az NGCGUI automatikusen elutasítja őket egy megfelelő üzenet kíséretében.

Az NGCGUI AXIS felületbe illesztéséhez a következőknek kell szerepelnie az .INI fájlban:
Paraméter: [DISPLAY]PROGRAM_PREFIX = dirname
Példa: [DISPLAY]PROGRAM_PREFIX = ../../../nc_files
Megjegyzés: Megadása kötelező mivel sok LinuxCNC funksióhoz szükséges. Ez az első könyvtár ahol fájlokat keres a LinuxCNC

Paraméter: [RS274NGC]SUBROUTINE_PATH = dirname1:dirname2:dirname3 …
Példa: [RS274NGC]SUBROUTINE_PATH = ../../../nc_files/ngcgui_lib:../../../nc_files/ngcgui_lib/utilitysubs
Megjegyzés: Opcionális, de nagyon hasznos a szubrutinok és más fájlok megfelelő könytárakba rendezéséhez

Paraméter: [DISPLAY]TKPKG=Ngcgui verziószám
Példa: [DISPLAY]TKPKG=Ngcgui 1.0
Megjegyzés: Kötelező, az NGCGUI fülek AXIS felületbe való betöltését definiálja

Paraméter: [DISPLAY]NGCGUI_FONT = fontleírás
Példa: [DISPLAY]NGCGUI_FONT = Helvetica -12 normal
Megjegyzés: Opcionális, a fontleírás egy tcl kompatibilis fontleírás a fonttípus, méret és súly megadására
Alapértelmezés: Helvetica -10 normal

Paraméter: [DISPLAY]NGCGUI_SUBFILE = szubrutinnév
Példa: [DISPLAY]NGCGUI_SUBFILE = simp.ngc
Példa: [DISPLAY]NGCGUI_SUBFILE = xyz.ngc
Példa: [DISPLAY]NGCGUI_SUBFILE = “”

Megjegyzés: Egy vagy több NGCGUI kompatibilis szubrutin nevét lehet megadni amelyek az AXIS indulásakor betöltődnek. Egy egyedi fül jön létre amennyiben a fájlnév üres (“”). Az egyedi fül megadásával a felhasználónak lehetősége van betallózni bevezető, szubrutin és záró fájlokat.

Paraméter: [DISPLAY]NGCGUI_PREAMBLE = bevezető fájl
Példa: [DISPLAY]NGCGUI_PREAMBLE = in_std.ngc

Megjegyzés: Opcionális, ha specifikálva van, akkor mindne szubrutin elé beemelésre kerül.
A “Custom” egyedi szubrutinok az adott fül által definiált bevezető fájlt használják.

Paraméter: [DISPLAY]NGCGUI_POSTAMBLE = lezáró fájl
Példa: [DISPLAY]NGCGUI_POSTAMBLE = bye.ngc

Megjegyzés: Opcionális, ha specifikálva van, akkor mindne szubrutin után beemelésre kerül. A “Custom” egyedi szubrutinok az adott fül által definiált bevezető fájlt használják.

Paraméter: [DISPLAY]NGCGUI_OPTIONS = opt1 opt2 …
Példa: [DISPLAY]NGCGUI_OPTIONS = nonew noremove
Megjegyzés: Több, szóközzel elválasztott opció is felsorolható.
Alapértelmezésben az NGCGUI úgy konfigurálja a füleket hogy:
1) a felhasználó létrehozhat új füleket
2) a felhasználó törölhet füleket (az utolsónak maradó kivételével)
3) befejezett fájlok automatikusan átkerülnek az AXIS felületbe
4) képkeret (iframe) kerül létrehozásra, amelyben megjeleníthető a szubrutinhoz tartozó kép.
A nonew, noremove, noauto, noiframe opciók letiltják a fenti alapértelmezett viselkedést.

Alapértelmezésben ha egy képfájl (png,gif,jpg,pgm) található ugyanabban a könyvtrárban ahol a szubrutin van, akkor a képfájl megjelenítésre kerül az képkeretben (iframe) A noiframe opció megadásával további gombok jeleníthetőek meg, amelyekkel az bevezető, szubrutin és lezáró fájlok és egyéb jelölőnégyzet kiválasztásához.

A jelölőnégyzetek kiválasztása mindig lehetséges az alábbi spciális karakter kombinációkkal:
Ctrl-R Toggle “A szubrutin beolvasása utáni értékek megőrzése”
Ctrl-E Toggle “Szubrutin kiterjesztése”
Ctrl-a Toggle “Automatikus küldés”
(Ctrl-k kilistázza az összes elérhető opciót.)

Ha a noiframe opció megadásra kerül, és képfájl található az adott könytárban, akkor a kép egy külön ablakban kerül megjelenítésre és az összes funkció elérhető az adott fülön. Az NGCGUI_OPTIONS érvényes minden NGCGUI fülre, azzal a kivétellel, hogy a nonew, noremove, és noiframe opciók nem alkalmazhatók az egyedi “Custom” fülekre. Ne használjon egyedi “custom” füleket, ha korlátozni akarja a felhasználót a szubrutin fájlok kiválasztásában vagy újabb fülek létrehozásában.

5. Elvárások a szubrutiokkal kapcsolatban

Az NGCGUI kompatibilis szubrutin egy egyszerű szubrutin definíciót tartalmaz. A szubrutin neve meg kell, hogy egyezzen a fájl nevével (leszámítva a fájlnévből a .ngc kiterjesztést). Habár a LinuxCNC megengedi a nevesített és számozott szubrutinok használatát is, csak a nevesített szubrutinok kompatibilisek az NGCGUI-val. További informáióért nézzem meg az O kódok fejezetet.

Az első megjegyzéstől eltérő sorban a “sub” utasítás kell szerepelnie. Az utolsó megjegyzéstől eltérő sorban az “endsub” utasításnak kell szerepelnie.

pelda.ngc:
o sub
a_szubrutin_törzse
o endsub

A szubrutin törzse a szubrutin által használni kívánt pozícióhelyes lokális nevesített paraméterek definiálásával kell hogy kezdődjön. A definícióknak #1-től kell kezdődni és egymást követő számozással kell felsorolni az utolsó paraméterig bezárólag, paraméter ne hagyható el.

Paraméter Számozás
# = #1
# = #2
# = #3

Mivel a LinuxCNC szubrutin hívások esetén megengedi a számozott paraméterek használatát #1 és #30 között, így az NGCGUI szintén beviteli mezőt biztosít ezen paraméterek számára. Az az jó gyakorlat, ha a szubrutinon belül sehol nem kerülnek felhasználásra az #1 és #30 közötti számozott paraméterek.

Belső változókra a lokális nevezett paraméterek használata javasolt. Minden definiciós utasítás tartalmazhat opcionálisan egy speciális megjegyzést és egy alapértelmezett paraméter értéket.

Utasítás Prototípus
# = #n (=alapértelmezett érték)

vagy

# = #n (szöveges megjegyzés)

vagy

# = #n (=alapértelmezett érték szöveges megjegyzés)

Paraméter Példák
# = #1 (=0.0)
# = #2 (Ystart)
# = #3 (=0.0 Z kezdő érték)

Ha az alapértelmezett érték megadásra kerül ,akkor induláskor az megjelenik a paraméter beviteli mezőjében. Ha a szöveges megjegyzés megadásra kerül, akkor az fogja azonosítani a beviteli mezőt és nem a paraméter neve.

Globális Nevezett Paraméterek
Az NGCGUI és a globális nezevett paraméterek (#<_globalname>):

Sok más programnyelvhez hasonlóan a globális változók használata növeli a hatékonyságot, de gyakran váratlan következményekhez vezethet. A LinuxCNC-ben a létező globális nevezett paraméterek érvényesek leszenk a szubrutinokban is, a szubrutinok módosíthatják azokat és létrehozhatnak újakat.

A globális nevezett változók használata szubrutin adatbevitelére nem ajánlott, mivel az ilyenféle felhasználáshoz szükséges lenne egy jól definiált globális kontextus is, amit nehéz karbantartani.A számozott paraméterek használata (#1-#30) széleskörű tervezési igényeket ki tud elégíteni.

Visszaszorulóban levő tulajdonság: NGCGUI tartalmaz valamiféle globális nevezett paraméter beviteli támogatást, de ennek használata nem javasolt és nem dokumentált. A globális nevezett beviteli paraméterek használata nem lesz támogatott egyáltalán a LinuxCNC 2.6-ban

Bár a globális nevezett beviteli paraméterek használata nem javasolt, a LinuxCNC szubrutinok az eredmények visszaadására muszáj globális nevezett paramétereket használni. Mivel az NGCGUI kompatibilis szubrutinok célja a grafikus felületen való használat, így a visszatérési értékek megléte nem általános elvárás. Azonban az NGCGUI hasznos olyan szubrutinok teszteléséhez amelyeknek vannak globális nevezett visszatérési paraméterei, és szintén általános az NGCGUI kompatibilis szubrutinok esetében az egyéb segédszubrutinok hívása, melyek szintén produkálnak visszatérési értéket globális nevezett paraéter formájában.

Az ilyen felhasználások támogatása érdekében az NGCGUI figyelmen kívül hagyja azon globális nevezett paramétereket, amelyek nevében a kettőspont (:) szerepel. A kettőspontot használat utasítja az NGCGUI-t hogy ne hozzon létre bevieteli mezőt ezen paraméterek részére.

Globális Nevezett Paraméterek
o sub

#<_pelda:eredmeny> = #5410 (visszadja az adott szerszám átmérőjét)

o call [#] [#] (szubrutin hívás)
# = #<_segéd:válasz> (lokálissát tesz azonnal a segéd eredményt)
#<_segéd:válasz> = 0.0 (nullázza a szubrutin által használt globális nevezett paramétert)

o endsub

A fenti példában a segéd szubrutin egy külön fájlban található (segéd.ngc). A segéd szubrutin visszaadja az eredményt a #<_segéd:válasz> nevű globális nevezett paraméterben.

Helyes gyakorlat, ha a meghívó szubrutin azonnal lokálissá teszi az eredményt hogy azt máshol is fel tudja használni máshol, és ha az eredmény visszaadására szolgáló globális nevezett paramétert kinulázza, hogy ezzel elkerülje annak véletlen használatát a globális kontextusban. (A 0.0 nullázási érték nem minden esetben helyes értékadás)

Az NGCGUI támogatja ugyanannak a szubrutinnak különböző paraméterekkel történő többszöri meghívását (egyszeri meghívás angolul “feature” /tulajdonság/) és összefűzését és több szubrutin egymáshoz való kapcsolását. Néha hasznos lehet a szubrutin futása közben lekérdezni a “tulajdonságok” sorrendjét, erre szolgál az NGCGUI beépített speciális globális paramétere: #<_feature:>. Ennek értéke nullával indul, és eggyel nő minden egyes “tulajdonság” hozzáadásával.

További lehetőségek:
Speciális információs megjegyzést lehet elhelyezni bárhol az NGCGUI szubrutinban.
Ennek a formátuma a következő: (info: info_text)
Az információs szöveg az NGCGUI fül felső részén fog megjelenni az AXIS felületen.

Azon fájlokat, amelyeket nem szeretne hogy NGCGUI szubrutinként kezeljen, meg tudja jelölni a következő speciális megjegyzéssel:
(not_a_subfile) /nem szubrutin fájl/
Ezen fájlokat az NGCGUI automaikusan elvet egy rendszerüzenet kíséretében.

Opcionálisan egy képfájl (.png,.gif,.jpg,.pgm) tartozhat minden szubrutinhoz. A képfájl a szubrutin paramétereinke jobb megértését szolgálja. A képfájlnak a subrutinnal megegyező könyvtárban kell lennie és ugyanazon néven kell szerepelnie a megfelelő képi kiterjesztéssel, például a minta.ngc fájlhoz a minta.png képfájl tartozna. Az NGCGUI átméretezi a képet ha szükslges a maximális 320 pixel szélességre és 240 pixel magasságra.

Az NGCGUI-fée szubrutin kompatibilitáshoz szükséges követelmények egyike sem zárja ki azonban annak használatát általános célú LinuxCNC szubrutinokban. Tehát mindaz ami megfelel az NGCGUI elvárásoknak, ugyanolyan jól működik általános LinuxCNC szubrutinként is.
A LinuxCNC szubrutinok lehetőségeit és az NGCGUI használatát bemutató könytár (ngcgui_lib könyvtár) taálható minden LinuxCNC terjesztésben, amelyek tartalmazzák az NGCGUI kompatibilis példafájlokat és segédfájlokat.

A felhasználók által készített további szubrutinok találhatók a LinuxCNC Fórumon a Szubrutinok szekcióban.

6. DB25 példa
Az alábbi példa a DB25 csatlakozó kivágást mutatja. Az első képen látható, hova kell beírni az üres helyekre a változók értékeit.

Ezen a képen látható a DB25 szubrutin által bejárt szerszámpálya.

Ezen a képen az új gomb használata látszik és egy “egyedi fül”, meleyek segítségével három DB25 csatlakozó kivágást lehet készíteni egy programon belül.

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

LinuxCNC felhasználói kézikönyv

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

INI mintafájl leírás

# A LinuxCNC vezérlő paraméterek általános vezérlő esetén. Változtassa meg a beállításokat saját
# igényeinek megfelelõen. Megjegyzések elé “#” vagy “;” karaktert kell tenni, mindkettő elfogadott
# azonban a legtöbb Linux konfigurációs állomány szintén a # jelet használja erre a célra.
# Azon beállítások, amelyeket valószínû, hogy meg kell változtatni “+” jellel kezdődnek
# Azon beállítások, amelyeket NEM valószínű, hogy meg kell változtatni “-” jellel kezdődnek.
# Magyar fordítás: Bujtár János

########################## Általános rész ########################
[EMC]
#- Az INI fájl verziószáma. Tetszés szerint módosítható
VERSION = $Revision$

#+ A gépnév ami a LinuxCNC indulása után a grafikus felület tetején olvasható
MACHINE = EMC-HAL-STEP-MM

#+ Hibakeresési információk szintje. 0 esetén hiba információk nem jelennek meg
DEBUG = 0
# DEBUG = 0×00000007
# DEBUG = 0x7FFFFFFF

########################## Szűrők ############################
[FILTER]
# A szűrő kategória kiterjesztéseinek felsorolása vesszővel elválasztva és a szűrő rövid leírása
# majd a kiterjesztésekhez rendelt szűrő program megnevezése
PROGRAM_EXTENSION = .png, .gif Szürkeárnyalatos kép
png = image-to-gcode
gif = image-to-gcode

########################### Display ###################&#######
[DISPLAY]
#+ Grafikus felhasználói felület neve
DISPLAY = axis
# DISPLAY = usrmot
# DISPLAY = mini
# DISPLAY = tkemc

# Grafikus képernyõ megjelenítési frissítés másodpercben megadva
CYCLE_TIME = 0.200

#- Help fájl elérési útvonala
#HELP_FILE = tkemc.txt

#- Pozíció megjelenítés a LinuxCNC indításakor: RELATIVE (relatív) MACHINE (gépi koordináták)
POSITION_OFFSET = RELATIVE
#- Pozíció megjelenítés a LinuxCNC indításkor: COMMANDED (vezényelt)
#- ACTUAL (tényleges koordináták)
POSITION_FEEDBACK = ACTUAL

#+ Előtolás túlvezérlés legmagasabb értéke, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2

#+ Főorsó fordulat túlvezérlés legnagyobb értéke, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.0

#+ Főorsó túlvezérlés legkisebb értéke, 1.0 = 100%
MIN_FEED_OVERRIDE = 0.5

#- Alapértelmezett útvonal a G kód fájlokhoz
PROGRAM_PREFIX = /home/drehamester/linuxcnc/nc_files

#- Indító grafikai fájl neve és a megjelenítés ideje
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 5

########################### AXIS #############################
# Az alábbi [DISPLAY] elemek csak az AXIS felület esetén használhatóak
# Alapértelmezett sebesség lineáris léptetéskor
# gépi mértékegység/perc-ben megadva (mm/perc, inch/perc)
DEFAULT_LINEAR_VELOCITY = .25

# A legkisebb léptetési sebesség a grafikus csúszkán
MIN_VELOCITY = .01

# A legnagyobb léptetési sebesség lineáris léptetéskor
# gépi mértékegység/perc-ben megadva (mm/perc, inch/perc)
MAX_LINEAR_VELOCITY = 1.0

# A legkisebb léptetési sebesség a grafikus csúszkán
MIN_LINEAR_VELOCITY = .01

# Alapértelmezett szögelfordulási léptetés gépi mértékegység/perc-ben megadva
DEFAULT_ANGULAR_VELOCITY = .25

# Legkisebb szögelfordulási léptetés
MIN_ANGULAR_VELOCITY = .01

# Legnagyobb szögelfordulási léptetés
# gépi mértékegység/perc-ben megadva
MAX_ANGULAR_VELOCITY = 1.0

# A léptetés növekményeit definiálja Az alapértelmezett növekmények felülírására szolgál.
# Az értéke lehetnek tizedes értékek (.01, 0.001) vagy törtek (1/16, 1/32) opcionálisan
# mértékegységgel kiegészítve (cm, mm, um, inch, in or mil)
# Ha nincs mértékegység megadva akkor a gépi mertékegységben értendõ.
# Amerikai és metrikus távolság mértékegységek keverve is használhatóak:
# INCREMENTS = 1 inch, 1 mil, 1 cm, 1 mm, 1 um

# A LinuxCNC indításakor a grafikus előnézeti ablakban megjelenő fájl neve.
# Használja az üres fájlnevet: “” ahhoz, hogy ne töltődjön be induláskor semmi.
OPEN_FILE = /full/path/to/file.ngc

# A szövegszerkesztõ megnevezése amit a File > Edit menűből hívható be
# Szintén ezt a szövegszerkesztőt használja az AXIS a Szerszámtábla szerkesztéséhez
# Másik lehetséges szerkesztõ a “gonem-terminal -e vim” (mazochistáknak)
EDITOR = gedit

# A pyVCP panel leíró fájl. Nézze meg a pyVCP fejezetet a további információért!
PYVCP = /filename.xml

# Eszterga módban kirajzol egy felülnézeti rajzot sugár és átmérõ adatokkal a DRO-n
# Ez feltétlenül kell az eszterga módhoz!!!
LATHE = 1

# A megfelelõ “GEOMETRY” paraméter az adott gép kiépítésétõl
# és a vezéléséhez használt kinematikától függ.
# A példa beállítás GEOMETRY=XYZBCUVW egy 5-tengelyes gépre készült, ahol a kinematika
# az UVW-t a szerszám koordináta rendszerben mozgatja, míg a az XYZ a
# munkadarab koordináta rendszerben mozog. A betűk sorrendje fontos, mert ez fejezi ki
# milyen sorrendben mozognak a tengelyek a mozgási mûveletek során.
# Például a C majd a B tengely körüli elfodulás mást eredményez mint ennek a fordítottja.
# A geometriának nics hatása a forgó tengelyre.
GEOMETRY = XYZABCUVW

# A körívek előnézeti megjelenítésének minőségét lehet itt beállítani.
# A körívek egyenes szakaszokra bontva kerülnek megjelenítésre:
# a félkörívek ARCDIVISION számú darabra vannak felosztva.
# A nagyobb értékek pontosabb előnézeti rajzot adnak,
# de hosszab ideig tarta a kirajzolásuk és a képernyő is lassabban firssül emiatt.
# Az alapértelemezett érték 64 azt jelenti, hogy egy max. 7,5cm-es (3 inch) kör
# 0.0254mm-nél kisebb egyenesekre lesz felosztva.
ARCDIVISION = 64

######################### Feladat vezérlő ########################
[TASK]
# Feladat vezérlõ program neve. milltask, NE változtassa meg!!!
TASK = milltask

#- Ciklusidő, ennyi másodpercenként fut a milltask,
#- várakozás mozgás befejezésére, várakozás felhasználói adatbevitelre
#- vagy várakozás parancs esetén fut rendszeresen ez a ciklus.
CYCLE_TIME = 0.010

######################## Program értelmező #######################
[RS274NGC]
#- A parancsértelmezõ változóit tároló fájl neve
PARAMETER_FILE = stepper.var

# A G kód parancsértelmezõ indításakor végrehajtandó kódok
# Ez nem helyettesíti a megfelelõ bevezetõ fejlécet a G kódú programban!!!
#RS247NGC_STARTUP_CODE = G21 G90

######################## Mozgás vezérlõ rész ######################
[EMCMOT]
#- A használni kívánt mozgás vezérlõ neve (nem triviális kinetika esetén csak egy lehet)
EMCMOT = motmod

#- Időtúllépés kommunikáió esetén másodpercben megadva
COMM_TIMEOUT = 1.0

#- Az egyes próbálkozások közötti időintervallum másodpercben
COMM_WAIT = 0.010

#+ Alap ciklusidõ nanoszekundumban – ez a leggyorsabb szál (ciklus) a gépben
BASE_PERIOD = 50000

# Servo ciklusidõ nanoszekundumban – a BASE_PERIOD érték
# többszörösére kerül felkerekítésre
SERVO_PERIOD = 1000000

################## Hardware absztrakciós szint #######################
[HAL]
# A futtatás (run) szkript a halcmd parancsot használja
# a HALFILE program végrehajtásához, azután pedig végrehajtja az
# esetleges egyedi halcmd parancsokat.
#+ A fájlok a felsorolásuk sorrendjében kerülnek végrehajtásra
HALFILE = core_stepper.hal
#HALFILE = xylotex_pinout.hal
HALFILE = standard_pinout.hal

#- A halcmd által végrehjtandó HAL parancsok listája
# a parancsok a felsorolásuk sorrendjében kerülnek végrehajtásra
#HALCMD = save neta

###################### Pályatervező #############################
[TRAJ]
#+ Gépspecifikus beállítások
# Tengelyek száma
AXES = 3

# COORDINATES = X Y Z A B C
# A G-kódból vezérelni kívánt koordináták felsorolása
COORDINATES = X Y Z

# A referenci felvétele után a tengelyek ezeket az értékeket veszik fel.
# Értelemszerûen 4 tengelyes gép esetén 4 számot kell írni.
HOME = 0 0 0

# A lineáris tengelyek mértékegysége
# Lehetséges értékek in, inch, imperial, metric, mm
# Ennek nincs hatása a G kódban kiadott mértékegységekre,
# A G20 G21 parancsok ettõl függetlenek
LINEAR_UNITS = mm

# Forgó tengelyek mértékegysége
# Lehetséges értékek: “deg” “degree” (fokok, a teljes körív 360 fok)
# “rad”, “radian” (2*PI a teljes kör), “grad”, “gon” (400 egy teljes kör)
# Ennek nincs hatása a G kódban alkalmazott szögelfordulás mértékegységére.
# Az RS274NGC kódban az A, B, C szavak mindig fokokban értendõek
ANGULAR_UNITS = degree

# Az EMCIO futtatásának gyakorisága másodpercekben
CYCLE_TIME = 0.010

# A léptetés gyorsaságának kezdeti értéke gépi mértékegység/perc-ben kifejezve
DEFAULT_VELOCITY = 0.424

# A koordinált mozgások maximális sebessége 300 gépi mértékegység/perc-ben kifejezve
MAX_VELOCITY = 30.48

# A léptetési gyorsulás mértéke gépi mértékegység/másodperc-ben kifejezve
DEFAULT_ACCELERATION = 300.0

# A koordinált mozgások gyorsulásának mértéke gépi mértékegység/másodperc-ben kifejezve
MAX_ACCELERATION = 500.0

# Pozició fájl neve, ha ez nem üres érték akkor ebben a fájlban kerül letárolásra a
# gép kikapcsolásakor az aktuális koordináta pozíciók értéke. Ha ez nincs beállítva akkor
# a LinuxCNC minden bekapcsoláskor zéró értékkel indulnak a tengelyek. Referencia kapcsoló
# nélküli gépeken hasznos lehet, de feltételezi, hogy kikapcsolás után nem mozdulnak el a tengelyek.
POSITION_FILE = position.txt

# A LinuxCNC alapértelmezésben megköveteli, hogy a felhasználó felvegye a referencia
# pozíciót mielőtt programot futtat vagy az MDI ablakban dolgozik. Egyedül a léptetés megengedett
# a referenci pont felvétele elõtt. Ennek a paraméternek az “1″ értékre való beállításával
# lehetõség van programot futtatni és MDI parancsokat kiadni referencia felvétele nélkül is.
# VIGYÁZAT!: Ezzel a beállítással a gép nem figyeli a szoftveres végállásokat és
# a gép kiléphet a megengedett munkaterébõl!
# NO_FORCE_HOMING = 1

##################### Tengelyek ##############################
#+ Első tengely
[AXIS_0]

# A tengely típusa: LINEAR (lineáris) vagy ANGULAR (forgó)
TYPE = LINEAR

# Ha egy forgó tengelynél ez be van állítva akkor a tengely 0-359.999 fokban fordulhat el.
# Pozitív számok pozitív irányú elmozdulást okoznak, negatívak ellenkezõ irányút.
#WRAPPED_ROTARY = 1

# Ha definiálva van akkor az adott tengelyre felülírja a
# [TRAJ] rész LINEAR_UNITS paraméterben beállított értékét
#UNITS =

# Maximális sebesség az adott tengelyen gépi mértékegység/másodperc-ben
MAX_VELOCITY = 30.48

# MEGJEGYZÉS: A lépésgenerátor modul a saját sebesség és gyorsulás értékeit alkalmazza.
# Arra a következtetésre jutottunk, hogy a lépésgenerátronak
# szükséges egy kis “tartalék” a pálytervezõ gyorsításán felül, egyébként
# kissé lemarad a gyorsításokkor és késõbb pedig túllõ amikor behozza a lemaradást.
# Hosszab távon reméljük, találunk megoldást a problémára.
# Addig is a STEPGEN_MAXACCEL értékét gey pár százalékkal nagyobbra mint
# a MAX_ACCELERATION értéke.
# Maximális gyorsulás értéke gépi mértékegység/másodperc^2-ben
MAX_ACCELERATION = 500.0
STEPGEN_MAXACCEL = 520.0

# Kottyanás mértéke gépi mértékegységben. Ha meg van adva, akkor
# a STEPGEN_MAXACCEL értékét a MAX_ACCELERATION érték 1.5-2-szeresére
# kell állítani az adott tengelyen
BACKLASH = 0.000

# A minimum szoftveres végállás határ az adott tengelyen gépi mértékegységben
# Ha ezt a határtétéket a gép eléri akkor beszünteti a tengely mozgását.
MIN_LIMIT = -1000.0

# A maximum szoftveres végállás határ az adott tengelyen gépi mértékegységben
# Ha ezt a határtétéket a gép eléri akkor beszünteti a tengely mozgását.
MAX_LIMIT = 1000.0

# Az a gépi mértékegységekban kifejezett érték.
# Azt a legkisebb elfogadható eltérést határozza meg amennyivel
# az adott tengely eltérhet a vezérelt pozíciótól nagyon alacsony sebesség esetén.
# Ha a A MIN_FERROR kisebb mint az FERROR akkor a kettő együtt egy hibaút pontokból álló rámpát alkot
# Ezt úgy kell elképzelni, mint egy függvényt, amelynek az egyik kiterjedése a sebesség a másik
# pedig a megengedett útvonal hiba. Ahogy nő a sebssség, úgy nő a megengedett hiba is.
MIN_FERROR = 0.254

# A maximális megengedhető követési hiba mértéke.
# Ha a vezérelt és érzékelt pozíció közötti eltérés nagyobb mint az
# FERROR értéke akkor a vezérlés letiltja a servo számításokat, nullázza a kimeneteket
# és letiltja az erõsítõket.
FERROR = 1.270

#################### Referencia pontok ###########################
# A referencia pont felvétele után a tengely ezt az érétket veszi fel.
HOME = 0.000

# A referencia kapcsoló vagy index jel eltolása az adott tengelyen
# gépi mértékegységben megadva
HOME_OFFSET = 0.0

# A referencia pozíció keresésének sebessége
# gépi mértékegység/másodpercben. Az elõjel jelzi a keresés irányát.
# A zéró értéke azt jelenti, hogy a gép az adott pozícióban a referencia ponton áll.
# Ha nincs a gépén refrencia kapcoló akkor ez a beállítás szükésges lehet.
HOME_SEARCH_VEL = 0.0

# A referencia pozíció keresésének sebessége a referencia kapcsoló
# másodszori közelítésekor (azonos vagy ellenkezõ irányból)
HOME_LATCH_VEL = 0.0

# Amennyiben az enkóderen van index jel és a mozgásvezérlõ kárty támogatja azt,
# ez az index jel felhasználható a pontos referencia felvételhez
HOME_USE_INDEX = NO

# Némely gépen a referenci és végállás kapcsoló egyben van megvalósítva.
# Ilyen esetben ezt a paramétert “YES”-re kell állítani.
HOME_IGNORE_LIMITS = NO

# Ha több tengely refrencia kapcsolója sorba van fûzve egy bemenetre
# akkor az itt beállított “1″ érték esetén a referencia keresés nem folytatódik
# ha már egy kapcsoló zárva van. Állítsa a paraméter zéróra,
# ha a referencia keresést engedéylezi zárt kapcsoló esetén.
#HOME_IS_SHARED = 0

# A “Home All” funkció a tengelyek referencia felvételi sorrendjét határozza meg.
# A számozásnak 0-tól kell kezdõdnie és számot nem lehet átugrani.
# “-1″ azt jelenti, hogy az adott tengely kimarad a referencia felvételbõl.
# Több tengelyen is lehet egyszerre referencia pozíciót felvenni.
HOME_SEQUENCE = 0

######################### Léptetőmotorok ########################
# Az egy gépi mértékegység (mm vagy inch) megtételéhez szükséges
# léptetõ motorok esetén léptetõ impulzusok servo esetén visszacsatolási
# (feedback) impulzusok számát határozza meg.
# Rövid példa:
# Léptetõ motorok: 1.8 fok/lépés azaz 200 lépés/fordulat
# Mikrolépés: 4
# Golyós orsó 16/5 azaz 5mm menetemelkedés fordulatonként
# Áttétel: 1:3 (motor:hajtott tengely)
# SCALE = 200*4*3/5 = 2400/5 = 480
SCALE = 480

# Ne változtassa meg!!!
OUTPUT_SCALE = 1.000

#+ Second axis
[AXIS_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 500.0
STEPGEN_MAXACCEL = 520.0
BACKLASH = 0.000
SCALE = 200
OUTPUT_SCALE = 1.000
MIN_LIMIT = -1000.0
MAX_LIMIT = 1000.0
FERROR = 1.270
MIN_FERROR = 0.254
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
#+ Third axis
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 500.0
STEPGEN_MAXACCEL = 520.0
BACKLASH = 0.000
SCALE = 200
OUTPUT_SCALE = 1.000
MIN_LIMIT = -1000.0
MAX_LIMIT = 1000.0
FERROR = 1.270
MIN_FERROR = 0.254
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO

###################### ki/bemeneti eszközök #######################
[EMCIO]
# Az be/kimeneti vezérlést végzõ modul neve.
# Ne változtassa meg!!!
#- Name of IO controller program, e.g., io
EMCIO = io

#- cycle time, in seconds
# Ne változtassa meg!!!
CYCLE_TIME = 0.100

# A szerszám tábla fájl neve és elérési útvonala
TOOL_TABLE = stepper.tbl
# A szerszámcsere pozíziója (X, Y, Z), ide fog elmozdulni a gép a szerszámcsere elõtt
TOOL_CHANGE_POSITION = 0 0 20

# A Z tengelyen a fõorsó a gépi nullpontra áll szerszámcsere elõtt
TOOL_CHANGE_QUILL_UP = 1

# A gép a szerszámcsere elõtt elmegy az 5181-5186 paraméterek által definiált pozícióba.
# Ez egyenértékû a G30 paranccsal.
#TOOl_CHANGE_AT_G30 = 1

# A szerszámcsere végrehajtása bekapcsolt fõorsónál.
# Eszterga esetén lehet hasznos
TOOL_CHANGE_WITH_SPINDLE_ON = 1

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

Első lépések a LinuxCNC-vel

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