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`).

Anmerkung
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 (bit, in) wenn true, setzt Beschleunigungs- und Verzögerungszeiten wie in den Registern F500 bzw. F501 definiert. Wird in PID Schleifen verwendet, um kürzere Rampenzeiten zu wählen und so Schwingungen zu vermeiden.

  • <n>.alarm-code (s32, out) ungleich Null, wenn der Antrieb im Alarmzustand ist. Bitmap zur Beschreibung der Alarminformationen (siehe Beschreibung des Registers FC91). Verwenden Sie err-reset (siehe unten), um den Alarm zu löschen.

  • <n>.at-speed (bit, out) wenn der Antrieb die Solldrehzahl erreicht (siehe Drehzahltoleranz unten)

  • <n>.current-load-percentage (float, out) gemeldet vom VFD

  • <n>.dc-brake (bit, in) aktiviert die Gleichstrombremse. Schaltet auch das Spindel-ein Signal aus.

  • <n>.enable (bit, in) gibt das VFD frei. Wenn false, werden alle Betriebsparameter weiterhin gelesen, aber die Steuerung wird freigegeben und die Bedienfeldsteuerung wird aktiviert (abhängig von der VFD-Einstellung).

  • <n>.err-reset (bit, in) setzt Fehler (Alarme a.k.a Trip und e-stop Status) zurück. Das Zurücksetzen des VFD kann eine 2-Sekunden-Verzögerung verursachen bis der VFD neu gebootet ist und der Modbus wieder funktioniert.

  • <n>.estop (bit, in) versetzt den VFD in den Notaus-Status. Kein Betrieb möglich, bis mit Err-Reset oder einen Neustart der Notaus rückgängig gemacht wird.

  • <n>.frequency-command (float, out) aktuelle Zielfrequenz in Hz, wie durch den Drehzahl-Befehl (der in RPM angegeben ist), vom VFD eingestellt

  • <n>.frequency-out (float, out) aktuelle Ausgangsfrequenz des VFD

  • <n>.inverter-load-percentage (float, out) aktuelle Lastmeldung vom VFD

  • <n>.is-e-stopped (bit, out) der VFD befindet sich im Notaus-Status (blinkendes „E“ auf dem Bedienfeld). Verwenden Sie err-reset, um das VFD neu zu starten und den Notaus-Status zu löschen.

  • <n>.is-stopped (bit, out) true wenn der VFD 0 Hz Ausgang meldet

  • <n>.max-rpm (Float, R) tatsächliche Drehzahlgrenze basierend auf der maximalen Frequenz, die der VFD erzeugen kann, und den Typenschildwerten des Motors. Wenn z. B. die Typenschild-HZ 50 und die Typenschild-Drehzahl 1410 beträgt, der Frequenzumrichter aber bis zu 80 Hz erzeugen kann, dann würde die maximale Drehzahl 2256 (80*1410/50) betragen. Die Frequenzgrenze wird beim Einschalten vom VFD abgelesen. Um die obere Frequenzgrenze zu erhöhen, müssen die Parameter UL und FH am Bedienfeld geändert werden. Anweisungen zum Einstellen der Höchstfrequenz finden Sie im Handbuch des VF-S11.

  • <n>.modbus-ok (bit, out) true, wenn die Modbus-Sitzung erfolgreich aufgebaut ist und die letzten 10 Transaktionen ohne Fehler zurückgegeben wurden.

  • <n>.motor-RPM (float, out) geschätzter aktueller U/min (engl. RPM)-Wert, vom VFD

  • <n>.output-current-percentage (float, out) vom VFD

  • <n>.output-voltage-percentage (float, out) vom VFD

  • <n>.output-voltage (float, out) vom VFD

  • <n>.speed-command (float, in) an den VFD gesendete Geschwindigkeit in U/min. Es ist ein Fehler, eine Geschwindigkeit zu senden, die höher ist als die im VFD eingestellte Motor Max RPM

  • <n>.spindle-fwd (bit, in) 1 für FWD (engl. kurz für vorwärts) und 0 für REV (engl. kurz für rückwärts), gesendet an VFD

  • <n>.spindle-on (bit, in) 1 für EIN und 0 für AUS an den VFD gesendet, nur bei Betrieb eingeschaltet

  • <n>.spindle-rev (bit, in) 1 für EIN und 0 für AUS, nur bei Betrieb eingeschaltet

  • <n>.jog-mode (bit, in) 1 für ON und 0 für OFF, aktiviert den VF-S11 jog-mode. Die Drehzahlregelung ist deaktiviert, und die Ausgangsfrequenz wird durch das Register F262 bestimmt (voreingestellt auf 5 Hz). Dies kann für die Spindelausrichtung nützlich sein. Im normalen Modus schaltet sich der VFD ab, wenn die Frequenz unter 12 Hz fällt.

  • <n>.status (s32, out) Antrieb (engl. Drive)-Status des VFD (siehe TOSVERT VF-S11 Communications Function Instruction Manual, Register FD01). Eine Bitmap.

  • <n>.trip-code (s32, out) Auslösecode, wenn VF-S11 im Auslösezustand ist.

  • <n>.error-count (s32, out) Anzahl der Modbus-Transaktionen, die einen Fehler zurückgegeben haben

  • <n>.max-speed (bit, in) ignoriert den Schleifenzeit (engl. loop-time)-Parameter und lässt Modbus mit maximaler Geschwindigkeit laufen, auf Kosten einer höheren CPU-Auslastung. Empfohlene Verwendung während der Spindelpositionierung.

3. Parameter

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

  • <n>.frequency-limit (float, RO) oberer Grenzwert, der vom VFD-Setup gelesen wird.

  • <n>.loop-time (float, RW) wie oft der Modbus abgefragt wird (Standardintervall 0,1 Sekunden)

  • <n>.nameplate-HZ (float, RW) Namen-/Typenschild in Hz des Motors (Standard 50). Dient zur Berechnung der Zielfrequenz (zusammen mit nameplate-RPM (engl. für U/min) ) für einen durch den Drehzahlbefehl vorgegebenen Ziel-Drehzahlwert.

  • <n>.nameplate-RPM (float, RW) (engl. für U/min) Namens-/Typenschild-Drehzahl des Motors (Standard 1410)

  • <n>.rpm-limit (float, RW) weicher Grenzwert für die Motordrehzahl, der nicht überschritten werden darf (Standardwert ist die Angabe bei "nameplate-RPM" (engl. für Typenschild-Drehzahl)).

  • <n>.tolerance (float, RW) Drehzahltoleranz (Standardwert 0,01) zur Bestimmung, ob die Spindel auf Drehzahl ist (0,01 bedeutet: Ausgangsfrequenz liegt innerhalb von 1% der Sollfrequenz)

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.