19. fejezet - HAL beállítások

Tartalom
19.1. Encoder
19.1.1. Pinek:
19.1.2. Paraméterek:
19.1.3. HAL példa
19.2. Stepgen modul
19.2.1. Pinek:
19.2.2. Paraméterek:
19.2.3. HAL példa:
19.3. AXIS DAC (digital-to-analogue konverter)
19.3.1. Pinek:
19.3.2. Paraméterek:
19.4. Engedélyező és Hiba jelek
19.4.1. Pinek:
19.5. Watchdog timer
19.5.1. Pinek:
19.5.2. Paraméterek:
19.6. GM-CAN
19.6.1. Pinek:
19.6.2. Paraméterek:
19.7. Home és Limit kapcsolók
19.7.1. Pinek:
19.8. Vészmegállító bemeneti jelek
19.8.1. Pinek:
19.9. Általános célú I/O (be- és kimenetek)
19.9.1. Pinek:
19.9.2. Paraméterek:

Ebben a fejezetben minden a rendszerhez lényeges hall beállítás megtalálható, kivéve az RS485 buszon lévő moduloké.Azokhoz a modulokhoz a következő fejezetben találhatóak.

Az összes pin és ezen fejezet paraméterei kiegészülnek a következő két fügvénnyel:

gm.<nr. of card>.read

gm.<nr. of card>.write

A legtöbb alkalmazásnál mindkettőt hozzá kell adni a szervo thread-hez (szál) adott sorrendben (először olvasás, utána írás).

19.1. Encoder

A mozgásszabályozó kártyának hat encoder modulja van. Mindegyiknek három csatornája van:

A-csatorna

B-csatorna

I(index)-csatorna.

Képes négyszög encoder jelek és Step/Dir számolására.Mindegyik encoder modul a megfelelő RJ50 csatlakozóhoz van csatlakoztatva.

Minden encoder pin és paraméter neve a következővel kezdődik:

gm.<nr. of card>.encoder.<nr of axis>,ahol <nr of axis> 0-tól 5-ig van.

Például: gm.0.encoder.0.position►az encoder modul 0-s tengelyének helyzetére utal.

A PCI kártya a LinuxCNC-től függetlenül számolja az encoder jeleket.A hal pinek a gm.<nr of card>.read függvénnyel frissíthetőek.

19.1.1. Pinek:

.reset(bit, In)► Ha Igaz állapotban van, újraindítja a számlálót és a pozíciót 0-ra.

.rawcounts(s32, Out)► A raw count a számlálóban, de érzéketlen a resetre vagy az index impulzusra.

.counts(s32, Out)► Pozíció az encoder számlálóban.

.position(float, Out)► Pozíció léptékezett egységekben (mértékegységben) (=.counts/.position-scale).

.index-enabled(bit, IO) ►Ha Igaz, a számlálót és a pozíciót kerekíti, vagy visszaállítja 0-ra (az index-módtól függ) az I-csatorna következő felfutó élére.Ha a index állította vissza az értéket,akkor az index-enabled pin is 0 lesz, mindaddig amíg a kapcsolt hal pin el nem állítja azt.

.velocity(float, Out) ► Sebesség léptékezett egységek per másodpercben.A GM encoder magas frekvenciás hardware számlálót használ az encoder impulzusok között, hogy kiszámítsa a sebességet a mért időből.Ez nagyban lecsökkenti a kvantálási zajt az egyszerűen differenciált pozíció kimenethez képest.Ha a mért sebesség a min-velocity-estimate alatt van, akkor a sebesség kimenete 0.

19.1.2. Paraméterek:

.counter-mode(bit, R/W)► Ha Igaz, a számláló számolja az A-csatorna bemenetének minden egyes felfutó élét a B-csatorna által meghatározott irány alapján.Ez hasznos az egycsatornás (nem kvadratikus) vagy az impulzus jelszenzor kimenetének számolására.Ha hamis, akkor kvadratikus módban számol.

