Manual Fusdata Ver. 1.1.x
Tabla de contenidos
Visualización a pantalla completa 10
Prueba de conexión con el Broker 16
Edición de los parámetros de conexión 16
Armando una nueva regla de datos 20
Ejemplo de nueva regla de datos 20
Nueva transformación de una variable 24
Ejemplo de transformación de una variable 27
Nueva imagen de fondo “Background” 28
Menú de opciones de proyecto 30
Nuevo texto “Multiline Text” 32
Indicadores de cambio de color 51
Tanques o barras verticales 53
Interacciones entre “Button” y “Text Box” 68
1-Poner un valor en un Text Box: 68
2-Aumentar o disminuir el valor de un Text Box: 68
3-Agregar el contenido de un “Text Box” al mensaje para enviar: 69
Convenciones de los mensajes por Chat 73
Introducción
Fusdata es un Cliente MQTT modo TCP de interface gráfica, para S.O. Windows, que permite crear pantallas o escenas estilo Scada para observar de forma conveniente y didáctica todas aquellas variables que se transmiten desde dispositivos localizados en cualquier parte del mundo en tiempo real y disponer botones y controles que envían datos y comandos hacia dichos equipos.
Cada pantalla de control se denomina “Proyecto” y cada dispositivo controlado se denomina “Terminal” o “Sender”.

Multi-Instancia:
Fusdata puede ejecutarse en múltiples instancias de Windows, lo que permite la visualización simultánea de más de un proyecto en una misma computadora. Cada ventana contendrá un proyecto particular.
Multi-Terminales:
Cada proyecto puede recibir datos de múltiples clientes MQTT denominados “Terminales”.
Multi-Variables:
Cada equipo terminal puede reportar una o más variables simultáneamente.
Los valores de las diferentes variables a controlar son enviados regularmente por cada terminal como una trama de caracteres a Fusdata con el formato: “Datos en serie separados por un carácter especial”. Esta trama de datos es configurable.
Un ejemplo de cómo deben ser enviados los datos por los terminales es el siguiente:

Donde:
1- Tipo de trama. Es una secuencia configurable de caracteres que permite identificar la trama. En el ejemplo &&&&E3.
2- Identificación del equipo terminal. Puede ser cualquier nombre de 4 a 8 caracteres preferentemente. En el ejemplo 00E002.
3- Datos en serie separados por un carácter especial. Siempre deben ser datos numéricos y en este ejemplo pueden observarse que son 9 valores.
4- Carácter de finalización (Siempre “~” Ascii #126).
El carácter especial configurable que en este ejemplo separa todos los datos es “Punto y coma” Ascii #59.
De esta manera un desarrollador puede diseñar o configurar un terminal “Sender” que reporte periódicamente una serie de datos y se mostrarán en la pantalla de Fusdata de la forma más elegante y profesional. Los equipos remotos “Senders” pueden tener comunicación WiFi, Celular. Ethernet, etc. Pueden ser placar Arduino, Esp8266, Esp32, Raspberry Pi, desarrollos especiales, etc.

Características principales
- Cliente MQTT TCP para S.O. Windows.
- Interface gráfica Drag and Drop.
- MQTT v3.1.1.
- MQTT v5.0.
- MQTT QoS=0.
- MQTT Subscribe en tópico Root/Sub-Topic configurables.
- MQTT Publish en tópico Root/Sender ID.
- MQTT TLS 1.1 y 1.2 con certificado del lado del servidor.
- MQTT Keep Alive configurable.
- Trama de datos de entrada configurable.
- Senders ilimitados.
- Variables ilimitados.
- Variables pueden transformarse según funciones configurables.
- Registro local en formato .CSV
- Ventana de Chat para envío y recepción de comandos de configuración formato texto.
- Elemento Drag and Drop Button configurable.
- Elemento Drag and Drop SVG Gauge/Indicator configurable.
- Elemento Drag and Drop Text configurable.
- Elemento Drag and Drop Chart configurable.
- Elemento Drag and Drop GIF/PNG configurable.
- Elemento Drag and Drop Text Box configurable.
- Toma de captura en formato .JPG configurable.
Requisitos del sistema
Requisitos mínimos x64:
Procesador: 2 GHz.
RAM: 4 GB.
Espacio en disco duro: 16 GB.
Pantalla: 1366×768 px.
O.S.: Windows 7 SP1 64b + .NET Framework 4.7.2 runtime.
Conexión a Internet.
Recomendado 2 x64:
Procesador: 3.3 GHz.
RAM: 8 GB.
Espacio en disco duro: 240 GB.
.NET Framework 4.7.2 runtime.
Pantalla: 1920×1080 px.
Cada instancia de Fusdata con un proyecto vacío consume aproximadamente 30MB de memoria y entre 0 y 1% de recursos de CPU en régimen. Fusdata está diseñado para un consumo mínimo de recursos y se estima que pueden correr 50 proyectos con un sistema recomendado 2. El resultado final dependerá de la complejidad de los proyectos y del flujo de datos.
Sistema de archivos
El archivo instalador de Fusdata creará la carpeta:
C:\Program Files\Fusdata x64\..
Al iniciar la aplicación por primera vez se creará el siguiente grupo de carpetas de apoyo en la ruta:
C:\_Fusdata\..

Carpeta “Extras”
En esta carpeta se pueden guardar manualmente aquellos archivos de personalización de las interfaces, concretamente se trata de los siguientes archivos:
Fusdata bkg.jpg Imagen que se muestra en la pantalla de inicio de Fusdata.
Fuspanel bkg.jpg Imagen que se muestra como banner en la aplicación Fuspanel.
Remplazando estos archivos por versiones personalizadas homónimas se puede conseguir que las interfaces muestren logos o combinaciones gráficas a gusto del cliente.
Carpeta “Logg_x”
En esta carpeta se genera el registro de datos en archivos de texto con extensión .CSV de las variables con sus valores originales, tal cual son enviados por los terminales.
Carpeta “Logg_y”
En esta carpeta se genera el registro de datos en archivos de texto con extensión .CSV de las variables con sus valores originales o transformados si es que existe tal transformación, que son enviados por los terminales.
Carpeta “Projects”
En esta carpeta se pueden guardar loa proyectos de Fusdata, es opcional.
Un proyecto se graba como un archivo con extensión .HTM y una carpeta asociada donde se alojan todos los archivos auxiliares necesarios para el funcionamiento del proyecto. Por ejemplo, un proyecto llamado “Pressure.htm” se ve como sigue:

Se observa además un archivo con extensión .OLD. Este archivo es una copia del archivo homónimo de extensión .HTM que se genera automáticamente al abrir el proyecto. Se considera una copia de seguridad del proyecto, y de ser necesario puede remplazar al archivo original.
Carpeta “Resources2”
En esta carpeta se almacenan todos aquellos archivos incluidos en el paquete de instalación de Fusdata, considerados recursos como por ejemplo archivos .SVG o fondos de proyecto.
Carpeta “Screenshots”
En esta carpeta se guardan los archivos .JPG que se producen al generar una captura de pantalla del proyecto, ya sea manual o automática.
Carpeta “Sequences”
En esta carpeta se guardan los archivos de arranque automático del programa lanzador Fuspanel.
Ventana de inicio
Al iniciar el programa se abrirá una ventana como la siguiente:

Donde:
1- Versión de Fusdata.
2- Lista de proyectos abiertos recientemente.
3- Gráfico lateral personalizable.
4- “Clear” Borra la lista de proyectos recientes
5- “New” Inicia un nuevo proyecto vacío.
6- “Open” Abre el explorador de archivos para buscar un proyecto guardado.
7- “Color” Cambia la combinación de colores de la interface.
Puede simplemente iniciar un nuevo proyecto pulsando “New”, luego puede grabar el proyecto con cualquier otro nombre.
O puede cargar un proyecto reciente haciendo clic sobre el nombre en la lista 2.
Pulse “Clear” para borrar la lista de archivos recientes 2.
Pulse “Open” si desea buscar y cargar un proyecto que no figure como reciente. Se abrirá un explorador de archivos.
Pulse “Color” si desea modificar la combinación de colores de la interface.
Crear “Nuevo Proyecto”
Si usted ha elegido iniciar un nuevo proyecto, aparecerá una ventana similar a la siguiente:

Donde
1- Área de trabajo.
2- Nombre y ubicación del proyecto.
3- Área de conexiones con servidores Broker MQTT.
4- Lista de terminales conectados.
5- Lista de datos recientes llegados desde el terminal seleccionado.
6- Solapa de Pseudónimos o Nicknames.
7- Botón de cierre de todo el panel lateral. (Puede utilizarse “Ctrl + 1” para abrir y cerrar).
8- Menú de proyecto (Clic botón derecho del mouse sobre el área de trabajo 1).
9- Botón Play-Stop para dar Inicio y Parada al proyecto.
10- Botón de captura de pantalla.
11- Ventana de Chat. Se habilita desde el menú 8 o con CTRL+3.
12- Coordenada X del puntero del mouse en el área de trabajo en pixeles.
13- Coordenada Y del puntero del mouse en el área de trabajo en pixeles.
14- Ancho W del área de trabajo visible actual en pixeles.
15- Altura H del área de trabajo visible actual en pixeles.
16- Botón Grid = 5 pixeles.
17- Botón Grid = 10 pixeles. Se muestra seleccionado.
18- Botón Grid = 20 pixeles.
19- Coordenada x del elemento seleccionado en pixeles.
20- Coordenada y del elemento seleccionado en pixeles.
21- Ancho w del elemento seleccionado en pixeles. Es editable.
22- Altura h del elemento seleccionado en pixeles. Es editable.
23- Botón para redimensionar la ventana de la aplicación. Pulse y arrastre.
24- Ventana de observación de datos de entrada. Se observan las tramas de datos provenientes del Broker MQTT tal como llegan a la puerta de entrada. (Puede utilizarse “Ctrl + 2” para abrir y cerrar).
25- Botón que habilita ver en 24 la trama completa MQTT o solo la trama de datos propiamente dicha.
26- Botón “Pausa” en 24 para poder observar los datos con detenimiento. No pone en pausa la aplicación, solo lo que muestra 24.
27- Botón “Clear” para borrar el contenido de 24.
Combinaciones de teclas
Ctrl + 1 Para maximizar o restablecer el espacio de trabajo.
Ctrl + 2 Para abrir y cerrar la ventana 24 de observación de datos de entrada.
Ctrl + S Para guardar el proyecto.
Ctrl + D Para duplicar el elemento seleccionado.
Ctrl + + Para aumentar proporcionalmente el tamaño del elemento seleccionado.
Ctrl + – Para disminuir proporcionalmente el tamaño del elemento seleccionado.
Ctrl + Right Para aumentar el tamaño del elemento seleccionado solo en el eje X.
Ctrl + Left Para disminuir el tamaño del elemento seleccionado solo en el eje X.
Ctrl + Down Para aumentar el tamaño del elemento seleccionado solo en el eje Y.
Ctrl + Up Para disminuir el tamaño del elemento seleccionado solo en el eje Y.
Mouse Wheel Para desplazar el fondo de proyecto verticalmente.
Ctrl + Mouse Wheel Para desplazar el fondo de proyecto horizontalmente.
Ctrl + Enter Para enviar lo que se ha escrito por ventana de Chat.
Ctrl + R Para repetir el envío por Chat.
Alt + Right Para mover el elemento seleccionado hacia la derecha.
Alt + Left Para mover el elemento seleccionado hacia la izquierda.
Alt + Up Para mover el elemento seleccionado hacia arriba.
Alt + Down Para mover el elemento seleccionado hacia abajo.
Menú de proyecto
Al hacer clic con el botón derecho del mouse sobre el fondo del área de trabajo aparece el menú de proyecto:

En este menú pueden observarse los siguientes elementos:
“New/Open” Botón que permite reiniciar la aplicación, por lo que desde la pantalla de inicio se puede optar iniciar un nuevo proyecto con “New” o abrir un proyecto existente con “Open”.
“Save” Botón que guarda el proyecto con nombre y ubicación actual.
“Save As” Botón para guardar el proyecto con un nuevo nombre y ubicación.
“EXIT” Sale de la aplicación.
“Add >” Botón para mostrar el menú de “Sumar Nuevo”.
“Paste” Botón para pegar un elemento previamente copiado. Según la naturaleza del nuevo elemento la ubicación puede cambiar.
“Chat” Botón para abrir la ventana de chat.
“Options” Muestra el menú de opciones de proyecto.
“Help” Abre explorador web para mostrar la página de ayuda.
PLAY BUTTON Permite iniciar el proyecto al conectar con el Broker MQTT y recibir datos para mostrar en el área de trabajo. Una vez iniciado el proyecto este botón pasa a ser STOP BUTTON.
SCREENSHOT Genera una captura de pantalla inmediata de la pantalla tal como se ve.
ATENCIÓN:
Fusdata no incorpora un aviso del tipo “¿DESEA GUARDAR EL PROYECTO ANTES DE SALIR?”.
Queda a criterio del usuario de Fusdata la decisión de guardar el proyecto cada vez que lo crea conveniente, se recomienda hacerlo cuando se hayan producido cambios de diseño del proyecto. Se recomienda también realizar copias de resguardo de los proyectos.
Menú “Add New”
Con solo dos clic se pueden agregar distintos elementos al proyecto, seleccione “Add >” del menú de proyecto y seleccione el nuevo elemento que se agregará al proyecto de Fusdata:

En este menú pueden observarse los siguientes elementos:
“Connection” Botón para agregar una nueva conexión con un Broker MQTT.
“Entry Parse Rule” Botón para agregar una nueva regla de datos de entrada. Permite definir el formato que deberá tener la trama de datos que llega desde un terminal remoto.
“SVG Graphic” Botón para agregar un nuevo gráfico vectorial que responderá activamente a los valores y datos a controlar.
“Chart” Botón que permite agregar un nuevo gráfico cartesiano para una variable.
“Multiline Text” Botón para agregar un texto en pantalla que responderá a los valores de las variables a controlar.
“Background” Botón que permite agregar una imagen y/o el color de fondo.
“Button” Elemento que al hacer clic enviará un mensaje o comando hacia un terminal.
“GIF/PNG Graphic” Botón que permite agregar un gráfico con animaciones o transparencias que puede responder al valor de una variable a controlar.
“Text Box” Botón que permite agregar una caja de texto para ingresar fácilmente valores o comandos para enviar a un terminal.
Visualización a pantalla completa
Para optimizar el área de trabajo en cuanto a sus dimensiones, se puede maximizar su tamaño mediante la combinación de teclas “Ctrl + 1”, de esta manera cuando ya no es necesario el trabajo de edición y solo es relevante la observación del proyecto, se ocultan tanto la solapa izquierda y la barra inferior.

Grilla de pantalla
Cada elemento que se agrega al espacio de trabajo puede arrastrarse y ubicarse como se desee, pero siempre ajustado a la grilla de pantalla. Puede seleccionar un valor de 5, 10 o 20 pixeles para la grilla desde los botones ubicados en la barra inferior de Fusdata. Si el botón aparece marcado con “>” quiere decir que ha sido seleccionado, luego si aparece en un tono diferenciado quiere decir que la grilla en pantalla está visible.
Por ejemplo Grilla de 10 pixel visible:

Por ejemplo Grilla de 10 pixel no visible:

Entonces, la grilla en pantalla siempre está presente, pero puede ser visible o invisible. Se puede elegir el color de la grilla desde el menú de opciones.
Modelo MQTT

La Figura muestra cómo se organiza el tráfico de datos entre terminales y Fusdata utilizando un Broker MQTT.
Cada cliente MQTT establece conexión con el Broker MQTT, para lo cual se necesitan programar los siguientes parámetros tanto en Fusdata como en los terminales:
- Url del Broker. Puede ser tanto un dominio como una dirección IP.
- Puerto de conexión. Generalmente 1883, pero depende del protocolo y de la configuración del Broker.
- ID de Cliente.
- Usuario.
- Password.
Estos dos últimos parámetros pueden obviarse si el Broker acepta conexiones anónimas. El ID de Cliente es un código alfanumérico que servirá para identificar la conexión y puede ser aleatorio. Para más información se puede visitar https://mqtt.org
Fusdata conectará con el Broker y quedará a la espera de la llegada de datos desde el tópico “Root/Sub-topic” al que estará suscripto. Los datos deberán estar organizados en una trama tal como se haya convenido a la hora de diseñar el sistema. O sea, la forma de la trama de datos es un criterio de diseño de los terminales.
Para ejemplificar esto digamos que un sistema de monitoreo de humedad del piso, probablemente solo requiera del envío de pocas variables por terminal, podría ser humedad, nivel de batería y nivel de señal WiFi, solo tres variables. Por otro lado, un sistema de monitoreo de estaciones de re-bombeo de agua necesitaría de la transmisión de muchas variables como parámetros de energía, marcha de las bombas, RPM, presiones, caudales, etc.
Cada terminal se suscribirá a un tópico “Root/Sender ID” para recibir datos desde Fusdata y tal como se muestra en la figura los terminales enviarán datos hacia Fusdata a través del tópico “Root/Sub-topic”.
Por ejemplo, si un equipo terminal tuviera como identificación un número de serie “0001A” y perteneciera a una serie de terminales instalados en un campo denominado “CampoH1”, entonces dicho equipo terminal debiera suscribirse al tópico “CampoH1/0001A”.
Tópico raíz
La existencia de un tópico raíz permite la organización de determinado grupo de terminales y proyectos de Fusdata según tema, localización, modelos, tipo de variables monitoreadas, etc.
Los parámetros “Root” y “Sub-topic” se configuran al momento de crear una nueva “Conexión” en Fusdata.
Nueva “Connection”
Para crear una nueva conexión en un proyecto de Fusdata debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde seleccionará “Connection”:


Automáticamente aparecerá la solapa de propiedades de conexión:

Donde:
1- Casilla de habilitación. Permite crear la conexión y habilitar/deshabilitar según se requiera.
2- Dirección Url del Broker MQTT.
3- Puerto de conexión al Broker MQTT.
4- “Client ID” Identificación del cliente, única para cada conexión, por lo que cada proyecto de Fusdata que se conecte al mismo servidor y con las mismas credenciales debe tener un “Client ID” diferente. Puede ser muy útil la generación aleatoria de nombres de cliente habilitando la casilla “RND”, se creará un nombre aleatorio al momento de conectar con el Broker.
5- “User” Nombre de usuario, se obtiene de la gestión de acceso al Broker.
6- “Password” Clave de acceso, también se obtiene de la gestión de acceso al Broker. 7- Tanto “User” como “Pasword” pueden ignorarse si el acceso al Broker es libre.
7- “Keep Alive” Este parámetro indica el tiempo medido en segundos, transcurridos los cuales se considera desconectado un terminal si es que no han llegado a Fusdata datos provenientes de dicho terminal. Este valor está relacionado con el valor esperado de refresco de datos desde los terminales, lo cual es una variable de diseño de los terminales.
8- “Connection Name” Es el nombre con el que se verá señalada la conexión en el área de conexiones (Fig. 2 B3).
9- “Topic Root” O simplemente “Root”. Es el nombre del tópico Raiz.
10- “Sub-topic” Es el nombre que se establece para conformar el tópico final “Root/Sub-topic” al que se subscribe Fusdata para recibir datos desde los terminales.
Luego las siguiente casillas de habilitación indican:
- Casilla “Fut” Indica un protocolo de comunicación propietario distinto de MQTT.
- Casilla “MQTT 3.1.1” Indica habilitar protocolo de comunicación MQTT versión 3.1.1. Es la versión más popular. Debe consultar con la información del Broker para determinar si corresponde.
- Casilla “MQTT 5.0” Indica habilitar protocolo de comunicación MQTT versión 5.0. Es la versión más reciente del protocolo MQTT. Debe consultar con la información del Broker para determinar si corresponde.
- Casilla “Tls 1.1” Indica habilitar protocolo seguro de comunicación sobre Tls versión 1.1 con certificado del lado del servidor.
- Casilla “Tls 1.2” Indica habilitar protocolo seguro de comunicación sobre Tls versión 1.2 con certificado del lado del servidor.
Una vez ingresados todos los datos necesarios se debe hacer clic en “Accept” y se creará una nueva conexión de manera efectiva, lo que quedará de manifiesto al agregar un ítem en el área de conexiones tal como:

Donde:
1- Es un nuevo ítem que aparece en la lista de conexiones.
2- Es un carácter “E” que indica que dicha conexión se encuentra habilitada. Si no está habilitada la conexión no aparece ningún caracter.
3- Carácter y marco de color que indica el estado de la conexión:
Caracter “D” con marco rojo indica DESCONECTADO.
Caracter “C” con marco verde indica CONECTADO.
4- Texto del “Connection Name” Nombre de la conexión.
Prueba de conexión con el Broker
Obviamente al crear por primera vez la conexión esta permanecerá en estado desconectado “D”. Para hacer una prueba de conexión solo tiene que hacer clic en el botón “PLAY” del menú de proyecto.
Si la conexión es exitosa entonces se observará el estado de conexión pasará a “C” y marco color verde. Para detener la conexión ahora haga clic en el botón “STOP” del menú de proyecto.
Edición de los parámetros de conexión
Para cambiar cualquiera de los parámetros debe hacer clic con el botón derecho del mouse sobre el nombre de la conexión y aparecerá un pequeño menú donde debe hacer clic en “Properties”.

El mismo menú emergente le dará opción de copiar y eliminar la conexión. Al copiar la conexión podrá pegar una nueva conexión en cualquier proyecto de otra instancia de Windows, mediante la opción “Paste” del menú de proyecto.
Al hacer clic en “Properties”, inmediatamente se abrirá la solapa de propiedades de conexión permitiendo la edición de cualquier parámetro y para hacer efectivos los cambios debe hacer clic en “Accept”.
Keep Alive y desconexión
Cada equipo terminal debe reportar datos regularmente cada un tiempo pre-establecido en su programación. Este tiempo es una característica del sistema y dependerá de la naturaleza de las variables, de la cantidad de terminales que pueden estar conectados simultáneamente, de la cantidad de variables que reporta cada uno, de la capacidad de procesamiento de la computadora, etc. Por ello el tiempo entre reportes tendrá un valor de compromiso que resultará de evaluar la necesidad del mínimo tiempo necesario para que el valor de la variable se considere actualizada y confiable y el máximo tiempo de respuesta y recursos del sistema.
También debe tenerse en cuenta que la generación de registros sobre abundantes ocupará con el transcurrir del tiempo más espacio de almacenamiento y mayor tiempo y recursos del sistema.
El parámetro de conexión “Keep Alive” determina el máximo tiempo de espera por datos para cada terminal remoto, transcurrido el cual de no haberse recibido datos se considera desconectado.
El mejor valor de “Keep Alive” según nuestra experiencia será 2.5 veces el tiempo programado para reportarse para los terminales.
Por ejemplo, si los equipos terminales se reportan cada 60 segundos, entonces el valor “Keep Alive” para esa conexión recomendado será 150 segundos.
Una variable mantiene el último valor hasta que se actualiza con la llegada de un nuevo valor. Si pasa mucho tiempo sin actualización de la variable se puede incurrir en un gran error de asumir que la variable tiene un valor real, pero lo que ha ocurrido en realidad es que el equipo terminal no está fehacientemente conectado.
Si la desconexión de un terminal se detecta a tiempo todas las variables relacionadas con dicho terminal toman un valor “Null” y no se mostrarán con valores desactualizados.
Solo por rigurosidad, se considera mejor desconocer el valor de una variable a tomar como válido un valor erróneo.
Como ejemplo de lo expuesto se muestran los siguientes gráficos “Chart” en los que pueden observarse la presión de entrada, la presión de salida y las RPM de una bomba de agua en un acueducto. Los cortes de conexión pueden verse como zonas faltantes de datos. En este caso la cantidad de cortes es prácticamente irrelevante.

En otros casos las desconexiones pueden ser un problema más grave y pueden deberse a deficiencias en el servicio de Internet, bajo nivel de señal, fallas de alimentación, etc. En la figura siguiente se muestra lo que se considera un sistema “No viable”.

Nueva “Regla de Datos”
Como ya se ha mencionado, los datos provenientes de los equipos terminales deben llegar a Fusdata de una manera organizada como “Datos en serie separados por un carácter especial”. Como también se ha hecho referencia antes, la cantidad de variables incluidas en una trama de datos dependerá de las características de diseño de los equipos terminales. Es importante tanto definir el tipo, como el orden en que se hacen presentes las variables en la trama de datos.
La trama se compone de caracteres imprimibles, o sea Ascii #32 al #126.
Para que Fusdata pueda adaptarse a cada tipo de terminal, se pueden definir “Reglas” que determinan como se decodificará la trama entrante de datos.
Para crear una “Nueva Regle de Datos” en un proyecto de Fusdata debe seleccionar Add > en el menú de proyecto, y aparecerá el menú de “Add New” donde seleccionará “Entry Parse Rule”:


Inmediatamente aparecerá la siguiente ventana denominada Constructor de Reglas de Datos:

Donde:
1- “Header” Cabecera, define el tipo de trama puede contener de 2 a 8 caracteres y deben ser tales que no se encuentren en otra parte de la trama de datos. Por ejemplo “&&&&E3”. Permite identificar donde comienza y qué tipo de trama es.
2- “Separator” Es un carácter especial que hace de separador entre los distintos campos de la trama. Se utiliza generalmente punto y coma Ascii #59.
3- «Sender ID” Identificación del equipo terminal. Puede ser cualquier nombre de 4 a 8 caracteres preferentemente.
4- “Data” Es un espacio de trabajo donde se pueden agregar uno a uno los tipos de datos que conformarán la trama completa.
5- Área donde se puede observar la trama terminada definitiva.
6- Menú desplegable que permite elegir el tipo de dato a agregar a la trama en construcción.
7- “Add” Agrega el tipo de dato a la trama elegido en 6.
8- “Remove last” Elimina el último tipo de dato agregado a la trama en construcción.
9- “Remove all” Elimina toda la secuencia de tipos de datos de la trama en construcción.
10- Agrega la trama de de datos en construcción al proyecto como definitiva.
En el campo “Sender” deben colocarse tantos caracteres como los vaya a tener el código de identificación de cada terminal y se supone que siempre este código tendrá la misma cantidad de caracteres. Por ejemplo se podría poner “XXXXXX” reservando seis lugares para códigos que podrían ser números del “000000” al “999999”. Los códigos no se asumen como números, pueden ser códigos alfanuméricos.
Pueden observarse además diversos botones que permiten agregar tramas completas de ejemplo, de tal manera que puedan agregarse tramas pre-establecidas de ejemplo que se utilizan en diversos tutoriales de Fusdata. Dependen de la versión de Fusdata.
Tipos de datos
Como puede verse en el menú desplegable del Constructor de Reglas de Datos existen seis posibles tipos de números que pueden formar parte de la trama de datos:

“Bln” Tipo Boolean 1 caracter 0 a 1.
“Byt” Tipo Byte 2 caracteres 00 a FF (0 a 255)
“Wrd” Tipo Word 4 caracteres 0000 a FFFFF (0 a 65535)
“Lng” Tipo Long 8 caracteres 00000000 a FFFFFFFF (0 a 4294967295)
“Flt” Tipo Float 8 caracteres IEEE 754
“Lit” Tipo Literal 13 caracteres como máximo se usa punto decimal
Los tipos “Byt”, “Wrd” y “Lng” deben ser enviados en formato hexadecimal y los caracteres que pueden estar formados por letras minúsculas o mayúsculas, 0-f ó 0-F.
El tipo “Lit” es un número compuesto por los caracteres 0 al 9 (Ascii #48 al -#57), punto decimal (Ascii #46) y signo negativo (Ascii #45), con una longitud total no mayor a 13 caracteres.
Armando una nueva regla de datos
Para que un proyecto de Fusdata incorpore una nueva regla de datos se debe abrir el constructor y completar los campos “Header”, “Separator” y “Sender ID”.
Luego se seleccionará en el menú desplegable 6 el tipo de dato deseado y mediante el botón “Add” se añadirá a la trama en construcción. Se observará como se forman automáticamente los campos de datos con distintos nombres que hacen referencia al tipo de dato y a un número.
En todo momento puede eliminarse la última o todas las variables introducidas con los botones “Remove last” y “Remove all”.
Una vez terminada la trama debe grabarse en el proyecto con el botón “Add this frame to Project”, y podrá verse la nueva trama en el campo 5 del constructor.
Ejemplo de nueva regla de datos
Por ejemplo, se desea agregar al proyecto una nueva regla de datos en las que se sabe que los equipos terminales monitorean distintas cámaras frigoríficas siendo las variables a controlar las siguientes:
Presencia de energía valores 0 o 1
Puerta abierta valores 0 o 1
Refrigeración en marcha valores 0 o 1
Protección por baja tensión valores 0 o 1
Señal de WiFi valores 0 a 100
Número de paradas valores 0 a 20000
Horas de marcha valores 0 a 100000
Temperatura en gC valores -100 a 100
Variable extra valores desconocidos
Al momento de diseñar la manera en que un equipo terminal envía los datos se define entonces la forma de la trama que luego se añadirá a un proyecto de Fusdata.
Podría pensarse entonces que el diseñador del terminal ha definido que los terminales tendrán una identificación “00E000” a “00E099” y que el orden de las variables será el que se definió más arriba.
Quedará una trama de datos como la siguiente:
&&&&E3;XXXXXX;Bln00;Bln01;Bln02;Bln03;Byt00;Wrd00;Lng00;Flt00;Lit00;~
Donde:
“&&&&E3” Es un nombre que se le asigna a esta trama. Podría ser $$$T01 o FRAME1, etc.
“XXXXXX” Es el lugar de seis caracteres que se reserva para el “Sender ID”.
“Bln00” Es la variable tipo Boolean asignada a “Presencia de energía”.
“Bln01” Es la variable tipo Boolean asignada a “Puerta abierta”.
“Bln02” Es la variable tipo Boolean asignada a “Refrigeración en marcha”.
“Bln03” Es la variable tipo Boolean asignada a “Protección por baja tensión”.
“Byt00” Es la variable tipo Byte asignada a “Señal de WiFi”.
“Wrd00” Es la variable tipo Word asignada a “Número de paradas”.
“Lng00” Es la variable tipo Long asignada a “Horas de marcha”.
“Flt00” Es la variable tipo Float asignada a “Temperatura en gC”.
“Lit00” Es la variable tipo Literal asignada a “Variable extra”.
Entonces una trama así deberá ser tanto la que envíen los terminales como la que debe ser agregada a un proyecto de Fusdata.
Una vez agregada al proyecto de Fusdata se verá así en el constructor:

Nótese que para este ejemplo en particular el constructor incluye un botón “Frame E3” que permite crear la trama de una sola vez.
Nótese también que existe un tilde de habilitación de la trama.
En todo momento es posible acceder a Modificar, copiar o remover una trama de datos, haciendo clic con el botón derecho del mouse sobre la trama en el constructor.

Llegada de datos
Una vez definida una o más reglas de datos de entrada en un proyecto ya se puede recibir datos reales provenientes de los terminales, para lo cual solo hay que poner el proyecto en estado “PLAY” y esperar a que lleguen los datos.
A los efectos de observar todo tipo de datos llegan a Fusdata por las conexiones habilitadas se puede hacer visible la “Ventana de observación de datos de entrada” con la combinación de teclas “Ctrl + 2” en la parte inferior de la pantalla.

Una a una puede verse aparecer las tramas de datos que se acomodan como renglones en la lista. A la izquierda de cada renglón puede verse un número (en este caso “0”) que indica a cual conexión corresponde esa trama en particular. Luego también puede verse la hora, minutos y segundos de llegada. Con la activación del botón “Only Data” puede esconderse la parte correspondiente al protocolo MQTT y observar solamente el Payload, que es la trama de datos propiamente dicha.
Fusdata al recibir los datos que se corresponden con una “Regla de datos” conocida, reconocerá a los terminales y creará una lista según el orden de aparición:

Para cada terminal reconocido Fusdata también creará una lista de todas las variables correspondientes con su nombre y valor.
Solo con hacer clic en el nombre de cualquier terminal se observarán vas variable de ese terminal en particular.
IMPORTANTE: Cualquier variable que llega a Fusdata queda identificada por su terminal de procedencia y su nombre de variable.
Uso de Nicknames
Cada terminal se identifica por si código de identificación “Sender ID” que puede ser único y estar grabado en el firmware del propio terminal.
Como cada variable en Fusdata está referenciada a su terminal de origen, puede ocurrir que un proyecto ya no sea funcional si un terminal tiene un desperfecto y debe ser remplazado. O sea si en el proyecto se monitorean variables referenciadas a determinado terminal que ya no está presente, entonces el proyecto quedará desactualizado y habrá que editar una a una aquellas características de proyecto donde intervenga la variable obsoleta. Ésta tarea puede ser tediosa e inducir a errores.
Para evitar esta situación puede transformarse el “Sender ID” de un terminal a un Nickname según una tabla de correspondencia ubicada en la solapa “Nicknames”, de tal manera que en el proyecto de Fusdata las variables quedarán referenciadas al Nickname de un terminal y no a su real ID. Luego si un equipo terminal sufre algún desperfecto y es remplazado bastará con actualizar la tabla de Nicknames.
Para seguir con el ejemplo del apartado anterior, podríamos definir una tabla de Nicknames como la siguiente:

Entonces, según esta nueva tabla, los códigos de identificación de cada terminal se transformarán quedando:

Referenciar las variables de un proyecto a los Nicknames de los terminales y no a sus códigos ID reales puede ser muy útil también a la hora de confeccionar proyectos genéricos que servirán luego para diferentes terminales, ya que un solo proyecto puede ser guardado con un nombre cualquiera y luego al modificar la tabla de Nicknames para el uso real puede grabarse con un nombre distinto y ya tendremos un nuevo proyecto adaptado al uso real.
Nueva transformación de una variable
Los equipos terminales están programados para recopilar información del entorno y enviarla al Broker como una trama de datos tal como se señaló en el capítulo anterior. Por ejemplo un terminal puede tener una entrada analógica a la que se conecta un sensor analógico de nivel de líquidos, y el valor obtenido será un nivel de tensión que arroja el sensor que puede estar en V o mV y al transmitir esta valor corresponderá al proyecto de Fusdata transformar este nivel de tensión en nivel de líquido y en la unidad deseada.
Para llevar a cabo éste tipo de transformaciones de las variables de entrada se puede introducir una función matemática y=f(x) siendo x el valor de la variable de entrada tal cual se presenta en la trama de datos.
Cada una de las variables de cada uno de los terminales puede transformarse mediante una función particular. Para configurar esta función se debe hacer clic sobre la variable correspondiente y luego clic sobre “Properties”:

Inmediatamente se podrá ver una ventana de propiedades de la variable:

Donde:
C1- Código de identificación “Sender ID” del terminal cuya variable se desea transformar.
C2- Nombre original de la variable a transformar.
C3- Lista completa de todas las variables disponibles correspondientes al terminal seleccionado.
C4- Último valor de la variable al momento de abrir la ventana de propiedades de la variable.
C5- Campo de texto de edición de la función de transformación.
C6- Campo de texto de edición de la unidad de la variable luego de transformada.
C7- Campo de texto de edición del nuevo nombre de la variable.
C8- Valores que puede tomar “y” dados los valores arbitrarios de “x” para la función de transformación.
Función de transformación
En C5 se observa por default y=x pero puede escribirse una función más compleja utilizando los siguientes caracteres:
Operadores:
+ Suma Ej. y=x+10
– Resta Ej. y=x-1
* Multiplicación Ej. y=x*10.5
/ División Ej. y=x/3
^ Exponencial Ej. y=x^2
Funciones:
sqrt Raiz cuadrada Ej. y=sqrt(x)
sin Seno Ej. y=sin(x)
cos Coseno Ej. y=cos(x)
tan Tangente Ej. y=tan(x)
asin Arco seno Ej. y=asin(x)
acos Arco coseno Ej. y=acos(x)
atan Arco tangente Ej. y=atan(x)
cotan Cotangente Ej. y=cotan(x)
acotan Arco cotangente Ej. y=acota(x)
sinh Seno hiperbólico Ej. y=sinh(x)
cosh Coseno hiperbólico Ej. y=cosh(x)
tanh Tang. hiperbólica Ej. y=tanh(x)
exp e elevado a la x Ej. y=exp(x)
ln Log. base e Ej. y=ln(x)
log Log. base 10 Ej. y=log(x)
abs Valor absoluto Ej. y=abs(x)
round Redondeo Ej. y=round(x)
* Todos los ángulos se expresan en RADIANES.
La función de transformación será aquella que permita acondicionar el valor original de la variable a un valor más conveniente. También pueden pre visualizarse los valores que tomará la variable dando valores arbitrarios de “x” y presionando “Enter” en el campo de la función.
Para completar las transformaciones de la variable original, se la puede renombrar de tal manera que el nuevo nombre sea un mejor indicador de la naturaleza de la variable.
Ejemplo de transformación de una variable
Por ejemplo, la variable Flt00 puede tener un valor que corresponde al de tensión en V que arroja un sensor de presión MPX5100. Se podrá transformar dicha lectura introduciendo una fórmula:
y=2.661*x-0.4532
Esta fórmula transforma el valor de la variable original “x[V]” a un nuevo valor de presión “y” en unidades de m de agua (mH2O).
Luego se puede renombrar la variable de “Flt00” a un nuevo nombre “Pressure” y agregar la unidad “mH2O”. Luego se debe aceptar el cambio con el botón “Accept”.
Se observarán los cambios con el nuevo refresco de datos que lleguen desde el terminal correspondiente:

Obsérvese que ahora la variable se muestra transformada y esto se señala también con un asterisco “*”.
El nuevo nombre de la variable es “Pressure”, el nuevo valor es 0.8773 (el valor original es 0.5) y la unidad en mH2O.
Nota muy importante: El nuevo nombre de la variable permite un reconocimiento más intuitivo pero solo tiene efecto en la lista de variables. La variable sigue teniendo el mismo nombre a los efectos de la configuración de otros elementos de un proyecto.
Registro de datos
Los datos que llegan desde los terminales pueden ser guardados en un registro de datos para ser analizados luego o simplemente para que hagan de contenido de los gráficos “Charts” que pueden agregarse al proyecto.
Existen dos tipos de registros denominados “Logg_x” y “Logg_y” y se actualizan con cada llegada de datos desde los terminales en las carpetas:
C:\_Fusdata\Logg_x
C:\_Fusdata\Logg_y
Los registros se generan como un archivo de texto .CSV que puede abrirse con una planilla de cálculo y se ordenan en carpetas por año y por Sender ID. En cada carpeta se creará un archivo diario cuyo nombre será YYYY-MM-dd.csv
Logg_x corresponderá al registro de todos los datos tal como llegan proveniente de los equipos terminales sin ningún tipo de transformación.
Logg_y también guarda todas las variables pero remplaza aquellas que en el proyecto hayan recibido alguna transformación desde las propiedades de la variable.
La creación de registro de datos se habilita desde el menú de opciones. Puede ser útil impedir la generación de registros a determinado proyecto si es que en simultáneo ya existe un proyecto que hace el registro, se impide así la generación de datos duplicados aliviando el sistema y disminuyendo el riesgo de errores en la aplicación.
Nueva imagen de fondo “Background”
El espacio de trabajo de Fusdata corresponde a un panel cuyas dimensiones son 1920×1080 pixeles. Se puede optar como fondo de proyecto por un color sólido o por una imagen que ya se encuentre prediseñada y guardada como un archivo de extensión BMP, JPG, PNG o GIF.
Una imagen de fondo puede tener cualquier dimensión y se acomodará automáticamente en la esquina superior izquierda del panel de fondo.
La imagen de fondo puede tener solo sentido estético o además formar parte del propósito final del proyecto, como sería por ejemplo el empleo de un mapa de fondo sobre el cual después se posicionarían otros controles como botones, textos, etc.
Puede usarse la rueda del mouse para desplazar el panel de fondo verticalmente o la combinación Ctrl + rueda del mouse para hacerlo verticalmente.
La imagen debe acondicionarse al tamaño deseado utilizando un programa de edición de imágenes. Se recomienda prestar especial atención al proceso de elaboración de la imagen de fondo ya que es de gran importancia para la funcionalidad de todo el proyecto.
Algunas imágenes de ejemplo se encuentran en:
C:\_Fusdata\Resources2\Backgrounds\..
Para elegir una imagen de fondo debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde seleccionará “Background”:


Inmediatamente aparecerá en un explorador de archivos que permitirá nevegar por todo el sistema para buscar la imagen deseada:

Puede pre-visualizarse una imagen antes de seleccionarla definitivamente y pueden verse sus dimensiones. También se puede observar un botón “Without Image” para eliminar la imagen de fondo del proyecto.
Una vez elegida la imagen puede hacer clic en “Ok” para incluir definitivamente la imagen elegida como fondo de proyecto.
Puede hacer clic sobre el área vacía del cuadro de pre-visualización para elegir un color sólido de fondo para el área de trabajo.
En el panel de opciones se encuentra una casilla que permite ajustar el tamaño de la ventana al tamaño de la imagen de fondo al maximizar el proyecto, esta función es muy útil si la imagen de fondo es más pequeña que el área de Windows.
Colores y Color Picker
Siempre que exista un cuadro de color como propiedad, se puede hacer clic con el botón izquierdo de mouse en dicho cuadro y aparecerá un seleccionador de color llamado “Color Picker:

Este color picker aparecerá cada vez que se desea cambiar el color de un elemento, ya sea el color de fondo de la pantalla, el color de un botón, texto, etc.
En el color picker permite elegir una paleta de entre las cuatro disponibles o incluso el usuario puede diseñar su propia paleta agregando una imagen con los colores personalizados en la carpeta de instalación:
C:\Program Files\Fusdata x64\Resources\Palettes\..
El nombre del archivo debe ser “Pal_x.png” donde “x” es el número de paleta. Como puede verse inicialmente Fusdata cuenta con las paletas “Pal_0.png”, “Pal_1.png”, “Pal_2.png” y “Pal_3.png” por lo que se podrían agregar más paletas a partir de “Pal_4.png”.
Luego mediante los botones “<<” y “>>” se puede seleccionar una u otra.
Podrá verse entonces verse el color picker de las siguientes posibles maneras:

Donde:
1- Colores dependiente de la combinación de colores de la interfaz de Fusdata.
2- Es la paleta de colores elegida.
3- Son los últimos ocho colores elegidos recientemente.
4- Es el color elegido y su composición RGB que puede ser editada.
Menú de opciones de proyecto
Existen algunas características especiales que pueden ser configuradas desde las “Opciones de Proyecto”. Para acceder al menú de opciones debe seleccionar “Options” en el menú de proyecto, y aparecerá inmediatamente a la derecha de la pantalla:

Donde:
1- Casilla que permite habilitar o deshabilitar la posibilidad de mover los distintos elementos del proyecto en la pantalla.
2- Casilla de habilitación de creación del registro Logg_x.
3- Casilla de habilitación de creación del registro Logg_y.
4- Casilla de habilitación de la función que realiza una captura de pantalla automáticamente.
5- Tiempo entre capturas automáticas.
6- Casilla de habilitación para la animación estética de todos los indicadores SVG cuando pasan de un valor a otro.
7- Casilla de habilitación para ajustar el tamaño de la ventana al tamaño de la imagen de fondo.
8- Muestra el ancho completo de la aplicación Fusdata en pixeles. Es editable.
9- Muestra la altura completa de la aplicación Fusdata en pixeles. Es editable.
10- Color de la grilla en la pantalla cuando está visible.
11- Color de fondo del espacio de trabajo.
12- Botón que permite cambiar la combinación de colores de la interface.
Es mejor deshabilitar el movimiento de arrastre de los controles en la pantalla una vez que se ha concluido la etapa de diseño de un proyecto para evitar modificaciones accidentales.
La creación de registro solo debe hacerse por un solo proyecto. Si más de un proyecto genera registros seguramente se crearán registros múltiples iguales.
La función de creación de capturas automáticas es muy útil para realizar un upload automático de las imágenes a un sitio web. La subida de archivos la debe hacer un software especializado. El hecho de tener disponibles capturas recientes de cada proyecto permite el control desde múltiples dispositivos como teléfonos por ejemplo.
Los indicadores vectoriales del tipo SVG pueden mostrar una transición entre valores como una animación, es una característica muy atractiva pero que a veces no es necesaria y deshabilitarla permite aliviar al sistema sobre todo cuando hay muchos proyectos funcionando simultáneamente.
La función que permite ajustar el tamaño de la aplicación al tamaño de la imagen de fondo es útil cuando la imagen de fondo es más pequeña que el área del monitor.
Ejemplo maximizado sin ajuste a la imagen de fondo:

Ejemplo maximizado con ajuste a la imagen de fondo:

Nuevo texto “Multiline Text”
Sobre el espacio de trabajo se pueden agregar diferentes textos que pueden ser estáticos o reflejar el valor de determinada variable.
Este componente del proyecto se denomina “Texto Multilínea” y para agregar un nuevo texto multilínea en un proyecto de Fusdata se debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde se seleccionará “Multiline Text”:


Inmediatamente aparecerá en el espacio de trabajo un texto “Multiline Text xxx”. Este texto no está fijo al espacio de trabajo, se puede arrastrar por la pantalla de manera de ubicarlo donde se desea.

Este texto puede ser modificado en cuanto a su contenido, aspecto y comportamiento. Cuando aparece enmarcado en un recuadro negro quiere decir que ha sido seleccionado y es posible modificar algunas de sus propiedades mediante simples combinaciones de teclas. Ver “Combinaciones de teclas”.
Al seleccionar este elemento también pueden verse en la barra inferior de Fusdata tanto sus coordenadas como sus dimensiones en pixeles.
Cada texto multilínea puede mostrar el valor actualizado de una variable si en su texto original se encuentra la cadena “xxx”. Por ejemplo si el texto multilínea original dice “Pressure = xxx mH2O” entonces, configuración mediante, se remplazará automáticamente la parte “xxx” por el valor de la variable, quedando “Pressure = 0.8 mH2O”, siendo 0.8 el valor hipotético de la variable, con transformación incluida si es que ésta ha sido programada.
También es posible agregar una segunda transformación del valor de la variable en cada texto multilínea.
Se puede acceder a otras propiedades haciendo clic con el botón derecho sobre el propio texto y luego clic sobre “Properties”:

El botón estrella permite trasladar a todos los demás “Multilite Text” del proyecto las mismas propiedades estéticas (colores) que tiene este “Multiline Text”.
En el mismo menú aparecen las opciones de copiar y eliminar el texto multilínea.
Automáticamente aparecerá la solapa de propiedades del texto multilínea:

Donde:
1- Campo de edición de contenido del texto multilínea.
2- Color del texto, haga clic aquí para editar.
3- Color de fondo del texto, haga clic aquí para editar.
4- Casilla de habilitación de fondo de texto transparente.
5- Menú desplegable para selección de la fuente del texto.
6- Selección del tamaño de la fuente del texto.
7- Opciones Normal, Inclinada, Negrita y Subrayada. Puede depender del tipo de fuente.
8- Casilla de habilitación para que la parte “xxx” responda a determinada variable.
9- Campo “Sender” para especificar el terminal origen de la variable.
10- Menú desplegable para seleccionar la variable.
11- Fórmula de transformación. Válido solo para este texto multilínea.
12- Casilla de habilitación para limitar el número de decimales del valor de la variable.
13- Número de decimales.
14- Casilla de habilitación de cambios para la condición “If”.
15- Color que tendrá el texto si se cumple la condición “If”.
16- Campo de edición del valor de referencia para la condición “If”.
17- Casilla de habilitación para texto “INTERMITENTE”.
18- Casilla de habilitación para el reemplazo directo.
19- Campo de edición para la lista de posibles cambios directos.
Existe la posibilidad de hacer cambios de colores que dependerán del valor que asuma la variable. Incluso hacer que el texto se muestre intermitente. Esto permite visualizar rápidamente situaciones en pantalla que indiquen algún tipo de señal de alerta. Para ello se han dispuesto tres niveles de cambios. En la figura anterior se hace referencia solo sobre uno a modo de detalle.
Son tres niveles que permiten configurar hasta tres cambios de color. Se recorren de la última hacia la primera. Por ejemplo, si se observa la figura anterior y el valor de la variable fuese 30, entonces la condición “If y>=20” será la última en verificarse y al cumplirse hará que el texto cambie a color rojo. Si el valor de la variable fuese 15, entonces la última condición cumplida sería “If y>=10” el texto cambiará a color amarillo.
En ocasiones es útil el remplazo directo de un valor de la variable por un texto indicativo. Por ejemplo en el caso de variables del tipo Boolean donde “0” puede indicar “Apagado” y “1” puede indicar “Encendido”.
O en el caso de que una variable puede tomar valores que indican un estado más complejo. Por ejemplo, un Caudalímetro MQTT podría transmitir dentro de la trama de datos, la medida de caudal y la unidad de medición, pero la unidad de medición estaría expresada como un número tal que:
0 = m3/h
1 = m3/min
2 = m3/s
4 = gal/min
Entonces puede programarse el texto multimedia para que directamente remplace la parte “xxx” por la unidad de caudal según la tabla de correspondencia en 19.
Ejemplo 1 Texto Multilínea
Por ejemplo el equipo Sender ID C00000 es un Caudalímetro MQTT para líquidos y transmite un conjunto de 30 variables en una trama de datos, se requiere mostrar el valor de caudal instantáneo y el valor del contador totalizador, también conocer si el caudal se considera:
Bajo si es < 1.7 m3/h.
Alto si es > 2.0 m3/h.
Se necesita además que se muestre el estado de las dos salidas de alarma s1 y s2 presentes en el terminal, sabiendo que “0” corresponde a “Normal” y que “1” corresponde a “Alarma”.
Se sabe que las variables involucradas tienen los siguientes nombres:
Alarma s1 Bln08
Alarma s2 Bln09
Unidad de caudal Wrd03
Caudal Flt00
Totalizador Flt01
Se puede ver en la figura siguiente como se ha resuelto el ejemplo. Se agregaron 10 textos multilínea TM0 al TM9 y donde:
TM0 Es solamente un título y no cambian sus propiedades según la llegada de datos.
TM1 Indica solo el valor de caudal instantáneo.
TM2 Indica la unidad en que se está midiendo el caudal instantáneo.
TM3 Indica solo el valor del totalizador volumétrico.
TM4 Indica la unidad de medida del totalizador volumétrico.
TM5 Muestra s1 como “s1 NORMAL” en gris si es “0” y “s1 ALERT” en rojo intermitente si es “1”.
TM6 Muestra s2 como “s2 NORMAL” en gris si es “0” y “s2 ALERT” en rojo intermitente si es “1.
TM7 Permanece en gris si el caudal es menor de 2.0 y pasa a rojo intermitente si es mayor.
TM8 Permanece en verde si el caudal es mayor de 1.7 y menor de 2.0, de lo contrario es gris.
TM9 Permanece en gris si el caudal es mayor de 1.7 y pasa a amarillo intermitente si es menor.

Se muestran a continuación las configuraciones de los textos multilínea.



Nuevo gráfico “Chart”
Un gráfico o “Chart” es un elemento que se agrega al proyecto para la observación de la evolución de una variable en el tiempo.
Para poder realizar dicho chart es necesario que exista un registro Logg_x y/o Logg_y le la variable a graficar. Vale decir entonces, que algún proyecto de Fusdata en ejecución tendrá habilitada la función de generar dichos registros.
Para agregar un nuevo chart al proyecto se debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde se seleccionará “Chart”:


Aparecerá inmediatamente un gráfico como el siguiente sobre la zona de trabajo:

Este chart que se ha agregado no está referenciado a ninguna variable aún. Hay otra manera de agregar un chart al proyecto haciendo clic con el botón derecho del mouse sobre la variable de interés y seleccionando la opción “Add Chart”:

De igual manera aparecerá un nuevo chart, pero ya enlazado con la variable. Este nuevo chart, al igual que ocurre con otros elementos que se pueden agregar a un proyecto, no está fijo al espacio de trabajo, se puede arrastrar por la pantalla de manera de ubicarlo donde se desea.
Este chart puede ser modificado en cuanto a su contenido, aspecto y comportamiento. Cuando aparece enmarcado en un recuadro negro quiere decir que ha sido seleccionado y es posible modificar algunas de sus propiedades mediante simples combinaciones de teclas. Ver “Combinaciones de teclas”.
Al seleccionar este elemento también pueden verse en la barra inferior de Fusdata tanto sus coordenadas como sus dimensiones en pixeles.
Cada chart muestra la evolución de una variable en el lapso de tiempo comprendido entre las 0 y las 24 horas de un día cualquiera. Por default el chart mostrará los datos correspondientes al día en curso, pero esto puede modificarse con los botones “<” y “>” ubicados arriba a la derecha dentro del gráfico.
Puede elegirse por ejemplo el día de ayer “Yesterday”, lo que quiere decir que siempre ese chart mostrará los datos correspondiente al día anterior al día en curso, esto es muy útil si se desea observar datos actualizados en un chart pero compararlos directamente con otro chart en los que se presentan los datos del día anterior.
Se puede acceder a otras propiedades haciendo clic con el botón derecho sobre el propio chart y luego clic sobre “Properties”:

El botón estrella permite trasladar a todos los demás “Chart” del proyecto las mismas propiedades estéticas (colores) que tiene este “Chart”.
En el mismo menú aparecen las opciones de copiar y eliminar el “Chart”. Automáticamente aparecerá la solapa de propiedades del gráfico:

Donde:
1- Campo de edición del título que aparecerá arriba dentro del Chart.
2- Campo “Sender” para especificar el terminal origen de la variable.
3- Menú desplegable para la selección de la variable.
4- Casilla de habilitación para que Logg_x sea el origen de los datos (Valores originales).
5- Casilla de habilitación para que Logg_y sea el origen de los datos (Valores transformados).
6- Campo de edición para el valor más pequeño que puede ser mostrado en el chart.
7- Campo de edición para el valor más grande que puede ser mostrado en el chart.
8- Casilla de habilitación de modo “Auto-rango”. Desestima 6 y 7.
9- Casilla de habilitación para que el dato de observe como un “Punto”
10- Casilla de habilitación para que el dato de observe como un “Área” contra el eje x.
11- Casilla de habilitación para que el dato de observe como una “Línea” que une punto a punto.
12- Color de la marca de datos ya sea punto, área o línea y también del título 1.
13- Color 1, que comienza en la esquina superior izquierda y se mezcla con 14.
14- Color 2, Que comienza en la esquina inferior derecha y se mezcla con 13.
15- Color de los ejes principales.
16- Color de las líneas internas.
17- Casilla de habilitación para que se muestren las líneas internas.
Ejemplo de nuevo “Chart”
Se tiene un proyecto de Fusdata en el que se monitorean los parámetros de energía eléctrica que consume una planta de tratamiento de efluentes, dentro de las variables transmitidas se encuentran el nivel de tensión trifásica de la línea L1 en Volt y el valor de corriente de L1 en Amperes. Se requiere insertar un gráfico del día en curso y uno del día anterior para ambas variables.
Se sabe que sender se denomina EN01 y que las variables involucradas tienen los siguientes nombres:
Tensión trifásica de L1 Lit17 [V]
Corriente en L1 Lit13 [A]
En ambos casos se sabe que los valores ya vienen expresados en sus unidades correspondientes.
Se puede ver en la figura siguiente como se ha resuelto el ejemplo. Se agregaron charts CH0 al CH3 y donde:

Además de los cuatro charts se han agregado seis textos multilínea para completar la información en pantalla.
Se muestran a continuación las configuraciones de los charts.




Obsérvese que entre CH0 y CH1 no hay diferencias en cuanto a su configuración, solo hubo que crear CH0 a partir de hacer clic con el botón derecho de mouse sobre la variable deseada y terminar de configur los colores. Luego solamente para crear CH1 se duplicó CH0 mediante Ctrl+Dy y se modificó para que muestre datos “Yesterday”.
El mismo procedimiento se realizó para crear CH3 a partir de CH2.
Nuevo “SVG Graphic”
Un “Gráfico SVG” es un dibujo vectorial que se agrega al proyecto para la observación del valor de una variable de forma gráfica. Es un componente que se genera dinámicamente en pantalla por lo que puede redimensionarse sin perder calidad.
También debido a la naturaleza de este tipo de gráficos, ciertas características pueden modificarse al momento de presentar los datos, por ejemplo cambio de colores, contenido de un texto, etc.
En Fusdata existen gráficos SVG de diferentes características para determinadas funciones, pueden ser cuadrantes con aguja, tanto radiales como lineales, pueden ser barras de progreso, indicadores luminosos, cilindros que indican nivel, etc. Algunos incluso pueden mostrar animaciones al pasar de un estado a otro, pero esta función solo es estética y puede consumir demasiados recursos del sistema por lo que puede desactivarse desde el menú de opciones.
La creación de archivos de extensión .SVG es compleja pero el aporte de calidad al diseño del proyecto justifica el tiempo y el esfuerzo. Muchas funcionalidades de Fusdata relacionadas con este tipo de componente están en permanente desarrollo.
LA biblioteca de Fusdata incluye algunos archivos .SVG para propósitos generales, y se encuentra en:
C:\_Fusdata\Resources2\SVG\..
Para agregar un nuevo gráfico SVG al proyecto se debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde se seleccionará “SVG Graphic”:


Inmediatamente aparecerá en el espacio de trabajo un gráfico como el de la figura siguiente:

El gráfico por default que se muestra es un cuadrante circular genérico. Este gráfico no está fijo al espacio de trabajo, se puede arrastrar por la pantalla de manera de ubicarlo donde se desea.
Este gráfico puede ser modificado en cuanto a su contenido, aspecto y comportamiento. Cuando aparece enmarcado en un recuadro negro quiere decir que ha sido seleccionado y es posible modificar algunas de sus propiedades mediante simples combinaciones de teclas. Ver “Combinaciones de teclas”.
Al seleccionar este elemento también pueden verse en la barra inferior de Fusdata tanto sus coordenadas como sus dimensiones en pixeles.
El elemento creado aún no está referenciado a ninguna variable. Se puede acceder a otras propiedades haciendo clic con el botón derecho sobre el propio gráfico SVG y luego clic sobre “Properties”. Inmediatamente se mostrará la solapa de propiedades del gráfico SVG:

Donde:
1- Campo donde se puede ver el nombre del archivo SVG. En la figura se puede observar el nombre Def.svg que es el nombre del archivo default que se agrega al proyecto. Este campo no muestra la ruta completa del archivo ni permite edición. Para cambiar de archivo debe hacer clic en el botón 2.
2- Botón de búsqueda de nuevo archivo. Al hacer clic se abre automáticamente un explorador de archivos con un pre-visualizador SVG.
3- Campo “Sender” para especificar el terminal origen de la variable.
4- Menú desplegable para la selección de la variable.
5- Campo de edición para el valor más pequeño que puede tomar la variable.
6- Campo de edición para el valor más grande que puede tomar la variable.
Cuando se hace clic en el botón 2 inmediatamente puede verse el siguiente explorador de archivos:

Donde:
1- Árbol de carpetas y archivos del sistema.
2- Carpeta de recursos _Fusdata.
3- Campo de edición del nombre del archivo seleccionado.
4- Ruta completa del archivo seleccionado.
5- Botón de “Nueva carpeta”.
6- Espacio de pre-visualización del archivo SVG.
7- Dimensiones del archivo original.
8- Campo editable para re-dimensionar el ancho del gráfico SVG.
9- Campo editable para re-dimensionar el alto del gráfico SVG.
10- Botón para seleccionar relación de aspecto:
Fill
None
Uniform
Uniform Fill
Botón de Rotación.
Todas las transformaciones de tamaño y rotación solo se aplicarán al gráfico SVG al generarse en la pantalla del proyecto, no se modifica el archivo original.
Con este explorador de archivos con pre-visualizador de gráficos SVG se puede navegar por el sistema y seleccionar el archivo SVG deseado.
Cuadrantes radiales

Este tipo de cuadrante se caracteriza por poseer un indicador que gira alrededor de un eje para señalar el valor de la variable. El indicador puede ser dibujado como una línea más o menos fina, o como una forma más compleja como por ejemplo un triángulo. Además cada tipo de cuadrante radial se caracteriza por el recorrido angular del indicador medido en grados sexagesimales. Por último cada cuadrante puede incluir o no un texto que indique el valor y un texto para la unidad de medida de la variable.
El aspecto y comportamiento de un cuadrante radial se ajusta con los siguientes parámetros adicionales:

Circular Gauge Behavior: Selecciona este tipo de gráfico SVG.
Back Color: Determina el color de fondo del cuadrante.
Id=”Bkg_ellipse”: Determina que el fondo del cuadrante tiene una forma circular o elíptica.
Id=”Bkg_path”: Determina que el fondo del cuadrante tiene un fondo con una forma distinta a un círculo o elipse.
Id=”Indicator_line”: Determina que el indicador es del tipo “línea”.
Id=”Indicator_path”: Determina que el indicador no es del tipo “línea”.
Id=”Indicator_text”: Este es un parámetro opcional y determina que el cuadrante incluye un texto que puede mostrar el valor que toma la variable. Puede obviarse si es que no se desea ver este texto, pero no debe habilitarse si es que el archivo SVG no cuenta con esta característica.
Id=”Indicator_unit”: Idem pero con respecto a la unidad de medida de la variable.
“Angular Travel”: se refiere al ángulo que define el indicador entre si posición mínima y su posición máxima.
Cuadrantes lineales

Este tipo de gráfico se caracteriza por poseer un indicador que se desplaza para señalar el valor de la variable. El indicador puede ser dibujado como una línea más o menos fina, o como una forma más compleja como por ejemplo un triángulo. Cada cuadrante lineal puede incluir o no un texto que indique el valor y un texto para la unidad de medida de la variable.
El aspecto y comportamiento de un cuadrante lineal se ajusta con los siguientes parámetros adicionales:

Linear Gauge Behavior: Selecciona este tipo de gráfico SVG.
Back Color: Determina el color de fondo del cuadrante.
Id=”Bkg_ellipse”: Determina que el fondo del cuadrante tiene una forma circular o elíptica.
Id=”Bkg_path”: Determina que el fondo del cuadrante tiene un fondo con una forma distinta a un círculo o elipse.
Id=”Indicator_line”: Determina que el indicador es del tipo “línea”.
Id=”Indicator_path”: Determina que el indicador no es del tipo “línea”.
Id=”Indicator_text”: Este es un parámetro opcional y determina que el cuadrante incluye un texto que puede mostrar el valor que toma la variable. Puede obviarse si es que no se desea ver este texto, pero no debe habilitarse si es que el archivo SVG no cuenta con esta característica.
Id=”Indicator_unit”: Idem pero con respecto a la unidad de medida de la variable.
Indicadores cilíndricos

Este tipo de gráfico SVG es muy útil para representar volúmenes y recipientes. El aspecto y comportamiento de un gráfico de cilindro se ajusta con los siguientes parámetros adicionales:

Vert. Cylindrical Gauge Behavior: Selecciona este tipo de gráfico SVG.
Id=”Indicator_ellipse”: Determina que el nivel marcado por este indicador corresponde a la altura que toma una forma elíptica o circular que simula la superficie superior del cilindro.
Id=”Indicator_text”: Este es un parámetro opcional y determina que el indicador incluye un texto que puede mostrar el valor que toma la variable. Puede obviarse si es que no se desea ver este texto, pero no debe habilitarse si es que el archivo SVG no cuenta con esta característica.
Id=”Indicator_unit”: Idem pero con respecto a la unidad de medida de la variable.
Indicadores de cambio de color

Este tipo de gráfico SVG permite hacer indicaciones rápidas sobre valores límites de una variable, son indicadores al estilo de una señal luminosa que se activa ante un evento pero con hasta tres posibilidades de colores.
Por ejemplo, se puede observar fácilmente el estado de una variable del tipo boolean si un indicador es de color verde para valor “0” y rojo para valor “1”.

El aspecto y comportamiento de un indicador de color se ajusta con los siguientes parámetros adicionales:

Color Change Behavior: Selecciona este tipo de gráfico SVG.
Id=”Indicator_ellipse”: Determina que el elemento que cambia de color tiene una forma elíptica o circular.
Id=”Indicator_path”: Determina que el elemento que cambia de color no es ni un elipse ni un círculo.
To Color: Casilla de habilitación del cambio al color indicado si es que se cumple con la condición “If”. Son tres niveles que permiten configurar hasta tres cambios de color. Se recorren de la última hacia la primera. Por ejemplo, si se observa la figura anterior y el valor de la variable fuese 70, entonces la condición “If y>=60” será la última en verificarse y al cumplirse hará que el indicador cambie a color rojo. Si el valor de la variable fuese 50, entonces la última condición cumplida sería “If y>=40” el indicador cambiará a color amarillo.
Barras horizontales

Este tipo de gráfico SVG es muy útil para representar el valor de la variable de forma extremadamente simple y con mínimo consumo de recursos del sistema. Puede complementarse con el agregado de un texto multilínea que muestre el valor de la variable. El aspecto y comportamiento de una barra horizontal se ajusta con los siguientes parámetros adicionales:

Horizontal Bar: Selecciona este tipo de gráfico SVG.
Back Color: Determina el color que tendrá el fondo del gráfico.
Bar Color: Determina el color que tendrá la propia barra que indica el valor de la variable.
Depende del archivo .SVG elegido puede ser que el fondo del gráfico presente además características de transparencia.
Tanques o barras verticales

Al igual que las barras horizontales, este tipo de gráfico SVG es muy útil para representar el valor de la variable de forma extremadamente simple y con mínimo consumo de recursos del sistema. Puede complementarse con el agregado de un texto multilínea que muestre el valor de la variable. El aspecto y comportamiento de una barra vertical se ajusta con los siguientes parámetros adicionales:

Tank: Selecciona este tipo de gráfico SVG.
Back Color: Determina el color que tendrá el fondo del recipiente o barra.
Content Color: Determina el color que tendrá el contenido que indica el valor de la variable.
Depende del archivo .SVG elegido puede ser que el fondo del gráfico presente además características de transparencia y efectos de sombras.
Nuevo “GIF/PNG Graphic”
Un archivo de extensión .GIF es un gráfico que puede ser una animación e incluir transparencias. Un archivo de extensión .PNG es un gráfico de gran calidad que también puede incluir transparencias. A diferencia de un gráfico vectorial .SVG no pueden ser redimensionados pero ambos tipos de archivos pueden ser muy útiles en la confección de un proyecto de Fusdata.
El valor que toma una variable puede representarse por un gráfico que muestre de manera clara e inmediata lo que significa dicha variable, si un valor “0” indicara un motor apagado y un valor “1” un motor encendido entonces podría utilizarse un gráfico animado de un motor para ilustrar la situación:
Motor apagado, imagen estática.
Motor en marcha imagen animada.
Aunque en este manual no puede apreciarse, el gráfico que indica la marcha del motor es una animación.
En el caso del motor apagado la imagen es un archivo .GIF estático simple, en el caso del motor en marcha, la imagen es un archivo .GIF animado con fondo transparente.
Ejemplo, si una determinada variable puede tomar diferentes valores, se puede hacer que diferentes gráficos PNG se muestren diferentes dependiendo del significado real que tiene la variable.




Los gráficos .GIF animados son archivos que se pueden separar en “frames” o “cuadros”, por lo que una animación entonces puede detenerse en determinado cuadro y de esta manera mostrar una ilustración representativa del estado de una variable. Por ejemplo si un archivo .GIF fuese una animación de un tanque de agua que pasa de vacío a lleno en un número conocido de cuadros, entonces se puede detener la reproducción animada justo en aquel cuadro que muestre el estado real del tanque:


Los gráfico GIF/PNG pueden incluirse en el proyecto sin que sea necesario que estén relacionados con ninguna variable. Pueden tener funciones solo estéticas como por ejemplo una bandera, flechas que indican el sentido de circulación, el funcionamiento de una máquina, etc.
La biblioteca de Fusdata incluye algunos archivos .GIF y .PNG para propósitos generales, y se encuentra en:
C:\_Fusdata\Resources2\GIF\..
C:\_Fusdata\Resources2\PNG\..
Para agregar un nuevo gráfico GIF/NG al proyecto se debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde se seleccionará “GIF/PNG Graphic”:


Inmediatamente aparecerá en el espacio de trabajo un gráfico como el de la figura siguiente:

El gráfico por default que se muestra es archivo .GIF animado que simula “Ruido blanco” o “Desconexión”. Este gráfico no está fijo al espacio de trabajo, se puede arrastrar por la pantalla de manera de ubicarlo donde se desea.
Este gráfico puede ser modificado en cuanto a su contenido, aspecto y comportamiento. Cuando aparece enmarcado en un recuadro negro quiere decir que ha sido seleccionado y es posible modificar algunas de sus propiedades mediante simples combinaciones de teclas. Ver “Combinaciones de teclas”.
Al seleccionar este elemento también pueden verse en la barra inferior de Fusdata tanto sus coordenadas como sus dimensiones en pixeles.
El elemento creado aún no está referenciado a ninguna variable. Se puede acceder a otras propiedades haciendo clic con el botón derecho sobre el propio gráfico y luego clic sobre “Properties”:

Inmediatamente se mostrará la solapa de propiedades del gráfico GIF/PNG:

Donde:
1- Campo “Sender” para especificar el terminal origen de la variable.
2- Menú desplegable para la selección de la variable.
3- Fórmula de transformación. Válido solo para este gráfico en el proyecto.
4- Casilla de habilitación de cambios para la condición “If”.
5- Campo de edición del valor de referencia para la condición “If”.
6- Campo donde se puede ver el nombre del archivo GIF/PNG. Este campo no muestra la ruta completa del archivo ni permite edición. Para cambiar de archivo debe hacer clic en el botón 7.
7- Botón de búsqueda de nuevo archivo. Al hacer clic se abre automáticamente un explorador de archivos con un pre-visualizador GIF/PNG.
8- Casilla de habilitación para mostrar solo determinado cuadro de un gráfico GIF al cumplirse la condición “If”.
9- Numero de cuadro del archivo GIF.
10- Casilla de habilitación para forzar que se cumpla la condición “If”, quiere decir que en ausencia de datos reales enviados desde el terminal se mostrará este gráfico y eventualmente el cuadro específico.
11- Casilla de habilitación de comportamiento analógico AB.
12- Campo donde se puede ver el nombre del archivo GIF animado con tantos cuadros como los saltos valores intermedios de la variable se quieran representar. Este campo no muestra la ruta completa del archivo ni permite edición. Para cambiar de archivo debe hacer clic en el botón 13.
13- Botón de búsqueda de nuevo archivo. Al hacer clic se abre automáticamente un explorador de archivos con un pre-visualizador GIF.
14- Valor mínimo que se quiere que sea representado por el archivo GIF.
15- Valor máximo que se quiere que sea representado por el archivo GIF.
Puede observarse en este menú de propiedades que existen tres niveles discretos de condiciones a cumplir y a los efectos de simplificar este esquema, estos niveles se denominan A, B y C. Los ítems 4 al 10 se repiten para los niveles B y C.
Luego tal como ocurre con el elemento “Multiline Text” y el indicador de cambio de color SVG, Fusdata analiza las condiciones comenzando por la última hacia la primera, orden C, B y A.
La configuración AB es independiente y se ejecuta con prioridad sobre las otras. Con esta configuración se puede hacer que un archivo GIF animado muestre solo aquel cuadro que es representativo del valor de la var1able.
Ejemplo 1 GIF
Solo por una función estética se quiere introducir una imagen animada de un molino de viento en un proyecto relacionado con un paisaje de campo.

La imagen GIF es animada y se encuentra sobre una imagen de fondo, también puede verse la solapa de configuración que solo fue necesario buscar la imagen y marcarla como default.
Ejemplo 2 GIF
Se tiene un hipotético pueblo donde se encuentran cinco tanques cisterna que abastecen de agua potable a la población. En cada tanque se encuentra un terminal que reporta periódicamente el nivel de agua con la variable Byt00 en una trama E3.
Se puede representar el nivel de cada tanque utilizando un gráfico GIF animado de 101 cuadros que representan 0 a 100% de llenado (101 valores enteros). El valor de la variable Byt00 puede tomar valores de 0 a 255 y se muestran los resultados a continuación:

Se muestra también la configuración para el “Tank 0” cuyo terminal tiene un Sender ID “00E000”:

Ejemplo 3 GIF
Un terminal con Sender ID 00E000 envía una medición de caudal como variable Wrd00 y se sabe que dicha variable puede valer de 0 a 1000 para flujos de 0 a 100 m3/h. Se desea graficar con un instrumento genérico GIF dicha medición de caudal. La solución propuesta es la siguiente donde puede verse en la configuración del gráfico GIF como se ha transformado el valor de la variable:

Ejemplo 1 PNG
Se tiene un terminal con Sender Id 00E001 que tiene en las salidas digitales GPIO32,25,27 y 12 conectados leds de colores. Con un botón en pantalla se envía un comando para que cambie el estado de la salida correspondiente, inmediatamente el terminal envía una trama de datos donde se actualiza el estado de las variables Bln00, Bln01, Bln02 y Bln03 que indican el estado de las salidas:

Nuevo “Button”
Para enviar comandos o valores en formato de texto a determinado terminal existe la posibilidad de añadir al proyecto un elemento “Button”.
Al hacer clic con el botón izquierdo del mouse en un “Button”, pueden enviarse a diferentes terminales hasta cuatro mensajes previamente programados que se componen de una parte opcional denominada “Key” y otra parte denominada “Command”.
Mensaje = “Key” + “Command”
Esta función permite que un determinado terminal reciba una instrucción, y dependiendo del firmware, el mensaje sea decodificado para realizar determinada acción como puede ser por ejemplo activar determinada salida digital o configurar un registro interno.
Por ejemplo, se podría agregar al proyecto un botón que muestre el texto “ON” y cuya programación sea; Enviar al terminal “00E000” un mensaje que diga “1234ao1” siendo “1234” una clave y “ao1” una instrucción que podría significar activar una hipotética “output 1”. Entonces al hacer clic con el botón izquierdo del mouse en el “Button” se enviará a “00E000” el mensaje en formato de texto “1234ao1”. Corresponderá a la programación del terminal poder decodificar el mensaje completo reconociendo la clave como válida y ejecutando la instrucción. La parte correspondiente a la clave es opcional.
Para agregar un nuevo botón al proyecto se debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde se seleccionará “Button”:


Aparecerá inmediatamente un “Button” como el siguiente sobre la zona de trabajo:

Este “Button” no está fijo al espacio de trabajo, se puede arrastrar por la pantalla de manera de ubicarlo donde se desea.
Algo muy importante a tener en cuenta es que este elemento debido a su naturaleza particular debe ser arrastrado por la pantalla con cuidado para no provocar un “clic” espurio que envíe un mensaje por error.
Se recomienda poner el proyecto en estado “Stop” para poder mover un botón por el área de trabajo sin temor al envío de instrucciones por error.
Este botón puede ser modificado en cuanto a su contenido, aspecto y comportamiento. Cuando aparece enmarcado en un recuadro negro quiere decir que ha sido seleccionado y es posible modificar algunas de sus propiedades mediante simples combinaciones de teclas. Ver “Combinaciones de teclas”.
Al seleccionar este elemento también pueden verse en la barra inferior de Fusdata tanto sus coordenadas como sus dimensiones en pixeles.
Se puede acceder a otras propiedades haciendo clic con el botón derecho sobre el propio botón luego clic sobre “Properties”:

El botón estrella permite trasladar a todos los demás “Button” de proyecto las mismas propiedades estéticas (colores) que tiene este “Button”.
En el mismo menú aparecen las opciones de copiar y eliminar.
Automáticamente aparecerá la solapa de propiedades del elemento “Button”:

Donde:
1- Campo de edición del texto que muestra el botón.
2- Color del texto, haga clic aquí para editar.
3- Color de fondo del texto, haga clic aquí para editar.
4- Casilla de habilitación de fondo de texto transparente.
5- Casilla de habilitación de apariencia 3D. Cambia el estilo del botón, depende de la versión y configuración del S.O. Windows.
6- Menú desplegable para selección de la fuente del texto.
7- Selección del tamaño de la fuente del texto.
8- Opciones Normal, Inclinada, Negrita y Subrayada. Puede depender del tipo de fuente.
9- Campos de edición para especificar “Sender” que recibirá el mensaje, “Key” y “Command”.
10- Muestra real y botones de edición del tamaño final del botón.
En ocasiones puede ser necesario el envío del mismo mensaje a todos los equipos conectados, por ejemplo un mensaje que indique actualizar el valor de todas las variables, en este caso se puede poner “XXXX” o “xxxx” como “Sender”. Quiere decir que al hacer clic en este botón se enviará el mensaje a todos los terminales.
Ejemplo 1 “Button”
El equipo Sender ID C00000 es un Caudalímetro MQTT para líquidos y transmite un conjunto de 30 variables en una trama de datos, este equipo dispone de cuatro salidas digitales de nominadas s1, s2, s3 y s4 de tal manera que dichas salidas pueden activar relés de potencia para encender artefactos eléctricos. En partículas s3 actúa sobre una válvula electromagnética. Se desea activar y desactivar la válvula conectada a s3 para habilitar el paso de fluido por la cañería en la que se mide el caudal, se sabe que:
Salida s3 Bln10
Salida s4 Bln11
Quedando la solución:

En el estado que se observa en la figura anterior s3=Bln10=0, por lo que el indicador SVG se nota gris, luego al hacer clic en “ON” se envía el comando al terminal C00000 y se activa s3:

Al estar activada la salida digital s3, el indicador SVG se torna de color verde para
mostrar el estado Bln10=1. A continuación pueden verse las configuraciones del indicador SVG y de ambos botones:



Nuevo “Text Box”
En ocasiones se hace necesario incluir en el proyecto un elemento que permita insertar y/o modificar un texto o valor numérico rápidamente sin que sea necesario recurrir a una segunda instancia de propiedades. Por ejemplo es típico tener que enviar un comando o valor a determinado terminal para que éste lo interprete y ejecute rápidamente, tal sería el caso de ajustar una salida PWM o ajustar una configuración, etc. Esto podría hacerse mediante un “Text Box” y un botón de envío.
Para agregar uno nuevo “Text Box” al proyecto de Fusdata se debe seleccionar “Add >” en el menú de proyecto, y aparecerá el menú de “Add New” donde se seleccionará “Text Box”:


Inmediatamente aparecerá en el espacio de trabajo un “Text Box”. Este elemento no está fijo al espacio de trabajo, se puede arrastrar por la pantalla de manera de ubicarlo donde se desea, tomándolo desde la zona periférica (por default aparece de un color amarillo más oscuro):

Este “Text Box” puede ser modificado en cuanto a su contenido, aspecto y comportamiento. Cuando aparece enmarcado en un recuadro negro quiere decir que ha sido seleccionado y es posible modificar algunas de sus propiedades mediante simples combinaciones de teclas. Ver “Combinaciones de teclas”.
Al seleccionar este elemento también pueden verse en la barra inferior de Fusdata tanto sus coordenadas como sus dimensiones en pixeles.
Este elemento de proyecto no permite el redimensionado a discreción. La altura “h” está relacionada con el tipo y tamaño de letra.
Se puede acceder a otras propiedades haciendo clic con el botón derecho sobre el propio texto y luego clic sobre “Properties”:

Nótese que en este menú aparece arriba la leyenda “Text Box #0”, esto indica que dentro del proyecto este “Text Box” en particular tiene índice cero, esto es muy importante luego para relacionarlo con un elemento “Button”.
El botón estrella permite trasladar a todos los demás “Text Box” del proyecto las mismas propiedades estéticas (colores) que tiene este “Text Box”.
En el mismo menú aparecen también las opciones de copiar y eliminar el “Text Box”. Automáticamente aparecerá la solapa de propiedades del elemento:

Donde:
1- Campo de edición del texto del Text Box a modo de muestra y es solo para pre-visualizar el tipo, tamaño y color de letra.
2- Botones para modificar el ancho del Text Box.
3- Color del texto, haga clic aquí para editar.
4- Color de fondo del texto, haga clic aquí para editar.
5- Color del marco o zona que permite tomar el elemento para arrastrar y ubicar y para acceder a las propiedades, copiar o eliminar, haga clic para editar.
6- Menú desplegable para selección de la fuente del texto.
7- Selección del tamaño de la fuente del texto.
8- Opciones Normal, Inclinada, Negrita y Subrayada. Puede depender del tipo de fuente.
9- Casilla de habilitación de solo permitir números.
El elemento “Text Box” está pensado para trabajar en conjunto con elementos “Button”, la idea es que todo el conjunto pueda simular una interface de un instrumento. Cada botón puede modificar el contenido de determinado “Text Box” y además un botón puede tomar el contenido del “Text Box” para incluirlo dentro del mensaje que le enviará al terminal destino, obviamente el terminal que recibe el mensaje debe poder interpretarlo y ejecutarlo.
Interacciones entre “Button” y “Text Box”
Existen tres posibles interacciones entre un elemento “Button” y un elemento “Text Box” a saber:
1-Poner un valor en un Text Box:
Utilizando un Button se puede poner un valor determinado al Text Box. Para ello se debe conocer el índice del Text Box en cuestión que se puede ver haciendo clic con el botón derecho sobre el Text Box sobre el marco.
El botón debe entonces decir en:
Sender: tb#NN Donde NN es el índice del Text Box
Key: No poner nada
Command: set(VV) Donde VV es el valor a poner y puede ser un valor negativo.
Ejemplo, poner el valor 0 al Text Box índice 1:

2-Aumentar o disminuir el valor de un Text Box:
Utilizando un Button se puede realizar una suma o resta de un valor determinado al número que muestra un Text Box. Para ello se debe conocer el índice del Text Box en cuestión que se puede ver haciendo clic con el botón derecho sobre el Text Box sobre el marco.
El botón debe entonces decir en:
Sender: tb#NN Donde NN es el índice del Text Box
Key: No poner nada
Command: add(VV) Donde VV es el valor a sumar y puede ser un valor negativo.
Ejemplo, sumar 0.1 al valor de Text Box índice 0:

3-Agregar el contenido de un “Text Box” al mensaje para enviar:
Utilizando un Button se puede incluir el contenido de un determinado Text Box al mensaje que se enviará a determinado terminal. Para ello se debe conocer el índice del Text Box en cuestión que se puede ver haciendo clic con el botón derecho sobre el Text Box sobre el marco.
El botón debe entonces decir en:
Sender: Sender ID ID del terminal destino del mensaje.
Key: KKKK Donde KKKK es la clave opcional para acceder al terminal.
Command: {tb#NN} Donde NN es el índice del Text Box.
Ejemplo, enviar el mensaje as3*VVm, que hipotéticamente interpretará el terminal de nombre “TER1” destino como activar la salida digital s3 durante VV minutos.

Entonces en el mensaje a enviar se remplazará “{tb#0}” por el valor que contenga el Text Box de índice cero. Se recuerda que el mensaje enviado al terminal es una cadena de caracteres y corresponde al propio terminal poder interpretar y ejecutar el mensaje.
Ejemplo 1 “Text Box”
El equipo Sender ID TER1 es un generador de pulsos MQTT que se utiliza como controlador de un dosificador de productos químicos y transmite un conjunto de 30 variables en una trama de datos. Los pulsos generados por este terminal se utilizan como señal para el comando de una bomba de diafragma que es el dispositivo final encargado de hacer la inyección del producto químico en una cañería.
Se necesita crear una interface que permita enviar el valor del periodo deseado entre pulsos utilizando un “Text Box”, pero además de desea implementar una serie de botones que permita borrar o insertar valores de periodo pre-seteados.
Se sabe que la variable que el comando necesario para fijar el periodo para este modelo de terminal es “m31*”.
La solución propuesta es la siguiente:

El botón “<<” permite modificar el valor en -0.1 y el botón “>>” en 0.1.
El botón “<” permite modificar el valor en -0.01 y el botón “>” en 0.01.
Los botones 1 y 2 ponen esos mismos valores en el Text Box, el botón “CLEAR” pone cero y el botón “SEND” envía al terminal el comando que incluye el valor del Text Box. A continuación pueden verse las configuraciones del “Text Box” y los botones:









Ventana “Chat”
Fusdata permite visualizar mensajes que provienen de los equipos terminales que no están codificados como una trama de datos, sino que son mensajes que pueden ser interpretados solo con leerse. Por ejemplo, un terminal que controla el nivel de un tanque de agua podría enviar un mensaje “ALERTA DE TANQUE VACÍO” y entonces se podría ver este mensaje en la ventana “Chat”.
Esta ventana también permite enviar mensajes como texto a determinado terminal, solo basta con seleccionar el equipo de destino haciendo clic con el botón izquierdo del mouse en la lista de terminales conectados.
Para acceder a la ventana de “Chat” de Fusdata se debe seleccionar “Chat” en el menú de proyecto:

La ventana de chat se puede mover por el espacio de trabajo arrastrándola al igual que con los demás elementos de Fusdata.
La ventana de chat tiene las siguientes características:

Donde:
1- Ventana TRX de mensajes enviados y recibidos.
2- Botón para borrar la ventana TRX.
3- Ventana TX para escribir mensajes para enviar.
4- Botón de envío. También Ctrl + Enter.
5- Texto que muestra el terminal destino del mensaje.
6- Cantidad de caracteres en la ventana TX.
7- Botón para ocultar la ventana de chat.
Una vez escrito el mensaje se debe hacer clic en el botón de envío o se puede utilizar la combinación Ctrl + Enter. Luego para repetir el último mensaje enviado se puede utilizar Ctrl + R aunque el terminal de destino cambie.
Cabe señalar que enviar un mensaje o comando utilizando un elemento “Button” equivale a escribir y enviar el mismo mensaje o comando utilizando la ventana de chat, por lo que cada mensaje transmitido utilizando un “Button” también aparece en la ventana de chat.
La utilización de la ventana de chat permite realizar y revisar programaciones y estado de un terminal.
Convenciones de los mensajes por Chat
Como se ha dicho, Fusdata utiliza el protocolo MQTT, y para recibir mensajes y datos desde los terminales se subscribe al tópico “Root/Sub-Topic” y decodifica las tramas de datos, pero para reconocer mensajes legibles que llegan mezclados los terminales deben poder enviar el texto respetando unas sencillas reglas.
Para que Fusdata interprete este texto como un verdadero mensaje debe ser enviado por el terminal respetando el siguiente formato:
IsText;XXXXXX;Message…;~
Donde:
“IsText” Es un encabezado que debe estar presente tal cual, respetando letras mayúsculas y minúsculas y sin espacios.
“XXXXXX” Es el Sender Id del equipo terminal que envía el mensaje.
Messaje.. Es el mensaje propiamente dicho que puede tener una longitud de hasta 160 caracteres.
~ Fin del mensaje. Carácter Ascii #126.
; Es el carácter separador de los campos. Debe ser punto y coma independientemente del tipo de trama o “Reglas de datos” con que trabaje el proyecto.
Por ejemplo si un terminal con Sender Id “C00000” enviara un mensaje “Hello!” para ser visualizado correctamente en la ventana de chat debe ser enviado:
IsText;C00000;Hello!;~