General Mechatronics GM6-PCI-Kartenbasiertes Bewegungssteuerungssystem (engl. Motion-Control-System)

Eine ausführliche Beschreibung finden Sie im Systemintegrationshandbuch.

Die GM6-PCI-Bewegungssteuerungskarte basiert auf einem FPGA und einem PCI-Bridge-Interface-ASIC. Eine kleine automatisierte Fertigungszelle kann mit einem kurzen Systemintegrationsverfahren gesteuert werden. Die folgende Abbildung zeigt den typischen Anschluss von Geräten im Zusammenhang mit dem Steuerungssystem:

  • Er kann bis zu sechs Achsen steuern, jede davon kann eine Schrittmotor- oder CAN-Bus-Schnittstelle oder ein analoger Servo sein.

  • GPIO: Vier bzw. acht E/A-Pins sind auf Standard-Flachkabelsteckern untergebracht.

  • RS485 E/A-Erweiterungsmodule: Der RS485-Bus wurde für den Anschluss von kompakten Erweiterungsmodulen für die DIN-Schienenmontage entwickelt. Ein 8-Kanal-Digitaleingang, ein 8-Kanal-Relaisausgang und ein analoges I/O-Modul (4x +/-10 Volt Ausgang und 8x +/-5 Volt Eingang) sind jetzt verfügbar. Insgesamt können bis zu 16 Module an den Bus angeschlossen werden.

  • 20 optisch isolierte Eingangspins: Sechs mal drei für den direkten Anschluss von zwei Endschaltern und einem Referenzierungssensor für jedes Gelenk. Und zusätzlich zwei optisch isolierte Notaus-Eingänge.

GM-Servosteuerungssystem

Installation:

loadrt hal_gm

Während des Ladens (oder versuchten Ladens) gibt der Treiber einige nützliche Debugging-Meldungen in das Kernel-Protokoll aus, die mit dmesg eingesehen werden können.

Es können bis zu 3 Karten in einem System verwendet werden.

Die folgenden Anschlüsse befinden sich auf der GM6-PCI-Karte:

GM6-PCI-Kartenanschlüsse und LEDs
Abbildung 1. GM6-PCI-Kartenanschlüsse und LEDs

1. I/O-Anschlüsse

Pin-Nummerierung der GPIO-Anschlüsse
Abbildung 2. Pin-Nummerierung der GPIO-Anschlüsse
Tabelle 1. Belegung der GPIO-Anschlüsse
9 7 5 3 1

IOx/7

IOx/5

IOx/3

IOx/1

VCC

10 8 6 4 2

GND

IOx/6

IOx/4

IOx/2

IOx/0

Jeder Pin kann als digitaler Eingang oder Ausgang konfiguriert werden. Die GM6-PCI-Bewegungssteuerungskarte verfügt über 4 GPIO-Anschlüsse (General Purpose I/O) mit jeweils acht konfigurierbaren E/A. Jeder GPIO-Pin und Parametername beginnt wie folgt:

gm.<card_no>.gpio.<gpio_con_no>

wobei <gpio_con_no> zwischen 0 und 3 liegt.

Zustand des ersten Pins des ersten GPIO-Anschlusses auf der GM6-PCI-Karte an.
gm.0.gpio.0.in-0

HAL Pins werden aktualisiert durch Funktion

gm.<card_no>.read

1.1. Pins

Tabelle 2. GPIO-Pins
Pins Typ und Richtung Pin-Beschreibung

.in-<0-7>

(bit, Out)

Input-Pin (wörtlich Eingabe-Pin)

.in-not-<0-7>

(bit, Out)

Negierter Eingangspin

.out-<0-7>

(bit, In)

Ausgangspin. Wird nur verwendet, wenn GPIO auf Ausgang eingestellt ist.

1.2. Parameter

Tabelle 3. GPIO-Parameter
Pins Typ und Richtung Parameterbeschreibung

.is-out-<0-7>

(bit, R/W)

Bei True wird der entsprechende GPIO auf Totem-Pol-Ausgang gesetzt, andernfalls auf hochohmigen Eingang.

.invert-out-<0-7>

(bit, R/W)

Wenn True, wird der Wert des Pins invertiert. Wird verwendet, wenn der Pin als Ausgang konfiguriert ist.

2. Achsen-Anschlüsse

Pin-Nummerierung der Achsenanschlüsse
Abbildung 3. Pin-Nummerierung der Achsenverbinder
Tabelle 4. Belegung der Achsanschlüsse

1

Encoder A

2

+5 Volt (PC)

3

Encoder B

4

Encoder-Index

5

Fehler

6

Stromversorgung aktiviert (engl. power enabled)

