Está en la página 1de 152

A 1

I.- TRABAJANDO CON INTOUCH

Para crear una nueva aplicación en Intouch, seleccione “Create Directory”, o


para seleccionar una aplicación existente basta con hacer doble click sobre el nombre
del archivo a abrir.
Cuando se crea un directorio, tenemos la opción de hacer varias pantallas dentro
de esté, al seleccionar el comando New Windows en el menú File aparece el cuadro
Windows Properties (propiedad de pantalla), tal como se indica a continuación:

Donde se coloca el nombre de la pantalla con un máximo de 32 caracteres, se selecciona


el color de fondo de la pantalla en Window Color, se definen las dimensiones de la
pantalla, también se define la visibilidad o no del titulo de pantalla. Se puede ingresar a
los Scripts, aplicación que será detallada mas adelante, luego de terminadas las
propiedades de pantalla se presiona OK y se comienza a trabajar en la confección de la
pantalla.
Cuando se está dentro de una nueva pantalla aparece la barra de herramientas
Toolbox, es una caja de herramientas con una colección de objetos gráficos que son
utilizados en la aplicación. La caja de herramientas queda normalmente visible al abrir
Window Maker.
A 2

La barra de herramientas es tal como se muestra a continuación:

La primera línea de herramienta es usada para crear objetos gráficos, escribir nombres,
seleccionar objetos, etc. Los cuales pueden ser mostrados o animados en el modo de
trabajo Runtime.
La segunda línea cuenta con la herramienta Wizard. Al seleccionar está
herramienta aparece un cuadro con elementos básicos que se utilizan para hacer
eficiente y rápido la construcción de las pantallas.

Basta con hacer doble click en el objeto seleccionado para que se de la opción de
colocarlo donde se requiera en la creación de la pantalla, también se pueda variar su
tamaño y dar Configuración de acuerdo a lo requerido en la construcción de la pantalla.
A 3

Encontrándose también en está cuadro opciones de gráficos en tiempo real, históricos y


ventanas de alarmas.
Luego los componentes restantes de está línea, son herramientas que permiten
alinear, desagrupar, crear botoneras 3D con sus respectivos nombres, borrar, copiar,
pegar, etc.

II.- MENU WINDOWMAKER

WindowMaker contiene una barra de menú provista con numerosas funciones.


Esta barra de menú esta localizada en la parte superior de la pantalla y se puede acceder
a ella solamente haciendo click sobre la opción que se desea utilizar.

2.1.- Menú File (archivo)


El menú archivo contiene un Set de comandos que se utilizan para crear, abrir,
salvar, imprimir, cerrar, borrar, exportar e importar archivos, también se cuenta con Exit
que es salir del programa.

Además cuenta con WindowViewer que es un switch para cambio de


WindowMaker a WindowViewer (pantalla de simulación).
A 4

2.2.- Menú Arreglar


El menú Arreglar contiene un conjunto herramientas tales como rotar en sentido
del reloj y en contra, transformar el objeto seleccionado en imagen de espejo vertical u
horizontal, combina varios objetos seleccionados en uno solo o viceversa, habilitar o
desabilitar grid (grilla). Para usar cualquier de los comandos del menú arreglar,
seleccione él o los objetos donde el comando va a ser aplicado y entonces seleccionado
el comando desde el menú arreglar se aplica. Usted puede configurar el Toolbox para
mostrar herramientas del menú arreglar. Muchas de estas herramientas se incluyen en el
toolbox.
El Toolbox se configura por medio de Special / Configure.

2.3.- Menú de Texto


El Menú de Texto es parte del Toolbox por lo tanto se maneja directamente de la
barra de herramientas.

2.4.- Menú de Línea


Los comandos de Menú de Línea se usan para cambiar el estilo y la anchura de
líneas que son usada sobre objetos individualmente. Cualquier objeto seleccionado que
contiene una línea (es decir, círculos, cuadrados, polígonos, líneas, etc.) será
A 5

modificado. Después de seleccionar el o los objetos, y haciendo click sobre el tipo de


línea deseado que muestra en el menú de línea, esta será cambiada.

2.5.- Menú Especial


El Menú Especial contiene un conjunto de comandos y subcomandos
permitiendo desempeñar funciones especiales tal como sustituir tagnames, strings,
acceder al Diccionario de Tagname, cambiar los nombres DDE, etc. En este menú se
encontraran comandos tales como mostrar y quitar el Toolbox de la pantalla (Show/hide
toolbox), Vínculos de Animación (Animation Links), sustitución de tagnames,
sustitución de string que son utilizados para cambiar el contenido de los String
(botoneras), llamar el diccionario de definiciones de tagnames, crear nombres de grupos
de alarmas o modificar viejos nombres de grupos, también se pueden crear subgrupos
de alarmas, seleccionar el nombre de accesos DDE (Dynamic Data Exchange).
También existe el comando Configurar con el cual Intouch, provee la habilidad
de personalizar completamente la funcionalidad y aspecto final de la aplicación
seleccionando varias opciones. Estas opciones se obtienen desde este comando. Por
ejemplo, puede colocarse las opciones que impidan al usuario salir de WindowVíewer,
la barra de título puede personalizarse para mostrar el nombre de compañía, la barra de
menú puede eliminarse, la tecla ALT puede estar incapacitado, etc.
A 6

El comando borrar tag inutilizados, permite mostrar una lista de todos los
tagnames inutilizados en el Diccionario de Datos. Todos estos tagnames pueden
borrarse desde la base de datos. Además se incluye una lista de Script que son editores
de lógica, los cuales pueden ser usados por los usuarios. Dependiendo de que Script se
edita, la lógica puede implementarse (Aplicación Script), cuando se selecciona el
comando Script, los Scripts de Lógica son utilizados para crear simulaciones,
contraseña de protección, cálculos de sistemas de variables o cambio de ventanas
debido a los cambios en el proceso de variables, etc. Más adelante se profundizará más
sobre los Scripts.

2.6.- Menú de Ventana


El menú de Ventanas contiene las Propiedades de Ventana y una lista de todas
las pantallas que se encuentran abiertas. Haciendo Click sobre cualquier de los nombres
de las pantallas hará que las propiedades de la pantalla se active.

2.7.- ¿Qué es el Diccionario Tagname?


El diccionario de datos tagname es el corazón de Intouch. En orden crea la rutina
de la base de datos, Intouch requiere información aproximadamente de todas las
entradas/tags que son creados. Cada entrada se le debe asignar un tagname. Un tagname
es un nombre simbólico que se entra en el Diccionario de Tagname. Este nombre
simbólico puede entonces configurar valores min., max., alarmas, etc. y también se
define como un tipo específico, por ejemplo, un tag DDE. Este tag DDE puede llegar a
ser entonces un link entre Intouch, el servidor de I/O y el mundo real. El Diccionario de
Tagname es el mecanismo usado para ingresar esta información sobre la
variables/entradas en la base de datos. En el modo Runtime, contiene el valor actual de
todos los artículos en la base de datos.
La creación de la base de datos o el Diccionario de Datos puede realizarse
usando tres diferente métodos. El primer método es la creación de un manual donde
usted accesa el tagname de diccionario y define cada tag individualmente hasta
completar la base de datos. El segundo método es el método automático donde usted
crea un objeto gráfico, asignando vínculos de animación al objeto y el sistema
A 7

rápidamente define el tagname. El tercer método es el método externo donde usted usa
el utilitario de Wonderware DB de Basurero y DB carga para transferir la base de datos
desde una aplicación de InTouch a otra aplicación de InTouch.
Si usted escoge el método automático o manual para crear la base de datos,
aparece el cuadro de dialogo "Diccionario - TagName de Definición". En el método
automático el cuadro de dialogo aparecerá una vez que se presiona OK, cuando pide
definir los tagnames, asignando después los vínculos de animación del objeto. Para
acceder al cuadro de diálogo cuando se usa el método manual de creación, primero se
selecciona Special/Tag Name Diccionary.

Details
Seleccione este botón para mostrar el cuadro de diálogo usado para ingresar los
detalles del tipo específico de tag. El inicialmente cuadro de dialogo Díctionary – Tag
Name Definition es usado para ingresar la información básica con respecto a un
tagname. Muchos puntos, especialmente entradas y salidas, requieren grandes detalles.
Para cada tipo de tagname especificado, existe un cuadro de dialogo “Details”
especifico para ingresar el detalle del tipo de tagname. Cuando un tipo de tagname es
seleccionado, aparece automáticamente un cuadro de dialogo “Details”
respectivamente. Si el cuadro de diálogo "Details" para la definición del tagname
actualmente mostrado en pantalla no aparece, seleccione Details en la parte superior del
cuadro.
A 8

Alarms
Seleccione este botón para definir la condición de alarma del tagname. Cuando
definimos un tagname análogo (entero o verdadero), el siguiente cuadro de diálogo se
usa para seleccionar tipos de alarmas y entrar sus valores. Los valores de campos
ingresados para cada tipo de alarma no aparecerán hasta que un tipo de alarma sea
habilitado por un click en su respectivo cuadro de chequeo como se muestra más
adelante:

Both
Seleccione este botón para mostrar ambos cuadros de diálogos details y alarms
simultáneamente. El siguiente es un ejemplo como la pantalla se verá cuando un
tagname "Memoria Real" está siendo definido y este botón se selecciona:
A 9

None
Seleccione este botón para remover el cuadro de diálogo details y/o alarms
desde la pantalla.

2.7.1.- Ingresar Campos, Botones y Permitir al Usuario Opciones de Entrada...


A 10

Tag Name:
Ingrese el nuevo tagname en este campo. Los Tagnames pueden ser hasta un
largo de 32 caracteres y el primer carácter debe ser A-Z o a-z y puede seguirse con A-
Z, a-z, 0-9,! ¿, Q, -,? , #, $ , %, _ y &.

Comment: Los Comentarios son opcionales, pero pueden ser mostrados en una
Ventana de Alarma.
Ingrese cualquier información opcional para documentar el tagname en este
campo (hasta 50 - caracteres). (Estos comentarios pueden mostrarse en ventanas de
alarmas.)

Hacer click sobre este botón para acceder al Escoger tipo de Tag..., el
cuadro de diálogo selecciona el tipo de tagname:

Hacer click sobre este botón para acceder al cuadro de diálogo Escoger
Grupo de Alarmas... para asignar el tagname a un grupo de alarmas específico o crear
un nuevo grupo de alarma.
Read only
Seleccione este botón para restringir a WindowViewer para que solamente sea
capaz de leer el valor del tagname.
Read Write
Seleccione este botón para permitir a WindowViewer leer/escribir de/desde el
valor del tagname.
A 11

Log Data
Registra automáticamente el tagname en el archivo Histórical Log cada vez que
sus valores de unidades de ingeniería cambien, más el valor del Registro
especificado Deadband.

Log Events Priority 999


Registra todos los cambios de valores del tagname que fueron establecidos por el
operador, DDE, un script o por el sistema. Cuando esta opción es habilitada, el
campo de Prioridad aparecerá. El valor ingresado en la Prioridad determina la
preferencia de nivel del suceso para el tagname. Las entradas válidas en este
campo son de 1 a 999 donde 1 es la más alta prioridad y 999 es la más baja.

Retentive Value
Esta opción es usada para retener el valor actual del tagname. Este valor,
entonces es usado como el valor inicial para el tagname cuando WindowViewer
se reinicie.

Retentive Parameters
No varía los cambios del valor de cualquier campo de alarma para el tagname.
Este valor se usará como el valor inicial para las alarmas cuando
WindowViewer es reiniciado.

2.8.- Tipos de Tag


Cada tagname debe ser asignado a un tipo específico según el uso del tagname.
Por ejemplo, si el tagname es para leer o escribir valores que vienen desde otra
aplicación de Windows tal como un servidor DDE, este debe ser un tag tipo DDE. Se
debe considerar si el Tag esta representando una señal Discreta, que es un solo bit (tal
como una sola entrada del PLC) o una señal Análoga (tal como un registro de 16, 32, o
64 bits). Los tag analógicos son separados en dos de tipos, Enteros y Reales. A
continuación se describe cada tipo de tag y su uso respectivo.
A 12

2.8.1.- Tagname tipo Memoria


Estos tipos de tag existen solamente dentro del programa Intouch. Ellos pueden
usarse para crear constantes de sistema, demostraciones y simulaciones. Estos también
son útiles en la creación de cálculos de variables para ser accesados en otros Programas
de Windows. Por ejemplo, si un tagname de memoria real es creado llamado “PI”,
podría asignarse a él, el valor inicial de 3.1416; o las fórmulas podrían almacenarse en
grupos de tagname de memoria. En simulaciones; los tagnames de memoria pueden
usarse para controlar las acciones de unos antecedentes de script. Por ejemplo un
tagname de memoria "STEP" podría ser cambiado con una acción presionando un botón
Script para provocar varios efectos de animación. Hay cuatro tipos de Memoria:

Memory Discrete
Tagname Discreto Interno con un valor de O (Falso, Fuera) o 1 (Verdadero,
Habilitado).

Memory Interger
Es asignado un valor entero de 32 bit entre -2,147,483,648 y 2,147,483,647.

Memory Real
Tagname de memoria con punto flotante (decimal). El valor del punto flotante
puede estar entre 3.4e38. Todos los cálculos del punto flotante se realizan con 64 bit
de resolución, pero el resultado se almacena en 32 bit.

Memory Message
El Texto del tagname de una fila puede ser de un largo de 131 caracteres.

2.8.2.- Tagname tipo DDE

Todos los tagnames que leen o escriben sus valores hacia o desde otro programa
de Wíndows son Tagname DDE. Esto incluye todas las entradas y salidas desde
controladores programables, procesos de computadoras, otros programas de Windows y
A 13

datos desde nodos de red. Los Tagnames DDE se ingresan por medio del Protocolo
Dynámic Data Exchange (DDE) de Microsoft. Cuando el valor del tagname DDE de
lectura/escritura cambia, éste es inmediatamente escrito en la aplicación remota por
medio de DDE. El tagname también puede ser actualizado desde la aplicación remota
cuando el item al cual el tagname es vinculados cambia a la aplicación remota. Por
defecto Leer / Escribir es un conjunto de todos los tagnames DDE. Sin embargo, ellos
pueden restringirse para Leer solamente al seleccionar el botón Read Only en el cuadro
de diálogo Diccionary – Tag Name Definition. Hay cuatro Tipos de DDE:

DDE Discrete
Tagname de entrada/salida discreta con un valor entre 0 (Falso, Off) o 1
(Verdadero, On).

DDE Integer
Es asignado un valor entero de 32 bits entre –2,147,483,648 y 2,147,483,647.

DDE Real
Tagname de memoria con punto flotante (decimal). El valor del punto flotante
puede estar entre 3.4e38. Todos los cálculos del punto flotante se realizan con 64 bit
de resolución, pero el resultado se almacena en 32 bit.

DDE Message
El Texto del tagname de una fila puede ser de un largo de 131 caracteres.

2.8.3.- Tagnames de Tipo Misceláneo


Estos son un tipo de tags especiales que son asignados a tagnames que realizan
funciones complejas, tal como mostrar despliegues de alarmas dinámicas, históricos,
monitoreo y / o cambio del tagname en cada trazado histórico que es dibujado y
tagname indirectos que permiten reasignar los tagname a múltiples fuentes. Estos tipos
de tags son los siguientes:
A 14

Group Var
Este tipo de tag es asignado a un tagname que tenga el nombre de un Grupo de
Alarma asignado a él. Esto es muy útil en hacer despliegues de alarma, registros de
discos e imprimir dinámicamente los registros. Las ventanas de alarmas o registros de
alarmas pueden configurarse para mostrar todas las alarmas asociadas con un Group
Var. Mediante asignación un grupo de Alarma diferente al nombre del Grupo de
Variable, la selección de alarmas a mostrar o a registrar puede ser controlada. Un
tagname de Group Var puede usarse para crear un botón que selectivamente muestre
las alarmas de diferentes partes de una planta en la misma Ventana de Alarma. Todos
los campos asociados con los Grupos de Alarma pueden ser aplicados a Group Var.

Hist Trend
Este tipo de tag es asignado a un tagname para ser usado como un diagrama
Histórico de Tendencia. Cuando configuramos un mapa Histórico de Tendencia,
InTouch requiere que un tipo de tagname HistTrend sea asignado a un gráfico.

Tag ID
Este tipo de tag es usado para obtener información sobre los tagnames que están
siendo registrados en un mapa de Tendencia Histórica. El uso más común es mostrar el
nombre del Tagname de la tendencia. Por ejemplo, Pen4 de un mapa Histórico de
Tendencia se muestra la tendencia del tagname "Analog1". Una ventana puede ser
creada con un campo de salida que muestra el tagname actualmente asignado a Pen4.

Indirect Discrete Indirect Analog Indirect Messaga

El tagname de tipo Indirecto permite al operador crear una de ventana y


reasignar el tagname en esa ventana a múltiples fuentes. Por ejemplo, uno Cambio de
A 15

Datos de Script pueden ser creado para cambiar la fuente de todos los tagnames en una
ventana basado sobre el cambio de un valor.
Cuando un tag indirecto es igual a otro tag de fuente, ambos llegan a ser iguales
el uno al otro en cada aspecto. Por ejemplo, campos, scripts, etc., si el valor del tag de
fuente cambia, en el tag indirecto se reflejará el cambio. Si el valor del tag indirecto
cambia, el tag de fuente cambia consiguientemente. Los valores del tagname indirecto
pueden establecer en la base de datos como retentivo y también se pueden modificar.
Esto les permite tomar su última asignación de tagname en la partida.

2.9.- Tagnames “Placeholder”


Cuando una ventana es importada o es exportada a una aplicación, todos los
tagnames asociados con la ventana son transferidos con la ventana, pero no son
agregados a la nueva base de datos de aplicación. Ellos serán automáticamente
cambiados en el tagnames "placeholder" (índice) y deben ser convertidos y definidos
por la nueva aplicación.

1. Para convertir el tagnames, seleccione el comando /Edit/Select All (F2) luego el


comando /Special/Substitute All Tags...(Ctrl+U). El cuadro de diálogo Sustitute Tag
Names... aparecerá listando todos los tagnames usados por todos los objetos en la
ventana:

2. Note el " ?d: " , " ?h: " , etc. que precede el tagnames, estos son "placeholders".
La letra "d" indica que el tagname se definió originalmente como un tipo "discreto", la
A 16

"h" indica un “HistTrend”, etc. haciendo Click sobre el botón Convert se removerá
automáticamente el placeholders:

3. Una vez que los tagnames son convertidos, haga click sobre OK. Si el tagname no
existe en la actual base de datos de la aplicación, el siguiente cuadro de mensaje
aparecerá verificando la creación del nuevo tagname:

4. Haciendo Click sobre OK permitirá que el cuadro de diálogo Diccionary - Tag


Name Definition aparezca y el tagname pueda definirse y agregarlo a la base de datos
de la actual aplicación.

2.10.- ¿ Qué son los Links (Vínculos)?


Una vez que un objeto gráfico o el símbolo se ha creado, éste puede ser animado
uniendo vínculos de animación a él. Los vínculos de animación permiten que el objeto,
símbolo o celda cambien su apariencia reflejando los cambios en el valor de una
variable de la base de datos del tagname. Por ejemplo, el símbolo de una bomba puede
ser de color rojo cuando esta apagada y de color verde cuando está encendida. El
símbolo de la bomba también puede ser encendida por un pulsador que se usa para
encender y apagar la bomba cuando se pulse. Estos y muchos otros efectos de
animación son obtenidos cuando se definen los vínculos de animación para un objeto o
símbolo seleccionado. Conjuntamente con los tagnames, algunos vínculos de
animaciones también permiten el uso de expresiones lógicas usados para calcular
variables (por ejemplo integer1 + 100, discretel AND discrete2 AND NOT discrete3,
etc.).
A 17

2.10.1.- Uniendo y Seleccionando un Vínculo


Cuando un objeto se selecciona y el comando /Special/Animation Links... se
ejecuta hay dos cuadros de diálogo que siempre aparecen; el "Item Description" y el
"Links selection". Ambos cuadros de diálogo son descritos más adelante.
Nota: Haciendo Doble – click sobre el que objeto deseado se llama directamente
la pantalla de los Links de Animación.

A continuación se describe cada campo en el cuadro previo de diálogo:

Prev Link y Next Link


Si varios vínculos han sido adjuntos al objeto, estos dos botones pueden usarse
para avanzar y retroceder rápidamente mediante el cuadro de diálogo de detalle para
cada Links adjunto al objeto sin salir del cuadro de diálogo de Vinculo de Animación.
Nota: En un objeto o símbolo pueden tener múltiples links definidos. La
capacidad para combinar los vínculos de animación provee la capacidad para
crear casi cualquier animación de pantalla y efecto imaginable.

Horizontal/Vertical Loc. Width/Height


Corresponde a la ubicación Horizontal y Vertical como también al Largo y Alto
del objeto expresado en pixeles de la pantalla.
A 18

Este cuadro de diálogo se usa para seleccionar el Link (s) deseado (s) para el
objeto, haciendo click sobre el botón con el nombre del links. Haciendo Click sobre el
cuadro de chequeo, solamente selecciona o deshabita el links. Haciendo Click sobre el
botón del nombre del links selecciona y permite que aparezca el específico cuadro de
diálogo de definición de detalle para el links.

Información común del Links...


La Paleta de Selección de Color: El cuadro de selección de color aparece
cuando un color de links está siendo unido para animar el color de la línea, llenado de
color, (y/o para atributos de color de texto de un objeto). El cuadro de selección de
color ofrece una cantidad de 32 colores. La primera columna (desde la izquierda)
muestra los ocho colores sólidos primarios. Las tres columnas que quedan muestran los
ocho colores sólidos o colores derivados dependiendo de la tarjeta de gráficas instalada
en la computadora.
Asignando una tecla a un Vinculo de Animación: Una Tecla específica o
combinación de teclas en el teclado pueden ser asignado para activar ciertos links,
cuando la tecla se presiona en WindowViewer. La tecla equivalente es solamente
operacional cuando el objeto con el link es visible. Si una tecla se define en ventanas
múltiples, la definición en la ventana abierta más recientemente será la que se active
primero. Para asignar una tecla, haga click sobre el botón Key... en el cuadro de diálogo
de detalle de animación. El cuadro de diálogo "Choose Key... " aparecerá rápidamente
para que usted seleccione la tecla deseada.

2.10.2.- Cuadro de diálogo Choose Name...


Haciendo doble - click sobre Blank Tag Name o Expression, entre el campo
en el cuadro de diálogo de detalle de links de animación que ocasionará que aparezca el
cuadro "Choose Name...", rápidamente usted puede seleccionar el tagname deseado que
ha sido previamente ingresado en la base de datos. Haciendo doble - click sobre un
A 19

nombre se remueve el cuadro de diálogo y se inserta el nombre seleccionado en el


tagname o campo de expresión en el cuadro de diálogo.

2.11.- ¿ Qué Links están disponibles?

