Técnicas de programación avanzadas

Este apartado contiene más información sobre el banco de trabajo ISaGRAF y el sistema objeto. Se recomienda al usuario que esté familiarizado con las herramientas y métodos ISaGRAF antes de leer esta sección.

Más sobre las herramientas ISaGRAF

E/S bloqueadas y E/S virtuales

Validación de enlaces PC-PLC

Directorios ISaGRAF

Símbolos de aplicación

Límites del banco de trabajo "GRANDE" (WDL) de ISaGRAF


Más sobre las herramientas ISaGRAF

Al utilizar las herramientas de edición de ISaGRAF, el usuario puede pulsar el botón derecho del ratón para abrir un menú pop-up, que contiene los comandos principales de edición. El menú se abre en la posición actual del cursor. Esta función es muy útil para reducir el número de operaciones del ratón durante las tareas de cortar y pegar.

Las herramientas ISaGRAF soportan la ejecución múltiple. Aunque no se puede abrir la misma herramienta dos veces para editar el mismo documento, sí se pueden abrir ventanas diferentes con la misma herramienta para editar objetos diferentes como operaciones en paralelo.

Se dispone de otros comandos para encontrar información sobre los botones gráficos de las barras de herramientas. Hacer doble click en una zona vacía de una barra de herramientas para ver el contenido de la barra en forma de menú pop-up. Si se deja el cursor del ratón apoyado sobre un botón gráfico, aparece el texto del comando correspondiente.


E/S bloqueadas y E/S virtuales

Si se define una tarjeta de E/S como virtual, se deshabilita el procesamiento de los canales físicos de E/S. Cuando se define una tarjeta como virtual, no cambian las operaciones del kernel ISaGRAF. La única diferencia está en que no se leen los sensores de entradas y no se actualizan los dispositivos de salida. En este modo de funcionamiento, se puede utilizar el depurador ISaGRAF para modificar los valores de entrada. El atributo Virtual es aplicable a una tarjeta completa. Se programa durante la definición de la tarjeta de E/S, antes de la generación del código de aplicación. El atributo virtual es una característica estática, y se almacena al pararse y reiniciarse la aplicación.

Otra posibilidad es el bloqueo de variables de E/S. Consiste en desconectar un dispositivo físico y la correspondiente variable de E/S de ISaGRAF. El bloqueo y desbloqueo de variables se realiza a través del depurador. El bloqueo de variables es una operación dinámica y no queda memorizada cuando se reinicia la aplicación. Una operación de bloqueo sólo es aplicable a una variable (un canal de E/S) a la vez.

A continuación se resumen las características principales de control de E/S:

	Atributo virtual	Comando bloqueo
herramienta de selección	conexión de la tarjeta de E/S	depurador
definición	estático	dinámico
modo de selección	tarjeta	variable
aplicación	validación y pruebas	mantenimiento

El siguiente diagrama ilustra el flujo de datos de E/S entre las diversas tareas ISaGRAF:

Cuando una variable de entrada está bloqueada, no se cambian los diversos accesos a la base de datos pero se desconecta el dispositivo de entrada. Los valores de entrada pueden establecerse con el depurador y procesarse por el kernel de ISaGRAF:

Cuando una variable de salida está bloqueada, se desconectan el kernel de tiempo de proceso y el controlador de salidas. En este caso, se sigue permitiendo el acceso al dispositivo de salida con el depurador ISaGRAF, por medio del controlador de salidas:

Cuando se establece el atributo virtual de una entrada, se desconectan la base de datos de entradas y los dispositivos de entrada asociados. Un controlador virtual de E/S sustituye al auténtico.

La configuración del atributo virtual sigue las mismas directrices para una tarjeta de entradas o una tarjeta de salidas. En el caso de las tarjetas de salidas, el kernel de ISaGRAF actualiza la base de datos de salidas. Sin embargo, esta base de datos y los dispositivos de salida asociados están desconectados. Un controlador virtual de E/S sustituye al auténtico.

Para resumir todas las posibilidades:


Validación de enlaces PC-PLC

