LinuxCNC Documentation

Dies ist ein nicht-Echtzeit HAL-Programm zur Steuerung der S11-Serie von VFDs von Toshiba.

vfs11_vfd unterstützt serielle und TCP-Verbindungen. Serielle Verbindungen können RS232 oder RS485 sein. RS485 wird im Voll- und Halbduplex-Modus unterstützt. TCP-Verbindungen können passiv (Warten auf eine eingehende Verbindung) oder aktiv (ausgehende Verbindungen) sein, was für die Verbindung mit TCP-basierten Geräten oder über einen Terminal-Server nützlich sein kann.

Unabhängig von der Verbindungsart arbeitet vfs11_vfd als Modbus-Master.

Diese Komponente wird mit dem halcmd-Befehl "loadusr" geladen:

loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd

Der obige Befehl lautet: loadusr, warten bis named geladen ist, Komponente vfs11_vfd, named spindle-vfd

1. Kommandozeilen-Optionen

vfs11_vfd wird hauptsächlich durch INI-Datei-Optionen konfiguriert. Die Kommandozeilenoptionen sind:

  • -n oder --name <halname> : den Namen der HAL-Komponente festlegen

  • -I oder --ini <inifilename> : übernimmt die Konfiguration aus der angegebenen INI-Datei. Standardmäßig wird die Umgebungsvariable INI_FILE_NAME verwendet.

  • -S oder --section <section name> : übernimmt die Konfiguration aus dem Abschnitt mit diesem Namen in der INI-Datei. Der Standardwert ist VFS11.

  • -d oder --debug aktiviert Debug-Meldungen in der Konsolenausgabe.

  • -m oder --modbus-debug aktiviert Modbus-Meldungen auf der Konsolenausgabe

  • -r oder --report-device Geräteeigenschaften beim Starten auf der Konsole melden

Das Debugging kann durch Senden eines USR1-Signals an den vfs11_vfd-Prozess umgeschaltet werden. Modbus-Debugging kann durch Senden eines USR2-Signals an den vfs11_vfd-Prozess umgeschaltet werden (Beispiel: kill -USR1 `pidof vfs11_vfd`).

Note
Bei seriellen Konfigurationsfehlern kann das Einschalten von verbose zu einer Flut von Timeout-Fehlern führen.

2. Pins

