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, directorio, tenemos la opción de hacer varias pantallas dentro dentro de esté, al seleccionar el comando New Windows en el menú File aparece el cuadro co mo se indica a continuación: Windows Properties (propiedad de pantalla), tal como
Donde se coloca el nombre de la pantalla con un máximo de 32 caracteres, se selecciona el color color de fondo ondo de la pantal pantalla la 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 una caja caja de herr herram amie ient ntas as con una colec colecci ción ón de objeto objetoss gráf gráfic icos os que son son Toolbox, es una utilizados en la aplicación. La caja de herramientas queda normalmente visible al abrir Window Maker .
A
2
La barra de herramientas es tal t al como se muestra a continuación:
La primera línea línea de herramienta es usada para crear objetos gráficos, gráficos, escribir escribir nombres, selecci seleccionar onar objetos, objetos, etc. etc. Los cuales cuales pueden ser ser mostrados ostrados o anima animados dos en el modo 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 Luego los componen componentes tes restan restantes tes de está está línea, línea, son herram herramien ientas tas que permi 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 co n 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 ), sustitución de tagnames, toolbox), Vínculo s de Animación ( Animation Links 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 d efinido 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 AZ, 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
automáticamente con respecto a cambios en el valor de una expresión.
direcciones
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 co mando \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 FileDelete(Filename). Ejemplo:
usada para borrar archivos indexados o innecesarios.
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 Scoot erPosRight=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 qu e 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ápi rápida dame ment nte. e. Las Las que que con contien tienen en fondo ondo de col color y vari varios os objet objetos os tom toman un tiem tiempo po considerable en imprimir. Ejemplo:
PrintWindow(WindowName, left, top, width, height, options) donde: pantalla a imprimir. imprimir. WindowName es el nombre de la pantalla
left número con punto flotante en pulgadas correspondiente al margen izquierdo. pu lgadas correspondiente al margen superior. top número con punto flotante en pulgadas pu lgadas que establece el ancho que no se imprime. width número con punto flotante en pulgadas 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 ayoríía de las tecl teclas as del tecl teclaado puede ueden n usa usadas das en el SendK endKey eyss. Cad Cada tecl teclaa 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 e specificar 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
{P {PGUP}
ENTER
{ENTER} o { }
PRTSC
{PRTSC}
ESCAPE
{ESCAPE} o {ESC}
RIGHT
{RIGHT}
F1
{F1}*
TAB
{TAB}
UP
{UP}
* Igual con las demás teclas de función
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 co nstantes 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 t ag 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 caract eres 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) número de ocurrencia ocurrencia a reemplazar (-1=todas) NumberToReplace determina el número
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á “xxxx Thisxisxaxxtest” 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 e n 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 Contro l 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 segundo s. 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. E jemplo:
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-THENELSE:
<
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 desarro llos 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
16 Caracteres max.
Leer solamente
Mensaje
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 (023). 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)
.AlarmEnable
(0/1)
Lee solamente
Los siguientes campos de alarmas son aplicables para tagnames reales o enteros solamente:
.AlarmDevDeadband .AlarmValDeadband .HiHiLimit .HiHiStatus
(0/1)
Solamente lectura
(0/1)
Solamente lectura
.HiLimit .HiStatus
A118
.LoLimit .LoStatus
(0/1)
Solamente lectura
(0/1)
Solamente lectura
(0/1)
Solamente lectura
(0/1)
Solamente lectura
(0/1)
Solamente lectura
.LoLoLimit .LoLoStatus .DevTarget .MajorDevPct .MajorDevStatus .MinorDevPct .MinorDevStatus .ROCPct .ROCStatus
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 segundo s. 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 alrededor de otro objeto, objeto, con esta opción habilitada, 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. Haciend Haciendo o click click en este este switch switch (o usando usando ALT+!) ALT+!) rápidamen rápidamente te se transfi transfiere ere desde 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 dificul d ificultad tad 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 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 habili ha bilite te 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.