SlideShare a Scribd company logo
1 of 152
Download to read offline
A 1



                             I.- TRABAJANDO CON INTOUCH


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




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



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




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




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



Encontrándose también en está cuadro opciones de gráficos en tiempo real, históricos y
ventanas de alarmas.
       Luego los componentes restantes de está línea, son herramientas que permiten
alinear, desagrupar, crear botoneras 3D con sus respectivos nombres, borrar, copiar,
pegar, etc.


                             II.- MENU WINDOWMAKER


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


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




       Además cuenta con WindowViewer que es un switch para cambio de
WindowMaker a WindowViewer (pantalla de simulación).
A 4



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




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

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



modificado. Después de seleccionar el o los objetos, y haciendo click sobre el tipo de
línea deseado que muestra en el menú de línea, esta será cambiada.

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



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

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

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



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




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




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




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




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

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



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


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


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




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



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


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


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


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

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



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


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


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


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


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

2.8.2.- Tagname tipo DDE

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



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


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


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


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


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


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




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


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


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


Indirect Discrete          Indirect Analog            Indirect Messaga

       El tagname de tipo Indirecto permite al operador crear una de ventana y
reasignar el tagname en esa ventana a múltiples fuentes. Por ejemplo, uno Cambio de
A 15



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

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

1. Para convertir el tagnames, seleccione el comando /Edit/Select All (F2) luego el
comando /Special/Substitute All Tags...(Ctrl+U). El cuadro de diálogo Sustitute Tag
Names... aparecerá listando todos los tagnames usados por todos los objetos en la
ventana:




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



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

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




4. Haciendo Click sobre OK permitirá que el cuadro de diálogo Diccionary - Tag
Name Definition aparezca y el tagname pueda definirse y agregarlo a la base de datos
de la actual aplicación.


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



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




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

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

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




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


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


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



nombre se remueve el cuadro de diálogo y se inserta el nombre seleccionado en el
tagname o campo de expresión en el cuadro de diálogo.




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


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




Nota: Si el objeto o símbolo utilizado para estos vínculos contiene un campo de
texto, todos atributos diseñados para el texto aparecerán cuando el objeto
aparezca en el modo Runtime. El valor de salida que usted haya ingresado será
mostrará en el campo de a menos que la opción Input Only sea habilitada en el
cuadro de diálogo de Details.
A 20




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


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




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



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


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


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




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

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

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



                               III.- Menú WindowViewer

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




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

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



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




La seguridad será discutida más adelante.

3.5.- Development!

       Este es un interruptor rápido que cambia a la aplicación WindowMaker. Este es
habilitado en WindowMaker usando el comando SpecialConfigureWindowMaker.


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



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


       Los comandos para crear estos Scripts (a excepción del Accionamiento de
Botones) se ubican en el menú /Special/Scripts.




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




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


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




                                  “On Show” permite crear un Script que se ejecute una
                                  vez cuando la ventana se abre por primera vez.
A 27



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


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




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



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


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




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



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


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


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



Nota Especial: Los tagname que son modificados en un Script de Condición o
Script de Cambio de Dato no deben ser usados con el tagname para un Script de
Cambio de Datos o en la expresión de un Script de Condición.


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




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



3.13.- Ingreso de la Operación Lógica
       En la mayoría de los casos, una vez que el tipo de Script es seleccionado en su
respectivo cuadro de diálogo, aparecerá también el siguiente cuadro de diálogo en la
pantalla:




   Significado de cada uno de los Botones


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



El texto seleccionado (resaltado) es eliminado del Script. El texto
eliminado no es guardado en la carpeta de Windows.


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


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


Borra completamente el texto del Script. (El Script no es borrado de la
aplicación).
Valida el Script ingresado. Si existen errores aparecerá el correspondiente
cuadro de mensaje.


Aparece en pantalla los tópicos de ayuda de WindowMaker para todas las
funciones del editor de Script.
Pulsando este botón aparecerá el cuadro de diálogo Reemplazar:
A 33




Funciones específicas están creadas internamente en el sistema y pueden
ser seleccionadas e insertadas al Script seleccionando uno de esos
botones. Al seleccionar uno de ellos aparecerá el cuadro de diálogo
Choose Function.
A 34
A 35
A 36
A 37




         Esta función entrega el valor absoluto de un número específico(el equivalente
sin signo). Ejemplo:


        ResultNumericTag= Abs(InputNumericTag);


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




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




          Ack $System; (Reconoce todas las alarmas)
          Ack Tagname;
          Ack GroupName;
          Ack GroupVariable;




          Esta función activa otra aplicación en Windows que está ejecutando.
Ejemplo:
          ActivateApp “Title Text”;


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


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




          Entrega la función arco coseno expresado en grados entre 0º y 180º.
Ejemplo:
          ResultNumericTAg=ArcCos(InputNumericTag)
Ejemplo:
          ArcCos(1) estregará el valor 0
          ArcCos(-1) entregará el valor 180




          Entrega la función arco seno expresado en grados entre -90º y 90º.
Ejemplo:
          ResultNumericTAg=ArcSin(InputNumericTag)
A 39



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




        Entrega la función arco tangente expresada en grados entre -90º y 90º.
Ejemplo:
        ResultNumericTAg=ArcTan(InputNumericTag)
Ejemplo:
        ArcTan (1) estregará el valor 45




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




        Esta función cambia en forma dinámica un tagname de mensaje basado en un
tagname de una variable discreta.
Ejemplo:
        MsgTag=DText(Discrete, “OnMessage”, “OffMessage”);


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



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




         Esta función entrega el valor de la potencia de .
Ejemplo:
         ResultNumericTag=Exp(InputNumericTag)
Ejemplo:
         Exp(1) dará el valor 2.71828182..........


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




         Esta función es usada para copiar un archivo fuente a un archivo destino,
similar al comando de DOS o la función de copiado en el administrador de archivos.


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



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


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


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


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




         Esta función es        usada para borrar archivos indexados o innecesarios.
FileDelete(Filename).
Ejemplo:
A 42



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


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




          Similar a FileCopy(), excepto que esta función mueve archivos de un lugar a
otra en vez de hacer una copia.


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


        Status=FileMove(“C:DATA.TXT”,“C:BACKUPDATA.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:DATAFILE.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:DATAFILE.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:DATAFILE.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:DATAFILE.TXT,0,MsgTag,0);