Touch Links
Touch Link convierte cualquier objeto o símbolo en un botón
de acción. Un botón de acción puede ser activado al presionar el
botón del mouse sobre él, tocando la imagen en la pantalla (si
la pantalla es sensible al tacto), presionando alguna letra
asignada o presionando la tecla [Enter (sí el objeto está
marcado alrededor). Hay nueve de tipos de Touch Links que
pueden ser definidos, que se describen a continuación.

Nota: Si el objeto o símbolo utilizado para estos vínculos contiene un campo de


texto, todos atributos diseñados para el texto aparecerán cuando el objeto
aparezca en el modo Runtime. El valor de salida que usted haya ingresado será
mostrará en el campo de a menos que la opción Input Only sea habilitada en el
cuadro de diálogo de Details.
A 20

Valor Slider Touch Links


El Slider (Deslizador) Touch Links se usa para crear un objeto o
símbolo que pueda moverse con el mouse. Como el objeto o símbolo se mueve, este
altera el valor de una variable vinculada a él. Esto permite la capacidad de crear
dispositivos para colocar valores en el sistema. Un objeto puede ser un Slider
Horizontal, un Slider Vertical, o ambos. Para usar ambos Link sobre un objeto único, el
valor de las dos variables análogas pueden ser cambiadas simultáneamente.

Vínculos con Touch Pushbutton


Los Touch Pushbutton son vínculos de objeto que ejecutan
inmediatamente una operación cuando son activados. Estas
operaciones pueden ser cambios de Valores Discreto (Discrete
Value), ejecución de Script (Action), mostrar Ventanas (Show
Window) u Ocultar Ventanas (Hide Windows).

Vinculo de Colores
Los vínculos de Colores permiten la animación de atributos de color de línea,
llenado, y/o texto de un objeto. Cada uno de estos atributos pueden ser creados
dinámicamente al definir un color vinculado al atributo. El atributo de color puede
vincularse al valor de una expresión discreta, expresión análoga, condición discreta de
alarma o condición análoga de alarma.
A 21

Vínculos de Colores de Objetos a Estados de Alarma


El color de texto, línea, y llenado de un objeto pueden ser
vinculados al estado de alarma de un Tagname, Group Name, o Group Variable. Hay
dos tipos básicos de alarmas orientados al color. El primero es el Estado del tag de
Alarma Discreta (Discrete Alarm) que puede usarse con cualquier tipo de variable. El
segundo tipo es el Estado de Alarma Análoga (Analog Alarm) que es únicamente
aplicable a las variables de tipo análogas.
[Value Alarm Color Link]
Provee la capacidad para seleccionar hasta cinco diferente colores basados en los
límites de alarma definidos para ese tagname.
[Deviation Alarm Color Link]
Proveen la capacidad para seleccionar hasta tres diferente colores dependiendo
de los estados de las alarmas de desviación que se definen para el punto.
[Rate-Of-Change Alarm Color Link]
Provee la capacidad para seleccionar dos colores diferentes dependiendo del
estado de la razón de cambio de la alarma definido para el punto.

Vínculos del Tamaño del Objeto


Este vinculo se usa para variar la altura y/o ancho de un objeto
según el valor de una expresión analógica. Provee la
capacidad para controlar la dirección en que el objeto se agranda en altura y/o anchura
seteando el Anchor (Top, Middle, o Botton) del vinculo. Ambos vínculos, de anchura y
altura, pueden ser usados en el mismo objeto.

Vínculos de Localización
Este vinculo se usa para hacer que un objeto se mueva
horizontalmente, verticalmente, o en ambas direcciones
automáticamente con respecto a cambios en el valor de una expresión.
A 22

Vínculos del Porcentaje de Llenado


Este vinculo provee la capacidad para variar el nivel de relleno
de una forma o un símbolo que se llenan según el valor de una
expresión analógica. Por ejemplo, este vinculo puede usarse para mostrar el nivel de
líquidos en una embarcación. Un objeto o símbolo puede ser llenado en forma
horizontal, vertical, o ambos.

Vínculos Misceláneos
Existen cuatro vínculos misceláneos, Visibility, Blink,
Orientation y Disable. Los vínculos de visibilidad controlan la
visualización de un objeto dependiendo del valor de un
tagname discreto o expresión. Este vinculo puede usarse para
hacer que aparezcan y desaparezcan objetos. Los vínculos Blink proveen la capacidad
para hacer que un objeto parpadee de acuerdo al valor de un tagname discreto o
expresión. (Cada uno de los atributos de color del texto, Línea y relleno pueden ser
seleccionado para que un objeto parpadee). Los vínculos de orientación proveen la
capacidad para hacer que un objeto gire sobre un eje especificado de acuerdo al valor de
un tagname o expresión. El vinculo Disable provee la capacidad de impedir a un
usuario particular o un grupo de usuarios tener acceso a presionar un botón en particular
si sus AccessLevel no es lo suficientemente alto por ejemplo (si el vinculo disable es
verdadero, el texto sobre el botón 3-d no se destacará indicando que esta desabilitado).

Vínculos de valores de salida


Estos vínculos proveen la capacidad para usar un texto objeto
para mostrar el valor de una variable discreta (Discrete),
análoga (Analog), o alfanumérica (String).
A 23

III.- Menú WindowViewer

3.1.- Menú File


El menú File de WindowViewer es muy similar a cualquier menú de una
aplicación en común. Permitiendo abrir, cerrar, salir, etc. ventanas de la aplicación.

3.2.- Controlador Logic


El Menú de Logic contiene los comandos de partida (Start Logic) y
parada (Stop Logic) de la ejecución de los scripts que se crearon en el
WindowMaker.

3.3.- Menú Special


Este menú de WindowViewer contiene los comandos que son utilizados para
iniciar o reiniciar conversaciones DDE, reanudar Registros de Alarmas, iniciar/detener
registros Históricos y accesar al Wonderware Logger para ver información de error.
A 24

3.4.- /Special/Security
Los comandos de seguridad de este menú son usados para iniciar y cerrar la
aplicación, cambiar passwords o contraseñas y para configurar la lista de usuarios,
passwords y niveles de acceso. Cuando este comando es seleccionado aparece un menú
secundario de comandos:

La seguridad será discutida más adelante.

3.5.- Development!

Este es un interruptor rápido que cambia a la aplicación WindowMaker. Este es


habilitado en WindowMaker usando el comando \Special\Configure\WindowMaker.

3.6.- Diseño de Scripts en InTouch


La variedad de scripts de Wonderware expande las capacidades de InTouch para
proporcionar la ejecución de comandos y operaciones lógicas según las necesidades.
Por ejemplo presionar una tecla, abertura de ventanas, cambio de valores, etc. Al usar
Scripts, se pueden crear una gran variedad de funciones y sistemas automáticos
personalizados.
Existen seis tipos de Scripts disponibles:
Scripts de Aplicación
Scripts de Ventanas
A 25

Scripts de Teclas
Scripts de Condiciones
Scripts de Cambio de Datos
Scripts de Accionamiento de Botones (Touch Pushbotton)

Los comandos para crear estos Scripts (a excepción del Accionamiento de


Botones) se ubican en el menú /Special/Scripts.

3.7.- Scripts de Aplicación


Los Scripts de Aplicación son vinculados a una aplicación completa y se pueden
usar para correr otras aplicaciones, crear simulación de procesos, cálculo de variables.
Al seleccionar este comando aparece el siguiente cuadro de diálogo:
A 26

“On Startup” permite crear un Script que se ejecute


una vez cuando la aplicación comienza.
“While Running” crea un Script para que se ejecute
continuamente cada cierta cantidad de tiempo mientras
corre una aplicación. Este tiempo se ingresa en
milisegundos.
“On Shutdown” ejecuta el Script una vez que la
aplicación termina.
Una vez que el botón Script es presionado, aparecerá en pantalla el cuadro de
diálogo de selección de script.
Nota: Los tres tipos de scripts pueden ser utilizados en una misma aplicación. Un
Script While Running se ejecutará después de transcurridos el tiempo establecido.
Para una ejecución inmediata se debe crear un script On Starup.

3.8.- Script de Ventana


Estos tipos de scripts son vinculados a una ventana específica. La selección de
este comando causará la aparición de la ventana de diálogo Window Action Script for
“Nombre de Ventana”

“On Show” permite crear un Script que se ejecute una


vez cuando la ventana se abre por primera vez.
A 27

“While Showing” crea un Script para que se ejecute


continuamente cada cierta cantidad de tiempo mientras
la ventana está abierta. Este tiempo se ingresa en
milisegundos.
“On Hide” ejecuta el Script una vez que la ventana se
cierra.
Una vez que el botón Script es presionado, aparecerá en pantalla el cuadro de
diálogo de selección de script.
Nota: Los tres tipos de scripts pueden ser utilizados en una misma ventana. Un
Script While Showing se ejecutará después de transcurridos el tiempo establecido.
Para una ejecución inmediata se debe crear un script On Show.

3.9.- Script de Teclas


Estos tipos de scripts son vinculados a una tecla específica del teclado. Pueden
muy útiles para crear teclas globales para la aplicación, por ejemplo, volver a una
ventana del menú principal, salida del operador (log off). Seleccionando este comando
aparecerá el cuadro de diálogo Keyboard Action Script:

“On Key Down” permite crear un Script que se ejecute


una vez cuando la tecla inicialmente es presionada por
primera vez.
“While Down” crea un Script para que se ejecute
continuamente cada cierta cantidad de tiempo mientras
la tecla está presionada. Este tiempo se ingresa en
milisegundos.
A 28

“On Key Up” ejecuta el Script una vez que la tecla es


dejada de presionar.
Una vez que el botón Script es presionado, aparecerá en pantalla el cuadro de
diálogo de selección de script.
Nota: Los tres tipos de scripts pueden ser utilizados en una misma ventana. Un
Script While Down se ejecutará después de transcurridos el tiempo establecido.
Para una ejecución inmediata se debe crear un script On Key Down.
Nota especial: Si un objeto o botón de acción en la ventana activa (abierta) es
asignado a una misma tecla usada para un Script de teclas, el vínculo en la tecla de
la ventana tendrá preferencia sobre la ejecución del Script.

3.10.- Scripts de Condiciones


Estos Scripts están vinculados a un tagname o expresión discretos. Cuando este
comando es seleccionado aparecerá el cuadro de diálogo Condition Action Script:

“On True” ejecuta un Script una vez cuando la


condición pasa a ser verdadera.
“On False” se ejecuta cuando la condición pasa a ser falsa.
“While True” ejecuta el Script continuamente a una
frecuencia especificada mientras la condición es verdadera.
“While False” ejecuta el Script continuamente a una
frecuencia especificada mientras la condición es falsa.
A 29

Nota: El valor para la condición debe pasar a la transición verdadera o falsa antes
de que el Script se ejecute. Por ejemplo, si el valor inicial cuando parte el
WindowViewer es verdadero, el valor debe transformarse en falso y nuevamente a
verdadero para que se ejecute un Script On True.

Establece el tiempo (en milisegundos) en que los Scripts While


True y While False se ejecutarán en forma repetitiva.
Una vez que un botón de Script es pulsado aparecerá en pantalla el cuadro de
diálogo del Script.
Nota: Los cuatro tipos de Scripts pueden ser usados a la misma condición. Ambos
Scripts, While True y While False, se ejecutarán después de transcurridos el
tiempo en milisegundos establecido. Para una ejecución inmediata, se crea o se
crean los Scripts On True y/o On False.
Nota Especial: Los tagnames que son modificados (escritos) en un Script de
Condición o Script de Cambio de Dato, no deberían ser usados como el tagname
para un Script de Cambio de Datos o en la expresión de un Script de Condición.
Ejemplo, un Script de Cambio de Dato ejecuta un valor A cambiando el contenido
lógico de B=B+1. El tagname B no debería ser usado cono el tagname para un
Script de Cambio de Dato o ser parte de la expresión de un Script de Condición.

3.11.- Scripts de Cambio de Datos


Estos Scripts se vinculan a un tagname o tagname field. Se ejecuta una vez
cuando el valor del tagname o campo de un tagname cambien por un valor mayor que
la banda muerta (dead band) definida para él, el ítem /point en el Tagname Dictionary.
A 30

Nota Especial: Los tagname que son modificados en un Script de Condición o


Script de Cambio de Dato no deben ser usados con el tagname para un Script de
Cambio de Datos o en la expresión de un Script de Condición.

3.12.- Scripts de Accionamiento de Botones


Estos Scripts son vinculados a un objeto tipo Botón. Cuando el operador
presione el botón el Script de Accionamiento es ejecutado. Seleccionando un vínculo de
animación usando un Botón de Acción aparecerá el cuadro de diálogo Touch Action
Script.

“On Key Down” permite crear un Script que se ejecute


una vez cuando el objeto inicialmente es presionado.
“While Down” crea un Script para que se ejecute
continuamente cada cierta cantidad de tiempo mientras el
objeto está presionado. Este tiempo se ingresa en
milisegundos.
“On Key Up” ejecuta el Script una vez que el objeto se
deja de presionar.
Una vez que el botón Script es presionado, aparecerá en pantalla el cuadro de
diálogo de selección de script.
Nota: Los tres tipos de scripts pueden ser utilizados al mismo botón. Un Script
While Down se ejecutará después de transcurridos el tiempo establecido. Para una
ejecución inmediata se debe crear un script On Key Button Down.
A 31

3.13.- Ingreso de la Operación Lógica


En la mayoría de los casos, una vez que el tipo de Script es seleccionado en su
respectivo cuadro de diálogo, aparecerá también el siguiente cuadro de diálogo en la
pantalla:

Significado de cada uno de los Botones

Pulsando alguno de estos botones aparecerá la


palabra escrita de ellos.
Pulsando alguno de estos botones de equivalencia o
matemática ingresa la función correspondiente a él.
A 32

El texto seleccionado (resaltado) es eliminado del Script. El texto


eliminado no es guardado en la carpeta de Windows.

El texto seleccionado (resaltado) es borrado del Script. El texto


cortado es guardado en la carpeta de Windows.
El texto seleccionado (resaltado) es copiado a la carpeta de Windows. El
texto copiado no es borrado del Script.

Pega el contenido de la carpeta de Windows en la posición del cursor en


el Script.
Se devuelve a la última operación de edición.
Remueve el primer carácter tabulado a la izquierda de la posición del
cursor.
Inserta una tabulación a la derecha de la posición del cursor.

Borra completamente el texto del Script. (El Script no es borrado de la


aplicación).
Valida el Script ingresado. Si existen errores aparecerá el correspondiente
cuadro de mensaje.

Aparece en pantalla los tópicos de ayuda de WindowMaker para todas las


funciones del editor de Script.
Pulsando este botón aparecerá el cuadro de diálogo Reemplazar:
A 33

Funciones específicas están creadas internamente en el sistema y pueden


ser seleccionadas e insertadas al Script seleccionando uno de esos
botones. Al seleccionar uno de ellos aparecerá el cuadro de diálogo
Choose Function.
A 34
A 35
A 36
A 37

Esta función entrega el valor absoluto de un número específico(el equivalente


sin signo). Ejemplo:

ResultNumericTag= Abs(InputNumericTag);

En esta instrucción el valor absoluto del NumericTag es calculado y dado como


ResultNumericTag.

Esta función puede ser usada en un botón para reconocer cualquier alarma
desconocida. Esta función puede ser aplicada a un tagname, Grupo de Alarmas o Grupo
de Variables. (Un Grupo de Variables es un tagname que tiene el nombre de algún
Grupo de Alarma asignado a él.) Ejemplo:
A 38

Ack $System; (Reconoce todas las alarmas)


Ack Tagname;
Ack GroupName;
Ack GroupVariable;

Esta función activa otra aplicación en Windows que está ejecutando.


Ejemplo:
ActivateApp “Title Text”;

“Title Text” es la palabra o texto exacto, incluyendo espacios, que aparece en la Lista de
Tareas.
Ejemplo:
ActivateApp “Microsoft Excel”;

Nota: El Title Text o aplicación a activar debe estar entre comillas.

Entrega la función arco coseno expresado en grados entre 0º y 180º.


Ejemplo:
ResultNumericTAg=ArcCos(InputNumericTag)
Ejemplo:
ArcCos(1) estregará el valor 0
ArcCos(-1) entregará el valor 180

Entrega la función arco seno expresado en grados entre -90º y 90º.


Ejemplo:
ResultNumericTAg=ArcSin(InputNumericTag)
A 39

Ejemplo:
ArcSin (1) estregará el valor 90
ArcSin(-1) entregará el valor -90

Entrega la función arco tangente expresada en grados entre -90º y 90º.


Ejemplo:
ResultNumericTAg=ArcTan(InputNumericTag)
Ejemplo:
ArcTan (1) estregará el valor 45

ArcTan (0) entregará el valor 0


Entrega el coseno de un ángulo en grados.
Ejemplo:
ResultNumericTAg=Cos(InputNumericTag)
Ejemplo:
Cos (90) estregará el valor 0
Cos(0) entregará el valor 1

Esta función cambia en forma dinámica un tagname de mensaje basado en un


tagname de una variable discreta.
Ejemplo:
MsgTag=DText(Discrete, “OnMessage”, “OffMessage”);

MsgTag es un tagname tipo mensaje, Discrete es un tagname tipo discreto,


OnMessage es el mensaje que aparecerá cuando el valor de Discrete es 1(True, On,
Yes, Sí). El mensaje se convertirá en OffMessage es el mensaje que aparecerá cuando
A 40

el valor de Discrete es 0(False, Off, No). (Los mensajes de estado On y off deben estar
entre comillas)

Esta función entrega el valor de la potencia de .


Ejemplo:
ResultNumericTag=Exp(InputNumericTag)
Ejemplo:
Exp(1) dará el valor 2.71828182..........

El rango de esta función es entre -88.72 hasta 88.72

Esta función es usada para copiar un archivo fuente a un archivo destino,


similar al comando de DOS o la función de copiado en el administrador de archivos.

FileCopy(SourceFile, DestinationFile, MonitorTag);


donde:
SourceFile - nombre del archivo fuente (incluyendo la ruta completa)
DestinationFile - nombre del archivo destino (incluyendo la ruta completa) o nombre
del directorio.
MonitorTag - Nombre de un tag que usará el comando FileCopy() para informar el
progreso del copiado. Este parámetro debe tener un caracter referenciando el nombre
del tag(no el mismo nombre del tag). Si el tag monitor se llama Monitor, se debe
agregar “Monitor” o Monitor.name, no Monitor.
Cuando la función FileCopy() es usada, ésta automáticamente arroja un valor 1
si el procedimiento fue iniciado exitosamente. 0 si existe otro procedimiento en
ejecución (el nuevo procedimiento no podrá ser inicializado) ó 1 si existe un error.
Usando estos valores, la inicialización de FileCopy() puede ser monitoreada:
A 41

Status=FileCopy(“C:\*.TXT”, “C:\BACKUP”,“Monitor”);

donde: Status es un tag entero el cual puede ser 1, -1 ó 0.


FileCopy() es ejecutado en segundo plano lo cual no interfiere en la operación de
InTouch. El propósito del MonitorTag es permitir que el progreso de copiado sea
monitoreado por una aplicación o un usuario. De esta forma, el usuario puede ser
alertado de errores que puedan ocurrir DESPUES que el procedimiento sea inicializado.
Este es diferente que el valor Status descrito recientemente, el cual indica si el
procedimiento ha sido iniciado exitosamente.
Una vez que el copiado ha sido exitosamente iniciado, el valor del MonitorTag
es entonces asignado. El valor está en 0 mientras el procedimiento está aún en progreso.
Es 1 cuando se completó exitosamente ó -1 si hay un error antes de que sea completado
normalmente, SourceFile y DestinationFile son nombres de archivos. Sin embargo, si
un archivo es copiado con FileCopy, el destino también puede ser un directorio, como
muestra el siguiente ejemplo:

FileCopy(“C: \DATA.TXT”, “C: \BACKUP”, “Monitor”);

El tag Monitor será 1 cuando la copia sea realizada por completo.


Si SourceFile contiene varios archivos, sin embargo, el destino DEBE ser un
directorio. En caso contrario la función dará un código de error.
Ejemplo:
FileCopy(“C: \*. TXT”, “C: \BACKUP”, “Monitor”);
El tag Monitor será 1 cuando la copia sea realizada por completo.

Esta función es usada para borrar archivos indexados o innecesarios.


FileDelete(Filename).
Ejemplo:
A 42

Status=FileDelete(“C:\DATA.TXT”)

Si el o los archivos son encontrados y borrados, la función estará en 1. En caso contrario


en 0.

Similar a FileCopy(), excepto que esta función mueve archivos de un lugar a


otra en vez de hacer una copia.

FileMove(SourceFile,DestinationFile,MonitorTag);
donde:
SourceFile - nombre del archivo fuente (incluyendo la ruta completa)
DestinationFile - nombre del archivo destino (incluyendo la ruta completa).
MonitorTag Nombre de un tag que usará el comando FileMove() para informar el
progreso del movimiento. Este parámetro debe tener un caracter referenciando el
nombre del tag(no el mismo nombre del tag). Si el tag monitor se llama Monitor, se
debe agregar “Monitor” o Monitor.name, no Monitor.
Cuando la función FileMove() es usada, ésta automáticamente arroja un valor 1 si el
procedimiento fue iniciado exitosamente. 0 si existe otro procedimiento en ejecución(el
nuevo procedimiento no podrá ser inicializado) ó 1 si existe un error. Usando estos
valores, la inicialización de FileMove() puede ser monitoreada:

Status=FileMove(“C:\DATA.TXT”,“C:\BACKUP\DATA.TXT”,“Monitor”);
donde:
Status es un tag entero el cual puede ser 1, -1 ó 0.
FileMove() - es ejecutado en segundo plano y no interfiere en la operación de InTouch.
MonitorTag - permite que el progreso de copiado sea monitoreado por una aplicación o
un usuario, el usuario puede ser alertado de errores que puedan ocurrir DESPUES que el
procedimiento sea inicializado. Este es diferente que el valor Status descrito
recientemente, el cual indica si el procedimiento ha sido iniciado exitosamente.
A 43

Una vez que el movimiento ha sido exitosamente iniciado, el valor del


MonitorTag es entonces asignado. El valor está en 0 mientras el procedimiento está aún
en progreso. Es 1 cuando se completó exitosamente ó -1 si hay un error antes de que sea
completado. Si el SouceFile y DestinationFile se encuentran en el mismo disco, la
función cambia la referencia de directorio de archivos sin mover los datos. En este caso
el procedimiento será rápido, sin importar el tamaño del archivo.
Si el SouceFile y DestinationFile se encuentran en diferentes discos, el tiempo
de dependerá del tamaño del archivo. En este caso es transferida de un disco físico a
otro.
Ejemplo:
FileMove(“C:\DATA.TXT”, “D:\DATA.TXT”,“Monitor”);

Nota: También puede ser usado para renombrar archivos cuando el SourceName y
el DestinationName especifican el mismo directorio pero diferentes nombres de
archivos.
Ejemplo:
FileMove(“C:\DATA.TXT”, “C:\DATA.bak”,“Monitor”);

El archivo DATA.TXT es renombrado a DATA.BAK. El tag Monitor será 1 cuando la


copia sea realizada por completo.

Esta función lee variables separadas por coma, Comma Separated Variable
(CSV) de un archivo específico.

FieldReadFields(Filename,BytePosition,Tagname,NumberOfFields);
donde:
Filename especifica el archivo donde se leerán los campos.
BytePosition especifica la posición del comienzo de la lectura.
A 44

Tagname especifica el nombre de un tag Intouch donde el primer ítem será escrito. El
name de este tag debe terminar en un número(ej. :MyTag1). Este parámetro debe ser un
caracter indicando el nombre del tag (no el tag mismo). Si el tag fuera MyTag, se debe
agregar “MyTag” o MyTag.name; no solamente MyTag1.
NumberOfFields especifica el número de campos a leer (el número de campos
separados por coma en cada registro del archivo).
Si el Tagname es “MyTag1” y NumberOfFields es 3, entonces hay 3 campos
leídos del archivo y son almacenados en MyTag1, MyTag2 y Mytag3. Estos tags, con
nombres consecutivos deben ser primeramente creados en InTouch y deben ser de tipos
diferentes(Integer, Message, etc.).
Ejemplo:
Si la primera línea de C:\DATA\FILE.TXT es: This is text, 3.1416,5
El siguiente script leerá esta línea y almacena “This is text” en MyTag1,
3.1416 en MyTag2 y 5 en MyTag3:

BytePosition=FileReadFields(“C:\DATA\FILE.TXT”,0,“MyTag”,3)

La función toma el nuevo valor de Byte position después de la lectura. Se puede usar
este valor como el BytePosition para la siguiente lectura.
Por ejemplo:
FileReadFields(“C:\DATA\FILE.TXT”, BytePosition,“MyTag1”,3)

Esta función leerá un número específico de bytes (o una línea completa) de un


archivo específico.

FileReadMessage(Filename,BytePosition,MessageTag,ByteCount);
donde:
Filename especifica el archivo desde donde se leerá.
BytePosition especifica la posición en el archivo para comenzar a leer.
A 45

MessageTag corresponde al lugar donde almacenar el dato elido del archivo.


ByteCount especifica cuantos bytes a leer desde el archivo. Para archivos de texto,
ByteCount puede ser sesteado en 0. La función entonces leerá hasta el próximo linefeed
en el archivo.
Ejemplo:
FileReadMessage(“C:\DATA\FILE.TXT,0,MsgTag,0);

La primera línea será leída desde el archivo C:\DATA\FILE.TXT y almacenada en


MsgTag.

La función toma el nuevo byteposition después de la lectura. Este valor se puede usar
como el BytePosition para la próxima lectura.

Esta función escribe un registro tipo CVS para un archivo específico.

FileWriteFields(Filename, BytePosition; TagName, NumberOfFields);


donde:
Filename especifica el nombre del archivo a escribir. Si no existe es creado.
BytePosition especifica la ubicación en que archivo comenzará a ser escrito. Si
BytePosition es -1, la escritura comienza al final del archivo.
Tagname especifica el nombre de un tag InTouch de donde proviene el primer ítem de
dato. El nombre de este tag debe terminar con un número. Debe tener un caracter
indicando el nombre del tag.
NumberOfFields especifica el número de campos a escribir(número de campos
separados por coma grabados en el archivo).
Si el TagName es “MyTag1” y el NumberOfFields es 3, entonces 3 campos se
escriben en el archivo (desde MyTag1, MyTag2 y Mytag3). Estos tag con nombres
consecutivos deben ser primero creados en InTouch y deben ser de diferentes
tipos(Integer, Message, etc.)
A 46

El siguiente script escribirá la línea “This text, 3.1416, 5” a la primera línea de


C:\DATA\FILE.TXT. “This text” es el actual valor en MyTag1, 3.1416 en MyTag2 y 5
en MyTag3:

FileWriteFields(“C:\DATA\FILE.TXT”,0,“MyTag”,3);

La función toma el nuevo valor del byte de posición después de la escritura. Este valor
se puede usar como el BytePosition para la próxima escritura.
El siguiente script escribirá el siguiente texto de MyTag al final de
C:\DATA\FILE.TXT:
FileWriteFields(“C:\DATA\FILE.TXT”,-1,“MyTag1”,3);

Esta función escribirá un numero de bytes específicos (o una línea completa) en


un archivo específico.

FileWriteMessage(Filename, BytePosition, MessageTag, linefeedFlag);


donde:
Filename especifica el archivo a escribir. Si el archivo no existe, será creado.
BytePosition especifica la ubicación en el archivo para comenzar a escribir. Si el
BytePosition es -1, la función escribirá al final del archivo.
MessageTag especifica los caracteres a escribir en el archivo.
LineFeedFlag especifica agregar o no una línea después de la operación de escritura.
Al escribir en un archivo de texto, setear el LineFeddFlag en 1.
La función retoma el nuevo byte de posición después de la escritura. Este valor
se puede usar como el BytePosition para la próxima escritura.
Ejemplo:
FileWriteMessage(“C: \DATA\FILE.TXT”, -1,MsgTag,1);
A 47

Esta instrucción escribirá el tag de mensaje MsgTag al final del archivo C:


\DATA\FILE.TXT.

Esta función puede ser usada en un script para obtener el nombre de un nodo
NetDDE a una variable de caracteres. Formato válido:

GetNodeName(messagetagname, 131);

Cuando este script se ejecuta, la función GetNodeName() leerá el nombre del nodo local
y lo registrará en el messagetagname. (El número 131 establece la longitud del caracter
para el tagname de mensaje.)
Nota: Esta función se ejecuta sólo si se está ejecutando NetDDE.

Esta función oculta varias ventanas con un script. Un comando “Hide” debe
preceder a cada ventana que se desea cerrar.
Ejemplo:
Hide “WindowName”;

“WindowName” debe ser el nombre de una ventana que existe o será creada. En
runtime, si la ventana no existe, WindowViewer ignora la sentencia. También, si el
nombre de la ventana es usado en un script de cambios, ésta también será cambiada en
esta instrucción.
Nota: Si el script es solamente para mostrar u ocultar pantallas, se recomienda
usar el botón Touch Pushbotton que vincula Show Window o Hide Windows en
vez de esta función. Si esos botones son usados y cambia el nombre de la ventana,
Intouch hará el cambio en el vínculo.
A 48

Esta función crea un botón genérico para ocultar a través de una aplicación
para ocultar la actual ventana activa.
Ejemplo:
HideSelf;

Nota: el funcionamiento del script de botón Hideself es sólo aplicable para un


action pushbutton script.

Esta función es usada para determinar si hubo algún error durante la última
recuperación de escritura. Ejemplo:

HTGetLastError(TrendName, UpdateCount; Pen#);


donde:
TrendName es un tag HistTrend representando el nombre la tendencia.
UpdateCount es un entero representando la tendencia. El campo UpdateCount, y Pen#
es un tag entero que representa el número de escritura (de 1 -4).

Los siguientes tag enteros ResultCodes serán dados:

0= Sin Error.
1=Error General del Servidor
2=Reuqerimiento Antiguo
3=Error de Archivo
4=Servidor no Cargado.
5= Tendencia/Escritura en la Función no Existe
6=Nombre del Tag de Tendencia no existe en la Base de Datos
7=Número de Escritura en la función es Inválida (fuera del rango 1 a 4)
A 49

Ejemplo:
ResulCode=HTLastError(“Trend1.UpdateCount, Pen3);

Esta instrucción recupera el error para la última recuperación de Pen3 de la tendencia

con el tagname Trend1 y el resultado es puesto en el tag entero ResultCode.


Esta función convierte el tagname del tag actualmente usado por el pen# de la
tendencia especificada.

HTGetPenName(TrendName, UpdateCount, Pen#)


donde:
TrendName es un tag de HistTrend representando el nombre de la tendencia.
UpdateCount es un entero que representa la tendencia. El campo UpdateCount y Pen#
es un tag entero que representa el número de escritura (1-4). Un tag de mensaje es dado
representando el tag específico del pen.

Ejemplo:
TrendPen2=HTGetPenName(“Trend1”, Trend1.UpdateCount, Pend2);

Este ejemplo recupera el tagname para el Pen2 de la tendencia con el tagname Pen1 y
coloca el resultado en el tag de mensaje TrendPen2.

Esta función retorna el tiempo en segundos desde 00:00:00 hrs. GMT, January
1, 1970 para el muestreo en la ubicación del scooter especificado por Scooter# y
ScooterLocation. UpdateCount, Scooter#, y ScooterLocation permiten evaluar la
expresión ser evaluada cuando alguno de estos parámetros cambian. Esto asegura que la
expresión es evaluada después de nuevos restablecimientos o desplazamientos del
scooter.
A 50

HTGetTimeAtScooter(TrendName, UpdateCount, Scooter#,


ScootertLocation)
donde:
TrendName es un tag HistTrend representando el nombre de una tendencia,
UpdateCount es un entero representando el campo UpdateCount de la tendencia,
Scooter# es un entero representando el scooter izquierdo o derecho (1=Scooter
Izquierdo, 2=Scooter Derecho), y ScooterLocation es un número real representando el
campo ScooterPosRight o ScooterPosLeft. Un entero es dado representando el tiempo
en segundos desde 1/1/70.
Ejemplo:
HTGetTimeAtSCooter(“Trend1”,Trend1.UpdateCount,1,Trend1.ScooterPosLeft);

Esta función restablece el tiempo en segundos por el valor a la posición del scooter
actual para el scooter izquierdo de la tendencia etiquetada Trend1.

Esta función retorna en la variable la hora/fecha para el muestreo a la ubicación


del scooter especificada por Scooter# y ScooterLocation. UpdateCount, Scooter# y
ScooterLocation causan que la expresión sea evaluada cuan algunos de estos parámetros
cambian. Esto asegura que la expresión es evaluada después de nuevos
restablecimientos o desplazamientos del scooter. El formato de la variable determina el
contenido del valor retornado.
Ejemplo:
NewRightTimeString=HTGetTimeStringAtScooter(TrendName,Update
Count,Scooter#,ScooterLocation,Format)
donde:
TrendName es un tag HistTrend representando el nombre de la tendencia,
UpdateCount es un entero representando el campo UpdateCount de la tendencia.
Scooter# es un número real que representa el scooter izquierdo o derecho(1=Scooter
A 51

Izquierdo, 2=Scooter Derecho), ScooterLocation es un número real que representa el


campo ScooterPosRight o ScooterPosLeft de la tendencia, Format es una variable que
especifica el formato tiempo/fecha a usar, NewRightTimeString es un tag message
donde el resultado de la función será retornado.
Ejemplo:
HTGetTimeStringAtScooter(“Trend1”, Trend1.UpdateCount, 2,Trend1.
ScooterPosRight,”Time”);
Esta instrucción restablece el valor tiempo/fecha a la posición del scooter actual por el
scooter derecho de la tendencia llamada Trend1. El valor es almacenado en el tag
message NewRightTimeString y está en formato “Time”.
Los formatos pueden ser los siguientes: “Date”, “Time”, “DateTime”,
“DOWShort”(Wed, por ejemplo), y “DOWLong”(Wednesday, por ejemplo).

Esta función toma un valor del tipo requerido para la tendencia completa de un
Pen especificado. El parámetro UpdateCount causará que la expresión sea evaluada
después que una recuperación es completa.
Ejemplo:
HTGetValue(TrendName, UpdateCount, Pen#, ValueType)
donde:
TrendName es un tag HistTrend que representa el nombre de la tendencia.
UpdateCount es un entero que representa el campo UpdateCount de la tendencia.
Pen# es un tag entero que representa el número de escritura (1-4),
ValueType es una cadena que indica el tipo de valor. Este ValueType puede ser uno de
los siguientes:

“PenAverageValue”= Promedio de la tendencia completa


“PenMaxValue”= Máximo para la tendencia
“PenMinValue”= Mínimo para la tendencia
“PenStdDev”= Desviación standard para la tendencia
A 52

Un tag de memoria real es dado representando el valor calculado de estos tipos.


Ejemplo:
LeftHemisphereSD=HTGetValue(“Trend1”, Trend1.UpdateCount, Pen2,”PenStdDev”)

Esta función obtendrá la desviación standard para el dato capturado para las tendencias
Trend1, Pen2. El valor es almacenado en el tag de memoria real LeftHemisphereSD.

Esta función entrega del tipo requerido para el muestreo en la posición del
scooter, tendencia y pen# especificados. El parámetro UpdateCount permite que la
expresión sea evaluada después de un restablecimiento completo.

HTGetValueAtScooter(TrendName, UpdateCount, Scooter#,


ScooterLocation, Pen#, ValueType)
donde:
TrendName es un tag HistTrend que representa el nombre de la tendencia,
UpdateCount es un entero que representa el campo. UpdateCount de la tendencia,
Scooter# es un entero que representa el scooter izquierdo o derecho (1=Scooter
Izquierdo, 2=Scooter Derecho)
Pen# es un entero que representa el número de pen (1-4)
ValueType es una variable que indica el tipo de valor a entregar. ValueType puede ser:

“PenValue”= Valor de la posición del Scooter.


“PenVaid”= 0 si no es válido, 1 si lo es.

Un tag de memoria real entrega el valor calculado “PenValue”. Un tag discreto


de memoria representa el valor para “PenValid”.
Ejemplo:
ValidFlag=HTGetValueAtScooter(“Trend1”,Trend1.UpdateCount,2,
Trend1.ScooterPRigh,Pen3,“PenValid”);
A 53

Esta instrucción almacena un 1 si el valor es un muestreo actual o un 0 si no lo es para


el Pen3 de la tendencia Tren1 en un a flag el discreto de memoria Valid Flag para la
posición actual del scooter derecho.

Esta función retorna un valor del tipo requerido para el dato contenido entre las
posiciones del scooter derecho y el izquierdo para un escrito específico de la tendencia.
El parámetro UpdateCount permitirá que la expresión sea calculada después de un
restablecimiento completo.

HTGetValueAtZone(TrendName, UpdateCount, Scooter1,


Scooter2Location, Pen#,ValueType)
donde:
TrendName es un tag HistTrend que representa el nombre de la tendencia.
UpdateCount es un entero que representa el campo UpdateCount de la tendencia.
Scooter1Location es un real que representa el campo ScooterPosLeft de la tendencia.
Scooter2Location es un real que representa el campo ScooterPosRight de la tendencia.
Pen# es tag entero representando el número de escrito (de 1 a 4).
ValueType es una variable indicando el tipo de valor a retornar. Valuetype puede ser
uno de los siguientes:

“PenAverageValue”= Valor medio para la zona entre el scooter derecho y el izquierdo.


“PenMaxValue”= El máximo para la zona entre el scooter derecho y el izquierdo.
“PenMinValue”= El mínimo para la zona entre el scooter derecho y el izquierdo.
“PenStdDev”= Desviación standard para la zona entre el scooter derecho y el izquierdo.

Un tag de memoria real es dado representando el valor calculado de los tipos


dados anteriormente.
Ejemplo :
A 54

AvgValue=HTGetValueAtZone(“Trend1”, Trend1.UpdateCount, Trend1.


ScooterPosLeft, Trend1.ScooterPosRight, Pen1,”PenAverageValue”);

Esta instrucción calcula el valor medio para el dato entre los scooters derecho e
izquierdo de la tendencia “Trend1”, Pen1. El valor es almacenado en el tag de memoria
real AvgValue.
Esta instrucción establece el tiempo de partida de la tendencia a un valor
anterior que el actual tiempo de partida por un porcentaje del ancho de la tendencia. El
efecto es mostrar el gráfico date/time a la izquierda por un porcentaje dado.
Ejemplo:
HTScrollLeft(TrendName, Percent)
donde:
TrendName es un tag HistTrend representando el nombre de la tendencia.
Percent es un número real representando el porcentaje del gráfico a desplegar (0.0 a
100.0). Ejemplo:
HTScrollLeft(“Trend”, 10.0);

Esta instrucción despliega el time/date para una tendencia con un tagname de Trend1 al
10%. Si la pantalla actual comienza a las 12:00:00 PM y en ancho de pantalla es de 60
segundos, entonces, la nueva tendencia comenzará a las 11:59:54 AM(después que la
función es ejecutada).

Esta instrucción establece el tiempo de partida de la tendencia a un valor


anterior que el actual tiempo de partida por un porcentaje del ancho de la tendencia. El
efecto es mostrar el gráfico date/time a la derecha por un porcentaje dado.

HTScrollRight(TrendName, Percent)
donde:
A 55

TrendName es un tag HistTrend representando el nombre de la tendencia.


Percent es un número real representando el porcentaje del gráfico a desplegar (0.0 a
100.0). Ejemplo:
HTScrollRight(“Trend”, 20.0);

Esta instrucción despliega el time/date para una tendencia con un tagname de Trend1 al
20%. Si la pantalla actual comienza a las 12:00:00 PM y en ancho de pantalla es de 60
segundos, entonces, la nueva tendencia comenzará a las 12:00:12 PM (después que la
función es ejecutada).

Esta función es usada para asignar un diferente tagname a un trazado de


tendencia.
HTSetPenName(TrendName.Pen#,PenName)
donde:
TrendName es un tag HistTrend que representa el nombre de la tendencia
Pen# es un tagname entero representando el número de trazado(de 1 a 4)
PenName es una variable que representa el nuevo tagname asignado al trazado.
Ejemplo:
HTSetPenName(“Trend1”, Pen3, “OutletPressure”);

En esta instrucción Pen3 de Tendencia1 usará como tagname OutletPressure.

Esta función causa que el dato sea recuperado y mostrado con una hora final
igual a la hora actual. La hora de inicio será igual al EndTime - Ancho del gráfico.

HTUpdateToCurrentTime(TrendName)
donde:
TrendName es un tag HistTrend correspondiente al nombre de la tendencia.
A 56

Ejemplo:
HTUpdateToCurrentTime(“Trend1”);

Esta instrucción recupera y muestra el dato para el tag histórico “Trend1” a la hora
exacta. Si fueran las 3:04 PM y el ancho de la tendencia es 60 segundos, la nueva hora
de término será 3:04 PM. La nueva hora de inicio será 3:03 PM.

Esta función calculará un nuevo ancho de gráfico y tiempo de inicio. Si el


campo ScooterPosLeft de la tendencia es 0.0 y ScooterPosRight es 1.0, entonces el
nuevo ancho del gráfico es igual al ancho antiguo dividido por dos. El nuevo tiempo de
inicio será calculado de acuerdo al valor de LockString.

HTZoomIn(TrendName, LockString)

donde:
TrendName es un tag HistTrend del nombre de la tendencia.
LockString es una variable que representa el tipo de zoom. Puede ser uno de los
siguientes:
“StartTime”= Mantiene el tiempo de inicio igual al de antes del zoom.
“Center” = Mantiene el tiempo central igual al de antes del zoom.
“EndTime”= Mantiene el tiempo final al de antes del zoom.

Si las posiciones de los scooters no están al final, el nuevo ancho del gráfico es
el tiempo entre ScooterPosLeft y ScooterPosRight. En ese caso, el valor de LockString
no se usa. El ancho mínimo del gráfico es 1 segundo. Las posiciones de los scooters
serán para ScooterPosLeft=0.0 y para ScooterPosRight=1 después del zoom.
Ejemplo:
HTZoomIn(“Trend1”, “StartTime”);
A 57

Esta instrucción mostrará la pantalla en factor de dos y mantendrá el mismo


tiempo de inicio para el tag de tendencia “Trend1”. Trend1.ScooterPosRight es igual a 1
y Trend.ScooterPosLeft es igual a 0.0. Si el tiempo de inicio antes del zoom era 1:25:00
PM y el ancho del gráfico era 30 segundos (después de realizar el zoom), el tiempo de

inicio todavía será 1:25:00. Pero en ancho será de 15 segundos.


Calcula un nuevo ancho del gráfico y tiempo de inicio. El nuevo ancho del
gráfico es el antiguo multiplicado por dos. El nuevo tiempo de inicio será calculado de
acuerdo al LockString.

HTZoomOut(TrendName, LockString)
donde:
TrendName es un tag HistTrend del nombre de la tendencia.
LockString es una variable que representa el tipo de zoom. Puede ser uno de los
siguientes:
“StartTime”= Mantiene el tiempo de inicio igual al de antes del zoom.
“Center” = Mantiene el tiempo central igual al de antes del zoom.
“EndTime”= Mantiene el tiempo final al de antes del zoom.

Si las posiciones de los scooters no tienen efecto sobre HTZoomOut.


ScooterPosLeft=0.0 y ScooterPosRight. =1 después del zoom.
Ejemplo:
HTZoomOut(“Volume”, “Center”);

Esta instrucción mostrará la pantalla en factor de dos y mantendrá el mismo tiempo


central para el tag de tendencia “Volume”. Si el tiempo de inicio antes del zoom era
2:15:00 PM y el ancho del gráfico era 30 segundos, el tiempo de inicio después de
realizar el zoom todavía será 2:15:00. El ancho será de 60 segundos y el tiempo central
de la tendencia permanecerá en 2:15:15.
A 58

Prueba cuando una aplicación está Activa.

ResulDiscrete=InfoAppActive(TaskListname);

El título para una aplicación en particular puede ser determinado usando la función
InfoAppTitle.
Ejemplos:
InfoAppActive(“Microsoft Excel”) será 1 (si se está ejecutando)
InfoAppActive(“Calculator”) será 0 (si no se está ejecutando)

Esta función retorna al programa especificado que está corriendo en la Lista de


Tareas.
ResultMessage=InfoAppTitle(ProgramEXEName);

En esta instrucción, el programa, si existe, de nombre ProgramExeName será asignado a


ResultMessage. Por ejemplo, un ProgramExeName “calc” será “Calculator”.
Ejemplos:
InfoAppTitle(“calc” será “Calculator”
InfoAppTitle(“excel”) será “Microsoft Excel”

Entrega la información de un disco local o conectado en la red.

ResultInteger=InfoDisk/DriveLetter, InfoType, Trigger);


A 59

En esta instrucción, la información acerca del disco especificado por la letra del
DriveLetter es asignada a ResultInteger. InfoType determina la información deseada en
particular:
Case1: Entrega el tamaño total del disco (en bytes).
Case2: Entrega el espacio disponible en el disco (en bytes).
Trigger ejecutará la función InfoDisk cada tiempo que el valor del Trigger cambia.
Ejemplo:
InfoDisk(“C”, 1, $Minute) será 233869345 (capacidad total)
InfoDisk(“C”, 2, $Minute) será 3238935 (espacio disponible)

En estos ejemplos, la función se ejecutará cada minuto y entregará el valor actual.

Nota: Trigger puede ser algún tagname (no está limitado a un sistema de
variables).
Nota: Así como en otras funciones se usan caracteres simples, si el tag message
contiene más de una letra y es usado en InfoDisk (como DriveLetter), sólo el
primer caracter del tag será considerado.

Esta función retorna la información sobre un archivo o subdirectorio específico


en un computador (o equipo conectado en red).

ResultInteger=InfoFile(FileName, InfoType, Trigger);

En esta instrucción, la información acerca de un archivo especificado como FileName


es retornada a ResultInteger. El FileName debe incluir la ruta completa del archivo,
pero también puede incluir los caracteres comodines(*,?). InfoType determina la
información en particular que se muestra a continuación:
Case 1: ¿Existe el archivo?. Es 1 si el nombre del archivo es un archivo actual. Es 2 si
el FileName es un directorio. Es 0 y la función no puede encontrar el archivo.
A 60

Caso 2: Tamaño del archivo(en bytes)


Caso 3: Fecha/Hora del archivo. ( en segundos desde Jan-1-1970)
Caso 4: Número de archivos que cumplen con la descripción del filename. Este valor
será mayor que 1 para búsquedas semejantes.
Trigger ejecutará la función InfoFile cada vez que el valor de Trigger Cambie.
Ejemplos:
InfoFile(“c:\intouh\view.exe”, 1, $Minute) será 1 (encuentra el archivo)
InfoFile(“c:\intouh\view.exe”, 2, $Minute) será 634960(tamaño del archivo)
InfoFile(“c:\intouh\view.exe”, 3, $Minute) será 736701852 (encuentra el
archivo)
InfoFile(“c:\intouh\*. exe”, 4, $Minute) será 17 (encuentra 17
archivos.EXE)
En estos ejemplos, la instrucción se ejecutará cada minuto.

Nota: Trigger puede ser cualquier tagname (no está limitado a variables del
sistema).

Esta aplicación retorna al directorio actual de la aplicación InTouch.

ResultMessage=InfoInTouchAppDir();

En esta instrucción, la aplicación InTouch actual es asignada a ResultMessage.


Ejemplo:
InfoInTouchAppDir() será “c:\demoapp1”

Esta función retorna varios valores en los recursos.

ResultInteger=InfoResources(ResourceType, Trigger);
A 61

En esta instrucción, el recurso del sistema en particular especificado por el entero


ResourceType es almacenado en ResultInteger. ResourceType determina el valor del
recurso establecido, el cual puede ser:
Caso 1: Entrega el porcentaje de espacio libre para recursos GDI.
Caso 2: Entrega el porcentaje de espacio libre para recursos del USUARIO.
Caso 3: Entrega el número de bytes de memoria libre actual.
Caso 4: Entrega el número de tareas que están corriendo actualmente.
Trigger ejecutará la función InfoResources cada vez que el valor de Trigger Cambie.
Ejemplos:
InfoResources(1, $Minute) será 54 (% libre)
InfoResources(2, $Minute) será 36 (% libre)
InfoResources(3, $Minute) será 11524093 (bytes)
InfoResources(4, $Minute) será 14 (tareas)

En estos ejemplos, la instrucción se ejecutará cada minuto.

Nota: Trigger puede ser cualquier tagname (no está limitado a variables del

sistema).
Esta función retorna el próximo entero menor o igual a un número específico.

ResultNumericTag=Int(InputNumericTag)

Cuando se ingresan números reales negativo, esta función retorna el entero más alejado
del cero.
Ejemplos:
Int(4.7) será 4
Int(-4.7) será -5
A 62

Esta función retorna el logaritmo natural de un número.

ResultNumericTag=Log(InputNumericTag)
Ejemplos:
Log(100) será 4.605...
Log(1) será 0
Log(0) es indeterminado.

Esta función escribirá un mensaje definido por el usuario en el WWLogger.

LogMessage(Message);

En esta instrucción, el contenido de Message será escrito en el WWLogger.


Ejemplo:
LogMessage(“Report Script is Running”);

La siguiente línea aparecerá en el WWLogger:


94/01/14 15:21:14 WWSCRIPT Message: Report Script is Running

Entrega el valor del logaritmo en base n.

ResultNumericTag=Log(InputNumericTag, BaseNumericTag)
Ejemplos:
LogN(8,3) será 1.89279...
LogN(3,7) será 0.564...

Base 1 es indeterminado.
A 63

Esta función retorna el valor de Pi().


ResultNumericTag=Pi()
Ejemplo:
Pi() será 3.1416926...

Esta función toca una música o sonido especificado por un archivo .wav o una
entrada en la sección [sounds] del archivo WIN.INI mediante el dispositivo de sonidos
(si está instalado).
Ejemplo:
PlaySound(“c:\horns.wav”, 1);

En esta instrucción, el 1 permite tocar el sonido en forma asincrónica. Para un sonido


repetitivo, se ingresa un 9.

Nota especial: El sonido debe estar en la memoria física disponible y ser ejecutado
en una unidad de sonido instalada. Los directorios en donde se buscan los archivos
de sonido están en orden: Directorio actual; Directorio Windows; Directorio
Windows\System; los directorios listados en el PATH. Si un archivo .wav especifico
no puede ser encontrado, se escuchará el sonido por defecto por la entrada del
SystemDefault en la sección [sounds] del archivo WIN.INI Si no existe el sonido
por defecto o no es encontrado, la función no se escuchará.

Esta función crea un botón para ser usado en la impresión del gráfico Historical
Trend asociado con el tagname HistTrend específico. La Tendencia Histórica debe estar
visible cuando se usa esta función.
Ejemplo:
PrintHT(HistTrend1);
A 64

Esta función es usada para imprimir una ventana. Al usar esta función muchos
reportes pueden ser encolados. Cuando se selecciona esta función, el View carga la
pantalla en un área de memoria “off screen” o “fuera de pantalla”. Entonces el View
espera 10 segundos para permitir a todas las variables DDE ser actualizadas. La ventana
entonces en enviada a la impresora. El tiempo de espera que el View tiene puede ser
controlado al agregar la siguiente línea al archivo INTOUCH.INI:

PrintWindowWait=10000

donde: 10000 representa el número en milisegundos de espera.

Las fuentes son impresas como fuentes, los objetos se imprimen como mapas
de bits. Las ventanas con fondo blanco que contienen sólo letras se imprimen
rápidamente. Las que contienen fondo de color y varios objetos toman un tiempo
considerable en imprimir.
Ejemplo:
PrintWindow(WindowName, left, top, width, height, options)
donde:
WindowName es el nombre de la pantalla a imprimir.
left número con punto flotante en pulgadas correspondiente al margen izquierdo.
top número con punto flotante en pulgadas correspondiente al margen superior.
width número con punto flotante en pulgadas que establece el ancho que no se imprime.
Este por defecto puede ser 0, o puede tener un ancho específico.
height número con punto flotante en pulgadas que establece el largo que no se imprime.
Este por defecto puede ser 0, o puede tener un ancho específico.
options puede ser 0 ó 1 y sólo se usan si width y height están en 0. Si options está en 1,
la ventana se imprime con el aspecto de la razón del largo que es un entero múltiplo del
tamaño de la ventana. Si options está en 0, la ventana se imprime con el aspecto más
amplio que se ajuste a la página.
A 65

Nota: Si la ventana contiene mapas de bits, options debe estar en 1 para evitar
imágenes angostas.
El siguiente ejemplo de Script de Condición podría imprimir 3 páginas de
reporte cada día a las 8:30 AM:
$Hour==8 and $Minute==30;
PrintWindow(“1sr Shift Summary”, 1,1,0,0,0);
PrintWindow(“2nd Shift Summary”, 1,1,0,0,0);
PrintWindow(“3rd Shift Summary”, 1,1,0,0,0);

La función PrintWindow() es 1 si la ventana existe y pudo ser encolada para imprimir.


De otro modo, es 0. Además, el estado de la función puede ser monitoreado.
Ejemplo:
Status=PrintWindow(“Shift Summary Overview”, 1,1,0,0,0);
donde:
Status es un tag discreto que puede ser 1 ó 0.

Esta función redondea un número real a una precisión específica.

ResultNumericTag=Round(InputNumericTag, Precision);

El parámetro Precision establece la precisión a la cual el InputNumericTag será


redondeado. Ejemplos:
Round(4.3,1) será 4
Round(4.3, .01) será 4.30
Round(4.5,1) será 5
Round(-4.5,1) será -5
Round(106,5) será 106
Round(43.7, .5) será 43.5
A 66

Esta función activa teclas para otra aplicación. En la otra aplicación, las teclas
aparecerán como si se hubiesen ingresado desde el teclado mismo. Esta capacidad
puede ser usada para ingresar datos a la aplicación como también comandos a ella. La
mayoría de las teclas del teclado pueden usadas en el SendKeys. Cada tecla se
representa por uno o más caracteres tal como la A es para la letra A o {Enter} para la
tecla Enter. Para especificar más de una tecla, se debe concatenar los códigos para cada
caracter. Por ejemplo, para especificar el signo pesos ($) seguido por una b, ingresar $b.
La siguiente lista muestra los sendkeys con sus teclas válidas para ser utilizadas por el
teclado:
BACKSPACE {BACKSPACE} o {BS}HELP
{HELP}
BREAK {BREAK} HOME {HOME}
CAPSLOCK {CAPSLOCK} INSERT {INSERT}
DELETE {DELETE} o {DEL} NUMLOCK {NUMLOCK}
DOWN {DOWN} PAGE DOWN {PGDN}
END {END} PAGE UP {PGUP}
ENTER {ENTER} o { } PRTSC {PRTSC}
ESCAPE {ESCAPE} o {ESC} RIGHT {RIGHT}
F1 {F1}* TAB {TAB}
* Igual con las demás teclas de función UP {UP}

Para especificar que las teclas Shift, Ctrl y/o Alt sean presionadas mientras otra tecla lo
está, la otra tecla debe estar en minúsculas y entre paréntesis.
Ejemplo:
Sendkeys”^(p)”;
Si dos de esas teclas son usadas juntas, se utiliza un segundo par de paréntesis. Por
ejemplo, para presionar Ctrl+Alt+p se debe ingresar:
ActivateApp “Microsoft Excel”;
SendKeys “^(%(p))”;
A 67

El comando debe ser precedido por una ActivateApp para dirigir las teclas a la
aplicación respectiva.

Esta función modifica la aplicación o las porciones de un nombre o tópico de


un DD·E Access Name durante la ejecución runtime lo cual permite la implementación
de estrategias de respaldo (hot-backup) para InTouch.
Ejemplo:
SetDddeAppTopic(“DDEAccessName”, “Application”, “Topic”);

El “DDEAccessName” es el nombre actual de la definición DDE Access Name a ser


modificado. “Application” es el actual programa de la nueva aplicación, por ejemplo,
genius; y “Topic” es el nuevo nombre a ser usado por el DDE Access Name. (Estos
términos deben estar entre comillas como se muestra en el ejemplo). Si la nueva
aplicación o tópico está en blanco, la aplicación o tópico no cambian. Ejemplo:

SetDdeAppTopic(“PLC1”, “genius”, “”);

Estos tres argumentos pueden ser variables de caracteres constantes o variables.

Nota: Cuando se ejecuta SetDdeAppTopic, existe un retardo cuando se inicia como


cuando se termina una conversación DDE. Durante este tiempo cualquier
modificación al nuevo tópico se perderá.

Esta función determina el signo de un valor(si es positivo, negativo o cero).

ResulNumericTag=Sgn(InputnumericTag);
A 68

Si la entrada es positiva, el resultado será 1. Para números negativos será -1 y para el 0


será 0.
Ejemplos:
Sgn(425) será 1
Sgn(0) será 0
Sgn(-37.3) será -1

Muestra una ventana específica. Ejemplo:

Show “WindowName”;

WindowName debe ser el nombre de una ventana existente o una ventana que será
creada. En runtime si la ventana no existe, WindowViewer ignora la instrucción.
También, si el nombre de la ventana cambia, el script también debe ser cambiado.

Nota: Si el script solo está mostrando u ocultando ventanas, es recomendable usar


los vínculos Show Window o Hide Window. Si se usan y el nombre de la ventana
cambia, InTouch automáticamente hará los cambios.

Esta función especifica la posición del pixel horizontal y vertical de una


ventana cuando es mostrada. Cuando se abre la ventana, ésta será centrada a las
coordenadas vertical y horizontal. Ejemplo:

ShowAt(“WindowName”, 100,200);

En esta instrucción, el 100 representa el pixel horizontal y 200 el vertical. Objetos de


entrada análoga (Analog Input) también pueden ser creados y vinculados a tagnames de
A 69

memoria, por ejemplo, Horz y Vert, a cambios dinámicos de la posición de la ventana


durante el runtime. En este caso la instrucción podría ser:

ShowAt(“WindowName”, HORZ, VERT);

Para determinar la ubicación de los pixel en un objeto, los tagnames internos $ObjHorz
y $ObjVer pueden ser asignados a vínculos de salidas análogas que mostrará las
posiciones del objeto seleccionado actualmente. Una ventana puede ser creada para
aparecer centrado sobre un objeto o botón usando los tagnames $ObjHorz y $ObjVer en
un script vinculado al objeto o botón.
Ejemplo:
ShowAt(“WindowName”, $ObjHor, $ObjVer);

Esta función muestra la(s) ventana(s) “home”. Las ventanas “Home” son
configuradas a través del comando /Special/Configure... /View Home Windows...
Ejemplo:
ShowHome;

Especifica la ubicación horizontal y vertical del pixel de la esquina superior


izquierda de una ventana cuando es mostrada. Cuando se abre la ventana, su esquina
superior izquierda será ubicada donde las coordenadas horizontal y vertical se ubiquen.
(La esquina superior izquierda más extrema de la ventana está en la ubicación del pixel
0,0).
Nota: Esta función trabaja exactamente igual que la función ShowAt descrita
anteriormente excepto que ésta última controla donde la esquina superior
izquierda de la ventana aparecerá.
A 70

Esta función entrega el valor del seno de un ángulo en grados.

ResulNumericTag=Sin(InputNumericTag)
Ejemplos:

Sin(90) será 1

Sin(0) será 0

Permite al InTouch calcular automáticamente la raíz cuadrada de un valor.


Ejemplo:
AnalogTag1=Sqrt(AnalogTag2);

Esta función automáticamente ejecuta otra aplicación de Windows. La


instrucción es la siguiente:

StartApp”AplicationName”{“DocumentName”};

“AplicationName” es el actual nombre del programa de aplicación que será ejecutado,


Por ejemplo; Excel.exe. La parte “DocumentName” es opcional y se refiere a abrir un
documento específico cuando parte la aplicación.
Ejemplo:
StartApp”Excel.exe Report.XLS”;

Esta instrucción ejecutará el Excel y abrirá inmediatamente la hoja de cálculo llamada


Report.XLS. Si No es usado el nombre del documento la instrucción será:

StartApp”Excel.exe”;
A 71

Esta instrucción ejecutará Excel.exe y la hoja de cálculo por defecto será Sheet1.
Aunque no es un requerimiento, es recomendable incluir la extensión.exe en el nombre
del programa o aplicación.

Entrega el valor en código ASCII del primer caracter de un tag de mensaje


específico.
IntegerTag=StringASCII(MessageTag);

En esta instrucción, el valor ASCII del primer caracter en MessageTag será entregado al
IntegerTag.
Ejemplos:
StringASCII(“A”) será 65
StringASCII(“A Mixer is Running”) será 65
StringASCII(“a mixer is running) será 97

Nota: Como en otras funciones donde el primer caracter es chequeado o afectado,


si el tag de mensaje dado para la instrucción StringASCII contiene más de un
caracter, sólo el primero del tag será utilizado para la conversión.

Entrega el caracter correspondiente a un código ASCII específico.

MessageTag=StringChar(IntegerTag);

En esta instrucción, el caracter ASCII especificado por el IntegerTag es retornado al


MessageTag. Una utilización de esta función es que se puede agregar caracteres ASCII
que normalmente no están representados en el teclado para tags de mensajes.
Ejemplo:
ControlString=MessageTag+StringChar(13)+StringChar(10);
A 72

En este ejemplo, un [CR y un [LF han sido agregados al final de MessageTag y


traspasados a ControlString. La inserción de caracteres fuera del rango normal de 32 a
126 de caracteres visuales pueden ser útilmente usados en la creación de códigos de
control para ciertos dispositivos externos tales como impresoras o módems.

Convierte un entero en una representación de caracteres de diferente base


numérica.
ResultMessage=StringFromIntg(IntegerTag, Base);

En esta instrucción, IntegerTag es convertido a la Base especificada y el resultado es


almacenado en ResultMessage.
Ejemplos:
StringFromIntg(26,2) será el código binario “11010”
StringFromIntg(26,8) será el número octal “32”
StringFromIntg(26,16) será el número hexadecimal “1A”

Convierte un valor real a una representación como un número con punto


flotante o como notación exponencial.

ResultMessage=StringFromReal(RealTag, Precision, StringType);

En esta instrucción, RealTag es convertido a la precisión y tipo y caracter especificado y


el resultado es almacenado en ResultMessage. La variable Precision especifica cuantos
decimales serán mostrados. StringType determina el método en que aparecerá de
acuerdo a:
StringType=“f” muestra la notación con punto flotante.
StringType=“e” muestra la notación exponencial en minúscula “e”.
A 73

StringType=“E” muestra la notación exponencial en mayúscula “E”.


Ejemplos:
StringFromReal(263.355,2,”f”) será “263.36”
StringFromReal(263.355,2,”e”) será “2.63e2”
StringFromReal(263.55,3,”E”) será “2.636E2”

Convierte un valor del tiempo (en segundos desde Jan 01-1970) a una
representación particular.

ResultMessage=StringFromTime(TimeValue, StringType);

En esta instrucción, TimeValue es convertido al StringType especificado y el resultado


es almacenado en ResultMessage. StringType determina la forma en que se mostrará de
acuerdo a:
Caso 1: Muestra la fecha en el mismo formato del panel de control. Similar al que es
mostrado por $DateString.
Caso 2: Muestra la hora en el mismo formato del panel de control. Similar al que es
mostrado por $TimeString.
Caso 3: Muestra una cadena de 24 caracteres indicando la fecha y la hora. Ejemplo :
“Wed Jan 02 02:03:55 1993”
Caso 4: Muestra el día de la semana abreviado. Ejemplo: “Wed”.
Caso 5: Muestra el nombre completo del día de la semana. Ejemplo: “Wednesday”.

Ejemplos:
StringFromTime(86400,1) será “1/2/70”
StringFromTime(86400,2) será “12:00:00 AM”
StringFromTime(86400,3) será “Fri Jan 02 00:00:00 1970”
StringFromTime(86400,4) será “Fri”
StringFromTime(86400,5) será “Friday”
A 74

Esta función retorna la posición en el MessageTag donde ocurre primero


MessageToFind.
IntegerTag=StringInString(MessageTag, MessageToFind, StartPosition,
CaseSensitive);

En esta instrucción, el MessageTag es buscado para encontrar el MessageToFind. Si


está varias veces en el MessageTag, La posición del primer encuentro será dado a
IntegerTag. StartPosition es un entero que determina desde que posición comienza la
búsqueda en el MessageTag. El parámetro CaseSensitive determina cuando la búsqueda
será exacta (0=n0 y 1=yes).
Ejemplos:
StringInString(“The mixer is running”, “mix”, 1,0) será 5
StringInString(“Today is Thursday”, “day”, 1,0) será 3
StringInString(“Today is Thursday”, “day”, 10,0) será 15
StringInString(“Today is Veteran’s Day”, “Day”,1,1) será 20

StringInString(“Today is Veteran’s Day”, “Night”, 1,1) será 0


Considera los primeros caracteres de un tag de mensaje específico.

ResultMessage=StringLeft(MessageTag, IntegerTag);
Ejemplos:
StringLeft(“The Control Pump is On”, 3) será “The”
StringLeft(“Pump 01 is On”, 3) será “Pum”
StringLeft(“Pump 01 is On”, 3) será “Pump 01 is On”

Determina la longitud de un tag de mensaje específico.


A 75

IntegerTag=StringLen(MessageTag);

En esta instrucción, la longitud (en caracteres) de MessageTag es dada a IntegerTag.


Todos los caracteres en el tag de mensaje, incluyendo los que no aparecen en pantalla
son contados.
Ejemplos:
StringLen(“Twelve percent”) será 14
StringLen(“12%”) será 3
StringLen(“The end. [CR “) será 10

Nota: [CR es el caracter retorno de carro, en ASCII es el 13.

Convierte todos los caracteres en mayúsculas a minúsculas de un tag de


mensaje específico.
ResultMessage=StringLower(MessageTag);

Los caracteres en minúsculas, símbolos, números y otros caracteres especiales no son


afectados.
Ejemplos:
StringLower(“TURBINE”) será “turbine”
StringLower(“22.2 Is The Value) será “22.2 is the value”

Toma un número específico de caracteres de un tag de mensaje, partiendo de la


posición especificada.

ResultMessage=StringMid(MessageTag, StartInteger, SpanInteger);


A 76

Esta función es levemente diferente de las otras StringLeft y StringRight en que permite
al usuario especificar el comienzo y el final de la cadena de caracteres que será extraído
del tag de mensaje. StartInteger especifica la posición del primer caracter a extraer.
SpanInteger el número total de caracteres a retornar.
Ejemplos:
StringMid(“The Furnace is Overheating”, 5,7) será “Furnace”
StringMid(“The Furnace is Overheating”, 13,3) será “is”
StringMid(“The Furnace is Overheating”, 16,50) será “Overheating”

Reemplaza o cambia partes específicas de una variable de caracteres dada.

ResultMessage=StringReplace(MessageTag, SearchForString, ReplaceWithString,


CaseSensitive, NumberTo.MatchWholeWord);

Usando esta instrucción se pueden cambiar caracteres, palabras o frases con tag
de string. Los parámetros de StringReplace() son:
MessageTag es la cadena de caracteres o frase que se desea modificar.
SearchForString es la cadena de caracteres que se desea buscar y reemplazar.
ReplaceWithString es la cadena que es reemplazada.
CaseSensitive determina la exactitud de los cambios(0=no y 1=yes)
NumberToReplace determina el número de ocurrencia a reemplazar (-1=todas)
MatchWholeWord determina si la función limitará el reemplazo a palabras completas
(0=no y 1=yes). Si MatchWholeWord se deja en 1 y SearchForString es “and”, el “and”
en la palabra “handle” no será reemplazado. Si el WatchWholeWord está en 0, todo
puede ser reemplazado.
Ejemplos:
StringReplace(“In From Within”, “In”, “Out”, 0, 1,0 es “Out From Within”
(sólo se reemplaza el primer caracter encontrado).
A 77

StringReplace(“In From Within”, “In”, “Out”, 0, -1,0 es “Out From WithOut”


(reemplaza todos los encontrados).
StringReplace(“In From Within”, “In”, “Out”, 1, -1,0 es “Out From Within”
(Reemplaza el caracter encontrado).
StringReplace(“In From Within”, “In”, “Out”, 0, -1,1 es “Out From Within”
(reemplaza todas las palabras completas).

Considera los últimos caracteres de un tag de mensaje específico.

ResultMessage=StringRight(MessageTag, IntegerTag);
Ejemplos:
StringLeft(“The Control Pump is On”, 2) será “On”
StringLeft(“Pump 01 is On”, 5) será “is On”
StringLeft(“Pump 01 is On”, 87) será “Pump 01 is On”

Esta función es usada para generar una cadena de espacios en un tag de


mensaje o una expresión.

MessageTag=StringSpace(IntegerTag);

En esta instrucción, StringSpace entrega una serie de espacios cuya longitud está
especificada por el IntegerTag.

Nota: En el siguiente ejemplo, todos los espacios son representados por el caracter
“x”.
StringSpace(4) será “xxxx”

“Pump” + StringSpace(1) + “Station” será “PumpxStation”


A 78

Esta función determina el primer caracter de un tag de mensaje para determinar


si es de un cierto tipo.

DiscreteTag=StringTest(Message Tag, IntegerTag)

En esta instrucción, StringTest dará un valor positivo a DiscreteTag si el primer caracter


en MessageTag es del tipo especificado en IntegerTag. Los diferentes casos que pueden
ser chequeados están dentro de las siguientes categorías:

Clase 1: Caracter Alfanumérico (‘A’ -‘Z’, ‘a’ - ‘z’ y ‘0’ - ‘9’)


Clase 2: Caracter Numérico (‘0’ - ‘9’)
Clase 3: Caracter Alfabético (‘A’ - ‘Z’ y ‘a’ - ‘z’)
Clase 4: Caracter en Mayúscula (‘A’ - ‘Z’)
Clase 5: Caracter en minúscula (‘a’ - ‘z’)
Clase 6: Caracter de puntuación (0x21 - 0x2F)
Clase 7 Caracteres ASCII (0x00 - 0x7F)
Clase 8: Caracteres Hexadecimal (‘A’ - ‘F’ o ‘a’ - ‘f’’ ó ‘0’ - ‘9’)
Caso 9 Caracteres de impresión (0x20-0x1E)
Caso 10 Caracteres de Control (0x00 - 0x1F o 0x7F)
Caso 11 Caracteres de Espacio en Blanco (0x09 - 0x0D o 0x20)

Como en las otras funciones, sólo es chequeado el primer caracter cuando el StringTest
contiene más de un caracter.
Ejemplos:
StringTest(“ACB123”, 1) será 1
StringTest(“ACB123”, 5) será 0
A 79

Convierte el valor numérico de un tagname de mensaje a un valor entero que


pueda ser calculado.
Ejemplo:
IntegerTag=StringToIntg(MessageTag);

En esta instrucción, IntegerTag es un tagname tipo entero y MassageTag es un tagname


tipo mensaje. Cuando esta instrucción es evaluada, el sistema lee el primer caracter en
busca de un valor numérico. Si el primer caracter es distinto a un número (sin
considerar los espacios en blanco), el valor de la variable es cero(0). Si el primer
caracter es un número, el sistema continúa leyendo los siguientes caracteres hasta
encontrar un valor no numérico.
Ejemplos:
Si MessageTag=“ABCD”, entonces IntegerTag=0
Si MessageTag=“22.22 is the value” entonces IntegerTag=22
Si MessageTag=“The Value is 22” entonces IntegerTag=0

Esta función convierte el valor numérico de un tagname de mensaje a un valor


real(punto flotante) que pueda ser calculado.
Ejemplo:
RealTag=StringToReal(MessageTag);

En esta instrucción, RealTag es un tagname tipo real y MassageTag es un tagname tipo


mensaje. Cuando esta instrucción es evaluada, el sistema lee el primer caracter en busca
de un valor numérico. Si el primer caracter es distinto a un número (sin considerar los
espacios en blanco), el valor de la variable es cero(0). Si el primer caracter es un
número, el sistema continúa leyendo los siguientes caracteres hasta encontrar un valor
no numérico. Ejemplos:
A 80

Si MessageTag=“ABCD”, entonces RealTag=0

Si MessageTag=“22.261 is the value” entonces RealTag=22.261


Si MessageTag=“The Value is 22” entonces RealTag=0

Esta función es usada para remover espacios indeseados en un tag de mensaje.

ResultMessage=StringTrim(MessageTag, IntegerCode);

En esta instrucción, MessageTag es buscado por espacios en blanco (Código ASCII


0x0D o 0x20) que serán removidos. IntegerCode determina el método a usar en la
función.

Caso 1: Remover espacios iniciales(a la izquierda del primer caracter)


Caso 2: Remover espacios finales(a la derecha del último caracter)
Caso 3: Remover todos los espacios a excepción del espacio entre palabras.
Ejemplos:
StringTrim(“xxxxThisxisxaxxtestxxxx”, 1) será “Thisxisxaxxtestxxxx”
StringTrim(“xxxxThisxisxaxxtestxxxx”, 2) será “xxxxThisxisxaxxtest”
StringTrim(“xxxxThisxisxaxxtestxxxx”, 3) será “Thisxisxaxtest”

Nota: En estos ejemplos los espacios en blanco son representados por “x”.
Nota: La función StringReplace() puede ser usada para remover TODOS los
espacios de un tag de mensaje específico. Simplemente reemplazar todos los
espacios con un caracter nulo.

Esta función convierte todos los caracteres en minúscula a mayúscula.

ResultMessage=StringUpper(MessageTag);
A 81

Los caracteres en mayúsculas, símbolos, números y otros caracteres especiales no son


alterados.
Ejemplos:
StringUpper(“abcd”) será “ABCD”

StringUpper(“22.2 is the value”) será “22.2 IS THE VALUE”

Entrega el valor de la tangente de un ángulo en grados.

ResulNumericTYag=Tan(InputNumericTag)
Ejemplos:
Tan(45) será 1
Tan(0) será 0

Esta función permite que un tagname de tipo mensaje muestre el valor de un


tagname análogo(entero o real) de acuerdo a un “formato” específico.
Ejemplo:
MessageTag=Text(AnalogTag,”#.00”);

En esta instrucción, MessageTag es un mensaje tipo tagname, AnalogTag es un


tagname tipo entero o real y “#.00” representa la forma en que se muestra el valor.
Ejemplo:
Si AnalogTag=66 entonces MessageTag=66.00.
Si AnalogTag=22.269 entonces MessageTag=22.27.
Si AnalogTag=9.999 entonces MessageTag=10.00.
A 82

Esta función trunca un número real eliminando la parte a la derecha del punto
decimal.
ResultNumericTag=Trunc(InputnumericTag)

Esta función toma el mismo valor y el contenido de un número real lo convierte en un


tag entero.
Ejemplos:
Trunc(4.3) será 4
Trunc(-4.3) será –4

Esta función permite al usuario controlar otra a aplicación desde InTouch,


dando la capacidad de Restaurar, Minimizar, Maximizar o Cerrar tal aplicación.

WWControl(TaskListname, ControlAction);

El TaskListname para una aplicación en particular puede ser determinado usando la


función InfoAppTitle. El parámetro ControlAction determina el control de la aplicación
(estas acciones son las mismas en la selección correspondiente al menú de control de la
aplicación), las cuales son:
ControlAction= “Restore”: Activa y muestra la ventana de la aplicación.
ControlAction=“Minimize”: Activa una ventana y la minimiza en un icono.
ControlAction=“Maximize”: Activa y muestra la ventana de la aplicación.
ControlAction=“Close”: Cierra una aplicación.

Ejemplos:
WWControl(“Calculator”,”Restore”);
WWControl(“Microsoft Excel”, “Close”);
A 83

Esta función enviará un comando (usando una ejecución DDE) a una


aplicación y tópico específicos.

WWExecute(Application, Topic, Command);

En esta instrucción, el Command será enviado a un Application y Topic específicos. El


siguiente Script ejecuta una macro en Excel:

Macro= “Macro1!TestMacro”;
Command=“¨[Run(“+StringChar(34) + Macro + StringChar(34) + “0) “;
WWExecute(“excel”, system”, Command);

El siguiente script ejecuta una macro en Microsoft Access:

WWExecute(“MSAccess”, “system”,”MyMacro);

La función WWWexecute() está en 1 si la aplicación está corriendo, existe el tópico y el


comando ha sido enviado satisfactoriamente. Está en 0 cuando la aplicación está
ocupada, y en -1 cuando existe un error. De esta manera, se puede monitorear el estado
del comando:
Status= WWExecute(“excel”, “system”, Command);

Donde: Status es un tag entero que puede ser 1, -1 ó 0.

Está función envía un valor usando un DDE Poke a una Aplicación, Topic, e
Item específicos.
WWPoke(Application, Topic, Item, ValueMessageTag);
A 84

En esta instrucción el valor ValueMessageTag enviará al Application en particular,


Topic e Item especificados. Notar que el valor enviado debe ser un caracter
alfanumérico. Si el valor a enviar es un número debe ser convertido usando las
funciones Text(), StringFromIntg(), o StringFromReal().
El siguiente script convertirá un valor a texto y lo posesionará en una celda de
una planilla excel:
String= Text(Value,"0");
WWPoke(“excel”, “sheet1”, “r1c1”, String);

La función WWPoke() está en 1 si la aplicación está corriendo, y el valor ha sido


enviado satisfactoriamente.
Está en 0 cuando la aplicación está ocupada y en -1 cuando hay un error. De
este modo el estado de este comando puede ser monitoreado:

Status=WWPoke(“excel”, “sheet1”, “r1c1”, String);


Donde: Status es un tag entero que puede ser 1, -1 ó 0.

Esta función realiza un requerimiento de una vez por un valor (usando DDE
Request) de una Application, Topic e Item.

WWRequest(Application, Topic, Item, ValueMessageTag);

En esta instrucción el valor DDE en la Application, Topic e Item en particular será dado
al ValueMessageTag. Notar que el valor será entregado como una cadena de caracteres
al MessageTag. Si el valor es un número se debe convertir usando las funciones
StringFromIntg(), o StringFromReal().
El siguiente script pedirá un valor de una celda de una planilla Excel y
convertirá el texto a un valor:
WWRequest(“excel”,”sheet1”,”r1c1”, Result);
A 85

Value=StringToReal(Result);

La función WWRequest() está en 1 si la aplicación está corriendo, y el valor ha sido


obtenido satisfactoriamente. Está en 0 cuando la aplicación está ocupada y en -1 cuando
hay un error. De este modo el estado de este comando puede ser monitoreado:

Status=WWRequest(“excel”, “sheet1”, “r1c1”, Result);

Donde : Status es un tag entero que puede ser 1, -1 ó 0.

3.14.- Definición de Window Name to Insert


Accionando este botón se inserta automáticamente el nombre de una
ventana en un script, aparecerá el cuadro de diálogo Window Name
to Insert:

3.15.- Definición de Choose Name


Accionando este botón se accesa a todos los tagnames de la base de
datos (incluyendo todos los tagnames internos del sistema) para
ingresar el script en la posición respectiva; aparecerá el cuadro de diálogo Choose
Name...
A 86

Lee solamente el tagname de seguridad entero usado


en expresiones o script para controlar las propiedades del operador en la ejecución de
funciones específicas. Por ejemplo, para hacer que un objeto sea visible dependiendo
del registro de nivel de acceso del operador, la siguiente expresión podría ser usada para
en vínculo de visibilidad:

$AccessLevel=>2000;

Nota: La funcionalidad de tocar objetos puede ser también basado en valor del
$AccessLevel usado en una expresión para un objeto, botón, etc., que es asignado
al vínculo de animación “Disable”.

Es un tagname discreto de lectura/escritura que se


setea en 1 para reiniciar el registro de alarma y de impresión durante el runtime cuando
el comando /Special/Restart Alarm Log ha sido desabilitado en el WindowViewer.
A 87

Nota Especial: El tagname $AlarmLogging no puede ser usado para desactivar un


registro de alarma o de impresión. Este es usado estrictamente en lugar del
comando /Restart Alarm Log. Si el valor de $AlarmLogging es mostrado siempre
será 0 (off) (cada vez que el registro se realiza).

Lee solamente el tagname discreto que está en 1 si


existe un error de impresora.

Lee solamente el tagname discreto que está en1 si la


impresora no tiene papel.

Lee solamente el tagname discreto que está en 1 si la


impresora está fuera de línea.

Lee solamente el tagname discreto que está en 1 si la


impresora está sobrecargada.

Lee sólo el tagname real que muestra el número actual


de la versión de la aplicación. Este número cambia
cada vez que un tagname o script es cambiado, agregado o borrado.

Es un tagname de seguridad discreto de


Lectura/Escritura que puede ser usado en un botón
discreto para permitir al operador establecer el valor de 1 en el tagname
$ChangePassword para hacer que aparezca el cuadro de diálogo Change Password.
(Una vez que el cuadro desaparece, el sistema automáticamente deja el valor en 0).

Es un tagname de seguridad discreto de


Lectura/Escritura que puede ser usado en un botón discreto para permitir al operador
establecer el valor de 1 en el tagname $ChangePassword para hacer que aparezca el
A 88

cuadro de diálogo Configure Users para editar la lista de usuarios de seguridad. (Una
vez que el cuadro desaparece, el sistema automáticamente deja el valor en 0).

Es un tagname entero sólo de lectura que muestra el


número total de días que han transcurridos desde 1/1/70.

Es un tagname entero sólo de lectura que muestra la


fecha en el mismo formato que el archivo WIN.INI. Por ejemplo 4/18/92. (Este formato
de fecha es establecido a través del Panel de Control de Windows.)

Es un tagname real sólo de lectura que muestra el


número completo de días que han transcurridos desde 1/1/70.

Es un tagname entero sólo de lectura que muestra el


día y su valor puede ser desde 1 a 31.

Es un tagname discreto de Lectura/escritura usado para


monitorear y/o controlar la partida y parada de un registro histórico.

Es un tagname real sólo de lectura que muestra la hora


y el día y su valor puede ser de 0 a 23.

Es un tagname de seguridad discreto sólo de Lectura


que es igual a 1 cuando el tiempo configurado para un registro automático del operador
ha terminado.

Nota: El tiempo para $InactivityTimeout es establecido (en segundos) en el menú


/Special/Configure... /View Generic

Es un tagname de seguridad discreto sólo de Lectura


A 89

que es igual a 1 cuando el tiempo configurado para advertir al operador que ha


terminado el tiempo de espera para termino de sesión o de tarea.

Nota Especial: El tiempo para los dos últimos tagnames explicados es establecido
en el menú /Special/Configure... /View Generic al ingresar el número de segundos
en los siguientes campos.

Es un tagname discreto de Lectura/Escritura usado


para monitorear y/o controlar la ejecución de scripts.

Es un tagname real sólo de lectura que muestra los


minutos y su valor puede ser de 0 a 59.

Es un tagname entero sólo de lectura que muestra el


mes y su valor puede ser de 0 a 12.

Es un tagname entero sólo de lectura que muestra los


milisegundos y su valor puede ser de 0 a 999. (Este
número se incrementa cada segundo)

Es un tagname discreto de lectura/escritura que es


igual a 1 cada vez que ocurre una nueva alarma. Este tagname puede ser vinculado a
programa WWBeeper o al tagname interno PlaySound para provocar una alarma sonora
A 90

para alertar al operador sobre la nueva condición de alarma. Un botón puede ser creado
para permitir resetear este valor en 0.

Es un tagname entero sólo de lectura usado para


mostrar la ubicación del pixel horizontal de un objeto seleccionado.

Es un tagname entero sólo de lectura usado para


mostrar la ubicación del pixel vertical de un objeto seleccionado.

Es un tagname de mensaje de seguridad sólo de lectura


que puede ser usado en una expresión o script para controlar la capacidad del operador
de ejecutar funciones específicas. Por ejemplo, acceder a una ventana específica podría
ser controlada al ingresar el siguiente script:

IF $Operator==“DayShift” THEN
Show “Control Panel Window”;
ENDIF

Es un tagname de mensaje de seguridad sólo de


lectura/escritura que puede ser usado para crear una ventana de registro (log on)
personalizada. Los objetos de entrada Touch-sensitive y/o scripts pueden ser vinculados
a este tagname para configurar el “UserName” del operador.

Es un tagname de mensaje de seguridad que puede ser


usado para crear una ventana de registro (log on) personalizada. Los objetos de entrada
Touch-sensitive y/o scripts pueden ser vinculados a este tagname para configurar el
“Password” del operador.
Ejemplo:
$PasswordEntered;
A 91

Nota: Si las dos entradas recién mencionadas son válidas, $AccessLevel y


$Operator son establecidos a sus valores predefinidos.

Es un tagname entero sólo de lectura que muestra los


segundos y su valor puede ser de 0 a 59.

Es un tagname discreto de lectura/escritura usado para


partir conversaciones DDE no iniciadas durante el runtime cuando el menú /Special ha
sido deshabitado.

Es un tagname del tipo grupo de alarmas del sistema


(system alarm group) sólo de lectura para el grupo raíz de alarmas (alarm root group).
Si el nombre de un AlarmGroup no está creado para un tagname, es automáticamente
asignado a este grupo raíz por defecto. Todos los Grupos de Alarmas definidos derivan
de $System.

Es un tagname entero sólo de lectura que muestra la


hora en milisegundos desde la medianoche.

Es un tagname de mensaje de memoria sólo de lectura


que muestra la hora en el mismo formato que el archivo WIN.INI. Por ejemplo 12:01:59
PM. (Este formato de fecha es establecido a través del Panel de Control de Windows.)

Es un tagname entero sólo de lectura que muestra el


año en cuatro dígitos, por ejemplo, 1990.

Definiciones de los Campos de Alarma en Choose Field Name


Todos los tagnames en el Data Dictionary tienen campos (.fields)
asociados a ellos que pueden ser usados para crear a una variedad de
A 92

aplicaciones dinámicas, por ejemplo, establecer y mostrar límites de las alarmas,


cambiar el tiempo de partida y longitud de un gráfico de Tendencia Histórica (Historical
Trend), etc. Este botón accesa al cuadro de diálogo Choose field name...:

Es un .field discreto de lectura/escritura usado para


monitorear y/o controlar el estado de reconocimiento de alarmas de los tagnames,
Alarm Groups y/o Group Variables.
Ejemplos:
Tagname.Ack=1;
GroupName.Ack=1
GroupVariable.Ack=1;

Es un .field discreto sólo de lectura que es igual a 1 cuando


existe una condición de alarma para el tagname, Alarma Group Name o Group Variable
especificados.
Ejemplo:
AlarmaGroup.Alarm;

Es un .field análogo de lectura/escritura (válido solamente


para tags enteros o reales) que monitorea y/o controla del porcentaje de desviación de la
A 93

banda muerta para las alarmas de mayor y menor desviación. Por ejemplo, para cambiar
el porcentaje de desviación a 25%, se puede usar la siguiente instrucción:

Tagname.AlarmDevDeadband=25

Es un .field discreto de lectura/escritura que habilita o


deshabita sucesos y alarmas en un tagname, Alarm Group o Group Variable.
Ejemplo:
GroupVariable.AlarmEnabled=1;

Es un .field análogo de lectura/escritura (válido solamente


para tags enteros o reales) que monitorea y/o controla el valor de la banda muerta de
una alarma. Este campo es válido para Alarm Groups y Group Variables como también
para tags comunes.

Tagname.AlarmValDeadband=10;

Es un .field análogo de lectura/escritura (válido solamente


para tags enteros o reales) que monitorea y/o controla el target para las alarmas de
mayor y menor desviación.
Ejemplo:
Tagname.DevTArget=500;

Es un .field del tagname discreto sólo de lectura usado para


determinar cuando existe una alarma de tipo específico. Por ejemplo, .HiHiStatus será 1
cuando existe una alarma HiHi para el tagname. (También se aplica a .HiStatus,
.LoStatus, .LoLoStatus, .MinorDevStatus, .MajorDevStatus, .ROCStatus y .SPCStatus.)

Es un .field de tagname análogo de lectura/escritura usado


para monitorear y/o controlar los límites para los valores que la alarma contiene y esos
A 94

campos son validos sólo para tags enteros o reales. (También se aplica a .HiLimit,
.LoLimit y .LoLoLimit)
Ejemplo:

RealTag.LoLoLimit

Es un .field de un tagname entero tipo lectura/escritura


usado para monitorear y/o controlar el contenido de la desviación de la alarma.
(También se aplica a .MajorDevPct, .ROCPct). Ejemplo:

IntegerTag.ROCPct

Son .Field de tagname discreto sólo de lectura usados para determinar cuando existe una
alarma de un tipo específico. Por ejemplo:

.MinorDevStatus será 1 cuando hay una alarma MinorDevStatus para el tagname.

Campo sólo de lectura que muestra el campo comment del


tagname. Ejemplo:

Tagname.Comment

Campo de las Tendencias Históricas en la Definición de Choose Field Name...


En los siguientes ejemplos asumir que “ht” es un tagname tipo HistTrend.

Es un .field de un tagname entero de tipo lectura/escritura


usado para controlar el tiempo de partida y/o desplegar el gráfico de la tendencia
histórica correspondiente. .ChartStart muestra el número de segundos transcurridos
desde el 1/1/80 a las 12:00 a.m. Ejemplos:
A 95

Desplazar a la derecha por 1 minuto:


ht. ChartStart = ht. ChartStart + 60;

Desplazar a la izquierda por 1 hora:


ht.ChartStart = ht.ChartStart -3600;

Es .field de un tagname entero de lectura/escritura usado


para mostrar la longitud del tiempo mostrado en un gráfico de tendencia histórica.
.ChartLength muestra la longitud del gráfico en segundos. Ejemplos :

Forzar el intervalo del gráfico a 1 hora:


ht.ChartLength = 3600 {60 minutos * 60
segundos/minuto}

Despliegue del gráfico izquierdo por la mitad:


ht.ChartStart = ht.ChartStart - ht.ChartLenght / 2;

Despliegue del gráfico izquierdo en un 10%:


ht.ChartStart = ht. ChartStart - 1 * ht. ChartLength

Son .fields de tagname real de escritura/lectura usados para representar el


porcentaje del rango en Unidades de Ingeniería del tagname que podría ser mostrado
por cada tag que está siendo dirigido. Las unidades para .MaxRange y .MinRange son
de 0 a 100 y .MinRange debe ser siempre menor que .MaxRange. Si un valor menor que
0 o mayor que 100 es asignado a estos campos serán aproximados a 0 o 100. Si
.MinRange es mayor o igual que .MaxRange la tendencia no mostrará ninguna
información.

Es un .field de tagname análogo de lectura/escritura usado


A 96

para determinar el método a usar en mostrar los valores en la tendencia. Ejemplo:

HistTrendChart.DisplayMode=2
Las entradas son:

1. Muestra el min/max por cada período de muestreo (por defecto).


2. Muestra el valor medio por cada período de muestreo usando un diagrama
“scatter”(dispersión).
3. Muestra el valor medio por cada período de muestreo usando un diagrama “bar
chart”(gráfico de barras).

Es un .field de un tagname TagID de lectura/escritura usado


en conjunto con los tagnames TagID Historical Trend .Pen1 - .Pen4 para monitorear
y/o controlar el tagname que está siendo dirigido por un trazador (descrito a
continuación).

Es un .field de un tagname tipo TagID de lectura/escritura


usado para controlar el tagname que está siendo históricamente dirigido por cada
trazador. (También se aplica a .Pen2, .Pen3 y .Pen4. Un tagname tipo TagID solo puede
ser igualado por otro tagname TagID. Este no puede ser mezclado con otro tipo de
tagname a menos que el campo de extensión .TagID sea agregado al otro tagname. Por
ejemplo, de acuerdo a HistTrendTag.Pen1 para dirigir el tagname Temperature, este
debe tener agregado el campo .TagID.
Ejemplo:
HistTrendTag.Pen1= Temperature.TagID;
Pen01 = HistTrendTag.Pen1;

Este script iguala el tagname TagID HistrendTag.Pen1 a Temperature.TagID


y también Pen01 a HistTrendTag.Pen1. Donde Pen01 es un tagname tipo TagID.
Entonces un campo de salida vinculado a Pen01.Name mostrará Temperature.
A 97

Para controlar dinámicamente el despliegue de Unidades de Ingeniería mínimo y


máximo, por el tagname que está siendo dirigido por cada trazador, el tagname TagID
debe ser igualado a un tagname tipo Indirect Analog.
Por Ejemplo:
IndirectAnalogTag.Name = Pen01.Name;

Donde el tagname TagID Pen01 se iguala al IndirectAnalogTag el cual puede ser usado
en cuatro script de cambio de dato ( Data Change Scripts) que son vinculados a los
campos Historical Trend.Pen1-.Pen4. Por ejemplo, un Data Change Script podría ser
creado por HistTrendTag.Pen1 como sigue:

Pen01 = HistTrendTag.Pen1;
IndirectAnalogTag.Name = Pen01.Name;

Los vínculos Analog Output pueden ser entonces creados y vinculados a las siguientes
instrucciones para mostrar los Eus ( Unidades de Ingeniería) mínimo o máximo de
acuerdo con el tagname que está siendo dirigido:

IndirectAnalogTag.MinEU;
IndirectAnalogTag.MaxEU;

Es un .field de un tagname discreto de lectura/escritura que


puede estar en 1 para actualizar un gráfico de tendencia histórica usando todos los
valores actuales. Un cambio debe ser hecho para comenzar el gráfico, longitud de
gráfico, etc. de acuerdo al gráfico para actualizar y mostrar los valores actuales para los
tagnames especificados. Usando este .field en un script de action pushbutton permitirá
al operador actualizar el gráfico cuando sea necesario durante el runtime.
Ejemplo:
HisTrendTag.Update Trend = 1;
A 98

Es un campo entero solo de lectura que es incrementado


cuando una recuperación es completa para una tendencia.

Es un campo discreto solo de lectura que muestra el estado


de recuperación de información histórica (0=no hay recuperación, 1= recuperación en
curso).

Es un campo discreto de lectura/escritura. Cuando el valor


de este campo es TRUE, el scooter derecho no se puede mover hacia la izquierda
(0=FALSE, 1= TRUE).

Es un campo discreto de lectura/escritura. Cuando el valor


de este campo es TRUE, el scooter izquierdo no se puede mover hacia la derecha (0=
FALSE, 1=TRUE).

Es un campo real de lectura/escritura que representa la


posición del scooter izquierdo (Rango 0.0-1.0).

Es un campo real de lectura/escritura que representa la


posición del scooter derecho (Rango 0.0-1.0).

Definición de .Field Miscellaneous en el Choose Field Name ...

Es un .field análogo sólo de lectura que muestra el valor


máximo del tagname en Unidades de Ingeniería.

Es un .field análogo sólo de lectura que muestra el valor


mínimo del tagname en Unidades de Ingeniería.
A 99

Es un .field de tagname de mensaje sólo de lectura usado


para mostrar el nombre de un Alarm Group que está indicando un Group Variable, o el
nombre de un tagname TagID, o sólo es el nombre de un Tagname de Intouch.

Es un .field de un tagname de mensaje sólo de lectura que es


igual a 1 cuando no hay alarmas para el nombre especificado. Este campo es válido para
Alarm Groups y Group Variables como también tag comunes.

Es un .field de un tagname análogo sólo de lectura que


muestra el valor del tagname especificado.

Direccionando Bit .Fields para Tagnames Análogos


Los bits simples dentro de un tagname entero pueden ser direccionados usando
el bit.field. Todos ellos son considerados como discretos (0/1) y si se graban, el tagname
es actualizado inmediatamente. Estos campos pueden ser usados donde se utilice un
tagname discreto, por ejemplo, DDE, scripts, expresiones, etc.

.00 bit menos significativo (LSB)


.01
.02
.
.
.
.31 Bit más significativo en un entero de 32 bits (MSB)

El siguiente ejemplo muestra como usar el bit fields dentro de una expresión:

Temperature.08==1;
A100

o, dentro de un script:
IF Temperature.29 THEN
Temperature.29=0;
ENDIF;

Nota: El bit 31 representa el bit de signo. Si es 1 el número es negativo. Si es 0 el


número es positivo. Se usa complemento 2’s.

IF-THEN-ELSE y Comparaciones de Scripts


La instrucción IF-THEN-ELSE es usada para ejecutar condicionalmente varias
instrucciones basadas en el estado de una expresión. Las siguientes operaciones de
comparación son usadas para establecer las condiciones en la instrucción IF-THEN-
ELSE:
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
== Equivalencia (“es igual a”)
<> Distinto

Ejemplos de IF-THEN-ELSE

Instrucción IF-THEN sin condición ELSE:


IF a<>0 THEN
a=a+100;
ENDIF;

Nota: Cada IF debe tener un ENDIF y un punto y coma debe terminar cada línea
de instrucción.
A101

3.16.- Característica de Seguridad


Seguridad en una aplicación es una característica opcional. Si la
implementamos, proporcionamos el desarrollo de una aplicación la capacidad de
controlar o no una operación especifica donde se permiten realizar funciones especificas
a una aplicación que están vinculadas a esa función de variables de seguridad interna.
Además, cuando la seguridad es establecida en una aplicación el establecimiento de
rutas puede ser creado con vínculos de registros del operador para todas las
ALARM/EVENTS que ocurren durante el tiempo en que se han creados en el sistema.
La seguridad esta basada en el concepto de que el operador registra para la
aplicación y entra el/los User Name y Password. ( La aplicación establece desarrollos de
cada operador con un User Name, o preasignando Password y un Access Level vía el
comando /Special/Security/Configure User… en cualquiera de los dos WindowMaker o
WindowViewer.)
Una vez que el operador registra la aplicación, accede a algunas funciones de
protección que son reconocidas por la verificación del registro de los operadores en el
Password y Access Level a través de valores específicos para la variable de seguridad
interna que esta vinculada a esta función. Por ejemplo, acceder a Windows, o ver un
objeto, pushbutton, etc., pueden ser controlados especificándose el Access Level que
tiene que ser mayor que 2000.

3.16.1.- Comandos del Menú Seguridad


El comando usado para establecer seguridad en una aplicación es accesible
desde el menú /Special en ambos, WindowMaker o WindowViewer. El comando
/Special/Security son usado para habilitar y desabilitar la aplicación, cambiar la
Password y configurar la lista de nombres de usuarios, password y niveles de acceso.
Cuando se llama este comando un segundo menú de comando aparece en pantalla:
A102

Variables de Seguridad Interna


Son 2 variables de seguridad interna que se usan en expresión o lógica de control
si el registro del operador permite llevar a cabo funciones especificas:

$AccessLevel Entero 0-9999 Leer solamente


$Operator Mensaje 16 Caracteres max. Leer solamente

Por ejemplo, crear un objeto que se haga visible basado en el registro en usuario
nivel de acceso, el siguiente estamento puede ser usado:

$AccessLevel => 2000;

o, un script puede ser limitado por un estamento IF:


If $Operator ==”DayShift” THEN
Show “Control Panel Window”
Endif
Los objetos pueden ser también desabilitados basados sobre el valor de una
variable de seguridad interna usando él vinculo de animación Disable. Por ejemplo:

3.17.- Introducción de Alarmas


La mayoría de los sistemas automáticos dependen de serios tipos análogos de
medidas junto con el estándar digital de I/O para controles precisos de estos procesos.
Estas medidas tienen que ver con temperatura, posicionamiento, flujos y niveles, por
nombrar unos pocos. En muchos casos, las medidas criticas necesitan ser monitoreadas
A103

cerradamente y/o registradas. Una solución a esto son los vínculos de variables de
alarmas. La mayoría de los conceptos de alarmas implican un menor setpoint o valor
normal para la variable junto con un valor de limite bajo y alto.
Intouch apoya este concepto y más. Los tipos de alarmas de apoyos para
variables análogas son: LowLow, Low, High, HigHigh, RateOfChange, Minor
Deviation, y Major Deviation. Además, una variable discreta puede ser una alarma
definida para uno de estos conocidos estados.

Nota: Un tagname se transforma en alarma habilitada tan pronto como es


configurada por los parámetros de alarma desde el diccionario del tagname.

Estos campos de alarma pueden ser usados por un control dinámicamente y/o
monitor de varias condiciones de alarmas. Por ejemplo un pushbutton es quizás creado
para crear una alarma individual, grupo de alarma o todas alarmas. Muchos de estos
campos son accesibles usando DDE, expresiones y/o script. Los accesos DDE
proporcionan al operador la habilidad de monitorear y/o controlar una información de
alarma especifica usando otras aplicaciones de Windows, ejemplo, Excel o una
aplicación View remota. (Usando NetDDE).

3.18.- Alarma o Evento


Un evento existe generalmente cuando un tagname predefinido es mejorado por
el operador, DDE, una lógica script o por el sistema. En orden para el evento para ser
ingresado en la ventana de alarma, registro o impresión, el tagname empieza a verse
afectado necesita ser configurado para dejar registrados los eventos.

El grupo de alarmas de jerarquía


Cada tagname es asignado a un grupo de alarma. Si un nombre de grupo de
alarma no es creado, el tagname es automáticamente asociado con el arraigamiento al
grupo $System. Algunos grupos de alarmas tienen ambos tagnames y otros nombres de
grupos de alarmas asociados a él. Los grupos de alarmas son organizados en una
A104

estructura de árbol jerárquico con el grupo de arraigamiento, $System, en la parte


superior del árbol. Todos los grupos de alarmas se definen automáticamente en forma
descendiente del grupo de arraigamiento. Este árbol tiene hacia arriba 8 niveles. Cada
grupo de alarmas tiene un máximo de 16 subgrupos. Cada subgrupo tiene un máximo de
16 grupo, etc.
Esta ilustración muestra solamente el grupo de alarma y no tagname con cada
grupo. Este concepto de árbol es análogo para la estructura MS-DOS, cuando un
directorio ve el contenido de otro subdirectorio (grupos analógicos) y nombre de
archivos (tagname analógico). Una vez que la estructura de grupos es creada, esto puede
ser usado en mucho caminos que son discutidos más adelante.

3.18.1.- Creando un Grupo de Alarmas


Para crear un tagname de grupo de alarma realizar los siguientes pasos:

1.- Llamar el menú /Special/Alarm Groups, o hacer click en el botón Group… en el


cuadro de dialogo DICCIONARY TAGNAME DEFINITION apareciendo el siguiente
cuadro de dialogo:

2.- Hacer click en el botón ADD… para acceder al cuadro Add Alarm Group.

Nota: Los botones Modify y Delete pueden hasta desabilitar un nuevo grupo de
alarmas creado. El grupo de alarma $System no puede ser modificado o creado.
A105

3.- Entre el nombre del nuevo campo Group Name. En este ejemplo GroupA a sido
creado como un subgrupo de Parent Group $System. Hacer click en Done para entrar un
nuevo Group Name (nombre de grupo) y retornar a la ventana de selección del grupo de
alarma. Para seleccionar otro Parent Group, hacer click en el botón Parent Group.
El cuadro de dialogo Alarm Group Selection aparece. Seleccione el grupo
deseado y presione Done.

Para modificar o borrar un grupo de alarma hacer click sobre el nombre del
grupo que se modificara o borrara y seleccionar al botón apropiado.

Nota: Cuando un grupo de alarma es borrado con todos los tagnames que fueron
asignados a ese grupo son bajados a un nivel en el árbol del grupo de alarmas.

Creando un Objeto Alarma Evento


Intouch proporciona la habilidad de crear 2 tipos de alarmas de objetos; Alarm
Summary y Alarm History. La principal diferencia entre las 2 es el que una Alarm
Summary solamente muestra la alarma hasta que esta vuelva a la normalidad o es
reconocida.
A106

En una ventana de alarma histórica, todas las condiciones de alarma son siempre
mostrada. Estas ventanas pueden mostrar todas las Alarm/Events activas o un subseteo
de los archivos de alarmas basada en el valor actual del grupo de alarmas y expresiones
prioritariamente asociados con la muestra de una alarma particular además de mostrar
alarmas de redes.

Nota: Él número de memorias de entrada de Alarm/Events mantenidas por


WindowViewer es configurado vía el comando /Special/Configure…
/Alarm/Events.

Nota: Una alarma muestra un objeto vinculado a otro dibujo de objeto en


WindowMaker. Esto puede ser movido tomando con el mouse o puede ser
modificado su tamaño tomando uno de los Handles (pequeño cajas alrededor de la
ventana). El texto que aparece usando la alarma objeto es inicialmente dibujado y
muestra el texto proporcionando una idea como la muestra actual mostrado en el
runtime. Múltiples alarmas muestran objetos que pueden también ser localizados
dentro de una ventana.
A107

3.18.2.- Configurando un objeto Alarm/Events


Inicialmente, el objeto Alarm/Events mostrado es dibujado con cualquiera de las
dos configuraciones por defecto o para un objeto dibujado previamente. El cambio del
seteo de configuración, para cualquiera de las dos hacer click en el objeto Alarm/Events
o llamando el comando /Special/Animation Links con el objeto Alarm/Events
seleccionado. Donde aparece el cuadro de dialogo siguiente:

Seleccione el tipo de Alarm/Event visualizado. Estos son


dos tipos : Alarm Summary y Alarm History.

Seleccione esta opción para mostrar la barra de títulos


con niveles para cada columna en la alarma del objeto
mostrado. Habilitando esta opción provoca que aparezca el cuadro de selección Title
Bar y Title Text Color: (todas las funciones de selección de color en el mismo camino y
son descritos detalles pequeños).

Hacer click en el cuadro coloreado para acceder a la paleta de


A108

selección de color para elegir el color del objeto Alarm/Events mostrado en la barra de
título.
Hacer click en el cuadro coloreado para seleccionar el color para la
columna en la barra de título.
Hacer click en el cuadro coloreado para seleccionar el color de
fondo de pantalla.

Hacer click en el cuadro coloreado para seleccionar el color del


borde.

Hacer click en el cuadro coloreado para seleccionar el color del


texto para alarmas no reconocidas mostradas en la pantalla de alarma.

Hacer click en el cuadro coloreado para seleccionar el color del


texto para alarma reconocidas mostradas en la pantalla de alarma.

Hacer click en el cuadro coloreado para seleccionar el color del texto


para retornar a la alarma normal mostradas en la pantalla de alarma.

Hacer click en el cuadro coloreado para seleccionar el color del texto


para mostrar eventos en el objeto Alarm/Events.

Nota: La selección del color RTN y evento son solamente seleccionable para una
ventana tipo Alarm History.

Para ver el evento de nodo local, configure una ventana Alarm History
y seleccione Local (viene por defecto).
Es una configuración maestro/esclavo, seleccione Server para mostrar
una lista de Alarm/Events para el nodo servidor. (El nodo servidor es especificado vía el
comando /Special/Configure/View Generic.)
A109

Haciendo click en este botón se accede al cuadro de


dialogo Format Alarm Message para seleccionar varios items que son mostrados y cada
mensaje de alarma visualizado en el objeto Alarm/Events.

Nota: Visualizando, imprimiendo y registrando mensajes de alarmas son todas


formateadas de la misma manera.

Entre el nombre de un grupo de alarmas o de un grupo de variables en este


campo. Si un grupo de alarmas es ingresado, el objeto Alarm/Events mostrara
solamente la alarma en este grupo especifico. Para mostrar todas las alarmas en todos
los grupos, use el nombre de grupo de arraigamiento, $System.
Para controlar la elección de alarmas que se muestran en runtime, entre el
nombre de una variable de grupo en este campo y entonces configure una acción de
pushbutton o una tecla script para asignar un especifico nombre de grupo de alarma para
el grupo de variable. Por ejemplo, lo siguiente presenta en la entrada en la acción para el
pushbutton:
GroupVariableTagname=AlarmGroupName;
A110

Entre el nivel alto de alarma para el rango de prioridades que serán visualizadas
en el objeto alarma. Un tagname análogo puede ser ingresado en este campo. El valor
del tagname esta determinando la prioridad del nivel para ser mostrados. La prioridad
de los números de alarma para ser visualizado puede estar controlados por asignaciones
de valores para estos tagnames a través de un vinculo de entrada análoga o script.

Entre el nivel de alarma para el rango de prioridades que serán visualizadas en el


objeto alarma. Un tagname análogo puede ser ingresado en este campo. El valor del
tagname esta determinando la prioridad del nivel para ser mostrados. La prioridad de los
números de alarma para ser visualizado puede estar controlados por asignaciones de
valores para estos tagnames a través de un vinculo de entrada análoga o script.

Nota: La prioridad de alarmas parte de un nivel alto, ejemplo, 1 es la prioridad


alta.

Entre un tagname discreto que será usado para mostrar la pagina a través de la
lista de mensajes de alarma (sí hay más del numero que permite la pantalla). Cuando el
valor de la transición de una variable discreta desde ON (1, verdadero) a OFF (0, falso),
el objeto visualizado Alarm/Events mostrara la pagina previa. Una vez que se muestra
la pagina previa, la variable discreta automáticamente sé resetea en ON, a menos que
alcance la parte de arriba de la lista. En este caso, el valor de la variable que da en OFF
y la acción de la pagina previa queda desabilitada.
Para crear un pushbutton de pagina previa, crear un objeto y unir un vinculo
Discrete Value Pushbutton usando el tagname discreto usado en el campo de pagina
previa. Un vinculo de visibilidad puede ser también usado en el pushbutton de valor
discreto para ocultar el botón cuando el valor del tagname discreto es OFF.
A111

Los datos ingresados en este campo de trabajo son lo mismo que el del campo de
pagina previa descrita arriba excepto, en control de la función Next Page (siguiente
pagina).

Hacer click sobre este botón para seleccionar el comando Font, este
estilo y tamaño se usa para mostrar el mensaje en el objeto visualizado Alarm/Events.
Al llamar este comando se accede al cuadro de dialogo FONT:

3.18.3.- Configuración de Alarm/Events


Estos son 3 tipos de cuadros de dialogo de configuración usadas para alarmas, el
Alarm/Events, Alarm Loggin y Alarm Priting. A todas ellas se accede vía el comando
/Special/Configure:

3.19.- Alarm/Events
Hacer click en este botón para configurar varios parámetros que
afectan a Alarm/Events. El cuadro de dialogo Alarm/Events Configuration aparecerá:
A112

3.19.1.- Registro de Alarmas


Hacer click sobre este botón para configurar el archivo de
registro de alarmas. El siguiente cuadro de dialogo aparece:

Seleccione esta opción para habilitar el registro de alarmas. Los


archivos se pondrán en el directorio seleccionado y nombrados automáticamente como
sigue:
YYMMDDHH.ALG

Donde: YY es igual al año en que el archivo fue creado.


MM es igual al mes en que el archivo fue creado (01-12).
DD es igual al día en que el archivo fue creado (01-31).
HH es igual a la hora en que el archivo fue creado (00-23).

Por ejemplo, si un archivo es creado cada 8 horas a partir de las 6 AM en Abril 30 de


1992, entonces el nombre quedaría como sigue:

92043006.ALG
92043014.ALG
92043022.ALG
A113

Entre el número de valor de la hora del dato de


alarma para ser provisto en cada archivo de registro. Los valores de ingreso son entre 1
y 24.

Entre el intervalo de hora para que el primer registro


empiece. Las entradas validas deben estar entre 0 (para 12:00 AM) y 23 (para 11:00
PM).
Ejemplo 1: El operador de planta realiza 3 cambios. El primer cambio comienza
a las 6:00 AM. Las alarmas son registradas por cambios individuales. Entonces, ingrese
8 en el campo Numer of Hours to Cycle Filaname y 6 en el campo Starting at Hour (0-
23).
Ejemplo 2: El operador de planta realiza 3 cambios. Las alarmas son registradas
por días con la partida del registro de archivo para medianoche. Entonces, ingrese 24 en
el campo Numer of Hours to Cycle Filaname y 0 en el campo Starting at Hours (0-23).

Entre el número del valor de días del registro de


archivo para ser retenido en el disco. Por ejemplo, si 10 es ingresado y es el día 12 del
mes, el registro archiva desde el segundo al 12 y el 1 automáticamente será borrado.

Nota: Cuando se ingresa 0 (cero) para el día, el archivo de registro será guardado
indefinidamente.

Seleccione este botón para acceder al cuadro de


dialogo Format Alarm Message para configurar el contenido del mensaje de alarma
escrito para el archivo de registro.

3.19.2.- Imprimiendo Alarmas


Hacer click sobre este botón para configurar la puerta que
A114

será usada para imprimir, el formato de impresión de mensaje de alarmas, grupos


específicos de alarmas y/o prioridad de alarmas para ser impreso. Al llamar este
comando accede al cuadro de dialogo Alarm Printer Configuration:

Si usa una puerta paralela, seleccione la puerta donde se usara la


impresora. (None es el seteo por defecto).

Si la impresora usa una puerta serial, seleccione la puerta donde se usara la


impresora. Una vez hecha la selección, el campo Configuración aparece. El
formato del valor ingresado en este campo es el mismo que el requerido por
el comando del modo DOS (BaudDate, Parity, DataBits, StopBits). El siguiente es el
valor valido para cada entrada en la variable:

BaudRate: 110, 150, 300, 600, 1200, 4800, 9600, 19200


Parity: O (odd), E (even), N (none)
DataBits: 7o8
StopBits: 1o2

Nota Especial: Cuando se imprime alarmas, Intouch toma el control completo de


la puerta. Por lo tanto, una impresora seleccionada es requerida . No para otras
aplicaciones, ejemplo Excel puede usar la impresora hasta que la impresión de
alarma la desabilita.
A115

Seleccione este botón para acceder al cuadro de dialogo


Format Alarm Message para configurar el contenido de la impresión del mensaje de
alarma.

3.20.- Campos de Alarmas


La sintaxis Tagname.FieldName puede ser usada para acceder al campo de datos
asociados con un tagname en la base de datos. Esto es útil para el seteo y visualización
del limite de alarma, etc.

Campo discreto de lectura y escritura usado para monitorear


y/o controlar el estado de tagname, grupo de alarma y/o grupo de variables. Ejemplo:

Tagname.Ack=1;
GroupName.Ack=1;
GroupVariable.Ack=1;

Campo discreto solamente de lectura, esto es igual a 1 cuando


existe una condición de alarma para el tagname especifico, nombre del grupo de alarma
o grupo de variable, ejemplo:
AlarmGroup.Alarm;

Campos análogo de lectura y escritura, (solamente validos


para tagnames enteros o redes). El monitoreo y/o control del porcentaje de desviación
de banda muerta para mayor y menor desviación de alarmas. Por ejemplo, para cambiar
el porcentaje a 25%, el siguiente estamento será usado:

Tagname.AlarmDevDeadband=25;

Campos discreto de lectura y escritura, esto desabilita y/o


A116

habilita eventos y alarmas para un tagname, grupo de alarmas o grupo de variables.


Ejemplo:
GroupVariable.AlarmEnable=1;

Campo análogo de lectura y escritura (solamente validos para


tagnames enteros o reales) esto monitorea o controla el valor de una alarma de banda
muerta. Este campo es valido para grupos de alarmas y grupo de variables para un
tagname ordinario.
Tagname.AlarmValDeadband=10;

Campo análogo de lectura y escritura (solamente valido para tagnames


enteros y reales) esto monitorea y/o controla la tarjeta para menor y mayor desviación
de alarmas. Ejemplo:
Tagname.DevTarget=500;

Campo solamente de lectura de tagnames discretos usados para


determinar si una alarma de tipo especifico existe. Por ejemplo .HiHiStatus será igual a
1 cuando hay una alarma HiHi para el tagname. (Algunas aplicaciones para .HiStatus,
.LoStatus, .LoLoStatus, .MinorDevStatus, .MajorDevStatus, .ROCStatus y
.SPCStatus.).

Campos de lectura y escritura de tagnames análogos usados para


monitorear y/o controlar los limites para valores de chequeo de alarmas y estos campos
son solamente validos para tagnames enteros y reales. (Algunas aplicaciones para
.HiLimit, .LoLimit, y .LoLoLimit.).
Ejemplo:
RealTag,LoLoLimit

Campos lectura y escritura de tagname enteros usados para


A117

monitorear y/o controlar el chequeo de la desviación de alarma. (Algunas aplicaciones


para .MajorDevPct, .ROCPct.). Ejemplo:

IntergeTag.ROCPct

Campos de solamente de lectura de tagnames discretos usados para determinar si


una alarma de un tipo especifico existe. Por ejemplo:
.MinorDevStatus será igual a 1 cuando hay una alarma de MinorDevStatus para el
tagname.

3.21.- Campo de acceso DDE de alarma


El siguiente campo de alarma es accesible usando DDE, una expresión y/o
Scripts. El acceso DDE provee al operador la habilidad de monitorear y/o controlar una
información de alarma de tagname especifico usando otra aplicación de Windows,
ejemplo: Excel o una aplicación View remota (usando NetDDe).

.Ack (0/1)
.Alarm (0/1) Lee solamente
.AlarmEnable (0/1)

Los siguientes campos de alarmas son aplicables para tagnames reales o enteros
solamente:

.AlarmDevDeadband
.AlarmValDeadband
.HiHiLimit
.HiHiStatus (0/1) Solamente lectura
.HiLimit
.HiStatus (0/1) Solamente lectura
A118

.LoLimit
.LoStatus (0/1) Solamente lectura
.LoLoLimit
.LoLoStatus (0/1) Solamente lectura
.DevTarget
.MajorDevPct
.MajorDevStatus (0/1) Solamente lectura
.MinorDevPct
.MinorDevStatus (0/1) Solamente lectura
.ROCPct
.ROCStatus (0/1) Solamente lectura

El siguiente es un ejemplo de cómo usar este campo dentro de una expresión:

Temperature.HiHiStatus==1;

O dentro de un script
IF Temperature.HiHiStatus THEN
Temperature.AlarmValDeadband=3;
ENDIF;

3.22.- Tendencia de Tiempo Real y Tendencia Histórica


El paquete del software Intouch tiene la capacidad de mostrar tendencias de
gráficos de la entrada de la base de datos. Ellos son creados por el uso especial de
herramientas desde la barra de herramientas de WindowMaker. La tendencia de gráfico
puede ser muy pequeña o abarcar un área de pantalla entera. No hay limite para el
número de gráficos que puedes colocarse en una pantalla. Los gráficos tienen la
apiencia de papel gráfico con el valor del tiempo en movimiento desde derecha a
izquierda. Varias opciones están disponibles para personalizar la apariencia del gráfico
de tendencia. El operador puede especificar el tiempo abarcado, valores de rango,
A119

resolución de grilla, localización de la marca de tiempo, localización de la marca de


valores, número de anotaciones (sobre 4) y atributos de color. Existen 2 tipos de objetos
gráficos, Tendencia de Tiempo Real y de Tendencia Histórica.
Además para la capacidad de tendencia de Intouch, 2 utilidades son incluidas en
el paquete del software, HDMerger y HistData. Ambos son diseñados para trabajar con
el registro Histórico. La utilidad HistData convierte archivos de registro de datos
históricos (.log) en archivos separados por coma (.CSV) para ser usados en hoja de
calculo o entorno a una edición de texto (ej. MSExcel). La utilidad HDMerge permite la
unión de varios archivos de registro .CSV con el archivo ONE.CSV.

3.22.1- Tendencia de Gráfico en Tiempo Real


La tendencia de objetos en tiempo real provee la habilidad para cambiar un
gráfico y registro cuando ellos están pasando para alguna base de datos de un tagname
especifico o a una expresión que contiene uno o más tagnames. Un gráfico de tendencia
de tiempo real es creado para seleccionar la herramienta de tendencia en tiempo real
(tercera herramienta en la segunda fila) en la barra de herramienta de WindowMaker y
usando la herramienta se crea el rectángulo de tendencia.
A120

Nota: La tendencia en tiempo real del objeto es vinculada a algún otro objeto. Esto
puede ser movido agarrando del centro con el mouse o redimencionado al agarrar
uno de las esquinas circundantes.

3.22.2.- Configuración de una tendencia en Tiempo Real


Cuando una tendencia de tiempo real de un objeto es dibujada, ésta
configuración se sesteara por defecto para cualquiera de los dos sistemas (sí este es el
primer dibujo de tendencia) o para el seteo de configuración del dibujo de tendencia
previo.
Para cambiar el seteo de configuración hacer doble click en la tendencia del
objeto. El cuadro de diálogo Real Time Trend Configuration aparecerá:

Entre el valor para todo el largo de tiempo para ser mostrado


horizontalmente (eje X) en el gráfico de tendencia. Entonces
seleccione el botón para el incremento del tiempo que
empieza a contar. Por ejemplo, si se ingresa 30 y se selecciona Mín, el tiempo será
horizontalmente en el gráfico por 30 Minutos.

Entre un número para la frecuencia en que la


tendencia de expresión será evaluada. Entonces
seleccione el botón para incrementar el tiempo en
A121

que empiece a contar. Por ejemplo, si se ingresa 10 y se selecciona Sec. la expresión


será evaluada cada 10 segundos.

Haga click en el cuadro coloreado para acceder a la paleta de


colores de Intouch para seleccionar el color de fondo y del borde para la tendencia.

Entre el número de líneas de mayor desviación


para ser visible en el área de tendencia. El color de estas líneas es mostrado en el cuadro
adyacente, para un nuevo color hacer click sobre este cuadro.

Entre el número de líneas de menor división para ser


visibles las líneas de menor división. El color de
estas líneas se muestra en el cuadro adyacente, para elegir un color nuevo hacer click
sobre este.

Chequee el cuadro para la etiqueta de tiempo


deseado. Entre el número de la etiqueta de
tiempo por mayor división en el cuadro de
entrada. Haga click sobre el cuadro coloreado para seleccionar el color de la etiqueta.
Seleccionar al formato deseado para la etiqueta de tiempo.

El valor de la etiqueta se configura igual que la


etiqueta de tiempo. El valor Mín/Máx. es
ingresado en el seteo del rango del valor
vertical (eje Y) para la ventana de tendencia. Este rango es en Unidad de Ingeniería
(EU) y el mismo para todos los tagnames de tendencia.

Nota: para puntos decimales se muestra una runtime para el valor mínimo y
máximo ello se hace entrando en los cuadros Mín y Máx.
A122

Más de 4 anotaciones pueden ser visibles en una ventana de tendencia. Las


anotaciones pueden ser usadas para mostrar uno o más tagnames. La habilidad para la
tendencia de expresión es útil en la creación de ventanas personalizadas para mostrar
tagnames con muchos rangos ampliamente diferentes. El color del tagname tenderá en
está muestra en el acompañamiento en el cuadro coloreado que al hacer click sobre él se
selecciona el nuevo color. El ancho de la anotación puede también ser configurado en el
entrada del ancho del cuadro.

Nota: Seleccionando un gran ancho de anotación mayor que una significancia


reduce el rendimiento en la actualización de pantalla e impresión.

Seleccionando ésta opción causa que la tendencia


solamente actualizada cuando está es parte de una
ventana visualizada (ayuda en RAM).

Hacer click en este botón para acceder al cuadro de diálogo


Font para seleccionar el tipo de letra, el estilo y tamaño para ser usado en la impresión.

Aumentando la representación en tiempo real


Para la aumentar la representación de tendencia en tiempo real haga lo siguiente:
1.- Setee la anotación con ancho 1
2.- Asegúrese de que otro objeto no este en el lugar de arriba del gráfico de tendencia de
tiempo real.
3.- Los números más bajos de muestra son tomados. Por ejemplo:
A123

Si la envergadura del tiempo en el seteo es de 30 Minutos y los intervalos de muestra


están seteados a 2 segundos, el número de muestras que serán tomadas durante 30
Minutos pueden ser calculado como sigue:
30*60/2

3.23.- Gráfico de tendencia Histórica


La tendencia histórica no es dinámica. Esto provee una imagen Snap Shot de
datos para un tiempo y datos del pasado. Distinto de la tendencia de tiempo real, la
tendencia histórica solamente se actualiza cuando Told se hace vía script, expresión o
por el operador pulsando un botón. Hasta 4 tagnames pueden ser tendencia de una vez
sin limite del número de tendencia de objetos visualizados. Se tiene completa
flexibilidad en diseñar una interface para el gráfico de tendencia. Se pueden crear
Scooters o cursos de datos, el operador puede crear Slides por encima de la tendencia
para acceder a una variedad de datos basados en la actual localización del scooters. Por
ejemplo, cuando el scooters es posesionado sobre un área en la tendencia estos datos
son visibles, la localización del scooters retornará el tiempo y valor para todas las
anotaciones (tagnames) que son tendencia.
Se pueden crear botones para aumentar (zoom In) o disminuir (zoom Out) entre
los scooters o datos, tal como el valor máximo y mínimo. El promedio y desviación
estándar pueden ser mostrados del gráfico completo o del área entre scooters. El gráfico
de tendencia histórica puede también ser mostrado por algún tiempo. Se puede crear
escalas personalizadas y vincular campos .MínEU y MaxEU para mostrar en EU los
máximos y mínimos.
Para crear un gráfico de tendencia histórica, seleccione la herramienta de
tendencia histórica en la barra de WindowMaker, entonces mover el cursor para alguna
área en blanco de la pantalla. Dibujar el objeto de tendencia histórica soltando y
manteniendo el botón del mouse apretado un momento, dibujando con el mouse
diagonalmente para hacer un rectángulo. Suelte el botón y un objeto de tendencia
histórica aparecerá.
A124

El objeto de tendencia histórica es vinculado a algún otro objeto. Esto puede ser
movido agarrando del centro con el mouse o esto puede ser redimencionado agarrando
una de las esquinas del objeto.

3.23.1.- Configuración de una tendencia histórica


Cuando un objeto de tendencia histórica es dibujado, está configurado por
defecto para cualquiera de los dos sistemas (si este es el primer dibujo de tendencia) o
configurado por el dibujo de tendencia anterior. Para cambiar la configuración haga
doble click sobre el objeto de tendencia. El cuadro de diálogo Historical Trend
Configuration aparecerá:
A125

Nota: Para gráficos de tendencia histórica solamente, cuando no comienza la


tendencia de inmediato, el color del área mostrada será la misma que el color del
borde seleccionado. Por ejemplo, si la máquina es impulsada desde las 6:00 a las
7:00, los datos para este intervalo de tiempo será graficado usando el color del
borde seleccionado. Por lo tanto, esto se recomienda para que el color sea diferente
para alguno de los colores de anotación.

Entre el nombre de un punto de la base de datos que este definido como un tipo
Hist Trend. Si un nuevo tagname es ingresado, este puede ser definido. En general, esto
es recomendado para crear distintos nombres para cada gráfico histórico. Sin embargo,
múltiples gráficos pueden usar el mismo nombre.

Esta entrada determina el largo del tiempo


inicial horizontalmente mostrado (eje X) en el
gráfico de tendencia. Para setear el Chart Initial
Time Span, escriba un número en el cuadro y seleccione el botón para el incremento del
tiempo para que empiece a contar. Por ejemplo, si se ingresa 1 y se selecciona Hrs., la
envergadura del tiempo mostrado horizontalmente en el gráfico será de 1 hora de largo

Seleccione el botón para indicar el tipo inicial de muestra


para el gráfico nombrado. Si se selecciona el modo
Mín/Máx., cada pixel en el gráfico se mostrará el rango
máximo y mínimo de puntos ocultos en el tiempo representado por este pixel. Si se
selecciona el modo Average el gráfico mostrará el valor promedio para cada pixel.
Ejemplo, segmento de tiempo.

Nota: Varias de estas configuraciones ingresadas son las mismas que se discutieron
en la configuración de tendencia de tiempo real.
A126

Estos campos de rangos setean el valor inicial para el rango de la tendencia. Las
unidades para rango Mín/Máx. son un porcentaje de la escala de unidad de ingeniería.
Así estos valores son de 0 a 100. Esto es diferente para la tendencia en tiempo real, ya
que el rango de la escala de EU es del 0 %.

Hasta cuatro anotaciones pueden ser visibles en una ventana de tendencia. Estas
pueden ser usadas para mostrar algunos tagnames de base de datos. La habilidad de la
tendencia de expresión es útil en la creación personalizada de pantallas para mostrar
tagnames con muchos rangos diferentes. El color de cada anotación de tendencia se
muestra en el cuadro coloreado y al hacer click sobre éste cuadro se selecciona un color
nuevo. El ancho de la anotación también puede ser configurado en un cuadro de ingreso
de ancho. Al seleccionar un ancho más grande que una significancia influye en la
presentación.
Nota Especial: Una vez completada la configuración, la opción de habilitar la
anotación se hará valida vía el comando Special/Configure...Historical Logging.
Para un control dinámico la partida/parada del registro histórico durante el
runtime, el tagname $Historical Logging del sistema interno puede ser vinculado a
un objeto o ser usado en un script si el registro es habilitado.

Seleccione ésta opción para permitir al operador hacer


cambios en la configuración de la tendencia histórica durante el runtime.

Haga click sobre éste botón para acceder al cuadro de


diálogo para seleccionar la letra, estilo y tamaño para ser usada en la impresión.
A127

3.23.2.- Actualización de una tendencia histórica durante runtime.


En WindowViewer cuando una tendencia histórica es mostrada por primera vez,
ésta mostrara datos para la configuración especifica. Distinto de la tendencia de tiempo
real, la tendencia histórica no se actualiza ella misma continuamente. Un cambio debe
estar echo para la tendencia es orden para ser actualizado después que los datos iniciales
son mostrados. Algunos de los siguientes métodos pueden ser usados para actualizar la
tendencia:
1.- Habilitar la opción Allow runtime changes en el cuadro de diálogo de tendencia
histórica (en WindowMaker) para permitir al operador cambiar manualmente la
tendencia de tiempo y/o datos para forzar la actualización.
2.- Use lo siguiente en un script o en un pushbutton para permitir al operador actualizar
el gráfico:
Tagname.UpdateTrend=1

3.- Use lo siguiente en un script o en un pushbutton:


HTUpdateToCurrentTime(Hist_tag);
HTScrollLeft(Hist_tag,Percent);
HTScrollRigh(Hist_tag,Percent);
HTZooMin(Hist_tag,LockString);
HTZoomOut(Hist_tag,LockString);

Para más detalles sobre algunos de las funciones de arriba, vea la sección
Historical Function de éste capítulo.
A128

3.23.3.- Configuración de una tendencia histórica durante runtime.


Si la opción Allow Runtime Changes (descrita arriba) es habilitada cuando el
objeto de tendencia es configurado, el gráfico será Touch-sensitive y puede ser
configurado por el operador durante runtime. Durante runtime, hacer click en Trend
para hacer que el cuadro de diálogo Historical Trend Setup aparezca:

Entre el dato de partida y el tiempo para el gráfico en


este campo.

Seleccione el botón para indicar el modo de mostrar el gráfico.


Estos son tres modos de mostrar un gráfico de tendencia:

1 Mín/Máx.
2 Average/Scatter
3 Average/Bar Chart.

El modo mostrar de los gráficos afecta la presentación. El primer factor aquí es


A129

el largo de las líneas que serán dibujadas para generar el gráfico. El largo de las líneas,
es tomado para generar el gráfico. El ancho de la línea es también factor de
presentación, el ancho de las líneas toma un significado grande para el gráfico. Los
gráficos Mín/Máx. o Average/Scatter son generalmente mucho más rápido para generar
que la tendencia Average/Bar Chart.

Entre el largo del tiempo para ser mostrado horizontalmente (eje Y) sobre la
tendencia.

Esta unidad para el rango es un porcentaje de la escala de EU. Así, estos valores
serán de 0 a 100. Entre el porcentaje de la escala EU para que la tendencia sea
aumentada y disminuida. Por ejemplo, para la tendencia de la varianza del tagname
seleccionado desde el porcentaje 40 a 45 de la escala, ingrese 40 y 45 en el mínimo y
máximo en el campo de rango respectivamente.

Para seleccionar el tagname para ser tendencia, haga click en el


botón de la anotación deseada PEN #. Al seleccionar el cuadro de
diálogo Tag for the Pen aparecerá rápidamente para hacer click
sobre un tag.

Nota: Solamente estos tags son opción de datos de registros que serán habilitados
en el diccionario de datos de tagname siendo mostrado en este cuadro de diálogo.

Alguna tendencia histórica puede ser impresa haciendo click en el botón


Print. La operación de impresión toma lugar en el Background mientras continua
WindowViewer para procesar todas las otras entradas, normalmente WindowViewer
A130

agrega dos ítems a este menú durante la impresión: CancelPrint y X % Done. Haciendo
click en CancelPrint para cancelar la actual impresión.
Un botón pushbutton puede también ser creado para imprimir la tendencia
histórica para ser usada en la acción interna del script de la función PrintHT. Lo
siguiente es una entrada en la acción script para el pushbutton:

PrintHT(HistTrendTagname);

La operación de impresión usa la actual tendencia histórica como base para


imprimir. Por lo tanto, si algún campo en el cuadro de diálogo Hitorical Trend Setup es
cambiado, el botón Print será desabilitado. Algunos cambios hechos en el setup no
pueden ser impresos hasta que el botón OK en el cuadro de diálogo Historical Trend
Setup sea presionado para ingresar estos cambios.

Nota: Después de seleccionado la impresora, no se puede cambiar la tendencia


hasta que el menú CancelPrint y X % Done aparezcan. Durante este tiempo,
WindowViewer está salvando la información de tendencia en la memoria para
imprimirla. Una vez que estos dos menús aparecen, la tendencia puede ser
cambiada sin afectar la impresión que ésta en progreso.

3.24.- Escribiendo Tagname para el Archivo de Registro Histórico.


Los valores escritos en el archivo de registro histórico todo el tiempo son
cambiados una vez cada hora, a pesar de todo cambio. Para cada valor de un tagname
escrito en el archivo de registro histórico, hará que el setup se registre en la base de
datos de Intouch. Al llamar el comando Special/Tag Name Dictionary... se accede al
cuadro de diálogo Dictionary-Tag Name Definition y mostrara la definición del
tagname deseado.
A131

Una vez que la definición del tagname deseado es mostrada, habilite


ésta opción.

Para ingresar un tipo de tagname real (punto


flotante), un campo Log Deadband será mostrado en su respectivo detalle en el cuadro
de diálogo. Un valor puede ser en este campo controlado por la EU del valor de un
punto que fue cambiado antes en el registro del disco.

Habilitando el Registro Histórico.


En orden para el tagname estos son definidos para ser registrados y escritos en el
archivo de registro histórico, la función registro ha de ser habilitada. Para habilitar el
registro, Llame al comando Special/Configure. La selección de Intouch Configuration
hace que aparezca el siguiente cuadro de diálogo:
A132

3.25.- Configure/Historical Logging.


Este comando es usado para configurar el archivo de registro histórico. Al llamar
este comando se accede al cuadro de diálogo Historical Logging Configuration:

Seleccione ésta opción para habilitar el registro. Los


archivos se colocaran en el directorio seleccionado y nombrado automáticamente como
sigue:
YYMMDD00.LOG

Donde: YY es igual al año en que fue creado el archivo.


MM es igual al mes en que fue creado el archivo (01-12).
DD es igual al año en que fue creado el archivo (01-31).
00 siempre mostrara ceros.

Por ejemplo, si el archivo fue creado un 30 de Abril de 1992, su nombre será:

92043000.LOG
A133

Nota: Los registros históricos pueden ser activados y detenidos durante runtime
siendo vinculado al tagname del sistema interno $Historical Logging para un
botón de toque o script. Además, si el computador queda sin espacio en el disco
para registro de archivos históricos, el operador creara espacio libre en el disco
llamando al comando Special/Restart Historical Logger en WindowViewer para
continuar registrando.

Seleccione esta opción para causar que los datos histórico sean registrados en el
directorio de la aplicación.

Seleccione este botón y entre un pathname en el cuadro para provocar que el


objeto histórico sea registrado en el directorio especifico. (Esto es recomendado si el
pathname completo a sido ingresado, ejemplo C:\Intouch).

Entre el número de valor de días (prioridad el actual día) del archivo de registro
histórico para ser retenido en el disco. Por ejemplo, si se ingresa 10 y es el día 12 del
mes, el archivo de registro del día 2 hasta el día 12 serán archivados y el día 1 será
automáticamente borrado.

Nota: Cuando se ingresa cero (0) en el día, el archivo de registro es guardado


indefinidamente.

Estos son muchos factores que afectan la presentación de la impresión del


gráfico de tendencia histórica. El primer factor de presentación es el tamaño del gráfico
en la página impresa. La presentación puede ser mejorada siendo cambiado el
porcentaje de la página que esta siendo usada. Por ejemplo, entrando 50 en este campo
A134

causará que WindowViewer use la mitad de la página (verticalmente y


horizontalmente). Una impresión esta dimensionada para tomar un cuarto del tiempo
para preparar toda la página impresa.

Entre la sección de tiempo de duración del proceso (en milisegundos) con él


modulo de impresión de la tendencia histórica.

Entre el tiempo (en milisegundos) para que él modulo de impresión de la


tendencia histórica esperara antes de ingrese a otra sección de tiempo del procesador.

3.26.- Campo de Tendencia Histórica.


Para una entrega de tagname de tendencia histórica hay mucho campos que están
solamente aplicados a los tagnames de tendencia histórica. Lo siguiente describe cada
uno de los campos de tendencia histórica.

Nota: En el ejemplo de abajo, se supone que “ht” es un tagname de tendencia


histórica.

Es un .field de un tagname entero de tipo lectura/escritura


usado para controlar el tiempo de partida y/o desplegar el gráfico de la tendencia
histórica correspondiente. .ChartStart muestra el número de segundos transcurridos
desde el 1/1/80 a las 12:00 a.m. Ejemplos:

Desplazar a la derecha por 1 minuto:


ht. ChartStart = ht. ChartStart + 60;

Desplazar a la izquierda por 1 hora:


ht.ChartStart = ht.ChartStart -3600;
A135

Es .field de un tagname entero de lectura/escritura usado para


mostrar la longitud del tiempo mostrado en un gráfico de tendencia histórica.
.ChartLength muestra la longitud del gráfico en segundos. Ejemplos :

Forzar el intervalo del gráfico a 1 hora:


ht.ChartLength = 3600 {60 minutos * 60 segundos/minuto}
Despliegue del gráfico izquierdo por la mitad:
ht.ChartStart = ht.ChartStart - ht.ChartLenght / 2;
Despliegue del gráfico izquierdo en un 10%:
ht.ChartStart = ht. ChartStart - 1 * ht. ChartLength

Son .fields de tagname real de escritura/lectura usados para representar el


porcentaje del rango en Unidades de Ingeniería del tagname que podría ser mostrado
por cada tag que está siendo dirigido. Las unidades para .MaxRange y .MinRange son
de 0 a 100 y .MinRange debe ser siempre menor que .MaxRange. Si un valor menor
que 0 o mayor que 100 es asignado a estos campos serán aproximados a 0 o 100. Si
.MinRange es mayor o igual que .MaxRange la tendencia no mostrará ninguna
información.

Es un .field de tagname análogo de lectura/escritura usado


para determinar el método a usar en mostrar los valores en la tendencia.
Ejemplo:
HistTrendChart.DisplayMode=2
Las entradas son:
1.- Muestra el min/max por cada período de muestreo (por defecto).
2.- Muestra el valor medio por cada período de muestreo usando un diagrama
“scatter”(dispersión).
3.- Muestra el valor medio por cada período de muestreo usando un diagrama “bar
chart”(gráfico de barras).
A136

Es un .field de un tagname TagID de lectura/escritura usado


en conjunto con los tagnames TagID Historical Trend .Pen1 - .Pen4 para monitorear
y/o controlar el tagname que está siendo dirigido por un trazador (descrito a
continuación).

Es un .field de un tagname tipo TagID de lectura/escritura


usado para controlar el tagname que está siendo históricamente dirigido por cada
trazador. (También se aplica a .Pen2, .Pen3 y .Pen4. Un tagname tipo TagID solo puede
ser igualado por otro tagname TagID. Este no puede ser mezclado con otro tipo de
tagname a menos que el campo de extensión .TagID sea agregado al otro tagname. Por
ejemplo, de acuerdo a HistTrendTag.Pen1 para dirigir el tagname Temperature, este
debe tener agregado el campo .TagID.
Ejemplo:

HistTrendTag.Pen1= Temperature.TagID;
Pen01 = HistTrendTag.Pen1;

Este script iguala el tagname TagID HistrendTag.Pen1 a Temperature.TagID


y también Pen01 a HistTrendTag.Pen1. Donde Pen01 es un tagname tipo TagID.
Entonces un campo de salida vinculado a Pen01.Name mostrará Temperature.
Para controlar dinámicamente el despliegue de Unidades de Ingeniería mínimo y
máximo, por el tagname que está siendo dirigido por cada trazador, el tagname TagID
debe ser igualado a un tagname tipo Indirect Analog.
Por Ejemplo:
IndirectAnalogTag.Name = Pen01.Name

Donde el tagname TagID Pen01 se iguala al IndirectAnalogTag el cual puede ser


usado en cuatro script de cambio de dato ( Data Change Scripts) que son vinculados a
los campos Historical Trend.Pen1-.Pen4. Por ejemplo, un Data Change Script podría ser
creado por HistTrendTag.Pen1 como sigue:
A137

Pen01 = HistTrendTag.Pen1;
IndirectAnalogTag.Name = Pen01.Name;

Los vínculos Analog Output pueden ser entonces creados y vinculados a las
siguientes instrucciones para mostrar los Eus ( Unidades de Ingeniería) mínimo o
máximo de acuerdo con el tagname que está siendo dirigido:

IndirectAnalogTag.MinEU;
IndirectAnalogTag.MaxEU;

Es un .field de un tagname discreto de lectura/escritura que


puede estar en 1 para actualizar un gráfico de tendencia histórica usando todos los
valores actuales. Un cambio debe ser hecho para comenzar el gráfico, longitud de
gráfico, etc. de acuerdo al gráfico para actualizar y mostrar los valores actuales para los
tagnames especificados. Usando este .field en un script de action pushbutton permitirá
al operador actualizar el gráfico cuando sea necesario durante el runtime. Ejemplo:

HisTrendTag.Update Trend = 1;

Es un campo entero solo de lectura que es incrementado


cuando una recuperación es completa para una tendencia.

Es un campo discreto solo de lectura que muestra el estado


de recuperación de información histórica (0=no hay recuperación, 1= recuperación en
curso).

Es un campo discreto de lectura/escritura. Cuando el valor


de este campo es TRUE, el scooter derecho no se puede mover hacia la izquierda
(0=FALSE, 1= TRUE).
A138

Es un campo discreto de lectura/escritura. Cuando el valor


de este campo es TRUE, el scooter izquierdo no se puede mover hacia la derecha (0=
FALSE, 1=TRUE).

Es un campo real de lectura/escritura que representa la


posición del scooter izquierdo (Rango 0.0-1.0).

Es un campo real de lectura/escritura que representa la


posición del scooter derecho (Rango 0.0-1.0).

3.27.- Controlando la frecuencia de Registro Histórico


Cuando el registro es habilitado vía el comando Special/Configure/Historical
Logging previamente descritos, los valores de todos los tagname designado para ser
registrado, automáticamente serán escritos en el archivo de registros histórico una vez
cada hora, a pesar de todo cambio.
Tu puedes hacer que no se realice cada una hora por defecto al agregar el
parámetro ForceLogging=# del archivo Intouch. INI (localizado en el directorio de la
aplicación) él # representa los minutos y pueden ser seseados entre 5 y 120. Ver el
ejemplo siguiente:

En este ejemplo, se agrega el ForceLogging=15, el valor del tagname registrado


será escrito en el archivo de registro histórico cada 15 minutos, a pesar de que el valor
del tagname haya cambiado.
A139

Nota: El parámetro ForceLogging será seteado a un valor en minutos entre 5 y


120.

3.28.- Muestra de Scooters de Tendencia Histórica


Los Scooters son indicadores de posición a lo largo de una escala de tiempo,
estos pueden ser cambiados en orden para recordar piezas específicas de datos para
entregar instantes de tiempo. Para unir objeto deslizador a un campo scooters, te puedes
deslizar por encima de una muestra de tendencia histórica y acceder a una sección
deseada de datos. Las funciones son proporcionadas para acceder al promedio, mínimo
y valores máximos para una posición específica del socorrer. Un scooter izquierdo y
derecho puede ser creado usando una función script adicional de Intouch, puede retornar
valores basado en un análisis personalizado en el dato en el scooter o en la localización
del scooter. Los tipos de análisis incluyen el promedio, mínimo, máximo, valor
min/max, EU min/max. y desviación estándar. Al aumentar, puede también ser
personalizado entre los dos scooter. Una agradable característica para agregar a una
tendencia histórica es la habilidad para mostrar datos basados en una localización
conocida en el gráfico. Aumentando y disminuyendo una tendencia es también
beneficial. Las siguientes páginas describen los vínculos y expresiones que pueden ser
usados para incorporar esta funcionalidad en la ventana de tendencia histórica.

3.29.- Programa Utilitario Dato Histórico Merge


La utilidad del programa Utilitario Dato Histórico Merge de InTouch (HDMerge.EXE)
provee de un mecanismo para unir un archivo de datos .CSV con un archivo de registro
histórico de la aplicación Intouch existente. HDMerge determina el archivo histórico del
dato que será unido a los datos específicos para el valor de datos en el archivo de datos.
(Archivos de registros históricos son salvados por el dato marcado. Por ejemplo,
Noviembre 22, 1994 será salvado como 94112200.LOG). HDMerge puede también ser
usado para crear archivos de registros históricos. Si un archivo de registro histórico no
existe en la aplicación de tarjeta para el dato especifico en el archivo .CSV, HDMerge
creara uno para el dato. Si el archivo de datos contiene múltiples días de datos, cada
A140

archivo de registro histórico será actualizado con el dato para este día. La especificación
de tiempo para cada muestra de dato puede ser de 1 milisegundo de resolución.

3.30.- Configurando la Aplicación


Intouch provee la habilidad para personalizar completamente la funcionalidad y
la apariencia final de una aplicación seteando varios parámetros. Estos parámetros son
seteados a través del cuadro de diálogo de configuración dentro del menú
/Special/Configure.... Por ejemplo, los parámetros pueden ser seteados para prevenir al
operador de la existencia de WindowViewer y/o Windows, la barra de títulos de
WindowViewer puede ser personalizado para mostrar el nombre de la compañía y el
menú WindowViewer puede ser desabilitado a través de la tecla ALT y/o de los menús
de control de la pantalla.
Por primera vez WindowViewer y WindowMaker son ejecutados, Intouch
automáticamente crea el archivo Intouch.INI que contiene por defecto los seteos de
configuración que serán usados por la aplicación. Una vez que el operador configura
varios parámetros, ellos son actualizados y guardados en este archivo. Como nuevas
aplicaciones son creadas, la personalización del archivo Intouch.INI puede ser copiado
en el directorio de la nueva aplicación, eliminando así la necesidad de setear la
personalización de parámetros para cada nueva aplicación creada.

3.30.1.- /Special/Configure
Este comando es usado para acceder al cuadro de diálogo Intouch Configuration:
A141

En las siguientes páginas se describe las opciones WindowMaker, View


Generic, View Window y View Home Window.

3.30.2.- /Configure/WindowMaker
Este comando es usado para configurar varios items en el programa
WindowMaker. Al llamar este comando aparecerá el siguiente cuadro de diálogo:

Entre el título que aparecerá en la barra de título cuando se ejecute


WindowMaker. Por ejemplo:
Intouch – DemoApp

Seleccione esta opción para hacer que el actual directorio de la aplicación sea
mostrado siguiendo el título en la barra de título. Por ejemplo:

Intouch – DemoApp – C:\DEMOAPP5.


A142

Estas dos opciones son usadas para configurar la grid. Entre el número de
pixeles para ser espaciado entre la coordenada del grid. Para hacer visible la grid,
habilitar Show Grid.

Seleccione esta opción para hacer que el programa de registro


de Wonderware, automáticamente parta cuando WindowMaker es ejecutado. El
programa registro graba todos los problemas o errores (ejemplo, error de afirmación) de
un archivo del disco para analizarlo después.

Seleccione esta opción para mostrar el número de tagnames


(en la barra menú de WindowMaker) que están siendo definidos en la base de dato de la
aplicación.

Seleccione esta opción para hacer que el


programa WindowMaker automáticamente se cierre cuando sé esta transfiriendo a
WindowViewer. Cuando esta opción es seleccionada , la memoria es conservada. Si la
memoria no esta siendo cuestionada y el operador se esta moviendo a menudo entre
WindowMaker y WindowViewer, esta opción no debe ser seleccionada.

Seleccione esta opción para hacer que el menú


/Edit de WindowMaker muestre el comando para copiar y pegar para y desde el
programa Scrapbook+. (WindowMaker deberá ser seteado después que esta selección es
habilitada por el comando que aparece).

Nota: el programa de Windows Scrapbook+ debe ser instalado en el computador.

Habilitando esta opción permitirá la selección del


objeto que esta detrás de un objeto Vacío. Por ejemplo, si cuatro líneas son dibujadas y
A143

unidas para hacer un cuerpo alrededor de otro objeto, con esta opción habilitada, uno
será capaz de meter el objeto dentro del cuerpo sin hacer que el cuerpo quede atrás de
este objeto.

Seleccione esta opción para habilitar el


Fast Switch (switch rápido) entre WindowMaker y WindowViewer. El switch aparecerá
en la esquina superior derecha en la barra de menú.
En WindowMaker, aparecerá runtime y en WindowViewer , Development.
Haciendo click en este switch (o usando ALT+!) rápidamente se transfiere desde un
programa a otro.
Usando este switch para transferir de WindowMaker a WindowViewer salva
todos los cambios hechos para todas las pantallas abiertas en WindowViewer.

Entre el número de pixeles que el


operador puede estar fuera de una línea para WindowMaker para saber que esta línea ha
sido seleccionada. El seteo por defecto es 4, esto es recomendado para ser usado a
menos que exista alguna dificultad con la selección.

Entre el número de niveles de deshacer/rehacer.


Esto puede ser 0 – 25 niveles (donde 0 los desabilita). Un nivel representa una acción.
El deshacer y rehacer fila esta vacío cuando una nueva ventana es creada o existe una
ventana abierta.

3.30.3.- /Configure/View Generic...


Este comando es usado para configurar varios items de sistema para el programa
WindowViewer. Al llamar este comando aparecerá el cuadro de diálogo View Generic
Configuration:
A144

Seleccione ésta opción para hacer que el programa de registro de


Wanderware automáticamente parta cuando se corre
WindowViewer. El programa de registro graba todos los problemas o errores de un
archivo del disco para analizarlo después.

Seleccione ésta opción para hacer que WindowViewer comience


cuando es seleccionado un icono de una ventana. En muchos casos, la selección de ésta
opción es apropiada solamente cuando el operador esta usando WindowViewer para
reunir datos para otras aplicaciones interconectadas DDE.

Seleccione esta opción para hacer que el programa


WindowViewer automáticamente se cierre cuando se transfiere desde WindowViewer a
WindowMaker.

Seleccione esta opción cada vez que exista una situación


de recurso de memoria baja o Window bajo.
A145

Habilitando esta opción provoca que una


aplicación de pantalla sea cargada desde el disco y no salvada en la memoria RAM
cuando es cerrada.

Entre la cantidad de memoria


(Kbytes) que WindowViewer intentara mantener libre para otra aplicación de Windows.

Seleccione esta opción para aumentar


significativamente la velocidad de actualización de los dibujos. Habilitando esta opción
aumenta significativamente el rango de actualización para campos de textos. (Si el
sistema es bajo en memoria no habilite esta opción).

Todos los temporizadores de


Intouch son chequeados basados en la frecuencia del temporizador.

Entre la frecuencia (en


milisegundos) a la que WindowViewer actualizara la base de tiempo del tagname del
sistema $Msec, $Second, $Minute, etc. Si los milisegundos nunca son mostrados, dejar
el seteo por defecto. Si los segundos, nunca son mostrados, setee el valor a 60000. Si
estos tagnames nunca son usados, setee este valor a 0 para prevenir que los tagnames
sean actualizados.

Seleccione esta opción para hacer que todos los


objetos de toque suenen cuando sean tocados en WindowViewer.

Seleccione esta opción para hacer la actualización de


tendencia de cierre.

Nota: Este es solamente recomendado cuando el operador esta absolutamente


seguro de que los objetos no se traplasen en algunas tendencias de runtime. Si los
A146

objetos sé traplasan la tendencia y esta opción es seleccionada, la tendencia no se


dibujara correctamente.

Seleccione esta opción para crear un mensaje para ser escrito en el


WWLogger cada vez que un script es ejecutado. Esta opción puede ser habilitada y/o
desabilitada durante runtime cuando el menú /Debug de WindowViewer ha sido
habilitado vía el comando /Special/Configure.../View Window...:

Seleccione esta opción solamente para aplicación


internacionales desarrolladas en Intouch 3.26 o anteriores.

Este campo es usado para especificar el nombre del Nodo


del servidor de alarma en la red. Este Nodo es entonces
usado por los nodos remotos para recuperar su información de alarma (si el Nodo local
es el nodo servidor de alarma, este es valido para entrar el nombre de estos Nodos aquí).

Cuando un programa servidor se esta comunicando con


Intouch, DDE Advise y Data Messages son agrupados en bloques para mejorar lo
puesto. Este campo es usado para mejorar el tamaño del bloque. Estas entradas no
afectan la operación del servidor DDE con aplicaciones normales de DDE Aware.

Entre el valor para controlar el intervalo (en segundos)


A147

que WindowViewer automáticamente usará para estabilizar la conversación DDE sin


notificar al operador. Si se cierra un servidor DDE, WindowViewer intentara
reinicializar la conversación a el rango de seteo en este campo.

Entre el número de segundos que pueden transcurrir sin


actividad en la aplicación antes de que el tagname del sistema discreto $Inactivity
Warning sea seteado a 1. Un mensaje de precaución dirá al operador de que el/ella esta
más o menos fuera de registro de la aplicación pueden ser generado usando el tagname
$Inactivity Warning.

Entre el número de segundos que pueden transcurrir sin


actividad en la aplicación antes de que el tagname de sistema discreto $Inactivity
Timeout sea seteado a 1. Un mensaje dirá al operador de que el/ella esta más o menos
fuera de registro de la aplicación pueden ser generado usando el tagname $Inactivity
Timeout.

Estos son tres campos usados para setear la velocidad (en


milisegundos) de parpadeo de un objeto. La velocidad seteada
aquí será usada por la selección de velocidad de parpadeo en el
cuadro de diálogo Vínculos de Animación:
A148

3.30.4.- Configure/View Window


Este comando es usado para configurar varios items relativos a la pantalla del
programa WindowViewer. Al llamar este comando se accede al cuadro de diálogo
WindowViewer Configuration:

Por defecto, la barra de menú será mostrada cuando WindowViewer esta


cerrado. Desabilitando esta opción desabilitará todas todos los menús WindowViewer.
Una barra en blanco fija aparecerá en la parte de arriba de la pantalla. Si la barra de
menú es habilitada, todos de los siguientes menús no serán habilitados para verse:

Por defecto, el menú /File será mostrado cuando se corre WindowViewer.


A149

Nota: Cuando el menú /File es habilitado, el comando WindowMaker será


desabilitado para prevenir que el operador este cambiando el programa
WindowMaker cuando una llave de desarrollo es instalada.

Por defecto, el menú /Logic será mostrado cuando se corre WindowViewer.


Si este menú es habilitado, el operador tendrá la habilidad de partir y parar todos los
script que son ejecutados durante runtime.

Habilitando este menú permitirá al operador acceder a varios comandos


que pueden ser usados para la aplicación. Esto es recomendado para que este menú
solamente sea mostrado cuando sea necesario acceder al comando Debug (paso a paso)
del troubleshooting durante la aplicación de desarrollo.

Nota ESPECIAL: esto es recomendado para que este menú no sea habilitado sin
primero consultar el soporte técnico de Wanderware.

Por defecto, el menú /Special será mostrado cuando se corre


WindowViewer. Si el menú es habilitado, todos los comandos siguiente del menú no
serán habilitados para visualizarce:

Por defecto, el menú /Special/Security será accesible cuando se corre


WindowViewer. Si el menú es desabilitado, todos los comandos siguiente del menú no
serán habilitados para visualizarce:
A150

Seleccione esta opción para provocar que el menú de control sea


mostrado cuando se corre WindowViewer.

Seleccione esta opción para provocar que el cuadro minimizar


pantalla sea mostrado cuando se corre WindowViewer.

Seleccione esta opción para provocar que el cuadro maximizar


pantalla sea mostrado cuando se corre WindowViewer.

Seleccione ésta opción para permitir al operador cambiar el tamaño


de la visualización de WindowViewer. (Este comando no es seleccionable cuando la
barra de título esta oculta).

Entre el título que aparecerá en la barra de título cuando se corre


WindowViewer. Ejemplo: Intouch – WindowViewer.

Seleccione esta opción para mostrar el actual directorio de la aplicación en la


barra de título seguido del título, ejemplo: Intouch – WindowViewer c:\DEMOAPP1.

Seleccione esta opción para que la barra de título no sea mostrada


en WindowViewer.

Seleccione esta opción para hacer que el programa


WindowViewer sea imposible de cerrar.
A151

Seleccione esta opción para activar la tecla de


secuencia Ctrl+Break para detener la ejecución de un script cada vez que sea necesario
durante runtime.

Nota Especial: Si esta opción es habilitada, el operador será capaz de parar todos
los script que se están ejecutando a pesar de toda si o no el menú /Logic es
mostrado en WindowViewer. Si el menú Logic no es visualizado y los script son
detenidos usando la secuencia de la tecla Ctrl+Break, WindowViewer será
reseteado para partir ejecutando el script otra vez.

Seleccione ésta opción para desabilitar la tecla ALT y prevenir al


operador de usar el comando acelerador ALT, ejemplo: ALT+FX para salir de la
aplicación.

Seleccione ésta opción para ocultar el cursor durante runtime.

Seleccione ésta opción para desabilitar la tecla de secuencia


Ctrl+ESC. Esto prevé al operador para acceder a la lista de tareas de Windows para
cerrar y/o cambiar de aplicación.

Nota: Para estar absolutamente seguro de que el operador no tenga la habilidad de


llamar la lista de tareas de Windows, Taskman.exe puede ser borrado del
directorio de Windows.

Seleccione ésta opción para mantener minimizado el programa


WindowViewer para todos los tiempos.
A152

3.30.5.- /Configure/View Home Windows...


Este comando es usado para definir las pantallas que automáticamente serán
mostradas cuando parte WindowViewer desde cualquiera de los dos comandos del
programa Manager de Windows /File/Run... o haciendo doble click en el icono
WindowViewer. (Esto no es aplicable cuando se transfiere de WindowViewer a
WindowMaker).
Estas son algunas pantallas que se muestran cuando el comando ShowHome es
usado en un script. Al llamar este comando se accede al cuadro de diálogo Home
Windows For View:

Para seleccionar una pantalla, haga click en ella. Para seleccionar varias
pantallas, haga click en cada nombre de pantalla con el mouse o use la tecla del cursor
de flecha para moverse a cada nombre de pantalla, presionando la barra espaciadora
para seleccionar la pantalla.

También podría gustarte