$TITLE TREFILADORA-BANCO 2
$AUTHOR SPA
$COMPANY CT IBERIA/TEUREMA-COLIMA
$VERSION 1.0
$DRIVE Unidrive
$DEFINE DRIVE_RUN% #1.11
$DEFINE REF_LINEA #1.21
$DEFINE REF_FINAL #1.22
$DEFINE RATIO_INT #1.24
$DEFINE POS_COMP #7.01
$DEFINE RATIO_BASE_PLC #20.10
$DEFINE RATIO_BASE #20.12
$DEFINE REF_COMP #20.19
$DEFINE GP1 #20.20
$DEFINE GP2 #20.21
$DEFINE GP_LIMITE #20.22
$DEFINE UMB1_VL #20.23
$DEFINE UMB2_VL #20.24
$DEFINE Gintegral #18.11
$DEFINE BJOG% #18.31
$DEFINE BEMER% #18.32
$DEFINE BRESET% #18.33
$DEFINE BSOFTREF% #18.34
$DEFINE BHABINT% #18.35
$DEFINE BSEL_RATIO% #18.36
$DEFINE BHAB_ROTOR% #18.37
$DEFINE CONFIG_UNI% #18.50
NOTES{
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VARIADOR: UNIDRIVE 3403 22 kw 46 A SW: 03.01.05 UD73 (PROFIBUS)
MOTOR: 22 kw 1465 rpm 415 v 39.7 A FP 0.85 Encoder: +5v 1024 imp/rev
BAILARINA: Detector inductivo lineal (4-20mA)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
En caso de sustitucion de variador:
1: Configurar variador en modo bucle cerrado:
#00.00=1253 (codigo acceso), luego cambiar
#0.48=CL.VECT + RESET (pulsar tecla roja)
2: Codigo acceso a menus avanzados >> #00.00=149
3: Los parametros de variador se cargan automaticamente la primera vez que se conecta el variador con la UD70 programada ya que
al encontrar que bit de configuracion del UNIDRIVE #18.50=0 inicialmente esta a cero se carga el set de configuracion residente
en la subrutina CONFIGURACION. El bit #18.50 se pone automaticamente a uno.
Si se desea cargar en cualquier momento la configuracion poner primero #18.50=0 y luego #17.19=1.
4: Guardar datos en memoria #0.00=1000 + RESET (tecla roja)
5: Efectuar reset UD73 por alguno de los dos metodos siguientes:
Metodo 1: parametro #00.00=1070 + RESET (tecla roja). El numero se borra automaticamente despues del reset.
Metodo 2: parametro #17.19=1. Este parametro vuelve a cero automaticamente.
Nota 1:numero de ciclos por segundo escritos en la red Profibus #20.50 (depende del numero de nodos)
Nota 2: en caso de algun fallo del Profibus en la UD73 se dispara la alarma TR60 (ya que #17.14=1)
Nota 3: en caso de presencia TRIP 60 esporadico disminuir la velocidad de transmisión PROFIBUS en el PLC
PROFIBUS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
INPUT WORD 1 Control variador #9011
INPUT WORD 2 Ref. vel. de linea #1.21
INPUT WORD 3 Ratio de base #20.10
OUTPUT WORD 1 Status variador #9011
OUTPUT WORD 2 Velocidad motor #3.02
OUTPUT WORD 3 Posicion compensador #7.01
Word Control variador
Bit habilitacion variador PROFIBUS (b0) #6.15
Bit run variador PROFIBUS (b1) #6.30
Bit de jog variador PROFIBUS (b7) #18.31 BJOG%
Bit de emergencia PROFIBUS (b8) #18.32 BEMER%
Bit de reset variador PROFIBUS (b13) #18.33 BRESET%
ETIQUETAS
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
REF_LINEA #01.21 Velocidad de linea enviada a través de PROFIBUS
REF_FINAL #01.22 Referencia de velocidad resultante
RATIO_INT #01.24 Ratio calculado por efecto integral del compensador
RATIO_BASE_PLC #20.10 Ratio base aplicado desde el PLC
RATIO_BASE #20.12 Ratio base aplicado desde el UNIDRIVE (si no se emplea el del PLC)
REF_COMP #20.19 Posicion teorica compensador (bailarina) aproximadamente al 50%
GP1 #20.20 Ganancia proporcional inicial (fija)
GP2 #20.21 Ganancia proporcional final (variable) >> cantidad que se reduce a GP1
GP_LIMITE #20.22 Limite correccion proporcional compensador (RPM)
UMB1_VL #20.23 Umbral de velocidad bloqueo-desbloqueo integrador congelado (#14.17)
UMB1_VL #20.23 Umbral de velocidad desbloqueo integrador
UMB2_VL #20.24 Umbral de velocidad inicio aplicación ganancia variable
BJOG% #18.31 Bit de jog procedente de PROFIBUS
BEMER% #18.32 Bit de emergencia desde PROFIBUS
BRESET% #18.33 Bit de reset variador
BSOFTREF% #18.34 Bit activacion función adaptacion suave referencia compensador a ultima posicion
BHABINT% #18.35 Bit habilitacion integrador PID menu 14 (integrador)
BSEL_RATIO% #18.36 Bit de seleccion fuente del ratio base (PLC / UNIDRIVE)
BHAB_ROTOR% #18.37 Bit de habilitacion adaptacion suave ganancia integral PID velocidad (#3.11)
DRIVE_RUN% #01.11 Bit de variador en RUN
CONFIG_UNI% #18.50 Bit de configuracion inicial de UNIDRIVE (restaura parametros de puesta en marcha)
Gintegral #18.11 Ganancia integral bucle velocidad
}
CONFIGURACION:{
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 1 >> CONTROL REFERENCIAS
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#1.04=0 ; offset referencia
#1.06=1600 ; velocidad máxima (RPM motor)
#1.09=1 ; habilita offset #1.04
#1.10=0 ; referencia unipolar
#1.14=3 ; selecciona preset
#1.15=2 ; selecciona Preset 2 (#1.22)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 2 >> CONTROL RAMPAS
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#2.02=0 ; sin rampas
#2.04=1 ; selecciona modo frenada por resistencia (FAST)
#2.08=700 ; tensión de rampa standard
#2.11=2.0 ; rampa aceleracion
#2.21=2.0 ; rampa deceleracion
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 3 >> CONTROL REALIMENTACION VELOCIDAD
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#3.08=#1.06*1.1 ; umbral sobrevelocidad motor (RPM)
#3.10=1200 ; ganancia proporcional
#3.11=35 ; ganancia integral
#3.12=5 ; ganancia derivativa
#3.23=1 ; alimentacion 15V para encoder motor
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 4 >> CONTROL BUCLE CORRIENTE
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#4.07=180 ; limite total intensidad motor
#4.06=180 ; limite regenerativo
#4.15=400 ; constante térmica del motor (en segundos)
#4.12=1 ; constante de tiempo filtro demanda corriente
#4.16=1 ; seleccion modo proteccion motor
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 5 >> MAPA DE MOTOR
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#5.06=50 ; frecuencia base motor (Hz)
#5.07=39.70 ; intensidad nominal motor (A)
#5.08=1465 ; velocidad nominal motor (RPM) >> modificado automaticamente a 1758 RPM (#5.27=1)
#5.09=415 ; tensión nominal motor (V)
#5.10=0.960 ; factor potencia motor (calculado en test AUTOTUNING)
#5.11=1 ; número polos motor (1=4 POLOS)
#5.20=1 ; habilitación onda cuasi-cuadrada
#5.24=3.908 ; inductancia motor (test AUTOTUNING)
#5.27=1 ; activa autoajuste deslizamiento (afecta a #5.08) >> mejora rendimiento motor una pasada
#5.29=70 ; curva 1 saturación motor (test AUTOTUNING)
#5.30=95 ; curva 2 saturación motor (test AUTOTUNING)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 6 >> SECUENCIADOR
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#6.01=2 ; parada sin rampas (no_RP)
#6.04=3 ; modo control PLC
#6.08=0 ; sin par cuando cae el RUN (equipo en RDY)
#6.19=1 ; cambio de filtro requerido
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 7 >> ENTRADAS/SALIDAS ANALOGICAS
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#7.06=4 ; configura canal 1 analogico, borna 5 (20-4 tr mA) lectura compensador
#7.10=0 ; borna 5 entrada compensador
#7.19=7.01 ; asigna salida analogica borna 9 a lectura compensador (osciloscopio)
#7.22=4.02 ; salida analogica borna 10 >> intensidad motor activa
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 8 >> ENTRADAS/SALIDAS DIGITALES
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#8.11=1 ; Invierte salida borna 24 (velocidad cero)
#8.13=0 ; desconfigura borna 25 (reset variador, antes a #10.33)
#8.16=0 ; desconfigura borna 26 (jog variador, antes parametro #6.31)
#8.19=0 ; desconfigura borna 27 (run forward variador, antes parametro #6.30)
#8.21=0 ; desconfigura borna 28 (run reverse variador, antes parametro #6.32)
#8.23=0 ; desconfigura borna 29 (antes #1.41)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 14 >> BLOQUE PID
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#14.03=20.19 ; asigna entrada referencia bloque PID (posición teorica compensador)
#14.04=7.01 ; asigna entrada feed-back bloque PID a parametro #7.01 (posición real compensador)
#14.09=18.35 ; habilitacion PID desde parametro #18.35 (BHABPID%)
#14.10=0 ; ganancia proporcional bloque PID (ganancia cero) (solo integral)
#14.11=0.070 ; ganancia integral bloque PID
#14.16=1.24 ; asigna salida bloque PID
#14.15=0.010 ; (#1.24= 30000 * 0.010 = 300) >> ratio 0.300 * #1.06 = 300 rpm
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Menu 17 >> CONTROL MODULO UD73
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#17.05=11 ; direccionamiento port RS485
#17.06=1 ; modo RS485 (4 hilos)
#17.07=5 ; velocidad port RS385 (9600 bauds)
#17.11=50 ; base de tiempos tarea clock (50 mS)
#17.13=1 ; AUTORUN DPL program
; #17.14=1 ; habilita fallos desde UD73
#17.20=1 ; Guardar datos menu #20 en memoria al desconectar tensión
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Inicialicación variables de usuario
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RATIO_BASE=1000 ; valor Ratio Base (cuando no procede del PLC)
REF_COMP=16000 ; valor posicion compensador (40 %)
BHABINT%=1 ; set bit habilitacion integrador (PID menu 14)
BSOFTREF%=1 ; set bit activacion funcion adaptacion suave ref. compensador a ultima posicion
BSEL_RATIO%=0 ; selecciona ratio desde PLC
BHAB_ROTOR%=1 ; funcion habilitada
GP1=1500 ; valor ganancia proporcional
GP2=-700 ; valor ganancia proporcional variable >> cantidad que se reduce a GP1
GP_LIMITE=100 ; valor limite RPM correccion proporcional
UMB1_VL=30 ; valor umbral (RPM) activa-desactiva congelacion integral (#14.17) >> no utilizado
UMB2_VL=100 ; valor umbral activacion ganancias variables (RPM)
Gintegral=35 ; valor iniciual ganancia integral PID velocidad
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// GUARDAR PARAMETROS Y RESET UNIDRIVE
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CONFIG_UNI%=1 ; set bit configuracion UNIDRIVE valores por defecto (ya no se volveran a poner por defecto)
#1.00=1000
#10.38=100
}
INITIAL{
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// PROFIBUS
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#20.01=121 ; configura IN WORD 2 (referencia de velocidad)
#20.02=2010 ; configura IN WORD 3 (ratio PLC menu 20 param. 10)
#20.03=302 ; configura OUT WORD 2 (velocidad motor)
#20.04=701 ; configura OUT WORD 3 (posicion bailarina)
#20.05=11 ; direccionamiento variador BANCO 2
#20.06=9011 ; configura IN WORD 1 (palabra de control variador)
#20.07=9011 ; configura OUT WORD 1 (status variador)
#20.11=0
#20.14=0
#20.15=0
IF CONFIG_UNI%=0 THEN CALL CONFIGURACION:
REF_COMP1=REF_COMP ; valor inicial ref. compensador
BHABINT%=1 ; bit habilitacion PID menu 14 (integrador)
Contador%=0
VLantes=#1.21 ; bit de acel-decel
VLahora=#1.21 ; bit de acel-decel
C%=0 ; bit de acel-decel
Acc%=0 ; bit de acel-decel
Dec%=0 ; bit de acel-decel
Tacc%=100 ; bit de acel-decel >> tiempo de accion aceleracion (Tacc%*Tbaseclock)
Tdec%=100 ; bit de acel-decel >> tiempo de accion deceleración (Tdec%*Tbaseclock)
Timac%=Tacc% ; bit de acel-decel
Timdec%=Tdec% ; bit de acel-decel
T608%=20 ; tiempo desactivacion bit #6.08
}
BACKGROUND {
Inicio:
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CALCULO RATIOS
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF BSEL_RATIO%=0 THEN
RATIO1=RATIO_BASE_PLC/1000.0 ; ratio procedente del PLC
ELSE
RATIO1=RATIO_BASE/1000.0 ; ratio procedente del UNIDRIVE
ENDIF
RATIO2=1+RATIO_INT/1000.0 ; ratio resultante de la accion integral del compensador
IF BJOG%=0 THEN ; Si bit de jog a cero (#18.31=0 ) (normal)
IF ABS(#3.02)<3 THEN #2.02=0 ; con velocidad cero deshabilita rampas
#14.08=1 ; activa integrador
RATIO=RATIO1*RATIO2 ; ratio resultante = suma de los dos ratios
ELSE ; Si bit de jog a uno (#18.31=1) (solo en JOG)
IF BEMER%=0 THEN ; en modo normal
#2.02=1 ; habilita rampas
ELSE ; en paro de emergencia
#2.02=0 ; deshabilita rampas
ENDIF
#14.08=0 ; reset integrador
RATIO=RATIO1 ; ratio resultante = ratio PLC
ENDIF
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// GANANCIA PROPORCIONAL VARIABLE
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF BEMER%=0 THEN
IF REF_LINEA<UMB2_VL THEN ; si vel. linea menor que umbral
GP=GP1 ; aplica ganancia proporcional fija
ELSE ; si vel. linea mayor que umbral
GP=GP1 + ((REF_LINEA-UMB2_VL)*GP2)/#1.06 ; aplica ganancia prop. fija mas variable con la velocidad
ENDIF
GPactual=GP
ELSE
GP=GPactual*2
ENDIF
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// ACCION DEL COMPENSADOR
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF DRIVE_RUN%=1 AND BJOG%=0 THEN ; variador en marcha y bit JOG% a cero
; adaptacion suave de la referencia de compensador desde la ultima posicion (opcional)
IF BSOFTREF%=0 THEN ; adaptacion suave activada
REF_COMP1=REF_COMP ; valor de referencia compensador fijo
ELSE ; adaptacion suave desactivada
IF REF_COMP1>REF_COMP THEN REF_COMP1=(REF_COMP1-5)
IF REF_COMP1<REF_COMP THEN REF_COMP1=(REF_COMP1+5)
IF REF_COMP1>(REF_COMP-5) AND REF_COMP1<(REF_COMP+5) THEN REF_COMP1=REF_COMP
ENDIF
ERROR_POS=REF_COMP1/320-POS_COMP ; error de posicion del compensador
KP=LIMIT((ERROR_POS)*GP/1000.0,GP_LIMITE) ; accion proporcional compensador con limitacion
ELSE
KP=0 ; proporcional comp. a cero
#14.17=1 ; integrador parado
IF BSOFTREF%=1 THEN REF_COMP1=#7.01*320 ; adaptacion suave (opcional)
ENDIF
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// REFERENCIA FINAL DE VELOCIDAD
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
REF_FINAL=REF_LINEA*RATIO ; calcula referencia final con limite minimo cero
#1.04=KP ; correcion compensador (ATENCION: #1.09=1)
#1.25=INT(RATIO*1000) ; muestra ratio final (solo para visualizacion en parametro)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// RESET VARIADOR
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF BRESET% = 1 THEN #10.38=100 ; BRESET% = #18.33 proviene del PROFIBUS
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// ACOTACIONES
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF GP1<0 THEN GP1=0
IF GP2>GP1 THEN GP2=GP1 ; limite superior ganancia proporcional incremental
IF GP2<-GP1 THEN GP2=-GP1 ; limite inferior ganancia proporcional incremental
IF GP_LIMITE>200 THEN GP_LIMITE=200 ; valor maximo RPM limite correccion proporcional
IF GP_LIMITE<0 THEN GP_LIMITE=0 ; valor minimo RPM limite correccion proporcional
IF UMB1_VL<0 THEN UMB1_VL=0 ; valor minimo umbral 1
IF UMB2_VL<0 THEN UMB2_VL=0 ; valor minimo umbral 2
IF Gintegral<0 THEN Gintegral=0
IF Gintegral>1000 THEN Gintegral=1000
Contador%=Contador%+1
IF Contador%>=10000 THEN Contador%=0
GOTO Inicio:
}
CLOCK{
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CALCULO BIT ACELERACION-DECELERACION
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// determina cada 200 ms diferencial de velocidad de linea
IF C%=0 THEN VLantes=VLahora
IF C%=4 THEN VLahora=#1.21
IF VLahora>(VLantes+1) AND Dec%=0 THEN Acc%=1 ; bit de aceleracion
IF VLahora<(VLantes-1) AND Acc%=0 THEN Dec%=1 ; bit de deceleracion
C%=C%+1
IF C%>4 THEN C%=0
IF Acc%=1 THEN ; si bit aceleracion a uno
Timac%=Timac%-1 ; decrementa contador
IF Timac%<=0 THEN ; si contador a cero
Acc%=0 ; reset bit aceleracion
Timac%=Tacc% ; carga contador
ENDIF
ENDIF
IF Dec%=1 THEN
Timdec%=Timdec%-1 ; decrementa contador
IF Timdec%<=0 THEN ; si contador a cero
Dec%=0 ; reset bit deceleracion
Timdec%=Tdec% ; carga contador
ENDIF
ENDIF
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CONTROL DEL BIT #14.17 (MANTENER VALOR INTEGRAL)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF REF_LINEA<30 THEN ; si vel. linea menor de 30 RPM
#14.17=1 ; congela integral
ELSE ; si vel. linea mayor de 30 RPM
IF REF_LINEA>UMB1_VL THEN ; si velocidad de linea superior a 800 RPM
IF Acc%=0 AND Dec%=0 AND ABS(ERROR_POS) < 10 THEN ; en regimen estable y error compensador <10%
#14.17=1 ; congela integral
ELSE ; durante acel-decel o compensador fuera 10%
#14.17=0 ; libera integral
ENDIF
ELSE ; si velocidad de linea menor de 800 RPM
#14.17=0 ; libera integral
ENDIF
ENDIF
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CONTROL MOTOR A ROTOR PARADO
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
IF BHAB_ROTOR%=1 THEN
IF #1.11=0 AND ABS(#3.02)<3 THEN ; si motor parado y velocidad practicamente cero
IF #3.11>1 THEN ; si integral mayor de 1
#3.11=#3.11-1 ; reduce gradualmente ganancia integral a cero para evitar back slash
ELSE ; si integral menor o igual a 1
#3.11=0 ; integral =0
ENDIF
ELSE ; si motor en marcha
IF #3.11<Gintegral THEN ; si ganancia menor que Gintegral
#3.11=#3.11+1 ; incrementa gradualmente hasta ...
ELSE
#3.11=Gintegral ; aplica ganancia integral
ENDIF
ENDIF
ELSE
#3.11=Gintegral
ENDIF
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CONTROL DE #6.08 DESPUES DE UN TIEMPO DE PARARSE EL VARIADOR
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; IF DRIVE_RUN%=1 THEN
; #6.08=1
; T1%=T608%
; ELSE
; T1%=T1%-1
; IF T1%<=0 THEN
; #6.08=0
; T1%=T608%
; ENDIF
; ENDIF
}
ERROR{
#6.15=0 ; deshabilita variador en caso de error
}