7

Schritt/gegen Uhrzeigersinn/B

8

Richtung/Uhrzeigersin/A

9

Masse (PC)

10

Serielle DAC-Leitung

2.1. Achsen-Schnittstellenmodule

Kleine, auf DIN-Schienen montierte Schnittstellenmodule ermöglichen den einfachen Anschluss verschiedener Servomodule an die Achsanschlüsse. Sieben verschiedene Systemkonfigurationen werden im Systemintegrationshandbuch vorgestellt, um typische Anwendungen zu evaluieren. Auch die detaillierte Beschreibung der Achsmodule ist im Systemintegrationshandbuch zu finden.

Zur Ermittlung der geeigneten Servoantriebsstruktur sind die Module wie im folgenden Blockschaltbild dargestellt zu verbinden:

Schnittstellen der Servoachsen
Abbildung 4. Servo-Achsen-Schnittstellen

2.2. Encoder

Die GM6-PCI-Bewegungssteuerungskarte verfügt über sechs Encoder-Module. Jedes Gebermodul hat drei Kanäle:

  • Kanal-A

  • Kanal-B

  • Kanal-I (Index)

Es ist in der Lage, Quadratur-Encoder-Signale oder Schritt-/Taktsignale zu zählen. Jedes Encoder-Modul wird an die Eingänge des entsprechenden RJ50-Achsenanschlusses angeschlossen.

Jeder Encoder-Pin und Parametername beginnt wie folgt:

gm.<card_no>.encoder.<axis_no>

wobei <axis_no> zwischen 0 und 5 liegt. Beispielsweise bezieht sich „gm.0.encoder.0.position“ auf die Position des Encodermoduls von Achse 0.

Die GM6-PCI-Karte zählt das Gebersignal unabhängig von LinuxCNC. HAL-Pins werden nach Funktion aktualisiert:

gm.<card_no>.read
Tabelle 5. Encoder-Pins
Pins Typ und Richtung Pin-Beschreibung

.reset

(bit, In)

Wenn True, setzt Anzahl und Position auf Null zurück.

.rawcounts

(s32, Out)

Die "raw counts" ist dieselbe Zählung, aber unbeeinflusst von der Rückstellung oder dem Indeximpuls.

.counts

(s32, Out)

Position in Encoder-Zählungen (engl. counts).

.position

(float, Out)

Position in skalierten Einheiten (=.counts/.position-scale).

.index-enabled

(bit, IO)

Wenn True, werden Zählerstände und Position bei der nächsten steigenden Flanke von Kanal-I gerundet oder zurückgesetzt (abhängig vom Index-Modus). Jedes Mal, wenn die Position aufgrund von Index zurückgesetzt wird, dann wird der index-enabled-Pin auf 0 gesetzt und bleibt 0, bis der angeschlossene HAL-Pin ihn nicht mehr setzt.

.velocity

(float, Out)

Geschwindigkeit in skalierten Einheiten pro Sekunde. Der GM-Encoder verwendet einen Hochfrequenz-Hardware-Timer zur Messung der Zeit zwischen den Encoderimpulsen, um die Geschwindigkeit zu berechnen. Dadurch wird das Quantisierungsrauschen im Vergleich zur einfachen Differenzierung des Positionsausgangs erheblich reduziert. Wenn die gemessene Geschwindigkeit unter der geschätzten Mindestgeschwindigkeit liegt, ist der Geschwindigkeitsausgang 0.

Tabelle 6. Encoder-Parameter
Parameter Typ und Lesen/Schreiben Parameterbeschreibung

.counter-mode

(bit, R/W)

Bei True zählt der Zähler jede ansteigende Flanke des Kanal-A-Eingangs in die durch Kanal-B bestimmte Richtung. Dies ist nützlich für die Zählung des Ausgangs eines Einkanal- (Nicht-Quadratur-) oder Schritt-/Differenzsignalsensors. Wenn False, zählt er im Quadraturmodus.

.index-mode

(bit, R/W)

Wenn True und .index-enabled ebenfalls True ist, werden .counts und .position gerundet (basierend auf .counts-per-rev) bei der steigenden Flanke von Kanal-I. Dies ist nützlich, um durch Rauschen verursachte Fehler bei wenigen Impulsen zu korrigieren. Im Rundungsmodus ist es wichtig, dass der Parameter .counts-per-rev korrekt eingestellt ist. Wenn .index-mode auf False und .index-enabled auf True steht, werden .counts und .position beim Kanal-I-Impuls zurückgesetzt.

.counts-per-rev

(s32, R/V)