.index-mode(bit, R/W)► Ha Igaz és az .index-enabled is igaz, akkor a .counts és a .position kerekítve lesz(.counts-per-rev-től függ) az I-csatorna felfutó élénél. Ez hasznos néhány impulzus hiba kijavítására, amit a zaj okoz.Round módban elengedhetetlen a.counts-per-rev paraméter korrekt beállítása.Ha az .index-mode Hamis és az .index-enabled igaz, akkor a .counts és a .position törlődik az I-csatorna impulzusánál.

.counts-per-rev(u32, R/W)► Meghatározza, hogy mennyi számolás (impulzus) van két index impulzus között. Csak kerekítéses módban használják, tehát ha mind az .index-enabledés.index-mode paraméterek Igazak. A GM encoder az encoder jelét 4x módban dolgozza fel, tehát például egy 500 CPR encodernél 2000-re kell állítani. Ez a paraméter könnyen mérhető az .index-enabled Igazra és az .index-mode Hamisra állításával (vagyis a .counts törlődik az I-csatorna impulzusára), így a tengely kézzel elmozdítható és látható a .counts pin maximuma a halmeter-en.

.index-invert(bit, R/W)► Ha Igaz, az I-csatornás esemény (törlés vagy kerekítés) az I-csatorna jelének lefutó élére történik, külöben pedig a felfutó élre.

.min-speed-estimate(float, R/W)► Meghatározza azt a minimális sebesség értéket, amelynél a .velocitynem nullára lesz állítva. Ezt a paramétert túl alacsonyra állítva hosszú időbe telhet, mire a sebesség nulla lesz az encoder impulzusok megállása után.

.position-scale(float, R/W)►A skálázás számolás (impulzus) per hosszúság értékben. .position=.counts/.position-scale.Például ha a position-scale 2000, akkor 1000 encoder számlálás 0.5-ös pozíció egységeket fog alkotni.

19.1.3. HAL példa

Állítsuk a 0-ás encoder modult hogy 500 CPR kvadratikus jelet fogadjunk. Használjuk a reset-et a pozíció kerekítéséhez:

setp gm.0.encoder.0.counter-mode 0# 0: quad, 1: Step/Dir

setp gm.0.encoder.0.index-mode 1# 0: törli a pozíciót az indexnél, 1:kerekíti a pozíciót az indexnél

setp gm.0.encoder.0.counts-per-rev 2000# GM encoder 4x módban, 4x500=2000

setp gm.0.encoder.0.index-invert 0
setp gm.0.encoder.0.min-speed-estimate 0.1#pozícióegység/s-ben
setp gm.0.encoder.0.position-scale 20000#10 encoder fordulat esetén a gép egy pozícióegységet mozog (10x2000)
Az encoder pozícióját a LinuxCNC pozíciójának visszacsatolásához csatlakoztatja:
net Xpos-fb gm.0.encoder.0.position => axis.0.motor-pos-fb

19.2. Stepgen modul

A mozgásszabályozó kártyának hat stepgen modulja van,egy minden tengelyhez. Mindegyiknek két kimeneti jele van. Step/Direction, Up/Down vagy Kvadratikus (A/B) impulzusok előállítására képes. Mindegyik stepgen modul a megfelelő RJ50 csatlakozó pinjeihez van kapcsolva.

Az összes stepgen pin és paraméter neve a következővel kezdődik:

gm.<nr. of card>.stepgen.<nr of axis>,ahol a tengely nr-je 0-tól 5-ig lehet.

Például: gm.0.stepgen.0.position-cmd►a 0. kártya 0. tengelyén lévő stepgen moduljának a pozíció parancsára utal.

A PCI kártya step impulzusokat generál LinuxCNC-től függetlenül. A hal pinek agm.<nr of card>.write függvénnyel írhatók felül.

19.2.1. Pinek:

.enable(bit, In)► A stepgen csak akkor ad impulzusokat, ha ez a pin igaz.

.count-fb(s32, Out)► Pozíció visszacsatolás számítási egységekben.

