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 (bit, in) cuando es Verdadero, establece los tiempos de aceleración y desaceleración definidos en los registros F500 y F501 respectivamente. Usado en ciclos PID para elegir los tiempos de rampa más cortos para evitar oscilación.
-
<n>.alarm-code (s32, out) distinto de cero si el controlador está en estado de alarma. Mapa de bits describiendo información de alarma (ver la descripción del registro FC91). Usar err-reset (ver abajo) para limpiar la alarma.
-
<n>.at-speed (bit, out) cuando el controlador esta a la velocidad ordenada (ver abajo speed-tolerance)
-
<n>.current-load-percentage (float, out) reportado desde el VFD
-
<n>.dc-brake (bit, in) aplica el freno DC. También apaga spindle-on.
-
<n>.enable (bit, in) habilita el VFD. Si es Falso todos los parámetros en operación todavía se leen pero el control es liberado y el panel de control es habilitado (sujeto a configuración del VFD).
-
<n>.err-reset (bit, in) restablece errores (alarmas también conocidas como estado de carrera y parada de emergencia). Restablecer el VFD puede provocar un retardo de 2 segundos hasta que esté reiniciado y Modbus esté arriba nuevamente.
-
<n>.estop (bit, in) pone al VFD en estado de parada de emergencia. Ninguna operación es posible hasta que se limpie con err-reset o con ciclo de alimentación.
-
<n>.frequency-command (float, out) frecuencia objetivo actual en Hz según lo establecido mediante speed-comand (el cual es en RPM) desde el VFD
-
<n>.frequency-out (float, out) frecuencia de salida actual del VFD
-
<n>.inverter-load-percentage (float, out) reporte de carga actual desde el VFD
-
<n>.is-e-stopped (bit, out) el VFD esta en estado de parada de emergencia ("E" parpadeando en el panel). Usar err-reset para reiniciar el VFD y limpiar el estado e-stop.
-
<n>.is-stopped (bit, out) Verdadero cuando el VFD reporta salida de 0 Hz
-
<n>.max-rpm (float, R) límite real de RPM con base en la frecuencia máxima que puede generar el VFD, y los valores de la placa de fabricante del motor. Por ejemplo, si la placa del fabricante indica is 50 HZ y 1410 RPM, pero el VFD puede generar hasta 80 Hz, entonces en max-rpm se leerá 2256 (80*1410/50). El límite de frecuencia se lee desde el VFD en el arranque. Para incrementar el límite superior de frecuencia se deben modificar los parámetros UL y FH en el panel. Ver el manual de VF-S11 para instrucciones sobre cómo configurar la frecuencia máxima.
-
<n>.modbus-ok (bit, out) Verdadero cuando se establece exitosamente la sesión Modbus y las últimas 10 transacciones regresaron sin error.
-
<n>.motor-RPM (float, out) valor estimado actual de RPM, desde el VFD
-
<n>.output-current-percentage (float, out) porcentaje de corriente de salida, desde el VFD
-
<n>.output-voltage-percentage (float, out) porcentaje de voltaje de salida, desde el VFD
-
<n>.output-voltage (float, out) voltaje de salida, desde el VFD
-
<n>.speed-command (float, in) velocidad enviada al VFD en RPM. Es un error enviar una velocidad mayor que las RPM máx. del motor configuradas en el VFD
-
<n>.spindle-fwd (bit, in) dirección del husillo, 1 para adelante y 0 para reversa, enviada al VFD
-
<n>.spindle-on (bit, in) encendido del husillo, 1 para encendido y 0 para apagado. Enviado al VFD solo cuando está corriendo
-
<n>.spindle-rev (bit, in) reversa del husillo, 1 para encendido y 0 para apagado, solo cuando está corriendo
-
<n>.jog-mode (bit, in) modo de trote, 1 para encendido y 0 para apagado, habilita el modo trote del VF-S11. Se inhabilita el control de velocidad y la frecuencia de salida la determina el registro F262 (preestablecido a 5 Hz). Este puede ser útil para la orientación del husillo. En modo normal el VFD se apaga si la frecuencia cae por debajo de 12 Hz.
-
<n>.status (s32, out) estado del controlador del VFD (ver TOSVERT VF-S11 Communications Function Instruction Manual, registro FD01). Un mapa de bits.
-
<n>.trip-code (s32, out) código de tropiezo si el VF-S11 esta en estado de tropiezo.
-
<n>.error-count (s32, out) número de transacciones Modbus que regresaron un error
-
<n>.max-speed (bit, in) velocidad máxima; ignora el parámetro loop-time y ejecuta Modbus a velocidad máxima, a expensas de un mayor uso de CPU. Uso sugerido durante el posicionamiento del husillo.
3. Parámetros
Donde <n> es vfs11_vfd o el nombre dado durante la carga con la opción -n.
-
<n>.frequency-limit (float, RO) límite superior de frecuencia leído desde la configuración del VFD.
-
<n>.loop-time (float, RW) con qué frecuencia es consultado el Modbus (predeterminado a un intervalo de 0.1 segundos)
-
<n>.nameplate-HZ (float, RW) Hz en la placa del fabricante del motor (predeterminado a 50). Se usa para calcular la frecuencia objetivo (junto con las RPM en la placa del fabricante) para un valor objetivo de RPM dado por un comando de velocidad.
-
<n>.nameplate-RPM (float, RW) RPM en la placa del fabricante del motor (predeterminado a 1410)
-
<n>.rpm-limit (float, RW) límite suave de RPM, que no debe exceder las RPM del motor (predeterminado a nameplate-RPM).
-
<n>.tolerance (float, RW) tolerancia de velocidad (predeterminado a 0.01) para determinar si el husillo esta en velocidad (0.01 significa: la frecuencia de salida esta dentro del 1% de la frecuencia objetivo)
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.