Dabei steht <n> für vfs11_vfd oder den beim Laden mit der Option -n angegebenen Namen.

  • <n>.acceleration-pattern (bool, in) when true, set acceleration and deceleration times as defined in registers F500 and F501 respectively. Wird in PID Schleifen verwendet, um kürzere Rampenzeiten zu wählen und so Schwingungen zu vermeiden.

  • <n>.alarm-code (sint, out) non-zero if drive is in alarmed state. Bitmap describing alarm information (see register FC91 description). Use err-reset (see below) to clear the alarm.

  • <n>.at-speed (bool, out) when drive is at commanded speed (see speed-tolerance below)

  • <n>.current-load-percentage (real, out) reported from the VFD

  • <n>.dc-brake (bool, in) engage the DC brake. Also turns off spindle-on.

  • <n>.enable (bool, in) enable the VFD. If false, all operating parameters are still read but control is released and panel control is enabled (subject to VFD setup).

  • <n>.err-reset (bool, in) reset errors (alarms a.k.a Trip and e-stop status). Resetting the VFD may cause a 2-second delay until it’s rebooted and Modbus is up again.

  • <n>.estop (bool, in) put the VFD into emergency-stopped status. No operation possible until cleared with err-reset or powercycling.

  • <n>.frequency-command (real, out) current target frequency in Hz as set through speed-command (which is in RPM), from the VFD

  • <n>.frequency-out (real, out) current output frequency of the VFD

  • <n>.inverter-load-percentage (real, out) current load report from VFD

  • <n>.is-e-stopped (bool, out) the VFD is in emergency stop status (blinking "E" on panel). Use err-reset to reboot the VFD and clear the e- stop status.

  • <n>.is-stopped (bool, out) true when the VFD reports 0 Hz output

  • <n>.max-rpm (real, R) actual RPM limit based on maximum frequency the VFD may generate, and the motors nameplate values. For instance, if nameplate-HZ is 50, and nameplate-RPM_ is 1410, but the VFD may generate up to 80 Hz, then max-rpm would read as 2256 (80*1410/50). The frequency limit is read from the VFD at startup. To increase the upper frequency limit, the UL and FH parameters must be changed on the panel. See the VF-S11 manual for instructions how to set the maximum frequency.

  • <n>.modbus-ok (bool, out) true when the Modbus session is successfully established and the last 10 transactions returned without error.

  • <n>.motor-RPM (real, out) estimated current RPM value, from the VFD

  • <n>.output-current-percentage (real, out) from the VFD

  • <n>.output-voltage-percentage (real, out) from the VFD

  • <n>.output-voltage (real, out) from the VFD

  • <n>.speed-command (real, in) speed sent to VFD in RPM. It is an error to send a speed faster than the Motor Max RPM as set in the VFD

  • <n>.spindle-fwd (bool, in) 1 for FWD and 0 for REV, sent to VFD

  • <n>.spindle-on (bool, in) 1 for ON and 0 for OFF sent to VFD, only on when running

  • <n>.spindle-rev (bool, in) 1 for ON and 0 for OFF, only on when running

  • <n>.jog-mode (bool, in) 1 for ON and 0 for OFF, enables the VF-S11 jog mode. Speed control is disabled, and the output frequency is determined by register F262 (preset to 5 Hz). This might be useful for spindle orientation. In normal mode, the VFD shuts off if the frequency drops below 12 Hz.

  • <n>.status (sint, out) Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function Instruction Manual, register FD01). A bitmap.

  • <n>.trip-code (sint, out) trip code if VF-S11 is in tripped state.

  • <n>.error-count (sint, out) number of Modbus transactions which returned an error

  • <n>.max-speed (bool, in) ignore the loop-time parameter and run Modbus at maximum speed, at the expense of higher CPU usage. Suggested use during spindle positioning.

3. Parameter

Dabei steht <n> für vfs11_vfd oder den beim Laden mit der Option -n angegebenen Namen.

  • <n>.frequency-limit (real, RO) upper limit read from VFD setup.

  • <n>.loop-time (real, RW) how often the Modbus is polled (default interval 0.1 seconds)

  • <n>.nameplate-HZ (real, RW) Nameplate Hz of motor (default 50). Used to calculate target frequency (together with nameplate-RPM ) for a target RPM value as given by speed-command.

  • <n>.nameplate-RPM (real, RW) Nameplate RPM of motor (default 1410)

  • <n>.rpm-limit (real, RW) do-not-exceed soft limit for motor RPM (defaults to nameplate-RPM ).

  • <n>.tolerance (real, RW) speed tolerance (default 0.01) for determining whether spindle is at speed (0.01 meaning: Output frequency is within 1% of target frequency)

4. INI-Datei-Konfiguration

