 Utilización del depurador gráfico

ISaGRAF incluye un depurador gráfico y simbólico completo. El comando "Depurar" de la ventana del Gestor de Programas ejecuta el depurador para controlar la aplicación que se haya cargado en el PLC objeto. En este modo de funcionamiento, el depurador comunica con el sistema objeto por medio de un enlace hardware. El comando "Simular" de la ventana del Gestor de Programas lanza la ejecución simultánea del depurador y de un simulador completo del objeto. Esto le permite al usuario comprobar su aplicación cuando el sistema de E/S objeto todavía no está completo. La ventana del depurador contiene los comandos necesarios para controlar toda la aplicación.

La ventana del depurador

Control de la aplicación

Opciones

Comandos "Escritura"

Modificación en línea

Intercambios DDE

Al iniciarse el depurador, si la aplicación del PLC objeto es la misma que la del banco de trabajo, se abre automáticamente la ventana del Gestor de Programas, en modo depuración. Se pueden utilizar los comandos de esta ventana para abrir otras ventanas ISaGRAF (editores gráficos y de texto, diccionario, listas de variables, conexión de E/S, etc.). Todas las ventanas que se abren durante una sesión de depuración operan en "modo depuración", lo que significa que el comando de edición está deshabilitado. Se muestran los componentes de programas (pasos, transiciones, variables, etc.) con su estado o valor actual de tiempo de operación. Hacer doble click sobre un objeto para cambiar su estado o valor en la aplicación objeto.

Al ejecutar el depurador en modo simulación, se interrumpe la comunicación con el sistema ISaGRAF objeto. El depurador sólo se comunica con la ventana del simulador. Ya que el sistema objeto no existe en este modo, los comandos "carga", "parada" o "activar" no están disponibles en el menú del depurador.


La ventana del depurador

La ventana del depurador sólo contiene información relativa al estado de la aplicación en su conjunto. Está vinculada a otras ventanas ISaGRAF, creando un sistema interactivo de depuración completo. Los errores de tiempo de operación detectados se muestran en la parte inferior de la ventana del depurador. Se utilizan los comandos del menú "Opciones" para ocultar, mostrar o eliminar la lista de errores.

El panel de control (la zona situada debajo del menú del depurador) muestra el estado global de la aplicación destino, junto con información sobre tiempos de los ciclos de ejecución. El sistema objeto puede presentar los siguientes estados:

Presentación:	El depurador establece la comunicación con el sistema objeto.

Desconectado:	El depurador no puede comunicar con el sistema objeto. Revisar el cable de conexión y asegurar la validez de los parámetros de comunicación.

Sin aplicación:	La conexión es correcta, pero en la actualidad no existe ninguna aplicación ISaGRAF en el sistema objeto. Proceder a la carga remota de una aplicación.

Aplicación activa:	La conexión es correcta y existe una aplicación activa en el sistema objeto. El depurador está estableciendo la comunicación con esta aplicación, siempre que sea la misma que la que está activa en el banco de trabajo.

RUN:	La aplicación objeto está en modo "Tiempo Real".

STOP:	La aplicación objeto está en modo "Ciclo a Ciclo".

Breakpoint:	La aplicación objeto está en modo "Ciclo a Ciclo" porque se encontrado con un breakpoint.

Error Fatal:	La aplicación objeto falló debido a un error grave

Se dispone de la siguiente información sobre tiempos de los ciclos de ejecución:

Permitido:	tiempo programado.

Actual:	tiempo exacto del último ciclo completo de ejecución.

Máximo:	tiempo máximo detectado desde el inicio de la aplicación.

Rebasamiento:	número de ciclos de ejecución detectados con tiempos superiores al permitido.

Todos los valores de tiempo se expresan en milisegundos. No se muestran los valores de tiempo cuando se utiliza el depurador en modo simulación.


Control de la aplicación

Los menús "Fichero" y "Control" contienen todos los comandos necesarios para la instalación y el control de la aplicación ISaGRAF actual en el sistema ISaGRAF objeto.

Nota:	No se dispone de algunos de estos comandos durante la simulación, ya que el banco de trabajo ISaGRAF instala automáticamente la aplicación que está siendo procesada por el simulador.