La primera línea será leída desde el archivo C:DATAFILE.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:DATAFILE.TXT. “This text” es el actual valor en MyTag1, 3.1416 en MyTag2 y 5
en MyTag3:


          FileWriteFields(“C:DATAFILE.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:DATAFILE.TXT:
          FileWriteFields(“C:DATAFILE.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: DATAFILE.TXT”, -1,MsgTag,1);
A 47



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




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


         GetNodeName(messagetagname, 131);


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




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


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




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


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




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


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


Los siguientes tag enteros ResultCodes serán dados:


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



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


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




con el tagname Trend1 y el resultado es puesto en el tag entero ResultCode.
           Esta función convierte el tagname del tag actualmente usado por el pen# de la
tendencia especificada.


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


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


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




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




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


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




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



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




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


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



Un tag de memoria real es dado representando el valor calculado de estos tipos.
Ejemplo:
 LeftHemisphereSD=HTGetValue(“Trend1”, Trend1.UpdateCount, Pen2,”PenStdDev”)


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




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


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


“PenValue”= Valor de la posición del Scooter.
“PenVaid”= 0 si no es válido, 1 si lo es.


         Un tag de memoria real entrega el valor calculado “PenValue”. Un tag discreto
de memoria representa el valor para “PenValid”.
Ejemplo:
         ValidFlag=HTGetValueAtScooter(“Trend1”,Trend1.UpdateCount,2,
                                Trend1.ScooterPRigh,Pen3,“PenValid”);
A 53




Esta instrucción almacena un 1 si el valor es un muestreo actual o un 0 si no lo es para
el Pen3 de la tendencia Tren1 en un a flag el discreto de memoria Valid Flag para la
posición actual del scooter derecho.




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


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


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


         Un tag de memoria real es dado representando el valor calculado de los tipos
dados anteriormente.
Ejemplo :
A 54



AvgValue=HTGetValueAtZone(“Trend1”, Trend1.UpdateCount, Trend1.
         ScooterPosLeft, Trend1.ScooterPosRight, Pen1,”PenAverageValue”);




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


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




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


         HTScrollRight(TrendName, Percent)
donde:
A 55



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


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




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


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




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


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



Ejemplo:
         HTUpdateToCurrentTime(“Trend1”);


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




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


         HTZoomIn(TrendName, LockString)


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


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



         Esta instrucción mostrará la pantalla en factor de dos y mantendrá el mismo
tiempo de inicio para el tag de tendencia “Trend1”. Trend1.ScooterPosRight es igual a 1
y Trend.ScooterPosLeft es igual a 0.0. Si el tiempo de inicio antes del zoom era 1:25:00
PM y el ancho del gráfico era 30 segundos (después de realizar el zoom), el tiempo de




inicio todavía será 1:25:00. Pero en ancho será de 15 segundos.
         Calcula un nuevo ancho del gráfico y tiempo de inicio. El nuevo ancho del
gráfico es el antiguo multiplicado por dos. El nuevo tiempo de inicio será calculado de
acuerdo al LockString.


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


         Si las posiciones de los scooters no tienen efecto sobre HTZoomOut.
ScooterPosLeft=0.0 y ScooterPosRight. =1 después del zoom.
Ejemplo:
         HTZoomOut(“Volume”, “Center”);


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




          Prueba cuando una aplicación está Activa.


          ResulDiscrete=InfoAppActive(TaskListname);


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




          Esta función retorna al programa especificado que está corriendo en la Lista de
Tareas.
          ResultMessage=InfoAppTitle(ProgramEXEName);


En esta instrucción, el programa, si existe, de nombre ProgramExeName será asignado a
ResultMessage. Por ejemplo, un ProgramExeName “calc” será “Calculator”.
Ejemplos:
          InfoAppTitle(“calc” será “Calculator”
          InfoAppTitle(“excel”) será “Microsoft Excel”




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


          ResultInteger=InfoDisk/DriveLetter, InfoType, Trigger);
A 59



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


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


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




         Esta función retorna la información sobre un archivo o subdirectorio específico
en un computador (o equipo conectado en red).


         ResultInteger=InfoFile(FileName, InfoType, Trigger);


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



Caso 2: Tamaño del archivo(en bytes)
Caso 3: Fecha/Hora del archivo. ( en segundos desde Jan-1-1970)
Caso 4: Número de archivos que cumplen con la descripción del filename. Este valor
        será mayor que 1 para búsquedas semejantes.
Trigger ejecutará la función InfoFile cada vez que el valor de Trigger Cambie.
Ejemplos:
       InfoFile(“c:intouhview.exe”, 1, $Minute) será 1 (encuentra el archivo)
       InfoFile(“c:intouhview.exe”, 2, $Minute) será 634960(tamaño del archivo)
       InfoFile(“c:intouhview.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
WindowsSystem; los directorios listados en el PATH. Si un archivo .wav especifico
no puede ser encontrado, se escuchará el sonido por defecto por la entrada del
SystemDefault en la sección [sounds] del archivo WIN.INI Si no existe el sonido
por defecto o no es encontrado, la función no se escuchará.




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




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


         PrintWindowWait=10000


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


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



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


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




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


         ResultNumericTag=Round(InputNumericTag, Precision);


El parámetro Precision establece la precisión a la cual el InputNumericTag será
redondeado. Ejemplos:
         Round(4.3,1) será 4
         Round(4.3, .01) será 4.30
         Round(4.5,1) será 5
         Round(-4.5,1) será -5
         Round(106,5) será 106
         Round(43.7, .5) será 43.5
A 66




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


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



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




         Esta función modifica la aplicación o las porciones de un nombre o tópico de
un DD·E Access Name durante la ejecución runtime lo cual permite la implementación
de estrategias de respaldo (hot-backup) para InTouch.
Ejemplo:
         SetDddeAppTopic(“DDEAccessName”, “Application”, “Topic”);


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


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


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


Nota: Cuando se ejecuta SetDdeAppTopic, existe un retardo cuando se inicia como
cuando se termina una conversación DDE. Durante este tiempo cualquier
modificación al nuevo tópico se perderá.




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


         ResulNumericTag=Sgn(InputnumericTag);
A 68



Si la entrada es positiva, el resultado será 1. Para números negativos será -1 y para el 0
será 0.
Ejemplos:
          Sgn(425) será 1
          Sgn(0) será 0
          Sgn(-37.3) será -1




          Muestra una ventana específica. Ejemplo:


          Show “WindowName”;


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


Nota: Si el script solo está mostrando u ocultando ventanas, es recomendable usar
los vínculos Show Window o Hide Window. Si se usan y el nombre de la ventana
cambia, InTouch automáticamente hará los cambios.




          Esta función especifica la posición del pixel horizontal y vertical de una
ventana cuando es mostrada. Cuando se abre la ventana, ésta será centrada a las
coordenadas vertical y horizontal. Ejemplo:


          ShowAt(“WindowName”, 100,200);


En esta instrucción, el 100 representa el pixel horizontal y 200 el vertical. Objetos de
entrada análoga (Analog Input) también pueden ser creados y vinculados a tagnames de
A 69



memoria, por ejemplo, Horz y Vert, a cambios dinámicos de la posición de la ventana
durante el runtime. En este caso la instrucción podría ser:


         ShowAt(“WindowName”, HORZ, VERT);


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




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




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




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


         ResulNumericTag=Sin(InputNumericTag)
Ejemplos:

                        Sin(90) será 1

                        Sin(0) será 0




         Permite al InTouch calcular automáticamente la raíz cuadrada de un valor.
Ejemplo:
         AnalogTag1=Sqrt(AnalogTag2);




         Esta función automáticamente ejecuta otra aplicación de Windows. La
instrucción es la siguiente:


         StartApp”AplicationName”{“DocumentName”};


“AplicationName” es el actual nombre del programa de aplicación que será ejecutado,
Por ejemplo; Excel.exe. La parte “DocumentName” es opcional y se refiere a abrir un
documento específico cuando parte la aplicación.
Ejemplo:
         StartApp”Excel.exe Report.XLS”;


Esta instrucción ejecutará el Excel y abrirá inmediatamente la hoja de cálculo llamada
Report.XLS. Si No es usado el nombre del documento la instrucción será:


         StartApp”Excel.exe”;
A 71



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




         Entrega el valor en código ASCII del primer caracter de un tag de mensaje
específico.
         IntegerTag=StringASCII(MessageTag);


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


Nota: Como en otras funciones donde el primer caracter es chequeado o afectado,
si el tag de mensaje dado para la instrucción StringASCII contiene más de un
caracter, sólo el primero del tag será utilizado para la conversión.



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


         MessageTag=StringChar(IntegerTag);


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



En este ejemplo, un [CR y un [LF han sido agregados al final de MessageTag y
traspasados a ControlString. La inserción de caracteres fuera del rango normal de 32 a
126 de caracteres visuales pueden ser útilmente usados en la creación de códigos de
control para ciertos dispositivos externos tales como impresoras o módems.




        Convierte un entero en una representación de caracteres de diferente base
numérica.
        ResultMessage=StringFromIntg(IntegerTag, Base);


En esta instrucción, IntegerTag es convertido a la Base especificada y el resultado es
almacenado en ResultMessage.
Ejemplos:
        StringFromIntg(26,2) será el código binario “11010”
        StringFromIntg(26,8) será el número octal “32”
        StringFromIntg(26,16) será el número hexadecimal “1A”




        Convierte un valor real a una representación como un número con punto
flotante o como notación exponencial.


        ResultMessage=StringFromReal(RealTag, Precision, StringType);


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



StringType=“E” muestra la notación exponencial en mayúscula “E”.
Ejemplos:
         StringFromReal(263.355,2,”f”) será “263.36”
         StringFromReal(263.355,2,”e”) será “2.63e2”
         StringFromReal(263.55,3,”E”) será “2.636E2”




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


         ResultMessage=StringFromTime(TimeValue, StringType);


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


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

More Related Content

What's hot

Iii electroneumatica
Iii electroneumaticaIii electroneumatica
Iii electroneumaticastaticfactory
 
009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programados009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programadosguelo
 
Guia configuracion y funcionamiento tia portal v13
Guia configuracion y funcionamiento tia portal v13Guia configuracion y funcionamiento tia portal v13
Guia configuracion y funcionamiento tia portal v13guelo
 
PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables SANTIAGO PABLO ALBERTO
 
Simbolos transductores sensores detectores
Simbolos transductores sensores detectoresSimbolos transductores sensores detectores
Simbolos transductores sensores detectoresPedro Bortot
 
Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2guelo
 
Comunicación cade simu con pc_simu
Comunicación cade simu con pc_simuComunicación cade simu con pc_simu
Comunicación cade simu con pc_simuguelo
 
005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a pasoguelo
 
SIMULACIÓN DE CIRCUITOS HIDRÁULICOS CON 2 CILINDROS.pdf
SIMULACIÓN  DE CIRCUITOS HIDRÁULICOS  CON  2 CILINDROS.pdfSIMULACIÓN  DE CIRCUITOS HIDRÁULICOS  CON  2 CILINDROS.pdf
SIMULACIÓN DE CIRCUITOS HIDRÁULICOS CON 2 CILINDROS.pdfJovanny Duque
 
Instrumentación Industrial
Instrumentación Industrial Instrumentación Industrial
Instrumentación Industrial Michael Maquez
 
003. diseño de circuitos neumaticos diagramas
003. diseño de circuitos neumaticos diagramas003. diseño de circuitos neumaticos diagramas
003. diseño de circuitos neumaticos diagramasguelo
 
08 instrucciones latch_y_unlatch_plc__40490__
08 instrucciones latch_y_unlatch_plc__40490__08 instrucciones latch_y_unlatch_plc__40490__
08 instrucciones latch_y_unlatch_plc__40490__zfsasfasd
 

What's hot (20)

Iii electroneumatica
Iii electroneumaticaIii electroneumatica
Iii electroneumatica
 
009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programados009. diseño de circuitos secuenciales electroneumaticos programados
009. diseño de circuitos secuenciales electroneumaticos programados
 
Guia configuracion y funcionamiento tia portal v13
Guia configuracion y funcionamiento tia portal v13Guia configuracion y funcionamiento tia portal v13
Guia configuracion y funcionamiento tia portal v13
 
PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables PLC: manual de practicas de laboratorio de controladores lógicos programables
PLC: manual de practicas de laboratorio de controladores lógicos programables
 
Ejercicios ladder
Ejercicios ladderEjercicios ladder
Ejercicios ladder
 
Simbolos transductores sensores detectores
Simbolos transductores sensores detectoresSimbolos transductores sensores detectores
Simbolos transductores sensores detectores
 
Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2Cade simu manual de funcionamiento2
Cade simu manual de funcionamiento2
 
Comunicación cade simu con pc_simu
Comunicación cade simu con pc_simuComunicación cade simu con pc_simu
Comunicación cade simu con pc_simu
 
005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso005. diseño de circuitos neumaticos metodo paso a paso
005. diseño de circuitos neumaticos metodo paso a paso
 
Electroneumatica
ElectroneumaticaElectroneumatica
Electroneumatica
 
SIMULACIÓN DE CIRCUITOS HIDRÁULICOS CON 2 CILINDROS.pdf
SIMULACIÓN  DE CIRCUITOS HIDRÁULICOS  CON  2 CILINDROS.pdfSIMULACIÓN  DE CIRCUITOS HIDRÁULICOS  CON  2 CILINDROS.pdf
SIMULACIÓN DE CIRCUITOS HIDRÁULICOS CON 2 CILINDROS.pdf
 
Instrumentación Industrial
Instrumentación Industrial Instrumentación Industrial
Instrumentación Industrial
 
Control industrial
Control industrialControl industrial
Control industrial
 
Livewire c01
Livewire c01Livewire c01
Livewire c01
 
Manual pc simu
Manual pc simu  Manual pc simu
Manual pc simu
 
003. diseño de circuitos neumaticos diagramas
003. diseño de circuitos neumaticos diagramas003. diseño de circuitos neumaticos diagramas
003. diseño de circuitos neumaticos diagramas
 
08 instrucciones latch_y_unlatch_plc__40490__
08 instrucciones latch_y_unlatch_plc__40490__08 instrucciones latch_y_unlatch_plc__40490__
08 instrucciones latch_y_unlatch_plc__40490__
 
PLC: GRAFCET
PLC: GRAFCETPLC: GRAFCET
PLC: GRAFCET
 
Semaforo, deposito de agua y bombas alternadas ..plc
Semaforo, deposito de agua y bombas alternadas ..plcSemaforo, deposito de agua y bombas alternadas ..plc
Semaforo, deposito de agua y bombas alternadas ..plc
 
Electroneumática
ElectroneumáticaElectroneumática
Electroneumática
 

Viewers also liked

Aplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en IntouchAplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en IntouchEdison Herrera Núñez
 
Info plc cursillo_basico_intouch_7_1 (1)
Info plc cursillo_basico_intouch_7_1 (1)Info plc cursillo_basico_intouch_7_1 (1)
Info plc cursillo_basico_intouch_7_1 (1)Juan Rodriguez Garza
 
08 win cc - programación elemental (1)
08   win cc - programación elemental (1)08   win cc - programación elemental (1)
08 win cc - programación elemental (1)polo33mx
 
ENTRESISTEMAS - Automatización industrial e integración de sistemas en planta
ENTRESISTEMAS - Automatización industrial e integración de sistemas en plantaENTRESISTEMAS - Automatización industrial e integración de sistemas en planta
ENTRESISTEMAS - Automatización industrial e integración de sistemas en plantaENTRESISTEMAS
 
Sistel Control Profile [ES]
Sistel Control Profile [ES]Sistel Control Profile [ES]
Sistel Control Profile [ES]Sistel CONTROL
 
Historian & Live Dashboard
Historian & Live DashboardHistorian & Live Dashboard
Historian & Live DashboardAvanceon-Lahore
 
What's New in Wonderware InTouch Access Anywhere v.122015
What's New in Wonderware InTouch Access Anywhere v.122015What's New in Wonderware InTouch Access Anywhere v.122015
What's New in Wonderware InTouch Access Anywhere v.122015Katie Schauer
 
Automatizacion de las funciones de archivo 07 08
Automatizacion de las funciones de archivo 07 08Automatizacion de las funciones de archivo 07 08
Automatizacion de las funciones de archivo 07 08bbrti
 
Plataforma tactory talk 1
Plataforma tactory talk 1Plataforma tactory talk 1
Plataforma tactory talk 1chrisvit
 
Presentacion clasificacion de instrumentos
Presentacion clasificacion de instrumentosPresentacion clasificacion de instrumentos
Presentacion clasificacion de instrumentosJuan Gonzalez
 
Simulacion fluid sim con step 7 por Edgar Chacca Cuti
Simulacion fluid sim con step 7 por Edgar Chacca CutiSimulacion fluid sim con step 7 por Edgar Chacca Cuti
Simulacion fluid sim con step 7 por Edgar Chacca CutiEdgar Chacca Cuti
 
Automatización Procesos Logísticos: Competitividad. ASTI
Automatización Procesos Logísticos: Competitividad. ASTIAutomatización Procesos Logísticos: Competitividad. ASTI
Automatización Procesos Logísticos: Competitividad. ASTIInstituto Logístico Tajamar
 

Viewers also liked (20)

INTOUCH
INTOUCHINTOUCH
INTOUCH
 
Aplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en IntouchAplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en Intouch
 
InTouch HMI SCADA
InTouch HMI SCADA InTouch HMI SCADA
InTouch HMI SCADA
 
Info plc cursillo_basico_intouch_7_1 (1)
Info plc cursillo_basico_intouch_7_1 (1)Info plc cursillo_basico_intouch_7_1 (1)
Info plc cursillo_basico_intouch_7_1 (1)
 
Wonderware tutorial
Wonderware tutorialWonderware tutorial
Wonderware tutorial
 
08 win cc - programación elemental (1)
08   win cc - programación elemental (1)08   win cc - programación elemental (1)
08 win cc - programación elemental (1)
 
Curso scada
Curso scadaCurso scada
Curso scada
 
ENTRESISTEMAS - Automatización industrial e integración de sistemas en planta
ENTRESISTEMAS - Automatización industrial e integración de sistemas en plantaENTRESISTEMAS - Automatización industrial e integración de sistemas en planta
ENTRESISTEMAS - Automatización industrial e integración de sistemas en planta
 
Sistel Control Profile [ES]
Sistel Control Profile [ES]Sistel Control Profile [ES]
Sistel Control Profile [ES]
 
Historian & Live Dashboard
Historian & Live DashboardHistorian & Live Dashboard
Historian & Live Dashboard
 
What's New in Wonderware InTouch Access Anywhere v.122015
What's New in Wonderware InTouch Access Anywhere v.122015What's New in Wonderware InTouch Access Anywhere v.122015
What's New in Wonderware InTouch Access Anywhere v.122015
 
WW Historian 10
WW Historian 10WW Historian 10
WW Historian 10
 
Automatizacion de las funciones de archivo 07 08
Automatizacion de las funciones de archivo 07 08Automatizacion de las funciones de archivo 07 08
Automatizacion de las funciones de archivo 07 08
 
Plataforma tactory talk 1
Plataforma tactory talk 1Plataforma tactory talk 1
Plataforma tactory talk 1
 
Presentacion clasificacion de instrumentos
Presentacion clasificacion de instrumentosPresentacion clasificacion de instrumentos
Presentacion clasificacion de instrumentos
 
Arquitectura Integrada
Arquitectura IntegradaArquitectura Integrada
Arquitectura Integrada
 
Módulo didáctico
Módulo didácticoMódulo didáctico
Módulo didáctico
 
5 (1)
5 (1)5 (1)
5 (1)
 
Simulacion fluid sim con step 7 por Edgar Chacca Cuti
Simulacion fluid sim con step 7 por Edgar Chacca CutiSimulacion fluid sim con step 7 por Edgar Chacca Cuti
Simulacion fluid sim con step 7 por Edgar Chacca Cuti
 
Automatización Procesos Logísticos: Competitividad. ASTI
Automatización Procesos Logísticos: Competitividad. ASTIAutomatización Procesos Logísticos: Competitividad. ASTI
Automatización Procesos Logísticos: Competitividad. ASTI
 

Similar to manual-de-intouch

Practica 1
Practica 1Practica 1
Practica 1Rurus9
 
Dreamweaver generalidades
Dreamweaver generalidadesDreamweaver generalidades
Dreamweaver generalidadesLuzrodrig
 
PROYECTO FINAL INTRODUCCION A LA INFORMATICA
PROYECTO FINAL INTRODUCCION A LA INFORMATICA PROYECTO FINAL INTRODUCCION A LA INFORMATICA
PROYECTO FINAL INTRODUCCION A LA INFORMATICA Daniela4365
 
aplica los fundamentos de programación web
aplica los fundamentos de programación web aplica los fundamentos de programación web
aplica los fundamentos de programación web karlafabiola123456
 
Manual de mayca y yesica sana
Manual de mayca y yesica sanaManual de mayca y yesica sana
Manual de mayca y yesica sanayesicasana
 
Presentación1 dreamweaver
Presentación1 dreamweaverPresentación1 dreamweaver
Presentación1 dreamweaverLina Ali
 
Elementos de Eclipse
Elementos de EclipseElementos de Eclipse
Elementos de Eclipsefersbrambila
 
P R E S E N T A C I O N P O W E R D R E A M W E A V E R
P R E S E N T A C I O N  P O W E R  D R E A M W E A V E RP R E S E N T A C I O N  P O W E R  D R E A M W E A V E R
P R E S E N T A C I O N P O W E R D R E A M W E A V E Rguest777d3e
 
Presentacion Power Dreamweaver
Presentacion Power DreamweaverPresentacion Power Dreamweaver
Presentacion Power Dreamweaverguest777d3e
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariaricoMaria Rico
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariaricoMaria Rico
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariaricoMaria Rico
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariarico'Paola G
 

Similar to manual-de-intouch (20)

DREAMWEAVER
DREAMWEAVERDREAMWEAVER
DREAMWEAVER
 
manual visual_studio_2010_
manual visual_studio_2010_manual visual_studio_2010_
manual visual_studio_2010_
 
Practica 1
Practica 1Practica 1
Practica 1
 
Dreamweaver generalidades
Dreamweaver generalidadesDreamweaver generalidades
Dreamweaver generalidades
 
PROYECTO FINAL INTRODUCCION A LA INFORMATICA
PROYECTO FINAL INTRODUCCION A LA INFORMATICA PROYECTO FINAL INTRODUCCION A LA INFORMATICA
PROYECTO FINAL INTRODUCCION A LA INFORMATICA
 
aplica los fundamentos de programación web
aplica los fundamentos de programación web aplica los fundamentos de programación web
aplica los fundamentos de programación web
 
Manual de mayca y yesica sana
Manual de mayca y yesica sanaManual de mayca y yesica sana
Manual de mayca y yesica sana
 
Presentación1 dreamweaver
Presentación1 dreamweaverPresentación1 dreamweaver
Presentación1 dreamweaver
 
Elementos de Eclipse
Elementos de EclipseElementos de Eclipse
Elementos de Eclipse
 
10 herramientas de visual basic
10 herramientas de visual basic10 herramientas de visual basic
10 herramientas de visual basic
 
P R E S E N T A C I O N P O W E R D R E A M W E A V E R
P R E S E N T A C I O N  P O W E R  D R E A M W E A V E RP R E S E N T A C I O N  P O W E R  D R E A M W E A V E R
P R E S E N T A C I O N P O W E R D R E A M W E A V E R
 
Presentacion Power Dreamweaver
Presentacion Power DreamweaverPresentacion Power Dreamweaver
Presentacion Power Dreamweaver
 
5
55
5
 
Tarea 2
Tarea 2Tarea 2
Tarea 2
 
Parte 3
Parte 3Parte 3
Parte 3
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariarico
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariarico
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariarico
 
Dreamweaver .. mariarico
Dreamweaver .. mariaricoDreamweaver .. mariarico
Dreamweaver .. mariarico
 
Qué es visual basic
Qué es visual basicQué es visual basic
Qué es visual basic
 

Recently uploaded

describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...DavidBautistaFlores1
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfssuser50d1252
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOEveliaHernandez8
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
GUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIA
GUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIAGUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIA
GUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIAELIASPELAEZSARMIENTO1
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicialLorenaSanchez350426
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxRAMON EUSTAQUIO CARO BAYONA
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 

Recently uploaded (20)

describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...describimos como son afectados las regiones naturales del peru por la ola de ...
describimos como son afectados las regiones naturales del peru por la ola de ...
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADOCUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
CUADERNILLO DE EJERCICIOS PARA EL TERCER TRIMESTRE, SEXTO GRADO
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
 
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
GUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIA
GUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIAGUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIA
GUIA DE TEXTOS EDUCATIVOS SANTILLANA PARA SECUNDARIA
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicial
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 

manual-de-intouch

  • 1. A 1 I.- TRABAJANDO CON INTOUCH Para crear una nueva aplicación en Intouch, seleccione “Create Directory”, o para seleccionar una aplicación existente basta con hacer doble click sobre el nombre del archivo a abrir. Cuando se crea un directorio, tenemos la opción de hacer varias pantallas dentro de esté, al seleccionar el comando New Windows en el menú File aparece el cuadro Windows Properties (propiedad de pantalla), tal como se indica a continuación: Donde se coloca el nombre de la pantalla con un máximo de 32 caracteres, se selecciona el color de fondo de la pantalla en Window Color, se definen las dimensiones de la pantalla, también se define la visibilidad o no del titulo de pantalla. Se puede ingresar a los Scripts, aplicación que será detallada mas adelante, luego de terminadas las propiedades de pantalla se presiona OK y se comienza a trabajar en la confección de la pantalla. Cuando se está dentro de una nueva pantalla aparece la barra de herramientas Toolbox, es una caja de herramientas con una colección de objetos gráficos que son utilizados en la aplicación. La caja de herramientas queda normalmente visible al abrir Window Maker.
  • 2. A 2 La barra de herramientas es tal como se muestra a continuación: La primera línea de herramienta es usada para crear objetos gráficos, escribir nombres, seleccionar objetos, etc. Los cuales pueden ser mostrados o animados en el modo de trabajo Runtime. La segunda línea cuenta con la herramienta Wizard. Al seleccionar está herramienta aparece un cuadro con elementos básicos que se utilizan para hacer eficiente y rápido la construcción de las pantallas. Basta con hacer doble click en el objeto seleccionado para que se de la opción de colocarlo donde se requiera en la creación de la pantalla, también se pueda variar su tamaño y dar Configuración de acuerdo a lo requerido en la construcción de la pantalla.
  • 3. A 3 Encontrándose también en está cuadro opciones de gráficos en tiempo real, históricos y ventanas de alarmas. Luego los componentes restantes de está línea, son herramientas que permiten alinear, desagrupar, crear botoneras 3D con sus respectivos nombres, borrar, copiar, pegar, etc. II.- MENU WINDOWMAKER WindowMaker contiene una barra de menú provista con numerosas funciones. Esta barra de menú esta localizada en la parte superior de la pantalla y se puede acceder a ella solamente haciendo click sobre la opción que se desea utilizar. 2.1.- Menú File (archivo) El menú archivo contiene un Set de comandos que se utilizan para crear, abrir, salvar, imprimir, cerrar, borrar, exportar e importar archivos, también se cuenta con Exit que es salir del programa. Además cuenta con WindowViewer que es un switch para cambio de WindowMaker a WindowViewer (pantalla de simulación).
  • 4. 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á
  • 5. A 5 modificado. Después de seleccionar el o los objetos, y haciendo click sobre el tipo de línea deseado que muestra en el menú de línea, esta será cambiada. 2.5.- Menú Especial El Menú Especial contiene un conjunto de comandos y subcomandos permitiendo desempeñar funciones especiales tal como sustituir tagnames, strings, acceder al Diccionario de Tagname, cambiar los nombres DDE, etc. En este menú se encontraran comandos tales como mostrar y quitar el Toolbox de la pantalla (Show/hide toolbox), Vínculos de Animación (Animation Links), sustitución de tagnames, sustitución de string que son utilizados para cambiar el contenido de los String (botoneras), llamar el diccionario de definiciones de tagnames, crear nombres de grupos de alarmas o modificar viejos nombres de grupos, también se pueden crear subgrupos de alarmas, seleccionar el nombre de accesos DDE (Dynamic Data Exchange). También existe el comando Configurar con el cual Intouch, provee la habilidad de personalizar completamente la funcionalidad y aspecto final de la aplicación seleccionando varias opciones. Estas opciones se obtienen desde este comando. Por ejemplo, puede colocarse las opciones que impidan al usuario salir de WindowVíewer, la barra de título puede personalizarse para mostrar el nombre de compañía, la barra de menú puede eliminarse, la tecla ALT puede estar incapacitado, etc.
  • 6. 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
  • 7. 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.
  • 8. A 8 Alarms Seleccione este botón para definir la condición de alarma del tagname. Cuando definimos un tagname análogo (entero o verdadero), el siguiente cuadro de diálogo se usa para seleccionar tipos de alarmas y entrar sus valores. Los valores de campos ingresados para cada tipo de alarma no aparecerán hasta que un tipo de alarma sea habilitado por un click en su respectivo cuadro de chequeo como se muestra más adelante: Both Seleccione este botón para mostrar ambos cuadros de diálogos details y alarms simultáneamente. El siguiente es un ejemplo como la pantalla se verá cuando un tagname "Memoria Real" está siendo definido y este botón se selecciona:
  • 9. 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...
  • 10. A 10 Tag Name: Ingrese el nuevo tagname en este campo. Los Tagnames pueden ser hasta un largo de 32 caracteres y el primer carácter debe ser A-Z o a-z y puede seguirse con A- Z, a-z, 0-9,! ¿, Q, -,? , #, $ , %, _ y &. Comment: Los Comentarios son opcionales, pero pueden ser mostrados en una Ventana de Alarma. Ingrese cualquier información opcional para documentar el tagname en este campo (hasta 50 - caracteres). (Estos comentarios pueden mostrarse en ventanas de alarmas.) Hacer click sobre este botón para acceder al Escoger tipo de Tag..., el cuadro de diálogo selecciona el tipo de tagname: Hacer click sobre este botón para acceder al cuadro de diálogo Escoger Grupo de Alarmas... para asignar el tagname a un grupo de alarmas específico o crear un nuevo grupo de alarma. Read only Seleccione este botón para restringir a WindowViewer para que solamente sea capaz de leer el valor del tagname. Read Write Seleccione este botón para permitir a WindowViewer leer/escribir de/desde el valor del tagname.
  • 11. 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.
  • 12. 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
  • 13. 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:
  • 14. 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
  • 15. 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
  • 16. 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.).
  • 17. 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.
  • 18. 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
  • 19. 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.
  • 20. 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.
  • 21. A 21 Vínculos de Colores de Objetos a Estados de Alarma El color de texto, línea, y llenado de un objeto pueden ser vinculados al estado de alarma de un Tagname, Group Name, o Group Variable. Hay dos tipos básicos de alarmas orientados al color. El primero es el Estado del tag de Alarma Discreta (Discrete Alarm) que puede usarse con cualquier tipo de variable. El segundo tipo es el Estado de Alarma Análoga (Analog Alarm) que es únicamente aplicable a las variables de tipo análogas. [Value Alarm Color Link] Provee la capacidad para seleccionar hasta cinco diferente colores basados en los límites de alarma definidos para ese tagname. [Deviation Alarm Color Link] Proveen la capacidad para seleccionar hasta tres diferente colores dependiendo de los estados de las alarmas de desviación que se definen para el punto. [Rate-Of-Change Alarm Color Link] Provee la capacidad para seleccionar dos colores diferentes dependiendo del estado de la razón de cambio de la alarma definido para el punto. Vínculos del Tamaño del Objeto Este vinculo se usa para variar la altura y/o ancho de un objeto según el valor de una expresión analógica. Provee la capacidad para controlar la dirección en que el objeto se agranda en altura y/o anchura seteando el Anchor (Top, Middle, o Botton) del vinculo. Ambos vínculos, de anchura y altura, pueden ser usados en el mismo objeto. Vínculos de Localización Este vinculo se usa para hacer que un objeto se mueva horizontalmente, verticalmente, o en ambas direcciones automáticamente con respecto a cambios en el valor de una expresión.
  • 22. 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).
  • 23. 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.
  • 24. A 24 3.4.- /Special/Security Los comandos de seguridad de este menú son usados para iniciar y cerrar la aplicación, cambiar passwords o contraseñas y para configurar la lista de usuarios, passwords y niveles de acceso. Cuando este comando es seleccionado aparece un menú secundario de comandos: La seguridad será discutida más adelante. 3.5.- Development! Este es un interruptor rápido que cambia a la aplicación WindowMaker. Este es habilitado en WindowMaker usando el comando SpecialConfigureWindowMaker. 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
  • 25. 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:
  • 26. 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.
  • 27. 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.
  • 28. 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.
  • 29. 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.
  • 30. 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.
  • 31. 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.
  • 32. 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:
  • 33. 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.
  • 34. A 34
  • 35. A 35
  • 36. A 36
  • 37. 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:
  • 38. 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)
  • 39. 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
  • 40. 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:
  • 41. A 41 Status=FileCopy(“C:*.TXT”, “C:BACKUP”,“Monitor”); donde: Status es un tag entero el cual puede ser 1, -1 ó 0. FileCopy() es ejecutado en segundo plano lo cual no interfiere en la operación de InTouch. El propósito del MonitorTag es permitir que el progreso de copiado sea monitoreado por una aplicación o un usuario. De esta forma, el usuario puede ser alertado de errores que puedan ocurrir DESPUES que el procedimiento sea inicializado. Este es diferente que el valor Status descrito recientemente, el cual indica si el procedimiento ha sido iniciado exitosamente. Una vez que el copiado ha sido exitosamente iniciado, el valor del MonitorTag es entonces asignado. El valor está en 0 mientras el procedimiento está aún en progreso. Es 1 cuando se completó exitosamente ó -1 si hay un error antes de que sea completado normalmente, SourceFile y DestinationFile son nombres de archivos. Sin embargo, si un archivo es copiado con FileCopy, el destino también puede ser un directorio, como muestra el siguiente ejemplo: FileCopy(“C: DATA.TXT”, “C: BACKUP”, “Monitor”); El tag Monitor será 1 cuando la copia sea realizada por completo. Si SourceFile contiene varios archivos, sin embargo, el destino DEBE ser un directorio. En caso contrario la función dará un código de error. Ejemplo: FileCopy(“C: *. TXT”, “C: BACKUP”, “Monitor”); El tag Monitor será 1 cuando la copia sea realizada por completo. Esta función es usada para borrar archivos indexados o innecesarios. FileDelete(Filename). Ejemplo:
  • 42. 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:BACKUPDATA.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.
  • 43. 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.
  • 44. 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:DATAFILE.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:DATAFILE.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:DATAFILE.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.
  • 45. 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:DATAFILE.TXT,0,MsgTag,0); La primera línea será leída desde el archivo C:DATAFILE.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.)
  • 46. A 46 El siguiente script escribirá la línea “This text, 3.1416, 5” a la primera línea de C:DATAFILE.TXT. “This text” es el actual valor en MyTag1, 3.1416 en MyTag2 y 5 en MyTag3: FileWriteFields(“C:DATAFILE.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:DATAFILE.TXT: FileWriteFields(“C:DATAFILE.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: DATAFILE.TXT”, -1,MsgTag,1);
  • 47. A 47 Esta instrucción escribirá el tag de mensaje MsgTag al final del archivo C: DATAFILE.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.
  • 48. 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)
  • 49. 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.
  • 50. 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
  • 51. 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
  • 52. 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”);
  • 53. 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 :
  • 54. 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:
  • 55. 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.
  • 56. A 56 Ejemplo: HTUpdateToCurrentTime(“Trend1”); Esta instrucción recupera y muestra el dato para el tag histórico “Trend1” a la hora exacta. Si fueran las 3:04 PM y el ancho de la tendencia es 60 segundos, la nueva hora de término será 3:04 PM. La nueva hora de inicio será 3:03 PM. Esta función calculará un nuevo ancho de gráfico y tiempo de inicio. Si el campo ScooterPosLeft de la tendencia es 0.0 y ScooterPosRight es 1.0, entonces el nuevo ancho del gráfico es igual al ancho antiguo dividido por dos. El nuevo tiempo de inicio será calculado de acuerdo al valor de LockString. HTZoomIn(TrendName, LockString) donde: TrendName es un tag HistTrend del nombre de la tendencia. LockString es una variable que representa el tipo de zoom. Puede ser uno de los siguientes: “StartTime”= Mantiene el tiempo de inicio igual al de antes del zoom. “Center” = Mantiene el tiempo central igual al de antes del zoom. “EndTime”= Mantiene el tiempo final al de antes del zoom. Si las posiciones de los scooters no están al final, el nuevo ancho del gráfico es el tiempo entre ScooterPosLeft y ScooterPosRight. En ese caso, el valor de LockString no se usa. El ancho mínimo del gráfico es 1 segundo. Las posiciones de los scooters serán para ScooterPosLeft=0.0 y para ScooterPosRight=1 después del zoom. Ejemplo: HTZoomIn(“Trend1”, “StartTime”);
  • 57. 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.
  • 58. 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);
  • 59. A 59 En esta instrucción, la información acerca del disco especificado por la letra del DriveLetter es asignada a ResultInteger. InfoType determina la información deseada en particular: Case1: Entrega el tamaño total del disco (en bytes). Case2: Entrega el espacio disponible en el disco (en bytes). Trigger ejecutará la función InfoDisk cada tiempo que el valor del Trigger cambia. Ejemplo: InfoDisk(“C”, 1, $Minute) será 233869345 (capacidad total) InfoDisk(“C”, 2, $Minute) será 3238935 (espacio disponible) En estos ejemplos, la función se ejecutará cada minuto y entregará el valor actual. Nota: Trigger puede ser algún tagname (no está limitado a un sistema de variables). Nota: Así como en otras funciones se usan caracteres simples, si el tag message contiene más de una letra y es usado en InfoDisk (como DriveLetter), sólo el primer caracter del tag será considerado. Esta función retorna la información sobre un archivo o subdirectorio específico en un computador (o equipo conectado en red). ResultInteger=InfoFile(FileName, InfoType, Trigger); En esta instrucción, la información acerca de un archivo especificado como FileName es retornada a ResultInteger. El FileName debe incluir la ruta completa del archivo, pero también puede incluir los caracteres comodines(*,?). InfoType determina la información en particular que se muestra a continuación: Case 1: ¿Existe el archivo?. Es 1 si el nombre del archivo es un archivo actual. Es 2 si el FileName es un directorio. Es 0 y la función no puede encontrar el archivo.
  • 60. 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:intouhview.exe”, 1, $Minute) será 1 (encuentra el archivo) InfoFile(“c:intouhview.exe”, 2, $Minute) será 634960(tamaño del archivo) InfoFile(“c:intouhview.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);
  • 61. 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
  • 62. 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.
  • 63. 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 WindowsSystem; 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);
  • 64. A 64 Esta función es usada para imprimir una ventana. Al usar esta función muchos reportes pueden ser encolados. Cuando se selecciona esta función, el View carga la pantalla en un área de memoria “off screen” o “fuera de pantalla”. Entonces el View espera 10 segundos para permitir a todas las variables DDE ser actualizadas. La ventana entonces en enviada a la impresora. El tiempo de espera que el View tiene puede ser controlado al agregar la siguiente línea al archivo INTOUCH.INI: PrintWindowWait=10000 donde: 10000 representa el número en milisegundos de espera. Las fuentes son impresas como fuentes, los objetos se imprimen como mapas de bits. Las ventanas con fondo blanco que contienen sólo letras se imprimen rápidamente. Las que contienen fondo de color y varios objetos toman un tiempo considerable en imprimir. Ejemplo: PrintWindow(WindowName, left, top, width, height, options) donde: WindowName es el nombre de la pantalla a imprimir. left número con punto flotante en pulgadas correspondiente al margen izquierdo. top número con punto flotante en pulgadas correspondiente al margen superior. width número con punto flotante en pulgadas que establece el ancho que no se imprime. Este por defecto puede ser 0, o puede tener un ancho específico. height número con punto flotante en pulgadas que establece el largo que no se imprime. Este por defecto puede ser 0, o puede tener un ancho específico. options puede ser 0 ó 1 y sólo se usan si width y height están en 0. Si options está en 1, la ventana se imprime con el aspecto de la razón del largo que es un entero múltiplo del tamaño de la ventana. Si options está en 0, la ventana se imprime con el aspecto más amplio que se ajuste a la página.
  • 65. 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
  • 66. A 66 Esta función activa teclas para otra aplicación. En la otra aplicación, las teclas aparecerán como si se hubiesen ingresado desde el teclado mismo. Esta capacidad puede ser usada para ingresar datos a la aplicación como también comandos a ella. La mayoría de las teclas del teclado pueden usadas en el SendKeys. Cada tecla se representa por uno o más caracteres tal como la A es para la letra A o {Enter} para la tecla Enter. Para especificar más de una tecla, se debe concatenar los códigos para cada caracter. Por ejemplo, para especificar el signo pesos ($) seguido por una b, ingresar $b. La siguiente lista muestra los sendkeys con sus teclas válidas para ser utilizadas por el teclado: BACKSPACE {BACKSPACE} o {BS}HELP {HELP} BREAK {BREAK} HOME {HOME} CAPSLOCK {CAPSLOCK} INSERT {INSERT} DELETE {DELETE} o {DEL} NUMLOCK {NUMLOCK} DOWN {DOWN} PAGE DOWN {PGDN} END {END} PAGE UP {PGUP} ENTER {ENTER} o { } PRTSC {PRTSC} ESCAPE {ESCAPE} o {ESC} RIGHT {RIGHT} F1 {F1}* TAB {TAB} * Igual con las demás teclas de función UP {UP} Para especificar que las teclas Shift, Ctrl y/o Alt sean presionadas mientras otra tecla lo está, la otra tecla debe estar en minúsculas y entre paréntesis. Ejemplo: Sendkeys”^(p)”; Si dos de esas teclas son usadas juntas, se utiliza un segundo par de paréntesis. Por ejemplo, para presionar Ctrl+Alt+p se debe ingresar: ActivateApp “Microsoft Excel”; SendKeys “^(%(p))”;
  • 67. A 67 El comando debe ser precedido por una ActivateApp para dirigir las teclas a la aplicación respectiva. Esta función modifica la aplicación o las porciones de un nombre o tópico de un DD·E Access Name durante la ejecución runtime lo cual permite la implementación de estrategias de respaldo (hot-backup) para InTouch. Ejemplo: SetDddeAppTopic(“DDEAccessName”, “Application”, “Topic”); El “DDEAccessName” es el nombre actual de la definición DDE Access Name a ser modificado. “Application” es el actual programa de la nueva aplicación, por ejemplo, genius; y “Topic” es el nuevo nombre a ser usado por el DDE Access Name. (Estos términos deben estar entre comillas como se muestra en el ejemplo). Si la nueva aplicación o tópico está en blanco, la aplicación o tópico no cambian. Ejemplo: SetDdeAppTopic(“PLC1”, “genius”, “”); Estos tres argumentos pueden ser variables de caracteres constantes o variables. Nota: Cuando se ejecuta SetDdeAppTopic, existe un retardo cuando se inicia como cuando se termina una conversación DDE. Durante este tiempo cualquier modificación al nuevo tópico se perderá. Esta función determina el signo de un valor(si es positivo, negativo o cero). ResulNumericTag=Sgn(InputnumericTag);
  • 68. 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
  • 69. 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á.
  • 70. 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”;
  • 71. 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);
  • 72. 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”.
  • 73. 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”