Documentación Técnica - Módulo "Lógicas"
El módulo "Lógicas" es una sección dentro del software SCADA que permite a los usuarios crear y ejecutar código escrito estructurado en tiempo real. Este código sigue una sintaxis similar a BASIC, pero con características específicas del sistema.
El módulo "Lógicas" permite la creación de pequeños programas personalizados que pueden ejecutarse dentro del SCADA al presionar el botón de "Conexión". Estas lógicas pueden ser utilizadas para:
Controlar dispositivos o señales del sistema.
Realizar cálculos o procesar datos en tiempo real.
Automatizar respuestas ante eventos dentro del SCADA.
Las lógicas son administradas a través de un menú contextual en el árbol de sistema.
Hacer clic derecho en el árbol de sistema.
Seleccionar la opción "Lógicas" en el menú.
Aparecerán dos opciones:
Nueva lógica: Permite crear una nueva hoja de código.
Borrar lógica: Elimina una lógica existente.
Seleccionar "Nueva lógica" en el menú.
Se abrirá una ventana emergente solicitando el nombre de la nueva hoja de código.
Una vez asignado el nombre, se generará un editor de código similar a una hoja de texto, con una columna lateral que numera las líneas de código.
Una lógica se ejecuta en tiempo real cuando el usuario presiona el botón "Conexión".
El motor de ejecución procesa las instrucciones secuencialmente, respetando la sintaxis específica del sistema.
A continuación, se presentan las palabras reservadas utilizadas en el lenguaje estructurado del módulo "Lógicas", junto con su descripción y ejemplos de uso.
Las constantes en el lenguaje estructurado del módulo "Lógicas" son valores predefinidos que pueden ser asignados a variables dentro de una lógica. En esta versión del sistema, las constantes solo pueden utilizarse para asignaciones directas a variables, pero no pueden emplearse en sentencias de control de f lujo como IF o ELSEIF.
Las únicas constantes disponibles son las de tipo booleano:
Restricciones:
No se pueden utilizar en sentencias IF o ELSEIF, solo en asignaciones.
Los operadores booleanos en el lenguaje estructurado del módulo "Lógicas" permiten la creación de expresiones lógicas combinadas, que pueden ser utilizadas tanto en asignaciones como en estructuras de control.
Lista de operadores booleanos disponibles:
Los operadores matemáticos son esenciales para realizar operaciones aritméticas en el lenguaje estructurado del módulo "Lógicas". Estos permiten manipular valores numéricos, ya sea a través de constantes o variables de tipo Mag (enteros). La sintaxis soporta las operaciones básicas de suma, resta, multiplicación, y división, pero con ciertas restricciones que debes tener en cuenta.
2.1.3.1 Mejor Práctica
La verificación previa de división es una buena práctica es realizar una verificación antes de intentar dividir. De esta manera, te aseguras de que no se realice ninguna división por cero, evitando posibles fallos en el sistema, como se muestra en el siguiente pseudocódigo:
Valores Enteros: Los operadores matemáticos solo pueden ser utilizados con valores enteros (tipo Mag). No se pueden realizar operaciones con números de punto decimal o flotantes. Esto es importante para evitar errores de precisión o incompatibilidades con el sistema.
Combinadas: Los operadores matemáticos pueden combinarse con operadores lógicos y de comparación para realizar operaciones complejas.
Sin Flotantes: Como se mencionó anteriormente, debes tener cuidado de no usar números flotantes. Si necesitas trabajar con decimales, sería necesario convertir la lógica o utilizar valores enteros escalados.
División por Cero: Recuerda siempre implementar validaciones para evitar la división por cero.
Los operadores de comparación en el lenguaje estructurado del módulo "Lógicas" permiten comparar valores numéricos o variables de tipo Mag para tomar decisiones dentro de las estructuras condicionales (como IF y ELSE). Estos operadores son esenciales para crear lógicas que respondan a diversas condiciones, ayudando al sistema a realizar acciones dependiendo de los valores que se están evaluando.
2.1.4.1 Consideraciones y Buenas Prácticas
Precisión en Comparaciones: Aunque se pueden usar los operadores de comparación para realizar evaluaciones simples, siempre es importante asegurarse de que las variables involucradas contengan los valores esperados antes de hacer la comparación, especialmente cuando se trabajan con datos provenientes de sensores o cálculos complejos.
Evitar Comparaciones con Flotantes: Al igual que con los operadores matemáticos, es importante recordar que en esta versión del lenguaje no se pueden realizar comparaciones con valores flotantes. Asegúrate de trabajar con enteros cuando uses operadores de comparación.
Combinación de Operadores: Los operadores de comparación pueden combinarse con otros operadores lógicos (como AND o OR) para crear expresiones más complejas. Esto es muy útil cuando se necesitan múltiples condiciones a evaluar antes de tomar una decisión.
En el lenguaje de programación de "Lógicas", la estructura condicional se utiliza para tomar decisiones dentro del código, determinando qué bloque de instrucciones se ejecutará dependiendo de las condiciones evaluadas. Esta estructura es clave para el funcionamiento dinámico de la lógica dentro de un SCADA, ya que permite la ejecución de diferentes acciones según las variables o condiciones en tiempo real. La estructura de control en este caso es muy similar a la de otros lenguajes como BASIC, lo que facilita su comprensión y uso. Los bloques condicionales se encierran entre las palabras clave IF, ELSEIF, ELSE, y ENDIF.
2.1.5.1 Explicación de la Estructura de Control
La estructura de control condicional permite evaluar una serie de condiciones de manera secuencial. Si una condición es verdadera, se ejecuta el bloque de código correspondiente a esa condición. Si no, el flujo del programa verifica la siguiente condición o pasa al bloque ELSE, si está presente, para ejecutar una acción predeterminada.
2.1.5.2 Sintaxis General
La sintaxis general para una estructura de control IF es la siguiente:
IF <condición> THEN
<acciones si la condición es verdadera>
ELSEIF <otra condición> THEN
<acciones si esta nueva condición es verdadera>
ELSE
<acciones si ninguna de las condiciones anteriores es verdadera>
ENDIF