La mayoría de los problemas relacionados con la mala comunicación entre el banco de trabajo ISaGRAF y el PLC objeto se representan en la ventana del depurador por el mensaje de estado "desconectado". Antes de implementar una prueba de diagnóstico, se debe validar la comunicación cuando no haya aplicaciones activas en el PLC objeto. De esta manera, se puede validar únicamente el enlace de comunicación serie, aislándolo de los efectos relacionados con la ejecución.

El lenguaje "C", que se utiliza para la descripción de las funciones de conversión y las funciones "C", permite el acceso directo al sistema objeto. Un error de programación en un componente de software de este tipo podría generar errores de sistema o un comportamiento incorrecto del sistema ISaGRAF. Pueden surgir errores de esta naturaleza cuando se desarrollan los controladores de E/S con la opción de herramienta de desarrollo de E/S de ISaGRAF. Se podrían producir errores de sistema, por ejemplo, si se conectara una tarjeta de E/S a una dirección de bus no válida. La siguiente tabla aporta un resumen sintetizado de los diagnósticos de error:

estado	contexto	diagnóstico
"desconectado" (antes de la carga remota)		- el objeto no está operativo - no hay cable / cable no válido - parámetros de enlace no válidos - objeto ISaGRAF mal instalado
"desconectado" (después de la carga remota)	inicio de modo ciclo a ciclo	- configuración de E/S no válida - caída del sistema
	inicio de modo tiempo real	- configuración de E/S no válida - caída del sistema (debida a la programación en C)
"sin aplicación"		- no se ha cargado la aplicación - no se ha iniciado la aplicación (debido a la programación en "C") - diferencia Intel/Motorola  - versión de objeto no válida


Directorios ISaGRAF

El banco de trabajo ISaGRAF funciona sobre una estructura dedicada de directorios de disco. El usuario especifica el directorio raíz de esta arquitectura durante la instalación de ISaGRAF. EL nombre por defecto del directorio raíz de ISaGRAF es ISAWIN. El programa de instalación crea la siguiente arquitectura estándar de disco:

Los subdirectorios estándares de ISaGRAF son:

DIRECTORIO	CONTENIDO
APL	Directorio raíz para los proyectos ISaGRAF  cada proyecto corresponde a un subdirectorio  que contiene todos los datos del proyecto.
	pueden existir otros directorios para otros grupos de proyecto. El programa de instalación de ISaGRAF crea un subdirectorio "SMP" donde se almacenan ejemplos de aplicación.
COM	datos de rango "común". Los datos pueden ser utilizados por cualquier proyecto.
EXE	programas y ficheros de ayuda ISaGRAF.
LIB	librerías ISaGRAF: - listas de elementos - parámetros o interfase para cada elemento - notas técnicas
LIB\IOC	código fuente para configuraciones de E/S.
LIB\FNC	código fuente de funciones escritas en lenguajes IEC.
LIB\FBL	código fuente de bloques de función escritos en lenguajes IEC
LIB\SRC	código fuente para conversiones y funciones "C"
LIB\DEFS	cabecera de código para conversiones y funciones "C"
LIB\RELS	código objeto para conversiones y funciones "C"
LIB\DEV	ficheros de comandos para desarrollar librerías "C" makefile, enlazar listas, etc. ...
TMP	ficheros temporales: los subdirectorios de TMP están reservados para el Generador de Código de ISaGRAF y no se pueden borrar

Los subdirectorios pueden moverse a otras ubicaciones dentro del disco. Cuando el usuario tiene una arquitectura no estándar, deben declararse las rutas de acceso de los subdirectorios en la sección WS001, del fichero de inicialización ISA.ini, en el subdirectorio EXE de ISaGRAF. Las entradas de la sección WS001 son:

Isa	directorio raíz para arquitectura ISaGRAF
IsaExe	directorio raíz para programas y ficheros de ayuda ISaGRAF
IsaApl	directorio raíz para proyectos ISaGRAF
IsaTmp	directorio para ficheros temporales
IsaSrc	directorio para código fuente de librerías
IsaDefs	directorio para cabeceras fuente de librerías

Observe que: Si se desplaza la entrada IsaTmp a otro directorio, se tienen que crear los subdirectorios OBJS, RELS y DATA en el directorio nuevo. El siguiente ejemplo utiliza las entradas de la sección WS001 para redefinir la arquitectura estándar de disco ISaGRAF:

;file c:\ISAWIN\EXE\ISA.ini

[WS001]

Isa=c:\isawin

IsaExe=c:\isawin\exe

IsaApl=c:\isawin\apl

IsaTmp=c:\isawin\tmp

IsaSrc=c:\isawin\lib\src

IsaDefs=c:\isawin\lib\defs

Para añadir funciones o bloques de función "C" al objeto ISaGRAF, utilizar el directorio \ISAWIN\LIB\DEV para almacenar los ficheros de desarrollo: ficheros de comandos, makefiles, mapas, etc. Se utiliza el directorio \ISAWIN\LIB\RELS para almacenar los ficheros objeto que se generan durante la compilación "C" y las librerías "C" de ISaGRAF que se necesitan para las operaciones de LINK.


Símbolos de aplicación

Cada objeto de una aplicación ISaGRAF está referenciado por un nombre (que se introduce durante la declaración de variables) y una dirección virtual interna que calcula el generador de código. La dirección virtual de una variable no es su dirección de red, introducida durante la declaración de la variable. Se utilizan las direcciones variables para las tareas de comunicación y para aplicaciones especiales en "C", utilizando la opción de herramienta de desarrollo de E/S. Cuando se ejecuta el generador de código de ISaGRAF, éste crea un fichero ASCII con las correspondencias lógicas entre los nombres y las direcciones virtuales de todos los objetos (variables, programas, pasos, etc.) del proyecto. Se puede interrogar este fichero fácilmente desde cualquier aplicación del usuario para obtener información sobre la base de datos estática de ISaGRAF. El fichero se llama "APPLI.TST" y se encuentra en el directorio del proyecto ISaGRAF: "\ISAWIN\APL\proname" ('proname' es el nombre del proyecto). Esta sección describe en detalle el formato del fichero "APPLI.TST". Se utilizan las notaciones principales que aparecen a continuación para las siguientes descripciones:

VA	dirección virtual

ATTR	atributo de una variable

USP	función "C"

Los atributos de una variable pueden tener los siguientes valores. Estos valores aparecen en los campos de "atributos":

+X	variable interna

+C	variable interna 'sólo lectura'

+I	variable de entrada

+O	variable de salida

Todos los números, con la excepción de las direcciones virtuales, están expresados como valores decimales enteros. Las direcciones virtuales (VA) están expresadas como números hexadecimales de 4 dígitos y están precedidas por el carácter "!". Por ejemplo:

123	este es un número decimal

!A003	esta es una dirección virtual hexadecimal

Se muestra a continuación la estructura principal del fichero "APPLI.TST". El fichero está estructurado como una lista de bloques. Un bloque es una lista de registros. Cada registro está descrito en una línea de texto. Cada bloque empieza con una cabecera, que se coloca en una línea de texto.

bloque inicial

bloques de descripción

bloque final

La sintaxis general de un bloque es la siguiente:

@ <nombre_bloque> <argumentos>

#registro...

#registro...

...

La estructura del primer bloque - el que contiene la información principal sobre la aplicación - es la siguiente:

@ISA_SYMBOLS,<crc_apli>

#NAME,<nombre_apli>,<versión>

#DATE,<fecha_creación>

#SIZE,G=<nbprg>,S=<nbpaso>,T=<nbtra>,L=0,P=<nbpro>,V=<nbvar>

#COMMENT,cj international

crc_apli	valor de comprobación de los símbolos de la aplicación

nombre_apli	nombre de la aplicación

versión	número de versión del banco de trabajo ISaGRAF

fecha_creación	fecha de generación de la aplicación

nbprg	número de programas

nbpaso	número de pasos SFC

nbtra	número de transiciones SFC

nbpro	número de funciones "C" utilizadas

nbvar	número total de variables

El último bloque - el que señala el final del fichero - tiene la siguiente estructura:

@END_SYMBOLS

El bloque que se utiliza para describir los programas de la aplicación tiene la siguiente estructura:

@PROGRAMS,<nbprg>

#<va>,<nombre>

#...

nbprg	número de programas definidos en este bloque

va	dirección virtual del programa

nombre	nombre del programa