Bestimmt, wie viele Zählungen zwischen zwei Indeximpulsen liegen. Er wird nur im runden Modus verwendet, d.h. wenn die Parameter .index-enabled und .index-mode beide auf True stehen. GM-Encoder verarbeiten das Encodersignal im 4x-Modus, d.h. im Falle eines 500 CPR Encoders sollte er auf 2000 gesetzt werden. Dieser Parameter kann leicht gemessen werden, indem man .index-enabled True und .index-mode False setzt (so dass .counts bei Kanal-I-Impuls zurücksetzt), dann die Achse von Hand bewegen und die maximale Größe des .counts-Pins im Halmeter sehen.

.index-invert

(bit, R/W)

Wenn True, tritt das Kanal-I-Ereignis (Reset oder Round) bei der fallenden Flanke des Kanal-I-Signals ein, andernfalls bei der steigenden Flanke.

.min-speed-estimate

(float, R/W)

Legen Sie den minimalen gemessenen Geschwindigkeitswert fest, bei dem .velocity als ungleich Null gesetzt wird. Wird dieser Parameter zu niedrig eingestellt, dauert es sehr lange, bis die Geschwindigkeit auf Null geht, nachdem keine Encoderimpulse mehr ankommen.

.position-scale

(float, R/W)

Skala in Zählungen pro Längeneinheit. .position=.counts/.position-scale. Wenn z. B. der Positionsmaßstab 2000 ist, dann ergeben 1000 Zählungen des Encoders eine Position von 0,5 Einheiten.

Einstellung des Gebermoduls der Achse 0 für den Empfang des 500 CPR Quadraturgebersignals und Verwendung der Rückstellung zum Runden der Position.
setp gm.0.encoder.0.counter-mode 0 # 0: quad, 1: stepDir
setp gm.0.encoder.0.index-mode 1 # 0: reset pos at index, 1:round pos at index
setp gm.0.encoder.0.counts-per-rev 2000 # GM-Prozess-Encoder im 4x-Modus, 4x500=2000
setp gm.0.encoder.0.index-invert 0 #
setp gm.0.encoder.0.min-speed-estimate 0.1 # in Positionseinheit/s
setp gm.0.encoder.0.position-scale 20000 # 10 Geberumdrehungen bewirken, dass sich die Maschine um eine Positionseinheit bewegt (10x2000)
Verbinden der Encoder Position mit LinuxCNC Gelenk-Position Feedback
net Xpos-fb gm.0.encoder.0.position => joint.0.motor-pos-fb

2.3. StepGen Modul

Die GM6-PCI-Bewegungssteuerungskarte verfügt über sechs StepGen-Module, eines für jedes Gelenk. Jedes Modul hat zwei Ausgangssignale. Es kann Schritt/Richtung-, Auf/Ab- oder Quadraturimpulse (A/B) erzeugen. Jedes StepGen-Modul wird an die Stifte des entsprechenden RJ50-Achsenanschlusses angeschlossen.

Jeder StepGen-Pin und Parametername beginnt wie folgt:

gm.<card_no>.stepgen.<axis_no>

wobei <axis_no> zwischen 0 und 5 liegt. Zum Beispiel bezieht sich gm.0.stepgen.0.position-cmd auf den Positionsbefehl des StepGen-Moduls der Achse 0 auf Karte 0.

Die GM6-PCI-Karte erzeugt unabhängig von LinuxCNC Schrittimpulse. Die HAL-Pins werden geupdatet durch die Funktion

gm.<card_no>.write
Tabelle 7. StepGen Modul Pins
Pins Typ und Richtung Pin-Beschreibung

.enable

(bit, In)

StepGen erzeugt nur dann Impulse, wenn dieser Pin "true" ist.

.count-fb

(s32, Out)

Positionsrückmeldung in Zähleinheiten.

.position-fb

(float, Out)

Positionsrückmeldung in Positionseinheit.

.position-cmd

(float, In)

Die befohlene Position in Positionseinheiten. Wird nur im Positionsmodus verwendet.

.velocity-cmd

(float, In)

Geforderte Geschwindigkeit in Positionseinheiten pro Sekunde. Wird nur im Geschwindigkeitsmodus verwendet.

Tabelle 8. StepGen-Modul-Parameter
Parameter Typ und Lesen/Schreiben Parameterbeschreibung

.step-type

(u32, R/W)

Bei 0 erzeugt das Modul ein Step/Dir-Signal. Wenn 1, erzeugt es Auf/Ab-Schritt-Signale. Und bei 2 erzeugt es Quadratur-Ausgangssignale.

.control-type

(bit, R/W)