Interrupción de la aplicación objeto

Activación de la aplicación objeto

Carga de la aplicación

Visualización del número de versión

Modificación en línea

Modo Tiempo Real

Modo Ciclo a Ciclo

Ejecutar un ciclo

Tiempo de ciclo

Eliminación de todos los breakpoints

Desbloquear variables de E/S


Interrupción de la aplicación objeto

El comando "Fichero / Parar aplicación" interrumpe la ejecución de la aplicación activa en el sistema ISaGRAF objeto.


Activación de la aplicación objeto

El comando "Fichero / Iniciar aplicación" ejecuta la aplicación que está presente en el sistema objeto. Cuando se carga una aplicación se inicia automáticamente, por lo que no se tiene que utilizar el comando "Iniciar". El comando "Iniciar" suele emplearse después de un comando "Parar".

Nota:	La aplicación objeto debe estar parada (inactiva) antes de realizar la carga remota de una nueva aplicación.


Carga de la aplicación

Se utiliza el comando "Fichero / Cargar" para efectuar la carga del código de aplicación en el sistema objeto. Seleccionar el tipo de código que se va a cargar, de acuerdo con el procesador del sistema objeto y las opciones de la aplicación.


Visualización del número de versión

Se utiliza el comando "Fichero / Obtener número de versión" para visualizar la identificación completa tanto de la aplicación del banco de trabajo como de la aplicación objeto. La aplicación del banco de trabajo es la que está abierta en el banco de trabajo ISaGRAF. La aplicación objeto es la que se ejecuta en el PLC ISaGRAF objeto. Se muestran los siguientes puntos:

VERSION:	Es el número de versión del código de aplicación. Este número ha sido calculado por el generador de código.

FECHA:	Este punto muestra la fecha y hora a la que se construyó el código.

CRC:	Se trata de un valor de comprobación que se calcula con base en el contenido de la tabla de símbolos. Este número ha sido calculado por el generador de código. Su valor depende del contenido del diccionario de variables.

Nota:	El comando "Obtener número de versión" también está disponible durante la simulación. En el modo de depuración real, no se puede utilizar este comando si no está conectado el PLC objeto.


Modificación en línea

El comando "Fichero / Actualizar aplicación" le permite al usuario llevar a cabo la "modificación en línea" de la aplicación objeto que se está ejecutando. Este comando se describe en mayor detalle en secciones posteriores de este apartado. No está disponible cuando se ejecuta el depurador en modo simulación.


Modo Tiempo Real

No se dispone del comando "Control / Tiempo real" cuando no hay una aplicación activa. Este comando establece el modo normal de "tiempo real" en la aplicación objeto. Modo Normal: los ciclos de ejecución se activan por tiempo programado de ciclo.


Modo Ciclo a Ciclo

No se dispone del comando "Control / Ciclo a ciclo" cuando no hay una aplicación activa. Este comando establece el modo normal de "ciclo a ciclo" en la aplicación objeto. En este modo, se ejecutan los ciclos uno a uno, de acuerdo con los comandos "Ejecutar un ciclo" realizados por el usuario desde el menú del depurador.


Ejecutar un ciclo

Cuando el sistema objeto está en modo ciclo a ciclo, el comando "Control / Ejecutar un ciclo" provoca la ejecución de un ciclo.


Tiempo de ciclo

El comando "Control / Cambiar tiempo de ciclo" le permite al usuario modificar el tiempo programado de ciclos. Este tiempo se denomina "Permitido", en la ventana de la barra de control del depurador. Se debe establecer el modo "Ciclo a ciclo" antes de modificar los tiempos de ciclo. Se introducen los tiempos de ciclo como números enteros expresados en milisegundos.


Eliminación de todos los breakpoints

El comando "Control / Eliminar todos los breakpoints" elimina todos los breakpoints que actualmente estén instalados (encontrados o todavía activos) en toda la aplicación. Los breakpoints actuales no se eliminan automáticamente cuando se cierra la ventana del depurador.


Desbloquear variables de E/S