.position-fb(float, Out)► Pozíció visszacsatolás pozíció egységekben.

.position-cmd(float, In)► Elvárt pozíció pozíció egységekben. Csak pozíció módban használható.

.velocity-cmd(float, In)► Elvárt sebesség pozícióegység/másodpercben.Csak sebesség módban használható.

19.2.2. Paraméterek:

.step-type(u32, R/W)►Ha 0, a modul Step/Dir jelet produkál. Ha 1, Up/Down ugrás jeleket produkál. És ha 2, kvadratikus kimenő jeleket produkál.

.control-type(bit, R/W)►Ha Igaz, a .velocity-cmd-t referenciaként használják és a sebesség vezérlő a kimenet frekvenciáját megfelelően állítja. Ha Hamis, a.position-cmd-t használják referenciaként és a pozíció vezérlő számolja a kimenet frekvenciáját.

.invert-step1(bit, R/W)►Invertálja az 1-es csatorna kimenetét (Ugrás jel StepDir módban)

.invert-step2(bit, R/W)►Invertálja az 2-es csatorna kimenetét (Dir jel StepDir módban)

.maxvel(float, R/W)► Maximális sebesség pozícióegység/másodperc-ben. Ha 0.0-ra van állítva, akkor a.maxvel paraméter nincs figyelembe véve.

.maxaccel(float, R/W)►Maximális gyorsulás pozíció/másodperc2-ben. Ha 0.0-ra van állítva, akkor a .maxaccel paraméter nincs figyelembe véve.

.position-scale(float, R/W)►Skálázás lépés/hosszúságegység-ben.

.position-fb=.count-fb/.position-scale.Például ha a position-scale 1000, akkor 1 pozícióegység vezérlés 1000 lépés impulzust eredményez.

.steplen(u32, R/W)►A lépés impulzus hossza nano-szekundumokban.

.stepspace(u32, R/W)►Minimális idő két impulzusugrás között nano-szekundumokban.

.dirdelay(u32, R/W)►Minimális idő impulzusugrás és irányváltás között nano-szekundumokban.

A megfelő értékek beállításához segítséget nyújt az alábbi időzítési diagramok:

Step/Dir típusú referencia
19.1. ábra - Step/Dir típusú referencia


Up/Down számlálási (CW/CCW) referencia
19.2. ábra - Up/Down számlálási (CW/CCW) referencia


Kvadratikus (A/B) típusú referencia
19.3. ábra - Kvadratikus (A/B) típusú referencia


19.2.3. HAL példa:

Állítsuk a 0-ás stepgen modult, hogy 1000 lépés impulzust generáljon pozícióegységenként:

setp gm.0.stepgen.0.step-type 0# 0:stepDir,1:UpDown,2:Quad

setp gm.0.stepgen.0.control-type 0# 0:Pozíció vezérlés,1:Sebesség vezérlés

setp gm.0.stepgen.0.invert-step1 0

setp gm.0.stepgen.0.invert-step2 0

setp gm.0.stepgen.0.maxvel 0# ne állítsa be a maximumvelocity-t a stepgenhez, hagyja, hogy az interpolátor vezérelje.

setp gm.0.stepgen.0.maxaccel 0# ne állítsa be a maximális gyorsulást a stepgenhez, hagyja, hogy az interpolátor vezérelje.

setp gm.0.stepgen.0.position-scale 1000# 1000 lépés/pozícióegység

setp gm.0.stepgen.0.steplen 1000# 1000 ns = 1 us

setp gm.0.stepgen.0.stepspace1000# 1000 ns = 1 us

setp gm.0.stepgen.0.dirdelay 2000# 2000 ns = 2 us

Csatlakoztassa a stepgent a 0-s tengely pozíció referenciához és engedélyezze a pineket:

net Xpos-cmd axis.0.motor-pos-cmd => gm.0.stepgen.0.position-cmd
net Xen axis.0.amp-enable-out => gm.0.stepgen.0.enable