Wenn True, wird .velocity-cmd als Referenz verwendet und velocityvcontrol berechnet die Pulsfrequenzausgabe. Bei False wird .position-cmd als Referenz verwendet und die Lageregelung berechnet den Impulsratenausgang.

.invert-step1

(bit, R/W)

Invertieren des Ausgangs von Kanal 1 (Step-Signal im StepDir-Modus)

.invert-step2

(bit, R/W)

Invertierung des Ausgangs von Kanal 2 (Dir-Signal im StepDir-Modus)

.maxvel

(float, R/W)

Maximale Geschwindigkeit in Positionseinheiten pro Sekunde. Wenn er auf 0,0 gesetzt ist, wird der Parameter .maxvel ignoriert.

.maxaccel

(float, R/W)

Maximale Beschleunigung in Positionseinheiten pro Sekunde zum Quadrat. Wenn er auf 0,0 gesetzt ist, wird der Parameter .maxaccel ignoriert.

.position-scale

(float, R/W)

Skala in Schritten pro Längeneinheit.

.steplen

(u32, R/W)

Länge des Schritt-Pulses (engl. step pulse) in Nanosekunden.

.stepspace

(u32, R/W)

Mindestzeit zwischen zwei Schrittimpulsen in Nanosekunden.

.dirdelay

(u32, R/W)

Mindestzeit zwischen Schrittimpuls und Richtungswechsel in Nanosekunden.

Zur Ermittlung der entsprechenden Werte siehe die nachstehenden Zeitdiagramme:

Zeitdiagramme für Referenzsignale
Abbildung 5. Referenzsignal-Zeitdiagramme
Einstellung des StepGen-Moduls der Achse 0 zur Erzeugung von 1000 Schrittimpulsen pro Positionseinheit
setp gm.0.stepgen.0.step-type 0         # 0:stepDir, 1:UpDown, 2:Quad
setp gm.0.stepgen.0.control-type 0      # 0:Pos. Kontrolle, 2:Geschw. Kontrolle
setp gm.0.stepgen.0.invert-step1 0
setp gm.0.stepgen.0.invert-step2 0
setp gm.0.stepgen.0.maxvel 0            # do not set maxvel for step
                                        # generator, let interpolator control it.
setp gm.0.stepgen.0.maxaccel 0          # do not set max acceleration for
                                        # step generator, let interpolator control it.
setp gm.0.stepgen.0.position-scale 1000 # 1000 step/position unit
setp gm.0.stepgen.0.steplen 1000        # 1000 ns = 1 µs
setp gm.0.stepgen.0.stepspace1000       # 1000 ns = 1 µs
setp gm.0.stepgen.0.dirdelay 2000       # 2000 ns = 2 µs
Verbinden Sie StepGen mit den Positionsreferenz- und Freigabepins der Achse 0
net Xpos-cmd joint.0.motor-pos-cmd => gm.0.stepgen.0.position-cmd
net Xen joint.0.amp-enable-out => gm.0.stepgen.0.enable

2.4. Freigabe- und Fehlersignale

Die GM6-PCI-Bewegungssteuerungskarte verfügt über einen HAL-Pin als Freigabeausgang und einen als Fehlereingang , die beide mit jedem RJ50-Achsenanschluss und dem CAN-Anschluss verbunden sind.

HAL Pins werden durch Funktion aktualisiert:

gm.<card_no>.read
Tabelle 9. Aktivierungs- und Fehlersignal-Pins
Pins Typ und Richtung Pin-Beschreibung

gm.<card_no>.power-enable

(bit, In)

Wenn dieser Pin True ist,
* und der Watch Dog Timer nicht abgelaufen ist
* und es liegt kein Stromfehler vor
dann werden die Power-Enable-Pins der Achsen- und CAN-Anschlüsse auf High gesetzt, ansonsten auf Low.

gm.<card_no>.power-fault

(bit, Out)

Stromausfall-Eingang.

2.5. Achsen-DAC

Die GM6-PCI-Bewegungssteuerungskarte verfügt über sechs serielle Achsen-DAC-Treibermodule, eines für jedes Gelenk. Jedes Modul wird an den Pin des entsprechenden RJ50-Achsenanschlusses angeschlossen. Jeder Achsen-DAC-Pin und Parametername beginnt wie folgt:

gm.<card_no>.dac.<axis_no>

wobei <axis_no> zwischen 0 und 5 liegt. Zum Beispiel bezieht sich gm.0.dac.0.value auf die Ausgangsspannung des DAC-Moduls der Achse 0.

HAL Pins werden durch Funktion aktualisiert:

gm.<card_no>.write
Tabelle 10. Achsen DAC-Pins
Pins Typ und Richtung Pin-Beschreibung

