 Utilización del simulador ISaGRAF

El simulador del Kernel ISaGRAF se inicia junto con el depurador cuando se ejecuta el comando "Simular" del menú "Depurar" en la ventana del Gestor de Programas. El simulador del kernel es un sistema objeto ISaGRAF completo que soporta las funciones estándares de ISaGRAF y todas las funciones y los bloques de función "C" de la librería estándar suministrada por CJ International. Las tarjetas de E/S se simulan gráficamente en una ventana. Se puede simular cualquier tipo de tarjeta de E/S. Las tarjetas definidas como "tarjetas virtuales" durante la conexión de E/S también aparecen en la ventana de simulación.

Enlaces con el depurador

Simulación de E/S

Componentes de la librería

Opciones

El simulador de ISaGRAF también incluye potentes herramientas para simulación de aplicación y diagnóstico:

Salvar y recuperar estados de entrada

El perfil de ciclo

Ficheros de comandos de simulación


Enlaces con el depurador

El simulador del kernel soporta la comunicación plena con el depurador ISaGRAF, por lo que se puede utilizar cualquiera de las posibilidades de depuración durante la simulación. El simulador del kernel siempre opera sobre la aplicación ISaGRAF actual. Durante la simulación, los comandos del depurador  "Iniciar", "Parar", "Cargar" o "Actualizar" no están disponibles. No se puede utilizar el depurador si el objeto "SIMULATE" no ha sido seleccionado en las opciones del compilador antes de construir el código destino. El cierre de la ventana del simulador implica que la ventana del depurador (así como cualquier otra ventana ISaGRAF que se haya abierto durante la sesión de depuración) se cierra también.


Simulación de E/S

Las tarjetas de E/S aparecen en la ventana de simulación, tituladas por su nombre y número de ranura. Se soporta cualquiera de los tipos estándares ISaGRAF de E/S (booleanas, analógicas o de mensaje). Se muestran los canales de las tarjetas de entrada con botones y campos especiales. Se muestran los canales de las tarjetas de salida con indicadores gráficos de estado y campos de datos.

 	Entradas booleanas: Las entradas booleanas están representadas por botones cuadrados de color verde. Se muestra el número del canal con el botón de E/S. El valor de entrada es VERDADERO cuando se pulsa el botón. Al hacer click sobre el botón, se cambia el valor de E/S correspondiente. Unicamente cuando está pulsado el botón de entrada, se puede utilizar el botón derecho del ratón para configurar la entrada.

 	Salidas booleanas: Las salidas booleanas están representadas por círculos pequeños. Se muestra el número del canal con la E/S. El valor de salida es VERDADERO cuando está resaltado el símbolo gráfico.

 	Entradas analógicas: Un canal analógico de entrada es un campo numérico simple en el que se puede introducir el valor de la entrada correspondiente. Hacer click sobre la ventana para visualizar el cursor y poder proceder a la introducción de un nuevo valor para el canal. No es necesario el uso de la tecla INTRO (Retorno) después de realizar la introducción de datos. Se pueden introducir las entradas analógicas bien en base decimal o bien en base hexadecimal. Utilizar los botones de arriba/abajo para aumentar o reducir al valor actual.

 	Salidas analógicas: Un canal de salida analógica es un campo de salida numérico. Se puede mostrar el valor de salida como un número bien decimal o bien hexadecimal. El usuario no puede actuar sobre un canal de salida.

 	Entradas de mensajes: Un canal de entrada de mensajes es un campo simple de texto en el que se introduce el valor de la entrada correspondiente. Hacer click sobre la ventana para visualizar el cursor y poder proceder a la introducción de un nuevo valor para el canal. No es necesario el uso de la tecla INTRO después de realizar la introducción de datos.

 	Salidas de mensajes: Un canal de salida de mensajes es un campo de salida de texto. El usuario no puede actuar sobre un canal de salida.


Componentes de la librería

El simulador ISaGRAF soporta todas las conversiones, funciones y bloques de función estándares proporcionadas por CJ International. Se soportan los siguientes objetos:

Funciones de conversión:

bcd, scale

Funciones:

abs, acos, ArCreate, ArRead, ArWrite, ascii, asin, atan, char, cos, delete, expt, find, insert, left, limit, log, max, mid, min, mlen, mod, mux4, mux8, odd, rand, replace, right, rol, ror, sel, shl, shr, sin, sqrt, tan, trunc

Bloques de función:

average, blink, cmp, ctd, ctu, ctud, derivate, f_trig, hyster, integral, lim_alrm, r_trig, rs, sema, sr, stackint, tof, ton, tp

