Die Servo-To-Go (STG) ist eine der ersten PC Motion Control Karten von LinuxCNC unterstützt. Es ist eine ISA-Karte und es gibt in verschiedenen Varianten (alle von diesem Treiber unterstützt). Die Karte enthält bis zu 8 Kanäle von Quadratur-Encoder-Eingang, 8 Kanäle von analogen Ein- und Ausgängen, 32 Bit digitale E/A, ein Intervall-Timer mit Interrupt und ein Watchdog. Weitere Informationen finden Sie auf der Webseite Servo To Go.

Anmerkung
Uns liegen Berichte vor, dass die Operationsverstärker auf der Servo To Go-Karte nicht mit neueren ATX-Netzteilen funktionieren, die moderne DC-DC-Schaltwandler verwenden. Der Fehlermodus ist, dass die STG-Karte eine konstante Spannung ausgibt, unabhängig davon, was der Treiber ihr befiehlt. Ältere ATX-Netzteile mit linearen Spannungsreglern haben dieses Problem nicht und funktionieren problemlos mit den STG-Karten.

1. Installation

loadrt hal_stg [base=<address>] [num_chan=<nr>] [dio="<dio-string>"] \
                 [model=<model>]

Das Feld base address ist optional; wenn es nicht angegeben wird, versucht der Treiber, die Karte automatisch zu erkennen. Das Feld num_chan wird verwendet, um die Anzahl der auf der Karte verfügbaren Kanäle anzugeben; wird es nicht verwendet , dann wird die 8-Achsen-Version angenommen. Die Konfiguration der digitalen Ein- und Ausgänge wird durch einen Konfigurationsstring bestimmt, der beim Laden des Moduls an insmod übergeben wird. Das Format besteht aus einer vierstelligen Zeichenkette, welche die Richtung jeder Gruppe von Pins festlegt. Jedes Zeichen des Richtungsstrings ist entweder "I" oder "O". Das erste Zeichen bestimmt die Richtung von Anschluss A (Port A - DIO.0-7), das nächste die von Anschluss B (Port B - DIO.8-15), das nächste die von Anschluss C (Port C - DIO.16-23) und das vierte die von Anschluss D (Port D - DIO.24-31). Das Modellfeld kann verwendet werden, falls der Treiber nicht automatisch die richtige Kartenversion erkennt.

HINT: nach dem Starten des Treibers kann dmesg auf treiberrelevante Meldungen (z.B. automatisch erkannte Versionsnummer und Basisadresse) untersucht werden. Zum Beispiel:

loadrt hal_stg base=0x300 num_chan=4 dio="IOIO"

Dieses Beispiel installiert den STG-Treiber für eine Karte mit der Basisadresse 0x300, 4 Kanälen für Encoder-Feedback, DACs und ADCs sowie 32 Bits E/A, die wie folgt konfiguriert sind: die ersten 8 (Port A) als Eingang, die nächsten 8 (Port B) als Ausgang, die nächsten 8 (Port C) als Eingang und die letzten 8 (Port D) als Ausgang

loadrt hal_stg

Dieses Beispiel installiert den Treiber und versucht, die Kartenadresse und das Kartenmodell automatisch zu erkennen. Es installiert standardmäßig 8 Achsen zusammen mit einer Standard-E/A-Einstellung: Port A und B sind als Eingang, Port C und D als Ausgang konfiguriert.

2. Pins

  • stg.<channel>.counts - (s32) Folgt den gezählten Encoder-Ticks.

  • stg.<channel>.position - (float) Gibt eine konvertierte Position aus.

  • stg.<channel>.dac-value - (float) Steuert die Spannung für den entsprechenden DAC.

  • stg.<channel>.adc-value - (float) Folgt die gemessene Spannung vom entsprechenden ADC.

  • stg.in-<pinnum> - (bit) Folgt einen physischen Eingangspin.

  • stg.in-<pinnum>-not - (bit) Folgt einem physischen Eingangspin, aber invertiert.

  • stg.out-<pinnum> - (Bit) Treibt einen physischen Ausgangspin an

Für jeden Pin ist <Kanal> die Achsennummer und <Pinnum> die logische Pin-Nummer des STG, wenn "IIOO" definiert ist. Es gibt 16 Eingangs-Pins (in-00 .. in-15) und 16 Ausgangs-Pins (out-00 .. out-15), und sie entsprechen den PORTs ABCD (in-00 ist PORTA.0, out-15 ist PORTD.7).

Der in-<pinnum>-HAL-Pin ist TRUE, wenn der physikalische Pin high ist, und FALSE, wenn der physikalische Pin low ist. Der in-<pinnum>-not HAL-Pin ist invertiert - er ist FALSE, wenn der physikalische Pin high ist. Durch Anschließen eines Signals an den einen oder anderen Pin kann der Benutzer den Zustand des Eingangs bestimmen.

3. Parameter

  • stg.<channel>.position-scale - (float) Die Anzahl der Zählungen / Benutzereinheiten (zur Umrechnung von Zählungen in Einheiten).

  • stg.<channel>.dac-offset - (float) Legt den Offset für den entsprechenden DAC fest.

  • stg.<channel>.dac-gain - (float) Legt die Verstärkung des entsprechenden DAC fest.

  • stg.<channel>.adc-offset - (float) Legt den Offset des entsprechenden ADC fest.

  • stg.<channel>.adc-gain - (float) Legt die Verstärkung des entsprechenden ADC fest.

  • stg.out-<pinnum>-invert - (bit) Invertiert einen Ausgangspin.

Der Parameter -invert bestimmt, ob ein Ausgangspin aktiv high oder aktiv low ist. Wenn -invert FALSE ist, wird der physikalische Pin durch das Setzen des HAL -out-Pins auf TRUE aktiviert und durch FALSE deaktiviert. Wenn -invert TRUE ist, wird der physikalische Pin durch das Setzen des HAL -out-Pins TRUE auf low gesetzt.

4. Funktionen

  • stg.capture-position - Liest die Encoder-Zähler von der Achse <channel>.

  • stg.write-dacs - Schreibt die Spannungen in die DACs.

  • stg.read-adcs - Liest die Spannungen von den ADCs.

  • stg.di-read - Liest physische In-Pins aller Ports und aktualisiert alle HAL In-<pinnum> und In- nicht <pinnum>Pins.

  • stg.do-write - Liest alle HAL out-<pinnum> Pins und aktualisiert alle physischen Ausgangspins.