.enable

(bit, In)

Aktiviert (engl. enables) den DAC-Ausgang. Wenn diese Freigabe auf falsch gesetzt ist, beträgt der DAC-Ausgang 0,0 V.

.value

(float, In)

Wert des DAC-Ausgangs in Volt.

Tabelle 11. Achsen-DAC-Parameter
Parameter Typ und Richtung Parameterbeschreibung

.offset

(float, R/W)

Der Offset wird zu dem Wert addiert, bevor die Hardware aktualisiert wird.

.high-limit

(float, R/W)

Maximale Ausgangsspannung der Hardware in Volt.

.Untergrenze

(float, R/W)

Minimale Ausgangsspannung der Hardware in Volt.

.invert-seriell

(float, R/W)

Die GM6-PCI-Karte kommuniziert mit der DAC-Hardware über schnelle serielle Kommunikation, um die Zeitverzögerung im Vergleich zur PWM stark zu reduzieren. Es wird empfohlen, das DAC-Modul zu isolieren, wodurch die serielle Kommunikationsleitung negiert wird. Im Falle einer Isolierung lassen Sie diesen Parameter auf dem Standardwert (0), während Sie diesen Parameter im Falle einer Nicht-Isolierung auf 1 setzen.

3. CAN-Bus-Servoverstärker

Die GM6-PCI Motion Control Karte verfügt über ein CAN-Modul zur Ansteuerung von CAN-Servoverstärkern. Die Implementierung von Protokollen auf höherer Ebene wie CANopen ist für eine zukünftige Entwicklung. Derzeit haben die von GM hergestellten Leistungsverstärker Treiber der oberen Ebene, die Pins und Parameter nach HAL exportieren. Sie empfangen Positionsreferenzen und liefern Encoder-Feedback über den CAN-Bus.

Die Frames sind Standard-ID-Frames (11 Bit) mit einer Datenlänge von 4 Byte. Die Baudrate beträgt 1 Mbit/s. Die Positionsbefehls-IDs für Achse 0..5 sind 0x10..0x15. Die Positionsrückmelde-IDs für Achse 0..5 sind 0x20..0x25.

Diese Konfiguration kann mit der Änderung der hal_gm.c und Neukompilierung LinuxCNC geändert werden.

Jeder CAN-Pin- und Parametername beginnt wie folgt:

gm.<card_no>.can-gm.<axis_no>

wobei < axis_no > zwischen 0 und 5 liegt. Zum Beispiel bezieht sich gm.0.can-gm.0.position auf die Ausgangsposition der Achse 0 in Positionseinheiten.

HAL Pins werden durch Funktion aktualisiert:

gm.<card_no>.write

3.1. Pins

Tabelle 12. CAN-Modul-Pins
Pins Typ und Richtung Pin-Beschreibung

.enable

(bit, In)

Aktivieren das Senden von Positionsreferenzen.

.position-cmd

(float, In)

Befohlene Position in Positionseinheiten.

.position-fb

(float, In)

Rückmeldung der Position in Positionseinheiten.

3.2. Parameter

Tabelle 13. CAN-Modul-Parameter
Parameter Typ und Richtung Parameterbeschreibung

.position-scale

(float, R/W)

Maßstab in Längeneinheiten.

4. Watchdog-Timer

Watchdog-Timer wird zurückgesetzt bei Funktion:

gm.<card_no>.read

4.1. Pins

Tabelle 14. Watchdog-Pins
Pins Typ und Richtung Pin-Beschreibung

gm.<card_no>.watchdog-expired

(bit, Out)

Gibt an, dass der Watchdog-Zeitgeber abgelaufen ist.

Das Überschreiten des Watchdog-Timers führt dazu, dass das Power-Enable in der Hardware auf Low gesetzt wird.

4.2. Parameter

Tabelle 15. Watchdog-Parameter
Parameter Typ und Richtung Parameterbeschreibung

gm.<card_no>.watchdog-enable

(bit, R/W)

Aktiviert den Watchdog-Timer.
Es wird dringend empfohlen, den Watchdog-Timer zu aktivieren, weil er im Falle eines PC-Fehlers alle Servoverstärker durch Herunterziehen aller Freigabesignale deaktivieren kann.

gm.<card_no>.watchdog-timeout-ns

(float, R/W)

Zeitintervall, in dem die Funktion gm.<card_no>.read ausgeführt werden muss. Die gm.<card_no>.read wird typischerweise dem Servo-Thread hinzugefügt, daher wird der Watch-Timeout typischerweise auf das 3-fache der Servoperiode gesetzt.

5. End-, Referenzpunkt- und Notaus-Schalter