El comando "Control / Desbloquear todas las variables ES" desbloquea todas las variables de E/S que actualmente están bloqueadas en la aplicación. Cuando una variable de E/S está bloqueada, no se pueden realizar cambios en el estado de entrada o salida del dispositivo de E/S correspondiente. La aplicación o el depurador pueden seguir escribiendo las variables asociadas a una E/S. Las variables de E/S bloqueadas no se desbloquean automáticamente cuando se cierra la ventana del depurador.


Opciones

El menú "Opciones" contiene todas las opciones necesarias para controlar la información mostrada en la ventana del depurador.

Parámetros de comunicación

Opciones de visualización


Parámetros de comunicación

Se pueden ajustar los parámetros de tiempos de comunicación cuando el depurador está activo. Sólo se puede configurar el tiempo de espera de comunicación desde aquí. Los demás parámetros de comunicación (baudios, paridad, etc.) se configuran desde el menú "Depuración" de la ventana del Gestor de Programas.

El "Tiempo permitido de comunicación" es el tiempo que queda para que el sistema objeto comience a contestar a una petición del banco de trabajo. La "Duración del refresco de ciclo" es el periodo de tiempo que se requiere para que el depurador envíe las peticiones de "lectura" para refrescar los datos que aparecen en las ventanas abiertas.

Todos los valores de tiempo se muestran y se introducen como números enteros, expresados en milisegundos. No se puede configurar los parámetros de tiempo de comunicación cuando el depurador se utiliza en modo simulación.


Opciones de visualización

La opción "Mostrar tiempo de ciclo" le permite al usuario ocultar o mostrar los valores de tiempos de ciclos en la barra de control del depurador. Cuando se selecciona esta opción, se muestran y se refrescan todos los componentes de tiempos de ciclos (permitido, actual, máximo, rebasamientos, etc.). La desactivación de esta opción reduce la carga de comunicación del depurador.

Cuando se selecciona la opción "Mostrar errores", los errores de tiempo de proceso que se detectan aparecen en la zona inferior de la ventana de depuración. Si se desactiva esta opción, se cierra la lista de errores. La eliminación de esta opción reduce la carga de visualización y comunicación del depurador. El comando "Opciones / Limpiar errores" elimina la lista de errores de tiempo de proceso que se está mostrando en la ventana del depurador.

El comando "Opciones / Minimizar ventana" reduce el tamaño de la ventana del depurador para que aparezca como un panel pequeño, siempre visible, que sólo contiene el estado de la aplicación y unos botones gráficos para los comandos de uso más frecuente.


Comandos "Escritura"

El depurador simbólico de ISaGRAF posee numerosos comandos para cambiar el valor o estado de los componentes de una aplicación. Seleccionar el componente que se desea cambiar haciendo doble click sobre su nombre o dibujo en una ventana de edición, cuando se abre la ventana del depurador.

Variables

Objetos SFC


Variables

Para cambiar el estado de una variable, hacer doble click sobre su nombre en una de las siguientes ventanas:

- Diccionario

- Listas de variables o diagramas de tiempo

- Programas LD o FBD

- Conexión de E/S

Se ofrecen los siguientes comandos en la ventana de diálogo del depurador:

- Introducir un nuevo valor para la variable

- Bloquear la variable (sólo variables de E/S)

- Desbloquear la variable (sólo variables de E/S bloqueadas)

- Iniciar o parar una variable temporizador (establecer modo de refresco automático)

Los valores simbólicos que se utilizan para representar los valores booleanos FALSO y VERDADERO son las cadenas que se han definido para esa variable específica en el diccionario. El valor analógico que se especifica para un comando "Escritura" se tiene que introducir en formato de valores enteros o reales, según la definición de variables del diccionario. La cadena que se establezca para un mensaje no puede ser superior a la capacidad de mensaje que tenga asociada esa variable en el diccionario.


Objetos SFC

Para observar una operación de control sobre un programa SFC mientras se depura la aplicación, se utilizan los comandos del menú "Fichero" en la ventana del Gestor de Programas. El programa SFC debe estar seleccionado desde la lista de programas. Se dispone de los siguientes comandos:

Iniciar programa SFC:	Habilita el programa seleccionado mediante la colocación de una marca SFC en cada uno de sus pasos iniciales.

Matar programa SFC:	Deshabilita el programa seleccionado mediante la eliminación de todas las marcas existentes.