El bloque que se utiliza para describir los pasos SFC de la aplicación tiene la siguiente estructura. (Obsérvese que se define un paso virtual para cada programa no SFC):

@STEPS,<nbpasos>

#<va>,<nombre>,<padre>

#...

nbpasos	número de pasos definidos en este bloque

va	dirección virtual del paso

nombre	nombre del paso

padre	dirección virtual del padre

El bloque que se utiliza para describir las transiciones SFC de la aplicación tiene la siguiente estructura:

@TRANSITIONS,<nbtrans>

#<va>,<nombre>,<padre>

#...

nbtrans	número de transiciones definidas en este bloque

va	dirección virtual de la transición

nombre	nombre de la transición

padrea	dirección virtual del padre

El bloque que se utiliza para describir las variables booleanas de la aplicación tiene la siguiente estructura:

@BOOLEANS,<nb_boo>

#<va>,<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>

#...

y si el número de variables supera las 4095

X# (1.<numvar>),<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>

nb_boo	número de variables en este bloque

va	dirección virtual de la variable

numvar	rango de la dirección (dentro de los tipos de datos booleanos)

nombre	nombre de la variable

atrib	atributo de la variable

programa	dirección virtual del programa padre

o "!0000" para una variable global

eq_falso	cadena utilizada para el valor Falso

eq_verdadero	cadena utilizada para el valor Verdadero

El bloque que se utiliza para describir las variables analógicas de la aplicación tiene la siguiente estructura:

@ANALOGS,<nb_ana>

#<va>,<nombre>,<atrib>,<programa>,<formato>,<unidad>

#...

y si el número de variables supera las 4095

X# (2.<numvar>),<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>

nb_ana	número de variables en este bloque

va	dirección virtual de la variable

numvar	rango de la dirección (dentro de los tipos de datos enteros/reales)

nombre	nombre de la variable

atrib	atributo de la variable

programa	dirección virtual del programa padre

o "!0000" para una variable global

formato	= "I" para una variable entera

= "F" para una variable real

unidad	cadena de unidad

El bloque que se utiliza para describir las variables de temporizador de la aplicación tiene la siguiente estructura:

@TIMERS,<nb_tmr>

#<va>,<nombre>,<atrib>,<programa>

#...

y si el número de variables supera las 4095

X# (3.<numvar>),<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>

nb_tmr	número de variables en este bloque

va	dirección virtual de la variable

numvar	rango de la dirección (dentro de los tipos de datos temporizadores)

nombre	nombre de la variable

atrib	atributo de la variable (siempre +X: interno)

programa	dirección virtual del programa padre

o "!0000" para una variable global

El bloque que se utiliza para describir las variables de mensaje de la aplicación tiene la siguiente estructura:

@MESSAGES,<nb_msg>

#<va>,<nombre>,<atrib>,<programa>,<max_lon>

#...

y si el número de variables supera las 4095

X# (4.<numvar>),<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>

nb_msg	número de variables en este bloque

va	dirección virtual de la variable

numvar	rango de la dirección (dentro de los tipos de datos mensajes)

nombre	nombre de la variable

atrib	atributo de la variable

programa	dirección virtual del programa padre

o "!0000" para una variable global

max_lon	longitud máxima (capacidad declarada)

El bloque que se utiliza para describir las funciones "C" utilizadas en la aplicación tiene la siguiente estructura:

@USP,<nb_usp>

#<va>,<nombre>

#...

nb_usp	número de funciones "C" en este bloque

va	dirección virtual de la función "C"

nombre	nombre de la función "C"

El bloque que se utiliza para describir las instancias de bloques de función "C" utilizadas en la aplicación tiene la siguiente estructura:

@FBINSTANCES,<nb_fb>

#<va>,<nombre_inst>,<nombre_fb>

#...

nb_fb	número de instancias de bloques de función "C" en este bloque

va	dirección virtual de la instancia de bloque de función "C"

nombre_inst	nombre de la instancia de bloque de función "C"

nombre_fb	nombre del bloque de función "C" de referencia


Límites del banco de trabajo "GRANDE" (WDL) de ISaGRAF