Pin-Nummerierung des Anschlusses für Referenzfahrt und Endschalter
Abbildung 6. Pin-Nummerierung des Anschlusses für Referenzfahrt und Endschalter
Tabelle 16. Pinbelegung des End- und Referenzschalteranschlusses
25 23 21 19 17 15 13 11 9 7 5 3 1

GND

1/End-

2/End+

2/Hom-ing

3/End-

4/End+

4/Hom-ing

5/End-

6/End+

6/Hom-ing

Notaus 2

V+ (Ext.)

26 24 22 20 18 16 14 12 10 8 6 4 2

GND

1/End+

1/Hom-ing

2/End-

3/End+

3/Hom-ing

4/End-

5/End+

5/Hom-ing

6/End-

Notaus 1

V+ (Ext.)

Die GM6-PCI-Bewegungssteuerungskarte hat zwei Endschalter- und einen Referenzschaltereingang für jedes Gelenk. Die Namen dieser Pins beginnen wie folgt:

gm.<card_no>.joint.<axis_no>

wobei <axis_no> zwischen 0 bis 5 liegt. Beispiel: "gm.0.joint.0.home-sw-in" gibt den Zustand des Home-Schalters der Achse 0 an.

HAL Pins werden durch Funktion aktualisiert:

gm.<card_no>.read

5.1. Pins

Tabelle 17. End- und Referenzschalter-Pins
Pins Typ und Richtung Pin-Beschreibung

.home-sw-in

(bit, Out)

Eingang des Referenzschalters

.home-sw-in-not

(bit, Out)

Negierter Referenzschaltereingang

.neg-lim-sw-in

(bit, Out)

Negativer Endschaltereingang

.neg-lim-sw-in-not

(bit, Out)

Negierter negativer Endschaltereingang

.pos-lim-sw-in

(bit, Out)

Positiver Endschaltereingang

.pos-lim-sw-in-not

(bit, Out)

Negierter positiver Endschaltereingang

5.2. Parameter

Tabelle 18. Parameter des Notaus-Schalters
Parameter Typ und Richtung Parameterbeschreibung

gm.0.estop.0.in

(bit, Out)

Notaus0 Eingang

gm.0.estop.0.in-not

(bit, Out)

Negierter Notaus 0-Eingang

gm.0.estop.1.in

(bit, Out)

Notaus 1 Eingang

gm.0.estop.1.in-not

(bit, Out)

Negierter Notaus 1-Eingang

6. Status-LEDs

6.1. CAN

Farbe: Orange

  • Blinken während der Datenkommunikation.

  • Ein, wenn einer der Puffer voll ist - Kommunikationsfehler.

  • Aus, wenn keine Datenkommunikation stattfindet.

6.2. RS485

Farbe: Orange

  • Blinken während der Initialisierung von Modulen auf dem Bus

  • Ein, wenn die Datenkommunikation zwischen allen initialisierten Modulen hergestellt ist.

  • Aus, wenn eines der initialisierten Module aufgrund eines Fehlers ausgefallen ist.

6.3. EMC

Farbe: Weiß

  • Blinken, wenn LinuxCNC läuft.

  • Sonst aus.

6.4. Booten

Farbe: Grün

  • Ein, wenn das System erfolgreich gebootet wurde.

  • Sonst aus.

6.5. Fehler

Farbe: Rot

  • Aus, wenn keine Störung im System vorliegt.

  • Blinkt, wenn ein PCI-Kommunikationsfehler vorliegt.

  • Ein, wenn der Watchdog-Timer übergelaufen ist.

7. RS485 E/A-Erweiterungsmodule

Diese Module wurden für die Erweiterung der E/A- und Funktionsfähigkeit entlang einer RS485-Linie der GM6-PCI Motion Control Karte entwickelt.

Verfügbare Modultypen:

  • 8-Kanal-Relaisausgangsmodul - bietet acht NO-NC-Relaisausgänge an einem dreipoligen Klemmenanschluss für jeden Kanal.

  • 8-Kanal-Digitaleingangsmodul - bietet acht optisch isolierte digitale Eingangsstifte.

  • 8-Kanal-ADC- und 4-Kanal-DAC-Modul - bietet vier Digital-Analog-Wandler-Ausgänge und acht Analog-Digital-Eingänge. Auch dieses Modul ist von der GM6-PCI-Karte optisch isoliert.

Automatische Knotenerkennung

Jeder an den Bus angeschlossene Knoten wurde von der GM6-PCI-Karte automatisch erkannt. Beim Start von LinuxCNC exportiert der Treiber automatisch Pins und Parameter aller verfügbaren Module.

Fehlerbehandlung

