Las fórmulas se usan para calcular los valores y los estados de los canales de entrada, así como para calcular los valores de los comandos. El procesamiento de las fórmulas es realizada por la aplicación Server (Servidor).
Las fórmulas se ingresan en la columna Formula de las tablas Input channels (Canales de entrada) y Output Channels (Canales de salida) de la base de datos de configuración. Para habilitar una fórmula, marque la casilla en la columna Formula used (Fórmula utilizada). La tabla Formulas contiene funciones adicionales y estructuras de datos que pueden utilizarse en las fórmulas para los canales de entrada y salida.
Las reglas generales de escritura y uso de fórmulas son:
Reglas para calcular fórmulas para los canales de entrada:
Reglas para calcular fórmulas para los canales de salida:
Los variables accesibles en las fórmulas son:
Variable | Tipo de valor | Descripción |
---|---|---|
CnlVal, Cnl | double | El valor del canal de entrada transmitido al Servidor antes del cálculo |
CnlStat | int | El estado del canal de entrada transmitido al Servidor antes del cálculo |
CmdVal, Cmd | double | El valor del comando transmitido al Servidor antes del cálculo |
CmdData | byte[] | Los datos del comando transmitidos al Servidor antes del cálculo |
CnlNum | int | El número de canal para el cual se calcula la fórmula |
E | double | La base de un logaritmo natural especificada por la constante e |
PI | double | La relación entre la circunferencia y el diámetro de un círculo especificada por la constante, π |
Funciones accesibles en las fórmulas:
Función | Tipo de valor | Descripción |
---|---|---|
N(n) | int | Devuelve el número del canal especificado para actualizar los números al clonar |
Val() | double | Obtiene el valor actual del canal de la fórmula |
Val(n) | double | Obtiene el valor actual del canal n |
SetVal(n, val) | double | Establece el valor actual del canal n |
Stat() | int | Obtiene el estado actual del canal de la fórmula |
Stat(n) | int | Obtiene el estado actual del canal n |
SetStat(n, stat) | int | Establece el estado actual del canal n |
SetData(n, val, stat) | double | Establece el valor y el estado actual del canal n |
Abs(x) | double | Calcula el valor absoluto de un número |
Sin(x) | double | Calcula el seno del ángulo especificado |
Cos(x) | double | Calcula el coseno del ángulo especificado |
Tan(x) | double | Calcula la tangente del ángulo especificado |
Exp(x) | double | Calcula e elevado a la potencia especificada |
Ln(x), Log(x) | double | Calcula el logaritmo natural (base e) del número especificado |
Sqr(x) | double | Calcula el cuadrado de un número especificado |
Sqrt(x) | double | Calcula la raíz cuadrada de un número especificado |
Fórmulas adicionales, incluidas las fórmulas para el calcular promedios, están disponibles en GitHub.
Un desarrollador que crea fórmulas personalizadas tiene que verificar la sintaxis de las fórmulas y validar que funcionen correctamente. Si el servicio del Servidor no puede compilar las fórmulas en el inicio, se escribirá información sobre el error en el archivo de registro del Servidor (Server log file) y el código fuente de las fórmulas que el Servidor trata de compilar estará disponible en CalcEngine.cs, ubicado en el directorio de registro del Servidor, por defecto C:\SCADA\ScadaServer\Log\
Para desarrollar fórmulas complejas se recomienda usar Microsoft Visual Studio Community Edition. Añada una referencia al conjunto FormulaTester.dll en el proyecto. Como ejemplo, utilice el proyecto mencionado anteriormente que contiene fórmulas.