View
222
Download
0
Category
Preview:
Citation preview
NX5 ejemplo práctico de automatización
1
¿Quieres aprender a programar un control NX5 y dispones de una hora?
El siguiente es un caso real de cómo automatizar un tanque elevado que es alimentado por una cisterna con dos
bombas sumergibles que deberán de ser alternadas en su operación para alargar y mantener pareja su vida en
operación, controladas por variadores de velocidad para arranque suave, y que tiene electrodos de nivel tanto para
el tanque elevado como para la cisterna.
Iremos paso por paso definiendo los problemas y como resolverlos usando un control NX5 y al final daremos
alternativas a las oportunidades de cómo conectarlo a:
Una PC vía USB ó por puerto RS-485 ó RS232
A una red de Edificio Inteligente
Al internet ó Intranet por vía Ethernet ó WiFi.
PASO 1: Analizar el problema.
En la siguiente figura vemos una representación gráfica del sistema con todos sus componentes.
FIGURA 1.
ALTO
BAJO
COMUN
Electrodos
de nivel
Tanque de
agua
ALTO
BAJO
COMUN
Electrodos
de nivel
Cisterna
1
Bombassumergibles
50 Hp
2
Suministro
de agua
VFD
1
VFD
2
Variadoresde velocidad
para arranque suave
FocoBomba 1
FocoBomba 2
FocoBajo nivel
cisterna
FocoFalla electrodos
del tanque
FocoFalla electrodos
de cisterna
PASO 2: Dimensionar el número de entradas y salidas que necesitamos.
Tenemos cuatro entradas digitales que son: Los electrodos del tanque y la cisterna con sus comunes. Como salidas
tenemos dos señales para arrancar los variadores VFD que están configurados para arranque suave de los motores
de las bombas de 50 Hp, dos focos indicadores de operación de una u otra bomba, y tres indicadores adicionales de
alarmas que son: Bajo nivel de agua en la cisterna, y fallas en los electrodos del tanque ó la cisterna. Esto nos dá un
total de siete salidas digitales.
NX5 ejemplo práctico de automatización
2
PASO 3: Seleccionar el control que necesitamos.
El NX5 cuenta con ocho entradas que son binarias y digitales, ocho salidas digitales tipo relevador y dos salidas
analógicas, por lo que con un solo módulo podemos resolver el problema, en la siguiente página mostramos el
diagrama eléctrico del tablero.
FIGURA 2. Salidas
NX5
SB-1Arranque
bomba 1
SB-2Arranque
bomba 2
SB-3Foco de
operación
bomba 1
SB-4Foco de
operación
bomba 2
SB-5
Foco de
alarma
bajo nivel
cisterna
SB-6Foco falla
electrodos
tanque
SB-7Foco falla
electrodos
cisterna
SB-8Libre
VFD 1Selector B1Auto
Manual
Off
VFD 2Selector B2Auto
Manual
Off
A1 A2120
vac
Arranque B1
A1 A2120
vac
Arranque B2
A1 A2120
vac
Bajo nivel cisterna
A1 A2120
vac
Falla elect. tanque
A1 A2120
vac
Falla elect. cisterna Fusible
5A / 120V
L120
vac
N
Fuente
12 vdc / 1A 0v
+12
001
002
002
005
002
002
002
002
002
003
003
003
003
003
003
010
011
012
013
014
010
011
012
013
014
015
016
017
018
016 016
015
017
018 018
019019
019
020020
020
Libre
Libre
SA-1
SA-2
002
004
Entradas
NX5Electrodos
del tanque
elevado
Electrodo
bajo de
tanque
Electrodo
altode
cisterna
Electrodo
bajo de
cisterna
Libre
Libre
Libre
Libre
041ALTO
BAJO
Común
Electrodos
de la
cisterna
ALTO
BAJO
Común
Transformador
T1
120
vac24 vac
24
vac
A1
A2
RY1
TA24
vac
A1
A2
RY2
TB
002
003
040 Amarillo
Azul Blanco
Negro
24
vac
A1
A2
RY3
CA24
vac
A1
A2
RY4
CB
040
040
040
040
042
043
044
045
041
041
044
045
042
043
Electrodo
alto de
tanque
RY1
RY2
RY3
RY4
EB-1
EA-1
EB-2
EA-2
EB-3
EA-3
EB-4
EA-4
EB-5
EA-5
EB-6
EA-6
EB-7
EA-7
EB-8
EA-8
051
004 +12
004
004
004
004
052
053
054
N
L
Para los electrodos se usarán relevadores a 24 vac con un transformador de aislamiento para detectar nivel alto y
bajo tanto en tanque como en la cisterna cerrando el circuito eléctrico a través del agua. Usando corriente alterna se
evita en gran medida la sulfatación de los electrodos causada cuando se usa corriente directa, el contacto seco de los
relevadores se usará para alimentar las entradas binarias, que detectan UNO cuando hay 12 vdc que proviene de la
misma fuente que alimenta al NX5, y detectan un CERO cuando el electrodo está en el aire y el contacto del relay se
abre.
Para arrancar las bombas, se usan los contactos de los relays de las salidas binarias del NX5 que tienen capacidad
interruptora de hasta 25 amperes a 120/220 volts. La señal de arranque que se envía al variador de frecuencia VFD
se pasa a través de interruptores de selección de tres posiciones: AUTO / OFF / MANUAL. En este caso los variadores
están pre-programados a 60 Hz y solo se usan como arranque suave.
Los focos a 120 vac se manejan directamente a través de los contactos de los relevadores de las salidas binarias SB-3
a SB-5.
NX5 ejemplo práctico de automatización
3
PASO 4: Definir la secuencia del control de las bombas.
Las dos bombas se deberán de alternar, cada vez que una arranque y pare, la siguiente ocasión que se
requiera arrancar, la otra bomba entrará para balancear su uso y dar más tiempo entre el arranque de cada
bomba.
En caso de que en la cisterna el nivel de agua se encuentre por debajo del nivel del electrodo BAJO, pararán
las bombas, y no se permitirá su arranque nuevamente, hasta que el nivel de la cisterna haya llegado al
electrodo de nivel ALTO. Lo recomendable, es poner el electrodo del COMUN a 5 centímetros del fondo de
la cisterna, el electrodo bajo a 15 centímetros del fondo de la cisterna y el de nivel alto entre 30-50
centímetros del fondo de la cisterna.
Para el caso del arranque de las bombas, estás arrancarán cuando el agua en el tanque baje abajo del nivel
del electrodo BAJO y pararán cuando el nivel del agua llegue al electrodo ALTO, siempre y cuando se cumpla
con el nivel de agua en la cisterna como se describe en el punto anterior. Se recomienda que el electrodo
COMUN se encuentre a 5 centímetros sobre el fondo del tanque, el de nivel BAJO a una altura que sea 25%
del nivel de llenado del tanque, y el de nivel alto a un 85% de llenado del tanque.
En caso de que el nivel de la cisterna se encuentre abajo del electrodo BAJO se encenderá el foco de alarma
con un parpadeo de 2 segundos, y se apagará hasta que el agua de la cisterna llegue nuevamente al
electrodo ALTO.
Para detectar falla de los electrodos, se monitoreará el caso de que el electrodo ALTO detecte nivel de agua
y se revisará que el electrodo BAJO también detecte, en caso de que el electrodo ALTO detecte nivel y el
BAJO no, es un indicativo de que hay un problema en la colocación de los electrodos o una posible falla
causada por corrosión en el cableado ó el mismo electrodo. Esta condición hará que el foco respectivo del
tanque ó cisterna parpadee con un periodo de dos segundos.
Se deberá de llevar la cuenta de las horas de operación de las bombas para efecto de poder programar el
mantenimiento respectivo de las mismas, esto se hará internamente en el NX5 para evitar tener que usar un
horómetro externo.
NX5 ejemplo práctico de automatización
4
PASO 5: Manos a la obra.
Vamos a empezar la programación de la lógica de control, usando la técnica de “divide y vencerás”, por lo que cada
una de las secciones del paso anterior, las analizaremos individualmente y crearemos los bloques necesarios en el
NX5 usando las funciones de programación disponibles y comentándolas.
Pero antes haremos una pequeña pausa para recordar que nos ofrece cada NX5 así como cada expansión que le
añadimos:
8 Entradas universales compartidas analógicas ó binarias para contacto seco, voltaje DC, mili-amperes y
sensores de temperatura resistivos.
8 Salidas binarias tipo relevador.
2 salidas analógicas de 0-10 vdc.
255 registros de resultado tipo BIT almacenados en RAM de resultado binarios respaldados por batería.
40 registros de resultado tipo FLOAT almacenados en RAM de resultado binarios respaldados por batería.
300 registros permanentes para puntos de ajuste y configuración almacenados en memoria EEPROM. Cien
de cada uno de los tres diferentes tipos; BYTE (8 bits), WORD (16 bits) y FLOAT (32bits).
400 bloques para programación de funciones almacenadas en memoria EEPROM.
400 horarios para iluminación ó generales almacenados en memoria EEPROM.
16 gráficas almacenados en memoria EEPROM.
200 etiquetas para identificar entradas, salidas y registros, almacenadas en memoria EEPROM.
50 puntos remotos que se dan de alta vía puertos de comunicaciones ó vía inalámbrica.
¡Wow! Cuantos recursos en tan poco espacio, y los podemos multiplicar hasta X5 instalando las cuatro expansiones
adicionales de NX5 permitidas en cada configuración.
Bueno, ya basta de palabras y vamos directo a la programación, el primer punto que definimos en el PASO 4 dice así:
“Las dos bombas se deberán de alternar, cada vez que una arranque y pare, la siguiente ocasión que se requiera
arrancar, la otra bomba entrará para balancear su uso y dar más tiempo entre el arranque de cada bomba”.
Por lo que viendo en las funciones del NX5 usaremos la función de ALTERNADO Y SIMULTANEO, pero antes como
buenos programadores que somos vamos a ORGANIZAR, y conste que lo escribo con mayúsculas, ya que con tantas
capacidades que el NX5 nos ofrece, vamos a organizar la casa declarando nuestras entradas y salidas usando la
opción de ETIQUETAS DE NOMBRES que podemos ver en la figura 3 en la siguiente página. Para más detalles de
cada opción les pido consultar el MANUAL DE INSTALACION Y PROGRAMACION DEL NX5.
FIGURA 3.
NX5 ejemplo práctico de automatización
5
Aquí daremos de alta las etiquetas de las 4 entradas y 7 salidas que definimos en el paso 2 y las documentaremos
con el botón de VER TODAS LAS ETIQUETAS una vez que las hayamos creado.
ETIQUETA-1, EB -1, [Elect. Tanque ALTO]
ETIQUETA-2, EB -2, [Elec. Tanque BAJO]
ETIQUETA-3, EB -3, [El. Cisterna ALTO]
ETIQUETA-4, EB -4, [El. Cisterna BAJO]
ETIQUETA-5, SB -1, [Arranque Bomba 1]
ETIQUETA-6, SB -2, [Arranque Bomba 2]
ETIQUETA-7, SB -3, [Foco Bomba 1]
ETIQUETA-8, SB -4, [Foco Bomba 2]
ETIQUETA-9, SB -5, [AL bajo nivel cist]
ETIQUETA-10, SB -6, [AL electr. tanque]
ETIQUETA-11, SB -7, [AL electr. cister.]
Ya teniendo los nombres de nuestras entradas y salidas definidas, empezaremos con nuestro primer bloque,
entrando en la sección de BLOQUES LOGICOS que nos muestra la figura 4.
Figura 4.
Y para comenzar “organizando” los bloques de igual manera, el primer bloque de los 400 que tenemos disponibles
será una ETIQUETA DE SECCCION para recordarnos donde estamos, y cuando generemos la documentación del
programa al final de este tutorial recordemos que es cada grupo de bloques que programemos.
Para poder programar, hay que sacar al NX5 de línea oprimiendo el botón de ON LINE, y como el bloque #1 en un
NX5 nuevo es el ULTIMO BLOQUE DE PROGRAMA (END para los que han programado en Basic) hay que borrar este
bloque antes de crear la etiqueta, por lo que oprima los botones en el orden que aparece en la figura 5 de la
siguiente página.
NX5 ejemplo práctico de automatización
6
Figura 5.
Y vamos a crear una etiqueta que diga ALTERNADO, eso es todo para nuestro primer bloque, ya empezamos a
programar, ¿Qué tal hasta aquí?
Para programar el segundo bloque vamos a usar los botones << ý >> para movernos hacia adelante y atrás en los
bloques, por lo que nos posicionaremos en el bloque #2, y repetiremos los pasos #1 y #2 para sacar el NX5 de línea y
borrar el bloque #2, (si no queremos que se vuelva a poner en línea automáticamente podemos deshabilitar la
paloma AUTO que está sobre el botón de ON LINE).
En el paso #3 seleccionaremos el botón de FUNCION DE ALTERNADO Y SIMULTANEO que está localizado 2 botones
arriba del botón de ETIQUETA DE SECCION que usamos en el bloque #1 y lo llenaremos de acuerdo a la los datos que
aparecen en la figura 6 de la siguiente página.
NX5 ejemplo práctico de automatización
7
Figura 6.
En la operación ya está FUNCION DE ALTERNADO seleccionada.
En las opciones seleccionaremos ALTERNADO ya que no deseamos la función de alternado y simultaneo.
También INCREMENTAR que en un sistema de alternado solo hay UNO ó DOS por lo que dá lo mismo que
pongamos, pero si seleccionamos de 3 hasta 8 etapas, esto nos permite el orden en que el módulo alternará
y/o simultaneará las salidas 1,2,3,4…. ó ….4, 3, 2, 1.
No definimos en nuestro diseño del sistema ni entradas ni de RETROALIMENTACION DE ESTADO ni entradas
para HABILITAR EXTERNO cada etapa, por lo que dejaremos esas dos opciones en blanco, pero es bueno
saber que ahí están disponibles cuando las necesitemos y que la retroalimentación apaga las salidas que se
hayan prendido, si una vez transcurrido el tiempo programado en el TIMER PARA ALARMAR haya
transcurrido, y que habilitar entradas externas, permite usar una señal externa para habilitar ó deshabilitar
etapas individualmente.
La opción de VARIABLE DE PROCESO ANALOGICA también la deseleccionamos ya que nuestro variable de
proceso para arrancar las bombas proviene de los electrodos y es binaria, ARRANQUE ó PARO. Pero es
conveniente saber que puede ser alguna variable analógica como por ejemplo una presión, flujo, etc, y que si
seleccionamos una variable analógica, también tenemos un SET POINT y una BANDA PROPORCIONAL para
programarle al módulo.
Pasando a la sección de operandos, el OPERANDO 1 que nos indica un bloque de entradas contiguas, en el
caso de que hubiéramos seleccionado las opciones de; retroalimentación ó habilitar externo. Pero como no
seleccionamos ninguna de estas opciones, el operando está deshabilitado.
NX5 ejemplo práctico de automatización
8
En el OPERANDO 2 seleccionamos que va a controlar el módulo, en este caso selecciona un bloque contiguo
de SALIDAS BINARIAS ó registro de RESULTADO BIT. Usaremos el segundo ya que antes de prender ó apagar
un relevador para prender una bomba queremos asegurarnos de que el nivel de la cisterna se encuentra
bien, por lo que usaremos los registros RES_BIT-40 y RES_BIT-41 ya que estamos usando DOS etapas. ¿Por
qué no comenzar en los registros RES_BIT-1 y 2?, esto es por que como vemos en la siguiente figura, de los
255 registros de resultado tipo bit, hay ciertos bloques que están reservados para ciertas funciones, y el
bloque que va del RES_BIT-40m al RES_BIT-250 están destinados a ser utilizados por el usuario en cualquier
uso que desee darles, sin interferir en otras funciones ó bloques.
Figura 7.
En el OPERANDO 3 seleccionaremos en qué tipo de registros y su posición en la memoria EEPROM
almacenaremos nuestros parámetros del módulo de alternado y simultaneo, seleccionaremos en este caso
un bloque de 6 registros tipo BYTE que van del ADB-1 al ADB-6 y que, el primero contiene el # de etapas del
módulo de alternado que en este caso son DOS etapas. En el campo de la etapa líder solo podemos poner 1
ó 2, y este es el número de salida que primero se activará. Este número de etapa líder será incrementado ó
decrementado según hayamos seleccionado en las opciones en uno de los puntos anteriores. Los siguientes
parámetros como son el # del timer que controla el tiempo para pasar a la siguiente etapa de simultaneo, el
# del timer que para la(s) salida(s) si no se registro la retroalimentación de estado de arranque , así como el
set-point y banda proporcional (histéresis) en caso de usar variable de proceso analógica, están
deshabilitadas y estos registros del ADB-3 al ADB-6 están disponibles para otro uso por el usuario.
Al final el OPERANDO 4 usaremos el registro de resultado RES_BIT-42 nos indica qua es la variable usada por
la función de alternado y simultaneo para el ARRANQUE (cuando la variable binaria es CERO ó la variable
analógica es < SETPOINT-BANDA_PROPORCIONAL) ó para el PARO (cuando la variable binaria está en UNO ó
la variable analógica es >= SETPOINT).
Ya por último y no menos importante, es oprimir el botón de; ETIQUETAS DE NOMBRES y dar de alta las
variables que vamos a usar en este módulo que son:
ETIQUETA-12, RES_BIT-40, [Salida etapa 1]
ETIQUETA-13, RES_BIT-41, [Salida etapa 2]
ETIQUETA-14, RES_BIT-42, [Arranque/paro alt.]
ETIQUETA-15, ADB -1, [# de etapas ]
ETIQUETA-16, ADB -2, [Etapa lider]
Con esto terminamos el Bloque #2 de nuestro programa solo opriman OK para salvarlo al PLC dl NX5 y ya quedo
grabado el bloque y empieza a operar inmediatamente, lógicamente aún no conectamos las entradas ni salidas del
bloque a nuestras entradas y salidas físicas (de Hardware) del NX5, pero ahí vamos como dice aquella canción;
“pasito a pasito”.
¿Parece complicado? No te preocupes. Esta función de alternado y simultáneo es junto con la de control
proporcional las más laboriosas de programar del NX5, y esto es porque atrás de estas funciones hay cientos de
líneas de código que permiten que la función opere como lo queremos.
NX5 ejemplo práctico de automatización
9
DOCUMENTACION
Antes de seguir adelante, es bueno revisar lo que estamos haciendo y ver que no hemos metido la pata, para esto
contamos con la opción de GENERAR DOCUMENTACION que podemos ver en la figura 5 páginas atrás, en la sección
de ALMACENAR que al oprimirla nos mostrará un resumen de lo que hemos hecho hasta ahora (SE MUESTRA SOLO
UN LISTADO PARCIAL AQUÍ POR CUESTIONES DE ESPACIO): ===============================================================
[BLOQUE 1]
TIPO=29 [ ETIQUETA SEPARADORA ]
[ALTERNADO]
===============================================================
[BLOQUE 2]
TIPO=27 [ ALTERNADO ]
Dir.altern.:[ARRIBA] retroal.:[NO] habil.ext.[NO] var.proc[BINARIO]
OP1:[ EB-01 ] 1a entrada *(opcionales)
OP2:[ RES_BIT-40 ] 1a salida
OP3:[ ADB-01 ] Indice a puntos de ajuste
OP4:[ RES_BIT-42 ] Variable de proceso
===============================================================
[BLOQUE 3]
TIPO=255 [ ULTIMO_BLOQUE ]
[FIN]
========================================================================================================
RESUMEN: 2 bloques usados de 400, 99.50% disponible
========================================================================================================
TIPO FUNCION # veces encontrada
------------ ------------------
TYP_ALTERN_SIMUL 1
TYP_SECTION_LABEL 1
========================================================================================================
REFERENCIAS CRUZADAS
========================================================================================================
DATOS EEPROM BYTE ADB
ADB-01 Nombre: [# de etapas ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [002],
:
========================================================================================================
DATOS RAM RES_BIT
RES_BIT-40 Nombre: [Salida etapa 1]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada…
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [002],
:
========================================================================================================
TOTAL DE AVISOS ENCONTRADOS: 2 Buscar el texto "AVISO:" para encontrar los avisos reportados.
¡Ándale que bonito! Y si vemos de la pantalla principal nuestro hardware, podemos ver lo que hasta ahora hemos
configurado de entradas y salidas en el NX5 visualmente, ver figura 9 en la siguiente página.
Figura 8.
NX5 ejemplo práctico de automatización
10
Figura 9.
Continuando con la buena costumbre de ORGANIZAR (y lo pongo en mayúsculas nuevamente que conste) vamos al
bloque #3 y después de borrarlo, vamos a crear otra ETIQUETA DE SECCION que diga ENTRADAS.
Siguiendo con esta cadencia de; SIGUIENTE BLOQUE BORRAR CREAR NUEVO, en el bloque #4 vamos a crear la
lógica para el segundo punto que definimos en el PASO 4 (ver página 3), y que dice:
“En caso de que en la cisterna el nivel de agua se encuentre por debajo del nivel del electrodo BAJO, pararán las
bombas, y no se permitirá su arranque nuevamente, hasta que el nivel de la cisterna haya llegado al electrodo de
nivel ALTO. Lo recomendable, es poner el electrodo del COMUN a 5 centímetros del fondo de la cisterna”.
Para todos aquellos que llevan años trabajando en instalaciones y que están acostumbrados a los tableros eléctricos
convencionales sin PLC´s ni controles inteligentes ni cosas por el estilo, la figura 10 de la siguiente página nos
muestra como lo haríamos con contactos, relevadores y anexos.
NX5 ejemplo práctico de automatización
11
Figura 10.
SW1 SW2
Arranque Paro
RY1-A
Mantener
SW3 SW4
Alto Bajo
RY2-A
Mantener
TM1-A
Reset
Bajo
1s
VOLTAJE
RY1RY1-B
Arranque/Paro
tanque elevado
Arranque/Paro
tanque elevado
RY2RY2-B
Nivel de cisternaNivel de Cisterna
TM1
Nivel de Cisterna
RY2-C
Cisterna
Ahora si nos entendemos ¿no? Bueno, según los eruditos en Tablerología I, II y III, podemos leer el diagrama como
sigue:
- Para el arranque y paro de cualquiera de las dos bombas (el alternado lo dejamos por la paz en este
diagrama eléctrico para no volvernos locos aún antes de empezar, además ya lo resolvimos fácilmente con el
bloque #2 páginas atrás), la bomba arrancará solo cuando el contacto auxiliar RY1-B del relevador RY1 se
cierre, esto sucede cuando el SW1 de ARRANQUE esté CERRADO y el SW2 de PARO se encuentre CERRADO,
siempre y cuando el nivel de la cisterna representado por el contacto auxiliar del relay #2, RY2-C esté
cerrado, mantendremos la condición de arranque aún cuando el SW1 de arranque se abra después del
arranque , retroalimentando la señal por medio del contacto auxiliar RY1-A, y solo será hasta que la señal de
PARO del SW2 se abra que pararemos la(s) bomba(s).
- Para el nivel de la cisterna representado por el relevador RY2 la lógica es la que sigue, el contacto auxiliar
RY2-B nos indicará que el nivel de la cisterna está OK cuando esté cerrado ya que el RY2 está energizado si el
electrodo de nivel ALTO SW3 está cerrado ó el contacto auxiliar RY2-A está cerrado ó el contacto auxiliar del
timer TM1 está cerrado (cosa que sucede al energizar el circuito durante 1 segundo por el timer tipo ONE
SHOT del TM1), siempre y cuando el electrodo de nivel BAJO SW4 está CERRADO.
Ahora viene la parte donde decimos “En la Mauser ¿Y ahora como meto esto al NX5?” Pues bueno, lo haremos
como lo hicimos atrás, lo vamos a desglosar paso por paso, empezando por analizar la figura 11 en la siguiente
página.
NX5 ejemplo práctico de automatización
12
Figura 11.
EB-1 EB-2
Arranque Paro
RES_BIT-44
Mantener
EB-3 EB-4
Alto Bajo
RES_BIT-46
Mantener
RES_BIT-251
Reset
Bajo
1s
RY1RES_BIT-44
Arranque/Paro
tanque elevado
Arranque/Paro
tanque elevado
RY2RES-BIT-46
Nivel de cisternaNivel de Cisterna
TM1
Nivel de Cisterna
RES_BIT-46
Cisterna
43 44OR
AND
45 46OR
AND
251
Reset
+1s
Tanque
Cisterna
Reset
Lo primero por hacer en el bloque #4 usar una FUNCION LOGICA OR poniendo como bit de resultado el
RES_BIT-43 representado en la figura 11 como un OCTAGONO AZUL con el número 43. Los operandos de la
función OR, serán; OPERANDO-1 la entrada binaria EB-1 y el OPERANDO-2 el bit de resultado RES-BIT-
44 que como vemos en la figura 11, será el bit de resultado de la función AND que será el siguiente bloque
que demos de alta en el bloque #5 y con esto retroalimentamos la señal para obtener la señal de
MANTENER. Los OPERANDOS-3 y 4 los dejaremos como NULL, indicando que la función OR solo usará dos
términos. Vemos el resultado de nuestra programación en la figura 12 de la página siguiente.
Si no recuerdas como crear un bloque, regresa a la figura 5 en la página 6, y lo primero que hay que hacer es
seleccionar con los botones ATRÁS << ó ADELANTE >>, ó introducir en el campo del número de bloque el bloque
deseado y oprimir el botón LEER para ver el número de bloque a modificar.
Paso siguiente, si estás en LINEA y por esto los botones de la sección CREAR NUEVO están deshabilitados, oprime el
botón ON_LINE para salir de línea, el siguiente paso es BORRAR EL BLOQUE ó si ya tiene la función deseada y solo
deseas modificarla, usar el botón MODIFICAR.
Ya que tienes un bloque tipo NULL (en blanco) selecciona de la sección de CREAR NUEVO el botón de FUNCIONES
LOGICAS para proceder a introducir los datos.
NX5 ejemplo práctico de automatización
13
En la figura 12 podemos apreciar del lado izquierdo nuestro cuadro de diálogo para introducir los campos de la
función lógica OR, y del lado derecho el resultado de nuestros datos cuando oprimimos el botón OK
Figura 12.
En el bloque número #5 hay que proceder a realizar la misma operación que hicimos en el bloque #4, con la
diferencia de que hay que seleccionar en el tipo de operación, la FUNCION LOGICA AND, e introducir tanto
el bit de resultado correspondiente así como los tres operandos necesarios. El cuadro de diálogo y el
resultado lo podemos ver en la figura 13.
Figura 13.
Repitiendo las mismas secuencias vamos a crear en los bloques #6 y #7 para crear la lógica para la cisterna.
NX5 ejemplo práctico de automatización
14
Antes hago una pausa para explicar que el hay un grupo de tres registros con función especial para el caso del RESET.
Como podemos ver en la parte de debajo de la figura 11 de la página 11. Existen tres registros de resultado tipo bit
que son:
RES_BIT-251 Reset + 1 segundo.
RES_BIT-252 Reset + 5 segundos.
RES_BIT-253 Reset + 10 segundos.
Estos tres registros especiales, se ponen a UNO durante el periodo de tiempo especificado cuando hay un RESET ya
sea por falla de energía ó solicitado desde el LCD OPERADOR del NX5 ó desde el Software de Windows con el botón
de RESET CONTROLADOR. Después de que expiró este tiempo, se pone el bit a CERO hasta que haya un nuevo reset.
En el siguiente listado podemos ver el resultado de nuestros cuatro bloques #4, #5, #6 y #7 una vez que hayamos
terminado, usando el botón de GENERAR DOCUMENTACION.
===============================================================
[BLOQUE 4] # DE BLOQUE
TIPO=4 [ OR ] TIPO DE FUNCION
RES_BIT:[ 43 ] = 0 RESULTADO
OP1:[ EB-01 ] || OPERANDO 1
OP2:[ RES_BIT-44 ] || OPERANDO 2
OP3:[ NULL-01 ] || OPERANDO 3
OP4:[ NULL-01 ] OPERANDO 4
===============================================================
[BLOQUE 5]
TIPO=2 [ AND ]
RES_BIT:[ 44 ] = 0
OP1:[ RES_BIT-43 ] &&
OP2:[ EB-02 ] &&
OP3:[ RES_BIT-46 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 6]
TIPO=4 [ OR ]
RES_BIT:[ 45 ] = 0
OP1:[ EB-03 ] ||
OP2:[ RES_BIT-46 ] ||
OP3:[ RES_BIT-251 ] ||
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 7]
TIPO=2 [ AND ]
RES_BIT:[ 46 ] = 0
OP1:[ RES_BIT-45 ] &&
OP2:[ EB-04 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
No olvidemos que hay que mantenernos organizados y al final hay que ir a la sección de ETIQUETAS NOMBRES para
darle nombre a los cinco registros tipo bit que estamos usando para que al generar la documentación, y con esto
sepamos que representa cada uno:
ETIQUETA-17, RES_BIT-43, [Func. OR tanque]
ETIQUETA-18, RES_BIT-44, [Estado Tanque]
ETIQUETA-19, RES_BIT-45, [Func. OR cisterna]
ETIQUETA-20, RES_BIT-46, [Estado Cisterna]
ETIQUETA-21, RES_BIT-255, [Reset +1s]
NX5 ejemplo práctico de automatización
15
Regresando aquí a la página 4, que es donde en el PASO 4 definir la secuencia de operación tenemos lo siguiente
definido en el tercer punto:
“Para el caso del arranque de las bombas, estás arrancarán cuando el agua en el tanque baje abajo del nivel del
electrodo BAJO y pararán cuando el nivel del agua llegue al electrodo ALTO, siempre y cuando se cumpla con el
nivel de agua en la cisterna como se describe en el punto anterior”.
Ya tenemos creada una función de alternado y además en la siguiente sección creamos la lógica de los electrodos,
por lo que nos falta, es unir la lógica.
Si regresamos a la figura 2 la página 7 podemos ver que la variable de proceso para la función de alternado es el
RES_BIT-12 sin embargo por otro lado si vemos la figura 11 en la página 12 veremos que la señal de
ARRANQUE/PARO en la lógica del tanque elevado, la dimos de alta como RES_BIT-44, el resultado de nuestra metida
de pata lo podemos ver en la figura 14.
Figura 14.
Sin embargo esto es muy fácil de arreglar, y como dice el refrán: “Hay más de mil maneras de esquilmar a un gato”,
esta situación la podemos arreglar de varias formas:
1. Ir al bloque #2 que es la función de alternado y cambiar el operando 4 del RES_BIT-42 RES_BIT-44, y
después regresar a la sección de etiquetas para borrar la etiqueta correspondiente al RES_BIT-42 que ya no
está en uso.
2. Ir a los bloques #4 y #5 y cambiar en el bloque #4 el segundo operando de RES-BIT-44 RES_BIT-42 y en el
bloque #5 cambiar el resultado del RES-BIT-44 RES_BIT-42, y al final regresar a la sección de etiquetas y
borrar la etiqueta correspondiente al RES_BIT-44 que ya no está en uso.
3. Crear un bloque de ASIGNAR_SALIDAS para unir el RES_BIT-44 con el RES_BIT-42.
Ya que al parecer la opción tres es la que tiene menos letras y por lo tanto la que parece más fácil de hacer, la lógica
de mantener las cosas sencillas nos indica que la opción tres es la ganadora.
Vamos a crear en el bloque #8 una función de ASIGNAR SALIDAS para que el bit de resultado RES_BIT-42 que es el
que la función de alternado necesita para operar, tenga el mismo valor que el RES_BIT-44 que es nuestro bit de
arranque y paro de acuerdo a lo que hemos hecho hasta ahora.
El cuadro de diálogo y el resultado de este, lo podemos ver en la figura 15 de la siguiente página.
NX5 ejemplo práctico de automatización
16
Figura 15.
Si has llegado hasta este punto y no has salido corriendo pensando, esto es para locos… vas por buen camino en
convertirte en un experto en automatización.
Ya que tenemos la lógica de operación terminada en este momento, nos falta programar que los relevadores hagan
lo que queremos, y por eso en este punto, vamos a crear una nueva sección para ORGANIZAR nuestro programa,
por lo que en el bloque #9 vamos a visitar a nuestra vieja amiga, la función de ETIQUETA SEPARADORA y crear una
que diga “SALIDAS” si no recordamos como hacerlo, podemos regresar a la figura 5 en la página 6 y realizamos la
secuencia:
1. Seleccionar el bloque #9 con los botones de ATRÁS/ADELANTE.
2. Sacar al NX5 de línea con el botón ON LINE para habilitar las opciones de la sección CREAR NUEVO.
3. Borrar el bloque actual con el botón BORRAR BLOQUE.
4. Crear una nueva etiqueta de sección con el botón ETIQUETA SEPARADORA SECCION.
Luego pasamos al bloque #10, realizamos los tres puntos de la secuencia anterior, pero en el cuarto seleccionamos el
botón de FUNCION LOGICA para crear la lógica de control para el primer relevador.
Ya que queremos que las bombas no prendan si el nivel de la cisterna está bajo, usaremos una función AND para que
el relevador de arranque de la bomba 1 solo prenda cuando la función de alternado haya seleccionado el arranque
de la bomba uno RES_BIT-40 Y el nivel de agua de la cisterna sea el correcto RES_BIT_46. Recordemos que en el
bloque #2 en la función de alternado definimos que las salidas de la función de alternado son RES_BIT-40 y 41
Figura 16
Nuevamente usaremos un registro de resultado bit, el RES_BIT-47 que es el siguiente disponible del bloque de
registros de resultado bit de usuario, y le pondremos la etiqueta de “Arranque Bomba 1” para que tengamos el
resultado de la figura 17 en la siguiente página.
NX5 ejemplo práctico de automatización
17
Figura 17.
En el bloque siguiente que es el número #10 haremos lo mismo que en este bloque, pero HEY, si los dos bloques son
similares ¿Por qué no copiarlos?
Usaremos los botones de COPIAR BLOQUE y PEGAR BLOQUE que podemos ver en la siguiente figura para
ahorrarnos algo de tiempo y evitar errores.
Figura 18.
Los pasos son los siguientes:
1. Seleccionamos el bloque #10 que es el bloque que queremos copiar con el botón COPIAR BLOQUE.
2. Nos cambiamos al bloque #11 con el botón >>.
3. Sacamos al NX5 de línea con el botón ON LINE.
4. Pegamos el bloque previamente copiado con el botón PEGAR BLOQUE.
5. Realizamos los cambios correspondientes con el botón MODIFICAR.
Una vez realizados los cambios al bloque #11 y habiendo añadido la etiqueta correspondiente para el RES_BIT-48
deberemos de obtener un resultado similar al de la siguiente figura.
Figura 19.
NX5 ejemplo práctico de automatización
18
Bueno, la lógica de las salidas ya está terminada, lo último que nos falta es asignar las salidas a los relevadores para
que todo opere como lo previmos, para esto en los siguientes dos bloques, asignaremos las salidas.
Brincamos al bloque #12 con nuestro amigo el botón >> y con la ya conocida secuencia de; ON LINE, BORRAR
BLOQUE y por último el botón de FUNCION ASIGNAR SALIDA le indicamos al NX5 que queremos que el relevador 1
se prenda cuando el RES_BIT_47 que creamos en la página anterior, esté en UNO, y se apague cuando esté en CERO.
Figura 20.
Repetimos lo anterior para el relevador 2, ya sea creando el bloque #13 desde cero, ó copiándolo, pegándolo y
modificándolo como lo hicimos en el ejemplo en la página anterior. Al final debemos de tener el resultado de la
siguiente figura.
Figura 21.
Ningún tutorial para aprender a programar se podría considerar completo sin una sección de “DEBUG” en la que
podamos comprobar que todo lo que en la teoría estamos diciendo, en la realidad esté pasando. Por lo que en este
momento si has realizado en línea todos los pasos hasta aquí señalados, deberás de verificar que el funcionamiento
de tu lógica para los tres puntos que hemos creado que describimos en el PASO 4: Definir la secuencia del control
de las bombas. Que describimos allá atrás en la página 3.
Si la entrada binaria EB-3 está cerrada durante el reset, ó la EB-3 y EB-4 están cerradas lo cual cubre el requisito de
que el nivel de la cisterna sea el adecuado, u el nivel del tanque de agua es tal que los electrodos ALTO y BAJO que
están en las entradas binarias EB-1 y EB-2 están abiertos, se debe de encender el relevador de la bomba 1 SB-1.
Cuando el agua del tanque va subiendo y llega el electrodo BAJO y luego al ALTO cerrando las entradas binarias EB-1
y EB-2, la bomba 1 SB-1 debe de apagar.
NX5 ejemplo práctico de automatización
19
Cuando el nivel del tanque nuevamente baja y descubre ambos electrodos ALTO y BAJO, la segunda bomba SB-2
debe encender, y al subir el nivel y cerrar los contactos en EB-1 y EB-2 la bomba 2 en la salida SB-2 deberá apagar.
Y así sucesivamente cada vez que baje el nivel del tanque elevado, deberá de encender la siguiente bomba, para
crear el alternado de bombas.
También debemos comprobar que cuando cualquier bomba encienda SB-1 ó SB-2, estas deberán de apagar si el agua
de la cisterna descubre el electrodo de nivel BAJO en la EB-4 y no deberán de encender nuevamente hasta que el
agua de la cisterna se recupere y llegue nuevamente al electrodo de nivel ALTO cerrando el contacto en la EB-3.
Para ayudarnos en descubrir cualquier error de datos que en que hayamos incurrido, ó la lógica que hayamos
definido incorrectamente, pondremos el software EN LINEA con el NX5, y con la ayuda de los botones ATRÁS << Y
ADELANTE >> podemos movernos en los 13 bloques que hemos creado para verificar que todo opere
correctamente, ó en su defecto, ayudados por las vistas de los estados actuales ver donde está nuestro error.
Es útil poder ver tanto el nombre del registro, así como la etiqueta de texto que creamos para no perdernos
seleccionado la opción de VARIABLE ó NOMBRE en la parte inferior de nuestra pantalla de bloques lógicos como se
ve en la siguiente figura.
Figura 22.
Bueno, tal vez hasta aquí te habrás dado cuenta que tal vez necesitarás más de una hora para aprender a usar todo
el potencial del NX5, ya que tan solo el manual de instalación y programación del NX5 es de cerca de 120 páginas,
pero espero que leyendo el manual y con la ayuda de este tutorial, veas que el diseño de controles para
automatización no es ni magia negra ni solo para los iniciados, sino que cualquier simple mortal puede hacerlo con
un poco de dedicación y esfuerzo.
Bueno, habiendo dicho esto, vamos a terminar el programa atacando los últimos dos puntos que definimos por allá
en el inicio de este tutorial en el PASO 4: Definir la secuencia del control de las bombas. Y que dice el cuarto punto:
“Detectar falla de los electrodos, se monitoreará el caso de que el electrodo ALTO detecte nivel de agua y se
revisará que el electrodo BAJO también detecte, en caso de que el electrodo ALTO detecte nivel y el BAJO no, es
un indicativo de que hay un problema en la colocación de los electrodos o una posible falla causada por corrosión
en el cableado ó el mismo electrodo. Esta condición hará que el foco respectivo del tanque ó cisterna parpadee
con un periodo de dos segundos”.
NX5 ejemplo práctico de automatización
20
Siguiendo nuestra manía por la ORGANIZACIÓN, vamos a crear una nueva etiqueta de sección en el bloque #14 que
diga “FALLA ELE”.
¿Para qué tanta lata poniendo etiquetas separadoras? Bueno aparte de enseñarnos a ser organizados, tenemos las
opciones de BUSQUEDA que nos permiten buscar ya sea funciones ó variables, y con esto podemos fácilmente
encontrar la siguiente sección buscando una ETIQUETA SEPARADORA como lo vemos en la siguiente figura, ya sea
hacia atrás ó adelante del bloque actual ó desde el inicio ó sea el bloque #1.
Figura 23.
O si por ejemplo no recordamos donde definimos la salida binaria para el relevador de la bomba 1, podemos buscar
donde está siendo buscado como RESULTADO la salida binaria SB-1 como lo vemos en la siguiente figura, ya sea
hacia atrás ó adelante del bloque actual ó desde el inicio ó sea el bloque #1.
Figura 23.
NX5 ejemplo práctico de automatización
21
Ya que estamos por esta parte de la ventana del cuadro de diálogo, recordemos respaldar todo lo que hemos hecho
hasta este punto, ya que dicen las malas lenguas en boca de un tal señor Murphy de que “todo lo que puede salir
mal saldrá mal” usando el botón de RESPALDAR DEL NX5 al al PC, esto creará en el directorio de trabajo actual un
archivo LOGIC.INI que contiene nuestros bloques creados hasta el momento.
Figura 23.
Vemos por ahí una paloma en la opción de PARAR AL ENCONTRAR EL PRIMER BLOQUE FIN, ¿Qué significa esto?,
que como hemos creado 14 bloques hasta el momento, que el bloque #15 tiene una función de FIN ó ULTIMO
BLOQUE DE PROGRAMA, y aunque en los siguiente bloques del 16 en adelante tuviéramos otros bloques definidos
el NX5 sabe que una vez que encuentra el primer bloque con la función de FIN DE PROGRAMA, volverá al inicio y
comenzará a ejecutar las instrucciones del bloque #1.
Igualmente al GENERAR DOCUMENTACION así como al RESPALDAR el programa a la PC, se detendrá al encontrar el
primer bloque que contenga la instrucción de FIN DE PROGRAMA, caso contrario salvara del bloque #1 al bloque
#400 al disco de la PC, acción que tarda un par de minutos.
En el caso de la operación interna del PLC del NX5, la única forma de esquivar esta instrucción de FIN DE
PROGRAMA es usando una función de BRINCO. Pero esto está fuera del alcance de este tutorial por lo que para más
información consulta el manual para esta función.
FOCOS INDICADORES
Para continuar con este tutorial pasaremos al cuarto punto del PASO 4: Definir la secuencia del control de las
bombas. Que nos dice en su texto; “Para detectar falla de los electrodos, se monitoreará el caso de que el
electrodo ALTO detecte nivel de agua y se revisará que el electrodo BAJO también detecte, en caso de que el
electrodo ALTO detecte nivel y el BAJO no, es un indicativo de que hay un problema en la colocación de los
electrodos o una posible falla causada por corrosión en el cableado ó el mismo electrodo. Esta condición hará que
el foco respectivo del tanque ó cisterna parpadee con un periodo de dos segundos” como recordamos, al principio
definimos tres focos de alarma así como dos focos de operación, y en esta sección haremos esta programación.
ETIQUETA-7, SB -3, [Foco Bomba 1]
ETIQUETA-8, SB -4, [Foco Bomba 2]
ETIQUETA-9, SB -5, [AL bajo nivel cist]
ETIQUETA-10, SB -6, [AL electr. tanque]
ETIQUETA-11, SB -7, [AL electr. cister.]
Además en la pantalla LCD del NX5 tenemos un LED bicolor VERDE / ROJO, y lo vamos a programar para que estén
VERDE si todo está en orden y ROJO si hay alguna alarma.
NX5 ejemplo práctico de automatización
22
En el bloque #14 definiremos una función de que el foco de ALARMA NIVEL BAJO CISTERNA que es el relevador de la
SB-5 prenda con un parpadeo de 2 segundos, en la figura 24 vemos el equivalente eléctrico del lado izquierdo de
cómo lo haríamos usando relevadores y timers convencionales, y del lado derecho como lo haremos con el NX5.
Figura 25.
RY2-C
Nivel de cisterna
RY3
Alarma bajo
nivel cisterna
TM2-A
Timer-2s
2s
TM2
Oscilador 2s
RES_BIT-46
Nivel de cisterna Invertir49
RES-BIT-49
Nivel de cisterna
RY3
Alarma bajo
nivel cisterna
RES_BIT-38
Timer-2s
2s
TM2
Oscilador 2s
38Timer
fijo 2s
Nivel de cisterna
invertido
AND
RES_BIT-38
50
SB-5
Foco Alarma
Cisterna
RES_BIT-50
Alarma Cisterna
Asignar Salida
En el bloque #15 vamos a usar una FUNCION LOGICA INVERSOR para invertir el estado del RES_BIT-46 que está en
UNO cuando el nivel de la cisterna es correcto, y CERO cuando esta bajo el nivel, y esto es precisamente lo contrario
de lo que necesitamos, el resultado lo pondremos en el RES_BIT-49, al cual le pondremos una etiqueta que diga
“Niv. Cist. Invertido”.
En el bloque #16 crearemos una FUNCION LOGICA AND cuyo resultado será almacenado en el registro bit RES_BIT_-
50 y al cual le pondremos una etiqueta de texto que diga “Alarma cisterna”, el OPERANDO 1 será el RES_BIT-49 que
definimos en el bloque anterior y el OPERANDO 2 será el RES_BIT-38 que es un bit reservado por el sistema y que
oscila con un periodo de 2 segundos.
En el bloque #17 crearemos una función de ASIGNAR SALIDA PARA encender el relevador de la SB-5 cuya fuente de
control será el RES_BIT-50 que dimos de alta en el bloque anterior.
En la figura 28 en la siguiente página podemos ver los bloques creados.
NX5 ejemplo práctico de automatización
23
Figura 28 (bloques #15, #16 y #17).
Para terminar las indicaciones del nivel de la cisterna vamos a crear tres bloques más:
En el bloque #18 crearemos una FUNCION DE ASIGNAR SALIDA para encender el LED VERDE de la pantalla LCD del
operador, que está controlado por el registro de resultado RES_BIT-254 cuando el nivel de la cisterna esté OK,
recordemos que este bit es el RES_BIT-44, no olvidemos ponerle nombre al RES_BIT-254 con una etiqueta que diga
“Led VERDE del LCD”.
En el bloque #19 crearemos una FUNCION LOGICA OR para que cuando haya bajo nivel en la cisterna RES_BIT-49, ó
falla de electrodos de la cisterna ó falla de electrodos del tanque (como aún no creamos estos bloques, solo
usaremos el OPERANDO 1, y los otros dos los modificaremos luego) de encienda el RES_BIT-51 hay que crearle un a
etiqueta que diga “Alarmas”.
NX5 ejemplo práctico de automatización
24
En el bloque #20 crearemos una FUNCION LOGICA AND para que el RES_BIT-51 que creamos en el bloque anterior
combinado con el RES_BIT-38 del timer fijo oscilando cada 2 segundos, encienda el LED ROJO del LCD del operador,
que está representado por el registro tipo resultado bit RES_BIT-255 encienda en caso de alarma. No olvidemos
crear la etiqueta para este bit “Led ROJO alarmas”.
Figura 29 (bloques #18, #19 y #20).
Ahí vamos, paciencia.
Ya solo nos falta detectar la falla de los electrodos y poner los contadores de horas y terminamos el proyecto, así que
toma un pequeño break, tomate un vaso de agua y dale una vuelta a la cuadra pare estirar las piernas, si te sientes
bien vamos entonces a darle. Así que vamos a la siguiente página.
NX5 ejemplo práctico de automatización
25
Vamos a crear en el bloque #21 la lógica para detectar que el electrodo del tanque está alarmado. Para hacer esto
crearemos el RES_BIT-52, creándole la etiqueta de “Falla elec. Tanque” como resultado de una FUNCION LOGICA
AND, cuyos operandos serán el electrodo ALTO del tanque que es la EB-1 y la señal invertida del electrodo BAJO que
está en la EB-2, usando el RES_BIT-53 que crearemos en el siguiente bloque, por lo que si detectamos agua en el
electrodo ALTO sin que el electrodo BAJO detecte, quiere decir una de dos; que Sir. Isaac Newton nos engañó con
aquello de la gravedad y de que todo lo que sube debe de bajar, ó realmente hay algún problema de electrodos
invertidos ó corroídos.
Crearemos también el bloque #22 usando una FUNCION LOGICA INVERSOR para crear la señal invertida que
necesitamos en el bloque anterior, usando el RES_BIT 52 como resultado con la etiqueta “Elec BAJO Tanque inv”.
Figura 30 (bloques #21 y #22).
Vamos a crear los bloques #23 y #24 que son similares a los anteriores pero para detectar falla de electrodos en la
cisterna:
El bloque #23 la lógica para detectar que el electrodo de la cisterna está alarmado. Para hacer esto crearemos el
RES_BIT-54, creándole la etiqueta de “Falla elec. Cist.” como resultado de una FUNCION LOGICA AND, cuyos
operandos serán el electrodo ALTO de la cisterna que es la EB-3 y la señal invertida del electrodo BAJO que está en la
EB-4, usando el RES_BIT-55 que crearemos en el siguiente bloque.
Crearemos también el bloque #24 usando una FUNCION LOGICA INVERSOR para crear la señal invertida que
necesitamos en el bloque anterior, usando el RES_BIT 55 como resultado con la etiqueta “Elec BAJO cist. inv”.
Podemos ver el resultado en la siguiente figura.
NX5 ejemplo práctico de automatización
26
Figura 31 (bloques #23 y #24).
Ahora si podemos regresar al bloque #19 para completar la función OR del LED ROJO del LCD del operador para que
parpadee en rojo con cualquiera de las tres alarmas:
Bajo nivel de cisterna.
Falla de electrodos del tanque elevado.
Falla de electrodos de la cisterna.
El resultado lo vemos en la siguiente figura.
Figura 32.
NX5 ejemplo práctico de automatización
27
Los dos últimos cuatro bloques de esta sección (lo prometo) para que las salidas binarias SB-6 y SB-7 que definimos
al inicio:
ETIQUETA-10, SB -6, [AL electr. tanque]
ETIQUETA-11, SB -7, [AL electr. cister.]
Parpadeen cada dos segundos en caso de las fallas anteriores. Abajo viene el listado de estos cuatro bloques #25,
#26, #27 y #28:
Figura 33.
NX5 ejemplo práctico de automatización
28
Podemos usar la función de COPIAR GRUPO DE BLOQUES para no tener que crear los bloques #27 y #28 desde
cero.
Figura 34.
Nos faltan los dos focos, que indican que las bombas uno ó dos están prendidas, lo más sencillo es copiar el estado
de las salidas binarias SB-1 en SB-3 con una función de ASIGNAR SALIDAS, y hacer lo respectivo de la SB-2 SB-4.
El listado de estos dos bloques #29 y #30 los vemos en el siguiente listado:
===============================================================
[BLOQUE 29]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ SB-01 ]src --> OP2:[ SB-03 ]dest
===============================================================
[BLOQUE 30]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ SB-02 ]src --> OP2:[ SB-04 ]dest
NX5 ejemplo práctico de automatización
29
HOROMETROS
Ya solo nos falta cumplir con el quinto punto del PASO 4: Definir la secuencia del control de las bombas que dice:
“Se deberá de llevar la cuenta de las horas de operación de las bombas para efecto de poder programar el
mantenimiento respectivo de las mismas, esto se hará internamente en el NX5 para evitar tener que usar un
horómetro externo”
Por lo que crearemos tres últimos bloques, si léelo bien tres, y habremos acabado el programa.
El bloque #30 es para no perder la costumbre una ETIQUETA SEPARADORA que daremos de alta con el título
“HOROMETR”
En el bloque #31 usaremos una función de CONTADOR DE HORAS en el que usaremos dos registros, uno tipo
registro de resultado tipo float RES_FLT-1 que llevará los parciales en RAM de cada 5 minutos de operación, y un
dato en EEPROM que llevará el total de horas en un registro no volátil para que en caso de falla de batería no
perdamos esta cuenta de horas, usaremos el ADF-1, hay que seleccionar a quién queremos contar, en este caso es la
salida de la bomba uno SB-1 En la figura siguiente podemos ver el resultado de este bloque.
Figura 35.
Podemos copiar este bloque al bloque #32 y modificar los parámetros como aparecen en el siguiente listado y:
t e r m i n a m o s. ===============================================================
[BLOQUE 33]
TIPO=28 [ HOROMETRO ]
RES_FLT:[ 2 ] = 0.0000 (0:00:00) Horas de operación
OP1:[ SB-02 ] = (0) Fuente de control del horómetro.
OP2:[ ADF-02 ] ADF que lleva cuenta de horas de operación.
===============================================================
No olvides respaldar tu programa.
NX5 ejemplo práctico de automatización
30
Te prometí en la primera cuando termináramos mostrarte como:
Una PC vía USB ó por puerto RS-485 ó RS232
A una red de Edificio Inteligente
Al internet ó Intranet por vía Ethernet ó WiFi.
Así que aquí va:
Si pudiste programar todo lo que hemos visto hasta aquí, quiere decir que leíste la parte del manual de la
sección III comenzando en la página 23 y terminando en la página 27 que dice ESTABLECER COMUNICACIÓN
INICIAL CON EL NX5 POR USB ó SR-485 ó RS-232 por lo que ya pudiste conectarte por cualquiera de estos
tres modos y no tiene caso repetir las mismas páginas del manual aquí.
Para conectarte a una red de edificio inteligente, usando; MODBUS, N2-BUS, OPTO-22 ó BACNET, ve la parte
del manual de SISTEMA en la página 92 donde viene como configurar COM1 ó COM2 para hacerlo, y las
tablas de mapeo de los distintos protocolos en la página 131 del manual.
Para conectarte vía Ethernet ó WiFI usando el servidor de páginas web del NX5 consulta la página 16 del
manual donde muestra como hacerlo.
Por último en las siguientes páginas viene un anexo del listado completo del programa que acabamos de crear. Por
último para terminar, gracias por tu paciencia y si detectas algún error en este documento repórtame el número de
página y el error a:
rikmed@prodigy.net.mx
NX5 ejemplo práctico de automatización
31
ANEXO:
[INICIO BLOQUES_LOGICOS]
===============================================================
[BLOQUE 1]
TIPO=29 [ ETIQUETA SEPARADORA ]
[ALTERNADO]
===============================================================
[BLOQUE 2]
TIPO=27 [ ALTERNADO ]
Dir.altern.:[ARRIBA] retroal.:[NO] habil.ext.[NO] var.proc[BINARIO]
OP1:[ EB-01 ] 1a entrada *(opcionales)
OP2:[ RES_BIT-40 ] 1a salida
OP3:[ ADB-01 ] Indice a puntos de ajuste
OP4:[ RES_BIT-42 ] Variable de proceso
===============================================================
[BLOQUE 3]
TIPO=29 [ ETIQUETA SEPARADORA ]
[ENTRADAS ]
===============================================================
[BLOQUE 4]
TIPO=4 [ OR ]
RES_BIT:[ 43 ] = 0
OP1:[ EB-01 ] ||
OP2:[ RES_BIT-44 ] ||
OP3:[ NULL-01 ] ||
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 5]
TIPO=2 [ AND ]
RES_BIT:[ 44 ] = 0
OP1:[ RES_BIT-43 ] &&
OP2:[ EB-02 ] &&
OP3:[ RES_BIT-46 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 6]
TIPO=4 [ OR ]
RES_BIT:[ 45 ] = 0
OP1:[ EB-03 ] ||
OP2:[ RES_BIT-46 ] ||
OP3:[ RES_BIT-251 ] ||
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 7]
TIPO=2 [ AND ]
RES_BIT:[ 46 ] = 0
OP1:[ RES_BIT-45 ] &&
OP2:[ EB-04 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 8]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ RES_BIT-44 ]src --> OP2:[ RES_BIT-42 ]dest
===============================================================
[BLOQUE 9]
TIPO=29 [ ETIQUETA SEPARADORA ]
[SALIDAS ]
===============================================================
[BLOQUE 10]
TIPO=2 [ AND ]
RES_BIT:[ 47 ] = 0
OP1:[ RES_BIT-40 ] &&
OP2:[ RES_BIT-46 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
NX5 ejemplo práctico de automatización
32
===============================================================
[BLOQUE 11]
TIPO=2 [ AND ]
RES_BIT:[ 48 ] = 0
OP1:[ RES_BIT-41 ] &&
OP2:[ RES_BIT-46 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 12]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ RES_BIT-47 ]src --> OP2:[ SB-01 ]dest
===============================================================
[BLOQUE 13]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ RES_BIT-48 ]src --> OP2:[ SB-02 ]dest
===============================================================
[BLOQUE 14]
TIPO=29 [ ETIQUETA SEPARADORA ]
[FALLA ELE]
===============================================================
[BLOQUE 15]
TIPO=8 [ INV ]
RES_BIT:[ 49 ] ~= 1
OP1:[ RES_BIT-46 ]
===============================================================
[BLOQUE 16]
TIPO=2 [ AND ]
RES_BIT:[ 50 ] = 0
OP1:[ RES_BIT-49 ] &&
OP2:[ RES_BIT-38 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 17]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ RES_BIT-50 ]src --> OP2:[ SB-05 ]dest
===============================================================
[BLOQUE 18]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ RES_BIT-46 ]src --> OP2:[ RES_BIT-254 ]dest
===============================================================
[BLOQUE 19]
TIPO=4 [ OR ]
RES_BIT:[ 51 ] = 1
OP1:[ RES_BIT-49 ] ||
OP2:[ RES_BIT-52 ] ||
OP3:[ RES_BIT-54 ] ||
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 20]
TIPO=2 [ AND ]
RES_BIT:[ 255 ] = 1
OP1:[ RES_BIT-38 ] &&
OP2:[ RES_BIT-51 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 21]
TIPO=2 [ AND ]
RES_BIT:[ 52 ] = 0
OP1:[ EB-01 ] &&
OP2:[ RES_BIT-53 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
NX5 ejemplo práctico de automatización
33
===============================================================
[BLOQUE 22]
TIPO=8 [ INV ]
RES_BIT:[ 53 ] ~= 1
OP1:[ EB-02 ]
===============================================================
[BLOQUE 23]
TIPO=2 [ AND ]
RES_BIT:[ 54 ] = 0
OP1:[ EB-03 ] &&
OP2:[ RES_BIT-55 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 24]
TIPO=8 [ INV ]
RES_BIT:[ 55 ] ~= 1
OP1:[ EB-04 ]
===============================================================
[BLOQUE 25]
TIPO=2 [ AND ]
RES_BIT:[ 56 ] = 0
OP1:[ RES_BIT-52 ] &&
OP2:[ RES_BIT-38 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 26]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ RES_BIT-56 ]src --> OP2:[ SB-06 ]dest
===============================================================
[BLOQUE 27]
TIPO=2 [ AND ]
RES_BIT:[ 57 ] = 0
OP1:[ RES_BIT-54 ] &&
OP2:[ RES_BIT-38 ] &&
OP3:[ NULL-01 ] &&
OP4:[ NULL-01 ]
===============================================================
[BLOQUE 28]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ RES_BIT-57 ]src --> OP2:[ SB-07 ]dest
===============================================================
[BLOQUE 29]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ SB-01 ]src --> OP2:[ SB-03 ]dest
===============================================================
[BLOQUE 30]
TIPO=21 [ ASIGNAR_SALIDA ]
OP1:[ SB-02 ]src --> OP2:[ SB-04 ]dest
===============================================================
[BLOQUE 31]
TIPO=29 [ ETIQUETA SEPARADORA ]
[HOROMETRO]
===============================================================
[BLOQUE 32]
TIPO=28 [ HOROMETRO ]
RES_FLT:[ 1 ] = 0.0000 (0:00:00) Horas de operación
OP1:[ SB-01 ] = (0) Fuente de control del horómetro.
OP2:[ ADF-01 ] ADF que lleva cuenta de horas de operación.
===============================================================
[BLOQUE 33]
TIPO=28 [ HOROMETRO ]
RES_FLT:[ 2 ] = 0.0000 (0:00:00) Horas de operación
OP1:[ SB-02 ] = (0) Fuente de control del horómetro.
OP2:[ ADF-02 ] ADF que lleva cuenta de horas de operación.
NX5 ejemplo práctico de automatización
34
===============================================================
[BLOQUE 34]
TIPO=255 [ ULTIMO_BLOQUE ]
[FIN]
========================================================================================================
RESUMEN: 33 bloques usados de 400, 91.75% disponible
========================================================================================================
TIPO FUNCION # veces encontrada
------------ ------------------
TYP_NULL 0 LIBRE
TYP_IL_GR 0
TYP_AND 10
TYP_NAND 0
TYP_OR 3
TYP_NOR 0
TYP_XOR 0
TYP_NXOR 0
TYP_INV 3
TYP_SUMA 0
TYP_RESTA 0
TYP_MULT 0
TYP_DIV 0
TYP_MAY 0
TYP_MAY_IG 0
TYP_MEN 0
TYP_MEN_IG 0
TYP_IGUAL 0
TYP_NO_IG 0
TYP_TIMER 0
TYP_JUMP 0
TYP_OUT_ASGN 9
TYP_PROP_CTRL 0
TYP_TOTALIZER 0
TYP_MIN 0
TYP_MAX 0
TYP_AVG 0
TYP_ALTERN_SIMUL 1
TYP_HR_COUNTER 2
TYP_SECTION_LABEL 5
TYP_ERASED 0 LIBRE
TYP_END 1 LIBRE
DESHABILIADOS 0 LIBRE
========================================================================================================
REFERENCIAS CRUZADAS
========================================================================================================
========================================================================================================
ENTRADAS ANALOGICAS
========================================================================================================
ENTRADAS BINARIAS
EB-01 Nombre: [Elect. Tanque ALTO ]
encontrada como operando: 2
encontrada como resultado: 0
encontrada en total: 2
En Bloques: [004], [021],
EB-02 Nombre: [Elec. Tanque BAJO ]
encontrada como operando: 2
encontrada como resultado: 0
encontrada en total: 2
En Bloques: [005], [022],
EB-03 Nombre: [El. Cisterna ALTO ]
encontrada como operando: 2
encontrada como resultado: 0
encontrada en total: 2
En Bloques: [006], [023],
EB-04 Nombre: [El. Cisterna BAJO ]
encontrada como operando: 2
encontrada como resultado: 0
encontrada en total: 2
En Bloques: [007], [024],
========================================================================================================
SALIDAS ANALOGICAS
NX5 ejemplo práctico de automatización
35
========================================================================================================
SALIDAS BINARIAS
SB-01 Nombre: [Arranque Bomba 1 ]
encontrada como operando: 2
encontrada como resultado: 1
encontrada en total: 3
En Bloques: [012], [029], [032],
SB-02 Nombre: [Arranque Bomba 2 ]
encontrada como operando: 2
encontrada como resultado: 1
encontrada en total: 3
En Bloques: [013], [030], [033],
SB-03 Nombre: [Foco Bomba 1 ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [029],
SB-04 Nombre: [Foco Bomba 2 ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [030],
SB-05 Nombre: [AL bajo nivel cist ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [017],
SB-06 Nombre: [AL electr. tanque ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [026],
SB-07 Nombre: [AL electr. cister. ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [028],
========================================================================================================
DATOS EEPROM FLOAT
ADF-01 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [032],
ADF-02 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [033],
========================================================================================================
DATOS EEPROM WORD ADI
========================================================================================================
DATOS EEPROM BYTE ADB
ADB-01 Nombre: [# de etapas ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [002],
NX5 ejemplo práctico de automatización
36
ADB-02 Nombre: [Etapa lider ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [002],
ADB-03 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [002],
ADB-04 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [002],
ADB-05 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [002],
ADB-06 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [002],
========================================================================================================
DATOS RAM RES_BIT
RES_BIT-38 Nombre: [Timer-2s ]
encontrada como operando: 4
encontrada como resultado: 0
encontrada en total: 4
En Bloques: [016], [020], [025], [027],
RES_BIT-40 Nombre: [Salida etapa 1 ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [002], [010],
RES_BIT-41 Nombre: [Salida etapa 2 ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [002], [011],
RES_BIT-42 Nombre: [Arranque/paro alt. ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [002], [008],
RES_BIT-43 Nombre: [Func. OR tanque ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [004], [005],
RES_BIT-44 Nombre: [Estado Tanque ]
encontrada como operando: 2
encontrada como resultado: 1
encontrada en total: 3
En Bloques: [004], [005], [008],
RES_BIT-45 Nombre: [Func. OR cisterna ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [006], [007],
RES_BIT-46 Nombre: [Estado Cisterna ]
encontrada como operando: 6
encontrada como resultado: 1
encontrada en total: 7
En Bloques: [005], [006], [007], [010], [011], [015], [018],
NX5 ejemplo práctico de automatización
37
RES_BIT-47 Nombre: [Arr. bomba 1 ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [010], [012],
RES_BIT-48 Nombre: [Arr. Bomba 2 ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [011], [013],
RES_BIT-49 Nombre: [Niv. Cist. Invert. ]
encontrada como operando: 2
encontrada como resultado: 1
encontrada en total: 3
En Bloques: [015], [016], [019],
RES_BIT-50 Nombre: [Alarma Cisterna ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [016], [017],
RES_BIT-51 Nombre: [Alarmas ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [019], [020],
RES_BIT-52 Nombre: [Falla elect.tanque ]
encontrada como operando: 2
encontrada como resultado: 1
encontrada en total: 3
En Bloques: [019], [021], [025],
RES_BIT-53 Nombre: [Ele. BAJO tan. inv ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [021], [022],
RES_BIT-54 Nombre: [Falla elect.cist. ]
encontrada como operando: 2
encontrada como resultado: 1
encontrada en total: 3
En Bloques: [019], [023], [027],
RES_BIT-55 Nombre: [Ele. BAJO cis. inv ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [023], [024],
RES_BIT-56 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [025], [026],
RES_BIT-57 Nombre: [ ]
encontrada como operando: 1
encontrada como resultado: 1
encontrada en total: 2
En Bloques: [027], [028],
RES_BIT-251 Nombre: [Reset +1s ]
encontrada como operando: 1
encontrada como resultado: 0
encontrada en total: 1
En Bloques: [006],
RES_BIT-254 Nombre: [Led verde LCD oper ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [018],
NX5 ejemplo práctico de automatización
38
RES_BIT-255 Nombre: [Led ROJO alarmas ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [020],
========================================================================================================
DATOS RAM RES_FLT
RES_FLT-01 Nombre: [ ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [032],
RES_FLT-02 Nombre: [ ]
encontrada como operando: 0 AVISO: Esta variable no está siendo usada como operando en ninguna parte del
programa.
encontrada como resultado: 1
encontrada en total: 1
En Bloques: [033],
========================================================================================================
ESTADO DEL TIMER
========================================================================================================
DATOS RAM REMOTOS
========================================================================================================
TOTAL DE AVISOS ENCONTRADOS: 9 Buscar el texto "AVISO:" para encontrar los avisos reportados.
Recommended