Por lo general, las conversiones, funciones "C" y bloques de función "C" definidos por el usuario no están integrados en el Simulador ISaGRAF. Normalmente, estos objetos están diseñados para utilizar los recursos de software y hardware del sistema objeto. El sistema Windows no suele disponer de este tipo de recursos. El Simulador ISaGRAF proporciona el siguiente comportamiento estándar para cualquier conversión, función o bloque de función definido por el usuario:

- Cuando el simulador procesa una nueva conversión, la sustituye por una conversión "nula". Esto significa que el valor físico de las variables analógicas es siempre igual al valor eléctrico (según se introduce o se representa en el panel del Simulador).

- Cuando el simulador ejecuta una nueva función o bloque de función "C", no procesa operación alguna. No se establece el valor del resultado.


Opciones

Los comandos del menú "Opciones" le permiten al usuario controlar la representación de E/S en el panel del simulador. El usuario puede establecer o eliminar estas opciones en cualquier momento de la depuración.

Si se selecciona la opción "Presentación en color", los canales de E/S se muestran como bitmaps en color. Si no se pueden distinguir los colores en determinados tipos de pantalla de cristal líquido, el usuario deberá deseleccionar esta opción para utilizar gráficos de entrada y salida en blanco y negro puro para los canales de E/S.

Al seleccionar la opción "Nombres de variables", se muestra una pegatina al lado del canal de E/S, con el nombre de la variable de E/S que está conectada. Si se elimina esta opción, el usuario puede reducir el tamaño del panel de simulación.

Cuando se selecciona la opción "Valores hexadecimales", los canales analógicos de entrada y salida se muestran y se introducen en formato hexadecimal.

Al seleccionar la opción "Siempre arriba", la ventana del simulador está siempre visible, incluso si el foco de entrada está en otra ventana.


El perfil de ciclo

EL perfil de ciclo de ISaGRAF es una potente herramienta de diagnóstico que muestra como se distribuye el tiempo de ciclo entre varios programas, funciones y bloques de función de una aplicación. Esta herramienta es muy útil para tener un diagnóstico rápido en la ejecución de la aplicación y lleva el programador a las partes del código que pueden necesitar optimizaciones.

El perfil de ciclo se ejecuta mediante el comando "Herramientas / Perfil de ciclo" en los menús de la ventana del simulador de ISaGRAF. Muestra para cada programa, función o bloque de función el porcentaje de tiempo de ciclo empleado en su ejecución.

Cuando la opción "Vista / Media" está activada, la información desplegada es una media de porcentajes calculada desde que se inició la aplicación, o desde la última vez que se ejecutó el comando "Vista / Reset".

Si no se activa la opción "Vista / Media" la información desplegada muestra las medidas hechas durante la ejecución del último ciclo. Se puede utilizar también esta característica cuando la aplicación está en el modo "Ciclo a Ciclo" para tener un grupo de medidas dependiendo del contexto de la aplicación.

Utilizar el comando "Vista / Copiar" para copiar los nombres de programa y porcentajes al portapapeles de Windows en formato ASCII. Después se pueden pegar los datos en documentos de texto u hojas de distribución comunes.

Notas importantes.

Estas no son medidas precisas. El cálculo de porcentajes está basado en instrucciones TIC, teniendo en cuenta varios tiempos de ejecución de instrucciones. El cálculo no incluye el tiempo empleado en funciones y bloques de función "C".

El valor dado para una función o bloque de función es la suma de todos los " tiempos de llamada " desde programas de aplicación en el mismo ciclo.

El tiempo de cálculo se basa en código TIC y no proporciona información fiable si el código de la aplicación actual está generado en lenguaje "C" y construido usando un compilador de "C".


Ficheros de comandos de simulación

El simulador de ISaGRAF incluye una herramienta para construir y ejecutar Ficheros de comandos de simulación. Un fichero de comandos de simulación está descrito con un lenguaje, parecido al ST, y se usa para automatizar pruebas con el simulador de ISaGRAF.

Edición de ficheros de comandos de simulación

Ejecución de ficheros de comandos de simulación

Lenguaje de descripción de ficheros de comandos de simulación

El fichero de comandos de simulación se ejecuta mediante el comando "Herramientas / Ficheros de comandos de simulación" de la ventana del Simulador. A continuación está el marco del editor de ficheros de comandos de simulación:

