This is a non-realtime HAL program to control the S11 series of VFDs from Toshiba.
vfs11_vfd supports serial and TCP connections. Serial connections may be RS232 or RS485. RS485 is supported in full- and half-duplex mode. TCP connections may be passive (wait for incoming connection), or active outgoing connections, which may be useful to connect to TCP-based devices or through a terminal server.
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
Debugging can be toggled by sending a USR1 signal to the vfs11_vfd process. Modbus debugging can be toggled by sending a USR2 signal to vfs11_vfd process (example: 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) when true, set acceleration and deceleration times as defined in registers F500 and F501 respectively. Used in PID loops to choose shorter ramp times to avoid oscillation.
-
<n>.alarm-code (s32, 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 (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) 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 (bit, 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 (bit, in) put the VFD into emergency-stopped status. No operation possible until cleared with err-reset or powercycling.
-
<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) 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 (bit, out) true wenn der VFD 0 Hz Ausgang meldet
-
<n>.max-rpm (float, 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 (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 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 (s32, out) Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function Instruction Manual, register FD01). A 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) 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 (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) 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
This lists all options understood by vfs11_vfd. Typical setups for RS-232, RS-485 and TCP can be found 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
The vfs11_vfd driver takes precedence over panel control while it is enabled (see enable pin), effectively disabling the panel. Clearing the enable pin re-enables the panel. Pins and parameters can still be set, but will not be written to the VFD untile the enable pin is set. Operating parameters are still read while bus control is disabled. Exiting the vfs11_vfd driver in a controlled way will release the VFD from the bus and restore panel control.
See the LinuxCNC Integrators Manual for more information. For a detailed register description of the Toshiba VFDs, see the "TOSVERT VF-S11 Communications Function Instruction Manual" (Toshiba document number E6581222) and the "TOSVERT VF-S11 Instruction manual" (Toshiba document number 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
The VF-S11 has an RJ-45 jack for serial communication. Unfortunately, it does not have a standard RS-232 plug and logic levels. The Toshiba-recommended way is: connect the USB001Z USB-to-serial conversion unit to the drive, and plug the USB port into the PC. A cheaper alternative is a homebrew interface ( hints from Toshiba support, circuit diagram).
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
Several parameters need setting before the VF-S11 will talk to this module. This can either be done manually with the control panel, or over the serial link - Toshiba supplies a Windows application called PCM001Z which can read/set parameters in the VFD. Note - PCM001Z only talks the Toshiba inverter protocol. So the last parameter which you’d want to change is the protocol - set from Toshiba Inverter Protocol to Modbus; thereafter, the Windows app is useless.
To increase the upper frequency limit, the UL and FH parameters must be changed on the panel. I increased them from 50 to 80.
See dump-params.mio for a description of non-standard VF-S11 parameters of my setup. This file is for the 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.
The Ubuntu libmodbus5
and libmodbus-dev
packages are only available starting from Ubuntu 12 (Precise Pengolin). Moreover, these packages lack support for the MODBUS_RTS_MODE_* flags. Therefore, building vfs11_vfd using this library might generate a warning if RTS_MODE= is specified in the INI file.
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.