Hier werden alle Optionen aufgelistet, die vfs11_vfd versteht. Typische Einstellungen für RS-232, RS-485 und TCP finden Sie in src/hal/user_comps/vfs11_vfd/*.ini.

[VFS11]
# serielle Verbindung
TYPE=rtu

# serielle Schnittstelle
DEVICE=/dev/ttyS0

# TCP-Server - Warten Sie auf eingehende Verbindung
TYP=tcpserver

# tcp portnumber für TYPE=tcpserver oder tcpclient
PORT=1502

# TCP-Client - aktive ausgehende Verbindung
TYPE=tcpclient

# Ziel, zu dem eine Verbindung aufgebaut werden soll if TYPE=tcpclient
TCPDEST=192.168.1.1

---------- nur sinnvoll, wenn TYPE=rtu -------
# serial device detail
# 5 6 7 8
BITS= 5

# even odd none
# (engl. für gerade ungerade keine)
PARITY=none

# 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
BAUD=19200

# 1 2
STOPBITS=1

#rs232 rs485
SERIAL_MODE=rs485

# up down none (engl. für auf ab keine)
# diese Funktion funktioniert möglicherweise nicht mit einem Ubuntu-Paket
# libmodbus5/libmodbus-dev-Paket und erzeugt eine Warnung.
# Die Ausführung wird fortgesetzt, als ob RTS_MODE=up angegeben wäre.
RTS_MODE=up
#---------------------

# Modbus-Timer in Sekunden
# inter-character timer
BYTE_TIMEOUT=0.5
# packet timer
RESPONSE_TIMEOUT=0.5

# Ziel (engl. target)-Modbus-ID
TARGET=1

# bei E/A-Fehlern wird versucht, die Verbindung nach einer Verzögerung von
# RECONNECT_DELAY Sekunden wiederherzustellen
RECONNECT_DELAY=1

# Verschiedene weitere Parameter
DEBUG=10
MODBUS_DEBUG=0
POLLCYCLES=10

5. HAL-Beispiel

#
# Beispiel für die Verwendung des VF-S11 VFD-Treibers
#
#
loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd

# Verbinden der Spindelrichtungs-Pins mit dem VFD
net vfs11-fwd spindle-vfd.spindle-fwd <= spindle.0.forward
net vfs11-rev spindle-vfd.spindle-rev <= spindle.0.reverse

# Verbinden des Pins "Spindel ein" mit dem VF-S11
net vfs11-run spindle-vfd.spindle-on <= spindle.0.on

# Verbinden des VF-S11-auf-Geschwindigkeit-Pins
net vfs11-at-speed spindle.0.at-speed <= spindle-vfd.at-speed

# Verbinden der Spindeldrehzahl-Pins
net vfs11-RPM spindle-vfd.speed-command <= spindle.0.speed-out

# Anschluss der Gleichstrombremse an VF-S11
# Da diese bei ausgeschalteter Spindel Strom zieht, sollte der DC-Brems-Pin
# besser von einem Monoflop angesteuert werden, das bei der fallenden Flanke von "Spindel ein" auslöst
#net vfs11-spindle-brake spindle.N.brake => spindle-vfd.dc-brake

# um den VFS11-Jog-Modus für die Spindelausrichtung zu verwenden
# siehe orient.9 und motion.9
net spindle-orient spindle.0.orient spindle-vfd.max-speed spindle-vfd.jog-mode

# hat Vorrang vor dem Bedienfeld
setp spindel-vfd.enable 1

6. Bedienung des Panels

Der vfs11_vfd-Treiber hat Vorrang vor der Panel-Steuerung, solange er aktiviert ist (siehe enable Pin), wodurch das Panel effektiv deaktiviert wird. Durch Löschen des enable Pins wird das Panel wieder aktiviert. Pins und Parameter können weiterhin eingestellt werden, doch werden diese nicht in den VFD geschrieben, solange der enable Pin nicht gesetzt ist. Betriebsparameter werden weiterhin gelesen, während die Bussteuerung deaktiviert ist. Durch kontrolliertes Beenden des vfs11_vfd-Treibers wird der VFD vom Bus getrennt und die Kontrolle über das Panel wiederhergestellt.

Weitere Informationen finden Sie im LinuxCNC Integrators Manual. Eine detaillierte Registerbeschreibung der Toshiba VFDs finden Sie im "TOSVERT VF-S11 Communications Function Instruction Manual" (Toshiba Dokumentnummer E6581222) und im "TOSVERT VF-S11 Instruction manual" (Toshiba Dokumentnummer E6581158).

7. Reaktion auf Fehler (engl. error recovery)

Der vfs11_vfd erholt sich von E/A-Fehlern wie folgt: Zunächst werden alle HAL-Pins auf Standardwerte gesetzt, und der Treiber schläft für RECONNECT_DELAY Sekunden (Standard 1 Sekunde).

  • Serieller Modus (TYPE=rtu): Bei einem Fehler wird die serielle Schnittstelle geschlossen und erneut geöffnet.

  • TCP-Server-Modus (TYPE=tcpserver): Wenn die TCP-Verbindung unterbrochen wird, schaltet der Treiber wieder auf die Suche nach eingehenden Verbindungen.

  • TCP-Client-Modus (TYPE=tcpclient): Bei Verlust der TCP-Verbindung stellt der Treiber die Verbindung zu TCPDEST:PORTNO wieder her.

8. Konfigurieren des VFS11 VFD für die Modbus-Nutzung

8.1. Anschließen der seriellen Schnittstelle

Der VF-S11 verfügt über eine RJ-45-Buchse für die serielle Kommunikation. Leider verfügt es nicht über einen Standard-RS-232-Stecker und logische Pegel. Der von Toshiba empfohlene Weg ist: Schließen Sie die USB001Z USB-zu-Seriell-Konvertierungseinheit an das Laufwerk an, und verbinden Sie den USB-Anschluss mit dem PC. Eine billigere Alternative ist eine selbstgebaute Schnittstelle ( Hinweise vom Toshiba-Support, Schaltplan).

Hinweis: Der 24-V-Ausgang des VFD hat keinen Kurzschlussschutz.

Die Werkseinstellungen für die serielle Schnittstelle sind 9600/8/1/gerade, das Protokoll ist standardmäßig das proprietäre Toshiba Inverter Protocol".

8.2. Modbus-Einrichtung

Mehrere Parameter müssen eingestellt werden, bevor der VF-S11 mit diesem Modul kommunizieren kann. Dies kann entweder manuell über das Bedienfeld oder über die serielle Verbindung erfolgen - Toshiba liefert eine Windows-Anwendung namens PCM001Z, die Parameter im VFD lesen/einstellen kann. Hinweis - PCM001Z spricht nur das Toshiba Wechselrichterprotokoll. Der letzte Parameter, den Sie ändern möchten, ist das Protokoll - stellen Sie es von Toshiba Inverter Protocol auf Modbus um; danach ist die Windows-Anwendung nutzlos.

Um die obere Frequenzgrenze zu erhöhen, müssen die Parameter UL und FH auf dem Panel geändert werden. Ich habe sie von 50 auf 80 erhöht.

Siehe dump-params.mio für eine Beschreibung der nicht standardmäßigen VF-S11-Parameter meiner Einrichtung. Diese Datei ist für das modio Modbus interactive utility.

9. Hinweis zur Programmierung

Der Treiber vfs11_vfd verwendet die Bibliothek libmodbus Version 3, die aktueller ist als der in gs2_vfd verwendete Code der Version 2.

Die Ubuntu-Pakete libmodbus5 und libmodbus-dev sind erst ab Ubuntu 12 (Precise Pengolin) verfügbar. Außerdem fehlt diesen Paketen die Unterstützung für die MODBUS_RTS_MODE_*-Flags. Daher kann das Erstellen von vfs11_vfd mit dieser Bibliothek eine Warnung erzeugen, wenn RTS_MODE= in der INI-Datei angegeben ist.

Um die volle Funktionalität auf Ubuntu Lucid und Precise zu nutzen:

  • Entfernen Sie die libmodbus-Pakete: sudo apt-get remove libmodbus5 libmodbus-dev

  • erstellen und installieren Sie libmodbus Version 3 aus den Quellen, wie unter hier beschrieben.

Libmodbus kann nicht auf Ubuntu Hardy gebaut werden, daher ist vfs11_vfd auf Hardy nicht verfügbar.