Existen algunas limitaciones para los objetos que se utilizan en el banco de trabajo ISaGRAF. Sin duda existirán muchos otros límites prácticos imputables a la configuración del ordenador que se utilice (disponibilidad de memoria y espacio de disco) y las capacidades del sistema objeto (disponibilidad de memoria y recursos de hardware y software, etc.). No se pueden superar los siguientes límites absolutos:

  Para un proyecto:

Objeto	Máximo	Observaciones
Programas	255	sumando programas principales, subprogramas y programas hijo
Niveles en la jerarquía	20

El número de proyectos instalados en el banco de trabajo sólo está limitado por el espacio disponible en el disco duro.

 Para nombres:

Nombre de:	Máximo	Observaciones
Proyecto	8 car
Programa	8 car
Variable	16 car	+ 60 caracteres para comentarios
Etiqueta palabra definida	16 car
Equivalencia definida	255 car	+ 60 caracteres para comentarios
Tabla de conversión	16 car
Lista de variables	16 car
Función / bloque de función (librería)	8 car	aplicable a funciones "C", bloques de función "C" o funciones escritas en lenguajes IEC
Parámetro de función (librería)	16 car	aplicable a funciones "C", bloques de función "C" o funciones escritas en lenguajes IEC
Tarjeta de E/S	8 car
Configuración de E/S	8 car
Parámetro OEM de tarjeta	16 car
Función de conversión	8 car

 Edición (para un programa):

Objeto	Máximo	Observaciones
Filas SFC	600
Columnas SFC	20
Pasos SFC	4095	para el proyecto completo, sumando pasos iniciales, pasos inicial y final
Transiciones SFC	4095	para toda la aplicación
Edición LD/FBD	200 col. 2000 filas	este es el tamaño del área de edición, expresado en unidades de celda.
Edición Quick LD	sin límite	los límites están impuestos por la capacidad del PC
Etiquetas IL	251	en el mismo programa IL
Edición de texto	40KBytes

 Para el diccionario (para un proyecto):

Objeto	Máximo	Observaciones
Variables booleanas	65535
Variables analógicas	65535	sumando variables reales y enteras
Temporizadores	65535
Variables de mensaje	65535
Palabras definidas	4095	en la misma lista (mismo rango)
Palabras definidas	255	utilizadas en el mismo programa
Tablas de conversión	127	utilizadas en la aplicación
Puntos de una tabla	32	definidos en la misma tabla de conversión

Los límites indicados para el número máximo de variables booleanas, analógicas o de mensaje abarcan a las variables internas, de entrada y de salida. También incluye todas las variables temporalmente ocultas o variables alocadas por los compiladores. El número de variables  editadas conjuntamente (del mismo tipo, misma pantalla), en el editor del diccionario no pueden superar las 16000. Dependiendo de la configuración del PC, el límite puede ser menor que 16000. La aplicación no puede correr en un sistema objeto versión 1.21 o inferior si el número total de variables de un tipo supera las 4095. El enlace standard "Modbus" usando direcciones de red no puede ser utilizado si el número de variables de un tipo supera las 4095.

 Conexiones de E/S:

Objeto	Máximo	Observaciones
Tarjetas de E/S	256	definidas para la misma aplicación (tarjetas o equipos complejos)
Canales de E/S	128	en la misma tarjeta

El número de tarjetas de E/S sumando tarjetas individuales y equipos complejos no puede superar las 256.

 Para librerías:

Objeto	Máximo	Observaciones
Funciones (lenguaje IEC)	255	instaladas juntas en la librería
Bloques de función (lenguaje IEC)	255	instaladas juntas en la librería
Funciones "C"	255	instaladas juntas en la librería
Bloques de función "C"	255	instaladas juntas en la librería
Instancias de bloques de función	4095	para el mismo tipo de bloque de función en la misma aplicación
Parámetros de entrada de funciones	31	aplicable a funciones C y funciones escritas en lenguajes IEC
Parámetros de bloques de función	32	libremente distribuidos entre parámetros de entrada y salida. Se requiere al menos 1 parámetro de salida.
Función de conversión	128	instaladas juntas en la librería
Configuraciones de E/S	255	instaladas juntas en la librería
Tarjetas de E/S	255	instaladas juntas en la librería
Equipos complejos de E/S	255	instaladas juntas en la librería
Parámetros OEM de tarjetas	16