Está en la página 1de 4

Tres maneras de generar pulsos en un controlador Logix5000

Es raro que programando una mquina no sea necesaria una seal pulsante, generalmente para funciones de sealizacin. En controladores de Rockwell, por ejemplo del tipo SLC 500, podemos echar mano de bits de sistema que cumplen esta funcin. Sin embargo, en la gama de controladores Logix5000, si necesitamos un pulso deberemos generarlo nosotros. En esta entrada voy a proponer tres maneras de generar una seal pulsante de un segundo de duracin: primero usando temporizadores (PULSO_TEMP), luego leyendo el tiempo del sistema (PULSO_SIS) y finalmente usando tareas peridicas (PULSO_TAREA). El cdigo en lgica de escalera para generar un pulso con temporizadores podra tener este aspecto:

(Pincha para ver mejor la imagen)

Uso dos temporizadores, uno para controlar el semiciclo activo del pulso y otro para el semiciclo inactivo, y a cada uno de ellos le asigno una duracin de 500 ms. Esta es la opcin que requiere ms programacin. Otra forma de generar el pulso es leyendo el tiempo del sistema. Para ello tenemos que echar mano de la instruccin GSV (Get System Value), que sirve para leer distintos parmetros de estado del controlador. El tiempo del sistema lo obtendr en una tabla de siete DINT, as que voy a crear un tipo de dato para almacenarlo. Voy al rbol del proyecto y sobre Data Types User Defined, con el botn derecho del ratn, pulso sobre New Data Type...

Y genero un tipo de datos que voy a llamar FECHA_HORA con siete datos de formato DINT donde se almacenarn consecutivamente el ao, el mes, el da, la hora, el minuto, los segundo y los microsegundos (ojo con este ltimo dato, son microsegundos, no milisegundos - nunca me haba encontrado un PLC con semejante resolucin de tiempo).

Ahora declaramos una variable con este nuevo tipo de dato (yo la he llamado T_ACTUAL) y ya podemos programar:

En el primer rengln uso la instruccin GSV para almacenar en la variable T_ACTUAL la lectura del tiempo del sistema. En el dato T_ACTUAL.Microsecondstendr un valor entre 0 y 999 999; para generar el pulso de un segundo veo si ese valor es menor de 500 000 (medio segundo), activndolo en caso afirmativo. Las dos formas de generar intermitencias que acabamos de ver tienen un inconveniente, y es que dependemos del tiempo de ciclo del PLC para ejecutar las instrucciones, restando precisin a los pulsos. Esto no tiene importancia si vamos a usar la intermitencia para la sealizacin, por ejemplo, de una baliza luminosa, pero puede que precisemos pulsos lo ms exactos posibles, en este caso debemos usar una tarea peridica. Una tarea peridica se ejecuta cada cierto tiempo regular definido por el usuario y se usa para funciones que requieran una ejecucin precisa o determinista. Dependiendo del tipo de PLC Logix5000 se pueden crear hasta 32 tareas peridicas (en la gama CompactLogix solo cuatro) y asignar un nivel de prioridad a cada una. Cada vez que se cumple el tiempo de la tarea peridica, se interrumpe la tarea continua, se ejecuta una vez y luego devuelve el control en el mismo punto donde se interrumpi la tarea continua. Para crear una tarea peridica, en el rbol de proyecto, pulsamos con el botn derecho del ratn sobre Tasks y seleccionamos New Task...

Le asignamos un nombre (en mi caso PULSOS).

Vamos a la pestaa Configuration y en Period asignamos un valor de 500 ms.

Dentro de esta nueva tarea creamos un programa (GENERADOR) y dentro del programa una rutina (PULSO_TAREA). Esta rutina la asigno como rutina principal al programa:

El cdigo de esta rutina es algo tan sencillo como el siguiente rengln:

Cada 500 ms se ejecuta la rutina y en ella invierto la seal del pulso. En la siguiente captura de pantalla se ven los tres pulsos funcionando simultnemante:

Por si alguien tiene inters, el proyecto para RSLogix 5000 de esta entrada est disponible aqu.

También podría gustarte