Este es un programa HAL en tiempo no-real para controlar VFDs de la serie S11 de Toshiba.
vfs11_vfd soporta conexiones en serie y TCP. Las conexiones en serie pueden ser RS232 o RS485. RS485 es soportado en modos full- y half- dúplex. Las conexiones TCP pueden ser pasivas (esperan conexión entrante) o activamente salientes, lo cual puede ser útil para conectarse a dispositivos basados en TCP o mediante un servidor de terminal.
Independientemente del tipo de conexión, vfs11_vfd opera como un maestro Modbus.
Este componente es cargado con el comando hal "loadusr":
loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd
Lo anterior significa: loadusr, espera la carga de lo mencionado, componente vfs11_vfd, nombrado como spindle-vfd
1. Opciones de la línea de comandos
vfs11_vfd es configurado en su mayoría mediante opciones de archivo INI. Las opciones de línea de comandos son:
-
-n o --name <nombrehal> : configura el nombre del componente HAL
-
-I o --ini <nombre-archivo-ini> : toma la configuración de este archivo INI. Predeterminado a la variable de ambiente INI_FILE_NAME.
-
-S o --section <nombre-sección> : toma la configuración de esta sección en el archivo INI. Predeterminado a VFS11.
-
-d o --debug habilita los mensajes de depuración en la salida de consola.
-
-m o --modbus-debug habilita los mensajes modbus en la salida de consola
-
-r o --report-device reporta las propiedades del dispositivo en la consola en el arranque
La depuración puede alternarse enviando una señal USR1 al proceso vfs11_vfd. La depuración del Modbus puede alternarse enviando una señal USR2 al proceso vfs11_vfd (ejemplo: kill -USR1 `pidof vfs11_vfd`).
|
Note
|
Si hay errores de configuración de la serie, encender la verbosidad puede resultar en una inundación de errores de tiempo de espera. |
2. Pines
Donde <n> es vfs11_vfd o el nombre dado durante la carga con la opción -n.
-
<n>.acceleration-pattern (bool, in) when true, set acceleration and deceleration times as defined in registers F500 and F501 respectively. Usado en ciclos PID para elegir los tiempos de rampa más cortos para evitar oscilación.
-
<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. Parámetros
Donde <n> es vfs11_vfd o el nombre dado durante la carga con la opción -n.
-
<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. Configuración del archivo INI
Aquí se listan todas las opciones que maneja el vfs11_vfd. Las configuraciones típicas para RS-232, RS-485 y TCP se encuentran en src/hal/user_comps/vfs11_vfd/*.ini.
[VFS11]
# conexión serie
TYPE=rtu
# puerto serie
DEVICE=/dev/ttyS0
# servidor TCP - espera conexión entrante
TYPE=tcpserver
# número de puerto tcp para TYPE=tcpserver o tcpclient
PORT=1502
# cliente TCP - conexión saliente activa
TYPE=tcpclient
# destino a conectar si TYPE=tcpclient
TCPDEST=192.168.1.1
#---------- válido solo si TYPE=rtu -------
# detalle de dispositivo serie
# 5 6 7 8
BITS= 5
# even odd none
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
# esta característica podría no funcionar con un paquete Ubuntu
# estándar libmodbus5/libmodbus-dev, y generar una advertencia
# la ejecución continuará como si se hubiera dado RTS_MODE=up.
RTS_MODE=up
#---------------------
# temporizadores modbus en segundos
# temporizador inter-caracter
BYTE_TIMEOUT=0.5
# temporizador de paquete
RESPONSE_TIMEOUT=0.5
# identificador modbus objetivo
TARGET=1
# en falla de E/S intentar reconexión después de dormir
# RECONNECT_DELAY segundos
RECONNECT_DELAY=1
# parámetros misceláneos
DEBUG=10
MODBUS_DEBUG=0
POLLCYCLES=10
5. Ejemplo HAL
#
# ejemplo de uso del controlador VFD VF-S11
#
#
loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd
# conecta los pines de dirección del husillo al VFD
net vfs11-fwd spindle-vfd.spindle-fwd <= spindle.0.forward
net vfs11-rev spindle-vfd.spindle-rev <= spindle.0.reverse
# conecta el pin de arranque del husillo al VF-S11
net vfs11-run spindle-vfd.spindle-on <= spindle.0.on
# conecta at-speed del VF-S11 al at-speed de motion
net vfs11-at-speed spindle.0.at-speed <= spindle-vfd.at-speed
# conecta RPM del husillo al VF-S11
net vfs11-RPM spindle-vfd.speed-command <= spindle.0.speed-out
# conecta el freno DC del VF-S11
# dado que esto consume corriente durante el apagado del husillo, es mejor que
# el pin dc-brake sea controlado por un monostable que se dispare en el flanco descendente de spindle-on
#net vfs11-spindle-brake spindle.N.brake => spindle-vfd.dc-brake
# para usar el modo de trote del VFS11 para orientación del husillo
# ver orient.9 y motion.9
net spindle-orient spindle.0.orient spindle-vfd.max-speed spindle-vfd.jog-mode
# toma precedencia sobre el panel de control
setp spindle-vfd.enable 1
6. Operación del panel
El controlador vfs11_vfd toma precedencia sobre el panel de control mientras esté habilitado (ver pin enable), deshabilitando efectivamente el panel. Limpiar el pin enable rehabilita el panel. Los pines y parámetros aún pueden ser configurados, pero no serán escritos al VFD hasta que se establezca el pin enable. Los parámetros en operación aún son legibles cuando el bus de control esta deshabilitado. Terminar el controlador vfs11_vfd de manera controlada liberará el VFD del bus y restablecerá el panel de control.
Ver el Manual de integradores de LinuxCNC para más información. Para una descripción detallada del registro de los VFDs de Toshiba ver "TOSVERT VF-S11 Communications Function Instruction Manual" (número de documento de Toshiba E6581222) y el "TOSVERT VF-S11 Instruction manual" (número de documento de Toshiba E6581158).
7. Recuperación de errores
El vfs11_vfd se recupera de errores de E/S de la siguiente manera: Primero, todos los pines HAL se establecen con los valores predeterminados, y el controlador dormirá por RECONNECT_DELAY segundos (predeterminado a 1 segundo).
-
Modo serie (
TYPE=rtu): en caso de error, cierra y reabre el puerto serie. -
Modo servidor TCP (
TYPE=tcpserver): al perder la conexión TCP, el controlador volverá a escuchar conexiones entrantes. -
Modo cliente TCP (
TYPE=tcpclient): al perder la conexión TCP, el controlador se reconectará a TCPDEST:PORTNO.
8. Configuración del VFD VFS11 para uso en Modbus
8.1. Conexión del puerto serie
El VF-S11 tiene un conector RJ-45 para comunicación serie. Desafortunadamente no tiene un conector estándar RS-232 y niveles lógicos. La recomendación de Toshiba es: conectar la unidad de conversión USB-serie USB001Z al controlador y conectar el puerto USB a la PC. Una alternativa más barata es con una interfaz casera ( sugerencia del soporte de Toshiba, diagrama del circuito).
Nota: la salida de 24V del VFD no tienen protección de cortocircuito.
La configuración predeterminada de fábrica del puerto serie es 9600/8/1/even, el protocolo predeterminado es el propietario "Toshiba Inverter Protocol".
8.2. Configuración para Modbus
Varios parámetros necesitan configuración antes de que el VF-S11 platique con este módulo. Esto se puede hacer manualmente con el panel de control, o sobre el enlace serie (Toshiba proporciona una aplicación Windows llamada PCM001Z que puede leer/escribir parámetros en el VFD). Nota- PCM001Z solo habla el protocolo Toshiba Inverter. Así que lo último que querrías, sería cambiar el parámetro de protocolo de Toshiba Inverter Protocol a Modbus, ya que después de eso la aplicación Windows queda inservible.
Para incrementar al límite superior de frecuencia se deben modificar los parámetros UL y FH en el panel. Yo los incremente de 50 a 80.
Ver dump-params.mio para una descripción de los parámetros no estándar del VF-S11 de mi configuración. Este archivo es para la utilería interactiva de Modbus modio.
9. Nota de programación
El controlador vfs11_vfd usa la librería libmodbus versión 3, la cual es más reciente que el código de la versión 2 usada en gs2_vfd.
Los paquetes de Ubuntu libmodbus5 y libmodbus-dev solo están disponibles a partir de Ubuntu 12 (Precise Pengolin). Además, esos paquetes no son compatibles con las banderas MODBUS_RTS_MODE_*. Por lo tanto, compilar vfs11_vfd con esta librería podría generar una advertencia si se especifica RTS_MODE= en el archivo INI.
Para usar la funcionalidad completa en lucid y precise:
-
eliminar los paquetes libmodbus:
sudo apt-get remove libmodbus5 libmodbus-dev -
compilar e instalar la versión 3 de libmodbus a partir del código fuente como se indica aquí.
Libmodbus no compila en Ubuntu Hardy, por lo tanto vfs11_vfd no está disponible en Hardy.