La ventana superior es un editor de texto donde se introducen las instrucciones del fichero de comandos de simulación. Se usa como otras herramientas de edición de texto de ISaGRAF e incluye características de alto nivel como selección con el ratón de un símbolo de variable. Se pueden utilizar los comandos del menú "Opciones" para configurar la anchura de la tabulación y seleccionar la fuente de caracteres.

La ventana inferior muestra todos los mensajes de salida cuando se ejecuta el simulador. La línea de separación entre ventanas puede moverse libremente para cambiar el tamaño de las ventanas. La ventana de salida se puede ocultar durante la edición del fichero de comandos de simulación, pero se abre automáticamente cada vez que se ejecuta el fichero de comandos de simulación.


Edición de ficheros de comandos de simulación

Utilizar los comandos del menú "Fichero" para gestionar los ficheros de comandos de simulación:

Nuevo	crea un nuevo fichero de comandos de simulación sin título

Abrir	carga un fichero de comandos de simulación existente desde un archivo

Guardar	Guarda el texto del fichero de comandos de simulación y el contenido de la ventana de salida a un disco, en el directorio de proyecto

Guardar como	Guarda el fichero de comandos de simulación con otro nombre

Se crean dos ficheros en directorio de proyecto de ISaGRAF para cada fichero de comando de simulación:

< nombre_guion >.SCC	texto del fichero de comando de simulación (instrucciones)

< nombre_guion >.SCO	contenido de la ventana de salida

donde <nombre_guion> es el nombre del fichero de comandos de simulación. Ambos ficheros son ficheros standard de texto, y se pueden abrir utilizando cualquier otro editor de texto.

 Cuando se edita un fichero de comandos de simulación se puede utilizar el comando "Edición / Insertar símbolo" para seleccionar un nombre de una variable declarada que se inserte en la posición actual.


Ejecución de ficheros de comandos de simulación

El fichero de comandos de simulación se debe verificar y compilar entes de ejecutarse. Si es necesario la verificación de la sintaxis se ejecuta automáticamente con un comando de "Ejecución". Utilizar los siguientes comandos del menú "Fichero de comandos":

 Verificar	verifica la sintaxis y compila el fichero de comandos de simulación

 Ejecutar fichero de comandos	Inicia la ejecución del fichero de comandos de simulación actualmente editado

En el caso de un nuevo fichero de comandos de simulación sin título, se debe salvar (y se debe introducir un nombre para ello) antes de verificarlo. En el caso de un fichero de comandos de simulación con nombre, el fichero de comandos de simulación se guarda automáticamente en el disco antes de comprobar la sintaxis.

Cuando el fichero de comandos de simulación se ejecuta los contenidos no pueden cambiarse. Se muestra un mensaje cuando se alcanza el final del fichero de comandos de simulación. También se puede abortar su ejecución usando el siguiente comando del menú "Fichero de comandos":

 Abortar fichero de comandos	termina el fichero de comandos que se está ejecutando

La ejecución del fichero de comandos de simulación se ejecuta entre ciclos de sistema. En el caso de que se programe un bucle infinito en el ciclo, el simulador de ISaGRAF se asegura de que esté siempre se rompa, de modo que los ciclos de ISaGRAF se puedan seguir ejecutando, y no se bloqueen otras aplicaciones. El intérprete de ficheros de comandos de simulación de ISaGRAF decide romper la ejecución de un fichero de comandos de simulación si encuentra la misma etiqueta más de una vez en el mismo ciclo. La ejecución del fichero de comandos de simulación se puede también interrumpir normalmente con las instrucciones "Cycle" o "Wait".


Lenguaje de descripción de ficheros de comandos de simulación

EL lenguaje de descripción de ficheros de comandos de simulación es un lenguaje de texto muy simple similar al ST, pero donde cada instrucción se introduce en una línea de texto separada, y no necesita terminarse con un punto y coma. Utilizar el siguiente botón de la barra de herramientas para colocar la lista de instrucciones disponible e insertar una palabra clave en la posición actual:

insertar instrucción (palabra clave y ayuda como comentarios)

Hay varios tipos de instrucciones. Primero está la asignación (forzada) de una variable:

:=	asignación

Otras instrucciones permiten la salida de mensajes por la ventana de salida:

Print	saca una cadena de texto o el valor de una variable

PrintTime	saca la hora actual

Otras instrucciones se utilizan para sincronizar ficheros de comandos de simulación con el ciclo de  ISaGRAF:

Cycle	deja al simulador de ISaGRAF ejecutar un ciclo

Wait	espera durante el tiempo especificado

Se utilizan otras instrucciones para controlar el flujo de instrucciones en un fichero de comandos de simulación

