$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_LINEAREF_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