Antes de poder realizar la simulación del funcionamiento del programa cargado en el Simulador del CX-Programer con el simulador de entradas/salidas se han de realizar unas acciones previas, como:
o Configuración del hardware.
o Programa de comunicación Simulador del CX-Programer – Simulador de entradas/salidas.
o Procedimiento para la comunicación entre Simulador del CX-Programer – Simulador de entradas/salidas.
1.1. Configuración del hardware.
Haremos doble click encima de “Configurar tabla de E/S y unidad”. Se nos abrirá una ventana donde dentro del “Bastidor principal” pondremos las siguientes tarjetas:
Posición 00: Una tarjeta CJ1W-ID211 de 16 entradas digitales a 24V. La dirección de estas entradas será el canal 0 (CH0000). Entradas de la 0.00 a la 0.15.
Posición 01: Una tarjeta CJ1W-OD211 de 16 salidas digitales a 24V. La dirección de estas entradas será el canal 0 (CH0001). Salidas de la 1.00 a la 1.15.
Posición 02: Una tarjeta CJ1W-MAD42 de cuatro entradas analógicas de rango 0 a 10V y con las direcciones CH2005,CH2006,CH2007 y CH2008 y dos salidas analógicas de rango 0-10V y con las direcciones CH2001 y CH2002.
Para que esta configuración este activa con el simulador de entradas/salidas, hemos de configurar lo siguiente:
Hacemos doble click encima de “Configuración”, seleccionamos la pestaña “Actualización de la SIOU” e inhabilitamos la actualización cíclica de las tres tarjetas que hemos configurado (SIOU 0, SIOU 1 i SIOU 2).
1.2. Programa para la comunicación Simulador CX-Programmer – Simulador de entradas/salidas.
Dentro de “Programas” y de “New program 1” renombrar la “Sección 1” y la llamáis per ejemplo “COMUNICACIÓN”. Dentro de esta sección hacer el siguiente programa:
1.3. Procedimiento para la comunicación entre simulador CX-Programmer – Simulador de entradas/salidas .
A continuación se relaciona el procedimiento a seguir para poder conseguir con éxito la comunicación entre el Simulador del CX-programa y el Simulador de entradas / salidas para poder comprobar el funcionamiento del programa.
a) Iniciar la aplicación del Simulador del CX-programa. Seleccione la pestaña "Simulación" y luego "Trabajar con simulador online". Verá como se abre el simulador y se cargan de forma automática los programas que tengamos el proyecto
b) Ejecutar el Simulador de entradas / salidas.
Al ejecutar el Simulador de entradas/salidas, de forma automática se comunicará con el simulador de CX-Programmer.
Para cerrar el Simulador de entradas / salidas de forma correcta se debe pulsar el botón que contiene el siguiente icono, ya que en otro caso quedarán procesos abiertos.
Antes de poder realizar el programa hay que hacer una relación de las diferentes variables que intervienen en el proceso, de forma que mediante una Tabla de variables en CX-Programer queden reflejadas, y en el momento de realizar el programa poderlas identificar correctamente.
2.1. Relación de variables de entradas.
A continuación se relacionan las variables de entrada al PLC que son:
2.2. Relación de variables de salida.
A continuación se relacionan las variables de salida al PLC que son:
3.1. Relación de variables de entradas.
Para poder conocer la funcionalidad de este simulador proponemos diferentes ejercicios que servirán para poder comprobar el funcionamiento de diferentes aspectos de la programación con PLCs, como por ejemplo:
o Funcionamiento del registre de entradas.
o Funcionamiento del registre de salidas.
o Control de un motor con pulsadores de paro, de marcha y disyuntor de protección.
o Funcionamiento de las entradas y salidas analógicas.
3.1. Programación del bloque PRINCIPAL.
Cada vez que queramos probar una subrutina, la hemos de llamar desde este bloque mediante la instrucción SBS y el numero de subrutina.
3.2. Funcionament del registre d’entrades.
El autómata programable, antes de ejecutar el programa, lo que hace es leer el estado actual de todas las entradas y copiar estos estados en el llamado "Registro de entradas", de forma que cuando se está ejecutando el programa y debe comprobar el estado de una de las entradas, entonces comprueba este estado en el registro de entradas y no en la entrada física del PLC, con ello se consigue mayor rapidez en la ejecución del programa y que este valor leído se mantenga para aplicarlo al resto del programa hasta el próximo scan.
3.2.1. Enunciado del programa. Subrutina 0 (SBS 0).
En este programa queremos que:
o Cuando accionemos el pulsador de la entrada 0.08 que se active la salida 1.03 y que la salida 1.04 solo funcione mientras se mantenga accionado el pulsador de la entrada 0.08.
o Al accionar el pulsador de la entrada 0.09 ha de dejar de funcionar la salida 1.03.
El funcionamiento será el siguiente:
a) Primer scan.
En el primer segmento si accionamos el pulsador de la entrada 0.08, como en serie con esta tenemos programado un contacte negado de la 1.04 y de este el registre de salidas en este momento nos dice que está a “0”, entonces el resultado final de este segmento es que la salida 1.03 se ponga a “1” permanentemente al estar programado con una instrucción “SET”, por lo tanto eso hará que el registro de salidas de la 1.03 se ponga a “1”.
En el segundo segmento como que tenemos accionado el pulsador de la entrada I1.0, el resultado de este segmento provoca que el registre de la salida 1.04 se ponga a “1”.
En el tercer segmento y como que no tenemos activada la entrada I1.1, no realizará ninguna acción sobre la salida 1.04 y no tendrá ningún efecto sobre el registro de salidas correspondiente a esta salida.
Al finalizar este primer scan las salidas se refrescan con los valores que hay en el registro de salidas, por lo tanto en este caso tendremos las salidas 1.03 i 1.04 activadas.
b) Segon scan.
En el primer segmento tenemos accionado el pulsador de la entrada 0.08, como en serie con este tenemos programado un contacto negado de la 1.04 y de esta el registro de salidas en este momento nos dice que esta a “1”, entonces al no cumplirse la condición no realizara ninguna acción sobre la salida 1.03 y por lo tanto su valor en el registro de salidas no varia, y por lo tanto se queda a “1”.
En el segundo segmento como que tenemos accionado el pulsador de la entrada 0.08, el resultado de este segmento provoca que el registro de la salida 1.04 se ponga a “1”.
En el tercer segmento y como que no tenemos activada la entrada I1.1, no realizara ninguna acción sobre la salida 1.03 y no tendrá ningún efecto sobre el registro de salidas correspondiente a esta salida.
Al finalizar este primer scan las salidas se refrescan con los valores que hay en el registro de salidas, por lo tanto en este caso tendremos las salidas 1.03 y 1.04 activadas.
3.2.2. Enunciado del programa. Subrutina 1 (SBS 1).
Ahora haremos un intercambio en la orden del programa entre los segmentos 1 y 2, y estudiamos que pasaría:
a) Primer scan.
En el primer segmento si accionamos el pulsador de la entrada 0.08, el resultado de este segmento provoca que el registro de la salida 1.04 se ponga a “1”.
En el segundo segmento como que tenemos accionado el pulsador de la entrada 0.08, y como en serie con este tenemos programado un contacto negado de la 1.04 y de este, el registro de salidas en este momento nos dice que está a “1”, por efecto del funcionamiento del segmento anterior, entonces el resultado final de este segmento és que la salida 1.03 no alterara el estado en el registre de salidas de la 1.03, por lo tanto se mantendrá a “0”.
En el tercer segmento y como que no tenemos activada la entrada 0.09, no realizara ninguna acción sobre la salida 1.03 y no tendrá ningún efecto sobre el registro de salidas correspondiente a esta salida.
Al finalizar este primer scan las salidas se refrescan con los valores que hay en el registre de salidas, por lo tanto en este caso tendremos únicamente la salida 1.04 activada.
.b) Segundo scan.
Podemos estudiar como el funcionamiento del programa no queda alterado.
Con esto queremos resaltar que en función de la posición de los segmentos programados, el resultado final del funcionamiento del programa puede variar, por lo tanto siempre se ha de tener en cuenta el funcionamiento secuencial del programa en cada scan.
3.3. Funcionamiento del registro de salidas.
El autómata programable, una vez ejecutado totalmente el programa en cada scan realiza la actualización del estado de las salidas según lo que haya en el registro de salidas y copia estos estados sobre las salidas físicas, de forma que cuando se está ejecutando el programa y debe comprobar el estado de una de las salidas, entonces comprueba este estado en el registro de salidas y no en la salida física del PLC, con ello se consigue mayor rapidez en la ejecución del programa y que este valor leído se mantenga para aplicarlo al resto del programa hasta el próximo scan.
Este funcionamiento provoca que si se han programado dos instrucciones de escritura, como por ejemplo dos salidas iguales, esta salida física responderá únicamente a las condiciones indicadas de la última instrucción programada.
3.3.1. Enunciat del programa. Subrutina 2 (SBS 2).
En este programa queremos que:
o Al activar la entrada 0.00 se active la salida 1.00.
o Al activar la entrada 0.01 se active la salida 1.01.
o Al activar la entrada 0.02 se active la salida 1.02.
o También queremos activar la salida 1.01al activar la entrada 0.03.
Si realizamos el siguiente programa:
En este caso si activamos la entrada 0.00 y la 0.01 observamos en el programa como las salidas 1.00 y 1.01 se encuentran activas, pero si observamos las salidas físicas vemos como la 1.00 si que está activada mientras la 1.01 no, esto pasa por que el refresco de las salidas se realiza al final la ejecución completo del programa y en cada scan, por lo tanto, aunque el segmento 2 pone en el registro de salidas de la 1.01 un "1", el segmento 4 pone un "0" en el mismo bit del registro de salidas de la misma salida 1.01, por tanto el resultado al final del scan es un "0" y que es el estado que copiará sobre las salidas físicas.
Si en lugar de activar la entrada 0.01, activamos la entrada 0.03, entonces se puede observar que la salida 1.01 estará activada.
3.3.2. Enunciado del programa. Subrutina 3 (SBS 3).
Para poder dar solución a este problema es necesario realizar una modificación en el programa de forma que quede como el que se muestra a continuación:
Ahora podemos comprobar que el funcionamiento es correcto:
3.4. Control del funcionament de un motor.
Vamos a realizar el control del funcionamiento de un motor mediante pulsadores de paro y de marcha, además de un disyuntor de protección. También provocaremos un avería en el pulsador de paro.
3.4.1. Control mediante un pulsador de paro normalmente cerrado y un pulsador de marcha normalmente abierto (SB4).
Si nos fijamos en el funcionamiento del disyuntor observamos que, cuando éste no está rearmando, es decir que está disparado, la entrada correspondiente está desactivada y que cuando está rearmado, es decir que no está disparado, la entrada correspondiente está activada .
Si rearmamos el disyuntor y luego accionamos el pulsador de marcha, nos encontramos que el contactor K1M que está conectado a la salida Q0.0 hará que el motor funcione.
Si accionamos el botón de "Avería", el efecto que realizará es el de cortar el cable que va del pulsador de paro a la entrada física 0.10 y por tanto llegara un "0" en la entrada, con lo cual provoca el mismo efecto que si accionamos el pulsador de paro y con ello la salida 1.00 deja de funcionar deteniendo el contactor K1M.
Cuando nos damos cuenta de que el motor se ha detenido y que accionando el pulsador de marcha no vuelve funcionar el contactor K1M, entonces monitorizando el programa podremos ver como la señal a la entrada 0.10 no está llegando, esto nos indica que en el circuito eléctrico del pulsador de paro tenemos alguna avería.
3.4.2. Control mediante un pulsador de paro normalmente abierto y un pulsador de marcha normalmente abierto. Subrutina 5 (SBS 5).
Si nos encontramos alguna vez con una emergencia de que no tenemos pulsador de paro a sustituir, podemos utilizar un pulsador de marcha, pero debemos tener en cuenta que el pulsador de paro trabaja con el contacto normalmente cerrado y el de marcha trabaja con el contacto normalmente abierto, por lo tanto el programa tendrá una pequeña pero importante modificación que tendremos que tener en cuenta y que no es otro que, el contacto programado del pulsador de paro que antes era abierto, ahora al utilizar el pulsador de marcha el contacto programado deberá ser cerrado para un correcto funcionamiento del programa.
Ahora si comprobamos el funcionamiento con las modificaciones indicadas anteriormente, observamos como al accionar el pulsador de marcha "S8" conectado a la entrada 0.08, la salida 1.00 se activará y pondrá en funcionamiento el contactor K1M y si queremos detener -el entonces pulsaremos el pulsador de marcha "S9" que actúa como paro (0.09).
Si accionamos el botón de "Avería", el efecto que realizará es el de cortar el cable que va del pulsador de marcha a la entrada física 0.09 y por tanto le llega un "0" en la entrada, y en principio todo funciona correctamente en cuanto a la puesta en marcha del motor, pero cuando queremos desactivar la salida 1.00 pulsando la entrada 0.09 del pulsador "S9", no provoca ninguna alteración en el programa y por tanto no se puede desactivar la salida 1.00 y por tanto tampoco el motor.
IMPORTANTE: Tenemos un problema grave de seguridad ya que no se puede detener el motor, por lo que no es nada recomendable utilizar este sistema para sustituir un paro y que éstos siempre deben estar controlados por contactos físicamente cerrados.
3.4.3. Control de un motor mediante un pulsador de paro normalmente cerrado y un pulsador de marcha normalmente abierto con conteo de veces que se ha disparado el disyuntor.
A continuación exponemos una aplicación directa del funcionamiento de los registro de entradas, ya que queremos contabilizar las veces que se dispara el disyuntor cuando el motor se encuentra en marcha, como que cuando se dispare tendremos un "0" en la entrada correspondiente y necesitamos un "1" para dar el impulso al contador, pondremos como condición de conteo un contacto normalmente cerrado de la salida Q0.0, que activa el contactor K1M:
a) Programación incorrecta. Subrutina 6 (SBS 6).
En este caso se puede comprobar como no realiza el conteo, ya que al dispararse el disyuntor, lo primero que realiza es detener la salida 1.00, entonces cuando se ejecuta el segundo segmento, el bit 1.00 ya vale " 0 "y por lo tanto el contador no realiza el conteo.
b) Programación correcta. Subrutina 7 (SBS 7).
Simplemente intercambiando el orden de los segmentos el conteo funcionará correctamente y registrará las veces que el disyuntor se dispara cuando el motor está en marcha.
3.5. Control del funcionamiento de les entradas y salidas analógicas.
Para poder visualizar el funcionamiento tanto de las entradas como de las salidas analógicas, presentamos un pequeño programa para visualizar los valores que poder representar. Subrutina 8 (SBS 8)
El programa que realiza es que en función del estado del selector S0 conectado a la entrada 0.00 se copiara el valor de la entrada analógica Canal 2005 o Canal 2006 en la salida analógica Canal 2001, respectivamente:
a) Visualización del valor de la entrada analógica Canal 2005 en la salida Canal 2001. Cuando activamos la entrada 0.07 se activara el bit de conversión habilitada (2000.00) con lo cual el valor enviado a la salida analógica será convertido en tensión en los bornes de la salida analógica:
Si el selector 0.00 está en “OFF”, entonces la entrada analógica Canal 2005 se copia en la salida analógica Canal 2001 y si la entrada 0.07 esta en “ON”, se activará el bit de conversión habilitada (2000.00) con lo cual el valor enviado a la salida analógica será convertido en tensión en los bornes de la salida analógica.
Si el selector 0.00 está en “ON”, entonces la entrada analógica Canal 2005 se copia en la salida analógica Canal 2001 y si la entrada 0.07 esta en “ON”, se activará el bit de conversión habilitada (2000.00) con lo cual el valor enviado a la salida analógica será convertido en tensión en los bornes de la salida analógica.
El proyecto de CX-Programer se ha estructurado en diferentes bloques de programa como son:
o COMUNICACIÓN: Este bloque de programa es el que realiza la comunicación entre el PLCs y el Simulador 3D del proceso, por eso es muy importante no modificar ninguno de los valores e instrucciones programados.
o PRINCIPAL: Este bloque contiene la organización de llamadas al resto de bloques que forman el programa del proceso.
o SBS_0_REGISTRO_DE_ENTRADAS_A : Programa ejemplo del funcionamiento sobre el registro de entradas del PLC.
o SBS_1_REGISTRO_DE_ENTRADAS_B: Programa ejemplo del funcionamiento sobre el registro de entradas del PLC.
o SBS_2_REGISTRO_DE_SALIDAS_A: Programa ejemplo del funcionamiento sobre el registro de salidas del PLC.
o SBS_3_REGISTRO_DE_SALIDAS_B: Programa ejemplo del funcionamiento sobre el registro de salidas del PLC.
o SBS_4_CONTROL_MOTOR_A: Programa ejemplo del control de funcionamiento de un motor.
o SBS_5_CONTROL MOTOR_B: Programa ejemplo del control de funcionamiento de un motor.
o SBS_6_CONTROL MOTOR_C: Programa ejemplo del contaje de veces que se dispara el disyuntor cuando el motor está en marcha.
o SBS_7_CONTROL MOTOR_D: Programa ejemplo del contaje de veces que se dispara el disyuntor cuando el motor está en marcha.
o SBS_8_ENTRADAS_SALIDAS ANALÓGICAS: Programa ejemplo para la visualización de las señales analógicas tanto de entrada como de salida.
Por lo tanto, el proyecto en CX-Programer tendrá la siguiente estructura:
A continuación se presenta el contenido de cada bloque de programa.
Comunicación
Principal
SBS_0_REGISTRO_DE _ENTRADAS_A
SBS_1_REGISTRO DE _ENTRADAS_B
SBS_2_REGISTRO_DE _SALIDAS_A
SBS_3_REGISTRO_DE _SALIDAS_B
SBS_4_CONTROL_MOTOR_A
SBS_5_CONTROL_MOTOR_B
SBS_6_CONTROL_MOTOR_C
SBS_7_CONTROL_MOTOR_D
SBS_8_ENTRADAS_SALIDAS_ANALÓGICAS
END
Contenidos de este espacio de Ramón L. Yuste y Vicenç Guerrero se publica bajo licencia:
Creative Commons Reconocimiento-No comercial-Sin obras derivadas 3.0 España