sábado, 21 de noviembre de 2009

Otro OB útil en los PLC's S7-300

SI-300-004

Como comentaba en el artículo precedente, a la hora de programar un PLC desde cero, por lo regular lo hacemos sin muchas consideraciones de seguridad. Más de alguna vez nos entusiasmamos con el desarrollo de nuestra programación, viendo como un punto lejano el momento en que mandemos a "Run" nuestra CPU y todo trabaje a la perfección. Movidos por este deseo, nos apresuramos a escribir líneas de código y más código, sin reparar mucho en los detalles. De cualquier forma, los detalles los atacaremos una vez que hayamos dado por terminada la estructura principal de nuestra lógica de control. O podemos también estar atrapados por el tiempo: este programa que controla en su totalidad el proceso de una línea de producción, tiene que estar terminado a más tardar el día lunes... y hoy es viernes... El reto de finalizar a tiempo la programación nos lleva de igual forma a omitir detalles, y sabemos que no descansará nuestra fatigada mente hasta no ver a los jefes satisfechos con nuestro trabajo. Las prisas, siempre las prisas, nos hacen volvernos bastante miopes ante las cosas que nos rodean y nos demandan de nuestra atención.

Es Domingo ya, y nuestro programa apenas va tomando forma. La fatiga hace estragos en nuestra mente. Lo único que se hace presente en nuestra conciencia es el que el día de mañana tenemos que entregar funcionando este cacharro viejo con un PLC de última generación. No atinamos a concentrarnos. Y nuestros compañeros de batalla ya se han retirado a descansar, al fin y al cabo, los problemas mecánicos y eléctricos ya los tienen dominados, más no sabiendo que una válvula está dañada y fuga aire, producto de haber forzado la compuerta para fijarla en su lugar, y que un sensor de temperatura quedó quebrado, luego que una persona de mantenimiento lo usara como escalón cuando hizo el cambio de tubería eléctrica que ya estaba bastante deteriorada. En fin. Sólo queda luchar contra el reloj.

Pero estamos tan fatigados que, aquello que vislumbrábamos con claridad al momento de abordar la programación, lo que habíamos concebido como nuestra ruta de viaje para saber qué cosas van en cada lugar, aquello que veíamos al inicio tan sencillo e integrado, en estos momentos se vuelve confuso y surgen miles de dudas en momentos tan críticos. Hasta llegamos a pensar si no habría sido más sencillo programar como nos sugería nuestro jefe. Si no queda, qué buena rociada me va esperar el día de mañana. Volvemos al programa. Escribimos que queremos leer la DBW48 del DB110. Sin embargo, producto del cansancio físico y la fatiga mental, en vez de DB110 escribimos DB119 (este DB119 no ha sido creado todavía). Me dirán que está súper difícil no notar que en vez de "0" pusimos un "9". Sí, cuando estamos lúcidos y bien despiertos, no se nos pasa nada, pero en las condiciones que aquí describimos, hasta un volcho lo confundimos con un Bora. Sólo exagero un poco. Pero bueno, ya escribimos 119 en vez de 100.

Pensé que no lo iban a notar. Sólo quería ver si estaban atentos a lo que escribía. Arriba puse 100, pero más bien era 110. Igual, pongo el pretexto de que ya ando bastante enfadado y cansado. Bueno, continuemos. Entonces decía que en el programa escribí 119 en lugar de 110. El editor de programas del Simatic Manager no me dice nada, así que sigo tecleando más y más líneas de instrucciones hasta completar la rutina que deseaba. Como veo que todo va funcionar correctamente, decido descargar el bloque de programa en el PLC. Apenas termina la carga de programa y, desastre. La CPU se ha ido a "Stop". No me gano nada con ponerme a maldecir una y mil veces... de todos modos lo hago. Ya que me tranquilicé, busco en el búffer de diagnóstico de la CPU la causa del fallo, y descubro que aparece un mensaje donde dice que no encontró el OB121. Rayos, lo que me faltaba.

Este OB121 es llamado por la CPU cuando cometemos, como en este caso, un error de programación. Si la CPU encuentra cargado en su memoria al OB121, en errores de programa, evita que la CPU se vaya a Stop. Pero si no está cargado, ya sabremos en el búffer de diagnóstico por qué rayos se salió del modo Run. Cabe aclarar que, aunque el OB121 esté cargado en la CPU y así esta no se va falla, de cualquier modo, el error persiste y tenemos que eliminarlo manualmente. Al eliminarlo, eliminamos la falla de la CPU.

Por último indicar que basta con que creemos el OB121 y lo transfiramos a la CPU. No es necesario cargar una sóla instrucción en este OB para evitar que la CPU se vaya a Stop. El único requisito es que el OB121 exista en la memoria del PLC para que nos salve de generar situaciones comprometedoras. Ahora sí, a programar con más confianza.
    

0 comentarios:

Publicar un comentario