Objetivo del artículo
Este artículo propone una metodología de uso para las Dynamos en Proficy iFIX, evitando algunas de las limitaciones que tiene iFIX a la hora de sustituir las expresiones desde su formulario estándar de configuración de Dynamos.
Un segundo artículo, continuación de éste, introduce un procedimiento más avanzado que remplaza el formulario estándar por una versión totalmente customizada. De esta forma, se permite trabajar con TagGroups e incluso con el modelo de object "Types" e "instances" disponible a partir de iFIX v6.5.
Para acceder a este artículo de continuación, puede utilizar el enlace:
Uso de Dynamos en iFIX, en combinación con Modelos de Clase
Sobre las Dynamos de Proficy iFIX
En iFIX, las Dynamos son objetos gráficos inteligentes y reutilizables, que combinan símbolos visuales con lógica incorporada, para facilitar el desarrollo de aplicaciones SCADA. Una Dynamo contiene propiedades preconfiguradas:
Enlaces a tags (dinámicos)
Animaciones (color, movimiento, visibilidad, etc.)
Scripts VBA
Tooltips y comentarios
Comportamientos personalizados
¿Para qué sirven las Dynamos?
Estandarizan la representación de equipos, sensores o procesos.
Aceleran el diseño de pantallas: se arrastran desde una librería y se configuran fácilmente.
Reducen errores: evitas repetir configuraciones manuales.
Facilitan el mantenimiento: actualizas un Dynamo y puedes aplicar los cambios a todas sus instancias.
¿Dónde se encuentran?
Se gestionan desde el Dynamo Manager, accesible desde Workspace > Tools > Dynamo Manager.
Se agrupan en bibliotecas de Dynamos (
ficheros "*.fds"
)
Pasos recomendados para creación de Dynamos
Creación del elemento gráfico de base
El elemento gráfico se crea normalmente desde el editor de iFIX. Para la creación se podrá incluir expresiones para a animar textos, propiedades gráficas y demás. Típicamente se tratará de un elemento complejo, formado por formas, datalinks, etc. En el ejemplo de la derecha: elemento compuesto de un datalink y un cuadrado.
| ![]() |
Para cubrir un caso lo más general posible, se propone utilizar referencias dinámicas (sustituciones) en las expresiones del elemento gráfico. Esto implica que, en los ejemplos presentados a continuación, se utilizará la sintaxis "@nombreSustitucion@", en lugar de nombres de tags explícitos de la PDB.
En la imagen siguiente se presenta el ejemplo concreto de la animación del DataLink. De esta forma, en lugar de referenciar tags concretos de la PDB, se utilizará símbolos que permitan automatizar su sustitución a través de "Tag Groups". Para más información sobre este punto, puede consultarse el enlace de "Using Tag Groups in Pictures" de la documentación online de iFIX | ![]() |
Adicionalmente, si nuestro objeto presenta expresiones complejas más allá de una referencia a un tag, se recomienda crear una variable de pantalla dentro del elemento gráfico para que contenga la referencia al tag. Éste sería el caso de la animación de la visibilidad del cuadrado, que estaría vinculada a una expresión como "@valor01@ > 1".
Para conseguir ésto, se añade un nuevo elemento gráfico, del tipo variable de pantalla ("variableName1"), que se arrastra dentro del grupo, pasando a formar parte de él. A continuación, se asigna a la propiedad "InitialValue" de esta variable la misma sustitución que al resto de expresiones del elemento gráfico ("@variable01@") | ![]() |
NOTA: Es importante que "variableName2" sea del tipo "String", ya que contendrá el nombre de un tag de la PDB.
Creación de la Dynamo
Con el desarrollo del elemento gráfico completado, se procede a convertirlo en Dynamo.
Para ello hay que hacer botón derecho sobre él y seleccionar la opción "Dynamo". Tras esto, aparecerá un menú automático de iFIX con todas las referencias a tags que contenga el elemento gráfico.
Aquí será importante darle nombre, tanto a la futura Dynamo como a la instancia ("object") de ésta, que será el rol que tomará desde ahora el elemento gráfico sobre el que estamos trabajando.
Pero como las tres queremos referirlas a un mismo tag de la PDB, nos encargamos de que en el "UserPrompt" se llamen igual. De esta forma, cuando se instancie una dynamo para su uso en pictures, solamente habrá un campo a rellenar, y no 3 distintos. | ![]() |
El resultado será que el objeto sobre el que se lanzó el comando "Dynamo", pasa a ser una instancia de una nueva Dynamo, y como tal quedará representado en el Workspace
En su nueva condición como instancia de una Dynamo, este elemento gráfico pasará a tener varias propiedades que conviene destacar:
- Dynamo_ID: Referencia interna de iFIX para vincular cualquier instancia de Dynamo con la Maestra
- Dynamo_Description: Descripción de la instancia de Dynamo
El paso siguiente consiste en arrastrar esta primera instancia de Dynamo a un "Dynamo Set" (archivo "*.fds"). En este ejemplo que estamos elaborando, el archivo de Dynamos se denomina "ControlLoop.fds" y en él podemos ver como se aloja la que será la "MasterDynamo", junto con otras 2 Dynamos | ![]() |
Desde este momento, para crear una instancia de Dynamo, simplemente habrá que arrastrar y soltar esta "MasterDynamo" en la pantalla en la que se desee utilizar. Tras hacer ésto, aparecerá automáticamente el formulario para que el usuario defina los nombres de los tags de PDB que se quiere utilizar en las expresiones de la Dynamo.
Ejemplo de formulario, en el que se puede ver como se solicita al usuario únicamente 1 parámetro "NombreVariable", que la Dynamo utilizará internamente para resolver las 3 expresiones definidas en las etapas anteriores del ejemplo Sin embargo, se podrá observar como la expresión "compleja" como es el caso de la visibilidad del rectángulo no queda bien resuelta. El sistema sustituye únicamente el nombre del tag, y no tiene en cuenta la expresión booleana "nombreTag > 1", tal y como en realidad se pretendía obtener. Para resolver ésto, se utilizará la variable "variableName" que se habría introducido durante la creación de la Dynamo. | ![]() |
Desde una instancia de Dynamo ubicada en una "picture" de iFIX (nunca directamente en la "MasterDynamo" del "DynamoSet") se procede a llamar al código VB. Se pede observar como hay un pequeño script VB que contiene la llamada al formulario estándar de la Dynamo ("EditDynamo")
![]() | ![]() |
Por otro lado, vemos que, para esa misma instancia de Dynamo, la expresión de visibilidad del recuadro sobre la que queremos actuar sería "Lookup16". | Por lo tanto, se modifica el código para que, tras procesar el formulario de configuración de Dynamo, se corrija la condición de visibilidad del rectángulo, en función de la animación que realmente se pretende obtener:![]() |
Es así como conseguimos que la sustitución resuelva correctamente el caso de la animación de la visibilidad del rectángulo.
Por último, se procede a actualizar la "MasterDynamo". Para ello, simplemente hay que arrastrar la instancia corregida de la Dynamo, que contiene la modificación anterior, y soltarla sobre el archivo del "DynamoSet" correspondiente. Al hacer ésto, el sistema solicita confirmación sobre cómo proceder. En este caso, se optará por solicitar una sobreescritura ("overwrite") de la MasterDynamo relacionada con la instancia que se ha modificado | ![]() |