19.3. AXIS DAC (digital-to-analogue konverter)

A mozgásszabályozó kártyának hat soros AXIS DAC driver modulja van, egy minden tengelyhez. Mindegyik modul a megfelelő RJ50 csatlakozó pinjéhez van kapcsolva.

Minden axis DAC pin and paraméter neve a következővel kezdődik:

gm.<nr. of card>.dac.<nr of axis>,ahol a tengely nr-je 0-tól 5-ig lehet.

Például:gm.0.dac.0.value►a 0-s tengely DAC moduljának kimeneti feszültségére utal

A hal pinek agm.<nr of card>.write függvénnyel írhatók felül.

19.3.1. Pinek:

.enable(bit, In)►Engedélyezi a DAC kimenetét. Ha false-on van, akkor a DAC kimenete 0.0 V.

.value(float, In)► A DAC kimenet értéke Voltban.

19.3.2. Paraméterek:

.offset(float, R/W)►Offset hozzáadódik az értékhez, mielőtt a hardware frissül

.high-limit(float, R/W)►Maximális kimenő feszültsége a hardware-nek voltban.

.low-limit(float, R/W)►Minimális kimenő feszültsége a hardware-nek voltban.

.invert-serial(float, R/W)►A PCI kártya a DAC hardware-rel gyors soros kommunikációs protokollal kommunikál, hogy csökkentse az időkésést a PWM-hez képest. A DAC modulokat ajánlott elkülöníteni, ha negálják a soros kommunikációs vonalat.Elszigeteléskor hagyjuk ezt a paramétert alapértelmezetten (0), míg ha nincsen elszigetelés, állítsuk 1-re.

19.4. Engedélyező és Hiba jelek

A PCI mozgásszabályozó kártyának egy engedélyező kimenetű és egy hiba bemenetű HAL pinje van, melyek minden RJ50 AXIS csatlakozón és CAN csatlakozón megtalálható.

A HAL pinek agm.<nr of card>.read függvénnyel frissíthetőek.

19.4.1. Pinek:

gm.<nr of card>.power-enable(bit, In)►Ha ez a pin Igaz,

és a Watch Dog Timer nem járt le

és nincs táp ellátás hiba

Akkor az adott tengely és CAN csatlakozók power enable pinjei magasra vannak állítva, különben alacsonyra.

gm.<nr of card>.power-fault(bit, Out)►táp hiba bemenet

19.5. Watchdog timer

A watchdog timer agm.<nr of card>.read függvénnyel indítható újra.

19.5.1. Pinek:

gm.<nr of card>.watchdog-expired(bit, Out)►Jelzi, ha a watchdog timer lejárt.

A watchdog timer túlfutása a power-enable alacsonyra állítását eredményezi a hardware-ben.

19.5.2. Paraméterek:

gm.<nr of card>.watchdog-enable(bit, R/W)►Engedélyezi a watchdog timert.

Erősen ajánlott a watchdog timer engedélyezése, mivel egy PC hiba esetén lekapcsolhatja az összes szervo erősítőt az engedélyező jelek lehúzásával.

gm.<nr of card>.watchdog-timeout-ns(u32, R/W)►Ezen időintervallumon belül kell a gm.<nr of card>.read függvényt végrehajtani. Agm.<nr of card>.read általában hozzá van adva a servo-thread-hez, így a watch időtúllépése általában a szervo periódus 3-szorosára van állítva.

19.6. GM-CAN

A mozgásszabályozó kártyának van egy CAN modulja, hogy vezérelje a CAN servo erősítőket. Magasabb szintű protokollok megvalósítása, mint a CANopen, a további fejlesztés része. Mostanában a GM által készített teljesítmény erősítőknek magasabb szintű vezérlője van, amely exportálja a pineket és a paramétereket a HAL-nak.Amik a CAN buson keresztül kapják meg a pozíció referenciát és oldják meg az encoder visszacsatolást.

Minden CAN pin és paraméter neve a következővel kezdődik:

gm.<nr. of card>.can-gm.<nr of axis>,ahol <nr of axis>0-tól 5-ig lehet.

Pédául:gm.0.can-gm.0.position►a 0-s tengely kimenetének pozíciójának pozícióegységekben való megadására utal.

A HAL pinek agm.<nr of card>.write függvénnyel írhatók felül.

19.6.1. Pinek:

.enable(bit, In)►Engedélyezi a pozíció referenciák küldését

.position-cmd(float, In)►Vezérelt pozíció pozícióegységekben.

.position-fb(float, Out)►Visszacsatolt pozíció pozícióegységekben.

19.6.2. Paraméterek:

.position-scale(float, R/W)►Skálázás per unit-ban (hosszegység)

.position-fb=.encoder-counts/.position-scale

Például, ha a position-scale 1000, akkor 2000 encoder impulzus a GM teljesítményerősítőn 2-t eredményez a position-fb pinen.

19.7. Home és Limit kapcsolók

A PCI mozgásszabályozónak két limit- és egy homing kapcsoló bemenete van minden tengelyhez. Az összes pin neve a következővel kezdődik:

gm.<nr. of card>.axis.<nr of axis>,ahol a tengely nr-je 0-tól 5-ig lehet.

Például:gm.0.axis.0.home-sw-ina 0-s tengely home kapcsolójának állapotát jelzi.

A HAL-pinek agm.<nr of card>.read függvénnyel frissíthetőek.

19.7.1. Pinek:

.home-sw-in(bit, Out)► Home kapcsoló bemenete

.home-sw-in-not(bit, Out)► Negált home kapcsoló bemenete

.neg-lim-sw-in(bit, Out)► Negatív limit kapcsoló bemenete

.neg-lim-sw-in-not(bit, Out)►Negált negatív limit kapcsoló bemenete

.pos-lim-sw-in(bit, Out)► Pozitív limit kapcsoló bemenete

.pos-lim-sw-in-not(bit, Out)►Negált pozitív limit kapcsoló bemenete

19.8. Vészmegállító bemeneti jelek

A home és limit kapcsolókon túl még két vészmegállító (E-Stop) bemenet van, amely érzékeli, hogy az E-Stop gomb be van-e nyomva.

19.8.1. Pinek:

gm.0.estop.0.in-0(bit, Out)► Estop 0 bemenet

gm.0.estop.0.in-not-0(bit, Out)► Negált Estop 0 bemenet

gm.0.estop.0.in-1(bit, Out)► Estop 1 bemenet

gm.0.estop.0.in-not-1(bit, Out)► Negált Estop 1 bemenet

19.9. Általános célú I/O (be- és kimenetek)

A hattengelyű GM mozgásszabályozó kártyának 4 általános célú I/O (GPIO) csatlakozója van, nyolc állítható I/O-val mindegyiken.

Minden GPIO pin és paraméter neve a következővel kezdődik:

gm.<nr. of card>.gpio.<nr of gpio con>,ahol<nr of gpio con> 0-tól 3-ig lehet.

Például:gm.0.gpio.0.in-0a PCI kártyán lévő első GPIO csatlakozó első pinjének állapotát jelzi.

A HAL-pinek agm.<nr of card>.read függvénnyel frissíthetőek.

19.9.1. Pinek:

.in-<0-7>(bit, Out)►Bemenet pin

.in-not-<0-7>(bit, Out)►Negált bemenet pin

.out-<0-7>(bit, In)►Kimenet pin. Csak akkor használható, ha a GPIO kimenetre van állítva.

19.9.2. Paraméterek:

.is-out-<0-7>(bit, R/W)►Ha Igaz, akkor a megfelelő GPIO-t totem-pole kimenetre állítja, máskülönben magas impedenciás bemenetre állítja.

.invert-out-<0-7>(bit, R/W)►Ha Igaz, a pin értéke invertálva lesz. Akkor használható, ha a pin kimenetre van állítva.