Congelar programa SFC:	Elimina todas las marcas existentes en el programa seleccionado y memoriza su posición.

Continuar programa SFC	Reinicia un programa 'congelado' mediante la colocación de todas las marcas que fueron eliminadas por el comando "Congelar".

En el caso de los programas hijo, estos comandos equivalen a las funciones "GSTART", "GKILL", "GFREEZE" y "GRST" del lenguaje de programación.

Para visualizar una operación de control en un paso SFC mientras se depura la aplicación, hacer doble click sobre su representación gráfica en la ventana de edición SFC. Se dispone de los siguientes comandos en la ventana de diálogo del depurador:

- Establecer breakpoint en la activación del paso

- Establecer breakpoint en la desactivación del paso

- Eliminar un breakpoint que se haya añadido al paso

Nota:	No se pueden añadir breakpoints de activación y desactivación al mismo paso.

Para visualizar una operación de control en una transición SFC mientras se depura la aplicación, hacer doble click sobre su representación gráfica en la ventana de edición SFC. Se dispone de los siguientes comandos en la ventana de diálogo del depurador:

- Establecer un breakpoint al franquear la transición

- Eliminar un breakpoint que se haya añadido a la transición

- Franquear la transición manualmente  (mover o añadir marcas)

Franqueo condicional: se coloca una marca en los pasos que siguen a la transición. Se eliminan las marcas que existan en los pasos precedentes.

Franqueo incondicional: se coloca una marca en los pasos que siguen a la transición. No se eliminan las marcas que existan en los pasos precedentes.


Modificación en línea

La función de "modificación en línea" le permite al usuario modificar la aplicación mientras se ejecuta el proceso. A veces resulta necesario para los procesos químicos, donde cualquier interrupción puede resultar perjudicial para la producción o la seguridad.  Se debe utilizar esta función con mucho cuidado. ISaGRAF podría ser incapaz de detectar todos los posibles conflictos provocados por operaciones definidas por el usuario, como resultado de estos cambios en línea.

Secuencias de código

Variables

Entradas y salidas

Operaciones en tiempo de proceso

Requisitos de memoria

Limitaciones

Operaciones


Secuencias de código

Teniendo en cuenta que ISaGRAF ofrece muchas posibilidades de acceso a variables, programas o tarjetas de E/S desde el depurador, la función de "modificación en línea" que se describe aquí sólo es aplicable a la modificación de secuencias de código. Una secuencia de código es un conjunto completo de instrucciones ST, IL, LD o FBD que se ejecutan en serie. En un programa de "comienzo de ciclo" o "fin de ciclo", una secuencia de código es la lista entera de instrucciones escritas en el programa. En un programa SFC, una secuencia de código es la programación de Nivel 2 de un paso o una transición. La "modificación en línea" consiste en sustituir uno o más secuencias de código, sin interrumpir el ciclo de ejecución del PLC. Ya que el control de las marcas SFC es altamente crítico, no se puede modificar una estructura SFC, añadir, renumerar o eliminar un paso, una transición o un programa SFC.


Variables

La base de datos de variables es una parte muy crítica de la aplicación, por lo que otros procesos (en PLCs de multitarea) pueden acceder a ella en cualquier momento. También existe la posibilidad de modificar valores de variables desde el depurador. Por lo tanto, ISaGRAF no permite al usuario añadir, renombrar o eliminar una variable en línea. Sin embargo, sí es posible modificar la forma en la que se utiliza una variable en la aplicación. Existe asimismo la posibilidad de reservar variables internas o de E/S "no utilizadas" en la primera versión de la aplicación, para que las futuras modificaciones puedan hacer uso de ellas.

Hay diferentes tipos de variables en la base de datos del sistema objeto de ISaGRAF . Las limitaciones afectan a todas ellas.

- Variables declaradas

Son las que están declaradas usando el diccionario de ISaGRAF . No pueden cambiarse ni eliminarse para cambios en línea. Se recomienda que algunas de estas variables adicionales se declaren e inicialicen en la aplicación, incluso si no se usan actualmente. Estas variables adicionales permitirán futuras modificaciones para seguir trabajando sin cambiar el dato de comprobación de la aplicación

- Instancias de bloques de función