Labels	se puede colocar en cualquier lugar en un fichero de comandos de simulación

Goto	salto incondicional a una etiqueta

If goto	salto condicional a una etiqueta

End	termina el fichero de comandos de simulación

El lenguaje de ficheros de comandos de simulación no es sensible a Mayúsculas/minúsculas. Se pueden insertar comentarios al final de una línea de texto. Los comentarios se pueden escribir según las reglas de ST (entre caracteres "(*" y "*)"), o a continuación de un carácter punto y coma ";".


":=" Asignación

Significado:	Fuerza el valor de una variable de ISaGRAF. Puede ser una variable interna, un canal de entrada, o un canal de salida.

Sintaxis:	<nombrevar> := <expresion_constante>

< nombrevar> = < expresion_constante >

Argumentos:	<nombrevar> es un símbolo valido de una variable de aplicación declarada, o una representación directa de una variable E/S usando convenios de escritura.

<expresion_constante > es una expresión constante valida que refleja el tipo especificado de variable. Para variables booleanas se puede utilizar "0" y "1" en lugar de "FALSE" y "TRUE". Para temporizadores, el prefijo "t#" o "TIME#" se puede omitir.

Notas:	La variable de entrada forzada por un fichero de simulación no necesita ser bloqueada. El dibujo del correspondiente canal de entradas se actualiza cuando se fuerza la variable de entrada con un fichero de comandos de simulación.

Advertencia: no forzar una variable analógica de entrada o salida relacionada con una conversión, la ejecución del fichero de comandos de simulación no soporta la funciones o tablas de conversión.

Ejemplo:	MiVarBoo := 1         (* igual que TRUE *)

MiVarEnt := 1234

MiVarReal := 1.2345

MiVarMsg := 'Hola'

MiVarTmr := t#12s


Print

Significado:	Escribe una cadena o el valor de una variable en una ventana de salida. El texto se saca como una nueva línea al final de las ya escritas en la ventana de salida.

Sintaxis:	Print '<texto>'

Print <nombrevar>

Argumentos:	<texto> es cualquier cadena de texto expresada entre comillas simples

<nombrevar> es un símbolo válido de una variable de aplicación declarada, o una representación directa de una variable de E/S usando convenios de escritura "%".

Notas:	La salida de la variable se formatea siempre según convenciones IEC.

Ejemplo:	Print 'Hola'

Print MiVarBoo

Salida:	Hola

MiVarBoo = TRUE


PrintTime

Significado:	Escribe la hora actual en la ventana de salida. El texto se saca como una nueva línea al final del texto ya escrito en la variable de salida.

Sintaxis:	PrintTime

Notas:	La hora se formatea tal como esté configurada por el sistema Windows

Ejemplo:	Print 'La hora actual es:'

PrintTime

Salida:	La hora actual es:

15:45:22


Cycle

Significado:	Suspende la ejecución del fichero de simulación hasta que se realice el siguiente ciclo de ISaGRAF.

Sintaxis:	Cycle

Notas:	Las instrucciones del fichero de comandos de simulación se ejecutan al principio del ciclo de ISaGRAF. Si el simulador está en el modo "Ciclo a Ciclo" a la instrucción "Cycle" sigue inmediatamente un ciclo. Las siguientes instrucciones del fichero de comandos se realizarán en el siguiente comando "Ejecutar un ciclo" desde el depurador.

Ejemplo:	(* El programa ISaGRAF copia A a B *)

A := 0

Cycle

Print B

A := 1

Print B (* no se realiza ciclo / B no se pone a 1 *)

Cycle

Print B

Salida:	B = 0

B = 0

B = 1


Wait

Significado:	Suspende la ejecución del fichero de comandos de simulación hasta que se pasa el retraso

Sintaxis:	Wait <retraso>

Argumentos:	<retraso> retraso expresado según convenciones IEC para expresiones de tiempo constante. El prefijo "t#" o "TIME#" puede omitirse. EL valor del retraso debe estar entre 10 milisegundos y 1 hora.

Notas:	La instrucción "Wait" no es precisa y depende del sistema Windows residente. También el retraso debe ser considerado con una precisión de más o menos un ciclo de ISaGRAF.

Cuando se alcanza una instrucción "Wait" los ciclos de ISaGRAF se realizan hasta que se pasa el retraso antes de seguir la ejecución del fichero de comandos de simulación.

Ejemplo:	PrintTime

Wait 2s

PrintTime

Salida:	15:45:27

15:45:29


Labels