Wenn ein Modul nicht regelmäßig antwortet, fährt die GM6-PCI-Karte das Modul herunter. Wenn ein Modul mit Ausgang nicht regelmäßig Daten mit korrektem CRC erhält, schaltet das Modul in den Fehlerzustand (grüne LED blinkt), und schaltet alle Ausgänge in den Fehlerzustand.

Verbinden der Knoten

Die Module auf dem Bus müssen in serieller Topologie angeschlossen werden, mit Abschlusswiderständen am Ende. Der Anfang der Topologie ist die PCI-Karte, und das Ende ist das letzte Modul.

Anschluss der RS485-Knoten an die GM6-PCI-Karte
Abbildung 7. Anschließen der RS485-Knoten an die GM6-PCI-Karte
Adressierung

Jeder Knoten am Bus hat eine eindeutige 4-Bit-Adresse, die mit einem roten DIP-Schalter eingestellt werden kann.

Status-LED

Eine grüne LED zeigt den Status des Moduls an:

  • Blinkt, wenn das Modul nur mit Strom versorgt, aber noch nicht erkannt wird, oder wenn das Modul fallengelassen wird.

  • Aus, während der Identifizierung (Computer ist eingeschaltet, aber LinuxCNC nicht gestartet)

  • Ein, wenn es kontinuierlich kommuniziert.

7.1. Relais-Ausgangsmodul

Informationen zu Pinbelegung, Anschluss und elektrischen Eigenschaften des Moduls finden Sie im Systemintegrationshandbuch.

Alle Pins und Parameter werden durch die folgende Funktion aktualisiert:

gm.<card_no>.rs485

Es sollte dem Servo-Thread oder einem anderen Thread mit größerer Periode hinzugefügt werden, um eine CPU-Überlastung zu vermeiden. Jeder RS485-Modul-Pin und Parametername beginnt wie folgt:

gm.<card_no>.rs485.<module ID>

wobei <Modul-ID> zwischen 00 und 15 liegt.

Tabelle 19. Pins des Relaisausgangsmoduls
Pins Typ und Richtung Pin-Beschreibung

.relay-<0-7>

(bit, Out)

Ausgangspin für Relais

Tabelle 20. Parameter des Relaisausgangsmoduls
Parameter Typ und Richtung Parameterbeschreibung

.invert-relay-<0-7>

(bit, R/W)

Relais-Ausgangsstift negieren

HAL-Beispiel
gm.0.rs485.0.relay-0 # Erstes Relais des Knotens.
#gm.0                    # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
#.      .rs485.0            # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
#.              .relay-0    # Auswahl des ersten Relais

7.2. Digitales Eingangsmodul

Informationen zu Pinbelegung, Anschluss und elektrischen Eigenschaften des Moduls finden Sie im Systemintegrationshandbuch.

Alle Pins und Parameter werden durch die folgende Funktion aktualisiert:

gm.<card_no>.rs485

Es sollte dem Servo-Thread oder einem anderen Thread mit größerer Periode hinzugefügt werden, um eine CPU-Überlastung zu vermeiden. Jeder RS485-Modul-Pin und Parametername beginnt wie folgt:

gm.<card_no>.rs485.<module ID>

wobei <Modul-ID> zwischen 00 und 15 liegt.

Tabelle 21. Pins des digitalen Eingangs-/Ausgangsmoduls
Pins Typ und Richtung Pin-Beschreibung

.in-<0-7>

(bit, Out)

Input-Pin (wörtlich Eingabe-Pin)

.in-not-<0-7>

(bit, Out)

Negierter Eingangspin

HAL-Beispiel
gm.0.rs485.0.in-0 # Erster Eingang des Knotens.
# gm.0                 # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
#      .rs485.0         # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
#              .in-0    # Wählt das erste digitale Eingangsmodul

7.3. DAC & ADC-Modul

Informationen zu Pinbelegung, Anschluss und elektrischen Eigenschaften des Moduls finden Sie im Systemintegrationshandbuch.

Alle Pins und Parameter werden durch die folgende Funktion aktualisiert:

gm.<card_no>.rs485

Es sollte dem Servo-Thread oder einem anderen Thread mit größerer Periode hinzugefügt werden, um eine CPU-Überlastung zu vermeiden. Jeder RS485-Modul-Pin und Parametername beginnt wie folgt:

gm.<card_no>.rs485.<module ID>

wobei <Modul-ID> zwischen 00 und 15 liegt.

Tabelle 22. DAC- & ADC-Modul-Pins
Pins Typ und Richtung Pin-Beschreibung

.adc-<0-7>

(float, Out)

Wert des ADC-Eingangs in Volt.