Cada instancia de bloques de función "C" o IEC escritos corresponde a datos almacenados en la base de datos en tiempo real del sistema objeto de ISaGRAF. Cuando se añaden o eliminan bloques de función no son posibles cambios en línea. De ahí que sea mejor trabajar en ST con instancias FBD declaradas en el diccionario, mejor que añadiendo bloques (esto correspondería a instancias nuevas automáticamente declaradas) en diagramas Quick LD o FBD. También cualquier modificación en la definición de bloques de función disponibles en la librería de ISaGRAF llevaría a un cambio en línea imposible.

- Pasos

Cada paso SFC corresponde a un conjunto de datos donde se almacenan atributos dinámicos de los pasos (su actividad temporal y bandera). Añadir o eliminar pasos SFC cambia la base de datos de la aplicación y se deniega para cambios en línea.

- Variables ocultas alocadas por compiladores

El compilador de ISaGRAF genera variables temporalmente ocultas para resolver expresiones complicadas. En algunos casos el cambio de una expresión puede dar lugar a un conjunto diferente de variables temporales, y eso lleva a la imposibilidad de cambios en línea. Para evitar esta situación se pueden añadir las siguientes entradas en el fichero ISA.INI, para forzar un número mínimo de variables temporales que se aloquen para cada programa, incluso si no se usa para compilar la versión de la primera aplicación. Los valores dados aquí son ejemplos:

[DEBUG]

MNTVboo=8	; para booleanas

MNTVana=4	; para enteros y reales

MNTVtmr=4	; para temporizadores

MNTVmsg=2	; para mensajes

Cuando se escribe una configuración como ésta en el archivo ISA.INI el compilador da un mensaje de aviso si una nueva compilación de la aplicación lleva a un número mayor de variables alocadas temporalmente.


Entradas y salidas

El sistema de E/S de ISaGRAF es muy abierto, por lo que las modificaciones necesarias deberán estar implementadas por los OEM, utilizando funciones específicas del hardware correspondiente. El sistema ISaGRAF no permite al usuario añadir, conectar o eliminar una variable de E/S, o modificar la descripción de una tarjeta de E/S en línea. Se dispone de operaciones como la modificación de los parámetros de una tarjeta y el bloqueo de los canales de E/S por medio de las funciones OEM estándares y la función "OPERATE".


Operaciones en tiempo de proceso

La modificación de una aplicación en funcionamiento consiste de las siguientes operaciones:

- modificar el código fuente de la aplicación en el banco de trabajo

- generar el nuevo código de aplicación

- realizar la carga del nuevo código de aplicación utilizando el comando "actualizar" en lugar de "cargar"

- cambiar de la aplicación vieja a la nueva, entre ciclos de ejecución del PLC, utilizando el comando "Realizar actualización".

Este procedimiento garantiza que el PLC objeto disponga siempre de una aplicación completa y fiable, y permite al usuario controlar los tiempos de las operaciones de muestra de forma muy segura y eficiente. Así mismo, permite al usuario modificar el proyecto tantas veces como sea necesario. Con independencia del proceso, la "modificación en línea" es básicamente igual que un conjunto normal de comandos "parar, iniciar y cargar". La única diferencia que existe es que no se pierden estados variables y el tiempo de cambio es muy corto (duración típica: 1 ó 2 ciclos). Durante el cambio no se modifica ninguna variable, y todas las variables internas, de entrada o de salida tienen el mismo valor antes y después de la modificación de la aplicación. Durante el cambio, no se lleva a cabo ninguna acción y no se mueven las marcas SFC.


Requisitos de memoria

Para poder soportar la capacidad de "modificación en línea"; el PLC objeto tiene que tener suficiente memoria libre para poder guardar la versión modificada del código de aplicación. Se tienen que guardar ambas versiones del código de aplicación en la memoria del PLC durante la operación de cambio.


Limitaciones

