variadores nx5 - rikmed.comrikmed.com/tutorial nx5.pdf · bombas sumergibles que deberán de ser...

38
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 Bombas sumergibles 50 Hp 2 Suministro de agua VFD 1 VFD 2 Variadores de velocidad para arranque suave Foco Bomba 1 Foco Bomba 2 Foco Bajo nivel cisterna Foco Falla electrodos del tanque Foco Falla 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.

Upload: vutruc

Post on 29-Oct-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

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:

[email protected]

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.