Significado:	Se pueden colocar etiquetas en cualquier lugar del diagrama. Se usan como un destino para instrucciones "Goto" y permite el control de flujo para las instrucciones del fichero de comandos de simulación.

Sintaxis:	<nombrelabel>:

Argumentos:	<nombrelabel> nombre único según las convenciones de nombre de ISaGRAF, limitado a 16 caracteres, empezando con una letra, seguida por letras, dígitos o caracteres de subrayado '_' (underscore). Cuando se definen, nombres de etiquetas deben estar seguidos por un carácter ":".

Notas:	No se debe colocar una instrucción en el lugar en el que esté definida una etiqueta.

El nombre de la variable no debe ser el mismo que el de un símbolo de variable declarado por ISaGRAF

Ejemplo:	(* Ejemplo de fichero de comandos de simulación con un bucle infinito *)

bucle:

PrintTime

Wait 1s

Goto bucle


Goto

Significado:	Salto incondicional a una etiqueta

Sintaxis:	Goto <nombrelabel>

Argumentos:	<nombrelabel> es el nombre de una etiqueta definida en el fichero de comandos de simulación.

Notas:	Los saltos hacia atrás se permiten en el caso de un bucle infinito, la ejecución del fichero de comandos de simulación se rompe automáticamente en cada bucle para preservar los ciclos de ejecución de ISaGRAF.

Ejemplo:	Print 'Antes del salto

Goto MiLabel

Print 'Dentro del salto' (* instrucción que nunca se hace *)

MiLabel:

Print 'Después del salto'

Salida:	Antes del salto

Después del salto


If Goto

Significado:	Salto condicional a una etiqueta. La condición es o bien una comparación entre dos variables de ISaGRAF variables, o una comparación entre una variable y una expresión constante.

Sintaxis:	If <var1> test <var2> Goto <nombrelabel>

If <var1> test <expresión costante> Goto <nombrelabel>

Los tests de comparación disponibles son:

=	true si ambas expresiones tienen el mismo valor

<>	true si las expresiones son diferentes

<	true si la primera expresión es menor que la segunda

<=	true si la primera expresión es menor o igual que la segunda

>	true si la primera expresión es mayor que la segunda

>=	true si la primera expresión es mayor o igual que la segunda

Argumentos:	<var1> <var2> son símbolos validos de variables declaradas en la aplicación, o variables de E/S representadas usando los convenios de escritura "%".

<expresión constante> es una expresión constante válida que es del tipo de variable especificada. En el caso de variables booleanas, se puede usar "0" y "1" en lugar de "FALSE" y "TRUE". Para los temporizadores, el prefijo "T#" o "TIME#" se puede omitir.

<nombrelabel> es el nombre de la variable definida en el fichero de comandos de simulación.

Notas:	Los saltos hacia atrás están permitidos. En el caso de un bucle infinito, la ejecución de ficheros de comandos de simulación se interrumpe automáticamente en cada bucle para preservar el orden de ejecución de los ciclos de ISaGRAF.

Ejemplo:	(* Este fichero de comandos da vueltas hasta que MiVar se hace TRUE *)

Bucle:

If MiVar = TRUE Goto TheEnd

Print MiVar

Goto Bucle

TheEnd:


End

Significado:	Termina el fichero de comandos de simulación

Sintaxis:	End

Notas:	No es obligatorio colocar una instrucción  "End" en la última línea del fichero de comandos

Ejemplo:	(* Este fichero de comandos de simulación da vueltas hasta que MiVar se hace TRUE *)

Bucle:

If MiVar = FALSE Goto Sigue

End

Sigue:

Print MyVar

Goto Loop


Salvar y recuperar estados de entrada

Utilizando el simulador de ISaGRAF, los canales de entrada se fuerzan durante las operaciones manuales, actuando en las salidas de señalización y los controles de edición del panel de simulación panel. Siempre se pueden utilizar los siguientes comandos del menú "Herramientas" para guardar y recuperar el estado de todas las variables de entrada:

Cargar esquema de entrada	Configura los valores de los canales de entrada con los valores almacenados en un 	fichero que has ido creado en el disco mediante el comando "Salvar esquema de entrada".

Guardar esquema de entrada	Salva  el estado de los canales de entrada en un fichero, de modo que pueda recuperarse posteriormente utilizando el comando "Guardar esquema de entrada ". El fichero se almacena en disco en el directorio del proyecto, y por tanto se guarda con otros ficheros de proyecto por la utilidad de archivos de ISaGRAF.

Nota: Sólo los canales de entrada nombrados (los que tienen una variable conectada) se guardan en disco.