.dac-enable-<0-3>

(bit, In)

Aktivieren Sie den DAC-Ausgang. Wenn enable false ist, wird der DAC-Ausgang auf 0,0 V gesetzt.

.dac-<0-3>

(float, In)

Wert des DAC-Ausgangs in Volt.

Tabelle 23. Parameter des DAC- & ADC-Moduls
Parameter Typ und Richtung Parameterbeschreibung

.adc-scale-<0-7>

(float, R/W)

Die Eingangsspannung wird mit der Skalierung multipliziert, bevor sie an den .adc-Pin ausgegeben wird.

.adc-offset-<0-7>

(float, R/W)

Der Offset wird von der Hardware-Eingangsspannung subtrahiert, nachdem der Skalenmultiplikator angewendet wurde.

.dac-offset-<0-3>

(float, R/W)

Der Offset wird zu dem Wert addiert, bevor die Hardware aktualisiert wird.

.dac-high-limit-<0-3>

(float, R/W)

Maximale Ausgangsspannung der Hardware in Volt.

.dac-low-limit-<0-3>

(float, R/W)

Minimale Ausgangsspannung der Hardware in Volt.

HAL-Beispiel
gm.0.rs485.0.adc-0 # Erster Analogkanal des Knotens.
# gm.0                  # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
#      .rs485.0          # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
#              .adc-0    # Wählt den ersten Analogeingang des Moduls

7.4. Teach Pendant Modul

Informationen zu Pinbelegung, Anschluss und elektrischen Eigenschaften des Moduls finden Sie im Systemintegrationshandbuch.

Alle Pins und Parameter werden durch die folgende Funktion aktualisiert:

gm.<card_no>.rs485

Es sollte dem Servo-Thread oder einem anderen Thread mit größerer Periode hinzugefügt werden, um eine CPU-Überlastung zu vermeiden. Jeder RS485-Modul-Pin und Parametername beginnt wie folgt:

gm.<card_no>.rs485.<module ID>

wobei <Modul-ID> zwischen 00 und 15 liegt. Beachten Sie, dass sie beim Teach-Pendant-Modul nicht geändert werden kann und auf Null vorprogrammiert ist. Auf Anfrage kann das Modul mit einer anderen, von der Firmware vorprogrammierten ID geliefert werden.

Tabelle 24. Pins des Teach-Pendant-Moduls
Pins Typ und Richtung Pin-Beschreibung

.adc-<0-5>

(float, Out)

Wert des ADC-Eingangs in Volt.

.enc-reset

(bit, In)

Wenn True, setzt Anzahl und Position auf Null zurück.

.enc-counts

(s32, Out)

Position in Encoder-Zählungen (engl. counts).

.enc-rawcounts

(s32, Out)

Die rohen Zähldaten (engl. raw counts) ist die Zählung, die durch das Zurücksetzen nicht beeinflusst wird.

.enc-position

(float, Out)

Position in skalierten Einheiten (=.enc-counts/.enc-position-scale).

.in-<0-7>

(bit, Out)

Input-Pin (wörtlich Eingabe-Pin)

.in-not-<0-7>

(bit, Out)

Negierter Eingangspin

Tabelle 25. Parameter des Teach Pendant Moduls
Parameter Typ und Richtung Parameterbeschreibung

.adc-scale-<0-5>

(float, R/W)

Die Eingangsspannung wird mit der Skalierung multipliziert, bevor sie an den .adc-Pin ausgegeben wird.

.adc-offset-<0-5>

(float, R/W)

Der Offset wird von der Hardware-Eingangsspannung subtrahiert, nachdem der Skalenmultiplikator angewendet wurde.

.enc-position-scale

(float, R/W)

Maßstab in Längeneinheiten.

HAL-Beispiel
gm.0.rs485.0.adc-0 # Erster Analogkanal des Knotens.
# gm.0                 # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
#     .rs485.0         # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
#             .adc-0  # Wählt den ersten Analogeingang des Moduls

8. Errata

8.1. GM6-PCI-Karte Errata

Die Revisionsnummer in diesem Abschnitt bezieht sich auf die Revision des GM6-PCI-Kartengeräts.

Rev. 1.2
  • Fehler: Die PCI-Karte bootet nicht, wenn der Schalter Axis 1. END B aktiv (low) ist. Gefunden am 16. November 2013.

  • Grund: Dieser Schalter ist mit einem Boot-Setting-Pin des FPGA verbunden

  • Problemlösung/Workaround: Verwenden Sie einen anderen Schalterpin, oder schließen Sie nur einen normalerweise offenen Schalter an diesen Schaltereingangspin an.