Como ya se dijo, sólo se permiten las modificaciones de las secuencias de código. No se pueden modificar las definiciones de variables, parámetros de aplicaciones y conexiones de E/S. Cuando se realiza la carga de una versión modificada de la aplicación, ISaGRAF lleva a cabo una comparación entre la aplicación modificada y la que actualmente está en funcionamiento, para detectar cualquier cambio que no sea seguro. Si el cambio pudiera ser peligroso o imposible, se genera un error de carga. Una de las medidas de seguridad que lleva a cabo ISaGRAF es la comparación del valor de comprobación de la tabla de símbolos, para así detectar el cambio de nombre de cualquier variable, programa o elemento SFC. Si un paso está activo cuando se produce el cambio, sus acciones (N) no almacenadas se pierden. No se ejecutan las nuevas acciones de activación de pasos. Las acciones que se ejecutan en el momento de desactivación del  paso son aquellas que proceden del nuevo código de aplicación. Si una transición es válida cuando se produce el cambio, se actualiza su ecuación de receptividad. El PLC no realiza una copia de seguridad del código de aplicación recién cargado. La copia de seguridad corresponde a la versión previamente cargada por medio de comandos estándares de carga remota.


Operaciones

Para actualizar el código de una aplicación activa, se tienen que realizar las siguientes operaciones:

- Antes de efectuar cambio alguno en una aplicación activa, es muy recomendable la realización de una copia del proyecto actual con un nombre nuevo. Se pueden efectuar las modificaciones sobre las copias.

- Antes de editar un programa, el usuario debe comprobar que está seleccionada la opción "actualizar diario" de las herramientas de edición, para facilitar el mantenimiento del programa en el futuro.

- Cuando se modifican una o más secuencias (sin modificar las estructuras y jerarquía de programa SFC), se debe generar el código de la aplicación nueva en el banco de trabajo antes de proceder a su carga remota.

- Utilizando el depurador, el usuario tiene que conectar con el PLC objeto desde el proyecto antiguo y realizar cualquier operación que permita que la aplicación se actualice con mayor rapidez o seguridad.

- Utilizando el depurador, el usuario tiene que conectar con el PLC objeto desde el proyecto nuevo. Si se ha cambiado el nombre de la aplicación, no se podrá acceder a la base de datos objeto. En este caso, el usuario tiene que ejecutar el comando "Fichero / Actualizar".

- Se realiza la carga remota de la aplicación modificada mediante la selección de la opción "actualizar después".  Esto puede suponer una pequeña ralentización del PLC durante la transferencia.

- Cuando se complete la carga, el usuario puede ejecutar el comando "Fichero / Realizar actualización" para habilitar el cambio en el momento más oportuno. El cambio tendrá una duración de 1 ó 2 ciclos.

- Si el cambio se ha llevado a cabo correctamente, se muestran los programas de la aplicación modificada que está activa. En caso contrario, la aplicación activa existente permanece como estaba.


Intercambios DDE

El depurador ISaGRAF incluye un servidor DDE (Dynamic Data Exchange). Se puede instalar un bucle de aviso entre el depurador ISaGRAF y otras aplicaciones, para la visualización dinámica del valor actual de las variables en aplicaciones ajenas a ISaGRAF.

El servidor DDE del depurador ISaGRAF sólo soporta transacciones del tipo "advise" y "poke". Sólo se puede utilizar la transacción "request" para variables que ya hayan sido espiadas en un bucle de aviso. Otros servicios DDE, como "execute", no están disponibles. Cuando se establece un bucle de aviso en una variable, el valor de esta variable se actualiza en la aplicación cliente cada vez que cambia. Se pueden espiar variables de cualquier tipo. La identificación del enlace dinámico incluye los siguientes nombres:

Nombre de Servicio:	"ISaGRAF"

Nombre de Tópico:	Nombre del proyecto ISaGRAF

Nombre de Item:	Nombre de la variable

Si la variable es local para un programa, su nombre debe venir seguido por el nombre del programa padre, expresado entre paréntesis y con la siguiente sintaxis:

nombre_variable(nombre_programa)

El servidor DDE del depurador ISaGRAF está dedicado a la aplicación ISaGRAF que actualmente está siendo espiada por el depurador. El servidor ISaGRAF puede espiar hasta 256 variables. Se puede utilizar el servidor DDE cuando se ejecuta el depurador ISaGRAF bien en modo conectado o bien en modo simulación. La duración del refresco es la que se establece para la comunicación entre el depurador y el sistema objeto o simulador de ISaGRAF.