Documente Academic
Documente Profesional
Documente Cultură
Versin 3.5
MANUAL
DE USUARIO
ICS Triplex ISaGRAF Inc.
La informacin contenida en este documento est sujeta a cambios sin previo aviso y no
representa compromiso alguno por parte de ICS Triplex ISaGRAF Inc. El software y/o base de
datos descritos en este documento se proporcionan bajo un convenio de licencia o convenio
de no divulgacin y pueden utilizarse o copiarse nicamente en conformidad con los trminos
del mencionado convenio. Es ilegal copiar el software salvo en los casos contemplados
especficamente en el convenio de licencia o de no divulgacin. No est permitida la
reproduccin total o parcial de este manual de ninguna forma ni por ningn mtodo, ya sea
electrnico, mecnico, por fotocopia o por registro, para propsito alguno sin el
consentimiento expreso y por escrito de ICS Triplex ISaGRAF Inc.
1994-2006 ICS Triplex ISaGRAF Inc. Todos los derechos reservados.
Impreso en Canad por ICS Triplex ISaGRAF Inc.
ISaGRAF es una marca registrada de ICS Triplex ISaGRAF Inc.
MS-DOS es una marca registrada de Microsoft Corporation.
Windows es una marca registrada de Microsoft Corporation.
Windows NT es una marca registrada de Microsoft Corporation.
OS-9 and ULTRA-C son marcas registradas de Microware Corporation.
VxWorks and Tornado son marcas registradas de Wind River Systems, Inc.
Los restantes nombres de marca o de producto que aparecen en este documento son marcas
de fbrica o marcas registradas de sus respectivos propietarios.
ndice general
Nota: Se facilita un ndice detallado al principio de cada seccin.
Al trmino del documento, aparece un ndice de bsqueda por trminos.
A.
12
A.1
Primeros pasos
A.1.1
Instalacin de ISaGRAF
A.1.2
Acuerdo de licencia
A.1.3
Como usar la informacin en lnea
A.1.4
Aplicacin de muestra
13
13
16
20
20
A.2
Gestin de proyectos
A.2.1
Cmo crear y trabajar con proyectos
A.2.2
Trabajar con varios grupos de proyectos
A.2.3
Opciones
A.2.4
Herramientas
26
26
28
29
29
A.3
Gestin de programas
A.3.1
Componentes de un proyecto
A.3.2
Trabajando con programas
A.3.3
Ejecucin de las herramientas de generacin de cdigo
A.3.4
Otras herramientas ISaGRAF
A.3.5
Aadir comandos al men de Herramientas
A.3.6
Simulacin y depuracin de la aplicacin
31
31
33
36
38
38
39
A.4
Utilizacin del editor SFC
A.4.1
Aspectos principales del lenguaje SFC
A.4.2
Introduccin de una tabla SFC
A.4.3
Trabajar con diagramas SFC existentes
A.4.4
Introduccin de la programacin de Nivel 2
A.4.5
Utilizacin de la galera SFC
42
42
45
46
48
52
A.5
Utilizacin del editor Diagrama de Flujo
A.5.1
Aspectos bsicos del lenguaje FC
A.5.2
Introduccin de un Diagrama de flujo
A.5.3
Introduccin de un Diagrama de flujo
53
53
54
57
A.5.4
A.5.5
A.5.6
58
59
60
A.6
Utilizacin del editor Quick LD
A.6.1
Aspectos bsicos del lenguaje LD
A.6.2
Introduccin de un diagrama LD
A.6.3
Trabajar con un diagrama LD ya existente
A.6.4
Opciones de visualizacin
A.6.5
Ayuda en lnea
61
61
63
66
67
69
A.7
Utilizacin del editor FBD/LD
A.7.1
Aspectos bsicos de los lenguajes FBD/LD
A.7.2
Introduccin de un diagrama FBD
A.7.3
Trabajar con un diagrama ya existente
A.7.4
Opciones de visualizacin
A.7.5
Estilos y rasteo de modificaciones
A.7.6
Ayuda en lnea
A.7.7
Impresin de un diagrama FBD
70
70
72
74
76
78
79
79
A.8
Utilizacin del editor de textos
A.8.1
Edicin de comandos
A.8.2
Colores de sintaxis
A.8.3
Opciones
80
80
81
81
A.9
Ms sobre los editores de programas
A.9.1
Llamadas a otras herramientas ISaGRAF
A.9.2
Parmetros del programa
A.9.3
Otros comandos del men "Fichero"
A.9.4
Actualizacin del diario del programa
A.9.5
Seleccin de una variable del diccionario
A.9.6
Comandos del men "Herramientas"
82
82
82
84
84
85
86
87
89
90
92
93
94
95
100
101
102
102
103
104
104
106
106
107
107
109
109
110
113
113
113
A.14
115
Referencias cruzadas
117
117
118
120
121
122
124
127
A.16
Espiar variables
129
A.17
Depuracin de programas ST e IL
131
A.18 Spotlight
A.18.1 Construyendo la composicin grfica
A.18.2 Composicin de lista
A.18.3 Definiendo el estilo del tem
132
132
135
135
A.18.4
A.18.5
136
137
138
138
139
139
140
140
140
141
A.20
142
143
143
143
144
145
145
146
147
150
150
153
154
155
157
158
159
160
160
161
161
162
163
163
165
A.25
B.
REFERENCIA DE LENGUAJES
167
170
170
170
172
174
176
180
184
B.1
Arquitectura del proyecto
B.1.1
Programas
B.1.2
Operaciones cclicas y secuenciales
B.1.3
Programas SFC hijo
B.1.4
Funciones y subprogramas
B.1.5
Bloques de funcin
B.1.6
Lenguaje de descripcin
B.1.7
Reglas de ejecucin
185
185
185
186
187
188
189
189
B.2
Objetos comunes
B.2.1
Tipos bsicos
B.2.2
Expresiones constantes
B.2.3
Variables
B.2.4
Comentarios
B.2.5
Palabras definidas
191
191
191
194
197
198
B.3
Lenguaje SFC
B.3.1
Principal formato de diagramas SFC
B.3.2
Componentes bsicos SFC
B.3.3
Divergencias y convergencias
B.3.4
Macropaso
B.3.5
Acciones dentro de los pasos
B.3.6
Condiciones vinculadas a transiciones
B.3.7
Reglas dinmicas SFC
B.3.8
Jerarqua de programas SFC
200
200
200
203
205
206
211
213
214
B.4
Lenguaje FC
B.4.1
Componentes FC
216
216
B.4.2
B.4.3
B.4.4
220
221
222
B.5
Lenguaje FBD
B.5.1
Formato principal del diagrama FBD
223
223
B.6
Lenguaje LD
B.6.1
Carriles de potencia y lneas de conexin
B.6.2
Conexiones mltiples
B.6.3
Contactos y bobinas bsicos del lenguaje LD
B.6.4
Sentencia RETURN
B.6.5
Saltos y etiquetas
B.6.6
Bloques en LD
B.6.7
Bloques "En lnea" en LD
227
227
228
229
236
236
237
238
B.7
Lenguaje ST
B.7.1
Sintaxis principal de ST
B.7.2
Expresiones y parntesis
B.7.3
Invocacin de funciones o bloques de funcin
B.7.4
Operadores booleanos especficos de ST
B.7.5
Sentencias bsicas ST
B.7.6
Extensiones ST
241
241
242
243
245
247
253
B.8
Lenguaje IL
B.8.1
Sintaxis principal IL
B.8.2
Operadores IL
260
260
262
B.9
Operadores, bloques de funcin y funciones estndares
B.9.1
Operadores estndares
B.9.2
Bloques de funcin estndares
B.9.3
Funciones estndares
269
269
290
308
C.
351
C.1
Introduccin
352
C.2
Instalacin
353
C.3
Primeros pasos con el objeto DOS de ISaGRAF
C.3.1
Ejecucin de ISaGRAF: ISA.EXE
C.3.2
Caractersticas especficas
354
354
355
C.4
Primeros pasos con el objeto OS-9 de ISaGRAF
C.4.1
Ejecucin de ISaGRAF en modo simple tarea: isa
C.4.2
Ejecucin de multitareas ISaGRAF: isaker, isatst, isanet
C.4.3
Caractersticas especficas
359
359
360
365
C.5
Primeros pasos con el objeto VxWorks de ISaGRAF
C.5.1
Gestor de recursos del sistema: isassr.o
C.5.2
Caractersticas comunes de isa.o, isakerse.o y isakeret.o
C.5.3
Ejecucin de ISaGRAF en modo simple tarea: isa.o
C.5.4
Ejecucin de multitareas ISaGRAF: isakerse.o y isakeret.o
C.5.5
Caractersticas especficas
370
370
370
371
373
378
C.6
Primeros pasos con el objeto NT de ISaGRAF
C.6.1
Ejecucin de ISaGRAF
C.6.2
Informacin general sobre opciones
C.6.3
Caractersticas especficas
C.6.4
Interfaz del usuario
383
383
383
388
394
C.7
Programacin en "C"
C.7.1
Descripcin general
C.7.2
Funciones de conversin "C"
C.7.3
Funciones "C"
C.7.4
BLOQUES DE FUNCIN "C"
C.7.5
Tcnicas de compilacin y de enlazado
399
399
401
406
413
429
C.8
Enlace Modbus
C.8.1
Red y protocolo MODBUS
C.8.2
Implementacin en ISaGRAF
436
436
437
C.9
Gestin de fallos de tensin
C.9.1
Conceptos bsicos
C.9.2
Salvaguarda de variables de la aplicacin
C.9.3
Copia de seguridad del estado del programa
443
443
444
448
C.10
449
D.
GLOSARIO
460
E.
SMBOLOS
468
10
11
12
A.1.1
Instalacin de ISaGRAF
Este apartado est dedicado a la instalacin del banco de trabajo ISaGRAF y a la
manera de configurar el ordenador para el desarrollo de aplicaciones.
13
14
La llave de seguridad
Una llave hardware protege al programa ISaGRAF contra las copias ilegales. Sin
embargo, la mayora de las funciones del banco de trabajo ISaGRAF siguen
estando disponibles cuando la llave no est colocada. La llave de seguridad
tambin define la opcin del banco de trabajo ISaGRAF y el tamao mximo de las
aplicaciones desarrolladas. Cuando la llave no est colocada o est conectada
incorrectamente, algunas de las funciones del banco de trabajo ISaGRAF no
funcionarn. Esto constituye un comportamiento NORMAL. Para asegurar que la
llave est conectada correctamente, seleccionar Acerca de en el men de
Ayuda de cualquier ventana de ISaGRAF. Se podr visualizar la opcin disponible
del banco de trabajo ISaGRAF.
Se puede conectar la llave a cualquier puerto paralelo del ordenador. Si el equipo
dispone de ms de un puerto paralelo, es preferible que se conecte la llave y la
impresora a puertos diferentes. En algunas configuraciones de PC/impresora, es
posible que no se reconozca la llave cuando su salida est conectada a una
15
A.1.2
Acuerdo de licencia
La versinde ISaGRAF que ha instalado le permite construir aplicaciones de
control. Puede utilizar ISaGRAF durante un periodo de prueba de 30 das antes de
solicitar la licencia. Si no dispone de la licencia, no puede exportar programas IEC a
una biblioteca, exportar variables, descargar cdigo fuente de proyectos de
Workbench a un destino o subir cdigo fuente desde un destino. Para disponer de
la versin del producto con todas sus funciones, es necesaria la licencia.
Al usar bibliotecas de terceros, es necesario habilitar su uso obteniendo una
licencia para las mismas. Se inicia la obtencin de licencia para estas bibliotecas
desde el Administrador de bibliotecas al restaurar el archivo de bibliotecas.
Puede obtener la licencia ISaGRAF utilizando la llave de hardware o la llave de
software . Cuando se usa una llave de hardware, un dongle que se coloca en el
puerto paralelo o en el puerto USB de su ordenador se suministra preprogramado
con el conjunto de caractersticas seleccionadas. Si utiliza una llave de software,
necesita obtener una licencia autorizada. La licencia de los productos se obtiene
por medio del Administrador de licencias.
La llave de hardware se puede conectar a cualquier puerto paralelo del ordenador.
Si el ordenador dispone de ms de un puerto paralelo, es preferible conectar la llave
y la impresora en puertos distintos. Para algunas configuraciones de
ordenadores/impresoras, la llave de hardware no puede ser reconocida cuando su
salida est conectada a una impresora apagada. En este caso, se debe
desconectar la impresora o conectarla, y a continuacin reiniciar ISaGRAF
Workbench.
Nota:
16
Aunque las licencias solo son vlidas en un nico ordenador, puede transferirlas de
un ordenador a otro.
Para acceder al Administrador de licencias
A.1.2.1
Agregar licencias
Puede obtener licencias autorizadas de ISaGRAF.
Para obtener licencias autorizadas de ISaGRAF
Solo necesita un conjunto de cdigos de usuario y las llaves de registro al solicitar
la licencia de ISaGRAF.
1.
2.
17
b)
5.
A.1.2.2
Transferir licencias
Puede transferir licencias de un ordenador a otro.
Para transferir una licencia a otro ordenador
Para transferir una licencia de un ordenador a otro es necesario crear un disco de
transferencia de licencias, borrar la licencia del ordenador que la contiene en ese
momento y copiarla en este disquete de transferencia antes de que se pueda
instalar en el nuevo ordenador. El disquete debe estar formateado y vaco.
1.
Instale ISaGRAF.
b)
c)
d)
e)
2.
18
b)
c)
b)
c)
A.1.2.3
Eliminar licencias
Se pueden eliminar licencias autorizadas de un ordenador.
Para eliminar licencias autorizadas
1.
2.
3.
19
5.
A.1.3
A.1.4
Aplicacin de muestra
Este apartado aporta una explicacin paso a paso de todas las operaciones bsicas
que son necesarias para realizar, disear, generar y probar una aplicacin multilenguaje corta pero completa.
A continuacin se muestra las especificaciones completas de esta aplicacin,
combinando representaciones LD y SFC:
Variables booleanas:
IX0_1, IX0_2:
RunCmd:
QX1_1:
Comando de programa:
IX0_1
20
RunCmd
Programa RunStop:
1
2
2
3
QX1_1;
RunCmd;
NOT(RunCmd);
21
Intro
Asociar variables a los smbolos LD: desplazar el cursor utilizando las flechas del
teclado. Situar el cursor sobre cada smbolo y pulsar la tecla de Intro. Se abre la
ventana de dilogo de la seccin variable.
Para el primer contacto, teclear en la ventana de seleccin de variables: IX0_1 y
despus pulsar Intro.
Para el segundo contacto, teclear en la ventana de seleccin de variables: IX0_2 y
despus pulsar Intro.
Para la bobina (salida), teclear en la ventana de seleccin de variables: RunCmd y
despus pulsar Intro.
El programa ya est completo. A continuacin se muestra el resultado:
22
IX0_1
IX0_2
RunCmd
Salir del editor y guardar las modificaciones introducidas: Men "Fichero" Comando "Salir". Hacer click sobre "SI" para guardar las modificaciones.
23
(0,3)
RunCmd;
Hacer click sobre el botn Cerrar para salir de la ventana de nivel 2.
(0,4)
QX1_1;
(0,5)
Not (RunCmd);
Hacer click sobre el botn Cerrar para salir de la ventana de nivel 2.
24
El programa SFC ya est terminado. Salir del editor por medio del Men "Fichero" y
el Comando "Salir", y guardar las modificaciones introducidas haciendo click sobre
"SI".
Simulacin
Utilizar bien el men "Depurar" y el comando "Simular" desde la ventana del
Gestor de Programas, o bien el botn correspondiente de la barra de herramientas,
para ejecutar el simulador del kernel de ISaGRAF.
Cuando aparezca la ventana del Simulador, se puede probar la aplicacin. En este
ejemplo, se debe actuar sobre las entradas 1 y 2 (botones verdes) para ejecutar el
proceso (salida LEDs rojos).
Cerrar la ventana del Depurador y salir de la simulacin: Men "Fichero" Comando "Salir".
25
A.2
Gestin de proyectos
Para ejecutar la herramienta de gestin de proyectos de ISaGRAF, hacer doble
click sobre el icono de "Proyecto", en el grupo de ISaGRAF. Se abrir la venta del
Gestor de Proyectos.
Cada proyecto corresponde a una operacin en bucle sobre un PLC objeto. La
ventana superior contiene la lista de proyectos existentes. El texto que describe el
proyecto seleccionado se muestra en la ventana inferior.
nombre de
que estn
"Edicin /
delante del
A.2.1
Se emplean los comandos del men del gestor de proyectos para crear
nuevos proyectos, para editarlos y para gestionar proyectos existentes.
Creacin de un nuevo proyecto
Para crear un nuevo proyecto, el primer paso es la introduccin de un nombre. De
esta manera se crea un proyecto vaco, con ningn objeto en l. Se puede asociar
una configuracin de E/S al recin creado proyecto. Esta configuracin de E/S debe
estar definida en la biblioteca. Si se elige una configuracin, ISaGRAF configurar
la conexin E/S automticamente y declarar las correspondientes variables E/S en
26
Historial de modificaciones
El sistema ISaGRAF almacena cualquier modificacin relativa a un componente de
proyecto en un fichero histrico. En dicho fichero, se identifica a cada modificacin
con un ttulo, una fecha y una hora. El fichero histrico contiene las ltimas 500
modificaciones. Existe un fichero histrico para cada proyecto. El historial de
modificaciones del proyecto es el complemento de los ficheros diarios asociados a
los programas del proyecto. El comando "Proyecto / Histrico" permite al usuario
la visualizacin o impresin del historial de modificaciones relativo al proyecto
seleccionado. El usuario puede elegir uno o ms elementos de la lista principal y
pulsar los siguientes botones:
Aceptar .................. cierra esta ventana
Imprimir ................. enva el contenido de la lista a la impresora
Ayuda ................... para visualizar ayuda relativa a esta ventana de
dilogo
[borrado] Seleccin ...... elimina (borra) de la lista las lneas seleccionadas
[borrado] Todo ........... borra la lista completa
Buscar .................. localiza un patrn en la lista
Se utiliza la ventana de introduccin de datos localizada encima de el botn
"Buscar" para introducir un patrn de bsqueda. Esta funcin es insensible al uso
de maysculas o minsculas. Cuando la bsqueda llega al final de la lista, contina
desde el principio de la lista hasta alcanzar la posicin de inicio.
27
A.2.2
en "\ISAWIN\APL"
en "\ISAWIN\SMP"
su rea de trabajo
aplicaciones de ejemplo desarrollados con
el banco de trabajo de ISaGRAF
28
Seleccionar un grupo en la lista y pulsar "Seleccionar " para activarlo en la lista del
gestor de proyectos. Tambin se puede hacer doble click en su nombre para
seleccionarlo. Utilizar el comando "Nuevo grupo" para crear un grupo nuevo. Este
comando se puede utilizar, tanto para asignar un nombre de grupo a un directorio
existente, como para crear un grupo nuevo con un nuevo directorio.
No se puede seleccionar o crear ningn grupo cuando hay otras ventanas de
ISaGRAF abiertas (gestor de programas, editores...).
A.2.3
Opciones
Se utilizan los comandos del men "Opciones" para visualizar u ocultar la barra de
herramientas, seleccionar la fuente de caracteres para el texto y establecer el modo
auto cierre del Gestor de Proyectos. La fuente de caracteres seleccionada es la
que se utiliza para visualizar el descriptor de proyecto y la que utilizan todos los
editores de texto ISaGRAF.
Si se anula la opcin de "Mantener el gestor de proyectos abierto", la ventana del
Gestor de Proyectos se cerrar automticamente cuando se entre en un proyecto.
A.2.4
Herramientas
Los comandos del men "Herramientas" se utilizan para ejecutar otras aplicaciones
de ISaGRAF. El comando "Herramientas / Archivo / Proyectos" ejecuta el gestor
de proyectos de ISaGRAF para guardar o recuperar proyectos. El comando
"Herramientas / Archivo / Datos comunes " se utiliza para guardar o recuperar
ficheros utilizados por todos los proyectos (tales como palabras comunes definidas).
El comando "Herramientas / Bibliotecas" ejecuta el gestor de bibliotecas de
ISaGRAF en una ventana separada.
29
30
A.3.1
Componentes de un proyecto
Los componentes de un proyecto se llaman programas. Un programa es una
entidad lgica que describe una parte del control de la ejecucin. Las variables
globales (tales como las variables de E/S) pueden utilizarse por cualquier programa
de la aplicacin. Las variables locales slo se pueden utilizar en un nico programa.
Los programas se organizan en un rbol jerrquico, dividido en diferentes
secciones lgicas. La ventana muestra los programas y los enlaces entre ellos.
Los programas de " Nivel Superior " aparecen en la parte izquierda del rbol
jerrquico.
31
Subprogramas
Los subprogramas son funciones dedicadas a un programa padre (SFC, FC u otro).
Un subprograma puede ser ejecutado (invocado) nicamente por su programa
padre. Cada programa de cada seccin puede tener uno o ms subprogramas. Se
puede utilizar cualquier lenguaje, con la excepcin de SFC y FC, para describir un
subprograma.
Lenguajes de programacin
Cada programa se describe en un nico lenguaje. Este lenguaje, que se selecciona
en el momento de crear el programa, no puede cambiarse posteriormente. Sin
embargo, los diagramas FBD pueden incluir partes en LD y los diagramas LD
pueden contener llamadas a bloques de funcin. Se dispone de los siguientes
lenguajes grficos: SFC (Diagrama de Funciones Secuenciales), FC (Diagrama de
flujo), FBD (Diagrama de Bloques de funcin) y LD (Diagrama de Escalera
32
A.3.2
33
El diccionario de variables
El comando "Fichero / Diccionario" ejecuta el editor del diccionario, en el que se
registran todas las variables del proyecto. Las variables pueden ser globales
(conocidas por cualquier programa del proyecto) o locales para el programa
seleccionado. Tambin se puede utilizar el editor del diccionario para registrar
palabras definidas, que son alias semnticos que se emplean para sustituir un
nombre o expresin en el cdigo fuente del programa.
34
Los subprogramas, las funciones y los bloques de funcin pueden tener hasta 32
parmetros (entrada y salida). Una funcin o un subprograma siempre tiene un
nico parmetro de retorno, que debe tener el mismo nombre que la funcin para
poder cumplir con las normas de escritura del lenguaje ST.
La lista que aparece en la zona superior izquierda de la ventana muestra los
parmetros, dispuestos en el orden del modelo de invocacin: los parmetros de
llamada en primer lugar y los parmetros de retorno en el ltimo lugar. La parte
inferior de la ventana contiene una descripcin detallada del parmetro que en ese
momento est seleccionado de la lista. Se puede utilizar cualquiera de los tipos de
datos ISaGRAF para un parmetro. Los parmetros de retorno tiene que estar
situados despus de los parmetros de llamada en la lista. La denominacin de
parmetros debe cumplir con las siguientes normas:
la longitud del nombre no puede superar los 16 caracteres
el primer carcter tiene que ser una letra
los restantes caracteres tiene que ser letras, dgitos o el carcter _
los nombres no son sensibles al uso de maysculas o minsculas
Se utiliza el comando "Insertar" para insertar un parmetro nuevo delante del
parmetro seleccionado. Se utiliza el comando "Borrar" para borrar el parmetro
seleccionado. El comando "Ordenar" vuelve a disponer (ordena) los parmetros de
manera automtica, para que los parmetros de retorno se siten al final de la lista.
35
descripcin del programa destino tiene que ser el mismo que se haya utilizado para
el programa fuente. Pulsar el botn Aceptar para copiar el programa.
El comando "Copiar a otro proyecto" del men "Fichero" copia el programa
seleccionado a otro proyecto con el mismo nombre. Los programas SFC hijo y los
subprogramas del programa seleccionado pueden ser copiados junto con el
programa. No se puede utilizar los nombres del programa seleccionado y de sus
hijos en el proyecto objeto. Este comando no permite la sobrescritura de programas.
Todas las declaraciones y palabras definidas locales se copian junto con los
programas.
Eliminacin de programas
Para eliminar un programa, primero hay que seleccionarlo de la lista de programas
y despus ejecutar el comando "Fichero / Borrar". Los programas que poseen
programas hijo o subprogramas no pueden ser eliminados. Para poder borrar un
programa que tenga programas hijo o subprogramas, primero hay que eliminar a
stos. Todas las declaraciones y palabras locales definidas se borran junto con el
programa.
A.3.3
36
Definicin de recursos
Un "recurso" consiste en datos definidos por el usuario (por ejemplo, un fichero)
que deben quedar integrados en el cdigo objeto para poder cargarse o ser
transferido con l. Para mayor informacin sobre el formato del fichero de definicin
de recursos, vase el apartado titulado Cmo utilizar el generador de cdigo.
La definicin de recursos (datos externos que se van a combinar con el cdigo descargado)
acepta nombres de ruta relativos. Puede usar la ruta relativa ".\" para especificar un archivo
de entrada ubicado en la carpeta del proyecto. Esto se refiere a los recursos TEXTFILE y
BINARYFILE para el archivo especificado en la instruccin "FROM".
37
A.3.4
Historial de modificaciones
Este comando abre una ventana de dilogo en el que se muestra el historial de
modificaciones del proyecto. Para mayor informacin acerca de este comando,
vase el apartado titulado Gestin de proyectos.
A.3.5
38
comenzando con un carcter ";". Cada comando se describe en dos lneas de texto,
de acuerdo con la siguiente sintaxis:
M=menu_string
C=command_line
La cadena de men es el texto que aparece en el men "Herramientas". La lnea
de mando es cualquier ejecutable de MS-DOS o Windows, y puede completarse
con argumentos. En la lnea de mando, se pueden utilizar caracteres "%A" para
reemplazar el nombre del proyecto abierto, y caracteres "%P" para reemplazar el
nombre del programa seleccionado. En el siguiente ejemplo, se ejecuta la utilidad
de Windows Bloc de Notas para editar el programa seleccionado (slo para
programas ST e IL):
M=Edit with Notepad
C=Notepad.exe \isawin\apl\%A\%P.lsf
A.3.6
Simulacin
El comando "Simular" abre el depurador en modo simulado. En este modo de
funcionamiento se abre otra ventana, denominada el simulador. Este comando es
muy til para comprobar una aplicacin cuando la mquina objeto no est
disponible. Al iniciar el simulador se cierra la ventana del Gestor de Programas; se
abre de nuevo en modo depuracin una vez que ya estn abiertas las ventanas
tanto del depurador como del simulador. No se puede ejecutar el simulador si
previamente no se ha generado el cdigo objeto. Tampoco se puede ejecutar el
simulador si hay ventanas de hijos (editores, generacin de cdigo, conexin E/S,
etc.) abiertas. Se debe cerrar cada una de ellas antes de ejecutar este comando.
Tambin se puede acceder a este comando desde los mens de los editores
ISaGRAF.
Depuracin real
El comando "Depurar" abre la ventana principal del depurador y cierra la ventana
del Gestor de Programas. La ventana del Gestor de Programas se vuelve a abrir en
modo depuracin una vez que se haya establecido la comunicacin entre el
depurador y la aplicacin objeto. No se puede ejecutar el simulador si previamente
no se ha generado el cdigo objeto. Tampoco se puede ejecutar el depurador si hay
ventanas de hijos (editores, generacin de cdigo, conexin E/S, etc.) abiertas. Se
debe cerrar cada una de ellas antes de ejecutar este comando. Tambin se puede
acceder a este comando desde los mens de los editores ISaGRAF.
39
Configuracin de enlaces
El comando "Configuracin de enlace" abre la siguiente ventana de dilogo.
Permite al usuario definir los parmetros del enlace que se utilizan para la
comunicacin entre el depurador, ubicado en el ordenador principal, y el sistema
ISaGRAF objeto.
El "Nmero de esclavo, identifica al sistema o tarea objeto del entorno ISaGRAF.
Puede ser cualquier nmero entre 1 y 255. Vase la documentacin facilitada por el
proveedor para el nmero de esclavo del sistema objeto que se utilice.
El "Puerto de comunicacin", identifica el canal hardware entre el banco de
trabajo ISaGRAF y el objeto. Puede ser bien el nombre de un puerto serie o bien
Ethernet, que est reservado para la comunicacin TCP/IP utilizando el Winsock
versin 1.1.
El trmino "Tiempo de espera (seg)", es el tiempo permitido al sistema objeto para
sus operaciones de comunicaciones entre el trmino de una interrogacin del
depurador y el inicio de su respuesta. Este tiempo se expresa como un nmero de
segundos. El campo de Reintentos, es el nmero de intentos automticos
ejecutados por el depurador para llevar a cabo una operacin de comunicacin,
antes de detectar un error de comunicacin.
40
41
A.4.1
42
Nivel 2:
Nivel 1:
10
11
10
Comienzo de
mezcla
Comienzo de
mezcla
Action (P):
MixLevel := 10;
End_action;
Mezcla hecha
11
Mezcla hecha
MixLevel > 100;
Divergencias y convergencias
Se utilizan las divergencias y las convergencias para representar enlaces mltiples
entre pasos y transiciones. Las divergencias o convergencias simples representan
diferentes posibilidades inclusivas entre las distintas subpartes del proceso.
43
Macropasos
Un macropaso es una representacin nica de un grupo autnomo de pasos y
transiciones. Un macropaso comienza con un paso inicial y finaliza con un paso
final.
44
A.4.2
La rejilla de edicin muestra celdas de matriz. Una opcin del editor le permite al
usuario mostrar u ocultar la rejilla durante la introduccin de datos en el diagrama.
La rejilla es muy til para el diseo inicial del diagrama SFC, o para seleccionar
subpartes del diagrama. Utilizar el comando "Opciones / Distribucin" para
mostrar u ocultar la rejilla.
45
Insercin de macropasos
Se utiliza este botn para insertar un macropaso en el diagrama principal. Se tiene
que introducir el cuerpo del macropaso en otra parte del mismo programa SFC.
Cuerpo de un macropaso
Los macropasos tienen que ser descritos en el mismo programa SFC que el
diagrama principal. Un macropaso empieza con un paso inicial y finaliza con un
paso final. El subdiagrama que se describe como la implementacin de la macro
tiene que ser autocontenido. El paso inicial del macropaso debe tener la misma
referencia que el smbolo de macropaso de la rama principal.
A.4.3
46
Mover elementos
Cuando se seleccionan elementos SFC de un diagrama SFC, se pueden mover a
otra posicin del diagrama arrastrando la seleccin con el ratn. Cuando se arrastra
la seleccin, la posicin inicial de los elementos seleccionados se marca con un
rayado.
El rea a la que se mueven los objetos debe de estar vaca. No es posible insertar
mientras se mueve smbolos SFC.
47
A.4.4
Teclado
Ratn
Men "Edicin"
Intro
Doble Click
Edita el nivel 2
Ctrl+Intro
Ctrl + 2 Click
48
Las acciones pulsantes son instrucciones que slo se ejecutan una vez,
cuando el paso se vuelve activo. Para mayor informacin sobre la
programacin SFC, vase el documento de referencia de lenguajes
ISaGRAF.
Insercin en un paso de un bloque de acciones no almacenado
Cuando se est programando el Nivel 2 de un paso, pulsar este botn para insertar
la plantilla de un bloque de acciones no almacenado en la posicin actual del
cursor. A continuacin se muestra el formato de un bloque de acciones no
almacenado:
Action (N) :
sentencia ST;
...
End_Action;
49
Action (P1) :
sentencia ST;
...
End_Action;
Las acciones P1 son instrucciones que slo se ejecutan una vez cuando el
paso se vuelve activo (como sucede con las acciones pulsantes). Las
acciones P0 son instrucciones que slo se ejecutan una vez cuando el paso
se vuelve inactivo. Para mayor informacin sobre la programacin SFC,
vase el documento de referencia de lenguajes ISaGRAF.
Acciones booleanas
Se dispone de otras semnticas de texto para actuar directamente sobre una
variable booleana, de acuerdo con la actividad del paso. Las acciones de este tipo
consisten en asociar una seal de actividad del paso a una variable booleana
interna o de salida. A continuacin se muestra la sintaxis de las acciones booleanas
bsicas:
<variable_booleana> (N);
<variable_booleana>;
/ <variable_booleana>;
<variable_booleana> (R);
Acciones SFC
Se dispone de otras semnticas de texto para controlar la ejecucin de un programa
SFC hijo. Una accin SFC es una secuencia SFC hijo que se inicia o se finaliza
segn el estado de la seal de actividad del paso. Una accin SFC puede tener un
calificador N (No almacenado), S (Establecer) o R (Restablecer). A continuacin se
muestra la sintaxis de las acciones SFC bsicas:
<programa_hijo> (N); ................... inicia la secuencia hijo cuando se activa el paso, y
finaliza la secuencia hijo cuando el paso se
vuelve inactivo
<programa_hijo>; ......................... mismo efecto que la sintaxis precedente (el
atributo N es opcional)
50
Transiciones escritas en ST
El Nivel 2 de una transicin es una expresin booleana. Para programarlo en el
lenguaje ST, slo hay que introducir la condicin booleana de acuerdo con la
sintaxis ST. Opcionalmente, puede aadirse un punto y coma ; al final de la
expresin.
Cuando se programa en Quick LD, utilizar las flechas del teclado para desplazar la
seleccin dentro de la rejilla lgica de programacin y despus utilizar los siguientes
aceleradores de teclado para insertar smbolos:
F2: ..........insertar un contacto despus del smbolo seleccionado / iniciar el escaln
(lnea)
F3: ..........insertar un contacto antes del smbolo seleccionado
F4: ..........insertar un contacto en paralelo con el smbolo seleccionado
F6: ..........insertar un bloque despus del smbolo seleccionado
F7: ..........insertar un bloque antes del smbolo seleccionado
F8: ..........insertar un bloque en paralelo con el smbolo seleccionado
Tambin se puede hacer click sobre la barra de botones de funciones, localizada en
la parte inferior de la ventana de Nivel 2, en lugar de pulsar los botones de
funciones.
Cuando est seleccionado un contacto o un parmetro de bloque de E/S, pulsar
Intro para seleccionar una variable o introducir un valor constante. Cuando est
seleccionado un bloque de funcin, pulsar Intro para seleccionar el tipo de bloque
de funcin. Tambin se puede hacer doble click sobre un smbolo para lograr el
mismo efecto.
51
A.4.5
52
A.5.1
53
A.5.2
Insercin de Objetos
Para insertar un objeto en un diagrama, seleccionar el botn correspondiente en la
barra de herramientas y hacer click en el rea grfica donde se quiere insertar ste.
Se puede colocar el elemento sobre una zona vaca o insertarlo en un flujo
haciendo click en el enlace de flujo. La insercin de un enlace slo est permitida
de arriba a abajo para enlaces verticales.
54
Insercin de comentarios
Se pueden insertar comentarios en cualquier parte vaca del diagrama. Los
comentarios no tienen influencia en la ejecucin del programa. Permiten una mayor
55
Utilizacin de conectores
El editor de Diagrama de flujo de ISaGRAF permite el uso de conectores grficos,
como sustituto de un enlace de flujo visible. Los conectores pueden ser muy tiles
para evitar enlaces largos e incrementar la legibilidad del diagrama. Un conector no
se puede utilizar para establecer un enlace con otro programa FC.
Un conector se coloca en el diagrama como otros objetos FC. Se representa por un
crculo que contiene una referencia numrica de el elemento apuntado (el destino
del enlace de flujo). El pequeo texto de descripcin del elemento apuntado se
muestra junto al crculo del conector.
Desplazamiento de objetos
Para mover objetos en el diagrama, se tienen que seleccionar y arrastrar el ratn
para moverlos dentro del diagrama. Se puede mover bien un slo elemento bien
una seleccin mltiple. No se pueden superponer elementos cuando se mueven. El
desplazamiento de elementos no se puede utilizar para conectarlos a un flujo
existente.
Cuando se mueve un nico elemento (accin, decisin...), el editor de diagrama de
flujo ISaGRAF se mueve automticamente con todos los elementos por debajo
conectados a l. Esta caracterstica no acta en el caso de una seleccin mltiple.
56
A.5.3
Corregir un diagrama
La tecla de borrado DEL se puede utilizar para eliminar los elementos
seleccionados. Los enlaces se borran junto a los elementos. Utilizar el comando
"Edicin / Deshacer" para recuperar los elementos despus de un comando DEL.
El comando se puede aplicar tambin a un grupo de elementos seleccionados en el
diagrama. Los comandos "Cortar", "Copiar", "Pegar" del men de "Edicin" se
utilizan para mover o copiar los elementos seleccionados.
Encontrar y reemplazar
Los comandos "Edicin / Encontrar Reemplazar" se utilizan para encontrar o
reemplazar cadenas de texto en todo el diagrama (todas las acciones y decisiones
programadas en ST, IL o Quick LD). La ventana de dilogo de
Encontrar/Reemplazar se utiliza para introducir un texto a buscar y abrir
directamente la seccin de programacin donde ese texto aparece.
57
Renumeracin de elementos
El comando "Edicin / Renumerar" se utiliza para renumerar elementos del
diagrama de flujo. Cualquier elemento FC colocado en el diagrama se identifica con
un nico numero de referencia. Los nmeros de referencia los da el editor cada vez
que se insertan nuevos elementos. El comando "Renumerar" permite reajustar la
numeracin de elementos segn su posicin en el diagrama. La numeracin
creciente se hace de arriba a abajo y de izquierda a derecha.
A.5.4
Abre la ltima
ventana por defecto
Lo abre en
otra ventana
Teclado
Ratn
Men "Edicin"
Intro
Doble Click
Edita el nivel 2
Ctrl+Intro
Edita el nivel 2 en
otra ventana
58
A.5.5
Cuando se programa en Quick LD, utilizar las flechas del teclado para desplazar la
seleccin dentro de la rejilla lgica de programacin y despus utilizar los siguientes
aceleradores de teclado para insertar smbolos:
F2: ..................... insertar un contacto despus del smbolo seleccionado / iniciar el
escaln (lnea)
F3: ..................... insertar un contacto antes del smbolo seleccionado
F4: ..................... insertar un contacto en paralelo con el smbolo seleccionado
F6: ..................... insertar un bloque despus del smbolo seleccionado
F7: ..................... insertar un bloque antes del smbolo seleccionado
F8: ..................... insertar un bloque en paralelo con el smbolo seleccionado
F9: ...................... aadir un smbolo de salto en paralelo con la bobina seleccionada
(no para decisiones)
Un salto lleva a un nombre de escaln. El nombre de un escaln se puede
introducir pulsando la tecla INTRO cuando la seleccin est encima del escaln. El
editor de ISaGRAF lleva memoria de las etiquetas de los escalones ya introducidos,
ya se hayan especificado para nombres de escalones o una operacin de salto. La
ventana de dilogo "Salto /Etiqueta" te da la posibilidad de introducir una nueva
etiqueta o seleccionar una ya existente. Si se introduce un nombre nuevo, ser
aadido automticamente a la lista. El botn de "Eliminar" se utiliza para eliminar el
nombre seleccionado de la lista. No elimina la etiqueta del escaln que se
seleccion en el diagrama. Para hacer esto, simplemente presionar Aceptar
cuando la ventana de edicin est vaca.
59
Tambin se puede hacer click sobre la barra de herramientas LD, en lugar de pulsar
los botones de funciones.
Cuando est seleccionado un contacto o un parmetro de bloque de E/S, pulsar
Retorno para seleccionar una variable o introducir un valor constante. Cuando est
seleccionado un bloque de funcin, pulsar Retorno para seleccionar el tipo de
bloque de funcin. Tambin se puede hacer doble click sobre un smbolo para
lograr el mismo efecto.
Cuando est seleccionado un contacto, pulsar Ctrl + Barra espaciadora para
cambiar el tipo de contacto (directo, negado o con deteccin de impulsos). Para
ms informacin sobre las capacidades de Quick LD, vase el apartado titulado
Utilizacin del editor Quick LD.
A.5.6
Opciones de visualizacin
El comando "Opciones / Distribucin" abre una ventana de dilogo donde se
agrupan todos los parmetros del editor del espacio de trabajo y el dibujo del
diagrama. Utilizar las opciones en el grupo de espacio de trabajo para ver u ocultar
la barra de herramientas del editor y la barra de estado en la pantalla del espacio de
trabajo. Las opciones del grupo "Documento" permiten ver u ocultar los puntos de la
rejilla y ver el diagrama en blanco y negro o con colores.
Utilizar el botn de "Zoom" de la barra de herramientas para cambiar la
relacin de zoom actual. Este comando est tambin disponible cuando se trabaja
en un programa Quick LD asociado a una accin o a una decisin.
Utilizar el botn de "Rejilla" de la barra de herramientas para ver o ocultar
los puntos de la rejilla de edicin. Este comando est tambin disponible cuando se
trabaja en un programa Quick LD asociado a una accin o a una decisin.
Utilizar el comando "Opciones / Fuente" para seleccionar el nombre de la fuente de
caracteres que se utilice en todos los documentos de ISaGRAF. Cuando se llama
desde un bloque ST o IL, se puede especificar el tamao de la fuente. Cuando se
selecciona una fuente para un editor grfico (FC o Quick LD), el estilo de fuente y el
tamao no son relevantes y no necesita especificarse los editores grficos de
ISaGRAF siempre calculan el tamao de la fuente segn la relacin actual de
zoom.
60
A.6.1
Contactos
Un contacto modifica el flujo de datos booleanos, de acuerdo con el estado de una
variable booleana. El nombre de la variable se muestra encima del smbolo del
contacto. El editor Quick LD de ISaGRAF soporta los siguientes tipos de contacto:
........... contacto directo
........... contacto invertido
........... contacto con deteccin de flancos positivos (de subida)
........... contacto con deteccin de flancos negativos (de bajada)
Bobinas (salidas)
Una bobina (salida) representa una accin. Se utiliza el estado del escaln (lnea)
(el estado del vnculo situado a la izquierda de la bobina) para forzar una variable
booleana. Se muestra el nombre de la variable encima del smbolo de la bobina. El
editor Quick LD de ISaGRAF soporta los siguientes tipos de bobina:
........... bobina directa
61
Bloques de funcin
Un bloque en un diagrama LD puede representar una funcin, un bloque de funcin,
un subprograma o un operador. Sus primeros parmetros de entrada y salida
siempre estn conectados al escaln (lnea). Los restantes parmetros de entrada y
salida se escriben de forma literal fuera del rectngulo de bloque.
Smbolo de salto
Un smbolo de salto siempre se refiere a una etiqueta de escaln (lnea), es decir, el
nombre de un escaln (lnea) que est definido en otra parte del mismo diagrama
LD. Se coloca al trmino de un escaln (lnea). Cuando el estado del escaln (lnea)
es VERDADERO, la ejecucin del diagrama salta directamente a este escaln
(lnea) destino. Obsrvese que los saltos hacia atrs son peligrosos, ya que en
algunos casos pueden llevar al bloqueo del ciclo de PLC.
Smbolo de retorno
Se coloca un smbolo de retorno al trmino del escaln (lnea), indicando que se
debe parar la ejecucin del programa si el estado del escaln (lnea) es
VERDADERO.
La entrada EN
En algunos operadores, funciones o bloques de funcin, la primera entrada no
posee datos del tipo booleano. Como la primera entrada tiene que estar conectada
siempre al escaln (lnea), se inserta otra entrada, denominada EN, en la primera
posicin de forma automtica. El bloque slo se ejecuta si la entrada EN es
62
La salida "ENO"
En algunos operadores, funciones o bloques de funcin, la primera salida no posee
datos del tipo booleano. Como la primera salida tiene que estar conectada siempre
al escaln (lnea), se inserta otra salida, denominada ENO, en la primera posicin
de forma automtica. La salida ENO siempre toma el mismo estado que la primera
entrada del bloque. A continuacin se muestra un ejemplo con el bloque de funcin
AVERAGE y el cdigo equivalente expresado en ST:
AVERAGE(rung_state, Signal, 100);
OutSignal := AVERAGE.XOUT;
eno := rung_state;
(*continuar escaln con estado eno *)
A.6.2
Introduccin de un diagrama LD
Se puede acceder a todos los comandos de edicin del editor Quick LD por medio
del teclado o del ratn.
63
La rejilla de edicin
El diagrama LD se introduce en una matriz lgica. Cada celda de la matriz puede
contener hasta un smbolo LD. Utilizar las flechas del teclado o hacer click sobre
una celda para mover la seleccin actual. La celda seleccionada est sealada en
inverso. Para algunas operaciones de cortar/copiar/pegar, se permite la seleccin
de varias celdas. Para hacer lo mismo con el ratn, slo hay que arrastrar el cursor
del ratn dentro del diagrama. Con el teclado, utilizar los botones de flecha a la vez
que se pulsa el botn de SHIFT o maysculas.
64
Para insertar smbolos en el diagrama, tambin se pueden utilizar los comandos del
men "Insertar". Con el ratn, hacer click sobre la barra de herramientas clave
situada en la parte inferior de la pantalla, sobre el tipo de smbolo que se desea
insertar:
Introduccin de smbolos
Para asociar un smbolo de variable a un contacto o una bobina (salida),
seleccionarlo y pulsar Retorno. Con el ratn, hacer doble click en el contacto o el
bucle. Se abre una ventana de seleccin de variables. Para ms informacin sobre
la manera de utilizar esta ventana, vase el apartado titulado Ms sobre los
editores de programas. Para asociar una funcin, un bloque de funcin o un
65
A.6.3
Correccin de diagramas
Se puede utilizar el botn DEL (Supr) para eliminar elementos seleccionados. No se
puede eliminar una bobina (salida), un salto o un smbolo de retorno cuando es la
nica salida de un escaln (lnea). Utilizar el comando "Edicin / Deshacer" para
restaurar elementos despus de ejecutar un comando DEL. Tambin se puede
aplicar el comando DEL a un grupo de elementos que se seleccione en el
diagrama. Puede emplearse el comando DEL cuando la seleccin se encuentra en
el texto de comentario del escaln (lnea), para borrarlo. El comando DEL, si se
utiliza cuando la seleccin se encuentra sobre el inicio del escaln (lnea), elimina
todo el escaln (lnea).
Copia de smbolos
Los comandos "Cortar", "Copiar", "Pegar" del men "Edicin" se utilizan para
mover o copiar elementos seleccionados. Estos comandos no actan sobre los
66
Buscar y reemplazar
Se utilizan los comandos de men "Edicin / Buscar" y "Edicin / Reemplazar"
para encontrar y sustituir textos del diagrama. Slo se pueden buscar nombres
completos. La funcin de bsqueda acta sobre contactos, bobinas (salidas),
nombres de bloque, parmetros de bloque y etiquetas de ejecucin. No se puede
utilizar para encontrar una cadena dentro de un comentario de escaln (lnea). No
se puede utilizar el comando Reemplazar para cambiar el tipo de bloque. La
bsqueda puede ser en sentido ascendente o descendente, empezando en la
posicin de la seleccin actual. Ejecuta un bucle cuando alcanza los lmites del
diagrama. Tambin se dispone de los siguientes aceleradores de teclado para la
bsqueda rpida de nombres de variables:
ALT + F2 encuentra el siguiente elemento con el mismo nombre de variable que el
elemento que est seleccionado en ese momento. Esta prestacin tambin puede
aplicarse a los bloques de funcin y las etiquetas de escalones (lneas).
ALT + F5 encuentra la siguiente bobina (salida) con el mismo nombre de variable
que el elemento que est seleccionado en ese momento. Esta funcin se utiliza
principalmente en el modo de depuracin, para averiguar rpidamente cules son
los escalones (lneas) que fuerzan una variable sospechosa.
A.6.4
Opciones de visualizacin
Se utilizan los comandos del men "Opciones" para personalizar la manera de
dibujarse el diagrama LD en pantalla, y para ocultar o mostrar determinados tipos
de informacin.
Consejos de herramientas
Utilice el comando "Opciones / Consejos de herramientas" para ocultar o mostrar
comentarios variables que aparecen como consejos de herramientas en el diagrama completo.
El comentario aparece como un consejo de herramienta cuando el cursor se mueve por
encima del bloque variable correspondiente. Esta opcin est disponible en los modos
desconectado y en lnea.
67
Nombres y alias
Cada variable, al asociarse a un contacto, bobina (salida) o parmetro de bloque de
E/S, est identificada por su nombre simblico. El editor Quick LD de ISaGRAF
tambin introduce la nocin o alias de cada variable. El alias de la variable es su
texto de comentario, truncado antes del primer carcter : y limitado a 16
caracteres. A continuacin se muestran algunos ejemplos:
comentario variable:
short text
long text with no separator
short text: long description
alias:
short text
long text with n
short text
Opciones de dibujo
El comando "Opciones / Distribucin" abre una ventana de dilogo que agrupa a
todos los parmetros y opciones relacionados con el espacio de trabajo del editor y
el dibujo del diagrama grfico LD.
Utilizar las casillas de la seccin "Espacio de trabajo" para mostrar u ocultar la barra
de herramientas del editor, la barra de estado y la barra de herramientas LD. Las
opciones de la seccin "Documento" le permiten al usuario mostrar u ocultar los
puntos de la rejilla de edicin, adems de habilitar o deshabilitar el uso de colores
en el dibujo.
Las opciones de la seccin "Zoom" le permiten al usuario seleccionar el
principal ratio de aumento o zoom. Tambin puede utilizarse el botn "zoom" de la
barra de herramientas del editor para permutar entre las relaciones de zoom por
defecto.
El usuario tambin puede personalizar el ratio de aspecto X/Y de las
celdas pertenecientes a la rejilla de edicin. Se puede utilizar esta opcin para
68
reducir el ancho por defecto de una celda, si se suelen utilizar nombres cortos para
las variables. Tambin se puede utilizar el botn ancho de la barra de
herramientas del editor para cambiar la relacin de aspecto X/Y sin necesidad de
entrar en la ventana de dilogo de Distribucin.
Utilizar el comando "Opciones / Fuente" para seleccionar el nombre de la fuente de
caracteres que se usar en todos los documentos grficos de ISaGRAF. Cuando se
selecciona una fuente, el estilo de fuente y su tamao no son relevantes y no
necesitan especificarse. Los editores grficos de ISaGRAF siempre calculan el
tamao de la fuente segn la relacin de zoom seleccionada.
A.6.5
Ayuda en lnea
Para obtener ayuda sobre los bloques de funcin del editor Quick LD:
Pulse F1.
Se muestra la ayuda de los bloques de funcin. En caso de funcin IEC o "C" personalizada,
o de bloque de funcin, la ayuda que aparece es la "nota tcnica" introducida en el editor de
biblioteca (solo texto).
69
A.7.1
70
Contactos
Un contacto modifica el flujo de datos booleanos, de acuerdo con el estado de una
variable booleana. Se muestra el nombre de la variable encima del smbolo de
contacto. El editor FBD/LD de ISaGRAF soporta los siguientes tipos de contactos:
..... contacto directo
..... contacto invertido
..... contacto con deteccin de flancos positivos (de subida)
..... contacto con deteccin de flancos negativos (de bajada)
Bobinas (salidas)
Una bobina (salida) representa una accin. Tiene que estar conectada por la
izquierda con un smbolo booleano como un contacto. El nombre de la variable
aparece encima del smbolo de la bobina. El editor FBD/LD de ISaGRAF soporta los
siguientes tipos de bobina:
..... bobina directa
..... bobina invertida
..... bobina de accin establecer
..... bobina de accin restablecer
Bloques de funcin
Un bloque en un diagrama FBD puede representar una funcin, un bloque de
funcin, un subprograma o un operador. Las entradas y salidas tiene que estar
conectados a variables, contactos o bobinas (salidas), o a otros bloques de
entradas o salidas. Los nombres formales de los parmetros aparecen en el interior
del rectngulo correspondiente al bloque.
Etiquetas
Se pueden colocar etiquetas en cualquier parte del diagrama. Las etiquetas se
utilizan como destinos en las instrucciones de salto, para cambiar el orden de
ejecucin del diagrama. Las etiquetas no estn conectadas a otros elementos. Es
altamente recomendable la colocacin de etiquetas en la parte izquierda del
diagrama, para aumentar la legibilidad del diagrama.
71
Saltos
Un smbolo de salto se refiere siempre a una etiqueta situada en otra parte del
diagrama. Su conexin izquierda tiene que estar vinculada a un punto booleano.
Cuando la conexin izquierda es VERDADERO, la ejecucin del diagrama salta
directamente a esta etiqueta destino. Obsrvese que los saltos hacia atrs son
peligrosos, ya que en algunos casos pueden llevar al bloqueo del bucle del PLC.
Smbolo de retorno
Un smbolo de retorno est conectado a un punto booleano. Indica que se deber
interrumpir la ejecucin del programa si el estado del escaln (lnea) es
VERDADERO.
Variables
Las variables se representan en el diagrama dentro de rectngulos pequeos que
estn conectados a izquierda o derecha con otros elementos del diagrama.
Enlaces de conexin
Se dibujan enlaces de conexin entre los elementos que se colocan en el diagrama.
Los enlaces siempre se dibujan entre un punto de salida y un punto de entrada (en
el sentido del flujo de datos).
A.7.2
Insercin de objetos
Para insertar un objeto en el diagrama, seleccionar el botn correspondiente en la
barra de herramientas y hacer click en la zona grfica, en el lugar en que se desea
hacer la insercin.
Seleccin de objetos
La seleccin de objetos grficos es necesaria para la mayora de los comandos de
edicin. El editor grfico LD/FBD de ISaGRAF permite la seleccin de uno o ms
72
objetos existentes en la zona del diagrama. Para poder seleccionar objetos, antes
debe estar marcada la opcin Seleccionar (botn con una flecha) en la barra de
herramientas del editor. Para seleccionar un nico objeto, el usuario slo tiene que
hacer click sobre el smbolo correspondiente. Para seleccionar una lista de objetos,
arrastrar el cursor del ratn dentro del diagrama y seleccionar un rea rectangular.
Todos los objetos grficos que cortan el rectngulo de la seleccin quedan
marcados como seleccionados. Los objetos seleccionados muestran unos
recuadros negros pequeos alrededor de su smbolo grfico. Al realizar una nueva
seleccin, todos los objetos que previamente estaban seleccionados dejan de
estarlo. Para eliminar la seleccin actual, slo hay que hacer click con el ratn
sobre una zona vaca, fuera del rectngulo que bordea a los objetos seleccionados.
Insercin de comentarios
Se pueden insertar comentarios en cualquier punto del diagrama. Los comentarios
no influyen en la ejecucin del programa. Permiten una mayor legibilidad del
diagrama. Para insertar un bloque de comentarios, seleccionar este botn en la
barra de herramientas y arrastrar el cursor del ratn para seleccionar el rea
rectangular en el que se desea insertar el comentario. Despus, introducir el texto
del comentario. No hacen falta caracteres iniciales o finales especiales, como "(*" y
"*)", cuando se introduce el texto de un bloque de comentarios. Para redimensionar
un bloque de comentarios, arrastrar las esquinas del borde cuando se encuentre
seleccionado.
Desplazamiento de objetos
Para desplazar objetos en el diagrama, primero se seleccionan y despus se
arrastra el cursor del ratn para desplazar la zona seleccionada dentro del
diagrama. Para mover objetos conectados, el usuario slo tiene que mover los
smbolos grficos que se encuentran en el diagrama. El editor LD/FBD de ISaGRAF
volver a dibujar automticamente las lneas de conexin existentes entre los
objetos que fueron desplazados, con base en su nueva ubicacin.
Dibujo de enlaces
Seleccionar uno de estos botones en la barra de herramientas para dibujar un
enlace entre los puntos de conexin de elementos existentes. Si se dibuja un
enlace desde un punto de conexin hasta una zona vaca del diagrama, se termina
automticamente con una esquina definida por el usuario para que se pueda
continuar dibujando otro segmento.
73
Conexiones mltiples
Se puede crear una conexin mltiple a la derecha de cualquier punto de salida.
Eso significa que la informacin ser emitida a diversos puntos del diagrama. Se
propaga el mismo estado a cada extremidad de la derecha. No est limitado el
nmero de lneas que se puede dibujar a la derecha de un punto de conexin de
salidas. Dos lneas de conexin no pueden tener su extremidad derecha conectada
al mismo punto de entrada, con la excepcin de los siguientes smbolos LD:
............ carril de potencia derecho
............ conexin mltiple en el operador (OR) izquierdo
Estos smbolos LD pueden poseer un nmero ilimitado de entradas.
A.7.3
Correccin de diagrama
Se puede utilizar el botn DEL (Supr) para eliminar elementos seleccionados. Se
borran los enlaces pendientes con los elementos seleccionados. Utilizar el comando
"Edicin / Deshacer" para restaurar elementos despus de ejecutar un comando
DEL. Tambin se puede aplicar el comando DEL a un grupo de elementos que se
74
Buscar y reemplazar
Se utilizan los comandos de men "Edicin / Buscar" y "Edicin / Reemplazar"
para encontrar y sustituir textos del diagrama. Slo se pueden buscar nombres
completos. La funcin de bsqueda acta sobre contactos, bobinas (salidas),
nombres de bloque, variables y etiquetas. No se puede utilizar para encontrar una
cadena dentro del texto de un comentario. No se puede utilizar el comando
Reemplazar para cambiar el nombre de un bloque. La bsqueda puede ser en
sentido ascendente o descendente, empezando en la posicin de la seleccin
actual. Se ejecuta un bucle cuando se alcanzan los lmites del diagrama.
75
Espacio libre
Cuando se pulsa el botn derecho del ratn en un rea de dibujo, se despliega un
men de entrada/salida. Contiene los siguientes comandos que se pueden utilizar
para insertar, o eliminar espacio libre en las posicin del cursor del ratn.:
Insertar filas: Este comando inserta espacio libre horizontal, hecho de 4 filas segn
el paso de la rejilla, comenzando en la posicin del cursor del ratn donde se abre
el men desplegable.
Borrar filas: Este comando elimina espacio horizontal no utilizado (filas)
comenzando en la posicin del cursor del ratn donde se abri el men
desplegable. Este comando no se puede utilizar para eliminar elementos FBD.
Cuando se abre el men desplegable una lnea gris en el dibujo FBD indica donde
se insertar o eliminar el espacio libre.
A.7.4
Opciones de visualizacin
Se utilizan los comandos del men "Opciones" para personalizar la presentacin
del diagrama FDB en pantalla.
Consejos de herramientas
Utilice el comando "Opciones / Consejos de herramientas" para ocultar o mostrar
comentarios variables que aparecen como consejos de herramientas en el diagrama completo.
El comentario aparece como un consejo de herramienta cuando el cursor se mueve por
encima del bloque variable correspondiente. Esta opcin est disponible en los modos
desconectado y en lnea.
Personalizacin de la distribucin
El comando "Opciones / Distribucin" abre una ventana de dilogo en la que se
agrupan todos los parmetros y opciones relacionados con el espacio de trabajo del
editor y la forma de dibujar el diagrama grfico. Utilizar las casillas seleccionables
de la seccin "Espacio de trabajo" para mostrar u ocultar las barras de herramientas
y la barra de estado del editor. Las opciones de la seccin "Documento" le permiten
al usuario mostrar u ocultar los puntos de la rejilla de edicin.
76
El editor FBD crea este flujo de energa (uniones grficas) en funcin de los valores del
proceso. Todos los trminos en estado "0" o "FALSE" aparecen en AZUL. Todos los valores
distintos de cero o los trminos en estado "TRUE" aparecen en ROJO.
77
A.7.5
Estilos predefinidos
Estn predefinidos los siguiente estilos:
Normal
Modificados
Borrados
Configurable
Utilizar los comandos del submen de "Estilo" en el men "Edicin" para aplicar
manualmente un estilo a los elementos seleccionados.
Rastreo de modificaciones
El uso de estilos y la disponibilidad del estilo "Borrado" permite un rastreo de
modificaciones inmediato en el diagrama existente. Utilizar el comando "Marcar
modificaciones" en el men "Edicin / Estilo" para habilitar o deshabilitar el
rastreo de modificaciones.
78
A.7.6
Ayuda en lnea
Para obtener ayuda sobre los bloques de funcin del editor LD/FBD:
Pulse F1.
Se muestra la ayuda de los bloques de funcin. En caso de funcin IEC o "C"
personalizada, o de bloque de funcin, la ayuda que aparece es la "nota tcnica"
introducida en el editor de biblioteca (solo texto).
A.7.7
79
A.8.1
Edicin de comandos
Se utilizan los comandos del men "Edicin" para trabajar con el texto editado. La
mayora de estos comandos acta sobre los caracteres seleccionados en ese
momento en el diagrama, o realiza alguna accin en la posicin del cursor.
Cortar y pegar
Se puede emplear el botn DEL (Supr) para eliminar el texto seleccionado. Utilizar
el comando "Edicin / Deshacer" para restaurar elementos despus de ejecutar un
comando DEL. Los comandos "Cortar", "Copiar", "Pegar" del men "Edicin" se
utilizan para mover o copiar texto dentro del programa, o para insertar bloques de
texto copiados al portapapeles desde otras aplicaciones.
Localizar y sustituir
Los comandos de men "Edicin / Buscar" y "Edicin / Reemplazar" se utilizan
para localizar y sustituir textos en el programa. Se puede encontrar cualquier
cadena de caracteres. La bsqueda puede efectuarse en sentido ascendente o
hacia atrs, comenzando en la posicin actual del cursor. No se efecta un bucle
cuando se alcanzan los lmites del programa.
Ir a la lnea
Se utiliza el comando "Edicin / Ir a lnea" para desplazar el cursor hasta un
nmero de lnea especfico. Esto puede ser muy til cuando se quiera acceder a
una lnea que contenga algn error detectado por el compilador ISaGRAF en un
programa ST o IL y que est referenciado por un nmero de lnea.
80
Insertar fichero
El comando "Edicin / Insertar Fichero" inserta el contenido ntegro de un fichero
en la posicin actual del cursor. Nota: Este comando slo puede manejar ficheros
de texto ASCII puro.
A.8.2
Colores de sintaxis
El editor de textos utiliza varios colores para mostrar las palabras clave de los
lenguajes, los identificadores variables, las expresiones constantes... El conjunto de
colores aplicado a la sintaxis no se puede personalizar.
A.8.3
Opciones
Los comandos del men "Opciones" se utilizan para mostrar u ocultar las barras de
herramientas del editor y para seleccionar el tipo de letra. Se emplear el tipo de
letra seleccionado para cualquier tarea de edicin de textos en el banco de trabajo
ISaGRAF.
Cuando se utiliza para introducir el cdigo fuente de un programa ST o IL, el
comando "Opciones / Mostrar palabras clave" se emplea para mostrar u ocultar
una caja de herramientas que agrupa a las palabras clave ms comunes de los
lenguajes ST e IL. Hacer click sobre un botn de la barra de herramientas para
insertar las correspondientes palabras claves u operadores en la posicin actual del
cursor.
81
A.9.1
A.9.2
82
83
A.9.3
Imprimir el programa
El comando "Fichero / Imprimir" da salida al programa editado por impresora.
Cuando se editan programas ST o IL, este comando ejecuta el generador de
documentos de proyecto para imprimir el programa.
En el caso de los programas grficos (SFC, FBD y Quick LD), tambin se puede
utilizar el comando "Edicin / Copiar imagen (metafile)" para copiar el dibujo del
diagrama al portapapeles en formato metafile, para que pueda pegarse en otras
aplicaciones tales como procesadores de texto. Para los programas SFC, slo la
informacin de Nivel 1 (diagrama, numeracin y comentarios de Nivel 1) aparece en
el metafile copiado.
A.9.4
84
A.9.5
85
A.9.6
Buscar en texto
Ocultar lista de salida
86
Variables
Las variables estn clasificadas por rango y por tipo. Slo se pueden introducir
variables del mismo tipo y rango en una misma plantilla de entrada. Los rangos
bsicos para variables son:
GLOBALES ........ pueden ser utilizadas por cualquier programa del proyecto
actual
LOCALES ......... pueden ser utilizadas por un nico programa
Los tipos bsicos de variables son:
BOOLEANAS ...... valores binarios verdaderos/falsos
ANALGICAS...... valores reales o enteros
TEMPORIZADOR ... valores de tiempo
MENSAJE ......... cadenas de caracteres
Una variable est identificada por un nombre, un comentario, un atributo, una
direccin de red y por otros campos especficos. A continuacin se muestran los
atributos bsicos de una variable:
INTERNA ............. variable de memoria
ENTRADA............. variable asociada a un dispositivo de entrada
SALIDA ............... variable asociada a un dispositivo de salida
CONSTANTE .......... variable interna de slo lectura (con valor inicial)
Los Temporizadores siempre son variables internas. Las variables de
Nota:
Entrada y Salida siempre tienen el rango GLOBAL.
Palabras definidas
Una palabra definida es un alias que puede utilizarse en cualquier lenguaje para
reemplazar una cadena de texto. El texto reemplazado puede ser el nombre de una
variable, una expresin constante o una expresin compleja. Se clasifica las
87
R_TRIG
Input=CLK
Output=Q
TRIG_B1 (b1);
edge_b1 := TRIG_B1.Q; (* b1 variable deteccin de flanco *)
TRIG_B2 (b2);
edge_b2 := TRIG_B2.Q; (* b2 variable deteccin de flanco *)
Las instancias declaradas de bloques de funcin pueden ser GLOBALES
(conocidas por cualquier programa del proyecto) o LOCALES para un nico
programa. Los bloques de funcin utilizados en los lenguajes FBD y LD no tienen
que ser declarados, ya que los editores FBD de ISaGRAF declaran las instancias
de los bloques utilizados de forma automtica.
88
r_trig
b1
CLK
b2
CLK
r_trig
&
two_edges
Q
(* los bloques de funcin siempre tienen el nombre del bloque que se haya
definido en la biblioteca. Los editores FBD y Quick LD de ISaGRAF declaran
una instancia automticamente cada vez que se inserta un bloque en el
diagrama *)
Las instancias de bloques de funcin declaradas por los editores FBD y Quick LD
siempre son LOCALES para el programa editado.
Direcciones de red
Las direcciones de red son opcionales. Una variable con una direccin de red no
cero puede ser espiada por un sistema externo (por ejemplo, un sistema de
visualizacin de procesos) durante el tiempo de proceso. En trminos ms
generales, la direccin de red facilita un mecanismo de identificacin para cada
sistema de comunicaciones que no puede manejar nombres simblicos. Se puede
introducir una direccin de red para cada variable, durante su descripcin completa,
cuando se crea o se modifica una variable.
A.10.1
89
A.10.2
Gestin de variables
Los comandos del men "Fichero" actan sobre toda la clase seleccionada de
variables, instancias de bloques de funcin o palabras definidas. Utilizar el comando
"Otro" para seleccionar el tipo y rango de los objetos que se desea editar.
Impresin de variables
Utilizar el comando "Fichero / Imprimir" para imprimir la lista que se est editando
de variables o palabras definidas, en una impresora estndar de Windows. La
impresin se realiza utilizando el generador de documentos de ISaGRAF. Se
incluye la descripcin completa de cada variable o palabra definida del grupo que
se est editando en ese momento.
Cortar y pegar
La herramienta de edicin de diccionario de ISaGRAF permite la seleccin de
lneas mltiples. Existen muchos comandos para trabajar con la lista de variables
que se est editando en un momento dado. Se dispone de los siguientes comandos
del men "Edicin":
90
Clasificacin de variables
El comando "Herramientas / Ordenar" clasifica las variables o palabras definidas
de la lista que en ese momento se est editando. El orden de clasificacin est
determinado por los atributos de las variables:
primero, las variables internas
despus, las variables de entrada
por ltimo, las variables de salida
Las variables con el mismo atributo estn clasificadas en orden alfabtico. Las
palabras definidas siempre estn clasificadas en orden alfabtico.
91
A.10.3
Descripcin de objetos
Se introduce una descripcin completa para cada variable, instancia de bloque de
funcin o palabra definida. Los campos de descripcin son distintos para cada tipo
de objeto. Los siguientes campos son comunes para cualquier tipo de variable:
Nombre.....................Nombre de la variable: el primer carcter tiene que ser una
letra y los restantes caracteres tienen que ser letras, dgitos o
el smbolo _.
Direccin de red ......Direccin de red hexadecimal (opcional). Cuando este campo
no equivale a cero, la variable puede ser espiada por
sistemas externos durante el tiempo de proceso.
Comentario ..............Comentario libre para la descripcin de variables.
Retener .....................Esta opcin indica que se tiene que guardar la variable en la
memoria de seguridad.
Estos son otros campos de descripcin para una variable booleana:
Atributo.............................. Especifica una variable interna, constante, de entrada o
de salida.
Cadena Falso.................. Cadena utilizada para el valor falso durante la
depuracin.
Cadena verdadero.......... Cadena utilizada para el valor falso durante la
depuracin.
Establecer verdadero
al inicio .............................. El valor inicial es TRUE si se selecciona esta opcin. En
caso contrario, el valor inicial es FALSE.
Estos son otros campos de descripcin para una variable analgica entera o real:
Atributo.....................Especifica una variable interna, constante, de entrada o de
salida.
Formato ....................Especifica una variable entera o real (flotante). Se puede
seleccionar el formato de visualizacin que se vaya a utilizar
durante el proceso de depuracin.
Cadena unidad.........La cadena utilizada para identificar a la unidad fsica durante
el proceso de depuracin.
Conversin...............El nombre de la tabla de conversin o la funcin de
conversin asociada a la variable (slo para variables de
entrada o salida).
Valor inicial ..............Valor inicial de la variable (tiene que tener el mismo formato
que la variable). Si no se especifica lo contrario, el valor inicial
es 0.
Estos son otros campos de descripcin para una variable temporizador:
Atributo.....................Especifica una variable interna o constante.
Valor inicial ..............Valor inicial de la variable (valor de tiempo). Si no se
especifica lo contrario, el valor inicial es time#0s.
92
A.10.4
Declaracin rpida
El comando "Herramientas / Declaracin rpida" permite declarar varias variables
al mismo tiempo. Las variables creadas mediante declaracin rpida se nombran
usando una convencin numrica. Para eso hay que definir:
- El ndice (numero) de la primera y de la ltima variable,
- El texto a aadir, antes y despus del nmero, en caracteres de la variable
- El nmero de dgitos que se utilizan para expresar el nmero en caracteres de la
variable
Adems se pueden especificar atributos bsicos de las variables creadas (internas,
entrada o salida), y algunas propiedades dependiendo del tipo de variable
(atributo de "Retencin", formato entero o real, longitud mxima de la cadena de
mensaje).
93
Var10xx
Var11xx
A.10.5
94
esclavo. Las direcciones de red se usan para crear un mapa virtual Modbus para
todas las variables ISaGRAF que deben ser controladas por el SCADA. El comando
"Herramientas / Mapa de direcciones Modbus SCADA" es muy potente para
crear rpidamente un mapa virtual Modbus con las variables de la aplicacin.
Las herramientas de mapeo muestran dos listas. La superior es un segmento del
mapa Modbus (4096 posiciones), con las variables mapeadas (las que tienen
direccin de red). La lista inferior muestra las variables no mapeadas (sin direccin
de red definida). la direccin "0" no puede ser usada para mapear una variable.
Utilizar los comandos "Mapear" y "Eliminar" del men "Edicin" para mover una
variable de una lista a otra, y de este modo construir el mapa. las mismas acciones
pueden realizarse haciendo doble click en un smbolo de una variable de la lista,
para mandarla a la otra lista. En cualquier momento se puede desplegar la lista
"Segmento" para ver otro segmento del mapa.
Los comandos del men "Opciones" se pueden utilizar en cualquier momento para
ver las direcciones en decimal o en hexadecimal.
Los comandos "Edicin / Buscar" se usan para buscar una variable declarada, ya
est mapeada o no.
A.10.6
Exportacin de datos
Aparece la siguiente ventana de dilogo cuando se ejecuta el comando "Exportar
texto". Le permite al usuario controlar el mecanismo de exportacin.
95
Marcando la opcin "Lista completa" indica que se tiene que exportar la lista
editada completa. En este caso, se ignora la seleccin actual. Marcando la opcin
"Variables seleccionadas" indica que slo se exportarn las variables
seleccionadas.
Al seleccionar la opcin "Portapapeles", se guarda la informacin exportada en el
portapapeles de Windows en formato de texto ASCII puro, quedando a disposicin
de los comandos de pegar de otras aplicaciones. Al seleccionar la opcin
"Fichero", el texto exportado se guarda en un fichero ASCII. Tiene que introducirse
el nombre completo de la ruta de acceso de este fichero. Se puede utilizar el
comando "Explorar" para encontrar un nombre de ruta existente.
Seguidamente, el usuario elige un formato para el texto exportado. Los formatos
disponibles estn descritos en secciones posteriores. Pulsar el botn "Aceptar"
para ejecutar la funcin de exportacin. Pulsar el botn "Cancelar" para cerrar la
ventana de dilogo y salir del comando de exportacin.
Todos los campos de los objetos seleccionados estn almacenados en el texto
exportado, en el orden estndar de declaracin. La primera lnea del texto
exportado contiene los nombres de los campos. Cada objeto se describe en una
lnea de texto. El separador de fin de lnea es la secuencia estndar de MS-DOS
"0d-0a". Se pueden cambiar los nombres que se emplean para identificar los
campos de la primera lnea exportada, pulsando el botn "Palabras clave". Se
describe este comando en secciones posteriores.
Importacin de datos
Aparece la siguiente ventana de dilogo cuando se ejecuta el comando de
"Importar texto". Permite al usuario controlar el mecanismo de importacin.
96
Nombre Atributo
nivel
interno
alrm1
salida
Comentario
clculo interno nivel de agua
salida de alarma principal
97
Nombre,Atributo,Comentario
nivel,interno,clculo interno nivel de agua
alrm1,salida,salida de alarma principal
Nombre;Atributo;Comentario
nivel;interno;clculo interno nivel de agua
alrm1;salida;salida de alarma principal
comas y comillas
"Nombre","Atributo","Comentario"
"nivel","interno","clculo interno nivel de agua "
"alrm1","salida"," salida de alarma principal"
Palabras clave
Para cambiar los nombres utilizados para identificar los campos de la primera lnea
importada o exportada, pulsar el botn "Palabras clave". Este comando abre la
siguiente ventana de dilogo:
98
lista original de palabras clave. Los nombres de las palabras clave tienen que
cumplir con las siguientes normas:
el nombre no puede superar los 16 caracteres
el primer carcter tiene que ser una letra
los restantes caracteres pueden ser letras, dgitos o el smbolo _
no se puede usar el mismo nombre para palabras clave diferentes
Las palabras clave estndares utilizadas en ISaGRAF son:
Nombre de objeto.................................................. Name
Comentario de texto .............................................. Comment
Direccin de red .................................................... Address
Atributos (interno, entrada, salida) ........................ Attribute
Cadena booleana 'Falso'....................................... False
Cadena booleana Verdadero............................... True
Formato analgico (real o entero) ......................... Format
Cadena unidad analgica...................................... Unit
Nombre conversin analgica............................... Conversion
Longitud mxima mensaje .................................... MaxLength
Bloque funciones, tipo biblioteca........................... Library
Equivalencia palabra definida ............................... Equivalence
Atributo interno ...................................................... Internal
Atributo de entrada................................................ Input
Atributo de salida................................................... Output
Atributo constante ................................................. Constant
Formato analgico real.......................................... Real
Formato valor analgico entero............................. Integer
99
Iconos
Los iconos que se exhiben en el frontal indican el tipo y los atributos de las
variables que se pueden conectar a los canales de la tarjeta. El sistema ISaGRAF
no permite la conexin de variables de diferentes tipos en la misma tarjeta. A
continuacin se indica el significado de los iconos utilizados:
............. tipo booleano
............. tipo datos enteros/reales (pueden conectarse ambos tipos de
variables)
............. tipo mensaje
............. entradas - sin conectar canal
............. salidas - sin conectar canal
............. entradas - al menos un canal conectado
............. salidas - al menos un canal conectado
A continuacin se muestran los iconos utilizados para mostrar el tipo de dispositivo
de E/S que est instalado en una ranura:
............ equipo complejo de E/S
............ tarjeta de E/S real
............ tarjeta de E/S virtual
Se utilizan los siguientes iconos para dibujar un parmetro o un canal:
........... parmetro de tarjeta
............. canal libre
............. canal conectado
100
una lnea hacia arriba o una hacia abajo en la lista principal. El comando "Edicin /
Insertar ranura" inserta una ranura vaca en la posicin actual.
A.11.1
101
Notas tcnicas
El comando "Herramientas / Nota tcnica" muestra la gua en lnea del usuario
para la tarjeta o el equipo complejo seleccionado. Las notas tcnicas de la tarjeta
estn redactadas por el proveedor de la tarjeta de E/S. Estas instrucciones
contienen una informacin completa sobre la gestin de la tarjeta de E/S. Tambin
explica el significado de sus parmetros.
Comentarios
El texto de comentario asociado a una variable de E/S declarada se muestra, con
su nombre, en la lista de tarjetas. Ya que ISaGRAF permite la utilizacin de
variables de representacin directa (notacin %), tambin se pueden asociar
comentarios a los canales libres. Utilizar el comando "Herramientas / Definir
comentario de canal" para introducir un comentario para el canal libre que est
seleccionado en la lista de tarjetas. Este comando no puede ser utilizado para
cambiar el comentario asociado a una variable de E/S que se haya declarado en el
diccionario del proyecto.
A.11.2
A.11.3
102
La lista contiene todas las variables que coincidan con el tipo y la direccin de la
tarjeta seleccionada. Slo aparecen en esta lista las variables que todava no han
sido conectadas. El botn "Conectar" conecta la variable seleccionada de la lista
con el canal seleccionado. El botn "Liberar" elimina (desconecta) la variable del
canal seleccionado. Los botones "Siguiente" y "Anterior" se utilizan para
seleccionar otro canal de la tarjeta. La ubicacin del canal seleccionado se exhibe
siempre en la barra de ttulo de la ventana de dilogo.
A.11.4
Algunos ejemplos:
%QX1.6
%ID2.1.7
Una variable de representacin directa no puede ser del tipo de datos real.
103
A.11.5
Numeracin
Use el comando "Opciones / Numeracin" para configurar los convenios de
numeracin. Se puede especificar el nmero utilizado para el primer slot y el
nmero utilizado para el primer canal de cada tarjeta en el siguiente cuadro de
dilogo:
A.11.6
104
105
A.12.1
Comandos principales
La ventana de dilogo de "Tablas de conversin" muestra la lista de las tablas de
conversin definida para los comandos principales, para editar una tabla existente
(definir sus puntos), para crear una nueva tabla, y tambin para renombrar o borrar
una tabla.
Presione Aceptar para salir del cuadro de dilogo de "Tablas de conversin" y
gurdelo en el disco.
106
A.12.2
Modificacin de un punto
Para modificar los valores de un punto existente, el primer paso es seleccionarlo de
la lista. Seguidamente, pueden introducirse los nuevos valores elctricos (externos)
y fsicos (internos) el punto. Se almacenan los valores como valores de coma
flotante de simple precisin. Cuando ambos valores estn introducidos, pulsar el
botn "Almacenar" para actualizar el punto en la tabla.
Eliminacin de un punto
Para eliminar un punto existente, seleccionarlo de la lista y pulsar el botn
"Eliminar". No debe olvidarse que se tienen que introducir al menos dos puntos
para definir una tabla.
A.12.3
Normas y lmites
Se tiene que cumplir con las siguientes normas a la hora de definir una tabla de
conversin. La tabla puede utilizarse para convertir variables analgicas tanto de
entrada como de salida:
No se pueden definir dos puntos con el mismo valor elctrico.
La curva tiene que crecer o decrecer continuamente.
107
108
A.13.1
Comandos principales
El men "Fichero" contiene los comandos necesarios para la comprobacin de
sintaxis de programa y la generacin de cdigo.
Hacer doble click sobre el mensaje de error para abrir el programa y posicionar el
cursor sobre el error.
109
utilizar para producir un listado completo de todos los errores que queden en los
programas del proyecto. Para abortar este comando, pulsar el botn ESCAPE.
A.13.2
Seleccin de objetos
La ventana superior muestra la lista de cdigos destino que se puede producir. Se
utiliza el signo ">>" para indicar el(los) objeto(s) seleccionado(s). El Generador de
Cdigo ISaGRAF puede producir hasta 3 cdigos diferentes con la misma
operacin de compilacin. Utilizar los botones "Seleccionar" y "Deseleccionar"
para determinar la lista de cdigos objeto que se requiera, de acuerdo con el
hardware objeto. A continuacin se relacionan los objetos ISaGRAF estndares:
SIMULATE: ........ Este cdigo est dedicado al Simulador del banco de trabajo
ISaGRAF. No se puede ejecutar el simulador si previamente no
se ha seleccionado este destino para generar el cdigo de
aplicacin.
ISA86M: ............. Este es un cdigo TIC (Target Independent Code), dedicado a los
kernels ISaGRAF instalados en procesadores basados en
tecnologa Intel. El tipo de procesador slo tiene que ver con el
orden de bytes en el cdigo generado.
ISA68M: ............. Este es un cdigo TIC (Target Independent Code), dedicado a los
kernels ISaGRAF instalados en procesadores basados en
tecnologa Motorola. El tipo de procesador slo tiene que ver con
el orden de bytes en el cdigo generado.
SCC:................... Si se selecciona este destino el compilador ISaGRAF produce
cdigo fuente en lenguaje C estructurado que se compila y se
enlaza con las bibliotecas kernel objeto de ISaGRAF para
producir un cdigo ejecutable incrustado.
110
Procesamiento SFC
Seleccionar la casilla titulada "Usar mquina SFC incrustada" para permitir el uso
del motor SFC de ISaGRAF. Este debe ser el modo preferido ya que permite un
mayor rendimiento en trminos de tiempo de proceso. Sin embargo, puede que
no se disponga del motor objeto en determinadas implementaciones del objeto
ISaGRAF, como sucede ms habitualmente en los objetos personalizados basados
en el post-procesamiento de cdigo ISaGRAF. En tal caso, quizs se tenga que
deseleccionar esta opcin y dejar que el compilador ISaGRAF traduzca los
diagramas SFC a instrucciones de bajo nivel. Para mayor informacin sobre la
utilizacin de esta opcin, vase la documentacin de hardware.
111
112
A.13.3
A.13.4
Visualizacin de informacin
El men "Edicin" contiene los comandos necesarios para visualizar los diferentes
ficheros de texto que se crean durante las operaciones de generacin de cdigo o
comprobacin de sintaxis en la ventana de generacin de cdigo. La ventana de
generacin de cdigo es un rea de texto que contiene mensajes durante las
operaciones de generacin de cdigo o comprobacin de sintaxis. Se almacena
toda la informacin en el disco para su posterior consulta por medio de los
comandos del men "Edicin".
A.13.5
Definicin de recursos
El comando "Recursos" del men "Opciones" le permite al usuario definir recursos.
Un recurso es cualquier dato definido por el usuario (configuracin de red,
configuracin de hardware, etc.), en cualquier formato (fichero, lista de valores), que
tenga que fusionarse con el cdigo generado para su transmisin al PLC objeto. El
kernel ISaGRAF no acta directamente sobre este tipo de datos, que generalmente
113
estn dedicados a otro software instalado en el PLC objeto. Para mayor informacin
sobre la disponibilidad de recursos, vase el manual del hardware.
114
115
Errores en el diccionario
El comando "Edicin / Errores de diccionario" muestra, en una ventana de
dilogo, la lista de errores detectados cuando se carg el diccionario del proyecto.
Estadstica
El comando "Herramientas / Estadsticas" muestra, en una ventana de dilogo, el
nmero de objetos y variables que fueron declarados en el proyecto, en funcin de
los tipos y atributos de las variables. Este comando tambin se puede utilizar para
averiguar el nmero de variables de E/S que fueron declarados en el proyecto, con
la finalidad de asegurar que se puede compilar en el caso de que utilice una versin
limitada del banco de trabajo ISaGRAF.
Apertura de programas
La lista de la derecha contiene las incidencias del objeto seleccionado en los
ficheros fuente y la conexin E/S del programa abierto. El comando "Edicin / Abrir
programa" le permite al usuario abrir un programa directamente en el lugar en el
que aparece el objeto. Tambin existe la posibilidad de hacer doble clic con el ratn
sobre la ocurrencia (en la lista de ocurrencias) para abrir el programa
correspondiente.
116
A.15.1
117
A.15.2
Control de la aplicacin
Los mens "Fichero" y "Control" contienen todos los comandos necesarios para la
instalacin y el control de la aplicacin ISaGRAF actual en el sistema ISaGRAF
objeto.
No se dispone de algunos de estos comandos durante la simulacin, ya
Nota:
que el banco de trabajo ISaGRAF instala automticamente la aplicacin que est
siendo procesada por el simulador.
118
Carga de la aplicacin
Se utiliza el comando "Fichero / Cargar" para efectuar la carga del cdigo de
aplicacin en el sistema objeto. Seleccionar el tipo de cdigo que se va a cargar, de
acuerdo con el procesador del sistema objeto y las opciones de la aplicacin.
Modificacin en lnea
El comando "Fichero / Actualizar aplicacin" le permite al usuario llevar a cabo la
modificacin en lnea de la aplicacin 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 simulacin.
Ejecutar un ciclo
Cuando el sistema objeto est en modo ciclo a ciclo, el comando "Control /
Ejecutar un ciclo" provoca la ejecucin de un ciclo.
119
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
nmeros enteros expresados en milisegundos.
A.15.3
Opciones
El men "Opciones" contiene todas las opciones necesarias para controlar la
informacin mostrada en la ventana del depurador.
Parmetros de comunicacin
Se pueden ajustar los parmetros de tiempos de comunicacin cuando el depurador
est activo. Slo se puede configurar el tiempo de espera de comunicacin desde
aqu. Los dems parmetros de comunicacin (baudios, paridad, etc.) se configuran
desde el men "Depuracin" de la ventana del Gestor de Programas.
El "Tiempo permitido de comunicacin" es el tiempo que queda para que el
sistema objeto comience a contestar a una peticin del banco de trabajo. La
"Duracin del refresco de ciclo" es el periodo de tiempo que se requiere para que
el depurador enve 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 nmeros enteros,
expresados en milisegundos. No se puede configurar los parmetros de tiempo de
comunicacin cuando el depurador se utiliza en modo simulacin.
Opciones de visualizacin
La opcin "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 opcin, se muestran y se refrescan todos los componentes de
120
A.15.4
Comandos "Escritura"
El depurador simblico de ISaGRAF posee numerosos comandos para cambiar el
valor o estado de los componentes de una aplicacin. Seleccionar el componente
que se desea cambiar haciendo doble click sobre su nombre o dibujo en una
ventana de edicin, cuando se abre la ventana del depurador.
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
Conexin de E/S
Se ofrecen los siguientes comandos en la ventana de dilogo del depurador:
Introducir un nuevo valor para la variable
Bloquear la variable (slo variables de E/S)
Desbloquear la variable (slo variables de E/S bloqueadas)
Iniciar o parar una variable temporizador (establecer modo de refresco
automtico)
Los valores simblicos que se utilizan para representar los valores booleanos
FALSO y VERDADERO son las cadenas que se han definido para esa variable
especfica en el diccionario. El valor analgico que se especifica para un comando
"Escritura" se tiene que introducir en formato de valores enteros o reales, segn la
definicin 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.
121
Objetos SFC
Para observar una operacin de control sobre un programa SFC mientras se
depura la aplicacin, 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
colocacin de una marca SFC en cada uno de sus
pasos iniciales.
Matar programa SFC: ..............Deshabilita el programa seleccionado mediante la
eliminacin de todas las marcas existentes.
Congelar programa SFC: ........Elimina todas las marcas existentes en el programa
seleccionado y memoriza su posicin.
Continuar programa SFC:.......Reinicia un programa congelado mediante la
colocacin 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 programacin.
Para visualizar una operacin de control en un paso SFC mientras se depura la
aplicacin, hacer doble click sobre su representacin grfica en la ventana de
edicin SFC. Se dispone de los siguientes comandos en la ventana de dilogo del
depurador:
Establecer breakpoint en la activacin del paso
Establecer breakpoint en la desactivacin del paso
Eliminar un breakpoint que se haya aadido al paso
Nota:
Para visualizar una operacin de control en una transicin SFC mientras se depura
la aplicacin, hacer doble click sobre su representacin grfica en la ventana de
edicin SFC. Se dispone de los siguientes comandos en la ventana de dilogo del
depurador:
Establecer un breakpoint al franquear la transicin
Eliminar un breakpoint que se haya aadido a la transicin
Franquear la transicin manualmente (mover o aadir marcas)
Franqueo condicional: se coloca una marca en los pasos que siguen a la
transicin. Se eliminan las marcas que existan en los pasos precedentes.
Franqueo incondicional: se coloca una marca en los pasos que siguen a la
transicin. No se eliminan las marcas que existan en los pasos precedentes.
A.15.5
122
123
A.15.6
Modificacin en lnea
La funcin de modificacin en lnea le permite al usuario modificar la aplicacin
mientras se ejecuta el proceso. A veces resulta necesario para los procesos
qumicos, donde cualquier interrupcin puede resultar perjudicial para la produccin
o la seguridad. Se debe utilizar esta funcin con mucho cuidado. ISaGRAF podra
ser incapaz de detectar todos los posibles conflictos provocados por operaciones
definidas por el usuario, como resultado de estos cambios en lnea.
Secuencias de cdigo
Teniendo en cuenta que ISaGRAF ofrece muchas posibilidades de acceso a
variables, programas o tarjetas de E/S desde el depurador, la funcin de
modificacin en lnea que se describe aqu slo es aplicable a la modificacin de
secuencias de cdigo. Una secuencia de cdigo 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 cdigo es la lista entera de
instrucciones escritas en el programa. En un programa SFC, una secuencia de
cdigo es la programacin de Nivel 2 de un paso o una transicin. La modificacin
en lnea consiste en sustituir uno o ms secuencias de cdigo, sin interrumpir el
ciclo de ejecucin del PLC. Ya que el control de las marcas SFC es altamente
crtico, no se puede modificar una estructura SFC, aadir, renumerar o eliminar
un paso, una transicin o un programa SFC.
Variables
La base de datos de variables es una parte muy crtica de la aplicacin, por lo que
otros procesos (en PLCs de multitarea) pueden acceder a ella en cualquier
momento. Tambin existe la posibilidad de modificar valores de variables desde el
depurador. Por lo tanto, ISaGRAF no permite al usuario aadir, renombrar o
eliminar una variable en lnea. Sin embargo, s es posible modificar la forma en la
que se utiliza una variable en la aplicacin. Existe asimismo la posibilidad de
124
;
;
;
;
para
para
para
para
booleanas
enteros y reales
temporizadores
mensajes
125
Entradas y salidas
El sistema de E/S de ISaGRAF es muy abierto, por lo que las modificaciones
necesarias debern estar implementadas por los OEM, utilizando funciones
especficas del hardware correspondiente. El sistema ISaGRAF no permite al
usuario aadir, conectar o eliminar una variable de E/S, o modificar la
descripcin de una tarjeta de E/S en lnea. Se dispone de operaciones como la
modificacin de los parmetros de una tarjeta y el bloqueo de los canales de E/S
por medio de las funciones OEM estndares y la funcin "OPERATE".
Requisitos de memoria
Para poder soportar la capacidad de modificacin en lnea; el PLC objeto tiene
que tener suficiente memoria libre para poder guardar la versin modificada del
cdigo de aplicacin. Se tienen que guardar ambas versiones del cdigo de
aplicacin en la memoria del PLC durante la operacin de cambio.
Limitaciones
Como ya se dijo, slo se permiten las modificaciones de las secuencias de cdigo.
No se pueden modificar las definiciones de variables, parmetros de aplicaciones y
conexiones de E/S. Cuando se realiza la carga de una versin modificada de la
aplicacin, ISaGRAF lleva a cabo una comparacin entre la aplicacin 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
comparacin del valor de comprobacin de la tabla de smbolos, 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 activacin de pasos. Las acciones
que se ejecutan en el momento de desactivacin del paso son aquellas que
126
Operaciones
Para actualizar el cdigo de una aplicacin activa, se tienen que realizar las
siguientes operaciones:
Antes de efectuar cambio alguno en una aplicacin activa, es muy recomendable
la realizacin 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
opcin "actualizar diario" de las herramientas de edicin, para facilitar el
mantenimiento del programa en el futuro.
Cuando se modifican una o ms secuencias (sin modificar las estructuras y
jerarqua de programa SFC), se debe generar el cdigo de la aplicacin 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 operacin que permita que la aplicacin 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 aplicacin, 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 aplicacin modificada mediante la seleccin de la
opcin "actualizar despus". Esto puede suponer una pequea ralentizacin del
PLC durante la transferencia.
Cuando se complete la carga, el usuario puede ejecutar el comando "Fichero /
Realizar actualizacin" para habilitar el cambio en el momento ms oportuno. El
cambio tendr una duracin de 1 2 ciclos.
Si el cambio se ha llevado a cabo correctamente, se muestran los programas de la
aplicacin modificada que est activa. En caso contrario, la aplicacin activa
existente permanece como estaba.
A.15.7
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 visualizacin dinmica del valor actual de las variables en aplicaciones
ajenas a ISaGRAF.
El servidor DDE del depurador ISaGRAF slo soporta transacciones del tipo
"advise" y "poke". Slo se puede utilizar la transaccin "request" para variables que
ya hayan sido espiadas en un bucle de aviso. Otros servicios DDE, como "execute",
no estn disponibles. Cuando se establece un bucle de aviso en una variable, el
valor de esta variable se actualiza en la aplicacin cliente cada vez que cambia. Se
127
128
129
Vista hexadecimal
En cualquier instante se puede conmutar entre el modo lista y la vista
"Hexadecimal". Pulsar el botn de "zoom" en la barra de herramientas o usar el
comando "Opciones / Hexadecimal" para conmutar el modo de vista.
En el modo "Hexadecimal", slo se muestra el valor de una variable. Su valor se
muestra en formato numrico/simblico en la parte de arriba de la ventana, y se ve
tambin en formato binario. Este modo permite espiar el valor hexadecimal de cada
byte en el del valor de la variable.
El modo hexadecimal es muy til para espiar y comprender mensajes que contienen
caracteres no imprimibles.
130
131
A.18 Spotlight
La herramienta SpotLight de ISaGRAF permite definir al usuario listas de
observacin (watch) que pueden ser presentadas bien como dibujos grficos o
como listas durante la depuracin. Los items grficos deben estar enlazados a
variables del proyecto ISaGRAF. El dibujo grfico se define y anima en lnea.
Para forzar el valor de una variable, hacer doble click en el tem correspondiente de
la composicin grfica o lista, o pulse INTRO cuando est seleccionado.
Se puede tambin bloquear el documento (denegar cualquier modificacin)
utilizando el comando "Fichero / Bloquear". Cuando un documento este
bloqueado, se pueden forzar variables haciendo doble click sobre su smbolo.
A.18.1
Dibujos de fondo
Los dibujos de fondo son ficheros "bitmap" (.BMP) o metafile (.WMF). El nmero
de dibujos incluidos en la composicin grfica no est limitado. Los dibujos se
pueden mover o redimensionar en la composicin grfica. No aparecen en la
composicin de lista. Los dibujos se construyen con otras herramientas. SpotLight
no incluye una herramienta de dibujo. El comando "Opciones / Color de fondo" se
utiliza para seleccionar un color slido para el espacio vaco en una composicin
grfica.
Los bitmaps consumen una elevada cantidad de memoria. Es altamente
Nota:
recomendable dimensionar correctamente el dibujo, y limitar el espacio no utilizado
dentro del rectngulo del bitmap.
132
Curvas
Es posible insertar una curva en un documento. Una curva muestra la historia de la
variable asociada. Aunque no es una herramienta de medida precisa, s puede dar
una informacin de depuracin sobre la sincronizacin entre varias variables.
Una curva almacena los 200 ltimos valores de la variable. El nmero de muestras
no cambia cuando se redimensiona el tem curva en la composicin grfica.
Iconos booleanos
Un tem Icono booleano se utiliza para presentar un estado binario. Se define un
fichero icono (.ICO) para FALSO o valor 0. Se define otro icono para el resto de los
valores distinto a cero. Como SpotLight no incluye un editor de iconos, los ficheros
de iconos deben ser preparados con otra herramienta.
133
Campos de bits
Un tem campo de bits muestra en un panel grfico los 32 bits de un valor entero.
El bit menos significativo siempre se presenta a la derecha. No se recomienda el
uso de campo de bits para otro tipo de datos como valores analgicos reales, ya
que la informacin presentada puede inducir a confusiones.
134
A.18.2
Composicin de lista
Pulsando este botn, se puede cambiar en cualquier momento entre composicin
grfica y lista. Tambin se puede utilizar el comando Opciones / Distribucin de
listas / grficos.
En la composicin de lista, los items se muestran en un listado clsico (list box). El
tamao de cada tem se calcula de acuerdo a su estilo grfico. Los dibujos (bitmaps
y metafiles) no son visibles desde la composicin de lista. Existe una funcin de
seleccin en la composicin de lista, que deber ser utilizada para definir el estilo
de un tem o para cambiar el valor de una variable. En este modo no estn
disponibles selecciones y comandos mltiples
Los items de la lista se pueden reordenar usando los comandos Edicin / Subir /
Bajar en la lista. Se deber seleccionar el tem a mover en la lista.
A.18.3
135
A.18.4
136
A.18.5
137
A.19.1
Descargando de un proyecto
La ventana de dilogo Descargar proyecto se ejecuta desde el comando
Ficheros del Gestor de Proyectos ISaGRAF. La descarga no hace referencia a un
proyecto existente en el Banco de trabajo. El proyecto seleccionado actualmente en
la lista de gestin de proyectos no est relacionado con el mecanismo de descarga.
Para descargar la aplicacin ejecutndose en el objeto se debe:
1- asegurarse de que el objeto est conectado adecuadamente
2- configurar los parmetros de comunicacin de acuerdo con el enlace de conexin
3- presionar el botn Ejecutar
La descarga de la fuente comprimida incrustada (EZS) y posterior descompresin
puede llevar varios segundos. Los mensaje en la caja de dilogo le informarn
cuando la descarga se completa, o en caso de error.
El nombre que se utiliza para crear el proyecto ISaGRAF es el que se ha ledo por
comunicacin en el objeto. Si este nombre ya est usado por un proyecto existente
en el banco de trabajo, se preguntar si se sobrescribe o se selecciona un nombre
no utilizado. Cuando la descarga se ha completado, no se puede cancelar el
registro de las fuentes cargadas. El proyecto cargado est ahora disponible y puede
ser abierto.
Errores posibles
Pueden ocurrir los siguientes errores cuando se descarga un proyecto. Se informa
del error en la ventana de dilogo Descarga.
- no se puede establecer comunicacin con el objeto
- el objeto conectado es un sistema ISaGRAF anterior a la versin 3.22
- no hay aplicacin corriendo en el objeto
- no hay EZS incrustado en el objeto
138
A.19.2
Parmetros de comunicacin
Pulsando el botn Configurar permite al usuario definir los parmetros del enlace
utilizados para comunicacin en la descarga entre el banco de trabajo ISaGRAF y el
sistema ISaGRAF objeto. Se debe asegurar que los parmetros configurados
coincidan con los del objeto conectado antes de activar la descarga.
A.19.3
Ficheros opcionales
Adicionalmente al mnimo cdigo fuente requerido, se pueden incrustar los
siguientes ficheros. Son opciones, ya que su seleccin implica requerimientos de
memoria extras en el objeto.
Descriptor de proyecto
Si no esta incrustado el descriptor de proyecto, despus de la descarga ste
indicar solo la fecha de la descarga.
Proteccin con contrasea
La funcin de descarga no est protegida por una contrasea. Si se quiere tener el
proyecto descargado protegido, se debe incrustar su sistema de proteccin por
contrasea con el cdigo fuente.
Comentarios para canales E/S no conectados
ISaGRAF da la posibilidad de introducir descripciones de texto para canales E/S no
conectados. No seleccione esta opcin si se trabaja solo con E/S conectadas.
Histrico de modificaciones
Esta es la historia global de modificaciones del proyecto.
Ficheros de diario
139
A.19.4
A.19.5
A.19.6
140
A.19.7
Aspectos de compatibilidad
La descarga est soportada por objeto y banco de trabajo ISaGRAF versin 3.22 y
posteriores. Se han realizado extensiones al protocolo de comunicaciones para
soportar la descarga.
No existe restriccin en la incrustacin de cdigo fuente comprimido (EZS) en un
objeto basado en sistemas ISaGRAF de las versiones 3.03 a la 3.21, ya que EZS se
almacena en el cdigo de la aplicacin como los recursos estndar. Sin embargo la
informacin incrustada no puede ser descargada en este caso ya que el objeto no
soporta los servicios de comunicacin requeridos.
141
142
A.21.1
A.21.2
Simulacin de E/S
Las tarjetas de E/S aparecen en la ventana de simulacin, tituladas por su nombre y
nmero de ranura. Se soporta cualquiera de los tipos estndares ISaGRAF de E/S
(booleanas, analgicas 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 grficos de estado y campos de datos.
Entradas booleanas: Las entradas booleanas estn representadas por botones
cuadrados de color verde. Se muestra el nmero del canal con el botn de E/S. El
valor de entrada es VERDADERO cuando se pulsa el botn. Al hacer click sobre el
botn, se cambia el valor de E/S correspondiente. Unicamente cuando est pulsado
el botn de entrada, se puede utilizar el botn derecho del ratn para configurar la
entrada.
Salidas booleanas: Las salidas booleanas estn representadas por crculos
pequeos. Se muestra el nmero del canal con la E/S. El valor de salida es
VERDADERO cuando est resaltado el smbolo grfico.
143
A.21.3
Componentes de la biblioteca
El simulador ISaGRAF soporta todas las conversiones, funciones y bloques de
funcin estndares proporcionadas por ICS Triplex ISaGRAF. Se soportan los
siguientes objetos:
Funciones de conversin:
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 funcin:
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 funcin C
definidos por el usuario no estn integrados en el Simulador ISaGRAF.
Normalmente, estos objetos estn diseados 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 estndar
para cualquier conversin, funcin o bloque de funcin definido por el usuario:
- Cuando el simulador procesa una nueva conversin, la sustituye por una
conversin nula. Esto significa que el valor fsico de las variables analgicas es
144
A.21.4
Opciones
Los comandos del men "Opciones" le permiten al usuario controlar la
representacin de E/S en el panel del simulador. El usuario puede establecer o
eliminar estas opciones en cualquier momento de la depuracin.
Si se selecciona la opcin "Presentacin 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 lquido, el usuario deber deseleccionar
esta opcin para utilizar grficos de entrada y salida en blanco y negro puro para los
canales de E/S.
Al seleccionar la opcin "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 opcin, el usuario puede reducir el tamao del panel
de simulacin.
Cuando se selecciona la opcin "Valores hexadecimales", los canales
analgicos de entrada y salida se muestran y se introducen en formato
hexadecimal.
Al seleccionar la opcin "Siempre arriba", la ventana del simulador est
siempre visible, incluso si el foco de entrada est en otra ventana.
A.21.5
145
A.21.6
El perfil de ciclo
El perfil de ciclo de ISaGRAF es una potente herramienta de diagnstico que
muestra como se distribuye el tiempo de ciclo entre varios programas, funciones y
bloques de funcin de una aplicacin. Esta herramienta es muy til para tener un
diagnstico rpido en la ejecucin de la aplicacin y lleva el programador a las
partes del cdigo que pueden necesitar optimizaciones.
El perfil de ciclo se ejecuta mediante el comando "Herramientas / Perfil de ciclo"
en los mens de la ventana del simulador de ISaGRAF. Muestra para cada
programa, funcin o bloque de funcin el porcentaje de tiempo de ciclo empleado
en su ejecucin.
146
A.21.7
147
Nuevo
Abrir
Guardar
Guardar como
de
simulacin
148
asignacin
149
A.22.1
150
151
Notas tcnicas
El comando "Edicin / Nota tcnica" permite al usuario introducir las notas
tcnicas relativas al elemento que est seleccionado en la biblioteca activa. Se
introducen las notas tcnicas con el editor de textos ISaGRAF. Las notas tcnicas
de un elemento son la gua del usuario y sern consultadas por el usuario del
elemento durante su integracin en un proyecto ISaGRAF. Las notas tcnicas sobre
cmo utilizar el elemento deben contener la descripcin de sus funciones
principales y una explicacin detallada de su interfase de programacin y
parmetros, as como de su contexto y sus lmites.
El comando "Herramientas / Formato estndar de nota " le permite al usuario
definir un formato estndar de texto para todos los elementos de la biblioteca
seleccionada. Cuando se editan las notas tcnicas para un elemento nuevo, se
utiliza este formato como marco principal. Esto permite al usuario la optimizacin de
sus tareas de edicin de notas tcnicas.
Parmetros
Los parmetros de un elemento describen la interfase que existe entre las
operaciones de cmputo que proporciona el elemento y el uso del elemento en una
aplicacin ISaGRAF. Los parmetros tienen un significado diferente para cada tipo
de elemento de biblioteca.
Los parmetros de una configuracin de E/S definen el conjunto completo de
tarjetas de E/S de la configuracin y los nombres de variables por defecto que se
utilizan para los canales de E/S. Los parmetros de una tarjeta de E/S o un equipo
complejo definen la configuracin fsica y lgica de la tarjeta. Los parmetros de
una funcin o un bloque de funcin definen la interfase del elemento, de acuerdo
con las convenciones de llamada del lenguaje ST. No existen parmetros para una
funcin de conversin, ya que utiliza una interfase estndar predefinida.
Cdigo fuente C
El banco de trabajo ISaGRAF permite al programador gestionar el cdigo fuente de
una conversin, funcin o bloque de funcin procedente de la biblioteca. El cdigo
fuente de una funcin o de un bloque de funcin escrito en un lenguaje IEC es un
texto o un diagrama descrito en el lenguaje asociado a la funcin. El cdigo fuente
de los componentes C (funciones C, bloques de funcin C y funciones de
conversin) se dividen en dos ficheros independientes: una cabecera de fuente C
que contiene la definicin exacta de la interfase, de acuerdo con la definicin de
parmetros del elemento, y un fichero de cdigo fuente C que contiene la
implementacin operativa del elemento.
El banco de trabajo ISaGRAF genera el fichero de cdigo fuente cuando se crea un
nuevo elemento de biblioteca. Tambin crea y actualiza la cabecera de fuente,
basado en la definicin de los parmetros. El programador puede utilizar el editor de
textos ISaGRAF para completar el fichero de cdigo fuente.
152
gestor de archivos muestra la lista de elementos para una nica biblioteca al mismo
tiempo.
Tambin puede recuperar bibliotecas de terceros que contienen funciones IEC
61131 o bloques de funciones. Al recuperar dichas bibliotecas, se deben extraer de
sus archivos respectivos y, a continuacin activar la licencia para que se puedan
usar. Los archivos para bibliotecas de funciones tienen la extensin .iia, mientras
que los archivos para bibliotecas de bloques de funciones tienen la extensin .aia.
Se inicia la obtencin de licencia para estas bibliotecas desde el Administrador de
bibliotecas y luego se completa el proceso en el Administrador de licencias. Antes
de recuperar las bibliotecas de terceros, asegrese de copiar los archivos
correspondientes de dichas bibliotecas en el disco.
Para restaurar una biblioteca de terceros
1.
2.
3.
4.
A.22.2
Configuracin de E/S
La biblioteca ISaGRAF de configuracin de E/S proporciona una forma sencilla de
inicializar los nuevos proyectos ISaGRAF con una configuracin de E/S predefinida.
Una configuracin de E/S define:
un conjunto de tarjetas de E/S
los valores por defecto de los parmetros de las tarjetas de E/S
los nombres por defecto de los canales de E/S
Cuando se crea un nuevo proyecto ISaGRAF con una configuracin de E/S
procedente de la biblioteca, se establece automticamente la conexin de E/S
153
A.22.3
154
A.22.4
Tarjetas de E/S
La biblioteca ISaGRAF de tarjetas de E/S define una interfase estndar entre las
variables de una aplicacin y el hardware objeto. Durante la descripcin de la
aplicacin, se conectan todas las variables de E/S a los canales de las tarjetas
objeto de E/S. Se definen las tarjetas ISaGRAF de E/S con un nombre y una clave
OEM que identifica al proveedor. Existen otros parmetros que describen la
topologa de la tarjeta de E/S (nmero de canales, direccin y tipo de canal) y su
configuracin hardware y software.
Parmetros OEM
Se introducen los parmetros OEM en la parte inferior de la ventana de definicin
de los parmetros de la tarjeta de E/S. Estos parmetros estn definidos por el
proveedor de la tarjeta de E/S y son especficos para sta. Una tarjeta puede tener
un mximo de 16 parmetros OEM, aunque tambin existe la posibilidad de que no
tenga ninguno. El Gestor de Bibliotecas ISaGRAF le permite al proveedor que
defina la identificacin y el formato de cada parmetro, as como la manera en la
que el programador de automatizacin debe introducirlo.
155
156
A.22.5
Compilacin
Las funciones y los bloques de funcin que estn definidos en la biblioteca tienen
que ser compilados (verificados) antes de que puedan ser utilizados en un proyecto
ISaGRAF. No hay que realizar ms cambios a nivel de biblioteca en relacin a
funciones y bloques de funcin. Los elementos de la biblioteca aparecern
automticamente en el men de seleccin cuando se utiliza el editor de grficos
LD/FBD en un proyecto.
Las funciones definidas en la biblioteca pueden invocar a otras funciones de la
biblioteca. Sin embargo, el sistema ISaGRAF no soporta la recursividad en la
invocacin de funciones. Un bloque de funcin escrito en lenguaje IEC no puede
invocar a otros bloques de funcin (ni en lenguaje IEC ni en lenguaje C).
157
Definicin de la interface
Las funciones y los bloques de funcin pueden poseer hasta 32 parmetros (de
entrada o salida). Una funcin siempre tiene un nico parmetro de retorno, que
debe tener el mismo nombre que la funcin para cumplir con las normas de
escritura del lenguaje ST.
La lista que aparece en la parte superior izquierda de la ventana muestra los
parmetros, ordenados de acuerdo con el modelo de invocacin: los parmetros de
llamada en primer lugar y los de retorno en el ltimo lugar. La parte inferior de la
ventana muestra una descripcin detallada del parmetro que est seleccionado en
la lista. Se puede utilizar cualquiera de los tipos de datos ISaGRAF para un
parmetro. Los parmetros de retorno tienen que estar ubicados despus de los de
llamada, dentro de la lista. Los nombres de los parmetros tienen que cumplir con
las siguientes normas:
la longitud mxima de un nombre es de 16 caracteres
el primer carcter tiene que ser una letra
los restantes caracteres tienen que ser letras, dgitos o el carcter de subrayado
_
los nombres son insensibles al uso de maysculas o minsculas
Se utiliza el comando "Insertar" para insertar un parmetro nuevo delante del
parmetro seleccionado. Se utiliza el comando "Borrar" para borrar el parmetro
seleccionado. El comando "Ordenar" reordena (clasifica) los parmetros de forma
automtica, colocando los parmetros de retorno al final de la lista.
A.22.6
158
BOOLEANO
unsigned long
ANALOGICO
REAL
TEMPORIZADOR
long
float
unsigned long
MENSAJE
char *
A.22.7
Funciones de conversin
Una funcin de conversin es una funcin C que invoca el Gestor de E/S de
ISaGRAF cada vez que se da de entrada al, o salida del, proyecto a las variables
analgicas que utilizan esta conversin.
La funcin crea la relacin entre el valor elctrico de la variable (el valor ledo por
el sensor de entradas o enviado al dispositivo de salida) y su valor fsico (el valor
utilizado en las sentencias de la aplicacin). La funcin se divide, por tanto, en dos
partes: la conversin de entradas y la conversin de salidas. El Gestor de
Bibliotecas de ISaGRAF le permite al usuario controlar el cdigo fuente en C de
una funcin de conversin.
Se puede utilizar la funcin de conversin para las variables analgicas enteras o
reales. Esto implica que la interfase de la funcin de conversin siempre est
definida por valores flotantes. La interfase es siempre la misma para cualquier
funcin de conversin. Se realiza la definicin en C de esta interfase en el fichero
de definicin "TACN0DEF.H".
Para mayor informacin sobre la manera de gestionar el cdigo fuente en C de
una funcin de conversin y de cmo integrar un elemento nuevo en el sistema
objeto de ISaGRAF, vase la Gua de Usuario de Objeto ISaGRAF.
159
A.23.1
Proyectos
Siempre se guardan los proyectos en su forma ntegra. Se guardan todos los
componentes del proyecto (ficheros fuente de programas, cdigo objeto y cdigo
ejecutable de aplicaciones) en el mismo fichero de archivo. Seleccionar la opcin
"Comprimir" para reducir el tamao del archivo de proyecto.
Elementos de biblioteca
Se pueden guardar individualmente los elementos de las bibliotecas ISaGRAF. Se
guardan todos los componentes de un elemento de biblioteca (notas tcnicas,
definicin, interfase, cdigo fuente, etc.) en el mismo fichero de archivo.
Datos comunes
El comando "Herramienta / Archivo / Datos comunes" de la ventana del
administrador de proyectos permite al usuario realizar copias de seguridad o
restaurar los datos de rango comn que existan en el banco de trabajo ISaGRAF.
Este comando no acta sobre las bibliotecas ISaGRAF. Se pueden copiar los
siguientes ficheros con este comando:
common.eqv ...... palabras definidas comunes
160
A.23.2
Opciones
La ruta que se usa para los archivos de ISaGRAF se despliega en la parte de abajo
de la ventana de dilogo. Se pulsa el botn "Explorar" para ver los discos y
seleccionar otro disco de archivo y directorio.
A.23.3
Copias de seguridad
Para archivar un objeto, se selecciona el objeto en la lista de la izquierda (objetos
pertenecientes al banco de trabajo ISaGRAF) y se pulsa el botn "Archivar". Se
puede seleccionar ms de un objeto de la lista. Se deshabilita el botn "Archivar" al
seleccionar un elemento de la lista de la derecha (modo restaurar).
Operacin de restaurar
Para copiar un objeto del archivo al banco de trabajo ISaGRAF, se selecciona el
objeto en la lista de la derecha (objetos del archivo) y se pulsa el botn
161
A.23.4
Ficheros de archivo
El Gestor de Archivos ISaGRAF crea un nico fichero de archivo para cada objeto
guardado. El fichero de archivo tiene el mismo nombre que el objeto. La extensin
del fichero indica su tipo. Se utilizan las siguientes extensiones:
.pia ........... proyecto
.bia ........... tarjeta de E/S
.iia ........... funcin en lenguaje IEC
.aia ........... bloque de funcin en lenguaje IEC
.uia ........... funcin C
.fia ........... bloque de funcin C
.cia ........... funcin de conversin C
.ria ........... configuracin de E/S
.xia ........... equipo de E/S
162
A.24.1
163
Cortar y pegar
Utilicen los comandos "Edicin / Cortar" y "Edicin / Pegar" para desplazan los
items dentro de la lista, y as se pueda personalizar el orden de la tabla. El
Generador de Documentos permite la seleccin mltiple, por lo que se puede cortar
y pegar un grupo de items.
Eliminacin de la tabla
El comando "Edicin / Borrar" restablece la tabla de contenidos para que se pueda
reconstruir por completo mediante la insercin de items individuales.
164
A.24.2
Opciones
Se utilizan los comandos del men "Opciones" para definir y personalizar el
formato del documento generado.
Otras opciones estn disponibles directamente mediante botones de la ventana del
documento generador.
Diagramas SFC
La opcin "Separar niveles SFC" indica al sistema que, para cada programa SFC,
imprima primero el Nivel 1 (diagrama SFC y comentarios) y despus la
programacin de Nivel 2. Si no se selecciona esta opcin, los Niveles 1 y 2
aparecen juntos en la misma impresin.
Formato de pgina
Se utiliza el comando "Formato de pgina" del men "Opciones" para definir los
principales parmetros sobre los cuales acta el Generador de Documentos a la
hora de formatear una pgina. Se pueden especificar los siguientes parmetros:
Margen izquierdo: (1 2 centmetros, o sin margen)
Borde de pgina: cuando se selecciona esta opcin, se dibuja un borde alrededor
de cualquier pgina impresa.
La primera lnea del ttulo principal (con el nombre del proyecto ISaGRAF), la fecha
actual y el nmero de pgina estn generados automticamente por el Gestor de
Documentos y no se pueden cambiar.
165
Las tres lneas de texto situadas en la parte izquierda del cajetn (text1, text2, text3)
y la segunda lnea del ttulo principal estn definidas por el usuario. El usuario
tambin puede cambiar el logotipo que aparece en el extremo izquierdo del cajetn.
Para utilizar otro logotipo, el usuario tiene que especificar la ruta de acceso de un
fichero bitmap (.BMP). Esta imagen puede ser de cualquier tamao. Se estirar o
se encoger en funcin de las dimensiones exactas de la pgina impresa. Al hacer
click sobre el rea del logotipo, dentro de la ventana de dilogo, se muestra la
imagen recin especificada. El fichero de imagen tiene que estar en el disco (en el
directorio y con el nombre de fichero especificados) cuando se ejecute el comando
"Imprimir".
166
Niveles de proteccin
Dentro de un proyecto o elemento de biblioteca, el usuario puede definir hasta 16
niveles de acceso que corresponden a diferentes contraseas. Los niveles de
acceso estn ordenados en un sistema jerrquico y numerados del 0 al 15. El nivel
de acceso ms elevado es el 0. Cuando un usuario conoce una llave, puede
acceder a todos los puntos protegidos en el nivel de acceso correspondiente,
adems de todos aquellos que estn protegidos en niveles inferiores. Se pueden
proteger los comandos y datos elementales de cada proyecto o elemento de
biblioteca individualmente con un nivel de acceso. Por ejemplo, se puede proteger
el comando "Construir el cdigo de la aplicacin" de los mens ISaGRAF de forma
individual. Los datos elementales pueden ser un programa, una lista de opciones,
las notas tcnicas de un elemento de biblioteca, etc...
167
La lista en el rea inferior muestra los diferentes objetos (datos o funciones) que
pueden ser protegidos, y el nivel de proteccin actual dado a cada permiso de
"acceso lectura" o permiso de "acceso total". Asignar un nivel de proteccin para
leer permisos permite impedir que usuarios sin suficiente permiso incluso abran o
impriman un documento.
168
169
A.26.1
A.26.2
170
aplicacin. Una operacin de bloqueo slo es aplicable a una variable (un canal de
E/S) a la vez.
A continuacin se resumen las caractersticas principales de control de E/S:
Herramienta de
seleccin
Definicin
Modo de seleccin
Aplicacin
Atributo virtual
Conexin de la
tarjeta de E/S
Esttico
Tarjeta
Validacin y
pruebas
Comando bloqueo
Depurador
Dinmico
Variable
Mantenimiento
El siguiente diagrama ilustra el flujo de datos de E/S entre las diversas tareas
ISaGRAF:
Disposit.
entrada
BASE DE
DATOS
ENTRADAS
Controlador
E/S
Aplicacin
Kernel de
tiempo de
proceso
BASE DE
DATOS
SALIDAS
Controlador
E/S
Disposit.
salida
Depurador
OEM Usuario
(llave oem usuario)
BASE DE
DATOS
ENTRADAS
Aplicacin
Kernel de
tiempo de
proceso
Disposit.
entrada
No
bloqueado
Depurador
171
Aplicacin
Kernelde tiempo
de proceso
BASE DE
DATOS
SALIDAS
OEM Usuario
(llave oem usuario)
No
bloqueado
Disposit.
salida
Depurador
Aplicacin
Kernel de
tiempo de
proceso
OEM Usuario
(llave oem usuario)
Disposit.
entrada
No
virtual
Depurador
La configuracin 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 estn desconectados. Un controlador virtual de
E/S sustituye al autntico.
A.26.3
172
Contexto
"desconectado"
(antes de la
carga remota)
"desconectado"
(despus de la
carga remota)
Diagnstico
- el objeto no est operativo
- no hay cable / cable no vlido
- parmetros de enlace no vlidos
- objeto ISaGRAF mal instalado
Inicio de
modo ciclo a
ciclo
Inicio de
- configuracin de E/S no vlida
modo tiempo - cada del sistema (debida a la programacin en
C)
real
"sin aplicacin"
- no se ha cargado la aplicacin
- no se ha iniciado la aplicacin (debido a la
programacin en C)
- diferencia Intel/Motorola
- versin de objeto no vlida
OEM Virtual
(llave oem 0)
Aplicacin
Kernel de
tiempo de
proceso
BASE DE
DATOS
SALIDAS
OEM usuario
(llave oem usuario)
Depurador
No
virtual
Disposit.
salida
173
OEMVirtual
(llave oem0)
OEMVirtual
(llave oem0)
BASE DE
DATOS
ENTRADAS
Aplicacin
Kernel de
tiempo de
proceso
BASE DE
DATOS
SALIDAS
No
bloqueado
OEMusuario
(llave oemusuario)
Disposit.
entrada
OEMusuario
(llave oemusuario)
Depurador
No
virtual
No
virtual
Disposit.
salida
No
bloqueado
A.26.4
Directorios ISaGRAF
El banco de trabajo ISaGRAF funciona sobre una estructura dedicada de directorios
de disco. El usuario especifica el directorio raz de esta arquitectura durante la
instalacin de ISaGRAF. EL nombre por defecto del directorio raz de ISaGRAF es
ISAWIN. El programa de instalacin crea la siguiente arquitectura estndar de
disco:
\ISAWIN
APL
COM
CREATION
PROJECT1
PROJECT2
EXE
SRC
DEFS
RELS
LIB
TMP
DEV
OBJS
RELS
DATA
FNC
FBL
IOC
174
DIRECTORIO
CONTENIDO
APL
COM
EXE
LIB
LIB\IOC
LIB\FNC
LIB\FBL
LIB\SRC
LIB\DEFS
LIB\RELS
LIB\DEV
TMP
Los subdirectorios pueden moverse a otras ubicaciones dentro del disco. Cuando el
usuario tiene una arquitectura no estndar, deben declararse las rutas de acceso de
los subdirectorios en la seccin WS001, del fichero de inicializacin ISA.ini, en el
subdirectorio EXE de ISaGRAF. Las entradas de la seccin WS001 son:
Isa
IsaExe
IsaApl
IsaTmp
IsaSrc
IsaDefs
;file c:\ISAWIN\EXE\ISA.ini
[WS001]
Isa=c:\isawin
IsaExe=c:\isawin\exe
IsaApl=c:\isawin\apl
175
IsaTmp=c:\isawin\tmp
IsaSrc=c:\isawin\lib\src
IsaDefs=c:\isawin\lib\defs
Para aadir funciones o bloques de funcin 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 compilacin C y las
bibliotecas C de ISaGRAF que se necesitan para las operaciones de LINK.
A.26.5
Smbolos de aplicacin
Cada objeto de una aplicacin ISaGRAF est referenciado por un nombre (que se
introduce durante la declaracin de variables) y una direccin virtual interna que
calcula el generador de cdigo. La direccin virtual de una variable no es su
direccin de red, introducida durante la declaracin de la variable. Se utilizan las
direcciones variables para las tareas de comunicacin y para aplicaciones
especiales en C, utilizando la opcin de herramienta de desarrollo de E/S.
Cuando se ejecuta el generador de cdigo de ISaGRAF, ste crea un fichero ASCII
con las correspondencias lgicas entre los nombres y las direcciones virtuales de
todos los objetos (variables, programas, pasos, etc.) del proyecto. Se puede
interrogar este fichero fcilmente desde cualquier aplicacin del usuario para
obtener informacin sobre la base de datos esttica 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 seccin
describe en detalle el formato del fichero "APPLI.TST". Se utilizan las notaciones
principales que aparecen a continuacin para las siguientes descripciones:
VA
ATTR
USP
direccin virtual
atributo de una variable
funcin "C"
Los atributos de una variable pueden tener los siguientes valores. Estos valores
aparecen en los campos de "atributos":
+X
+C
+I
+O
variable interna
variable interna slo lectura
variable de entrada
variable de salida
Todos los nmeros, con la excepcin de las direcciones virtuales, estn expresados
como valores decimales enteros. Las direcciones virtuales (VA) estn expresadas
como nmeros hexadecimales de 4 dgitos y estn precedidas por el carcter !.
Por ejemplo:
123
176
!A003
bloque inicial
bloques de
descripcin
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 informacin principal sobre la
aplicacin - es la siguiente:
@ISA_SYMBOLS,<crc_apli>
#NAME,<nombre_apli>,<versin>
#DATE,<fecha_creacin>
#SIZE,G=<nbprg>,S=<nbpaso>,T=<nbtra>,L=0,P=<nbpro>,V=<nbvar>
#COMMENT, ICS Triplex ISaGRAF
crc_apli
nombre_apli
versin
fecha_creacin
nbprg
nbpaso
nbtra
nbpro
nbvar
El ltimo bloque - el que seala el final del fichero - tiene la siguiente estructura:
@END_SYMBOLS
El bloque que se utiliza para describir los programas de la aplicacin tiene la
siguiente estructura:
@PROGRAMS,<nbprg>
#<va>,<nombre>
#...
177
nbprg
va
nombre
El bloque que se utiliza para describir los pasos SFC de la aplicacin tiene la
siguiente estructura. (Obsrvese que se define un paso virtual para cada programa
no SFC):
@STEPS,<nbpasos>
#<va>,<nombre>,<padre>
#...
nbpasos
va
nombre
padre
El bloque que se utiliza para describir las transiciones SFC de la aplicacin tiene la
siguiente estructura:
@TRANSITIONS,<nbtrans>
#<va>,<nombre>,<padre>
#...
nbtrans
va
nombre
padrea
El bloque que se utiliza para describir las variables booleanas de la aplicacin tiene
la siguiente estructura:
@BOOLEANS,<nb_boo>
#<va>,<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>
#...
y si el nmero de variables supera las 4095
X# (1.<numvar>),<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>
nb_boo
va
numvar
nombre
atrib
programa
eq_falso
eq_verdadero
178
El bloque que se utiliza para describir las variables analgicas de la aplicacin tiene
la siguiente estructura:
@ANALOGS,<nb_ana>
#<va>,<nombre>,<atrib>,<programa>,<formato>,<unidad>
#...
y si el nmero de variables supera las 4095
X# (2.<numvar>),<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>
nb_ana
va
numvar
nombre
atrib
programa
formato
unidad
179
X# (4.<numvar>),<nombre>,<atrib>,<programa>,<eq_falso>,<eq_verdadero>
nb_msg
va
numvar
nombre
atrib
programa
max_lon
A.26.6
Para un proyecto:
Objeto
180
Mximo
Observaciones
Programas
255
Niveles en la jerarqua
20
Para nombres:
Nombre de:
Proyecto
Programa
Variable
Etiqueta palabra definida
Equivalencia definida
Tabla de conversin
Lista de variables
Funcin / bloque de funcin
(biblioteca)
Mximo
8 car
8 car
32 car
16 car
255 car
16 car
16 car
8 car
Parmetro de funcin
(biblioteca)
16 car
Tarjeta de E/S
Configuracin de E/S
Parmetro OEM de tarjeta
Funcin de conversin
8 car
8 car
16 car
8 car
Observaciones
aplicable a funciones C,
de funcin C o funciones
en lenguajes IEC
aplicable a funciones C,
de funcin C o funciones
en lenguajes IEC
bloques
escritas
bloques
escritas
Mximo
600
20
4095
Edicin Quick LD
4095
200
col.
2000 filas
sin lmite
Etiquetas IL
Edicin de texto
251
40KBytes
Observaciones
Mximo
Observaciones
181
Variables booleanas
Variables analgicas
Temporizadores
Variables de mensaje
Palabras definidas
Palabras definidas
Tablas de conversin
Puntos de una tabla
65535
65535
65535
65535
4095
255
127
32
de
Conexiones de E/S:
Objeto
Tarjetas de E/S
Mximo
256
Observaciones
definidas para la misma aplicacin
(tarjetas o equipos complejos)
128
en la misma tarjeta
Para bibliotecas:
Objeto
Funciones (lenguaje IEC)
182
Mximo
255
255
Funciones C
255
Bloques de funcin C
255
4095
Observaciones
instaladas juntas en la
biblioteca
instaladas juntas en la
biblioteca
instaladas juntas en la
biblioteca
instaladas juntas en la
biblioteca
para el mismo tipo de bloque
de funcin en la misma
aplicacin
Parmetros
funciones
de
entrada
de
31
32
Funcin de conversin
128
Configuraciones de E/S
255
Tarjetas de E/S
255
255
16
aplicable a funciones C y
funciones escritas en
lenguajes IEC
libremente distribuidos entre
parmetros de entrada y
salida. Se requiere al menos 1
parmetro de salida.
instaladas juntas en la
biblioteca
Instaladas juntas en la
biblioteca
Instaladas juntas en la
biblioteca
Instaladas juntas en la
biblioteca
183
Referencia de lenguajes
B. Referencia de lenguajes
184
Referencia de lenguajes
B.1.1
Programas
Un programa es una unidad de programacin lgica, que describe las operaciones que
tienen lugar entre las variables del proceso. Los programas describen operaciones bien
secuenciales o bien cclicas. Los programas cclicos se ejecutan en cada ciclo del sistema
objeto. La ejecucin de programas secuenciales sigue las reglas dinmicas del lenguaje SFC
o del lenguaje FC
Los programas estn vinculados entre s en un rbol jerrquico. Los programas situados en la
parte superior de la jerarqua los activa el sistema. Los subprogramas (nivel inferior de la
jerarqua) son activados por su padre. Se puede describir un programa mediante cualquiera
de los siguientes lenguajes grficos o literales:
Diagrama de Funciones Secuenciales (SFC) para la programacin de alto nivel
Diagrama de flujo (FC) para la programacin de alto nivel
Diagrama de Bloques de funcin (FBD) para operaciones cclicas complejas
Diagrama de Escalera (Contactos) (LD), slo para operaciones booleanas
Texto Estructurado (ST) para cualquier operacin cclica
Lista de Instrucciones (IL) para operaciones de bajo nivel
El mismo programa no puede mezclar varios lenguajes. Como excepcin, LD y FBD pueden
combinarse en un nico diagrama.
B.1.2
Los programas pertenecientes a las secciones Comienzo o Fin describen las operaciones
cclicas y no son dependientes del tiempo. Los programas pertenecientes a la seccin
Secuencial describen las operaciones secuenciales, donde la variable de tiempo sincroniza
185
Referencia de lenguajes
B.1.3
186
Referencia de lenguajes
B.1.4
Funciones y subprogramas
IL:
187
Referencia de lenguajes
LD
10
ADD 20 (* valor de parmetro de retorno = 30 *)
FBD: fijar el parmetro de retorno utilizando su nombre:
>=1
&
nombre_subprograma
LD: utilizar un smbolo de bucle con el nombre del parmetro de retorno:
nombre_subprograma
B.1.5
Bloques de funcin
Los bloques de funcin pueden utilizar los lenguajes LD, FBD, ST o IL. Los bloques de
funcin son del tipo instanciado, lo que significa que se copian las variables locales de un
bloque de funcin para cada instancia. Cuando se invoca un bloque desde un programa, en
realidad se invoca la instancia del bloque: aunque se invoca el mismo cdigo, los datos que
se utilizan son aquellos que hayan sido asignados a la instancia. Los valores de las variables
de la instancia se almacenan de un ciclo a otro.
(* programacin ST *)
(* FB1 es una instacia declarada
del bloque de funciones SAMPLE *)
FB1(alto, valor, bajo, 1.0);
alarma_alta_alarm := FB1.QH;
alarma_baja := FB1.QL;
cualq_alarma := FB1.Q;
Implementacin
Bloque Funciones
Cdigo
DATOS
INSTANCIA
Advertencias:
- Los bloques de funcin escritos con uno de los lenguajes IEC no pueden invocar a
otros bloques de funcin: el mecanismo de instanciacin solo gestiona las variables
locales del propio bloque. A continuacin se indica una lista de los bloques de
funcin estndares que no pueden utilizarse dentro de un bloque de funcin IEC:
SR, RS, R_Trig, F_Trig, SEMA, CTU, CTD, CTUD, TON, TOF, TP, CMP, StackInt,
AVERAGE, HYSTER, LIM_ALRM, INTEGRAL, DERIVATE, BLINK, SIG_GEN
188
Referencia de lenguajes
Esto s funcionar:
>=
>=1
&
&
>=
1
IntRes
lt
>=
>=1
B.1.6
Lenguaje de descripcin
B.1.7
Reglas de ejecucin
ISaGRAF es un sistema sncrono. Se activan todas las operaciones por medio de un reloj. La
duracin bsica del reloj se denomina el tiempo de ciclo:
189
Referencia de lenguajes
Tiempos de
ciclo :
Programado
Usado
Libre
Las operaciones bsicas que se llevan a cabo durante un ciclo objeto son:
Ciclo objeto
ISaGRAF
z
z
z
z
190
garantizar que una variable de entrada mantendr el mismo valor durante un ciclo,
garantizar que un dispositivo de salida no se actualizar ms de una vez durante un
ciclo,
trabajar de manera segura con la misma variable global, desde diferentes
programas,
cuantificar y controlar los tiempos de respuesta de la aplicacin en su conjunto.
Referencia de lenguajes
B.2.1
Tipos bsicos
B.2.2
Expresiones constantes
Una expresin constante est asociada a un nico tipo. No se puede utilizar la misma
notacin para representar expresiones constantes de diferentes tipos.
B.2.2.1
Las palabras clave Verdadero y Falso son insensibles al uso de maysculas o minsculas.
191
Referencia de lenguajes
B.2.2.2
Las expresiones constantes analgicas representan valores enteros largos (32 bit) y con
signo:
entre -2147483647 y +2147483647
Se pueden expresar las constantes analgicas enteras con una de las siguientes bases. Las
constantes enteras deben empezar por un prefijo que identifique las bases utilizadas:
Base
DECIMAL
HEXADECIMAL
OCTAL
BINARIO
Prefijo
(ninguno)
"16#"
"8#"
"2#"
Ejemplo
-908
16#1A2B3C4D
8#1756402
2#1101_0001_0101_1101
Se puede emplear el carcter de subrayado ('_') para separar grupos de dgitos. No posee
ningn significado particular, y se utiliza para aumentar la legibilidad de las expresiones
constantes.
B.2.2.3
Las expresiones constantes analgicas reales se pueden escribir con representacin decimal
o cientfica. El punto decimal (.) separa las partes enteras de las decimales. Se debe
utilizar el punto decimal para diferenciar entre las expresiones constantes reales y las enteras.
La representacin cientfica emplea las letras E o F para separar la mantisa del exponente.
El exponente de una expresin cientfica real tiene que ser un valor entero con signo de entre
37 y +37. A continuacin se dan ejemplos de expresiones constantes analgicas reales:
3.14159
+1.0
-789.56
-1.0E+12
1.0F-15
+1.0E-37
B.2.2.4
192
Referencia de lenguajes
La expresin constante temporizador debe empezar por el prefijo "T#" o "TIME#". Los prefijos
y las letras de las unidades pueden indicarse en maysculas o minsculas, indistintamente.
Es posible que algunas unidades no aparezcan. Estos son ejemplos de expresiones
constantes temporizadores:
T#1H450MS
time#1H3M
B.2.2.5
Significado
$$
$'
$L
$R
$N
$P
$T
$hh (*)
Carcter '$'
Apstrofe
Cambio lnea
Retorno carro
Nueva linea
Nueva pgina
Tabulacin
Cualquier carcter
ASCII
(hexa)
16#24
16#27
16#0a
16#0d
16#0d0a
16#0c
16#09
16#hh
Ejemplo
'pagu $$5 por esto'
'introd. $'Y$' para S
'siguiente lnea $L
' llo $R He'
'esta es una lnea$N'
'ltima lnea $P primera linea
'nombre$Ttamao$Tfecha'
'ABCD = $41$42$43$44'
(*) "hh" es el valor hexadecimal del cdigo ASCII correspondiente al carcter expresado.
193
Referencia de lenguajes
B.2.3
Variables
Las variables pueden ser LOCALES a un programa, o GLOBALES. Las variables locales slo
pueden ser utilizadas por un programa. Las variables globales pueden ser utilizadas en
cualquier programa del proyecto. Los nombres de las variables deben cumplir con las
siguientes normas:
z el nombre no puede superar los 16 caracteres
z el primer carcter debe ser una letra
z los restantes caracteres pueden ser letras, dgitos o el carcter de subrayado (_)
B.2.3.1
C
D
E
F
G
I
J
L
M
N
O
P
R
194
ANA, ABS, ACOS, ADD, ANA, AND, AND_MASK, ANDN, ARRAY, ASIN, AT,
ATAN,
BCD_TO_BOOL, BCD_TO_INT, BCD_TO_REAL, BCD_TO_STRING,
BCD_TO_TIME, BOO, BOOL, BOOL_TO_BCD, BOOL_TO_INT,
BOOL_TO_REAL, BOOL_TO_STRING, BOOL_TO_TIME, BY, BYTE,
CAL, CALC, CALCN, CALN, CALNC, CASE, CONCAT, CONSTANT, COS,
DATE, DATE_AND_TIME, DELETE, DINT, DIV, DO, DT, DWORD,
ELSE, ELSIF, EN, END_CASE, END_FOR, END_FUNCTION, END_IF,
END_PROGRAM, END_REPEAT, END_RESSOURCE, END_STRUCT,
END_TYPE, END_VAR, END_WHILE, ENO, EQ, EXIT, EXP, EXPT,
FALSO, FEDGE, FIND, FOR, FUNCTION,
GE, GFREEZE, GKILL, GRST, GSTART, GSTATUS, GT,
IF, INSERT, INT, INT_TO_BCD, INT_TO_BOOL, INT_TO_REAL,
INT_TO_STRING, INT_TO_TIME,
JMP, JMPC, JMPCN, JMPN, JMPNC,
LD, LDN, LE, LEFT, LEN, LIMIT, LINT, LN, LOG, LREAL, LT, LWORD,
MAX, MID, MIN, MOD, MOVE, MSG, MUL, MUX,
NE, NOT,
OF, ON, OPERATE, OR, OR_MASK, ORN,
PROGRAM
R, REDGE, READ_ONLY, READ_WRITE, REAL, REAL_TO_BCD,
REAL_TO_BOOL, REAL_TO_INT, REAL_TO_STRING, REAL_TO_TIME,
REDGE, REPEAT, REPLACE, RESSOURCE, RET, RETAIN, RETC, RETCN,
RETN, RETNC, RETURN, RIGHT, ROL, ROR,
S, SEL, SHL, SHR, SIN, SINT, SQRT, ST, STN, STRING, STRING_TO_BCD,
STRING_TO_BOOL, STRING_TO_INT, STRING_TO_REAL,
STRING_TO_TIME, STRUCT, SUB, SYS_ERR_READ, SYS_ERR_TEST,
SYS_INITALL, SYS_INITANA, SYS_INITBOO, SYS_INITTMR,
SYS_RESTALL, SYS_RESTANA, SYS_RESTBOO, SYS_RESTTMR,
SYS_SAVALL, SYS_SAVANA, SYS_SAVBOO, SYS_SAVTMR,
SYS_TALLOWED, SYS_TCURRENT, SYS_TMAXIMUM,
SYS_TOVERFLOW, SYS_TRESET, SYS_TWRITE, SYSTEM,
Referencia de lenguajes
U
V
W
X
Todas las palabras clave que empiecen por un carcter de subrayado ('_') son palabras clave
internas y no deben utilizarse en las instrucciones textuales.
B.2.3.2
Algunos ejemplos:
%QX1.6
%ID2.1.7
195
Referencia de lenguajes
B.2.3.3
Variables booleanas
Booleano significa lgico. Tales variables pueden tomar uno de los dos valores booleanos:
VERDADERO o FALSO. La aplicacin tpica de las variables booleanas se encuentra en las
expresiones booleanas. Las variables booleanas pueden tener uno de los siguientes
atributos:
Interna:
Constante:
Entrada:
Salida:
Advertencia: Cuando se declara una variable booleana, pueden definirse cadenas para
reemplazar los valores de Verdadero y Falso durante el proceso de depuracin. Estas
cadenas no pueden ser empleadas en los programas si no se han incorporado como
palabras definidas para el lenguaje.
B.2.3.4
Variables analgicas
Analgico significa continuo. Este tipo de variable posee valores enteros con signo o reales
(flotantes). Los formatos disponibles para variables analgicas son:
Entero
Real
El valor REAL del exponente analgico no puede ser inferior a -37 o superior a +37. Las
variables analgicas pueden tener uno de los siguientes atributos:
Interna:
Constante:
Entrada:
Salida:
B.2.3.5
Variables de temporizador
Temporizador significa reloj o contador. Las variables de este tipo se emplean tpicamente
en expresiones de tiempo. Un valor de temporizador no puede superar 23h59m59s99 y no
196
Referencia de lenguajes
B.2.3.6
Las variables de cadena pueden contener cualquier carcter del juego estndar de caracteres
ASCII (cdigos ASCII del 0 al 255). Se permiten caracteres nulos en una cadena de
caracteres. Algunas de las funciones C de la biblioteca estndar de ISaGRAF no
funcionarn correctamente con mensajes que contengan caracteres nulos (0).
B.2.4
Comentarios
197
Referencia de lenguajes
B.2.5
Palabras definidas
es
es
es
VERDADERO
3.14159
(auto_mode AND NOT (alarm))
ABIERTO
ABIERTO
es
es
FALSO
VERDADERO
significa:
ABIERTO
es
VERDADERO
198
Referencia de lenguajes
z el nombre no puede superar los 16 caracteres
z el primer carcter debe ser una letra
z los restantes caracteres pueden ser letras, dgitos o el carcter de subrayado ('_')
Advertencia: Una palabra definida no puede emplear otra palabra definida en su definicin.
Por ejemplo, no se puede escribir:
PI
es
3,14159
es
PI*2
PI2
Debe escribirse la equivalencia completa, empleando constantes o variables y operaciones:
PI2
es
6,28318
199
Referencia de lenguajes
B.3.1
B.3.2
Los componentes bsicos (smbolos grficos) del lenguaje SFC son: pasos y pasos iniciales,
transiciones, vnculos orientados, y saltos a un paso.
B.3.2.1
Se representa un paso con un nico cuadrado. Cada paso est referenciado con un
nmero, escrito dentro del smbolo cuadrado del paso. Se incluye la descripcin principal del
paso en un rectngulo vinculado al smbolo del paso. Esta descripcin es un comentario
libre (es decir, no es parte del lenguaje de programacin). La informacin arriba indicada se
denomina el Nivel 1 del paso:
Nmero de referencia
Coomentar
102
200
Arrancar motor 1
Referencia de lenguajes
102
Arrancar motor 1
Paso inactivo:
214
Pesaje
Arrancar motor 1
B.3.2.2
Transiciones
Las transiciones se representan por medio de unas barras horizontales pequeas que
atraviesan el vnculo de conexin. Cada transicin est referenciada con un nmero escrito
al lado del smbolo de transicin. Se incluye la descripcin principal del paso a la derecha del
smbolo de transicin. Esta descripcin es un comentario libre (no es parte del lenguaje de
programacin). La informacin arriba indicada se denomina el Nivel 1 del paso:
201
Referencia de lenguajes
Nmero de referencia
Comentario
102
B.3.2.3
Orden de pesaje
Vnculos orientados
Se utilizan lneas simples para vincular pasos y transiciones. Estos son vnculos orientados.
Cuando no se indica explcitamente la orientacin, el vnculo se orienta de arriba abajo.
Orientacin explcita
de la transicin 11
al paso 100
100
10
101
Orientacin implcita
del paso 100 a la
transicin 10
11
B.3.2.4
Saltar a un paso
Pueden emplearse smbolos de salto para indicar un vnculo de conexin entre una transicin
y un paso, sin necesidad de dibujar la lnea de conexin. El smbolo de salto debe estar
referenciado con el nmero del paso destino:
No se puede utilizar un smbolo de salto para representar un vnculo entre un paso y una
transicin. Ejemplo de saltos los siguientes diagramas son equivalentes:
202
Referencia de lenguajes
30
B.3.3
31
30
31
Divergencias y convergencias
Las divergencias son vnculos de conexin mltiples desde un smbolo SFC (paso o
transicin) a muchos otros simbolos SFC. Las convergencias son vnculos de conexin
mltiples desde ms de un smbolo SFC a un smbolo SFC. Tanto las divergencias como las
convergencias pueden ser simples o dobles.
B.3.3.1
Divergencias simples
Una divergencia simple es un enlace mltiple entre un paso y muchas transiciones. Permite
que la marca activa pase a una de un nmero de ramas. Una convergencia simple es un
enlace mltiple desde muchas transiciones a un mismo paso. Se suelen utilizar las
convergencias simples para agrupar a los ramales SFC que fueron iniciados en una
divergencia simple. Las divergencias y convergencias simples se representan con lneas
horizontales simples.
Divergencia simple
Convergencia simple
203
Referencia de lenguajes
1
2
2
3
3
4
4
Initialize
Error
101
101 Alarm a
102
Reconocer
B.3.3.2
Divergencias dobles
Una divergencia doble es un enlace mltiple desde una transicin a muchos pasos.
Corresponde a operaciones en paralelo del proceso. Una convergencia doble es un enlace
mltiple desde numerosos pasos a una nica transicin. Las convergencias dobles se utilizan
generalmente para agrupar a los ramales SFC iniciados en una divergencia doble. Las
divergencias y convergencias dobles se representan con lneas horizontales dobles.
Divergencia doble
Convergencia doble
204
Referencia de lenguajes
Inicializar
Ejecutar
Proceso 1
101
Fin de Proceso 1
Fin de Proceso 2
2
3
Proceso 2
101
Esperar proceso 2
102
Esperar Proceso 2
verdadero
3
1
B.3.4
Macropaso
102
Proceso A
(* Cuerpo de la macropaso *)
205
Referencia de lenguajes
Inicializar
201
Llenar UnidadW
Unidad llena
201
Error
1
2
101
Alarm a
201
Reconocer
2
202
Pesar
Pesaje com pleto
Pesaje
202
verdadero
203
102
Vaciar UnidadW
Unidad vaca
203
204
B.3.5
B.3.5.1
Acciones booleanas
Las acciones booleanas asignan una variable booleana con la actividad del paso. Esta
variable puede ser bien de salida o bien interna. Se asigna cada vez que empieza o finaliza la
actividad del paso. La sintaxis de las acciones booleanas bsicas es:
<variable_ booleana> (N) ;
<variable_ booleana> ;
/ <variable_ booleana> ;
Se dispone de otras funciones para establecer o restablecer una variable booleana, una vez
que el paso est activo. La sintaxis es:
206
Referencia de lenguajes
La variable booleana tiene que ser de SALIDA o INTERNA. La programacin SFC que
aparece a continuacin conduce al siguiente comportamiento:
10
Acciones booleanas
G S10.X
(actividad paso)
Bdirect
Bdirect(N ) ;
/Binvert ;
Bset(S) ;
Breset(R ) ;
Binvert
Bset
Breset
1
2
2
3
led2;
3
4
led3; grupo12 (R );
B.3.5.2
Acciones pulsantes
Una accin pulsante es una lista de instrucciones ST o IL, que se ejecutan slo una vez al
producirse la activacin del paso. Las instrucciones se escriben de acuerdo con la siguiente
sintaxis SFC:
ACCION (P) :
(* sentencias ST *)
FIN_ACCION ;
La siguiente ilustracin muestra los resultados de una accin pulsante:
207
Referencia de lenguajes
Actividad paso
Ejecucin
C m d;
4
5
Action (P);
nb_flanco := nb_flanco + 1;
End_action;
B.3.5.3
Acciones no almacenadas
Action (P):
nb_flanco := 0;
End_action;
Cmd;
4
5
208
Action (N):
If (nb_flanco < 10) then
nb_flanco := nb_flanco + 1;
End_if;
End_action;
Referencia de lenguajes
B.3.5.4
Acciones SFC
Una accin SFC es una secuencia SFC hija, iniciada o finalizada de acuerdo con los cambios
que se producen en la seal de actividad de paso. Una accin SFC puede tener un calificador
N (No almacenado), S (Establecer) o R (Restablecer). La sintaxis de las acciones SFC
bsicas es:
<prog_hijo> (N);
<prog_hijo> ;
<prog_hijo> (S);
<prog_hijo> (R);
La secuencia SFC que se haya especificado como una accin tiene que ser un programa
SFC hijo del programa que se est editando en ese momento. Obsrvese que el uso de los
calificadores S (Establecer) o R (Restablecer) para una accin SFC tiene exactamente el
mismo efecto que las instrucciones GSTART y GKILL, que se programan en ST para una
accin pulsante.
A continuacin se muestra un ejemplo de una accin SFC. El principal programa SFC se
denomina padre. Tiene dos hijos SFC, llamados SeqMlx y SeqPump. La programacin SFC
del programa SFC padre es:
(* Programa SFC utilizando acciones SFC *)
1
Inicio;
1
2
SeqMlx (N);
101
SeqPump (S);
Lleno;
101
102 SeqPump (R);
2
1
B.3.5.5
209
Referencia de lenguajes
Init = O K ;
B.3.5.6
Convenciones IL
210
(* or N *)
Referencia de lenguajes
Las palabras claves especiales "#info=IL" y "#endinfo" deben ser introducidas exactamente
como se indica, y son sensibles al caso (maysculas o minsculas). No se puede insertar
caracteres de espacio o tabulacin dentro, despus o antes de palabras clave. A continuacin
se muestra un ejemplo de un programa IL dentro de un bloque de acciones:
(* Programa SFC con secuencia IL en un bloque de acciones *)
B.3.6
Action (P):
#info=IL
LD F alse
ST Led1
ST Led2
#endinfo
End_action;
B.3.6.1
Convenciones ST
Se puede utilizar el lenguaje de Texto Estructurado (ST) puede utilizarse para describir la
condicin que se asocia a una transicin. La expresin completa debe ser del tipo booleano
y finalizar con punto y coma, de acuerdo con la siguiente sintaxis:
<expresin_booleana> ;
La expresin puede ser una expresin constante VERDADERA o FALSA, una entrada simple
o una variable booleana interna, o una combinacin de variables que conduce a un valor
booleano. A continuacin se muestra un ejemplo de programacin ST para transiciones:
211
Referencia de lenguajes
1
Ejecucin & no Error;
B.3.6.2
Convenciones LD
B.3.6.3
Ejec
Error
Convenciones IL
El valor que contiene el resultado actual (registro IL) al final de la secuencia IL provoca la
asociacin del resultado de la condicin a la transicin:
Resultado actual = 0
Resultado actual <> 0
condicin es FALSA
condicin es VERDADERA
Las palabras claves especiales "#info=IL" y "#endinfo" deben ser introducidas exactamente
como se indica, y son sensibles al caso (maysculas o minsculas). No se puede insertar
caracteres de espacio o tabulacin dentro, despus o antes de palabras clave. A continuacin
se muestra un ejemplo de programacin IL para transiciones:
212
Referencia de lenguajes
B.3.6.4
Puede invocarse cualquier subprograma o funcin (escritos en los lenguajes FBD, LD, ST o
IL), o funcin C, para evaluar la condicin asociada a una transicin, de acuerdo con la
siguiente sintaxis:
< sub_program > ( ) ;
condicin es FALSA
condicin es VERDADERO
1
EvalCond ( );
B.3.7
213
Referencia de lenguajes
B.3.8
Los programas SFC que carecen de padre se denominan programas SFC principales
El sistema activa los programas SFC principales cuando se inicia la aplicacin
Un programa puede tener varios programas hijo
El hijo de un programa no puede tener ms de un padre
Un programa hijo slo puede ser controlado por su padre
Un programa no puede controlar a los hijos de uno de sus propios hijos
Las acciones bsicas que puede llevar a cabo un programa SFC padre para controlar a su
programa hijo son:
z Iniciar
z Terminar
214
Referencia de lenguajes
z Congelar
z Reiniciar
z Obtener estado
215
Referencia de lenguajes
B.4 Lenguaje FC
El Diagrama de flujo (FC) es un lenguaje grfico que se utiliza para describir operaciones
secuenciales. Un diagrama de flujo FC est compuesto por acciones y decisiones. Entre las
acciones y decisiones hay vnculos orientados representando flujo de datos. Los vnculos de
conexin mltiple se usan para representar divergencias y convergencias. Se pueden
describir Acciones y decisiones con los lenguajes ST, LD o IL. Se pueden llamar a funciones y
a bloques de funcin de cualquier lenguaje (excepto SFC) desde acciones y decisiones. Un
programa diagrama de flujo puede llamar a otro programa diagrama de flujo, El programa FC
llamado es un subprograma del programa FC que lo llama.
B.4.1
Componentes FC
Inicio
El smbolo de "Inicio" siempre tiene una conexin (por debajo) con los otros objetos
del diagrama. Un diagrama de flujo no es valido si no hay ninguna conexin
dibujada de "Inicio" a otro objeto.
Fin
El smbolo de "Fin" tiene normalmente una conexin por arriba a otros objetos del
diagrama. Un diagrama de flujo puede no tener conexin a un objeto "Fin"
216
Referencia de lenguajes
Enlaces de flujo FC
Un enlace de flujo es una lnea que representa un flujo entre dos puntos del
diagrama. Un enlace siempre termina en una flecha. A continuacin est el dibujo
de un enlace de flujo:
Acciones FC
Un smbolo de accin FC representa las acciones a realizar. Una accin est
identificada por un nmero y un nombre. Debajo est el dibujo de un smbolo de
"accin":
nn: Nombre
Dos objetos diferentes del mismo diagrama no pueden tener el mismo nombre o
nmero lgico. El lenguaje de programacin para una accin puede ser ST, LD o IL.
Una accin est siempre conectada con enlaces, uno llegando a ella, otro saliendo
de ella.
Condiciones FC
Una Condicin representa una decisin booleana . Una condicin est identificada
por un nmero y un nombre.
Segn la evaluacin de la correspondiente expresin en ST, LD o IL, el flujo se
dirige por el camino de "S" o "NO". Debajo estn los posible dibujos para un
smbolo de condicin:
nn: Nombre
NO
NO
nn: Nombre
NO
nn: Nombre
nn: Nombre
NO
217
Referencia de lenguajes
Dos objetos diferentes del mismo diagrama no pueden tener el mismo nombre o
nmero lgico. La programacin de una decisin es bien
- una expresin en ST, o
- un nico contacto en LD, sin ningn smbolo para su nica bobina, o
- diversas instrucciones en IL. El registro IL (o resultado actual) se usa para evaluar
la condicin.
Cuando se programa en texto ST la expresin puede ser opcionalmente seguida
por un punto y coma. Cuando se programa en LD, la bobina nica representa el
estado de la condicin. Una condicin es igual:
- 0 o FALSO dirige el flujo hacia NO
- 1 o VERDADERO dirige el flujo hacia S
Una condicin est siempre conectada con un enlace de llegada y deben definirse
las dos condiciones de salida.
Subprograma FC
El sistema permite la descripcin de la estructura vertical de los programas FC. Los
programas FC estn organizados segn un rbol jerrquico. Cada programa FC
puede llamar a otros programas FC. Este programa se llama programa hijo del
programa FC que lo llama. Los programas FC que llaman a subprogramas FC se
llaman programas padre. Los programas FC se unen juntos a un rbol jerrquico
principal usando una relacin padre-hijo:
Programa PADRE
Programa HIJO
nn: SpNombre
Dos objetos diferentes del mismo diagrama no pueden tener el mismo nombre o
mismo nmero lgico. Las reglas bsicas que implica la estructura jerrquica FC
son:
- Programas FC que no tienen padre se llaman programas FC principales.
- Programas FC principales se activan por el sistema cuando empieza la aplicacin
- Un programa puede tener varios programas hijos
- Un programa hijo no puede tener ms que un padre
- Un programa hijo slo puede ser llamado por su padre
- Un programa no puede llamar al hijo de uno de sus hijos
218
Referencia de lenguajes
El mismo programa puede aparecer varias veces en diagrama del padre. No puede
aparecer en ramas diferentes de las misma divergencia paralela. Una llamada a un
subprograma en diagrama de flujo representa la ejecucin completa del
subdiagrama. La ejecucin del padre est suspendida durante la actuacin del
subdiagrama. Los bloques de llamada del subprograma deben seguir las mismas
reglas de conexin como los definidos para Acciones.
nn: Nombre
Los bloques especficos de E/S tienen el mismo comportamiento que las acciones
standard. Esto afecta a sus propiedades, a la programacin ST, LD o IL, y a las
reglas de conexin.
Conectores FC
Los conectores se utilizan para representar un enlace entre dos puntos del
diagrama sin dibujarlo. Un conector se representa por un crculo y se conecta a la
fuente de flujo. El dibujo del conector se completa, en el lado apropiado
(dependiendo de la direccin del flujo de datos), por la identificacin del punto de
destino (generalmente el nombre del smbolo objeto). Debajo est el dibujo
standard de un conector:
nn: Nombre
Un conector siempre se dirige a un smbolo definido del diagrama de flujo. El
smbolo de destino se identifica por un nmero lgico. El objetivo de un conector
puede ser tambin el nmero lgico (etiqueta) de una divergencia paralela.
Ramas paralelas FC
Las ramas paralelas representan ejecucin simultnea de subdiagramas. El
sistema de "divergencia / convergencia" se identifica por un nmero
lgico((etiqueta). Cada subprograma tiene un nico "inicio" de flujo y un nico "Fin"
de flujo. Las ramas paralelas comienzan en un smbolo de "divergencia", y terminan
en un smbolo de "convergencia". Las lneas horizontales dobles se utilizan para
representar convergencias y divergencias:
219
Referencia de lenguajes
nn
divergencia
nn
convergencia
Etiqueta
(nmero lgico)
procesos paralelos
El nmero lgico (etiqueta) de una rama paralela puede ser utilizado como objetivo
de un conector. El nmero lgico es el mismo para la divergencia y la convergencia
del mismo sistema paralelo. No puede utilizarse para otros smbolos en el
diagrama.
Comentarios FC
Un bloque de comentario contiene texto que no tiene sentido para la semntica del
diagrama. Se puede insertar en cualquier lugar del espacio no usado de la ventana
documento del diagrama de flujo y se utiliza para documentar el programa. Debajo
est el dibujo del smbolo de "comentario" :
B.4.2
IF / THEN / ELSE
220
Referencia de lenguajes
REPEAT / UNTIL
WHILE / DO
B.4.3
Comportamiento dinmico FC
221
Referencia de lenguajes
B.4.4
Verificacin FC
Aparte de la programacin unida a ST, LD o IL, otras reglas sintcticas se aplican al propio
diagrama de flujo. Debajo est la lista de las reglas principales:
- Todos los puntos de "conexin" deben de estar unidos. (la conexin al smbolo de
"Fin" puede omitirse)
- Todos los smbolos deben de estar unidos (no debe aparecer ninguna parte
aislada)
- Todos los conectores deben tener un destino valido
- Un smbolo en una rama paralela no puede estar unido a otros smbolos fuera de
la rama (cada rama debe de estar conectada)
- El mismo subprograma no puede ser llamado desde diferentes ramas paralelas en
la misma divergencia
Se presentan otros errores sintcticos menores:
- Se ignoran las ramas vacas en una divergencia
- Una divergencia con slo una rama llena no es una divergencia
- Las acciones vacas (sin programacin) se consideran como pasos durante el
tiempo programado de ejecucin
- las decisiones vacas (sin programacin) se consideran como "siempre verdad".
222
Referencia de lenguajes
B.5.1
El diagrama FBD describe una funcin entre variables de entrada y variables de salida.
Una funcin se describe como un conjunto de bloques de funcin elementales. Las
variables de entrada y salida estn vinculadas a los bloques por medio de lneas de
conexin. Una salida de un bloque de funcin tambin puede conectarse a la entrada de otro
bloque.
Funcin
Entradas
Salidas
Una funcin completa manejada por un programa FBD est construida con bloques de
funcin elementales y estndares procedentes de la biblioteca ISaGRAF. Cada bloque de
funcin tiene un nmero fijo de puntos de conexin de entradas y un nmero fijo de puntos
de conexin de salidas. Un bloque de funcin est representado por un nico rectngulo.
Las entradas se conectan a su borde izquierdo. Las salidas se conectan a su borde derecho.
Un bloque de funcin elementales lleva a cabo una nica funcin entre sus entradas y
salidas. El nombre de la funcin que tiene que desempear el bloque est escrito en su
smbolo rectangular. Cada entrada o salida de un bloque posee un tipo bien definido.
Nom bre de la funcin
Entradas
&
Salidas
Las variables de entrada de un programa FBD tienen que estar conectadas a los puntos de
conexin de entradas de los bloques de funcin. El tipo de cada variable tiene que ser el
mismo que se espera para la entrada asociada. Una entrada de un diagrama FBD puede ser
una expresin constante, cualquier variable interna o de entrada, o una variable de salida.
Las variables de salida de un programa FBD tienen que estar conectadas a los puntos de
conexin de salidas de los bloques de funcin. El tipo de cada variable tiene que ser el mismo
que se espera para la salida de bloque asociada. Una salida de un diagrama FBD puede ser
cualquier variable interna o de salida, o el nombre del programa (slo en el caso de
223
Referencia de lenguajes
subprogramas). Cuando una salida es el nombre del subprograma que se est editando en
ese momento, representa la asignacin del valor de retorno del subprograma (retorno al
programa invocante).
Las variables de entrada y salida y las entradas y salidas de los bloques de funcin estn
unidas por medio de lneas de conexin. Pueden utilizarse lneas simples para conectar dos
puntos lgicos del diagrama:
z Una variable de entrada y una entrada de un bloque de funcin
z Una salida de un bloque de funcin y una entrada de otro bloque
z Una salida de un bloque de funcin y una variable de salida
La conexin est orientada, lo que significa que la lnea lleva datos asociados desde la
extremidad izquierda hasta la extremidad derecha. Las extremidades izquierda y derecha de
la lnea de conexin deben ser del mismo tipo.
Puede utilizarse una conexin mltiple en la extremidad derecha para difundir una
informacin desde la extremidad izquierda hacia cada una de las extremidades derechas.
Todas las extremidades de la conexin deben ser del mismo tipo.
B.5.1.1
Sentencia RETURN
La palabra clave "<RETURN>", o RETORNO, puede aparecer como una salida del diagrama.
Tiene que estar conectada a un punto de conexin de salida booleana de un bloque de
funcin. La sentencia RETURN representa una terminacin condicional del programa: si la
salida de la caja que est conectada a la sentencia tiene el valor booleano VERDADERO, el
final (la parte restante) del diagrama no se ejecuta.
(* Ejemplo de un programa FBD que utiliza la sentencia RETURN *)
>=1
auto_mode
alarm
RETURN
&
bi10
bi23
x_cmd
>=1
bo67
(* equivalencia ST: *)
If auto_mode OR alarm Then
Return;
End_if;
bo67 := (bi10 AND bi23) OR x_cmd;
224
Referencia de lenguajes
B.5.1.2
Saltos y etiquetas
Se utilizan los saltos y las etiquetas para controlar la ejecucin del diagrama. No pueden
conectarse otros objetos a la derecha de un smbolo de salto o etiqueta. Se emplean las
siguientes notaciones:
>>LAB.............. salto a una etiqueta (el nombre de la etiqueta es "LAB")
LAB: ............... definicin de una etiqueta (el nombre de la etiqueta es "LAB")
&
manual
b1
NOMODIF
>=1
input1
input2
result
NOMODIF:
>=1
result
valid
cmd10
(* Equivalencia IL: *)
NOMODIF:
ld
and
jmpc
ld
or
st
ld
or
st
manual
b1
NOMODIF
input1
input2
result
result
valid
cmd10
225
Referencia de lenguajes
B.5.1.3
Negacin booleana
Una lnea de conexin simple, con su extremidad derecha conectada a una entrada de un
bloque de funcin, puede terminar con una negacin booleana. La negacin est
representada por un crculo pequeo. Cuando se utiliza una negacin booleana, las
extremidades izquierda y derecha de la lnea de conexin deben ser del tipo BOOLEANO.
(* Ejemplo de un programa FBD utilizando etiquetas y saltos *)
&
input1
input2
output1
(* Equivalencia ST: *)
output1 := input1 AND NOT (input2);
B.5.1.4
Weighing
mode
delta
net_weight
mode
delta
net_w
IN1
IN2
RETURN
+
tare_weight
weight
(* Equivalencia ST *)
net_weight := Weighing (mode, delta); (* llamar a sub-programa *)
If (net_weight = 0) Then Return; End_if;
weight := net_weight + tare_weight;
226
Referencia de lenguajes
B.6 Lenguaje LD
El Diagrama de Escalera (Contactos) (LD) es una representacin grfica de ecuaciones
booleanas que combina contactos (argumentos de entrada) con bobinas (resultados de
salida). El lenguaje LD permite la descripcin de pruebas y modificaciones de datos
booleanos mediante la colocacin de simbolos grficos en el diagrama del programa. Los
simbolos grficos LD se organizan dentro del diagrama del mismo modo que en un diagrama
de contactos elctricos. Un diagrama LD est conectado en sus laterales izquierdo y derecho
con carriles de potencia verticales. Estos son los componentes grficos bsicos de un
diagrama LD:
B.6.1
Un diagrama LD est delimitado en sus laterales izquierdo y derecho por unas lneas
verticales, denominadas carril de potencia izquierdo y carril de potencia derecho,
respectivamente.
Carril de potencia izquierdo
Carril de potencia derecho
227
Referencia de lenguajes
Los smbolos grficos de los diagramas LD estn conectados a carriles de potencia o a otros
smbolos por medio de lneas de conexin. Las lneas de conexin pueden ser horizontales
o verticales.
Lneas de conexin horizo
Lnea de
conexin vertical
Conexin vertical
Con significado O
B.6.2
Conexiones mltiples
El estado booleano que se atribuye a una nica lnea de conexin horizontal es el mismo que
en las extremidades izquierda y derecha de la lnea. La combinacin de lneas de conexin
horizontales y verticales permite la construccin de conexiones mltiples. El estado
booleano de las extremidades de una conexin multiple obedece una reglas lgicas.
Una conexin mltiple a la izquierda combina ms de una lnea horizontal conectada en el
lateral izquierdo de una lnea vertical, y una lnea conectada en su lateral derecho. El estado
booleano de la extremidad derecha es la O LGICA entre todas las extremidades de la
izquierda.
(* Ejemplo de conexin mltiple a la IZQUIERDA *)
v1
v2
v3
output1
output2
228
Referencia de lenguajes
(* Equivalencia ST: *)
output1 := input1;
output2 := input1;
Una conexin mltiple a la derecha y a la izquierda combina ms de una lnea horizontal
conectada al lateral izquierdo de una lnea vertical, y ms de una lnea conectada a su
lateral derecho. El estado booleano de cada una de sus extremidades de la derecha es el O
LGICO del conjunto de extremidades de la izquierda.
(* Ejemplo de conexin mltiple IZQUIERDA y DERECHA *)
input1
output1
input2
output2
output3
(* Equivalencia ST: *)
output1 := input1 O input2;
output2 := input1 O input2;
output3 := input1 O input2;
B.6.3
boo_variable
C onexin izq.
C onexin der.
229
Referencia de lenguajes
B.6.3.1
Contacto directo
Un contacto directo permite llevar a cabo una operacin booleana entre un estado de lnea
de conexin y una variable booleana.
boo_variable
Conexin der.
Conexin izq.
output1
(* Equivalencia ST: *)
output1 := input1 AND input2;
B.6.3.2
Contacto invertido
Un contacto invertido permite llevar a cabo una operacin booleana entre un estado de lnea
de conexin y la negacin booleana de una variable booleana.
boo_variable
Conexin izq.
Conexin der.
output1
(* Equivalencia ST: *)
output1 := NOT (input1) AND NOT (input2);
230
Referencia de lenguajes
B.6.3.3
Este contacto (positivo) permite llevar a cabo una operacin booleana entre el estado de una
lnea de conexin y el flanco de subida de una variable booleana.
boo_variable
Conexin izq.
Conexin der.
output1
P
(* Equivalencia ST: *)
output1 := input1 AND (input2 AND NOT (input2prev));
(* input2prev es el valor de input2 del ciclo anterior *)
B.6.3.4
Este contacto (negativo) permite llevar a cabo una operacin booleana entre un estado de
lnea de conexin y el flanco de bajada de una variable booleana.
boo_variable
Conexin izq.
Conexin der.
output1
N
(* Equivalencia ST: *)
output1 := input1 AND (NOT (input2) AND input2prev);
231
Referencia de lenguajes
B.6.3.5
Bobina directa
Las bobinas directas permiten la salida booleana del estado booleano de una lnea de
conexin.
boo_variable
Conexin der.
Conexin izq.
output1
output2
(* Equivalencia ST: *)
output1 := input1;
output2 := input1;
B.6.3.6
Bobina invertida
Las bobinas invertidas permiten una salida booleana de acuerdo con la negacin booleana
de un estado de lnea de conexin.
boo_variable
Conexin izq.
Conexin der.
232
Referencia de lenguajes
output1
output2
(* Equivalencia ST: *)
output1 := NOT (input1);
output2 := input1;
B.6.3.7
Las bobinas SET permiten la salida booleana del estado booleano de una lnea de
conexin.
boo_variable
S
Conexin izq.
Conexin der.
output1
S
input2
output1
R
(* Equivalencia ST: *)
IF input1 THEN
output1 := VERDADERO;
END_IF;
IF input2 THEN
output1 := FALSO;
END_IF;
233
Referencia de lenguajes
B.6.3.8
Las bobinas RESET permiten la salida booleana del estado booleano de una lnea de
conexin.
boo_variable
R
Conexin der.
Conexin izq.
output1
S
input2
output1
R
(* Equivalencia ST: *)
IF input1 THEN
output1 := VERDADERO;
END_IF;
IF input2 THEN
output1 := FALSO;
END_IF;
B.6.3.9
Las bobinas "Positivas" permiten la salida booleana del estado booleano de una lnea de
conexin. Este tipo de bucle slo est disponible cuando se utiliza el editor Quick Ladder.
boo_variable
P
Conexin izq.
Conexin der.
234
Referencia de lenguajes
output1
P
Las bobinas "Negativas" permiten la salida booleana del estado booleano de una lnea de
conexin. Este tipo de bucle slo est disponible cuando se utiliza el editor Quick Ladder.
boo_variable
N
Conexin izq.
Conexin der.
output1
N
(* Equivalencia ST: *)
IF (NOT(input1) and input1prev) THEN
output1 := VERDADERO;
ELSE
output1 := FALSO;
END_IF;
(* input1prev es el valor de input1 en el ciclo anterior *)
235
Referencia de lenguajes
B.6.4
Sentencia RETURN
Se puede utilizar la etiqueta RETURN, como salida para representar un final condicional del
programa. No se puede colocar conexin alguna a la derecha de un smbolo de RETURN.
RETURN
input2
result
input3
(* Equivalencia ST: *)
If Not (manual_mode) Then RETURN; End_if;
result := (input1 OR input3) AND input2;
B.6.5
Saltos y etiquetas
236
Referencia de lenguajes
manual_mode
OTHER
input1
result
END
OTHER:
input2
result
END:
(* Equivalencia IL: *)
ldn
manual_mode
jmpc
other
ld
input1
st
result
jmp
END
OTHER:
ld
input2
st
result
END:
(* fin del programa *)
B.6.6
Bloques en LD
Utilizando el editor Quick LD, se pueden conectar cajas de funciones a lneas booleanas. Una
funcin puede ser en realidad un operador, un bloque de funcin o una funcin. Ya que todos
los bloques no siempre tienen una entrada booleana y/o una salida booleana, la insercin de
bloques en un diagrama LD conduce a la incorporacin de nuevos parmetros EN, ENO a la
interfaz del bloque. No se aaden los parmetros EN, ENO si se utiliza el editor FBD/LD, ya
que se puede conectar la variable con el tipo necesario.
La entrada "EN"
En algunos operadores, funciones o bloques de funcin, la primera entrada no incluye datos
de tipo booleano. Dado que la primera entrada tiene que estar siempre conectada al escaln
(lnea), se inserta otra entrada, denominada "EN", en la primera posicin de forma automtica.
El bloque slo se ejecuta si la entrada EN es VERDADERA. A continuacin se muestra el
ejemplo de un operador de comparacin, junto con el cdigo equivalente expresado en ST:
IF rung_state THEN
q := (value1 > value 2);
ELSE
q := FALSO;
END_IF;
(* contina el escaln con el estado q *)
La salida "ENO"
En algunos operadores, funciones o bloques de funcin, la primera entrada no incluye datos
del tipo booleano. Dado que la primera salida tiene que estar conectada siempre al escaln
(lnea), se inserta otra salida, denominada "ENO", en la primera posicin de forma automtica.
237
Referencia de lenguajes
La salida ENO siempre asume el mismo estado que la primera entrada del bloque. A
continuacin se muestra un ejemplo con el bloque de funcin AVERAGE, o PROMEDIO, con
el cdigo equivalente expresado en ST:
AVERAGE(rung_state, Signal, 100);
OutSignal := AVERAGE.XOUT;
eno := rung_state;
(* contina el escaln con estado eno *)
IF rung_state THEN
result := (value1 + value2);
END_IF;
eno := rung_state;
(* continue rung with eno state *)
B.6.7
Los bloques de funcin "En lnea" tienen la misma definicin que los otros bloques de funcin
de acuerdo con la sintaxis IEC y la implementacin ISaGRAF 3 corriente:
Los bloques de funcin "En lnea" tienen parmetros de entrada y salida. Cada parmetro
de entrada o salida dispone de tipos de datos bien definidos. El nmero total de entradas
y salidas (en total) no puede ser mayor de 32.
Los bloques de funcin "En lnea" tienen variables locales (declaradas en el diccionario
ISaGRAF), que estn instanciadas (duplicadas) para cada uso del bloque de funcin en
un diagrama.
La caracterstica principal de los bloques de funcin "En lnea" es que el cuerpo (cdigo) del
bloque est duplicado en cada caso (cada instancia) del bloque en la aplicacin. A diferencia
de otros bloques de funcin, el sistema de llamada y el mecanismo de paso de parmetros no
se aplican a los bloques de funcin "En lnea". La llamada a una instancia se sustituye por el
cdigo actual del bloque. Esta sustitucin se lleva a cabo por medio de un compilador Quick
LD. Ya que el mecanismo de instanciacin es controlado completamente por el compilador,
no hay lmite en los bloques de funcin "En lnea" jerarquizados. De este modo, un bloque de
funcin "En lnea" puede llamar a otro bloque de funcin "En lnea" o a un bloque de funcin
estndar o "C".
Principio:
Imagine un bloque muy simple con una entrada, una salida y una variable instanciada interna.
Este ejemplo es un bloque de funcin de deteccin de bordes:
238
Referencia de lenguajes
Nombre:
FB1
Entradas:
IN (boolean) = input signal
Salidas:
Q (boolean) = set to TRUE only when IN changes from FALSE TO TRUE
Datos de instancia interna (que se duplican en cada llamada):
PREV (boolean) = state of IN signal at the previous cycle
Programacin del LD del bloque FB1:
IN
|----]
IN
|----]
PREV
Q
[--------]\[----------( )-|
PREV
[--------( )-|
B1
+-------+
B2
|----] [--| FB1 |--------( )-|
+-------+
B3
+-------+
B4
|----] [--| FB1 |--------( )-|
+-------+
El cdigo de "FB1" se duplica, en funcin de las variables conectadas a sus entradas y
salidas. A continuacin se muestra la equivalencia del ST del cdigo generado al compilar el
programa raz:
(* code of the first call *)
B2 := B1 and not PREV1;
PREV1 := B1;
(* code of the second call *)
B4 := B3 and not PREV2;
PREV2 := B3;
Como se indica en este ejemplo, el compilador debe distribuir las variables internas para las
variables locales FB para cada llamada (PREV1 y PREV2 en este ejemplo). Gracias al
cambio de nombre automtico de las variables internas, no hay lmite en la jerarquizacin de
los bloques de funcin "En lnea"
Al usar bloques de funcin "En lnea" en lugar de bloques de funcin normales, el tamao del
cdigo de la aplicacin (cdigo TIC) aumenta. Adems, los bloques de funcin "En lnea"
ofrecen un tiempo de ejecucin menor, ya que no es necesaria ninguna llamada de funcin ni
instruccin de transferencia de parmetro.
239
Referencia de lenguajes
La jerarquizacin de los bloques de funcin "En lnea" tambin soporta la instanciacin de los
contactos de deteccin de bordes y bobinas (P y N), el uso de bloques de funcin estndar y
"C" y los saltos locales y etiquetas.
Limitaciones:
Los bloques de funcin "En lnea" estn disponibles solamente para Quick LD. Esto significa
que:
- Los bloques de funcin "En lnea" se deben escribir en Quick LD
- Todos los programas que llaman a bloques de funcin "En lnea" se deben escribir en Quick
LD
- Las partes de Quick LD y SFCs y los Cuadros de flujo pueden llamar a los bloques de
funcin "En lnea"
Se aplican las restricciones siguientes en las llamadas a bloques de funcin:
- Los bloques de funcin "En lnea" pueden llamar a otros bloques de funcin "En lnea"
- Los bloques de funcin "normales" no pueden llamar a bloques de funcin "En lnea"
- Los bloques de funcin "En lnea" no pueden llamar a bloques de funcin "normales"
- No se permiten las llamadas recurrentes
("normal" se refiere a bloques de funcin como los implementados en ISaGRAF 3.3)
Los errores de llamada se detectan en la compilacin. Adems, el compilador garantiza
automticamente que los bloques de funcin "En lnea" se compilan de acuerdo con el grfico
de llamada cuando se ejecuta un comando "Verificar" o "Hacer".
Los bloques de funcin "En lnea" solamente se pueden definir en un proyecto. La biblioteca
ISaGRAF no soporta estos bloques de funcin.
240
Referencia de lenguajes
B.7 Lenguaje ST
ST (Texto Estructurado) es un lenguaje estructurado de alto nivel diseado para procesos
de automatizacin. Este lenguaje se usa principalmente para implementar procesos
complejos que no pueden expresarse fcilmente con lenguajes grficos. ST es el lenguaje por
defecto para la descripcin de las acciones contenidas en los pasos y condiciones asociados
a las transiciones del lenguaje SFC.
B.7.1
Sintaxis principal de ST
Un programa ST es una lista de sentencias ST. Cada sentencia acaba con un separador
constituido por un punto y coma (";"). Los nombres utilizados en el cdigo fuente
(identificadores de variables, constantes, palabras clave del lenguaje...) se espacian con
separadores inactivos (carcter de espacio, fin de lnea o pasos de tabulador) o con
separadores activos, que poseen un significado bien definido (por ejemplo, el separador >
indica la comparacin mayor que). Se pueden insertar comentarios en el texto libremente.
Un comentario tiene que empezar por "(*" y finalizar por "*)". Cada sentencia termina con un
separador en forma de punto y coma (";"). Estos son los tipos bsicos de sentencias ST:
z sentencia de asignacin (variable := expresin;)
z invocacin de subprogramas o funciones
z invocacin de bloques de funcin
z sentencias de seleccin (IF, THEN, ELSE, CASE...)
z sentencias de iteracin (FOR, WHILE, REPEAT...)
z sentencias de control (RETURN, EXIT...)
z sentencias especiales para enlaces con otros lenguajes tales como SFC
241
Referencia de lenguajes
Alta legibilidad
(* imax : number of iterations *)
(* i: FOR statement index *)
(* cond: process validity *)
imax := max_ite;
cond := X12;
if not (cond) then
return;
end_if;
(* process loop *)
for i := 1 to max_ite do
if i <> 2 then
Spcall ();
end_if;
end_for;
B.7.2
Expresiones y parntesis
Se utilizan los parntesis para aislar las subpartes de la expresin y para estructurar
explcitamente la prioridad de las operaciones. Cuando no aparecen parntesis en una
expresin compleja, la secuencia de operaciones viene indicada implcitamente por la
prioridad por defecto que exista entre los operadores ST. Por ejemplo:
2+3*6
es igual a 2+18=20
(2+3) * 6
es igual a 5*6=30
242
Referencia de lenguajes
B.7.3
Puede utilizarse la invocacin estndar de funciones ST para cada uno de los siguientes
objetos:
z Subprogramas
z Bibliotecas de funciones y bloques de funcin escritos en lenguajes IEC
z Funciones y bloques de funcin "C"
z Funciones de conversin de tipos
B.7.3.1
Nombre:
Significado:
Sintaxis:
Operandos:
Valor de retorno:
IN1
Input_value
IN2
m ax
Q
m ax_value
IN1
IN2
SPlim it
243
Referencia de lenguajes
B.7.3.2
Nombre:
Significado:
Sintaxis:
Operandos:
Valor de retorno:
Debe consultarse la biblioteca ISaGRAF para hallar el significado y tipo de cada parmetro de
bloque de funcin. Se tiene que declarar la instancia del bloque de funcin (nombre de la
copia) en el diccionario.
Ejemplo :
244
Referencia de lenguajes
B.7.4
B.7.4.1
Operador "REDGE"
Nombre:
REDGE
Significado:
Sintaxis:
Operandos:
Valor de retorno:
245
Referencia de lenguajes
Ejemplo:
(* Programa ST utilizando el operador REDGE *)
B.7.4.2
Operador "FEDGE"
Nombre:
FEDGE
Significado:
Sintaxis:
Operandos:
Valor de retorno:
246
Referencia de lenguajes
Ejemplo:
(* Programa ST utilizando el operador FEDGE *)
B.7.5
Sentencias bsicas ST
B.7.5.1
Asignacin
Nombre:
:=
Significado:
Sintaxis:
<variable> := <cualquier_expresin> ;
Operandos:
247
Referencia de lenguajes
Ejemplo:
(* Programa ST con asignaciones *)
B.7.5.2
Sentencia RETURN
Nombre:
RETURN
Significado:
Sintaxis:
RETURN ;
Operandos:
(ninguno)
CU
R ES ET
Q
CV
PV
248
Referencia de lenguajes
if R then
CV := 0;
else
if (CV < PV) then
CV := CV + 1;
end_if;
end_si;
Q := (CV >= PV);
B.7.5.3
Sentencia IF-THEN-ELSIF-ELSE
Nombre:
IF ... THEN ... ELSIF ... THEN ... ELSE ... END_IF
Significado:
Sintaxis:
IF <expresin_booleana> THEN
<sentencia> ;
<sentencia> ;
...
ELSIF <expresin_ booleana> THEN
<sentencia> ;
<sentencia> ;
...
ELSE
<sentencia> ;
<sentencia> ;
...
END_IF;
249
Referencia de lenguajes
B.7.5.4
Sentencia CASE
Nombre:
Significado:
Sintaxis:
CASE <expresin_entera> OF
<valor> : <sentencias> ;
<valor> , <valor> : <sentencias> ;
...
ELSE
<sentencias> ;
END_CASE;
Los valores CASE tienen que ser expresiones constantes enteras. Varios valores, separados
por comas, pueden conducir a la misma lista de sentencias. La sentencia ELSE es opcional.
Ejemplo:
(* Programa ST utilizando la sentencia CASE *)
CASE error_code OF
255:
err_msg := 'Divisin por cero';
fatal_error := VERDADERO;
1:
err_msg := 'Rebasamiento';
2, 3:
err_msg := 'Signo errneo;
ELSE
err_msg := 'Error desconocido';
END_CASE;
B.7.5.5
Sentencia WHILE
Nombre:
Significado:
Sintaxis:
WHILE <expresin_booleana> DO
<sentencia> ;
<sentencia> ;
250
Referencia de lenguajes
...
END_WHILE ;
Advertencia: Teniendo en cuenta que ISaGRAF es un sistema sncrono, las variables de
entrada no se refrescan durante las iteraciones WHILE. No se puede utilizar el cambio de
estado de una variable de entrada para describir la condicin de una sentencia WHILE.
Ejemplo:
(* Programa ST utilizando la sentencia WHILE *)
(* este programa usa funciones C especficas para leer caracteres en un puerto serie *)
string := ''; (* cadena vaca *)
nbchar := 0;
WHILE ((nbchar < 16) & ComIsReady ( )) DO
string := string + ComGetChar ( );
nbchar := nbchar + 1;
END_WHILE;
B.7.5.6
Sentencia REPEAT
Nombre:
Significado:
Sintaxis:
REPEAT
<sentencia> ;
<sentencia> ;
...
UNTIL <condicin_booleana>
END_REPEAT ;
(* este programa utiliza funciones C especficas para leer caracteres en un puerto serie *)
string := ''; (* cadena vaca *)
251
Referencia de lenguajes
nbchar := 0;
SI ComIsReady ( ) THEN
REPEAT
string := string + ComGetChar ( );
nbchar := nbchar + 1;
UNTIL ( (nbchar >= 16) OR NOT (ComIsReady ( )) )
END_REPEAT;
END_IF;
B.7.5.7
Sentencia FOR
Nombre:
Significado:
Sintaxis:
Operandos:
index:
mini:
maxi:
step:
Ejemplo:
(* Programa ST utilizando la sentencia FOR *)
(* este programa extrae los caracteres numricos de una cadena *)
252
Referencia de lenguajes
B.7.5.8
Sentencia EXIT
Nombre:
EXIT
Significado:
Syntax:
EXIT;
Operands:
(ninguno)
EXIT se suele usar en una sentencia IF, dentro de un bloque FOR, WHILE o REPEAT.
Ejemplo:
(* Programa ST utilizando la sentencia EXIT *)
(* este programa busca un carcter en una cadena *)
B.7.6
Extensiones ST
253
Referencia de lenguajes
z GRST
z GSTATUS
1
1
2
101
ref_ s tep _ X (N );
B.7.6.1
Sentencia TSTART
Nombre:
TSTART
Significado:
Sintaxis:
TSTART ( <variable_temporizador> );
254
Referencia de lenguajes
Operandos:
Valor de retorno:
(ninguno)
Ejemplo:
(* Programa SFC utilizando las sentencias TSTART y TSTOP *)
ACTION(P):
bo100 := TRUE; (* salida booleana *)
tm_ctrl := t#0s;
TSTART(tm_ctrl);
END_ACTION;
10
11
GS10.X
GS11.X
timeout
tm ctrl
0
El reloj mantiene el mismo valor durante un ciclo.
B.7.6.2
Sentencia TSTOP
Nombre:
TSTOP
Significado:
Sintaxis:
TSTOP ( <variable_temporizador> );
Operandos:
255
Referencia de lenguajes
(ninguno)
Valor de retorno:
B.7.6.3
Sentencia GSTART
Nombre:
GSTART
Significado:
Sintaxis:
GSTART ( <programa_hijo> );
Operandos:
Valor de retorno:
(ninguno)
La sentencia GSTART no arranca los hijos del programa hijo de forma automtica.
Nota: Dado que GSTART no est incluida en la norma IEC 1131-3, existe la alternativa de
usar el calificador S con la siguiente sintaxis para arrancar un programa hijo SFC:
Nombre_hijo(S);
Ejemplo: Uso de GSTART y GKILL
(* Secuencia 'Sfather' *)
(* Secuencia 'Schild' *)
1
1
Run_cmd;
1
2
Bo100;
GS1.t > t#2s;
1
ACTION(P):
GSTART(Schild);
END_ACTION;
Bo101;
GS2.t > t#2s;
2
NOT (Run_cmd);
2
3
1
ACTION(P):
GKILL(Schild);
END_ACTION;
Run_cmd;
3
1
256
Referencia de lenguajes
B.7.6.4
Sentencia GKILL
Nombre:
GKILL
Significado:
Sintaxis:
GKILL ( <programa_hijo> );
Operandos:
Valor de retorno:
(ninguno)
Se finalizan los hijos del programa hijo de forma automtica con el programa especificado.
Nota: Dado que GKILL no est incluida en la norma IEC 1131-3, existe la alternativa de usar
el calificador R con la siguiente sintaxis para finalizar un programa hijo SFC:
Nombre_hijo(R);
Ejemplo: Vase GSTART (la funcin se describe en el apartado anterior)
B.7.6.5
Sentencia GFREEZE
Nombre:
GFREEZE
Significado:
Sintaxis:
GFREEZE ( <programa_hijo> );
Operandos:
Valor de retorno:
(ninguno)
Se congelan los hijos del programa hijo de forma automtica junto con el programa
especificado.
Nota: GFREEZE no se encuentra en la norma IEC 1131-3.
257
Referencia de lenguajes
Ejemplo:
Suspend_cmd;
1
2
ACTION(P):
GFREEZE(Schild);
END_ACTION;
NOT (Suspend_cmd);
2
3
B.7.6.6
ACTION(P):
GRST(Schild);
END_ACTION;
Sentencia GRST
Nombre:
GRST
Significado:
Sintaxis:
GRST ( <programa_hijo> );
Operandos:
Valor de retorno:
(ninguno)
Se reinician los hijos del programa hijo de forma automtica con la sentencia GRST.
Nota: GRST no se encuentra en la norma IEC 1131-3.
Example: Vase GFREEZE (la funcin se describe en el apartado anterior)
B.7.6.7
Sentencia GSTATUS
Nombre:
GSTATUS
Significado:
Sintaxis:
Operandos:
Valor de retorno:
258
Referencia de lenguajes
ACTION(P):
GSTART(Schild);
END_ACTION;
NOT(Run_cmd);
2
3
201
ACTION(N):
if GSTATUS(Schild) = 0 then
Mstat := 'Parado';
else
Mstat := 'Ejecutando';
end_if;
END_ACTION;
ACTION(P):
GKILL(Schild);
END_ACTION;
Run_cmd;
259
Referencia de lenguajes
B.8 Lenguaje IL
Lista de Instrucciones, o IL, es un lenguaje de bajo nivel. Las instrucciones siempre estn
relacionadas con el resultado actual (o registro IL). El operador indica la operacin que
debe llevarse a cabo entre el valor actual y el operando. El resultado de la operacin se
almacena de nuevo en el resultado actual.
B.8.1
Sintaxis principal IL
Un programa IL es una lista de instrucciones. Cada instruccin tiene que comenzar en una
lnea nueva y contener un operador, complementado con modificadores opcionales.
Adicionalmente, y si fuera necesario para la operacin especfica, tiene que contener uno o
ms operandos, separados por comas (','). Una etiqueta seguida por dos puntos (':') puede
preceder a la instruccin. Si se aade un comentario a la instruccin, debe ser el ltimo
componente de la lnea. Los comentarios siempre comienzan por '(*' y concluyen por '*)'. Se
puede introducir lneas vacas entre instrucciones. Pueden colocarse los comentarios en
lneas vacas. A continuacin se muestran algunos ejemplos de lneas de instrucciones:
Etiqueta
Operador
Operando Comentarios
Inicio:
LD
ANDN
ST
IX1
MX5
QX2
B.8.1.1
(* pulsar interruptor *)
(* comando no prohibido *)
(* arrancar motor *)
Etiquetas
Una etiqueta seguida por dos puntos (':') puede preceder a la instruccin. Puede situarse una
etiqueta en una lnea vaca. Las etiquetas se utilizan como operandos para algunas
operaciones tales como saltos. La denominacin de etiquetas debe cumplir con las siguientes
normas:
z el nombre no puede superar los 16 caracteres
z el primer carcter tiene que ser una letra
z los siguientes caracteres tiene que ser letras, dgitos o el carcter _
No se puede utilizar el mismo nombre para ms de una etiqueta en el mismo programa IL.
Una etiqueta puede tener el mismo nombre que una variable.
260
Referencia de lenguajes
B.8.1.2
Modificadores de operadores
N
(
C
El modificador N indica la negacin booleana del operando. Por ejemplo, la instruccin ORN
IX12 se interpreta como: resultado := resultado OR NOT (IX12).
El modificador de parntesis '(' indica que la evaluacin de la instruccin debe demorarse
hasta que se llegue al operador de parntesis ')' de cierre.
El modificador 'C' indica que la instruccin asociada slo debe ejecutarse si el resultado
actual muestra el valor booleano VERDADERO (diferente a 0, en el caso de valores no
booleanos). El modificador 'C' puede combinarse con el modificador 'N' para indicar que la
instruccin slo debe ejecutarse si el resultado actual muestra el valor booleano FALSO (o 0,
en el caso de valores no booleanos).
B.8.1.3
Operaciones demoradas
Al existir un solo registro IL (resultado actual), algunas operaciones tienen que ser demoradas
para que la orden de ejecucin o las instrucciones puedan ser cambiadas. Se emplean
parntesis para indicar las operaciones demoradas:
'('
')'
es un modificador
es un operador
El modificador de parntesis de apertura '(' indica que se tiene que demorar la evaluacin de
la instruccin hasta que se llegue al operador de parntesis ')' de cierre. Por ejemplo, la
siguiente secuencia:
AND(
OR
)
IX12
IX35
se interpreta como:
result := result AND ( IX12 OR IX35 )
261
Referencia de lenguajes
B.8.2
Operadores IL
Modificadores
N
N
N
N
N
N
(
(
(
(
(
(
(
(
(
(
(
(
(
(
C N
C N
C N
Operando
Variable, constante
Variable
variable BOO
variable BOO
BOO
BOO
BOO
BOO
Variable, constante
Variable, constante
Variable, constante
Variable, constante
Variable, constante
Variable, constante
Variable, constante
Variable, constante
Variable, constante
Variable, constante
Nombre instancia bloque
funcin
Etiqueta
Descripcin
Carga operando
Almacena resultado actual
Pone a VERDADERO
Repone a FALSO
Y booleana
Y booleana
O booleana
O exclusiva
Suma
Resta
Multiplicacin
Divisin
Prueba: >
Prueba: >=
Prueba: =
Prueba: <=
Prueba: <
Prueba: <>
Invoca bloque de funcin
Salta a etiqueta
Retorna de subprograma
Ejecuta operacin
demorada
En la siguiente seccin, slo se describen operadores que son especficos del lenguaje IL.
Pueden encontrarse otros operadores estndares en la seccin titulada, operadores, bloques
de funcin y funciones estndares.
B.8.2.1
Operador LD
Operacin
Modificadores
permitidos
N
expresin constante
Variable interna, de entrada o de salida
Operando
Ejemplo:
LDex:
262
LD
LD
(* EJEMPLOS DE OPERACIONES LD *)
FALSO
(* resultado := FALSO constante booleana *)
VERDADERO
(* resultado := VERDADERO constante booleana *)
Referencia de lenguajes
LD
LD
LD
LD
LD
LD
LDN
B.8.2.2
123
123.1
t#3ms
boo_var1
ana_var1
tmr_var1
boo_var2
Operador ST
Operacin
Modificadores
permitidos
Operando
Ejemplo:
STboo:
STana:
STtmr:
B.8.2.3
(* EJEMPLOS DE OPERACIONES ST *)
FALSO
boo_var1 (* boo_var1 := FALSO*)
boo_var2 (* boo_var2 := VERDADERO*)
123
ana_var1 (* ana_var1 := 123 *)
t#12s
tmr_var1 (* tmr_var1 := t#12s *)
LD
ST
STN
LD
ST
LD
ST
Operador S
Operacin:
Modificadores
permitidos:
(ninguno)
Operando:
Ejemplo:
SETex:
LD
S
(* EJEMPLOS DE OPERACIONES S *)
VERDADERO
(* resultado actual := VERDADERO *)
var_boo1
(*var_boo1 := VERDADERO *)
263
Referencia de lenguajes
LD
S
B.8.2.4
FALSO
var_boo1
Operador R
Operacin
Modificadores
permitidos
(ninguno)
Operando
Ejemplo:
RESETex:
(* EJEMPLOS DE OPERACIONES R *)
VERDADERO
(* resultado actual := VERDADERO *)
boo_var1
(* boo_var1 := FALSO *)
(* resultado actual no se modifica *)
boo_var2
(* boo_var2 := VERDADERO *)
FALSO
(* resultado actual := FALSO *)
boo_var1
(* no se hace nada - boo_var1 no cambiado
LD
R
ST
LD
R
*)
B.8.2.5
Operador JMP
Operacin
Modificadores
permitidos
C N
Operando
Ejemplo:
(* el siguiente ejemplo verifica el valor de un selector analgico (0 1 2) *)
(* para fijar una de 3 salidas booleanas. Verificacin "es igual a 0" se realiza con *)
(* el operador JMPC *)
JMPex:
264
LD
BOO
JMPC
selector
test1
(* selector es 0 1 2 *)
(* conversin a booleano *)
(* si selector = 0 entonces *)
Referencia de lenguajes
LD
ST
JMP
LD
SUB
BOO
JMPC
LD
ST
JMP
LD
ST
test1:
test2:
VERDADERO
bo0
JMPend
selector
1
test2
VERDADERO
bo1
JMPend
VERDADERO
bo2
JMPend:
B.8.2.6
(* bo0 := VERDADERO *)
(* fin de programa *)
(* decrementar selector: ahora es 0 1 *)
(* conversin a booleano *)
(* si selector = 0 entonces *)
(* bo1 := VERDADERO *)
(* fin de programa *)
(* ltima posibilidad *)
(* bo2 := VERDADERO *)
(* fin de programa IL *)
Operador RET
Operacin
Modificadores
permitidos
C N
Operando
(ninguno)
Ejemplo:
(* el siguiente ejemplo verifica el valor de un selector analgico (0 1 2) *)
(* para fijar una de 3 salidas booleanas. Verificacin "es igual a 0" se realiza con *)
(* el operador JMPC *)
JMPex:
test1:
test2:
LD
BOO
JMPC
LD
ST
RET
LD
SUB
BOO
JMPC
LD
ST
LD
RET
RETNC
selector
test1
VERDADERO
bo0
selector
1
test2
VERDADERO
bo1
1
(* selector es 0 1 2 *)
(* conversin a booleano *)
(* si selector = 0 entonces *)
(* bo0 := VERDADERO *)
(* fin - retorno 0 *)
(* decrementar selector *)
(* selector es ahora 0 1 *)
(* conversin a booleano *)
(* si selector = 0 entonces *)
(* bo1 := VERDADERO *)
(* cargar valor selector real *)
(* fin - retorno 1 *)
(* ltima posibilidad *)
(* retornar si el selector tiene *)
(* un valor invlido *)
265
Referencia de lenguajes
LD
ST
LD
B.8.2.7
VERDADERO
bo2
2
(* bo2 := VERDADERO *)
(* cargar valor selector real *)
(* fin - retorno 2 *)
Operador ")"
Operacin
Modificadores
permitidos
(ninguno)
Operando
(ninguno)
Ejemplo:
(* El siguiente programa intercala operaciones demoradas: *)
(* res := a1 + (a2 * (a3 - a4) * a5) + a6; *)
Delayed:
LD
ADD(
MUL(
SUB
)
a1
a2
a3
a4
(* resultado := a1; *)
(* ADD retardado - resultado := a2; *)
(* MUL retardado - resultado := a3; *)
(* resultado := a3 - a4; *)
(* ejecutar MUL retardado - resultado := a2 * (a3-a4);
MUL
)
a5
ADD
ST
a6
res
*)
B.8.2.8
Un subprograma o una funcin (escritos en cualquiera de los lenguajes IL, ST, LD, FBD o "C")
se invoca desde el lenguaje IL, utilizando su nombre como operador.
Operacin
Modificadores
permitidos
Operand
266
(ninguno)
El primer parmetro de invocacin debe estar almacenado en el
resultado actual antes de producirse la llamada. Los siguientes se
expresan en el campo del operando, separados por comas.
Referencia de lenguajes
Ejemplo:
(* Programa de invocacin : convierte un valor analgico en un valor de tiempo *)
Main:
LD
SUBPRO
bi0
bi1,bi2
ST
GT
RETC
LD
MUL
TMR
ST
resultado
vmax
analgico *)
resultado
1000
tmval
*)
(* Invocado subprograma llamado 'SUBPRO' : evala el valor analgico *)
(* dado como valor binario en tres entradas booleanas: in0, in1, in2 son los tres parmetros
booleanos de entrada del subprograma *)
LD
in2
ANA
(* resultado = ana (in2); *)
MUL
2
(* resultado := 2*ana (in2); *)
ST
temporary (* temporary := resultado *)
LD
in1
ANA
ADD
temporary (* resultado := 2*ana (in2) + ana (in1); *)
MUL
2
(* resultado := 4*ana (in2) + 2*ana (in1); *)
ST
temporary (* temporary := resultado *)
LD
in0
ANA
ADD
temporary (* resultado := 4*ana (in2) + 2*ana (in1)+ana (in0); *)
ST
SUBPRO (* retorna resultado actual a programa invocante *)
B.8.2.9
Operacin
Modificadores
permitidos
C N
Operando
267
Referencia de lenguajes
Ejemplo 1:
(* Invocacin de bloque de funcin SR : SR1 es una instancia de SR *)
LD
auto_mode
Y
start_cmd
ST
SR1.set1
LD
stop_cmd
ST
SR1.reset
CAL
SR1
LD
SR1.Q1
ST
command
(* FBD equivalente : *)
&
auto_mode
start_cmd
stop_cmd
SR
SET1
RESET
Q1
command
Ejemplo 2
(* Se supone que R_TRIG1 es una instancia del bloque R_TRIG y CTU1 es una instancia del
bloque CTU *)
LD
command
ST
R_TRIG1.clk
CAL
R_TRIG1
LD
R_TRIG1.Q
ST
CTU1.cu
LDN
auto_mode
ST
CTU1.reset
LD
100
ST
CTU1.pv
CAL
CTU1
LD
CTU1.Q
ST
overflow
LD
CTU1.cv
ST
result
(* FBD equivalente: *)
r_trig
command
auto_mode
100
268
CLK
CTU
Q
CU
RESET
PV
Q
CV
overflow
result
Referencia de lenguajes
Operadores estndares
1 gain
1
IN
269
Referencia de lenguajes
Argumentos:
IN
Q
cualquier tipo
cualquier tipo
Descripcin:
IN
ao23
&
bi1
bi2
1
IN
bo100
(* Equivalencia ST: *)
ao23 := ai10;
bo100 := NOT (bi1 Y bi2);
(* Equivalencia IL: *)
LD
ai10
ST
ao23
LD
bi1
Y
bi2
STN
bo100
NEG
Neg
IN
Argumentos:
IN
Q
INT-REAL
INT-REAL
Descripcin:
270
Referencia de lenguajes
IN
ao23
+
ri1
ri2
Neg
IN
ro100
(* Equivalencia ST: *)
ao23 := - (ai10);
ro100 := - (ri1 + ri2);
(* Equivalencia IL: *)
LD
ai10
MUL
-1
ST
ao23
LD
ri1
ADD
ri2
MUL
-1.0
ST
ro100
& AND
&
BOOLEANO
BOOLEANO
Descripcin:
bo10
&
bi51
bi52
bi53
bo5
(* Equivalencia ST: *)
bo10 := bi101 AND NOT (bi102);
bo5 := (bi51 AND bi52) Y bi53;
271
Referencia de lenguajes
(* Equivalencia IL *)
LD
ANDN
ST
LD
&
&
ST
bi101
bi102
bo10
bi51
bi52
bi53
bo5
>=1 OR
>=1
BOOLEANO
BOOLEANO
Descripcin:
bo10
>=1
bi51
bi52
bi53
bo5
(* Equivalencia ST: *)
bo10 := bi101 OR NOT (bi102);
bo5 := (bi51 OR bi52) OR bi53;
(* Equivalencia IL: *)
LD
bi101
ORN
bi102
ST
bo10
LD
bi51
OR
bi52
OR
bi53
ST
bo5
272
Referencia de lenguajes
=1 XOR
=1
IN1
IN2
Argumentos:
IN1
IN2
Q
BOOLEANO
BOOLEANO
BOOLEANO
Descripcin:
IN1
IN2
bo10
=1
bi51
bi52
bi53
=1
IN1
IN2
IN1
IN2
bo5
(* Equivalencia ST: *)
bo10 := bi101 XOR NOT (bi102);
bo5 := (bi51 XOR bi52) XOR bi53;
(* Equivalencia IL: *)
LD
bi101
XORN
bi102
ST
bo10
LD
bi51
XOR
bi52
XOR
bi53
ST
bo5
+ (Suma)
INT-REAL
273
Referencia de lenguajes
salida
INT-REAL
Descripcin:
ao10
+
ai51
ai52
ai53
ao5
(* Equivalencia ST: *)
ao10 := ai101 + ai102;
ao5 := (ai51 + ai52) + ai53;
(* Equivalencia IL: *)
LD
ai101
ADD
ai102
ST
ao10
LD
ai51
ADD
ai52
ADD
ai53
ST
ao5
- (Resta)
IN1
IN2
Argumentos:
IN1
IN2
Q
INT-REAL
INT-REAL
INT-REAL
Descripcin:
274
Referencia de lenguajes
IN1
IN2
ao10
ai51
1
ai53
IN1
IN2
IN1
IN2
ao5
(* Equivalencia ST: *)
ao10 := ai101 - ai102;
ao5 := (ai51 - 1) - ai53;
(* Equivalencia IL: *)
LD
ai101
SUB
ai102
ST
ao10
LD
ai51
SUB
1
SUB
ai53
ST
ao5
* (Multiplicacin)
INT-REAL
salida
INT-REAL
Descripcin:
ao10
*
ai51
ai52
ai53
ao5
(* Equivalencia ST *)
ao10 := ai101 * ai102;
ao5 := (ai51 * ai52) * ai53;
275
Referencia de lenguajes
(* Equivalencia IL: *)
LD
ai101
MUL
ai102
ST
ao10
LD
ai51
MUL
ai52
MUL
ai53
ST
ao5
/ (Divisin)
/
IN1
IN2
Argumentos:
IN1
IN2
INT-REAL
INT-REAL
INT-REAL
Descripcin:
IN1
IN2
ao10
/
ai51
2
ai53
IN1
IN2
IN1
IN2
ao5
(* Equivalencia ST: *)
ao10 := ai101 / ai102;
ao5 := (ai5 / 2) / ai53;
(* Equivalencia IL: *)
LD
ai101
DIV
ai102
ST
ao10
LD
ai51
DIV
2
DIV
ai53
ST
ao5
276
Referencia de lenguajes
AND_MASK
and_m ask
IN
MSK
Argumentos:
IN
MSK
Q
INT
INT
INT
Descripcin:
IN
MSK
parity
result
and_mask
16#abc
16#f0f
IN
MSK
(* Equivalencia ST: *)
parity := AND_MASK (xvalue, 1); (* 1 si xvalue es impar *)
result := AND_MASK (16#abc, 16#f0f); (* igual a 16#a0c *)
(* Equivalencia IL: *)
LD
xvalue
AND_MASK
1
ST
parity
LD
16#abc
AND_MASK
16#f0f
ST
result
OR_MASK
or_m ask
IN
MSK
Argumentos:
IN
MSK
Q
INT
INT
INT
Descripcin:
277
Referencia de lenguajes
(* Equivalencia ST: *)
is_odd := OR_MASK (xvalue, 1); (* hace el valor siempre impar *)
result := OR_MASK (16#abc, 16#f0f); (* igual a 16#fbf *)
(* Equivalencia IL: *)
LD
xvalue
OR_MASK
1
ST
is_odd
LD
16#abc
OR_MASK
16#f0f
ST
result
XOR_MASK
xor_m ask
IN
MSK
Argumentos:
IN
MSK
Q
INT
INT
INT
Descripcin:
IN
MSK
crc32
result
xor_mask
16#012
16#011
IN
MSK
(* Equivalencia ST: *)
crc32 := XOR_MASK (prevcrc, nextc);
resultado := XOR_MASK (16#012, 16#011); (* igual a 16#003 *)
(* Equivalencia IL: *)
LD
prevcrc
XOR_MASK
nextc
ST
crc32
LD
16#012
XOR_MASK
16#011
ST
resultado
278
Referencia de lenguajes
NOT_MASK
not_mask
IN
Argumentos :
IN
Q
INT
INT
Descripcin:
IN
result
(* Equivalencia ST: *)
result := NOT_MASK (16#1234);
(* el resultado es 16#FFFF_EDCB *)
(* Equivalencia IL: *)
LD
16#1234
NOT_MASK
ST
result
< (Menor que)
<
IN1
IN2
Argumentos:
IN1
IN2
Q
INT-REALTMR-MSG
INT-REALTMR-MSG ambas entradas tienen que tener el mismo tipo
BOOLEANO VERDADERO si IN1 < IN2
Descripcin:
279
Referencia de lenguajes
IN1
IN2
aresult
mresult
<
'z'
'B'
IN1
IN2
(* Equivalencia ST: *)
aresult := (10 < 25); (* aresult es VERDADERO *)
mresult := ('z' < 'B'); (* mresult es FALSO*)
(* Equivalencia IL: *)
LD
10
LT
25
ST
aresult
LD
'z'
LT
'B'
ST
mresult
<= (Menor o igual que)
<=
IN1
IN2
Argumentos:
IN1
INT-REAL-MSG
INT-REAL-MSG ambas entradas tienen que tener el mismo tipo
BOOLEANO VERDADERO si IN1 <= IN2
IN2
Q
Descripcin:
IN1
IN2
aresult
mresult
<=
'ab'
'ab'
IN1
IN2
(* Equivalencia ST: *)
aresult := (10 <= 25); (* aresult es VERDADERO *)
mresult := ('ab' <= 'ab'); (* mresult es VERDADERO *)
(* Equivalencia IL: *)
LD
10
LE
25
280
Referencia de lenguajes
ST
LD
LE
ST
aresult
'ab'
'ab'
mresult
>
IN1
IN2
Argumentos:
IN1
IN2
Q
INT-REALTMR-MSG
INT-REALTMR-MSG ambas entradas tienen que tener el mismo tipo
BOOLEANO VERDADERO si IN1 > IN2
Descripcin:
IN1
IN2
aresult
mresult
>
'ab'
'a'
IN1
IN2
(* Equivalencia ST: *)
aresult := (10 > 25); (* aresult es FALSO *)
mresult := ('ab' > 'a'); (* mresult es VERDADERO *)
(* Equivalencia IL: *)
LD
10
GT
25
ST
aresult
LD
'ab'
GT
'a'
ST
mresult
281
Referencia de lenguajes
>=
IN1
IN2
Argumentos:
IN1
IN2
Q
INT-REAL-MSG
INT-REAL-MSG ambas entradas tienen que tener el mismo tipo
BOOLEANO VERDADERO si IN1 >= IN2
Descripcin:
IN1
IN2
aresult
mresult
>=
'ab'
'ab'
IN1
IN2
(* Equivalencia ST: *)
aresult := (10 >= 25); (* aresult es FALSO *)
mresult := ('ab' >= 'ab'); (* mresult es VERDADERO *)
(* Equivalencia IL: *)
LD
10
GE
25
ST
aresult
LD
'ab'
GE
'ab'
ST
mresult
= (Igual a)
=
IN1
IN2
Argumentos:
IN1
IN2
Q
282
INT-REAL-MSG
INT-REAL-MSG ambas entradas tienen que tener el mismo tipo
BOOLEANO VERDADERO si IN1 = IN2
Referencia de lenguajes
Descripcin:
IN1
IN2
aresult
mresult
=
'ab'
'ab'
IN1
IN2
(* Equivalencia ST: *)
aresult := (10 = 25); (* aresult es FALSO *)
mresult := ('ab' = 'ab'); (* mresult es VERDADERO *)
(* Equivalencia IL: *)
LD
10
EQ
25
ST
aresult
LD
'ab'
EQ
'ab'
ST
mresult
<> (No es igual a)
<>
IN1
IN2
Argumentos:
IN1
IN2
Q
INT-REAL-MSG
INT-REAL-MSG ambas entradas tienen que tener el mismo tipo
BOOLEANO VERDADERO si primera <> segunda
Descripcin:
IN1
IN2
aresult
mresult
<>
'ab'
'ab'
IN1
IN2
(* Equivalencia ST: *)
aresult := (10 <> 25); (* aresult es VERDADERO *)
mresult := ('ab' <> 'ab'); (* mresult es FALSO *)
283
Referencia de lenguajes
(* Equivalencia IL: *)
LD
10
NE
25
ST
aresult
LD
'ab'
NE
'ab'
ST
mresult
BOO
Boo
IN
Argumentos:
IN
Q
ANY
BOO
Descripcin:
IN
t#0s
IN
ares
tres
mres
Boo
Boo
'false'
(* Equivalencia ST: *)
ares := BOO (10);
tres := BOO (t#0s);
mres := BOO ('FALSO');
IN
(* ares es VERDADERO *)
(* tres es FALSO *)
(* mres es FALSO *)
(* Equivalencia IL: *)
LD
10
BOO
ST
ares
LD
t#0s
BOO
ST
tres
LD
'FALSO'
BOO
ST
mres
284
Referencia de lenguajes
ANA
Ana
IN
Argumentos:
IN
Q
ANY
INT
Descripcin:
IN
bres
tres
mres
Ana
t#1s46ms
IN
'0198'
IN
Ana
(* Equivalencia ST: *)
bres := ANA (VERDADERO);
tres := ANA (t#1s46ms);
mres := ANA ('0198');
(* bres es 1 *)
(* tres es 1046 *)
(* mres es 198 *)
(* Equivalencia IL: *)
LD
VERDADERO
ANA
ST
bres
LD
t#1s46ms
ANA
ST
tres
LD
'0198'
ANA
ST
mres
REAL
Real
IN
Argumentos:
IN
BOO-INT-
285
Referencia de lenguajes
TMR
REAL
Descripcin:
IN
t#1s46ms
IN
bres
tres
ares
Real
Real
198
IN
(* Equivalencia ST: *)
bres := REAL (VERDADERO);
tres := REAL (t#1s46ms);
ares := REAL (198);
(* bres es 1.0 *)
(* tres es 1046.0 *)
(* ares es 198.0 *)
(* Equivalencia IL: *)
LD
VERDADERO
REAL
ST
bres
LD
t#1s46ms
REAL
ST
tres
LD
198
REAL
ST
ares
TMR
Tmr
IN
Argumentos:
IN
INT-REAL
TIMER
Descripcin:
286
Referencia de lenguajes
IN
ares
rres
Tmr
1256.3
IN
(* Equivalencia ST: *)
ares := TMR (1256);
rres := TMR (1256.3);
(* ares := t#1s256ms *)
(* rres := t#1s256ms *)
(* Equivalencia IL: *)
LD
1256
TMR
ST
ares
LD
1256.3
TMR
ST
rres
MSG
Msg
IN
Argumentos:
IN
Q
BOOINT-REA
MSG
Descripcin:
IN
125
IN
bres
ares
Msg
(* Equivalencia ST: *)
bres := MSG (VERDADERO); (* bres es 'VERDADERO (VERDADERO) *)
ares := MSG (125); (* ares es '125' *)
(* Equivalencia IL: *)
LD
VERDADERO
MSG
ST
bres
LD
125
MSG
ST
ares
287
Referencia de lenguajes
CAT
CAT
MSG
salida
MSG
Descripcin:
myname
System
Mode
Arg
Argumentos:
Mode
Arg
Param
INT
INT-TMR
INT
Param
Descripcin:
288
Referencia de lenguajes
Comando
Significado
SYS_TALLOWED
SYS_TCURRENT
SYS_TMAXIMUM
SYS_TOVERFLOW
SYS_TRESET
SYS_TWRITE
SYS_ERR_TEST
SYS_ERR_READ
Argumento
Valor de retorno
SYS_TALLOWED
SYS_TCURRENT
SYS_TMAXIMUM
SYS_TOVERFLOW
0
0
0
0
SYS_TRESET
SYS_TWRITE
0
Nuevo tiempo de ciclo
permitido
0
0
SYS_ERR_TEST
SYS_ERR_READ
0 si no se detectan errores
cdigo de error ms antiguo
<>
Mode
Arg
Param
IN1
IN2
alarm
alarm
RETURN
+
nb_err
1
nb_err
System
SYS_TRESET
0
Mode
Arg
Param
rc
(* Equivalencia ST: *)
alarm := (SYSTEM (SYS_TOVERFLOW, 0) <> 0);
If (alarm) Then
nb_err := nb_err + 1;
rc := SYSTEM (SYS_TRESET, 0);
End_If
289
Referencia de lenguajes
OPERATE
O perate
IO
F unc t
Arg
Argumentos:
IO
Funct
Arg
Q
ANY
INT
INT
INT
Descripcin:
B.9.2
Estos son bloques de funcin estndares soportados por el sistema ISaGRAF. Dichos
bloques estn predefinidos y no tienen que ser declarados en la biblioteca.
z Booleanos..............................SR
RS
R_Trig
F_Trig
SEMA
z Contaje ..................................CTU
CTD
CTUD
z Temporizadores.....................TON
TOF
TP
z Analgicos enteros ................CMP
StackInt
z Analgicos reales ..................AVERAGE
HYSTER
LIM_ALRM
INTEGRAL
DERIVATE
z Generacin de seales..........BLINK
SIG_GEN
290
Referencia de lenguajes
Nota: Cuando se crean nuevos bloques C, pueden ser invocados desde el lenguaje FBD.
SR
SR
SET1
RESET
Argumentos:
SET1
RESET
Q1
BOO
BOO
BOO
Q1
Descripcin:
Establece biestable dominante: Vase Tabla de VERDAD a continuacin:
SET1
0
0
0
0
1
1
1
1
RESET
0
0
1
1
0
0
1
1
Q1
0
1
0
1
0
1
0
1
resultado Q1
0
1
0
0
1
1
1
1
SR
SET1
RESET
Q1
command
291
Referencia de lenguajes
RS
RS
SET
RESET
Argumentos:
SET
RESET
Q1
BOO
BOO
BOO
Q1
Descripcin:
Restablecer biestable dominante: Vase Tabla de VERDAD a continuacin:
SET
0
0
0
0
1
1
1
1
RESET
0
0
1
1
0
0
1
1
Q1
0
1
0
1
0
1
0
1
resultado Q1
0
1
0
0
1
1
0
0
SET
>=1
RESET
Q1
command
stop_cmd
alarm
292
Referencia de lenguajes
R_TRIG
r_trig
CLK
Argumentos:
CLK
Q
BOO
BOO
Descripcin:
CLK
Ana
Q
IN
+
Q
nb_edge
(* Equivalencia ST: se supone que R_TRIG1 es una instancia del bloque R_TRIG *)
R_TRIG1(cmd);
nb_edge := ANA(R_TRIG1.Q) + nb_edge;
(* Equivalencia IL: *)
LD
cmd
ST
R_TRIG1.clk
CAL
R_TRIG1
LD
R_TRIG1.Q
ANA
ADD
nb_edge
ST
nb_edge
F_TRIG
f_trig
CLK
Argumentos:
CLK
Q
BOO
BOO
Descripcin:
293
Referencia de lenguajes
CLK
Ana
Q
IN
+
Q
nb_edge
(* Equivalencia ST: se supone que F_TRIG1 es una instancia del bloque FR_TRIG *)
F_TRIG1(cmd);
nb_edge := ANA(F_TRIG1.Q) + nb_edge;
(* Equivalencia IL: *)
LD
cmd
ST
F_TRIG1.clk
CAL
F_TRIG1
LD
F_TRIG1.Q
ANA
ADD
nb_edge
ST
nb_edge
SEMA
sem a
CLAIM
RELEASE
Argumentos:
CLAIM
RELEASE
BUSY
BOOLEANO
BOOLEANO
BOOLEANO
BUSY
Descripcin:
(* "x" es una variable booleana inicializada en FALSO *)
busy := x;
If claim Then
x := VERDADERO;
Else
If release Then
busy := FALSO;
x := FALSO;
End_If;
End_If;
CTU
CTU
CU
RESET
PV
294
Q
CV
Referencia de lenguajes
Argumentos:
CU
RESET
PV
Q
CV
BOO
entrada de contaje
(contaje creciente cuando CU es VERDADERO)
comando de restablecer (dominante)
valor mximo programado
desbordamiento: VERDADERO cuando CV = PV
resultado del contaje
BOO
INT
BOO
INT
CLK
CTU
Q
CU
RESET
PV
overflow
result
Q
CV
(* Equivalencia ST: se supone que R_TRIG1 es una instancia del bloque R_TRIG y que CTU1
es una instancia del bloque CTU *)
R_TRIG1(command)
CTU1(R_TRIG1.Q,NOT(auto_mode),100);
overflow := CTU1.Q;
result := CTU1.CV;
(* Equivalencia IL: *)
LD
command
ST
R_TRIG1.clk
CAL
R_TRIG1
LD
R_TRIG1.Q
ST
CTU1.cu
LDN
auto_mode
ST
CTU1.reset
LD
100
ST
CTU1.pv
CAL
CTU1
LD
CTU1.Q
ST
overflow
LD
CTU1.cv
ST
result
CTD
CTD
CD
LOAD
PV
Q
CV
295
Referencia de lenguajes
Argumentos:
CD
BOO
LOAD
BOO
PV
Q
CV
INT
BOO
INT
entrada de contaje
(cuenta decreciente cuando CD es VERDADERO)
comando de cargar (dominante)
(CV = PV cuando LOAD es VERDADERO)
valor inicial programado
subdesbordamiento: VERDADERO cuando CV = 0
resultado del contaje
CLK
CTD
Q
CD
LOAD
PV
Q
CV
underflow
result
(* Equivalencia ST: se supone que F_TRIG1 es una instancia del bloque F_TRIG y que CTD1
es una instancia del bloque CTD *)
F_TRIG1(command)
CTD1(F_TRIG1.Q,load_cmd,100);
underflow := CTD1.Q;
result := CTD1.CV;
(* Equivalencia IL: *)
LD
command
ST
F_TRIG1.clk
CAL
F_TRIG1
LD
F_TRIG1.Q
ST
CTD1.cd
LD
load_cmd
ST
CTD1.load
LD
100
ST
CTD1.pv
CAL
CTD1
LD
CTD1.Q
ST
underflow
LD
CTD1.cv
ST
result
296
Referencia de lenguajes
CTUD
CTUD
CU
CD
Argumentos:
CU
CD
RESET
BOO
BOO
BOO
LOAD
BOO
PV
QU
QD
CV
INT
BOO
BOO
INT
RESET
QU
LOAD
QD
PV
CV
Advertencia: El bloque CTUD no detecta los flancos de subida o bajada de las entradas de
contaje (CU y CD). Tiene que estar asociado a bloques "R_TRIG" o "F_TRIG" para crear un
contador de impulsos.
Descripcin:
CLK
CTUD
r_trig
sub_elt
reset_cmd
load_cmd
100
CLK
CU
Q
CD
RESET
QU
LOAD
QD
PV
CV
full
empty
nb_elt
(* Equivalencia ST: se supone que R_TRIG1 y R_TRIG2 son dos instancias del bloque
R_TRIG y que CTUD1 es una instancia del bloque CTUD *)
R_TRIG1(add_elt)
R_TRIG2(sub_elt)
CTUD1(R_TRIG1.Q, R_TRIG2.Q, reset_cmd, load_cmd,100);
full := CTUD1.QU;
empty := CTUD1.QD;
nb_elt := CTUD1.CV;
(* Equivalencia IL: *)
LD
add_elt
ST
R_TRIG1.clk
CAL
R_TRIG1
297
Referencia de lenguajes
LD
ST
LD
ST
CAL
LD
ST
LD
ST
LD
ST
LD
ST
CAL
LD
ST
LD
ST
LD
ST
R_TRIG1.Q
CTUD1.cu
sub_elt
R_TRIG2.clk
R_TRIG2
R_TRIG2.Q
CTUD1.cd
reset_cmd
CTUD1.reset
load_cmd
CTUD1.load
100
CTUD1.pv
CTUD1
CTUD1.QU
full
CTUD1.QD
empty
CTUD1.CV
nb_elt
TON
TO N
Argumentos:
IN
BOO
PT
Q
TMR
BOO
ET
TMR
IN
PT
ET
Descripcin:
298
Referencia de lenguajes
IN
Q
PT
ET
0
TOF
TOF
Argumentos:
IN
BOO
PT
Q
TMR
BOO
ET
TMR
IN
PT
ET
Descripcin:
299
Referencia de lenguajes
TP
TP
Argumentos:
IN
BOO
TMR
BOO
TMR
PT
Q
ET
IN
PT
ET
Descripcin:
CMP
CMP
LT
Argumentos:
VAL1
INT
VAL2
INT
LT
BOO
300
VAL1
EQ
VAL2
GT
Referencia de lenguajes
BOO
BOO
EQ
GT
Descripcin:
>=1
LT
level
max_level
VAL1
EQ
VAL2
GT
pump_cmd
&
manual_mode
alarm
(* Equivalencia ST: se supone que CMP1 es una instancia del bloque CMP *)
CMP1(level, max_level);
pump_cmd := CMP1.LT OR CMP1.EQ;
alarm := CMP1.GT Y NOT(manual_mode);
(* Equivalencia IL: *)
LD
level
ST
CMP1.val1
LD
max_level
ST
CMP1.val2
CAL
CMP1
LD
CMP1.LT
OR
CMP1.EQ
ST
pump_cmd
LD
CMP1.GT
ANDN
manual_mode
ST
alarm
STACKINT
stackint
PUSH
POP
R1
EMPTY
IN
OFLO
Argumentos:
PUSH
BOO
POP
BOO
R1
BOO
OUT
301
Referencia de lenguajes
INT
INT
BOO
BOO
INT
IN
N
EMPTY
OFLO
OUT
valor introducido
tamao del pila definido por la aplicacin
VERDADERO si la pila est vaca
desbordamiento: VERDADERO si la pila est completa
valor situado a la cabeza de la pila
Descripcin:
&
PUSH
auto_mode
POP
R1
EMPTY
IN
OFLO
OUT
appli_alarm
err_alarm
last_error
(* Equivalencia ST: se supone que STACKINT1 es una instancia del bloque STACKINT *)
STACKINT1(err_detect, acknoledge, manual_mode, err_code, max_err);
appli_alarm := auto_mode Y NOT(STACKINT1.EMPTY);
err_alarm := STACKINT1.OFLO;
last_error := STACKINT1.OUT;
(* Equivalencia IL: *)
LD
err_detect
ST
STACKINT1.push
LD
acknoledge
ST
STACKINT1.pop
LD
manual_mode
ST
STACKINT1.r1
LD
err_code
ST
STACKINT1.IN
LD
max_err
ST
STACKINT1.N
CAL
STACKINT1
LD
auto_mode
ANDN
STACKINT1.empty
ST
appli_alarm
LD
STACKINT1.OFLO
ST
err_alarm
LD
STACKINT1.OUT
ST
last_error
302
Referencia de lenguajes
AVERAGE
average
RUN
XIN
N
Argumentos:
RUN
XIN
N
XOUT
BOO
REAL
INT
REAL
XOUT
VERDADERO=promediar / FALSO=restablecer
cualquier variable analgica real
nmero de muestreos definido por la aplicacin
media dinmica del valor XIN
Descripcin:
Almacena un valor en cada ciclo y calcula el valor medio de todos los valores
ya almacenados. Slo se almacenan los ultimos valores N.
El nmero de muestreos N no puede superar 128.
Si el comando "RUN" es FALSO (modo restablecer), el valor de salida es igual al valor de
entrada.
Cuando se alcanza el nmero mximo de valores almacenados N, el primer valor almacenado
queda reemplazado por el ltimo.
(* Programa FBD utilizando el Bloque "AVERAGE": *)
&
auto_mode
store_cmd
sensor_value
100
average
RUN
XIN
N
XOUT
ave_value
303
Referencia de lenguajes
HYSTER
hyster
XIN1
XIN2
EPS
Argumentos:
XIN1
XIN2
EPS
Q
REAL
REAL
REAL
BOO
Descripcin:
XIN2+EPS
XIN2
XIN2-EPS
XIN1
Q
LIM_ALRM
lim _alrm
H
X
L
EPS
Argumentos:
H
X
L
EPS
QH
Q
QL
REAL
REAL
REAL
REAL
BOO
BOO
BOO
QH
Q
QL
Descripcin:
304
Referencia de lenguajes
Se aplica una histresis a los lmites superior e inferior. El delta de histresis que se utiliza
para cualquiera de los dos lmites es la mitad del parmetro EPS. A continuacin se muestra
un ejemplo de un diagrama de tiempo:
H
H - EPS
X
L + EPS
L
QH
Q
QL
INTEGRAL
integral
RUN
R1
XIN
X0
CYCLE
Argumentos:
RUN
R1
XIN
X0
CYCLE
Q
XOUT
BOO
BOO
REAL
REAL
TMR
BOO
REAL
Q
XOUT
Descripcin:
RUN
R1
sensor_value
init_value
t#100ms
XIN
X0
CYCLE
Q
XOUT
controlled_value
305
Referencia de lenguajes
derivate
RUN
XIN
CYCLE
Argumentos:
RUN
XIN
CYCLE
XOUT
BOO
REAL
TMR
REAL
XOUT
Descripcin:
RUN
XIN
CYCLE
XOUT
derivated_value
306
Referencia de lenguajes
LD
ST
LD
ST
CAL
LD
ST
sensor_value
DERIVATE1.XIN
t#100ms
DERIVATE1.CYCLE
DERIVATE1
DERIVATE1.XOUT
derivated_value
BLINK
blink
RUN
CYCLE
Argumentos:
RUN
BOO
TMR
BOO
CYCLE
Q
Descripcin:
SIG_GEN
sig_gen
PULSE
RUN
Argumentos:
RUN
PERIOD
MAXIMUM
PULSE
UP
END
SENO
BOO
TMR
INT
BOO
INT
BOO
REAL
UP
PERIOD
END
MAXIMUM
SINE
307
Referencia de lenguajes
Descripcin:
RUN
PULSE
MAXIMUM
UP
END
SINE
B.9.3
Funciones estndares
Estas son funciones estndares soportadas por el sistema ISaGRAF. Dichas funciones estn
predefinidas y no tienen que ser declaradas en la biblioteca.
z Matemtica ............................ABS
EXPT, POW
LOG
SQRT
TRUNC
z Trigonometra ........................ACOS, ASIN,
ATAN
COS, SIN,
TAN
z Control de registros ...............ROL, ROR
SHL, SHR
Valor absoluto
Clculo de Exponente, Potencia
Logaritmos
Raz cuadrada
Truncar parte decimal
Arco coseno, Arco seno,
Arco tangente
Coseno, Seno,
Tangente
Rotar a la izquierda, Rotar a la derecha
Desplazar a la izquierda, Desplazar a la
derecha
z Tratamiento de datos.............MIN, MAX,
Mnimo, Mximo,
LIMIT
Lmite
MOD
Mdulo
MUX4, MUX8 Multiplexor (4 u 8 entradas),
SEL
Selector binario
ODD
Paridad impar
RAND
Valor aleatorio
308
Referencia de lenguajes
z Conversin de datos..............ASCII
CHAR
z Gestin de cadenas...............MLEN
DELETE
INSERT
FIND,
REPLACE
LEFT, MID
RIGHT
DAY_TIME
z Tratamiento de grupos ..........ARCREATE
ARREAD
ARWRITE
z Gestin de ficheros binarios ..F_ROPEN
F_WOPEN
F_CLOSE
F_EOF
FA_READ
FA_WRITE
FM_READ
FM_WRITE
ABS
abs
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
IN
>
Q
IN1
IN2
over
(* Equivalencia ST: *)
over := (ABS (delta) > range);
(* Equivalencia IL: *)
LD
delta
ABS
309
Referencia de lenguajes
GT
ST
range
over
EXPT
expt
IN
EXP
Argumentos:
IN
EXP
Q
REAL
INT
REAL
Descripcin:
Ana
IN
EXP
IN
tb_size
(* Equivalencia ST: *)
tb_size := ANA (EXPT (2.0, range) );
(* Equivalencia IL: *)
LD
2.0
EXPT
range
ANA
ST
tb_size
LOG
log
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
310
Referencia de lenguajes
IN
xpos
log
IN
xlog
(* Equivalencia ST: *)
xpos := ABS (xval);
xlog := LOG (xpos);
(* Equivalencia IL: *)
LD
xval
ABS
ST
xpos
LOG
ST
xlog
POW
pow
IN
EXP
Argumentos:
IN
EXP
Q
REAL
REAL
REAL
Descripcin:
(* Equivalencia ST: *)
resultado := POW (xval, power);
(* Equivalencia IL: *)
LD
xval
POW
power
ST
resultado
311
Referencia de lenguajes
SQRT
sqrt
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
IN
xpos
sqrt
IN
xroot
(* Equivalencia ST: *)
xpos := ABS (xval);
xroot := SQRT (xpos);
(* Equivalencia IL: *)
LD
xval
ABS
ST
xpos
SQRT
ST
xrout
TRUNC
trunc
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
312
Referencia de lenguajes
IN
trunc
-2.0891
IN
result
Q
(* Equivalencia ST: *)
resultado := TRUNC (+2.67) + TRUNC (-2.0891);
(* significa : resultado := 2.0 + (-2.0) := 0.0; *)
(* Equivalencia IL: *)
LD
2.67
TRUNC
ST
temporary (* resultado temporal del primer TRUNC *)
LD
-2.0891
TRUNC
ADD
temporary
ST
result
ACOS
acos
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
IN
cosine
acos
IN
result
(* Equivalencia ST: *)
cosine := COS (angle);
result := ACOS (cosine); (* resultado es igual a un ngulo *)
(* Equivalencia IL: *)
LD
angle
COS
ST
cosine
ACOS
ST
result
313
Referencia de lenguajes
ASIN
asin
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
IN
sine
asin
IN
result
(* Equivalencia ST: *)
sine := SIN (angle);
result := ASIN (sine); (* resultado es igual a un ngulo *)
(* Equivalencia IL: *)
LD
angle
SIN
ST
sine
ASIN
ST
result
ATAN
atan
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
314
Referencia de lenguajes
IN
tangent
atan
IN
result
(* Equivalencia ST: *)
tangent := TAN (angle);
result := ATAN (tangent); (* resultado es igual a un ngulo *)
(* Equivalencia IL: *)
LD
angle
TAN
ST
tangent
ATAN
ST
result
COS
cos
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
IN
cosine
acos
IN
result
(* Equivalencia ST: *)
cosine := COS (angle);
result := ACOS (cosine); (* resultado es igual a ngulo *)
(* Equivalencia IL: *)
LD
angle
COS
ST
cosine
ACOS
ST
result
315
Referencia de lenguajes
SIN
sin
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
IN
sine
asin
IN
result
(* Equivalencia ST: *)
sine := SIN (angle);
result := ASIN (sine); (* resultado es igual a ngulo *)
(* Equivalencia IL: *)
LD
angle
SIN
ST
sine
ASIN
ST
result
TAN
tan
IN
Argumentos:
IN
Q
REAL
REAL
Descripcin:
316
Referencia de lenguajes
IN
tangent
atan
IN
result
(* Equivalencia ST: *)
tangent := TAN (angle);
result := ATAN (tangent); (* resultado es igual a ngulo *)
(* Equivalencia IL: *)
LD
angle
TAN
ST
tangent
ATAN
ST
result
ROL
rol
IN
NbR
Argumentos:
IN
NbR
Q
INT
INT
INT
Descripcin:
31
IN
NbR
result
(* Equivalencia ST: *)
result := ROL (register, 1);
(* register = 2#0100_1101_0011_0101*)
(* result = 2#1001_1010_0110_1010*)
(* Equivalencia IL: *)
317
Referencia de lenguajes
LD
ROL
ST
register
1
result
ROR
ror
IN
NbR
Argumentos:
IN
NbR
Q
INT
INT
INT
Descripcin:
31
(* Equivalencia ST: *)
result := ROR (register, 1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1010_0110_1001_1010 *)
(* Equivalencia IL: *)
LD
register
ROR
1
ST
result
318
Referencia de lenguajes
SHL
shl
IN
NbS
Argumentos:
IN
NbS
INT
INT
INT
Provoca el
desplazamiento
desplazamiento
(* Equivalencia ST: *)
result := SHL (register,1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1001_1010_0110_1010 *)
(* Equivalencia IL: *)
LD
register
SHL
1
ST
result
SHR
shr
IN
NbS
319
Referencia de lenguajes
Argumentos:
IN
NbS
Q
INT
INT
INT
Descripcin:
Provoca el
desplazamiento
desplazamiento
31
(* Equivalencia ST: *)
result := SHR (register,1);
(* register = 2#1100_1101_0011_0101 *)
(* result = 2#1110_0110_1001_1010 *)
(* Equivalencia IL: *)
LD
register
SHR
1
ST
result
MIN
min
IN1
IN2
Argumentos:
IN1
IN2
Q
INT
INT
INT
Descripcin:
320
Referencia de lenguajes
IN1
value
IN2
max
Q
min_value
IN1
IN2
new_value
(* Equivalencia ST: *)
new_value := MAX (MIN (max_value, value), min_value);
(* limita el valor al conjunto [min_value..max_value] *)
(* Equivalencia IL: *)
LD
max_value
MIN
value
MAX
min_value
ST
new_value
MAX
max
IN1
IN2
Argumentos:
IN1
IN2
Q
INT
INT
INT
Descripcin:
IN1
value
IN2
max
Q
min_value
IN1
IN2
new_value
(* Equivalencia ST: *)
new_value := MAX (MIN (max_value, value), min_value);
(* limita el valor al conjunto [min_value..max_value] *)
(* Equivalencia IL: *)
LD
max_value
MIN
value
MAX
min_value
ST
new_value
321
Referencia de lenguajes
LIMIT
limit
MIN
IN
MAX
Argumentos:
MIN
IN
MAX
Q
INT
INT
INT
INT
Descripcin:
MIN
IN
MAX
new_value
(* Equivalencia ST: *)
new_value := LIMIT (min_value, value, max_value);
(* limita el valor al conjunto [min_value..max_value] *)
(* Equivalencia IL: *)
LD
min_value
LIMIT
value, max_value
ST
new_value
MOD
mod
IN
Base
Argumentos:
IN
Base
Q
INT
INT
INT
Descripcin:
322
Referencia de lenguajes
IN1
IN2
division_result
rest_of_division
mod
IN
Base
(* Equivalencia ST: *)
division_result := (value / divider); (* divisin entera *)
rest_of_division := MOD (value, divider); (* resto de la divisin *)
(* Equivalencia IL: *)
LD
value
DIV
divider
ST
division_result
LD
value
MOD
divider
ST
rest_of_division
MUX4
mux4
SEL
IN1
IN2
IN3
IN4
Argumentos:
SEL
INT
IN1..IN4
Q
INT
INT
Descripcin:
SEL
1
10
100
1000
IN1
IN2
IN3
IN4
range
323
Referencia de lenguajes
(* Equivalencia ST: *)
range := MUX4 (choice, 1, 10, 100, 1000);
(* selecciona entre 4 rangos predefinidos, por ejemplo, si la eleccin es 1, el rango ser 10 *)
(* Equivalencia IL: *)
LD
choice
MUX4
1,10,100,1000
ST
range
MUX8
mux8
SEL
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8
Argumentos:
SEL
INT
IN1..IN8
Q
INT
INT
Descripcin:
324
Referencia de lenguajes
(* Equivalencia ST: *)
range := MUX8 (choice, 1, 5, 10, 50, 100, 500, 1000, 5000);
(* selecciona entre 8 rangos predefinidos, por ejemplo, si la eleccin es 3, el rango ser 50 *)
(* Equivalencia IL: *)
LD
choice
MUX8
1,5,10,50,100,500,1000,5000
ST
range
ODD
odd
IN
Argumentos:
IN
Q
INT
BOO
Descripcin:
IN
RETURN
+
1
value
(* Equivalencia ST: *)
If Not (ODD (value)) Then Return; End_If;
value := value + 1;
(* hace el valor siempre par *)
(* Equivalencia IL: *)
LD
value
ODD
RETNC
LD
value
ADD
1
ST
value
RAND
rand
base
325
Referencia de lenguajes
Argumentos:
base
Q
INT
INT
Descripcin:
(* Equivalencia ST: *)
selected := MUX4 ( RAND (4), 1, 4, 8, 16 );
(*
seleccin aleatoria de uno entre 4 valores predefinidos
el valor proporcionado por la llamada RAND pertence al conjunto [0..3], por ello el valor
seleccionado por MUX4, tomar aleatoriamente el valor:
1 si RAND genera 0
4 si RAND genera 1
8 si RAND genera 2
16 si RAND genera 3
*)
(* Equivalencia IL: *)
LD
4
RAND
MUX4
1,4,8,16
ST
selected
SEL
sel
SEL
IN1
IN2
Argumentos:
SEL
IN1, IN2
Q
BOO
INT
INT
Descripcin:
326
Referencia de lenguajes
(* Equivalencia ST: *)
ProCmd := SEL (AutoMode, ManuCmd, InpCmd);
(* procesa la seleccin de comando *)
(* Equivalencia IL: *)
LD
AutoMode
SEL
ManuCmd,InpCmd
ST
ProCmd
ASCII
ascii
IN
Pos
Argumentos:
IN
Pos
MSG
INT
INT
Code
Code
Descripcin:
IN
Pos
Code
FirstChr
(* Equivalencia ST: *)
FirstChr := ASCII (message, 1);
(* FirstChr es el cdigo Ascii del primer carcter de la cadena *)
(* Equivalencia IL: *)
LD
message
ASCII
1
ST
FirstChr
327
Referencia de lenguajes
CHAR
char
Code
Argumentos:
Code
Q
INT
MSG
Descripcin:
(* Equivalencia ST: *)
Display := CHAR ( value + 48 );
(* valor en el conjunto [0..9] *)
(* 48 es el cdigo ascii de '0' *)
(* resultado es un cadena de un carcter de '0' a '9' *)
(* Equivalencia IL: *)
LD
value
ADD
48
CHAR
ST
Display
DELETE
delete
IN
NbC
Pos
Argumentos:
IN
NbC
Pos
Q
328
MSG
INT
INT
MSG
Referencia de lenguajes
complete_string
delete
IN
4
3
NbC
Pos
sub_string
(* Equivalencia ST: *)
complete_string := 'ABCD' + 'EFGH'; (* complete_string es 'ABCDEFGH' *)
sub_string := DELETE (complete_string, 4, 3); (* sub_string es 'ABGH' *)
(* Equivalencia IL: *)
LD
'ABCD'
ADD
'EFGH'
ST
complete_string
DELETE
4,3
ST
sub_string
FIND
find
In
Pat
Argumentos:
In
Pat
Pos
MSG
MSG
INT
Pos
Descripcin:
329
Referencia de lenguajes
complete_string
find
In
'CDEF'
Pat
found
Pos
(* Equivalencia ST: *)
complete_string := 'ABCD' + 'EFGH'; (* complete_string es 'ABCDEFGH' *)
found := FIND (complete_string, 'CDEF'); (* found es 3 *)
(* Equivalencia IL: *)
LD
'ABCD'
ADD
'EFGH'
ST
complete_string
FIND
'CDEF'
ST
found
INSERT
insert
IN
Str
Pos
Argumentos:
IN
Str
Pos
MSG
MSG
INT
MSG
cadena inicial
cadena a insertar
posicin de la insercin
la insercin se realiza delante de la posicin
(primera posicin vlida es 1)
cadena modificada
cadena vaca si Pos <= 0
concatenacin de ambas cadenas si Pos es mayor que la
longitud de la cadena IN
Descripcin:
(* Equivalencia ST: *)
MyName := INSERT ('Mr JONES', 'Frank ', 4);
(* MyName es 'Mr Frank JONES' *)
330
Referencia de lenguajes
(* Equivalencia IL: *)
LD
'Mr JONES'
INSERT
'Frank ',4
ST
MyName
LEFT
left
IN
NbC
Argumentos:
IN
NbC
MSG
INT
MSG
Descripcin:
IN
NbC
left
CAT
complete_string
IN
NbC
(* Equivalencia ST: *)
complete_string := RIGHT ('12345678', 4) + LEFT ('12345678', 4);
(* complete_string es '56781234'
el valor proporcionado por la llamada a RIGHT es '5678'
el valor proporcionado por la llamada a LEFT es '1234'
*)
(* Equivalencia IL: Primero se llama a LEFT *)
LD
'12345678'
LEFT
4
ST
sub_string (* resultado intermedio *)
LD
'12345678'
RIGHT
4
ADD
sub_string
ST
complete_string
331
Referencia de lenguajes
MID
mid
IN
NbC
Pos
Argumentos:
IN
NbC
MSG
INT
Pos
INT
MSG
Descripcin:
IN
NbC
Pos
sub_string
(* Equivalencia ST: *)
sub_string := MID ('abcdefgh', 2, 4);
(* sub_string es 'de' *)
(* Equivalencia IL: *)
LD
'abcdefgh'
MID
2,4
ST
sub_string
MLEN
mlen
IN
Argumentos:
IN
NbC
332
MSG
INT
NbC
Referencia de lenguajes
Descripcin:
IN
nbchar
NbC
<
IN1
IN2
RETURN
left
IN
NbC
prefix
(* Equivalencia ST: *)
nbchar := MLEN (complete_string);
If (nbchar < 3) Then Return; End_if;
prefix := LEFT (complete_string, 3);
(* este programa extrae los 3 caracteres situados en la parte izquierda de la cadena y coloca
el resultado en la variable del prefijo de mensaje
no se hace nada si la longitud de cadena es inferior a 3 caracteres *)
(* Equivalencia IL: *)
LD
complete_string
MLEN
ST
nbchar
LT
3
RETC
LD
complete_string
LEFT
3
ST
prefix
REPLACE
replace
IN
Str
NbC
Pos
Argumentos:
IN
Str
NbC
Pos
Q
MSG
MSG
INT
INT
MSG
cualquier cadena
cadena a insertar (para reemplazar NbC caracteres)
nmero de caracteres a borrar
posicin del primer carcter modificado
(la primera posicin vlida es 1)
cadena modificada:
- se borran los NbC caracteres en la posicin Pos
333
Referencia de lenguajes
IN
Str
NbC
Pos
MyName
(* Equivalencia ST: *)
MyName := REPLACE ('Mr X JONES, 'Frank', 1, 4);
(* MyName es 'Mr Frank JONES' *)
(* Equivalencia IL: *)
LD
'Mr X JONES'
REPLACE
'Frank',1,4
ST
MyName
RIGHT
right
IN
NbC
Argumentos:
IN
NbC
Q
MSG
INT
MSG
Descripcin:
334
Referencia de lenguajes
IN
NbC
CAT
left
complete_string
IN
NbC
(* Equivalencia ST: *)
complete_string := RIGHT ('12345678', 4) + LEFT ('12345678', 4);
(* complete_string es '56781234'
el valor proporcionado por la llamada a RIGHT es 5678
el valor proporcionado por la llamada a LEFT es 1234
*)
(* Equivalencia IL: Primero se llama a LEFT *)
LD
'12345678'
LEFT
4
ST
sub_string (* resultado intermedio *)
LD
'12345678'
RIGHT
4
ADD
sub_string
ST
complete_string
DAY_TIME
day_time
SEL
Argumentos:
SEL
INT
MSG
seleccin de salida
0= obtener fecha actual
1= obtener hora actual
2= obtener da de la semana
hora/fecha expresadas en una cadena de caracteres:
'AAAA/MM/DD' si SEL = 0
'HH:MM:SS' si SEL = 1
nombre da si SEL = 2 (p.ej.: Lunes)
Descripcin:
335
Referencia de lenguajes
SEL
CAT
';'
day_time
1
SEL
Display
(* Equivalencia ST: *)
Display := Day_Time (0) + ' ; ' + Day_Time (1);
(* El formato del texto a visualizar es: 'YYYY/MM/DD ; HH:MM:SS' *)
(* Equivalencia IL: Primero se llama a day_time(1) *)
LD
1
DAY_TIME
ST
hour_str
(* resultado intermedio *)
LD
0
DAY_TIME
ADD
';'
ADD
hour_str
ST
Display
ARCREATE
arcreate
ID
Size
Argumentos:
ID
INT
Size
ok
INT
INT
ok
Descripcin:
336
Referencia de lenguajes
(* Equivalencia ST: *)
array_error := (ARCREATE (ident, 16) <> 1));
(* Equivalencia IL: *)
LD
ident
ARCREATE
16
NE
1
ST
array_error
ARREAD
arread
ID
Pos
Argumentos:
ID
INT
Pos
INT
value
INT
Descripcin:
ID
Pos
read_value
(* Equivalencia ST: *)
If (array_error) Then Return; End_If;
read_value := ARREAD (ident, index);
(* array_error procede de la llamada a ARCREATE *)
(* Equivalencia IL: *)
LD
array_error
337
Referencia de lenguajes
RETC
LD
ARREAD
ST
ident
index
read_value
ARWRITE
arwrite
ID
Pos
IN
Argumentos:
ID
INT
Pos
INT
IN
ok
INT
INT
ok
Descripcin:
ID
Pos
IN
ok
write_status
(* Equivalencia ST: *)
If (array_error) Then Return; End_If;
write_status := ARWRITE (Ident, Index, value);
(* array_error proviene de la llamada a ARCREATE *)
(* Equivalencia IL: *)
LD
array_error
RETC
LD
ident
ARWRITE
index,value
ST
write_status
338
Referencia de lenguajes
F_ROPEN
F_ROPEN
Path
Argumentos:
Path
MSG
nombre de fichero
puede incluirse la ruta de acceso al fichero por medio de
los smbolos \ o / para especificar un directorio. Para
facilitar la portabilidad de las aplicaciones ambos
smbolos son equivalentes.
nmero de fichero
0 si se produce un error: fichero no existe.
INT
ID
ID
Descripcin:
Abre un fichero binario en modo lectura. Para ser utilizado con FX_READ y
F_CLOSE.
Esta funcin no se incluye en el simulador ISaGRAF.
(* Programa FBD utilizando los Bloques de Gestin de Ficheros *)
F_ROPEN
file_id
Path
ID
'c:\data\data.bin'
=
file_id
IN1
IN2
error
(* Equivalencia ST: *)
file_id := F_ROPEN('c:\data \data.bin');
error := (file_id=0);
(* Equivalencia IL: *)
LD
'c:\data\data.bin'
F_ROPEN
ST
file_id
EQ
0
ST
error
F_WOPEN
F_WOPEN
Path
Argumentos:
Path
MSG
ID
nombre de fichero
puede incluirse la ruta de acceso al fichero por medio de
los smbolos \ o / para especificar un directorio. Para
facilitar la portabilidad de las aplicaciones ambos
smbolos son equivalentes.
339
Referencia de lenguajes
INT
ID
nmero de fichero
0 si se produce un error. Si el fichero ya existe, se
sobreescribe.
Descripcin:
Abre un fichero binario en modo escritura. Para ser utilizado con FX_WRITE
y F_CLOSE.
Esta funcin no se incluye en el simulador ISaGRAF.
(* Programa FBD utilizando los Bloques de Gestin de Ficheros *)
F_WOPEN
file_id
Path
ID
'c:\data\data.bin'
=
file_id
IN1
IN2
error
(* Equivalencia ST: *)
file_id := F_WOPEN('c:\data \data.bin');
error := (file_id=0);
(* Equivalencia IL: *)
LD
'c:\data\data.bin'
F_WOPEN
ST
file_id
EQ
0
ST
error
F_CLOSE
F_CLOSE
ID
Argumentos:
ID
ok
INT
BOO
ok
Descripcin:
340
Referencia de lenguajes
Path
ID
file_id
ok
ok
F_CLOSE
file_id
ID
(* Equivalencia ST: *)
file_id := F_ROPEN('data.bin');
ok := F_CLOSE(file_id);
(* Equivalencia IL: *)
LD
'data.bin'
F_ROPEN
ST
file_id
F_CLOSE
ST
ok
F_EOF
F_EOF
ID
Argumentos:
ID
ok
INT
BOO
ok
Descripcin:
341
Referencia de lenguajes
Path
ID
file_id
VAL
not_eof:
FA_READ
file_id
ID
file_id
ID
F_EOF
ok
not_eof
CAT
Msg
VAL
IN
message
F_CLOSE
file_id
ID
ok
ok
(* Equivalencia ST: *)
file_id := F_ROPEN('data.bin');
WHILE not(F_EOF(file_id))
VAL := FA_READ(file_id);
END_WHILE;
MESSAGE := 'last val = ' + msg(VAL);
ok := F_CLOSE(file_id);
(* Equivalencia IL: *)
LD
F_ROPEN
ST
LD
F_EOF
JMPC
NOT_EOF:
LD
FA_READ
ST
LD
F_EOF
JMPNC
END_OF_FILE: LD
MSG
ST
LD
ADD
ST
LD
F_CLOSE
ST
342
'data.bin'
file_id
file_id
END_OF_FILE
file_id
VAL
file_id
NOT_EOF (* si no final de fichero, se contina leyendo *)
VAL
val_msg
(* conversin de VAL en un mensaje *)
'last val = '
val_msg
MESSAGE
file_id
ok
Referencia de lenguajes
FA_READ
FA_READ
ID
Argumentos:
ID
Q
INT
INT
Descripcin:
Path
ID
file_id
vstart
vend
vinc
FA_READ
file_id
ID
file_id
ID
file_id
ID
file_id
ID
FA_READ
FA_READ
FA_READ
Tmr
Q
IN
delat_tim
F_CLOSE
file_id
ID
ok
ok
(* Equivalencia ST: *)
file_id := F_ROPEN('voltramp.bin');
vstart := FA_READ(file_id);
vend := FA_READ(file_id);
vinc := FA_READ(file_id);
delta_tim := tmr(FA_READ(file_id));
ok := F_CLOSE(file_id);
(* Equivalencia IL: *)
LD
'voltramp.bin'
F_ROPEN
ST
file_id
343
Referencia de lenguajes
FA_READ
ST
LD
FA_READ
ST
LD
FA_READ
ST
LD
FA_READ
TMR
ST
LD
F_CLOSE
ST
(* leer vstart *)
vstart
file_id
(* leer vend *)
vend
file_id
(* leer vinc *)
vinc
file_id
(* leer delta_tim *)
(* conversin a un temporizador *)
delta_tim
file_id
ok
FA_WRITE
FA_WRITE
ID
IN
Argumentos:
ID
IN
OK
INT
INT
BOO
ok
Descripcin:
344
Referencia de lenguajes
(* Programa FBD *)
F_WOPEN
'data.bin'
Path
file_id
ID
nb_written
FA_WRITE
file_id
vstart
Ana
ID
IN
ok
IN
+
Q
nb_written
nb_written
FA_WRITE
file_id
vend
Ana
ID
IN
ok
IN
+
Q
nb_written
nb_written
FA_WRITE
file_id
vinc
Ana
ID
IN
ok
IN
+
Q
nb_written
nb_written
FA_WRITE
file_id
Ana
ID
Ana
delta_tim
IN
IN
ok
IN
+
Q
nb_written
nb_written
F_CLOSE
file_id
ID
nb_written
IN1
ok
ok
=
4
IN2
ERR_FILE
NOERROR
Q
RETURN
ERROR
(* Equivalencia ST: *)
file_id := F_WOPEN('voltramp.bin');
nb_written := 0;
nb_written := nb_written + ana(FA_WRITE(file_id,vstart));
nb_written := nb_written + ana(FA_WRITE(file_id,vend));
nb_written := nb_written + ana(FA_WRITE(file_id,vinc));
nb_written := nb_written + ana(FA_WRITE(file_id,ana(delta_tim)));
ok := F_CLOSE(file_id);
SI ( nb_written <> 4) THEN
ERROR := ERR_FILE;
END_SI;
(* Equivalencia IL: *)
LD
'voltramp.bin'
F_ROPEN
ST
file_id
345
Referencia de lenguajes
LD
0
ST
nb_written
LD
file_id
(* escribir vstart *)
FA_WRITE vstart
ANA
ADD
nb_written
ST
nb_written
LD
file_id
(* escribir vend *)
FA_WRITE vend
ANA
ADD
nb_written
ST
nb_written
LD
file_id
(* escribir vinc *)
FA_WRITE vinc
ANA
ADD
nb_written
LD
(* escribir delta_tim *)
ANA
(* convertirlo en un entero *)
ST
ana_delta_tim
LD
file_id
FA_WRITE ana_delta_tim
ANA
ADD
nb_written
ST
nb_written
F_CLOSE
ST
ok
LD
nb_written
EQ
4
RETC
(* retorno si igual a 4 *)
LD
ERR_FILE (* en otro caso error *)
ST
ERROR
FM_READ
FM_READ
ID
Argumentos:
ID
Q
INT
MSG
Descripcin:
Lee variables de MENSAJE de un fichero binario.
Para ser utilizado con F_ROPEN y F_CLOSE.
Referencia de lenguajes
Path
ID
file_id
status1
status2
FM_READ
file_id
ID
file_id
ID
file_id
ID
FM_READ
F_EOF
ok
ERR_FILE
CLOSE_FILE
ERROR
FM_READ
file_id
ID
unused_eof_mes
ok
ok
CLOSE_FILE:
F_CLOSE
file_id
ID
(* Equivalencia ST: *)
file_id := F_ROPEN('voltramp.bin');
status1 := FM_READ(file_id);
status2 := FM_READ(file_id);
IF (F_EOF(file_id)) THEN
ERROR := ERR_FILE;
unused_eof_mes := FM_READ(file_id);
END_IF;
ok := F_CLOSE(file_id);
(* Equivalencia IL: *)
LD
F_ROPEN
ST
FM_READ
ST
LD
FM_READ
ST
LD
F_EOF
JMPNC
LD
ST
LD
'voltramp.bin'
file_id
(* leer status1 *)
status1
file_id
(* leer status2 *)
status2
file_id
CLOSE_FILE (* si final de fichero no saltar *)
ERR_FILE
ERROR
file_id
347
Referencia de lenguajes
CLOSE_FILE
FM_READ
(* leer unused_eof_mes *)
ST
unused_eof_mes
LD
file_id
F_CLOSE
ST
ok
FM_WRITE
FM_WRITE
ID
IN
Argumentos:
ID
IN
ok
INT
MSG
BOO
ok
Descripcin:
Escribe variables de MENSAJE a un fichero binario.
Para ser utilizado con F_WOPEN y F_CLOSE.
Se escribe un mensaje en el fichero como una cadena terminada en nulo.
Path
ID
file_id
ok
ok
ok
ok
ok
ok
FM_WRITE
file_id
'First message'
ID
IN
FM_WRITE
file_id
'Last message'
ID
IN
F_CLOSE
file_id
ID
(* Equivalencia ST: *)
file_id := F_WOPEN('trace.txt');
ok := FM_WRITE(file_id,Primer mensaje);
ok := FM_WRITE(file_id,Ultimo mensaje);
ok := F_CLOSE(file_id);
348
Referencia de lenguajes
(* Equivalencia IL: *)
LD
'trace.txt'
F_WOPEN
ST
file_id
FM_WRITE Primer mensaje
ST
ok
LD
file_id
FM_WRITE Ultimo mensaje
ST
ok
LD
file_id
F_CLOSE
ST
ok
349
Referencia de lenguajes
350
sistema objeto
351
C.1 Introduccin
El objeto ISaGRAF es un software en tiempo real que ejecuta una aplicacin ISaGRAF en un
sistema computador industrial o una tarjeta, de acuerdo con el siguiente esquema bien
conocido:
Muestreo de
entradas
Ejecucin de
programas de comienzo
ISaGRAF
Ciclo Objeto
Ejecucin de
programas
secuenciales
Ejecucin de
programas finales
Actualizacin de
salidas
El ciclo objeto consiste en el muestreo de las entradas fsicas del proceso que se va a
ejecutar, procesndose los datos de la aplicacin de acuerdo con los programas de aplicacin
del banco de trabajo ISaGRAF y despus realizando la actualizacin de las salidas fsicas.
La primera parte de esta seccin explica como se empieza a funcionar con un sistema
objeto especfico. Se tratarn los objetos DOS, OS-9, VxWorks y NT, respectivamente. Para
cada objeto, se explicar la manera de ejecutar el objeto ISaGRAF en primer lugar.
Posteriormente, se facilitar informacin sobre sus caractersticas especficas, como por
ejemplo: arranque del objeto al iniciar el sistema, gestin de errores, comportamiento en
general, etc.
La segunda parte est dedicada al mtodo de implementacin de las funciones C, los
bloques de funcin C y las funciones de conversin C del usuario para realzar el objeto
ISaGRAF.
La tercera parte facilita informacin sobre el Modbus y la implementacin en ISaGRAF.
Describe el formato de tramas de los diversos cdigos de funciones.
352
sistema objeto
C.2 Instalacin
La instalacin necesita alrededor de 1 MB de espacio libre en el disco duro del ordenador.
El fichero install.bat que se incluye en el disco se encarga de instalar todos los ficheros que
se necesitan para una plataforma determinada en un PC.
Ejemplo: a:\install a: c:\path
instalar los ficheros de la unidad de disco a: al directorio path de c:.
Se utiliza la siguiente arquitectura de directorios:
ROOT
CMDS
DEFS
LIB
RELS
USER
353
354
sistema objeto
ISAMOD COM1
es equivalente a MODE COM1:19200,N,8,1
Ejemplos:
isamod COM1
isa -t=COM1
isa -s=3 -t=COM1
C.3.2
Caractersticas especficas
Arranque de ISaGRAF
355
Aplicacin OK
Ejecutar aplicacin
Parar aplicacin
Definiciones
El cdigo de aplicacin es la base de datos binaria que fue generada y cargada por el banco
de trabajo, y posteriormente ejecutada por el objeto. Se puede completar con la tabla de
smbolos.
356
sistema objeto
Para inicializar el objeto con una aplicacin especfica en el momento del arranque, sin utilizar
el enlace con el depurador, se pueden copiar estos ficheros directamente al disco del
directorio actual del objeto, si el banco de trabajo est en el mismo PC, o por medio de un
disquete. Si el equipo objeto carece de disco, se puede utilizar un disco virtual.
Si el banco de trabajo ISaGRAF est instalado en el directorio estndar \ISAWIN:
el fichero del cdigo de aplicacin del proyecto MYPROJ es.
\ISAWIN\APL\MYPROJ\appli.x8m
el fichero de smbolos de la aplicacin del proyecto MYPROJ es:
\ISAWIN\APL\MYPROJ\appli.tst
Ejemplo:
Desde el directorio en el cual est instalado isa.exe, si se introduce el siguiente comando:
copy \ISAWIN\APL\MYPROJ\appli.x8m isa11
isa.exe encontrar y ejecutar la aplicacin myproj.
Todos estos comandos pueden ser agrupados, por ejemplo, en un fichero de comandos que
posteriormente podr ser ejecutado desde el men de herramientas del banco de trabajo
(Vase Manual del Usuario: Gestin de Programas).
357
Tecla de salida
Al probar una aplicacin en condiciones no industriales, en un PC de sobremesa, el usuario
podra tener la necesidad de interrumpir la ejecucin de ISaGRAF. Esto se logra mediante la
pulsacin de una combinacin compleja de teclas que evita las paradas inesperadas. Esta
secuencia de teclas es:
shift + ctrl + alt
Claro est que si no se desea que la aplicacin industrial se interrumpa al pulsar una tecla, se
debern tomar las medidas oportunas para deshabilitar estas combinaciones.
Uno de los efectos secundarios peligrosos de estas salidas rpidas es que no se cierra la
interfaz de la tarjeta de E/S. Por lo tanto, para finalizar el objeto ISaGRAF de la manera
correcta:
- parar la aplicacin desde el depurador (as se cerrarn las tarjetas de E/S)
- parar el objeto ISaGRAF desde el teclado
Tamao de la aplicacin
El objeto MS-DOS de ISaGRAF est diseado para funcionar en el modo real de Intel, por lo
que el tamao mximo de una estructura de datos es de 64K. En consecuencia, el cdigo de
aplicacin que se cargue del banco de trabajo no debe superar este lmite. En casos muy
raros, la estructura interna asignada por ISaGRAF tambin puede superar este lmite y
provocar un error interno grave de la aplicacin tras su carga. Adems, el total de memoria
disponible est limitado a los 640K de memoria convencional.
El usuario deber solicitar una implementacin especial al proveedor si su aplicacin requiere
una mayor capacidad de memoria.
358
sistema objeto
C.4.1
Se puede ejecutar el objeto ISaGRAF en modo simple tarea. En una configuracin de este
tipo, las operaciones pueden jugar un papel crtico. Por ejemplo, se recomienda no
sobrecargar el enlace de comunicaciones para asegurar un buen rendimiento del sistema. El
sistema de multitarea OS-9 soporta la ejecucin en la misma CPU de diversos objetos
ISaGRAF en modo simple tarea, siempre que sus nmeros de esclavo y puertos de
comunicacin sean diferentes.
La implementacin en modo simple tarea ha sido diseada principalmente para plataformas
de hardware escasas, tales como tarjetas o PCs MS-DOS de bajo coste, o para realizar un
primer prototipo al trabajar sobre una plataforma nueva. Por consiguiente, es preferible optar
por la implementacin de objetos en el modo multitarea de ISaGRAF.
El objeto ISaGRAF en modo simple tarea no impide la ejecucin de procesos no prioritarios o
rutinas accionadas por interrupciones.
359
el usuario deber asegurarse de que los parmetros de comunicaciones del banco de trabajo
(vase Manual del Usuario: Gestin de Programas) coinciden con los parmetros objeto.
Ejemplo:
xmode /t0 baud=19200
Establece la velocidad de lnea de comunicacin del dispositivo /t0 en 19200 baudios
Ejemplos:
isa -t=/t0
isa -s=3 -t=/t1
isa -t=/t0 &
isa -s=3 -t=/t1
C.4.2
Para mejorar los tiempos de respuesta del kernel del objeto ISaGRAF y del enlace de
comunicacin, se divide el objeto en dos tareas que separan el trabajo de comunicacin
(tareas de comunicacin isatst o isanet) de la ejecucin de la aplicacin (tarea kernel isaker).
Este tipo de arquitectura es ms flexible. Le permite al usuario ejecutar ms de una tarea de
comunicacin vinculada a la misma tarea kernel, o ejecutar hasta 4 kernels con la misma
tarea de comunicacin. Esto facilita algunas integraciones, como un enlace de visualizacin
de procesos y el enlace del depurador del banco de trabajo en la misma aplicacin, o en un
nico enlace hasta 4 aplicaciones diferentes a travs del mismo puerto fsico.
Las tareas del kernel y de comunicaciones son independientes y pueden bifurcarse (fork)por
separado. El nico requisito es que la(s) tarea(s) del kernel se ejecute(n) en primer lugar para
que se inicialice el entorno de sistema y la(s) tarea(s) de comunicaciones puedan establecer
los enlaces correspondientes.
El objeto multitarea ISaGRAF no impide la ejecucin de procesos no prioritarios o rutinas
accionadas por interrupciones.
360
sistema objeto
C.4.2.1
C.4.2.2
361
Valor por defecto: el nmero de esclavo por defecto es el 1 (igual que el del banco de
trabajo)
C.4.2.3
Al utilizar el depurador del banco de trabajo, el usuario deber asegurarse de que los
parmetros de comunicacin del banco de trabajo (vase Manual del Usuario: Gestin de
Programas) coinciden con los parmetros objeto.
Para ISaGRAF, el objeto OS-9 representa el servidor y el depurador es el cliente que se
conecta al nmero de puerto especificado.
Antes de comenzar la primera sesin de depuracin va Ethernet, el usuario deber
cerciorarse de que su dispositivo Ethernet OS-9 est correctamente configurado. Puede
enviar un ping al sistema OS-9, por ejemplo.
362
sistema objeto
C.4.2.4
Ejemplos:
isaker &
isatst -t=/t0
isaker
esclavo 1
isatst
N lgico 1
/t0
Arranca:
Una tarea del kernel ISaGRAF con el nmero de esclavo por defecto (1).
Una tarea de comunicacin va serie de ISaGRAF, en el puerto de comunicaciones /t0,
enlazada con el nmero de esclavo por defecto (1) y con el nmero lgico por defecto (el
ltimo nmero de esclavo especificado = defecto = 1).
isaker &
isanet -t=1100
isaker
esclavo 1
isanet
N lgico 1
1100
Arranca:
Una tarea del kernel ISaGRAF con el nmero de esclavo por defecto (1).
Una tarea de comunicacin va Ethernet de ISaGRAF, en el puerto nmero 1100, enlazada
con el nmero de esclavo por defecto (1) y con el nmero lgico por defecto (el ltimo nmero
de esclavo especificado = defecto = 1).
isaker -s=2 &
isatst -t=/t0 -s=2 (isanet -t=1100 -s=2, respectivamente)
363
isaker
esclavo 2
Isatst
(isanet)
N lgico 2
/t0
(1100)
Arranca:
Una tarea del kernel ISaGRAF con el nmero de esclavo 2.
Una tarea de comunicacin va serie (Ethernet) de ISaGRAF, en el puerto de comunicaciones
/t0 (Puerto nmero 1100), enlazada con el nmero de esclavo 2 y con el nmero lgico por
defecto (el ltimo nmero de esclavo especificado = 2).
Isatst
(isanet)
n lgico 2
/t0
(1100)
isaker
esclavo 2
Arranca:
Una tarea del kernel ISaGRAF con el nmero de esclavo 1.
Una tarea del kernel ISaGRAF con el nmero de esclavo 2.
Una tarea de comunicacin va serie (Ethernet) de ISaGRAF, en el puerto de comunicaciones
/t0 (Puerto nmero 1100), enlazada con los nmeros de esclavo 1 y 2 y con el nmero lgico
por defecto (el ltimo nmero de esclavo especificado = 2).
Isaker -s=1 &
isatst -t=/t0 -s=1 -c=1 & (isanet -t=1100 -s=1 -c=1 &, respectivamente)
isatst -t=/t1 -s=1 -c=2 (isanet -t=1101 -s=1 -c=2, respectivamente)
isaker
esclavo 1
isatst
/t0
(isanet)
logical Nb 1
(1100)
isatst
(isanet)
logical Nb 2
/t1
(1101)
Arranca:
Una tarea del kernel ISaGRAF con el nmero de esclavo 1.
Una tarea de comunicacin va serie (Ethernet) de ISaGRAF, en el puerto de comunicaciones
/t0 (Puerto nmero 1100), enlazada con el esclavo n 1 y el nmero lgico 1.
Una tarea de comunicacin va serie (Ethernet) de ISaGRAF, en el puerto de comunicaciones
/t1 (Puerto nmero 1101), enlazada con el esclavo n 1 y el nmero lgico 2.
364
sistema objeto
Nota:
Se pueden combinar las tareas de comunicaciones serie y Ethernet.
C.4.3
Caractersticas especficas
Enlaces de comunicacin
El Gestor de Caracteres Serie de OS-9 es altamente flexible, por lo que permite la utilizacin
de casi cualquier dispositivo fsico bidireccional soportado por Microware :
Ejemplo:
El enlace serie puede ser una ruta de red a un puerto fsico ubicado en otra CPU.
En este supuesto, se podra utilizar la opcin -t de la siguiente manera: -t=/nr/MASTER/t0
donde se deporta el enlace de comunicacin a una CPU denominada MASTER en una red
ramnet. Se utiliza el puerto fsico /t0.
Arranque de ISaGRAF
Cuando se arranca el objeto, se ejecuta el siguiente algoritmo:
Buscar aplicacin en el disco para
cargarlo en memoria
No hay aplicaciones disponibles en memoria
Ejecutar aplicacin
Parar aplicacin
Definiciones
El cdigo de aplicacin es la base de datos binaria que fue generada y cargada por el banco
de trabajo, y posteriormente ejecutada por el objeto. Se puede completar con la tabla de
smbolos.
La tabla de smbolos de la aplicacin es una base de datos ASCII que generada y cargada
por el banco de trabajo. Esta tabla crea el enlace entre los objetos simblicos y los objetos
internos del objeto. No es necesaria en el objeto salvo para la gestin especfica de smbolos
por parte del usuario. Para mayor informacin sobre la tabla de smbolos, vase Manual del
Usuario: Tcnicas Avanzadas de Programacin.
365
366
sistema objeto
Para inicializar el objeto con una aplicacin especfica en el momento del arranque, sin utilizar
el enlace con el depurador:
La primera manera consiste en copiar estos ficheros directamente al disco del directorio
actual del objeto desde el PC principal en el cual est instalado el banco de trabajo,
utilizando para ello cualquier herramienta de transferencia. Se puede utilizar el men de
herramientas del banco de trabajo (vase Manual del Usuario: Gestin de Programas)
para facilitar estas maniobras.
Una segunda manera consiste en guardar el cdigo de aplicacin (y, si fuera necesario, la
tabla de smbolos de la aplicacin) en una memoria no voltil (como una PROM o una
EPROM), procedente de ficheros del PC principal en el cual est instalado el banco de
trabajo y utilizando herramientas propias.
Posteriormente, en el momento de arrancar el sistema y si fuera preciso (por ejemplo,
debido a un acceso ms rpido o a la gestin de breakpoints1), el usuario puede cargar el
cdigo de aplicacin (y si fuera necesario, la tabla de smbolos de la aplicacin) desde la
PROM hasta la RAM como mdulo(s) de memoria ISAx1 (y ISAx6, si fuera necesario)
con sus propias herramientas.
ADVERTENCIA:
El gestor de breakpoints del depurador ISaGRAF no funcionar correctamente si no se
puede acceder al mdulo de cdigo de aplicacin para escribir. Esto no representa un
problema, ya que normalmente la aplicacin habr sido sometida a una completa prueba
previa.
En el ordenador principal, si el banco de trabajo ISaGRAF est instalado en el directorio
estndar \ISAWIN:
el fichero de cdigo de aplicacin del proyecto MYPROJ es:
\ISAWIN\APL\MYPROJ\appli.x6m (correspondiente a isax1 en el objeto).
el fichero de smbolos de aplicacin del proyecto MYPROJ es:
\ISAWIN\APL\MYPROJ\appli.tst (correspondiente a isax6 en el objeto).
Punto de ruptura
367
tamao del buffer de errores en las opciones Ensamblar del banco de trabajo. Cuando el
buffer est lleno, al registrarse cada nuevo error se pierde el de mayor antigedad.
Los errores pueden ser extrados bien del depurador o bien de la aplicacin activa por
medio de la llamada SYSTEM (vase el Manual del Usuario).
Las tareas de ISaGRAF no modifican la prioridad que se les asigna. El usuario tiene libertad
para ajustar estas prioridades de acuerdo con el comportamiento de las tareas ISaGRAF y los
requisitos de la aplicacin en su conjunto.
Por ejemplo, para asegurarse de que una tarea de baja prioridad no se aduea de ISaGRAF,
se pueden modificar determinados parmetros de gestin de tareas de OS-9, como MIN_AGE
y MAX_AGE.
368
sistema objeto
Modo terminal
El protocolo de comunicacin serie del objeto reconoce una secuencia de tres caracteres de
retorno de carro ($0D) y despus inicia una tarea del shell OS-9, si est disponible, en el
dispositivo asociado al enlace serie.
Esto permite obtener el prompt del shell OS-9 en cualquier terminal, utilizando el enlace serie
del objeto ISaGRAF.
Ejemplo:
Desde el PC principal (host):
Cerrar el depurador ISaGRAF.
Iniciar una sesin de Terminal de Windows (grupo Accesorios) con los parmetros de
comunicaciones apropiados.
Introducir 3 retornos de carro.
Ahora, se est de alta en un shell OS-9.
Teclear logout para salir del modo terminal.
ADVERTENCIA:
Es imprescindible salir de la sesin en modo terminal de la forma correcta, utilizando
nicamente la orden logout. En caso contrario, fallar la siguiente conexin con el banco de
trabajo.
369
C.5.1
Siempre se necesita este mdulo en cualquier configuracin del objeto ISaGRAF, y debe ser
el primer mdulo que se cargue en el objeto. Permite al gestor de recursos del sistema
hacerse cargo de la ejecucin de mltiples objetos.
C.5.2
Para ejecutar ISaGRAF, uno de los siguientes mdulos puede estar cargado:
isa.o:
permite el arranque de objetos ISaGRAF de monotarea (slo enlace de
comunicacin serie).
Isakerse.o:
permite el arranque de objetos ISaGRAF de multitarea (slo enlace de
comunicacin serie).
Isakeret.o:
permite el arranque de objetos ISaGRAF de multitarea (enlace de
comunicacin serie y/o va Ethernet).
Se describen estos mdulos en los siguientes apartados.
370
sistema objeto
Valor de retorno:
0 si tiene xito, BAD_RET si se produce algn error
Al utilizar el depurador del banco de trabajo, hay que asegurarse de que los parmetros de
comunicacin del banco de trabajo (vase Manual del Usuario: Gestin de Programas)
coinciden con los parmetros del objeto.
C.5.3
Se puede ejecutar el objeto ISaGRAF en modo simple tarea. En una configuracin de este
tipo, las operaciones pueden jugar un papel crtico. Por ejemplo, se recomienda no
sobrecargar el enlace de comunicaciones para asegurar un buen rendimiento del sistema. El
sistema de multitarea VxWorks soporta la ejecucin en la misma CPU de diversos objetos
ISaGRAF en modo simple tarea, siempre que sus nmeros de esclavo y puertos de
comunicacin sean diferentes.
La implementacin en modo simple tarea ha sido diseada principalmente para plataformas
de hardware escasas, tales como tarjetas o PCs MS-DOS de bajo coste, o para realizar un
primer prototipo al trabajar sobre una plataforma nueva. Por consiguiente, es preferible optar
por la implementacin de objetos en el modo multitarea de ISaGRAF.
El objeto ISaGRAF en modo simple tarea no impide la ejecucin de procesos no prioritarios o
rutinas accionadas por interrupciones.
Registro de esclavo(s)
Los objetos ISaGRAF se caracterizan por sus nmeros de esclavo. Su valor puede ser
cualquier nmero entre el 1 y el 255, con la excepcin del 13 ($0D). Este nmero de esclavo
es utilizado por el protocolo del enlace de comunicacin. Es necesario para diferenciar entre
esclavos cuando se est ejecutando ms de un objeto. Por consiguiente, antes de arrancar
una tarea ISaGRAF, tiene que estar registrada. Para ello, se proporciona la subrutina
isa_register_Esclavo().
uchar isa_register_Esclavo
(
uchar Esclavo
/* Nmero de esclavo */
)
Descripcin:
Aade un nuevo registro de esclavo al sistema de gestin de objetos mltiples.
Valor de retorno:
0 si tiene xito, BAD_RET si se produce algn error
371
Ejemplo:
TSK_FUNIT = "host name:/C:/ISaGRAF/target/apl/"
Especifica ISaGRAF\target\apl\, en la raz de la unidad C: del PC denominado host_name,
como el directorio de copias de seguridad de los ficheros de la aplicacin. No debe olvidarse
la barra inclinada final, ya que en caso contrario se realizarn las copias de seguridad en el
directorio ISaGRAF\target\ con los nombres de fichero preestablecidos por la aplicacin.
Si fuera necesario, se puede configurar esta variable para unidades con rutas diferentes, para
cada objeto, antes de cada creacin.
Para mayor informacin sobre las copias de seguridad de la aplicacin, vase la seccin
Caractersticas especficas en el apartado dedicado a las copias de seguridad de la
aplicacin.
372
sistema objeto
Se puede arrancar ms de un esclavo siempre que sus nmeros de esclavo y puertos de
comunicacin sean diferentes.
Al utilizar el depurador del banco de trabajo, hay que asegurarse de que los parmetros del
esclavo del banco de trabajo (vase Manual del Usuario: Gestin de Programas) coinciden
con los de un objeto existente.
Ejemplo
Este ejemplo muestra la manera de arrancar un objeto ISaGRAF en modo monotarea con el
nmero de esclavo 1 y el dispositivo /tyCo/1 para el enlace serie.
El directorio anfitrin actual es aqul en el que est instalado el objeto.
C.5.4
Para mejorar los tiempos de respuesta del kernel del objeto ISaGRAF y del enlace de
comunicacin, se divide el objeto en dos tareas que separan el trabajo de comunicacin
(tarea de comunicacin) de la ejecucin de la aplicacin (tarea kernel).
Este tipo de arquitectura es ms flexible. Le permite al usuario ejecutar ms de una tarea de
comunicacin vinculada a la misma tarea kernel, o ejecutar hasta 4 kernels con la misma
tarea de comunicacin. Esto facilita algunas integraciones, como un enlace de visualizacin
de procesos y el enlace del depurador del banco de trabajo en la misma aplicacin, o en un
nico enlace hasta 4 aplicaciones diferentes a travs del mismo puerto fsico.
373
Las tareas del kernel y de comunicaciones son independientes y pueden crearse por
separado. El nico requisito es que la(s) tarea(s) del kernel se ejecuten en primer lugar para
que se inicialice el entorno de sistema y la(s) tarea(s) de comunicaciones puedan establecer
los enlaces correspondientes.
El objeto multitarea ISaGRAF no impide la ejecucin de procesos no prioritarios o rutinas
accionadas por interrupciones.
Se proponen dos mdulos, en funcin de la capacidad del hardware de comunicaciones:
- Kernel y enlace serie: isakerse.o
Este mdulo permite arrancar las tareas del kernel y de comunicacin serie.
- Kernel, enlace serie y/o enlace Ethernet: isakeret.o
Este mdulo permite arrancar las tareas del kernel y de comunicacin serie y/o va Ethernet.
El modo de arrancar ISaGRAF es el mismo para los mdulos isakerse.o e isakeret.o. Como
excepcin en el caso de isakeret.o, se puede especificar bien un nombre de dispositivo serie
o bien un nmero de puerto de enlace Ethernet como el parmetro de nombre del dispositivo
de comunicacin al arrancar la(s) tarea(s) de comunicacin de ISaGRAF: tst_main_ex (vase
informacin ms adelante).
Para ISaGRAF, el objeto VxWorks representa el servidor y el depurador es el cliente que se
conecta al nmero de puerto especificado.
Registro de kernel(s)
Los kernels ISaGRAF se caracterizan por sus nmeros de esclavo. Su valor puede ser
cualquier nmero entre el 1 y el 255, con la excepcin del 13 ($0D). Este nmero de esclavo
es utilizado por el protocolo del enlace de comunicacin y por parte de la(s) tarea(s) de
comunicacin que est(n) vinculada(s) al kernel. Es necesario para diferenciar entre esclavos
cuando se est ejecutando ms de un objeto. Por consiguiente, antes de arrancar una tarea
kernel ISaGRAF, tiene que estar registrada. Para ello, se proporciona la subrutina
isa_register_Esclavo().
uchar isa_register_Esclavo
(
uchar Esclavo
/* Nmero de esclavo */
)
Descripcin:
Aade un nuevo registro de esclavo kernel al sistema de gestin de objetos mltiples.
Valor de retorno:
0 si tiene xito, BAD_RET si se produce algn error
374
sistema objeto
(
uchar com_id
)
/* Identificador de tarea */
Descripcin:
Aade un nuevo registro de tarea de comunicacin al sistema de gestin de objetos mltiples.
Valor de retorno:
0 si tiene xito, BAD_RET si se produce algn error
/* Nmero de esclavo
*/
/* NO USADO. Una cadena vaca es OK */
375
Descripcin:
Arranca una tarea del kernel ISaGRAF
Valor de retorno:
retorna un valor diferente a cero si se produce algn error.
El nmero de esclavo es el mismo que se ha tratado en el apartado dedicado al registro de
esclavos.
Se puede arrancar ms de un kernel siempre que sus nmeros de esclavo sean diferentes.
Ejemplo:
Este ejemplo muestra la manera de arrancar:
Una tarea del kernel ISaGRAF con el nmero de esclavo 1.
Una tarea de comunicacin de ISaGRAF identificada por el nmero 1, asociada al esclavo de
kernel n 1 y con el dispositivo /tyCo/1 para el enlace serie.
Una tarea de comunicacin de ISaGRAF identificada por el nmero 2, asociada al esclavo de
kernel n 1 y con el nmero de puerto 1100 para el enlace de comunicacin va Ethernet.
El directorio anfitrin actual es aqul en el que est instalado el objeto.
Carga de mdulo isassr.o
ld < RELS/isassr.o
376
sistema objeto
Carga de mdulo isakeret.o (se puede cargar isakerse cuando no hace falta un enlace de
comunicacin va Ethernet)
ld < CMDS/isakeret.o
Configuracin de comunicacin serie
ISAMOD ("/tyCo/1", 19200)
Frecuencia base reloj del sistema
CLKRATE = sysClkRateGet ()
Registro de esclavo
isa_register_Esclavo (1)
Registro de comunicaciones
isa_register_com (1)
isa_register_com (2)
Unidad almacenamiento ficheros (podra omitirse y usar la configuracin por defecto)
TSK_FUNIT = ""
Control de final de ciclo (podra omitirse y usar la configuracin por defecto)
TSK_NBTCKSCHED = 0
Creacin del kernel ISaGRAF
sp (isa_main, 1, "")
Tarea de comunicacin, enlace esclavos
EsclavosLink = 0x01000000
Creacin de tareas de comunicacin de ISaGRAF
sp (tst_main_ex, "/tyCo/1", &EsclavosLink, 1)
sp (tst_main_ex, "1100", &EsclavosLink, 2)
Este arranque corresponde a la siguiente figura:
Tarea
kernel
esclavo 1
Tarea
Com
/tyCo/1
N lgico 1
Tarea
Com
1100
N lgico 2
377
Tarea
kernel
Tarea
Com
N lgico 1
esclavo 1
/tyCo/1
(1100)
Tarea
Com
esclavo 1
N lgico 1
/tyCo/1
(1100)
Tarea kernel
esclavo 2
C.5.5
Caractersticas especficas
Arranque de ISaGRAF
Ejecutar aplicacin
Parar aplicacin
Definiciones
378
sistema objeto
El cdigo de aplicacin es la base de datos binaria que fue generada y cargada por el banco
de trabajo, y posteriormente ejecutada por el objeto. Se puede completar con la tabla de
smbolos.
La tabla de smbolos de la aplicacin es una base de datos ASCII que genera y carga el
banco de trabajo. Esta tabla crea el enlace entre los objetos simblicos y los objetos internos
del objeto. No es necesaria en el objeto salvo para la gestin especfica de smbolos por parte
del usuario. Para mayor informacin sobre la tabla de smbolos, vase Manual del Usuario:
Tcnicas Avanzadas de Programacin.
Se especifica la ruta de la unidad de almacenamiento del disco en el momento de arrancar el
objeto ISaGRAF, por medio de la variable global TSK_FUNIT (valor por defecto = "" para
especificar que no existen unidades de almacenamiento en disco).
379
Una segunda manera consiste en guardar el cdigo de aplicacin (y, si fuera necesario, la
tabla de smbolos de la aplicacin) en una memoria no voltil (como una PROM o una
EPROM), procedente de ficheros del PC principal en el que est instalado el banco de
trabajo, utilizando herramientas propias.
Posteriormente, en el momento de arrancar el sistema y si fuera preciso (por ejemplo,
debido a un acceso ms rpido o a la gestin de breakpoints), el usuario puede cargar el
cdigo de aplicacin (y si fuera necesario, la tabla de smbolos de la aplicacin) desde la
PROM hasta la RAM, utilizando sus propias herramientas.
Despus, al arrancarse ISaGRAF (justo antes de crear las tareas), se tiene que
especificar la(s) direccin(es) de memoria en las que se encuentra el cdigo de
aplicacin (y si fuera necesario, la tabla de smbolos de la aplicacin). En este sentido, se
tiene que inicializar la variable global SSR de la siguiente manera:
SSR[x][1].space = direccin de cdigo de aplicacin
Y si fuera necesario:
SSR[x][6].space = direccin de la tabla de smbolos de la aplicacin
Para ello, se puede escribir un procedimiento corto. Se declara la variable global SSR
como un tipo de estructura str_ssr, que est definido en el fichero tasy0ssr.h.
ADVERTENCIA:
El gestor de breakpoints del depurador ISaGRAF no funcionar correctamente si no se
puede acceder al mdulo de cdigo de aplicacin para escribir. Esto no representa un
problema, ya que normalmente la aplicacin habr sido sometida a una completa prueba
previa.
380
sistema objeto
Si se procesa el error:
Se muestran el nmero de error (valor decimal) y el argumento (valor hexadecimal) en la
salida por defecto stdout
El nmero y argumento del error pasan a un buffer o memoria intermedia de errores FIFO,
configurada en anillo, para su recuperacin en un momento posterior. Se establece el
tamao del buffer de errores en las opciones Ensamblar del banco de trabajo. Cuando el
buffer est lleno, al registrarse cada nuevo error se pierde el de mayor antigedad.
Los errores pueden ser extrados bien del depurador o bien de la aplicacin activa por
medio de la llamada SYSTEM (vase el Manual del Usuario).
Cuando el depurador detecta un error, aparece en la pantalla de errores un mensaje que lo
describe. Dependiendo del contexto de la aplicacin (que est activa o no), el depurador
podr mostrar el nombre del objeto (variable o programa) del que procede el error, o el
argumento del error (valor decimal) entre parntesis [x], que posee un significado diferente
para cada error.
En el objeto, cuando se detecta un error se presentan los valores correspondientes en la
salida por defecto stdout. De esta manera, se puede dirigir el display por medio de rutinas de
VxWorks tales como
ioGlobalStdSet()
o
ioTaskStdSet()
En este ltimo caso, observe que tanto las tareas del kernel como las de comunicaciones
pueden generar errores.
381
382
sistema objeto
C.6 Primeros
ISaGRAF
C.6.1
pasos
con
el
objeto
NT
de
Ejecucin de ISaGRAF
C.6.2
383
Init
No hay opciones en
la lnea de comando
Alt+F4 o Exit
application
Alt+F4 o Exit
application
El objeto ISaGRAF NT
guardar las opciones en el
conjunto de opciones por
defecto (la seccin ISaGRAF
del fichero ISaGRAF.INI)
Alt+F4 o Exit
application
El objeto ISaGRAF NT no
guardar las opciones en el
conjunto de opciones por defecto
(la seccin ISaGRAF del fichero
ISaGRAF.INI)
Ejemplo:
WISAKER.EXE -s=2
Interfaz del usuario: Se presenta esta ventana con el comando "Opciones/Esclavo" de la
ventana principal del objeto NT ISaGRAF.
384
sistema objeto
Por medio del ratn o de las flechas de arriba y abajo, se puede cambiar el valor de esta
opcin. Para poder utilizar el valor nuevo, hay que reinicializar el objeto ISaGRAF NT.
data
stop
Valores
600
1200
2400
4800
9600
19200
n
e
o
7u8
12
flow
parity
Significado
Velocidad en
baudios
Sin paridad
Par
Impar
Nmero de bits
Longitud del bit de
parada
Control por hardware
385
Sin control
Los valores por defecto son: 19200, sin paridad, 8 bits de datos, 1 bit de parada, sin control
de flujo.
Ejemplo:
WISAKER -t=COM1 baud=1200 data=8 parity=n stop=2
Interfaz del usuario: Se presenta esta ventana con el comando "Opciones/ Comunicacin"
de la ventana principal del objeto ISaGRAF NT.
386
sistema objeto
Ejemplo:
WISAKER -x=1 simular las tarjetas virtuales.
Interfaz del usuario: El correspondiente elemento de men aparecer como seleccionado o
no seleccionado, de acuerdo con el estado de la opcin. Las tarjetas
simuladas aparecen en un panel grfico.
387
crtica en tiempo con una prioridad mayor, junto con uno o dos objetos adicionales operando
en segundo plano con prioridades menores.
Los posibles valores son 0, 1, 2 3. 0 es la prioridad ms alta y 3 es la ms baja.
Ejemplos:
WISAKER -p=0
WISAKER -p=1
Interfaz del usuario:
Se
presenta
esta
ventana
con
el
comando
"Opciones/Prioridad" de la ventana principal del objeto NT ISaGRAF.
Ejemplos:
wisaker -t=COM1
wisaker -s=3 -t=COM1
C.6.3
Caractersticas especficas
Arranque de ISaGRAF
388
sistema objeto
Buscar aplicacin en disco para
cargarla en memoria
Aplicacin OK
Ejecutar aplicacin
Parar aplicacin
Definiciones
El cdigo de aplicacin es la base de datos binaria que fue generada y cargada por el banco
de trabajo, y posteriormente ejecutada por el objeto. Se puede completar con la tabla de
smbolos.
La tabla de smbolos de la aplicacin es una base de datos ASCII que genera y carga el
banco de trabajo. Esta tabla crea el enlace entre los objetos simblicos y los objetos internos
del objeto. No es necesaria en el objeto salvo para la gestin especfica de smbolos por parte
del usuario, como por ejemplo las funciones DDE o de simulacin de E/S con nombres de
smbolos. Para mayor informacin sobre la tabla de smbolos, vase Manual del Usuario:
Tcnicas Avanzadas de Programacin.
389
ISAx6
Especificaciones DDE
El objeto ISaGRAF NT es un servidor DDE (Dynamic Data Exchange o Intercambio Dinmico
de Datos). Cualquier software con la capacidad de funcionar como cliente, puede conectarse
al objeto para intercambiar variables. Por ejemplo, MSEXCEL puede animar grficos basados
en valores importados del objeto ISaGRAF va DDE.
La funcin DDE requiere la presencia en el objeto de la tabla de smbolos de la aplicacin.
Los temas tratados por DDE se definen de la siguiente manera:
390
sistema objeto
Server nam e :
ISASR Vs
T opics :
SYST EM
Item s :
T O PIC S
<APPLIC AT IO N N AM E>
T O PIC IT EM LIST
<VAR IABLE N AM E>
<VAR IABLE N AM E>
Con esta opcin, se puede especificar la cadencia (en ms) del bucle de aviso DDE.
Valor por defecto: El valor por defecto es de 1000 ms, o el que se indique en el fichero
ISaGRAF.INI.
Ejemplo:
WISAKER -d=100
Se presenta esta ventana con el comando "Opciones/DDE" de
Interfaz del usuario:
la ventana
principal del objeto ISaGRAF NT.
391
392
sistema objeto
Tecla Exit
Al probar una aplicacin en condiciones no industriales, sobre un PC de sobremesa, le puede
surgir al usuario la necesidad de interrumpir la ejecucin de ISaGRAF. Esto se logra mediante
la pulsacin de una combinacin de teclas para prevenir las paradas inesperadas. La
secuencia es:
alt + F4
Un efecto secundario peligroso de esta salida rpida es que no se cierra la interfaz de las
tarjetas de E/S. Por consiguiente, la manera ms apropiada de interrumpir el objeto ISaGRAF
es:
- parar la aplicacin desde el depurador o por medio de la tecla Parar / Start (esto cerrar
las tarjetas de E/S).
- parar el objeto ISaGRAF desde el men del sistema.
393
C.6.4
Mens
Barra de estado
Men "Opciones"
(vase tambin la primera seccin dedicada a NT: Informacin general sobre opciones)
El men "Opciones" permite acceder a las opciones de ejecucin. Propone las siguientes
opciones:
394
sistema objeto
Esclavo permite acceder a la modificacin del nmero de esclavo. La opcin
modificada se activa tras el siguiente arranque del objeto. Esta funcin no est
disponible si se ha arrancado el objeto con al menos una opcin en la lnea de
comando.
Comunicacin permite acceder a la configuracin de la comunicacin. La opcin
modificada se activa tras el siguiente arranque del objeto. Esta funcin no est
disponible si se ha arrancado el objeto con al menos una opcin que sea diferente a
la opcin -s.
DDE permite acceder a la modificacin de la cadencia del bucle de aviso DDE. La
opcin modificada se activa tras el siguiente arranque del objeto. Esta funcin no est
disponible si se ha arrancado el objeto con al menos una opcin que sea diferente a
la opcin -s.
Simulacin E/S aparece seleccionada o no seleccionada, reflejando as el estado de
la opcin. La opcin modificada se activa tras el siguiente inicio/parada de la
aplicacin.
Prioridad permite acceder a la modificacin de prioridades. La opcin modificada se
activa inmediatamente.
Opciones por defecto recupera las opciones de ejecucin por defecto slo para los
siguientes:
- Comunicacin
- DDE
- Coordenadas de la ventana en pantalla
La opcin modificada se activa tras el siguiente arranque del objeto. Esta funcin no
est disponible si se ha arrancado el objeto con al menos una opcin que sea
diferente a la opcin -s.
Men "Mensajes"
El men "Mensajes" se encarga de la gestin de las salidas. Contiene dos comandos:
Reconocer para el parpadeo rojo en caso de producirse errores o mensajes.
Borrar elimina la salida por completo.
395
sin errores
Errores o mensajes
(centro rojo)
Aplicacin activa
Sin aplicacin
396
sistema objeto
Existen tres reas:
a) Configuracin general
Nmero de esclavo
Configuracin de la comunicacin (Si el enlace de comunicacin es el de
Ethernet, adems del nmero del puerto se presenta la lista de direcciones
IP disponibles en el sistema NT actual)
b) Configuracin DDE
Cadencia de bucle de aviso
Nombre del servidor DDE
Nombre de tpicos e tems DDE. Esta informacin es de carcter general y
no afecta a los valores reales. Es ms, los campos situados entre < >
deben sustituirse por los valores reales.
c) Aplicacin
El estado de la aplicacin, que equivale a su nombre cuando existe una
aplicacin activa, y la cadena Sin aplicacin cuando no hay una aplicacin
activa.
El modo de ejecucin de la aplicacin, que indica si la aplicacin se est
ejecutando a travs del procesador de software. En este caso, contiene la
cadena Procesada software . O si la aplicacin ha sido compilada con un
compilador C, en cuyo caso contiene la cadena Compilada C . Si no se
est ejecutando ninguna aplicacin, contiene la cadena Sin aplicacin .
El tamao del cdigo, expresado en bytes. Si la aplicacin activa est
Compilada C , este campo es cero.
El tamao de los datos, expresado en bytes. Esta es la suma de los datos
internos de tiempo de ejecucin y la base de datos de variables.
397
398
sistema objeto
Descripcin general
Este manual est orientado al usuario que ya posee experiencia con los conceptos de
ISaGRAF y las herramientas del Banco de trabajo. Despus de desarrollar aplicaciones de
automatizacin pura, utilizando las funciones de conversin, las funciones C y los
bloques de funcin C de las bibliotecas estndares de ICS Triplex ISaGRAF, existe la
posibilidad de desarrollar funciones de conversin, funciones C y bloques de funcin C
definidos por el usuario. Esto le permite al usuario realzar el PLC ISaGRAF objeto mediante
la creacin de bibliotecas nuevas y sacar el mximo provecho de la flexibilidad de la estacin
de trabajo y la plataforma hardware.
Con un sistema de desarrollo en C y algo de experiencia previa en la programacin en C,
este manual le permitir al usuario personalizar el PLC ISaGRAF objeto para optimizar su
control. Este tipo de desarrollo mejora tanto el rendimiento del PLC objeto como la comodidad
y calidad de desarrollo con el banco de trabajo ISaGRAF para el programador de
automatizaciones.
La informacin que contiene este documento no est dedicada a un nico sistema objeto en
especial. Sin embargo, existen algunas caractersticas (como por ejemplo las capacidades
multitarea) que no son aplicables a determinados sistemas monotarea.
Desarrollo en lenguaje C
El banco de trabajo ISaGRAF no incluye un compilador C o herramientas de compilacin
cruzada. El usuario tiene que tener su propio compilador C, dedicado al sistema ISaGRAF
objeto, para integrar sus componentes C en el kernel ISaGRAF.
Cuando se utiliza un compilador cruzado, el banco de trabajo ISaGRAF ofrece al usuario
puntos de entrada para ejecutar ficheros de comando MS-DOS (.bat) definidos por el usuario
399
en una ventana DOS. El compilador cruzado que se utilice tiene que ejecutarse en una
ventana de emulacin del DOS. Si no, se tiene que cerrar Windows antes de ejecutar los
compiladores y enlazadores en un contexto puro de MS-DOS.
Notas tcnicas
El Gestor de Bibliotecas ISaGRAF le permite al usuario redactar un texto descriptivo para
cada uno de los componentes de la biblioteca. Estas notas tcnicas constituyen la gua del
usuario
del componente C que se desarrolle, beneficiando al programador de
automatizaciones con su descripcin de las correspondientes conversiones, funciones o
bloques de funcin en aplicaciones ISaGRAF.
La conversin, la funcin C o el bloque de funcin C tiene que estar definido de forma
precisa en las notas tcnicas, para que el programador de automatizaciones realmente lo
pueda utilizar como una funcin integrada en ISaGRAF. Para una funcin C, las notas
tcnicas deben describir:
la funcin detallada que procesa la funcin
la descripcin completa de sus parmetros de llamada
el significado de su valor de retorno
la redaccin detallada de sus parmetros de llamada y valor de retorno
el contexto de la aplicacin
400
sistema objeto
C.7.2
El banco de trabajo ISaGRAF incluye una utilidad de conversin lineal que lleva a cabo una
conversin analgica sencilla en el PLC objeto durante el tiempo de proceso. Esta utilidad no
requiere ningn desarrollo C, al estar limitada a funciones estrictamente crecientes o
decrecientes. Para una descripcin completa de estas herramientas, vase el Manual del
Usuario de ISaGRAF.
Las funciones de conversin le permiten al usuario la aplicacin de cualquier conversin
compleja, con operaciones especficas descritas en el lenguaje C. En trminos bsicos, se
define una funcin de conversin tanto para entradas como para salidas. Incluso si no se
utilizara una de las direcciones, se tiene que realizar la implementacin y pruebas antes de
integrar la conversin en el kernel de ISaGRAF, previniendo as cualquier error grave de
sistema debido a una llamada errnea.
Las funciones de conversin estn escritas en el lenguaje C, y compiladas y enlazadas con
el kernel de ISaGRAF. Se tiene que instalar el kernel aumentado en el PLC objeto antes de
utilizar las nuevas funciones de conversin en un proyecto ISaGRAF. No se pueden integrar
las nuevas funciones de conversin en el Simulador de ISaGRAF. Se tienen que simular las
aplicaciones ISaGRAF antes de insertar las funciones de conversin no estndares.
El cdigo fuente en C de las conversiones estndares escritas por ICS Triplex ISaGRAF se
instala junto con el banco de trabajo ISaGRAF. Se pueden utilizar como ejemplos para la
creacin de nuevas funciones. Se recomienda que no se modifiquen las funciones
estndares para que puedan utilizarse en cualquier aplicacin ISaGRAF. Las conversiones
estndares que se suministran con el banco de trabajo ISaGRAF estn soportadas por el
Simulador de ISaGRAF.
Advertencia: Las funciones de conversin son operaciones sincrnicas, activadas por el
Gestor de E/S de ISaGRAF en el tiempo de proceso, durante las fases de entrada o salida del
ciclo de la aplicacin. El tiempo que se invierte en la ejecucin de una funcin de conversin
est incluido en el tiempo de ciclo de la aplicacin ISaGRAF. El usuario tiene que
asegurarse de que la funcin de conversin no incluye ninguna operacin de espera, para
que el procesamiento de ciclos de ISaGRAF no se vea extendido sin necesidad.
401
una variable analgica de entrada o salida y se editan sus parmetros. Se utiliza el campo
"conversin" de la ventana de declaracin de variables para configurar la funcin de
conversin que est vinculada a una variable analgica de E/S:
Aparecen tanto funciones como tablas de conversin en la lista. De ello se desprende que no
se puede utilizar el mismo nombre para una funcin y una tabla. No se puede vincular una
variable a una funcin de conversin que est pendiente de definir o integrar en el kernel de
ISaGRAF.
Interfaz estndar de C
La interfaz de una funcin de conversin siempre tiene el mismo formato. Los parmetros de
llamada y retorno pasan a travs de una estructura. Esta estructura est definida en el fichero
"TACN0DEF.h":
/*
Nombre: tacn0def.h
Fichero de definicin de conversin en objeto
*/
#define DIR_INPUT 0
#define DIR_OUTPUT 1
typedef struct {
uint16 number;
uint16 direction;
T_REAL *before;
T_REAL *after;
} str_cnv;
/* estructura de conversin
*/
/* nmero de conversin (reservado) */
/* direccin de conversin
*/
/* valor antes de conversin
*/
/* valor despus de conversin
*/
*/
*/
402
sistema objeto
el nmero lgico de la funcin de conversin (ubicado en la biblioteca ISaGRAF) y no se tiene
que utilizar en la programacin.
El campo "direction" indica si se tiene que aplicar la conversin a una variable de entrada o a
una variable de salida. Contiene el valor DIR_INPUT para una conversin de entrada, o el
valor DIR_OUTPUT para una conversin de salida.
El campo "before" indica el valor que exista antes de la conversin. Este campo tiene un
significado diferente, segn se trate de una conversin de entrada o de salida. Representa el
valor elctrico (ledo en el dispositivo de entrada) en el caso de una conversin de entrada,
cuando el campo direction asume el valor DIR_INPUT. Representa el valor fsico (el valor
que se utiliza en las ecuaciones programadas) en el caso de una conversin de salidas,
cuando el campo direction asume el valor DIR_OUTPUT.
El campo "after" indica el valor que existe despus de la conversin. Este campo tiene un
significado diferente, segn se trate de una conversin de entrada o de salida. Representa el
valor fsico (el valor que se utiliza en las ecuaciones programadas) en el caso de una
conversin de entrada, cuando el campo direction asume el valor DIR_INPUT. Representa
el valor elctrico (enviado al dispositivo de salida) en el caso de una conversin de salidas,
cuando el campo direction asume el valor DIR_OUTPUT.
El programador puede utilizar las definiciones "ARG_BEFORE" y "ARG_AFTER" para
acceder directamente a los campos before y after de la estructura que se transfiere a la
funcin de conversin C. Los valores procesados son valores flotantes de simple
precisin. Se convierte el resultado a un valor entero largo cuando la conversin se aplica a
una variable analgica entera. Esto significa que se puede utilizar la misma conversin para
las variables analgicas de E/S tanto reales como de valores enteros.
Cdigo fuente
Teniendo en cuenta que se puede utilizar la funcin de conversin para las variables
analgicas tanto de entrada como de salida, el cdigo fuente C de la funcin se divide en
dos partes principales: la conversin de entrada y la conversin de salida. Se utiliza el campo
direction de la estructura de la interfaz para seleccionar la conversin que va a ser aplicada.
El Gestor de Bibliotecas de ISaGRAF genera automticamente el esqueleto completo de la
funcin, una vez que la funcin de conversin ha sido creada. Esto incluye la estructura
principal de seleccin "IF". A continuacin se muestra el esqueleto estndar de una funcin
de conversin:
/*
Funcin de conversin
Nombre: sample
*/
#include <tasy0def.h>
#include <tacn0def.h>
void CNV_sample (str_cnv *arg)
{
if (DIRECTION == DIR_INPUT) { /*CONVERSIN ENTRADA*/
403
}
else { /*CONVERSIN SALIDA*/
}
}
/* La siguiente funcin muestra el enlace con el gestor E/S ISaGRAF, utilizando el nombre
de la conversin. Esta funcin est completamente generada por el Gestor de Bibliotecas
ISaGRAF. */
UFP cnvdef_sample (char *name)
{
sys_strcpy (name, "SAMPLE");
/* da el nombre de la conversin */
return (CNV_sample);
/* retorna la funcin de implementacin */
}
La mejor manera de completar la parte especfica de la funcin es mediante la creacin de
dos funciones locales independientes para la conversin de entradas y la conversin de
salidas. Estas funciones sern invocadas por el algoritmo principal, como se explica en los
comentarios del ejemplo anterior, en la estructura IF principal.
Se requiere el fichero "TASY0DEF.H", del kernel de ISaGRAF, para las definiciones
dependientes del sistema. Tambin contiene la definicin del tipo UFP, que representa un
puntero a funciones void y que se utiliza para la funcin de declaracin.
404
sistema objeto
La utilizacin de los prefijos "CNV_" y "cnvdef_" para las funciones de implementacin y
definicin le permite al usuario nombrar una conversin con una palabra clave reservada del
lenguaje C, o el nombre de una funcin ya existente de las bibliotecas C de ISaGRAF.
Se pueden aadir otras sentencias a la funcin de declaracin para realizar cualquier
operacin especfica de inicializacin que est relacionada con esta conversin. El sistema
ISaGRAF asegura al usuario que esta funcin slo se invoca una vez cuando arranca la
aplicacin.
Se invoca la funcin de declaracin para cualquier funcin integrada de conversin, incluso si
no se utiliza en la aplicacin ISaGRAF. El kernel de ISaGRAF detectar un error fatal si la
conversin que se utiliza en la aplicacin no est integrada en el kernel.
Antes de enlazar nuevas funciones con el kernel, el usuario tiene que escribir otro fichero
fuente en C, llamado "GRCN0LIB.C", e insertarlo (junto con las funciones de conversin) en
la lista de ficheros para el enlazador. El fichero "GRCN0LIB.C" slo contiene un vector de
funciones de declaracin. Se lee este vector durante las inicializaciones de la aplicacin, para
establecer un enlace dinmico con las funciones de conversin escritas en C. A
continuacin se muestra un ejemplo de un fichero de este tipo:
405
Lmites
La biblioteca de ISaGRAF puede contener hasta 128 funciones de conversin. Se puede
procesar cualquier tipo de operacin con una funcin de conversin. Se debe tener en cuenta
que las funciones se invocan en el ciclo ISaGRAF de manera sincrnica, por lo que la
ejecucin de la funcin tiene un efecto directo sobre los tiempos de ciclo.
C.7.3
Funciones "C"
Se utilizan las funciones "C" para aumentar las capacidades estndar de los lenguajes ST y
FBD. Se pueden utilizar para realizar cualquier clculo especfico, llamadas de sistema o
comunicaciones especficos, o para instalar un conjunto de servicios para el dilogo entre una
aplicacin ISaGRAF y otras tareas. Las funciones estn escritas en el lenguaje C y estn
compiladas y enlazadas con el kernel de ISaGRAF. Se tiene que instalar el kernel aumentado
en el PLC objeto antes de utilizar las nuevas funciones en un proyecto ISaGRAF.
No se pueden integrar las nuevas funciones en el Simulador de ISaGRAF. Se tienen que
simular las aplicaciones ISaGRAF antes de utilizarse las funciones no estndares.
Advertencia: Las funciones son operaciones sncronas, activadas por el kernel de ISaGRAF
durante el ciclo de la aplicacin. El tiempo que se invierte en la ejecucin de una funcin est
incluido en el tiempo de ciclo de la aplicacin ISaGRAF. El usuario tiene que asegurarse de
que la funcin no incluye ninguna operacin de espera, para que el procesamiento de ciclos
de ISaGRAF no se vea extendido sin necesidad.
406
sistema objeto
result := ProcName (par1, par2, ... parN);
Un programa FBD puede invocar a cualquier funcin C. Se utiliza una funcin como una
caja estndar de funcin. Los parmetros de llamada estn conectados al lateral izquierdo
de la caja de funcin. El parmetro de retorno est conectado al lateral derecho de la caja.
Una caja de funcin tiene el siguiente aspecto estndar:
Nombre de la funcin
Parmetros
de llamada
XXX
Parmetro de
retorno
Se puede invocar a una funcin C desde cualquier bloque de acciones SFC, o en cualquier
condicin booleana asociada a una transicin.
La lista que aparece en la parte superior de la ventana muestra los parmetros de la funcin
C, de acuerdo con el orden marcado por el prototipo de invocacin de funciones: los
parmetros de llamada al principio y el de retorno al final. La parte inferior de la ventana
presenta una descripcin detallada del parmetro que est seleccionado en la lista.:
z el nombre del parmetro
z la direccin (llamada/retorno) del parmetro
z el tipo de parmetro
Se puede utilizar cualquiera de los tipos de datos de ISaGRAF como un parmetro: Booleano,
Analgico entero, Analgico real, Temporizador o Mensaje. Se tiene que diferenciar entre
analgicos enteros y reales.
A continuacin se presenta la correspondencia entre los tipos ISaGRAF y los tipos C:
BOOLEANO
unsigned long
ANALGICO
long
407
REAL
TEMPORIZADOR
float
unsigned long
MENSAJE
char *
long
long
float
long
char
T_BOO;
T_ANA;
T_REAL;
T_TMR;
*T_MSG;
typedef struct {
/* CALL */
/* RETURN */
} str_arg;
T_REAL _param1;
T_REAL _param2;
#define PARAM1
(arg->_param1)
408
sistema objeto
#define PARAM2
(arg->_param2)
/* fin de fichero */
En la siguiente tabla, se presenta la relacin que existe entre los tipos ISaGRAF y los tipos
"C". Los tipos ISaGRAF estn definidos como tipos "C" en el fichero de definiciones de la
funcin.
Booleano
Analgico
entero
Analgico real
T_BOO
T_ANA
T_REAL
Temporizador
Mensaje
T_TMR
T_MSG
Cdigo fuente
A continuacin se muestra el esqueleto estndar de la implementacin de una funcin C:
409
}
/* fin de fichero */
Se requiere el fichero cabecera "TASY0DEF.H", del kernel de ISaGRAF, para las definiciones
dependientes del sistema. Tambin contiene la definicin del tipo UFP, que representa un
puntero a funciones void y que se utiliza para la funcin de declaracin.
410
sistema objeto
uspdef_fc1,
uspdef_fc2,
uspdef_fc3,
uspdef_fc4,
NULL };
/* fin de fichero */
Se tiene que finalizar el vector USPDEF por medio de un puntero NULO. Pueden producirse
conflictos si no se cumple con esta condicin. Se producirn referencias no resueltas a la
hora de enlazar el nuevo kernel de ISaGRAF si no est definido el vector USPDEF. Al escribir
este fichero se puede crear un nuevo kernel, incluyendo todas las funciones existentes.
Tambin se puede construir un kernel personalizado para un nico proyecto, mediante la
insercin en el vector USPDEF de slo las funciones que se utilizan en el proyecto. El
Generador de Cdigo de ISaGRAF genera el fichero "GRUS0LIB.C" automticamente cuando
se construye el cdigo de una aplicacin. El fichero, que se ubica en el directorio del proyecto
ISaGRAF, abarca nicamente las funciones que se utilizan en el proyecto.
Lmites
La biblioteca de ISaGRAF puede contener hasta 255 funciones C. Se puede procesar
cualquier tipo de operacin con una funcin. Se debe tener en cuenta que las funciones se
invocan en el ciclo ISaGRAF de manera sincrnica, por lo que la ejecucin de la funcin
tiene un efecto directo sobre los tiempos de ciclo.
Ejemplo completo
A continuacin se presenta la programacin completa de una funcin de muestra titulada
"sample", que realiza una simple suma. A continuacin se da la nota tcnica de la funcin.
nombre:
descripcin:
SAMPLE
realiza una simple suma de valores analgicos enteros
fecha de creacin:
autor:
1 de julio de 1992
ICS Triplex ISaGRAF
llamada:
retorno:
prototipo:
411
/* parmetro de llamada #1 */
/* parmetro de llamada #2 */
/* parmetro de retorno*/
(arg->_par1)
(arg->_par2)
(arg->_sum)
/* fin de fichero */
A continuacin est el cdigo fuente C de la funcin. Slo las lneas impresas con
caracteres en negrita fueron introducidas manualmente por el programador de C.
412
sistema objeto
{
SUM = PAR1 + PAR2;
}
/* declaracin de servicio requerido para enlace con kernel ISaGRAF */
UFP uspdef_sample (char *name)
{
strcpy (name, "SAMPLE");
return (USP_sample);
}
/* fin de fichero */
C.7.4
Los bloques de funcin "C" asocian operaciones con datos estticos. Completan el conjunto
de funciones C al permitir el procesamiento de objetos estticos. Se suelen utilizar para
aumentar las capacidades estndar de los lenguajes ST y FBD. A diferencia de las funciones,
que procesan valores, los bloques de funcin pueden procesar datos estticos. Esto significa
que un algoritmo de bloque de funcin puede gestionar variaciones en datos a lo largo del
tiempo.
Los bloques de funcin estn escritos en el lenguaje C, y estn compilados y enlazados al
kernel de ISaGRAF. Se tiene que instalar el kernel aumentado en el PLC objeto antes de
utilizar los nuevos bloques de funcin en proyectos ISaGRAF. No se pueden integrar nuevos
bloques de funcin en el Simulador de ISaGRAF. Las aplicaciones de ISaGRAF tienen que
ser simuladas antes de utilizarse las funciones no estndares.
Advertencia: Las llamadas a bloque de funcin son operaciones sncronas, activadas por el
kernel de ISaGRAF durante el ciclo de la aplicacin. El tiempo que se invierte en la ejecucin
de un servicio de activacin o lectura de bloque de funcin est incluido en el tiempo de ciclo
de la aplicacin ISaGRAF. El usuario tiene que asegurarse de que el bloque de funcin no
incluye ninguna operacin de espera, para que el procesamiento de ciclos de ISaGRAF no
supere el tiempo mximo permitido.
413
R_TRIG
Parmetros de entrada
boolean_value
Algoritmo:
rising_edge = boolean_value and
not(previous_state);
previous_state = boolean_value;
Parmetros de salida
rising_edge
Datos ocultos:
previous_state
Se necesita la variable esttica oculta "previous_state" para el clculo del flanco. Esta
variable tiene que ser diferente para cada utilizacin del bloque de funcin "TRIG" en la
aplicacin. Las instancias de los bloques de funcin que se utilizan en el lenguaje ST tienen
que ser declaradas en el diccionario. Dado que el bloque de funcin pose datos internos
ocultos, cada copia (instancia) de un bloque de funcin tiene que estar identificada por un
nombre nico. La asignacin de nombre al tipo de bloque se realiza por medio del Gestor de
Bibliotecas. La asignacin de nombres a las instancias se realiza por medio del editor de
diccionarios.
No se tienen que declarar los bloques de funcin utilizados en el lenguaje FBD, ya que el
editor FBD de ISaGRAF declara las instancias de los bloques utilizados automticamente.
Las instancias de bloque de funcin declaradas automticamente por el editor FBD de
ISaGRAF son siempre LOCALES con respecto al programa editado.
414
sistema objeto
se utiliza para representar el parmetro de retorno llamado "parname", de la instancia de
bloque de funcin llamada "FBINSTNAME".
Las instancias de los bloques de funcin que se utilizan en el lenguaje ST tienen que estar
declaradas en el diccionario. Cada copia (instancia) de un bloque de funcin debe estar
identificada por un nombre nico. A continuacin se presenta un ejemplo de la declaracin de
instancias en el diccionario de ISaGRAF:
instancia:
TRIG1
TRIG2
tipo:
R_TRIG
R_TRIG
Parmetros
de llamada
X XX
Parmetros
de retorno
No se tienen que declarar los bloques de funcin utilizados en el lenguaje FBD, ya que el
editor FBD de ISaGRAF declara las instancias de los bloques utilizados automticamente.
Las instancias de bloques de funcin declaradas automticamente por el editor FBD de
ISaGRAF son siempre LOCALES con respecto al programa editado. A continuacin se
presenta el ejemplo anterior, programado en el lenguaje FBD:
r_trig
&
boo_input1
CLK
r_trig
boo_input2
CLK
Command
Q
415
La lista que aparece en la parte superior de la ventana muestra los parmetros del bloque de
funcin C, de acuerdo con el orden marcado por el prototipo de invocacin de funciones:
primero los parmetros de llamada y despus los de retorno. La parte inferior de la ventana
presenta una descripcin detallada del parmetro que est seleccionado en la lista.:
z el nombre del parmetro
z la direccin (llamada/retorno) del parmetro
z el tipo de parmetro
Se puede utilizar cualquiera de los tipos de datos de ISaGRAF como un parmetro: Booleano,
Analgico entero, Analgico real, Tiempo o Mensaje. Se tiene que diferenciar entre
analgicos enteros y reales.
A continuacin se presenta la correspondencia entre los tipos ISaGRAF y los tipos C:
BOOLEANO
unsigned long
ANALGICO
REAL
TEMPORIZADOR
long
float
unsigned long
MENSAJE
char *
416
sistema objeto
el mismo nombre para los parmetros de funciones diferentes. Se utiliza el nombre de un
parmetro para identificar el parmetro en el cdigo fuente C.
Se utiliza el comando "Insertar" para insertar un parmetro nuevo delante del parmetro
seleccionado. Se utiliza el comando "Borrar" para borrar el parmetro seleccionado. El
comando "Ordenar" reordena (clasifica) los parmetros de forma automtica, colocando los
parmetros de retorno al final de la lista. Se pulsa el botn "Aceptar" para guardar la
definicin de la interfaz del bloque de funcin y cerrar la ventana de dilogo. Se pulsa el botn
"Cancelar" para cerrar la ventana de dilogo sin efectuar cambios en la definicin de la
interfaz del bloque de funcin.
T_BOO;
T_ANA;
T_REAL;
T_TMR;
*T_MSG;
T_BOO _par1;
T_BOO _par2;
(arg->_par1)
(arg->_par2)
0
1
/* fin de fichero */
417
En la siguiente tabla, se presenta la relacin que existe entre los tipos ISaGRAF y los tipos
"C". Los tipos ISaGRAF estn definidos como tipos "C" en el fichero de definiciones de la
funcin.
Booleano
Analgico
Real
Temporizador
Mensaje
T_BOO
T_ANA
T_REAL
T_TMR
T_MSG
Cdigo fuente
La implementacin en lenguaje C de un bloque de funcin est dividida en tres puntos de
entrada diferentes:
servicio de inicializacin
servicio de activacin procesamiento de los parmetros de llamada
servicio de lectura de parmetros retornados
418
sistema objeto
El kernel de ISaGRAF invoca al servicio de lectura para leer el valor actual de un parmetro
de retorno de una instancia. Este servicio no tiene que realizar clculos especiales; slo
acciona la transferencia entre los datos ocultos y la aplicacin ISaGRAF.
Diagrama funcional:
Parmetros
de llamada
Parmetros
de retorno
leer
Datos ocultos:
(Asignar)
Inicializar
R_TRIG
Cdigo "C" R_TRIG
R_TRIG
GATE
La memoria que se necesita para la estructura de datos de cada instancia est asignada por
el sistema ISaGRAF, cuando arranca la aplicacin. Se pasa un puntero que seala la
estructura de datos de instancia asociada a los servicios de activar y leer.
El Gestor de Biblioteca de ISaGRAF genera automticamente el esqueleto del cdigo fuente
C para la definicin del tipo de estructura de datos. El tipo de estructura de datos siempre se
llama "str_data". El programador no debe cambiar este nombre, para asegurar la
compatibilidad con las cabeceras de servicio. Generalmente, los datos ocultos agrupan a las
variables internas con una imagen de los parmetros de retorno. El servicio de lectura de
bloques de funcin slo se utiliza para acceder al parmetro de retorno, y no se debe usar
para llevar a cabo otras operaciones.
419
Servicio de inicializacin
El kernel de ISaGRAF invoca el servicio de inicializacin de un bloque de funcin cuando
arranca la aplicacin. Le permite al programador C solicitar al sistema que asigne memoria
para una instancia. A continuacin se muestra la programacin estndar del servicio de
inicializacin:
Servicio de activacin
Se invoca el servicio de "activacin" en cada ciclo objeto, para cada instancia de bloque de
funcin que se utilice en la aplicacin. Este servicio procesa los parmetros de llamada y
ejecuta el algoritmo principal de bloque de funcin, con la finalidad de actualizar los datos
estticos ocultos y el valor de los parmetros de retorno. A continuacin de presenta el
esqueleto estndar del servicio de activacin:
void FBACT_xxx (
uint16 hinstance,
str_data *data,
str_arg *arg
)
{
}
El argumento "hinstance" es el nmero lgico de la instancia. Est reservado para las
operaciones internas de ISaGRAF y no se puede utilizar en la programacin del servicio. El
argumento data es un puntero que seala la estructura de datos asociada a la instancia. El
argumento arg es un puntero que seala la estructura que contiene el valor de los
parmetros de llamada. El programador deber utilizar los identificadores que estn definidos
en la cabecera C del bloque de funcin para poder acceder a los campos de la estructura
arg.
420
sistema objeto
El algoritmo "activacin" procesa los parmetros de llamada (almacenados en la estructura
arg) y actualiza los campos de la estructura "data". El siguiente ejemplo muestra el servicio
de "activacin" del bloque de funcin TRIG (deteccin de flanco de subida):
/* parmetros de llamada */
/* entrada de disparo */
(arg->_clk)
} str_data;
/* servicio de activacin */
void FBACT_trig (uint16 hinstance, str_data *data, str_arg *arg)
{
data->edge_detect = (T_BOO)(CLK && !data->prev_state);
data->prev_state = CLK; /* parmetro de llamada */
}
El Gestor de Bibliotecas de ISaGRAF genera el esqueleto del cdigo fuente C de este
servicio automticamente, cuando se crea el bloque de funcin.
421
(*Progrmacin ST *)
Implementacin "C"
ACTIVATE
service
INSTANCE
DATA
READ
service
Teniendo en cuenta que el servicio leer puede ser invocado en ms de una ocasin durante
el mismo ciclo, con relacin al mismo parmetro de retorno o la misma instancia de bloque de
funcin, no se tienen que realizar clculos especiales en un servicio de este tipo. Se limita a
accionar la transferencia entre datos ocultos y la aplicacin ISaGRAF. A continuacin se
muestra el esqueleto estndar del servicio de lectura:
((T_BOO *)value)
((T_ANA *)value)
((T_REAL *)value)
((T_TMR *)value)
((T_MSG *)value)
422
sistema objeto
El argumento "parno" es el nmero lgico del parmetro de retorno cuyo valor se desea
conocer. Utilizar los identificadores que estn definidos en la cabecera C del bloque de
funcin para identificar los parmetros de retorno. Este tipo de identificador comenzar con el
prefijo "FBLPNO_". El argumento "value" es un puntero que seala el buffer (memoria
intermedia) en el que se debe copiar el valor actual del parmetro de retorno al cual se ha
accedido. El tipo de dato al que se seala con este argumento depende del tipo ISaGRAF del
parmetro de retorno. La siguiente tabla ilustra la relacin que existe entre los tipos ISaGRAF
y los tipos de datos de un buffer C:
Booleano
long
Analgico
Real
long
float
Temporizador
long
Mensaje
char *
Se utilizan las siguientes macros para acceder al buffer de copias, de acuerdo con el tipo de
parmetro de retorno al que se haya accedido:
#define
#define
#define
#define
#define
BOO_VALUE
ANA_VALUE
REAL_VALUE
TMR_VALUE
MSG_VALUE
((T_BOO *)value)
((T_ANA *)value)
((T_REAL *)value)
((T_TMR *)value)
((T_MSG *)value)
A continuacin se muestran algunas operaciones que se emplean con frecuencia para copiar
el valor o el parmetro al buffer de ISaGRAF:
423
#include <tasy0def.h>
#include <grfb0nnn.h> /* nnn es el nmero del bloque de funcin en biblioteca */
/* estructura de datos ocultos para cada instancia del bloque */
typedef struct {
/* definicin de campos */
} str_data;
/* servicio de activacin: retorna el tamao de los datos ocultos necesitados */
word FBINIT_xxx (uint16 hinstance)
{
return (sizeof (str_data));
}
/* servicio de activacin: procesa los parmetros de llamada */
void FBACT_xxx (uint16 hinstance, str_data *data, str_arg *arg)
{
/* ... */
}
/* conversin de tipo para copiar el valor de un parmetro de retorno */
#define BOO_VALUE ((T_BOO *)value)
#define ANA_VALUE ((T_ANA *)value)
#define REAL_VALUE ((T_REAL *)value)
#define TMR_VALUE ((T_TMR *)value)
#define MSG_VALUE ((T_MSG *)value)
/* servicio de lectura de parmetros de retorno: llamada por cada parmetro retornado */
void FBREAD_xxx (uint16 hinstance, str_data *data, uint16 parno, void *value)
{
switch(parno)
{
case FBLPNO_XX: *???_VALUE = ...; break;
case FBLPNO_YY: *???_VALUE = ...; break;
....
}
/* La siguiente funcin se utiliza para la inicializacin del bloque de funcin y la
declaracin de su implementacin. Realiza el enlace con el kernel ISaGRAF, usando el
nombre del bloque de funcin. Este servicio es generado completamente por el Gestor de
Bibliotecas de ISaGRAF. */
ABP fbldef_xxx (char *name, IBP *initproc, RBP *readproc)
424
sistema objeto
{
strcpy (name, "XXX");
*initproc = (IBP)FBINIT_xxx;
*readproc = (RBP)FBREAD_xxx;
return ((ABP)FBACT_xxx);
}
/* fin de fichero */
Se requiere el fichero "TASY0DEF.H", del kernel de ISaGRAF, para las definiciones
dependientes del sistema. Tambin contiene la definicin de los tipos de datos que
representan punteros que sealan los servicios implementados.
425
Lmites
La biblioteca de ISaGRAF puede contener hasta 255 bloques de funcin C. Se puede
procesar cualquier tipo de operacin con una funcin. Se puede copiar (instanciar) cada tipo
de bloque de funcin hasta 255 veces en el mismo proyecto.
Se debe tener en cuenta que los servicios de bloques de funcin se invocan en el ciclo
ISaGRAF de manera sncrona, por lo que la ejecucin del bloque de funcin tiene un efecto
directo sobre los tiempos de ciclo.
Ejemplo completo
A continuacin se presenta la programacin completa de una funcin de muestra titulada
"sample", que es un contador ascendente. Se encuentran las notas tcnicas del bloque de
funcin al final.
nombre:
descripcin:
SAMPLE
Contador ascendente
fecha de creacin:
1 de febrero de 1994
426
sistema objeto
autor:
llamada
CU : contar entradas
R : resetear comando
PV : valor mx. programado
Q : deteccin mx.
CV : contar resultado
retorno:
prototipo:
(arg->_cu)
(arg->_r)
(arg->_pv)
427
#define FBLPNO_Q
#define FBLPNO_CV
0
1
/* fin de fichero */
A continuacin est el cdigo fuente C del bloque de funcin. Slo las lneas impresas con
caracteres en negrita fueron introducidas manualmente por el programador de C.
428
sistema objeto
void FBREAD_sample (uint16 hinstance, str_data *data, uint16 parno, void *value)
{
switch (parno) {
case FBLPNO_Q : *BOO_VALUE = data->overflow; break;
case FBLPNO_CV : *ANA_VALUE = data->value; break;
}
}
/* servicio de declaracin usado para enlace dinmico con el kernel ISaGRAF */
ABP fbldef_sample (char *name, IBP *initproc, RBP *readproc)
{
strcpy (name, "SAMPLE");
*initproc = (IBP)FBINIT_sample;
*readproc = (RBP)FBREAD_sample;
return ((ABP)FBACT_sample);
}
/* fin de fichero */
C.7.5
\isawin\lib\defs\TACN0DEF.H
\isawin\lib\src\GRCN0nnn.H
\isawin\lib\defs\GRUS0nnn.H
\isawin\lib\src\GRUS0nnn.C
\isawin\lib\defs\GRFB0nnn.H
\isawin\lib\src\GRFB0nnn.C
429
funct_A
funct_B
funct_C
fbl_A
fbl_B
fbl_C
SCALE
BCD
El Gestor de Bibliotecas de ISaGRAF actualiza estos ficheros automticamente cada vez que
se crea, se renombra, se copia o se borra una conversin, una funcin o un bloque de
funcin. El Generador de Cdigo de ISaGRAF genera los siguientes ficheros de forma
automtica cuando se construye una aplicacin:
\isawin\apl\ppp\GRCN0LIB.C
\isawin\apl\ppp\GRUS0LIB.C
\isawin\apl\ppp\GRFB0LIB.C
430
sistema objeto
herramienta nativa de compilacin. Para ello, se puede utilizar la herramienta estndar de
TERMINAL que se suministra dentro de Windows.
Cuando se gestionan ficheros fuente en el sistema objeto, se tienen que actualizar los
ficheros de definicin mediante una nueva operacin de carga cada vez que el Gestor de
Bibliotecas de ISaGRAF modifica una interfaz de funcin.
Las lneas de comando que se utilizan para efectuar la carga de ficheros pueden agruparse,
por ejemplo, en un fichero de comandos que se puede ejecutar posteriormente desde el men
de herramientas del banco de trabajo (vase Manual del Usuario: Gestin de Programas).
El disquete del objeto ISaGRAF contiene numerosas utilidades para compilar y enlazar las
conversiones, las funciones y los bloques de funcin con las bibliotecas del kernel de
ISaGRAF.
Existen dos implementaciones:
z ISaGRAF monotarea: se realizan todas las funciones en el mismo programa
z ISaGRAF multitarea: se dedica una tarea independiente a la comunicacin
En ambos casos, los componentes C estn agrupados en las mismas bibliotecas: para el
programador C, no se distingue entre monotarea y multitarea. Para las versiones monotarea,
las bibliotecas C del usuario estn enlazadas con la tarea simple (generalmente conocida
como isa), mientras que para la versin multitarea las versiones estn enlazadas con la tarea
del kernel (generalmente conocida como isaker).
431
Sistema de
desarrollo
Sistema
objeto
USER "C"
WORKBENCH
COM
KERNEL
OEM
SYSTEM
La parte interior del software ISaGRAF es independiente del hardware. Ejecuta los lenguajes
IEC y tiene su propia base de datos de variables.
El primer paso, cuando se est haciendo el enlace con el kernel, es el de construir bibliotecas
de todas las conversiones, las funciones y los bloques de funcin que se vayan a necesitar
para el proyecto especfico.
Bibliotec
a
ISAUSP
ISAFBL
ISACNV
Contenido
- fichero objeto GRUS0LIB (vector de funciones declaradas)
- fichero objeto de cada funcin que se haya integrado
- fichero objeto GRFB0LIB (vector de bloques de funcin declarados)
- fichero objeto de cada bloque de funcin que se haya integrado
- fichero objeto GRCN0LIB (vector de conversiones declaradas)
- fichero objeto de cada funcin de conversin que se haya integrado
Despus, el programador tiene que vincular estas nuevas bibliotecas con los dems ficheros
y bibliotecas objeto del kernel de ISaGRAF. En el siguiente diagrama, se perfilan las
diferentes fases de la integracin de un desarrollo en C del usuario:
grcn0lib.C
grcn0nnn.C
Utilidad de
librera
isacnv
grus0lib.C
grfb0lib.C
grus0nnn.C
grfb0nnn.C
Utilidad de
librera
Utilidad de
librera
isausp
isafbl
Otras libreras
Utilidad de enlace
isaker
isa
A continuacin se muestra la lista exacta de mdulos y bibliotecas objeto que se tienen que
unir durante el enlace:
432
sistema objeto
tast0mai
tats0com
Biblioteca kernel:
Biblioteca kernel:
isaker
isaoem
Biblioteca usuario:
Biblioteca usuario:
Biblioteca usuario:
isausp
isafbl
isacnv
Biblioteca kernel:
isasys
tast0mai
tast0com
Biblioteca kernel:
Biblioteca kernel:
Biblioteca kernel:
isaker
isatst
isaoem
Biblioteca usuario:
Biblioteca usuario:
Biblioteca usuario:
isausp
isafbl
isacnv
Biblioteca kernel:
isasys
Puede que el programador tenga que seguir el orden exacto de los mdulos y bibliotecas
objeto que se presentan en estas tablas. Los mdulos y bibliotecas objeto tienen extensiones
estndares (".lib", ".obj", ".l", ".r"...) segn el sistema objeto.
433
Se tiene que definir una constante especial para la compilacin de los componentes de
bibliotecas C. Indica el tipo de sistema y procesadores objeto para que la fuente de
conversiones, funciones y bloques de funcin pueda ser independiente del sistema. Estos
valores constantes tienen los siguientes nombres:
DOS.........
ISAWNT .....
OS9 .........
VxWorks ....
Los ficheros de comando de las utilidades (para compilar y enlazar) que se suministran con el
software ISaGRAF objeto ensean al usuario la manera de definir el valor constante ms
apropiado en la lnea de comando del compilador.
Compiladores soportados
Se soportan los siguientes compiladores para el desarrollo de conversiones, funciones y
bloques de funcin, y para el enlace con el kernel de ISaGRAF:
Contactar con ICS Triplex ISaGRAF para ms informacin sobre el uso de otros
compiladores.
Resumen
A continuacin se facilita un resumen de las operaciones que deben llevarse a cabo al
desarrollar una conversin, una funcin o un bloque de funcin nuevo.
1.
2.
3.
4.
5.
434
sistema objeto
en los nombres de las rutas de acceso de los correspondientes ficheros fuente
.C y .H.
6.
7.
8.
9.
10.
Insertar el nombre del mdulo objeto en la lista de ficheros objeto que se utilizan
para construir la biblioteca correspondiente.
11.
12.
13.
435
C.8.1
Una red Modbus est compuesta por una nica estacin maestra (que suele ser un sistema
de visualizacin de procesos) y una o ms estaciones esclavas (que suelen ser PLCs).
Maestro
Esclavo
Esclavo
Esclavo
Esclavo
El maestro enva las peticiones de uno en uno a cada esclavo (utilizando su nmero de
esclavo) y espera que el esclavo conteste antes de enviarle la siguiente pregunta. Los
esclavos que no estn afectados no responden.
Cada trama contiene un nmero de esclavo, un nmero de peticin y los correspondientes
datos de peticin, y un valor de comprobacin de 16 bits (CRC).
Si no se recibe una respuesta antes de transcurrir un determinado tiempo de espera, se
puede repetir la pregunta un cierto nmero de veces antes de que el maestro declare al
esclavo desconectado.
436
sistema objeto
El valor del tiempo de espera y el nmero de nuevos intentos tienen que ajustarse en la
estacin maestra, para adaptarlos a los requisitos del esclavo (dependiendo de la aplicacin,
etc.).
Si se produce un error en el procesamiento de una interrogacin, el esclavo puede generar un
mensaje de error en lugar de enviar la trama de respuesta que se esperaba.
Modbus es un protocolo Modicon, pero no es un estndar internacional. Existen muchas
implementaciones diferentes de protocolos compatibles con Modbus, con muchas
diferencias posibles tales como:
Lista de cdigos de funcin implementados
Mapeo de direcciones
Protocolo RTU (cdigos binarios) o ASCII
etc...
C.8.2
Implementacin en ISaGRAF
Acceso a las variables de la aplicacin
Leer N bits
Leer N palabras
Escribir 1 bit
Escribir 1 palabra
Escribir N palabras
Se puede acceder a las variables de la aplicacin ISaGRAF por medio de sus direcciones de
red, siempre y cuando hayan sido definidas en el diccionario del banco de trabajo. Estas
variables pueden ser:
Variables booleanas o analgicas
Variables de entrada, de salida o internas
Variables locales o globales
Para escribir una variable booleana, se pueden utilizar las funciones 5, 6 16. A la hora de
escribir, un valor VERDADERO es cualquier valor no igual a cero.
Para leer una variable booleana, se pueden utilizar las funciones 1 3. Con la funcin 1, se
recuperan los valores en un campo de bits; con la funcin 3, se recuperan en Bytes (un valor
VERDADERO corresponde a 0xFFFF).
Para escribir una variable analgica, se pueden utilizar las funciones 6 16. El valor es un
valor entero de 16 bits entre -32768 y +32767 (las variables del objeto ISaGRAF son de 32
bits).
Para leer una variable analgica, se debe utilizar la funcin 3. El valor ledo es un valor entero
de 16 bits entre -32768 y +32767. Al nivel de objeto, las variables analgicas son de 32 bits,
437
por lo que un valor en el objeto que supere el rango de los 16 bits (positivo o negativo) ser
ledo con un valor de rango mximo de 16 bits (positivo o negativo).
No se puede acceder a las variables reales con una peticin Modbus.
Advertencia:
La implementacin ISaGRAF no gestiona los cdigos de error tales como direccin modbus
desconocida.
Notaciones:
slv
nbw
nbb
nbi
addH
addL
vH
vL
V
bfd
crcH
crcL
Nmero de esclavo
Nmero de palabras
Nmero de bytes
Nmero de bits
Direccin de red (Byte alto)
Direccin de red (Byte bajo)
Valor (Byte alto)
Valor (Byte bajo)
Valor Byte
Campo de bits (Bytes nbb)
Valor de comprobacin
(Byte alto)
Valor de comprobacin
(Byte bajo)
slv
01
addH
Respuesta
slv
01
nbb
addL
bfd
Byte 1
00
nbi
...
crcH
crcL
crcH
crcL
Byte nbb
Bit 1
Byte 1
Bit 9
Byte 2
Bit nbi
Byte nbb
438
sistema objeto
Bit nbi corresponde al valor de la variable en la direccin de red addH/addL + nbi -1.
X significa un valor indefinido.
FUNCIN 3: leer N palabras
slv
03
addH
addL
00
nbw
crcH
crcL
Respuesta
slv
03
nbb
vH
vL
...
crcH
crcL
slv
05
addH
addL
vH
00
crcH
crcL
Respuesta
slv
05
addH
addL
vH
00
crcH
crcL
slv
06
addH
addL
vH
vL
crcH
crcL
Respuesta
slv
06
addH
addL
vH
vL
crcH
crcL
slv
10
addH addL 00
nbw
nbb
vH
Respuest slv
a
10
addH addL 00
nbw
CrcH crcL
vL
...
crcH crcL
Ejemplos:
Funcin 1: leer 15 bits, partiendo de la direccin de red 0x1020, en el esclavo 1
Pregunta
01
01
10
20
00
0F
79
Respuesta
01
01
02
00
12
39
F1
04
439
01
10
21
00
00
02
04
12
Respuesta
01
10
21
00
00
02
4B
F4
34
56
78
1C
CA
Transferencia de ficheros
En comparacin con los buses de campo modernos, el protocolo Modbus ofrece unos
servicios muy pobres si no se ampla con cdigos de funciones especficos de los fabricantes.
En nuestra situacin, en la que se ejecuta ISaGRAF sobre una base informtica potente y
flexible, existen dos restricciones en el protocolo Modbus:
Slo se puede acceder a las variables de ISaGRAF
Por estas razones, ISaGRAF ofrece un conjunto de peticiones de transferencia de datos tipo
Modbus, o un protocolo de gestin remota de ficheros. Se han implementado estas
caractersticas para permitir:
Carga de ficheros binarios o ASCII
Recuperacin de ficheros binarios o ASCII
Intercambio dinmico de datos a travs de ficheros compartidos virtuales o fsicos
En consecuencia, con el enlace de comunicacin de ISaGRAF, cualquier aplicacin
independiente de ISaGRAF se puede comunicar fcilmente con un objeto remoto.
El protocolo est basado en los siguientes conceptos:
El fichero del lado del objeto ISaGRAF se llama fichero remoto
El fichero que reside en el ordenador maestro se llama fichero local
Se accede a cada byte de un fichero con una direccin de base de 32 bits ms una
direccin de byte de 16 bits
Existen peticiones para seleccionar el nombre del fichero remoto, para seleccionar la
direccin de base, para leer o escribir datos en el fichero remoto utilizando la direccin de
byte de 16 bits.
FUNCTION 17: escribir datos
11
addH addL 00
nbb
nbb
Respuesta slv
11
addH addL 00
nbb
crcH crcL
Pregunta
440
vH
vL
...
crcH crcL
sistema objeto
slv
12
addH addL 00
nbb
crcH crcL
Respuesta slv
12
nbb
...
crcH crcL
La direccin en la que se leen bytes se especifica en addH/addL. Debe ser inferior a F000.
Leer el nmero (nbb) especificado de bytes desde el nombre de fichero remoto previamente
seleccionado, partiendo de la direccin especificada (addH/addL con cualquier valor de 16
bits) aadida a la direccin de base previamente seleccionada.
Los valores de recuperan (campos V de izquierda a derecha) en el orden en el que se leen
del fichero.
Ejemplo:
11
F0
00
00
0B
0B
74
...
00
25
9F
441
Respuest 01
a
11
F0
00
00
0B
8F
0E
11
F0
02
00
04
04
00
Respuest 01
a
11
F0
02
00
04
6E
CA
01
00
00
76
11
03
04
28
6F
11
07
D0
00
04
04
01
Respuest 01
a
11
07
D0
00
04
FC
87
02
12
07
D0
00
04
B8
87
Respuest 01
a
12
04
01
02
03
04
58
442
7D
sistema objeto
Conceptos bsicos
La gestin de los fallos de tensin es un aspecto muy crtico de una aplicacin, por tres
razones:
Depende de las especificaciones del proceso
Depende de la capacidad del hardware
Depende de los mtodos de programacin
Por lo tanto, la respuesta de ISaGRAF a la gestin de fallos de tensin no es un mtodo
universal completo y absoluto, sino un conjunto de principios, mtodos y herramientas que
deben combinarse de una manera especfica para cada aplicacin o al menos para cada
hardware.
Para que un sistema de control de procesos pueda volver a arrancar correctamente despus
de un fallo de tensin, se tienen que resolver tres problemas:
Salvaguardar
Kernel
+
base datos
ISaGRAF
Memoria
salvaguardada
Restaurar
Aunque el segundo problema no puede tener una solucin software estndar, el proveedor
del sistema puede proporcionar las herramientas necesarias para poder acceder al estado del
hardware desde la aplicacin ISaGRAF o desde un programa en C.
Adems, lo importante es decidir qu tipo de datos tiene que ser almacenado y recuperado.
Pueden definirse dos tipos de datos:
Variables de la aplicacin:
Variables de proceso tales como nmero de tems procesados, fecha del fallo de tensin,
valores de los parmetros de la aplicacin, etc.
Variables de programa tales como contadores, temporizadores, valores intermedios y
sealizadores.
Estado del programa:
443
C.9.2
con:
boo_add:
boo_size:
ana_add:
ana_size:
tmr_add:
tmr_size:
444
sistema objeto
msg_add:
msg_size:
Requisitos:
Tienen que especificarse todos los campos de todos los tipos, incluso si no existiera la
necesidad de salvaguardar todos los tipos de variables. En este caso, se tiene que
especificar un tamao de cero (con la excepcin de las analgicas, para las cuales se tiene
que especificar un tamao de 4 bytes) y cualquier direccin que sea diferente a cero, para
los tipos de variables que no sean necesarias.
Ejemplo:
Supongamos que tenemos que realizar una copia de seguridad de:
20 variables booleanas
0 variables analgicas
0 variables temporizadores
3 variables mensajes
La memoria salvaguardada est ubicada en la direccin hexadecimal 0xA2F200.
Supongamos tambin que:
Se almacenarn las booleanas en la direccin 0xA2F200, con el tamao exacto requerido
de 20 bytes.
Las analgicas - con un tamao mnimo requerido de 4 bytes - se almacenarn en la
direccin 0xA2F214.
La direccin ficticia de los temporizadores ser 0xA2F200 y se le especificar un tamao de
cero.
Se almacenarn los mensajes en la direccin 0x A2F218, con el tamao exacto requerido
de 256*3 bytes.
Consecuentemente, la cadena introducida en el banco de trabajo tendra que ser:
A2F200,14,A2F214,4,A2F200,0,A2F218,300
donde:
445
donde:
<error> obtiene un estado de error diferente a cero cuando falla la operacin (no se ha
invocado SYS_INITxxx).
Por ltimo, existe la posibilidad de restaurar las variables. Se puede invocar este
procedimiento en cualquier punto de la aplicacin, pero se efectuar la restauracin al final
del ciclo y slo una vez. Para asegurar la validez de los datos salvaguardados, se debe
configurar una variable analgica como valor constante para su utilizacin como firma:
<error> := SYSTEM(SYS_RESTxxx,0);
donde:
<error> obtiene un estado de error diferente a cero cuando falla la operacin (no se ha
invocado SYS_INITxxx).
A continuacin se presenta un resumen de los comandos de la funcin SYSTEM que se
utilizan para gestionar las variables salvaguardadas:
446
sistema objeto
Comando
clave predefinida
SYS_INITBOO
SYS_SAVBOO
SYS_RESTBOO
SYS_INITANA
SYS_SAVANA
SYS_RESTANA
SYS_INITTMR
SYS_SAVTMR
SYS_RESTTMR
SYS_INITALL
SYS_SAVALL
SYS_RESTALL
Comando (clave predefinida)
SYS_INITxxx
SYS_SAVxxx
SYS_RESTxxx
Significado
Valor
16#20
16#21
16#22
16#24
16#25
16#26
16#28
16#29
16#2A
16#2C
16#2D
16#2E
Argumento
direccin
memoria
0
0
Valor de retorno
siguiente direccin libre
cero si es OK
cero si es OK
Implementacin personalizada
Por ltimo, mediante la utilizacin de funciones o bloques de funcin C, se pueden
desarrollar procedimientos especficos del usuario de acceso a la memoria respaldada por
batera, para almacenar y restaurar variables en cualquier momento de la aplicacin.
Ejemplos:
1) Procedimiento dedicado a una aplicacin:
Los procedimientos del usuario C seran backup, restore_temp, restore_date,
restore_cpt.
backup(temperature, date, cnt); almacenar 3 datos crticos
temperature := restore_temp();
date := restore_date();
cnt := restore_cnt();
restaurar temperatura
restaurar fecha
restaurar contador
447
C.9.3
Se podra almacenar cada uno de los estados del programa de aplicacin, pero sera
peligroso restaurar cada programa al estado en el cual se encontraba en el momento de la
ltima copia de seguridad, por al menos tres motivos:
Algunos procesos requieren la ejecucin de operaciones especficas antes de arrancar de
nuevo.
Ocuparse de cada estado de una aplicacin completa resultara tedioso.
Algunos recursos externos, tales como programas C, perifricos, etc. no pueden
reinicializarse automticamente.
La mejor solucin parece ser la de salvaguardar las variables analgicas o booleanas que
describen el estado del proceso cuando el programador piensa que las fases de
reinicializacin podrn utilizar esta informacin.
Despus, debera ser posible que una imagen incompleta pero inteligente del proceso
pudiera iniciar, finalizar o congelar programas SFC e inicializar variables para situar a la
aplicacin en el estado apropiado. ISaGRAF no puede facilitar un procedimiento automtico
de arranque.
Ejemplo:
Incio salvaguarda
Guardar todos
estado = xx
Restaurar todos
448
estado = yy
Restarurar datos
especificados
sistema objeto
2
3
4
5
6
7
8
9
10
11
12
13
16
17
18
19
20
21
23
24
25
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Mensaje
no se puede asignar memoria para base de datos de
tiempo de ejecucin
base de datos de aplicacin incorrecta (Motorola/Intel)
no se puede asignar buzn de comunicaciones
no se puede enlazar la base de datos del kernel
tiempo excedido enviando pregunta al kernel
tiempo excedido esperando respuesta del kernel
no se puede inicializar la comunicacin
no se puede asignar memoria para las variables
retentivas
aplicacin parada
demasiadas acciones P o N simultneas
demasiadas acciones de activacin simultneas
demasiadas acciones de desactivacin simultneas
instruccin TIC desconocida
no se puede responder la peticin de lectura de datos
no se puede responder la peticin de escritura de datos
no se puede responder la peticin del depurador de
sesin
no se puede responder la peticin modbus
no se puede responder la peticin del depurador de
aplicacin
no se puede responder a la depuracin
cdigo de peticin desconocido
error de comunicacin Ethernet
error de sincronizacin de comunicacin
no se puede asignar memoria para la aplicacin
no se puede asignar memoria para la actualizacin de
la aplicacin
cdigo identificativo OEM desconocido
no se puede inicializar tarjeta de entrada booleana
no se puede inicializar tarjeta de entrada analgica
no se puede inicializar tarjeta de entrada mensaje
no se puede inicializar tarjeta de salida booleana
no se puede inicializar tarjeta de salida analgica
no se puede inicializar tarjeta de salida mensaje
no se puede leer datos de tarjeta booleana
no se puede leer datos de tarjeta analgica
no se puede leer datos de tarjeta mensaje
no se puede sacar variable de salida booleana
no se puede sacar variable de salida analgica
Tipo
Sistema
Aplicacin
Sistema
Sistema
Sistema
Sistema
Sistema
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
449
42
43
44
45
46
47
50
51
52
61
62
63
64
65
66
67
68
69
72
73
74
75
76
77
> 100
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Programa
Programa
Programa
Programa
Programa
Aplicacin
Programa
Aplicacin
Aplicacin
Aplicacin
Programa
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
450
sistema objeto
Errores de programa:
Estos problemas son imputables a una secuencia determinada del programa.
Este tipo de error debera desaparecer al arrancar el programa en modo ciclo por ciclo, o
cuando se pare el programa crtico.
Descripcin de errores:
1. no se puede asignar memoria para base de datos de tiempo de
ejecucin
Sistema
Aplicacin
Sistema
Sistema
Sistema
Sistema
La tarea de comunicacin no puede recibir una respuesta del kernel. Lo ms probable es que
el kernel est fuera de servicio o est ocupado.
7. no se puede inicializar la comunicacin
Sistema
451
Aplicacin
ISaGRAF no puede manejar variables retentivas. Pueden existir dos razones para este tipo de
problema:
- la cadena que se traslada como parmetro al objeto anfitrin no es sintcticamente correcta
- el tamao de la memoria que se ha especificado para cada bloque es insuficiente
Verificar la sintaxis del parmetro retener variable y probar con un nmero reducido de
variables retentivas.
9. aplicacin parada
Aplicacin
Se genera esta advertencia cada vez que se para la aplicacin desde el depurador.
10. demasiadas acciones P o N simultneas
Aplicacin
Se produce este error si uno de los ciclos del objeto tiene que ejecutar demasiadas
acciones de impulso no almacenadas o bloques cclicos. Existe la posibilidad de
localizar el problema en modo CC. El nmero mximo de acciones simultneas es
de 2 + 4 por programa SFC.
11. demasiadas acciones de activacin simultneas
Aplicacin
Se produce este error si uno de los ciclos del objeto tiene que ejecutar demasiadas
acciones de configuracin (que se ejecutan cuando se activa un paso). Proceder
como se mencion en el anterior.
12. demasiadas acciones de desactivacin simultneas
Aplicacin
Se produce este error si uno de los ciclos objeto tiene que ejecutar demasiadas
acciones de reactivacin (que se ejecutan cuando un paso est desactivado).
Proceder como se mencion en el anterior.
13. instruccin TIC desconocida
Aplicacin
El kernel ha detectado algo que no funciona bien en el cdigo de aplicacin (llamado Target
Independent Code o Cdigo Independiente del Objeto), en un programa. Existen dos posibles
explicaciones:
- es probable que un programa externo est escribiendo en el cdigo de aplicacin. Intentar
localizar el crash en modo CC y asegurarse de que no hay ningn interfaz de E/S con
parmetros errneos.
- el objeto tiene un conjunto reducido de instrucciones, y la aplicacin utiliza una instruccin o
tipo de variable no autorizado.
452
sistema objeto
16. no se puede responder la peticin de lectura de datos
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Sistema
Aparece este mensaje cada vez que se cierra la conexin, estando cerrado el depurador: el
sistema est funcionando correctamente. En caso contrario, significa que se ha detectado un
error de comunicacin Ethernet. Comprobar la conexin y la configuracin del sistema a nivel
tanto de objeto como de estacin maestra.
453
Sistema
Sistema
Sistema
Aplicacin
Aplicacin
Aplicacin
454
sistema objeto
33. no se puede inicializar tarjeta de entrada mensaje
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
455
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
456
sistema objeto
47. no se puede cerrar tarjeta
Aplicacin
Programa
Programa
Programa
Programa
Programa
457
Aplicacin
Programa
Un programa intenta dividir un valor analgico entero por cero. La aplicacin debe evitar que
se produzca este tipo de operacin, ya que puede tener un efecto impredecible.
Cuando esto sucede, ISaGRAF presenta el mximo valor analgico como resultado.
Cuando el operando es negativo, se invierte el resultado.
65. funcin de conversin no implementada
Aplicacin
Un programa est utilizando una funcin de conversin C que es desconocida por el objeto.
Es posible que la biblioteca del banco de trabajo no corresponda a la versin del objeto.
Cuando esto sucede, ISaGRAF no convierte el valor.
66. bloque de funcin no implementado
Aplicacin
Aplicacin
Programa
Un programa intenta dividir un valor analgico real por cero. La aplicacin debe evitar que se
produzca este tipo de operacin, ya que puede tener un efecto impredecible.
Cuando esto sucede, ISaGRAF presenta el mximo valor analgico real como resultado.
Cuando el operando es negativo, se invierte el resultado.
458
sistema objeto
69. parmetros de OPERATE no vlidos
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
Aplicacin
459
Glosario
D. Glosario
Accin
Accin booleana
Accin pulsante
Accin SFC: es una lista de sentencias que se ejecuta una sola vez
al activarse el paso correspondiente.
Accin no almacenada
Actividad de un paso
Atributo de un paso que est sealado por una marca SFC. Las
acciones que estn asociadas al paso se ejecutan en funcin de su
actividad.
Analgico
Atributo
Bloque de funciones
Booleano
Bobina
Cabecera fuente C
Fichero de texto que contiene las definiciones y los tipos C que son
necesarios para la programacin de una funcin C o una funcin de
conversin.
Cadena
Caja de herramientas
460
Glosario
Canal de E/S
Carril de potencia
Celda
Cclico
Ciclo objeto
Cdigo fuente C
Comentario
Comentario (SFC)
Comunes
Conexin de E/S
Contacto
Conversin
Franquear una
transicin
Diagrama de Escalera
461
Glosario
Diagrama de
Funciones
Secuenciales
Diagramas de Bloques
de Funciones
Diario
Fichero de texto que contiene todas las notas sobre los cambios
que se realizan en un programa. Cada nota se completa con su
fecha de edicin.
Diccionario
Direccin de red
Marca (SFC)
E/S bloqueada
Entero
Entrada
Error de tiempo de
proceso
Etiqueta (IL)
Expresin
Expresin constante
FBD
Flanco
462
Glosario
Funcin C
Funcin de conversin
Global
Identificador
IL
Instruccin
Notas tcnicas
Interna
Jerarqua
LD
Lenguaje C
Biblioteca
Lista de Instrucciones
Local
Macropaso
Matriz
463
Glosario
Modbus
Modificador (IL)
Nmero de referencia
(SFC)
Objeto
Operacin (IL)
Operacin demorada
(IL)
Operando (IL)
Palabra clave
Palabra definida
Parmetro (funcin C)
464
Glosario
Parmetro OEM
(tarjeta de E/S)
Paso
Paso comienzo
Paso fin
Paso inicial
Programa
Programa padre
Programa de nivel
superior
Proyecto
Breakpoint
Rango
Real
Referencias cruzadas
465
Glosario
Registro (IL)
Salida
Salto a un paso
Seccin
Seccin de comienzo
Seccin de fin
Seccin secuencial
Sentencia
Separador
SFC
Situacin inicial
ST
Subprograma
Tabla de conversin
Tarjeta de E/S
Tarjeta real
466
Glosario
Tarjeta virtual
Temporizador
Texto Estructurado
Tiempo de ciclo
Tipo
Transicin
Validez de una
transicin
Valor de retorno de un
subprograma
Variable
Variable de E/S
467
Smbolos
E. Smbolos
-, 274
%, 103, 195
&, 271
) operacin (IL), 266
*, 275
/, 276
+, 273
<, 279
<=, 280
<>, 283
=, 282
= (Asignacin ST), 247
=1, 273
>, 281
>=, 282
>=1, 272
1 gain, 270
A
Abrir fichero, 339
ABS, 309
Accion, 460
Accin (FC), 53, 217
Accin booleana, 460
Accin especfica de E/S (FC), 219
Accin no almacenada, 460
Accin pulsante, 460
ACOS, 313
Actividad de un paso, 201, 460
Acuerdo de licensia, 16
Agregar licencias, 17
ANA, 285
Analgico, 92, 144, 460
AND, 271
AND_MASK, 277
468
Anlgico, 401
appli.tst, 357, 367, 380
appli.x6m, 367, 380
appli.x8m, 357, 390
Archivar, 160
Archivo, 160
Arco coseno, 313
Arco tangente, 314
ARCREATE, 336
ARREAD, 337
ARWRITE, 338
ASCII, 327
Asignacin, 270
Asignacin (en ST, =), 247
ATAN, 314
Attributo, 460
AVERAGE, 303
B
Backup file unit (VxWorks), 372, 375
BLINK, 307
Bloque de funciones, 460
Bloque de funciones, 34, 36, 162, 413
Bloque de funciones C, 162
Bobina, 460
Bobina (Salida), 229
BOO, 284
Booleano, 92, 196, 460
Borrando una transicin, 122
Borrar sub-cadena, 328
Breakpoint, 118
Buscar sub-cadena, 329
BY, 252
Smbolos
C
C function, 160
C function block, 160
Cabecera fuente C, 402, 408, 417, 429,
460
Cadena, 93, 460
Clculo de potencia, 311
Canal E/S, 100
Canal E/S OPERATE, 290
Cargar, 119
Carril de potencia, 461
CASE, 250
Cat, 288
Celda, 461
Cerrar fichero, 340
CHAR, 328
Cclicas, 185
Cclico, 461
CLKRATE, 371
CMP, 300
Cdigo, 110
Cdigo de tecla OEM, 155
Cdigo fuente C, 461
Cdigo fuente C, 152, 403, 418, 429
Cdigo TIC, 110
Comentario, 461
Comentario (FC), 220
Comentario (SFC), 461
Comparacin, 300
Compilador C, 399, 429
Comportamiento dinmico (FC), 221
Compresin, 161
Comn, 160
Comunes, 461
Comunicacin, 117, 172, 365
Concatenacin de mensajes, 288
Condicin (FC), 217
Condicin (para una transicin), 461
Conectores (FC), 219
Conexin de E/S, 461
Conexin ES, 38
Configuracin E/S, 153
Consejos de herramientas, 67
Contacto, 229, 461
D
DAY_TIME, 335
DDE, 127
DDE (NT target), 395, 397
Decisin (FC), 217
Definir tabla de conversin, 107
DELETE, 328
Depurador, 142, 143
Depurar, 39
DERIVATE, 306
Descriptor de proyecto, 27, 38
Desplazar a la derecha, 320
Desplazar a la izquierda, 319
Fichero, 341
Diagnosis, 142
Diagrama de Bloques de Funciones,
223
Diagrama de Escalera (Contactos), 227
469
Smbolos
E
E/S bloqueada, 121
Edicin del proyecto, 27
Editar variable, 90
Editor FBD, 82
Editor IL, 82
Editor Quick LD, 82
Editor SFC, 82
Editor ST, 82
Ejecucin (FC), 221
Eliminar licencias, 19
ELSE, 249, 250
ELSIF, 249
END_CASE, 250
END_FOR, 252
END_IF, 249
END_REPEAT, 251
END_WHILE, 250
Enlace (FC), 217
Entero, 92
Equipo complejo E/S, 154
Error de tiempo de ejecucin, 121
Error de tiempo de proceso, 462
Error en tiempo de ejecucin, 289
Es igual, 282
Es no igual, 283
Escribir fichero, 344, 348
Escritrua de vectores, 338
Estructuras complejas (FC), 220
470
Ethernet, 41
Etiqueta (IL), 462
EXIT, 253
Exponente, 310
Exportar, 95
Expresin, 462
Expresin constante, 462
EXPT, 310
Extraer sub-cadena (centro), 332
Extraer sub-cadena (derecha), 334
Extraer sub-cadena (izquierda), 331
F
F_CLOSE, 340
F_EOF, 341
F_ROPEN, 339
F_TRIG, 293
F_WOPEN, 339
FA_READ, 343
FA_WRITE, 344
FALSO, 191
FBD, 185, 189, 223, 407, 415, 462
FC, 185, 189
FEDGE, 246
Fin (FC), 216
FIND, 329
Flanco, 462
FM_READ, 346
FM_WRITE, 348
FOR, 252
Franquear una transicin, 461
Frecuencia del reloj de sistema
(VxWorks), 371
Funcin, 34, 36, 162
Funcin C, 162, 406, 463
Funcin de conversin, 162, 401, 463
Function, 160
Function block, 160
G
gain 1, 270
Generador de seal, 307
Gestin de proyectos, 26
ICS Triplex ISaGRAF Inc.
Smbolos
H
Histresis, 304
Histrico, 27
HYSTER, 304
ISAx1, 366
ISAx1 (VxWorks), 379
ISAx2, 366
ISAx5, 366
ISAx6, 366
J
Jerarqua (FC), 218
L
I
M
Macropaso, 463
Marca (SFC), 462
Marcar, 37
Mscara en bits de enteros(and), 277
Mscara en bits de enteros(not), 279
Mscara en bits de enteros(or), 277
Mscara en bits de enteros(xor), 278
Matriz, 463
MAX, 321
Mximo, 321
Mayor o igual, 282
Mayor que, 281
471
Smbolos
N
NEG, 270
Negacin, 270
Nivel 1 del lenguaje SFC, 464
Nivel 2 del lenguaje SFC, 464
NOT_MASK, 279
Nota tcnica, 152, 400
NT (llave de proteccin), 16
Nueva tabla de conversin, 106
Nueva variable, 90
Nuevo elemento de librera, 150
Nuevo programa, 33
Nmero aleatorio, 326
Nmero de esclavo, 397
Nmero de referencia (SFC), 464
O
Objeto (objetivo), 110
ODD, 325
472
P
Palabra clave, 262
Palabra definida, 93, 160, 464
Parmetro, 34
Parmetro (Blocque de funciones), 152
Parmetro (bloque de funciones C), 158
Parmetro (funcin C), 158, 407, 464
Parmetro (Funcin C), 415
Parmetro (funcin), 152
Parmetro (tarjeta E/S), 464
Parmetro (Tarjeta E/S), 152
Parmetro OEM (tarjeta de E/S), 465
Paso comienzo, 465
Paso fin, 465
Smbolos
Paso final, 44
Pegar variable, 91
Periodo de prueba, 16
Pila de analgicos enteros, 301
Portapapeles, 91
POW, 311
Power rail, 62
Programa, 82, 465
Programa FC hijo, 218
Programa padre(FC), 218
Programa SFC hijo, 465
Programa SFC padre, 465
Programas principales FC, 218
Programas SFC hijo, 186
Proyecto, 465
Proyectos, 160
Prueba de paridad par/impar, 325
Q
Quick LD, 51, 59
R
R_TRIG, 293
Raz cuadrada, 312
Ramas paralelas (FC), 219
RAND, 326
Rango, 465
Real, 92, 465
REAL, 285
Recuperar, 160
Recurso, 113
Recursos, 37
REDGE, 245
Referencias cruzadas, 465
Registro (IL), 466
Reglas sintcticas (FC), 222
Renombrar elemento de librera, 151
Renombrar programa, 35
REPEAT, 251
REPEAT / UNTIL (FC), 221
REPLACE, 333
Resta, 274
Resultado actual (IL), 466
ICS Triplex ISaGRAF Inc.
S
Seccin, 466
Seccin de bloques de funciones, 32
Seccin de comienzo, 31, 185, 466
Seccin de funciones, 32, 185
Seccin final, 31, 185
Seccin secuencial, 31, 185, 466
Secuencial, 61, 185
SEL, 326
Seleccin de seccin, 33
Selector binario, 326
SEMA, 294
SEMAPHORE, 294
Seno, 316
Separador, 466
SFC, 61, 185, 189, 200, 407, 466
SHL, 319
SHR, 320
SIG_GEN, 307
Smbolos, 176
Simulacin, 39
Simulador, 110, 117, 143
SIN, 316
Sintaxis del programa, 109
SlavesLink, 377
SQRT, 312
SR, 291
SSR[x][1].space, 380
ST, 185, 189, 241, 406, 414, 466
STACKINT, 301
Subprograma, 466
Sub-programa, 34
Subprograma (FC), 218
Suma, 273
473
Smbolos
T
Tabla de contenidos, 163, 164
Tabla de conversin, 106, 466
TAN, 316
Tangente, 316
Tarjeta de E/S, 466
Tarjeta E/S, 100, 162
Tarjeta real, 101, 466
Tarjeta virtual, 101, 467
Tarjetas virtuales (simulation with NT
target), 397
TCP-IP, 41
Temporizacin con retardo Off, 299
Temporizacin de ciclo, 120, 289
Temporizacin de pulsos, 300
Temporizador, 92
Texto Estructurado, 241, 467
THEN, 249
TIC (Cdigo objeto independiente), 110
Tiempo de ciclo, 467
Tipo, 87, 467
TMR, 286
TO, 252
TOF, 299
TOPIC23, 45
TP, 300
Transferir licencias, 18
Transicin, 201, 467
TRUNC, 312
Truncar parte decimal, 312
474
U
UNTIL, 251
V
Validez de una tarjeta, 101
Validez de una transicin, 467
Valor absoluto, 309
Valor de retorno, 467
Variable, 34, 115, 185, 467
Variable de E/S, 467
Variable de representacin directa, 195
Variable E/S, 100
Variable ES, 38, 401
Variable representada directamente, 103
VERDADERO, 191
W
WHILE, 250
WHILE / DO (FC), 221
X
XOR, 273
XOR_MASK, 278