Descripción
La instrucción "Algoritmo Lead y Lag" procesa señales con una variable analógica. El valor de la ganancia en el parámetro GAIN debe ser mayor que cero. El resultado de la instrucción "Algoritmo Lead y Lag" se calcula con la siguiente ecuación:
La instrucción "Algoritmo Lead y Lag" solo devuelve resultados relevantes cuando se ejecuta en ciclos de programa fijos. Deben indicarse las mismas unidades en los parámetros LD_TIME, LG_TIME y SAMPLE_T. Si LG_TIME > 4 + SAMPLE_T, la instrucción se aproxima a la siguiente función:
OUT = GAIN * ((1 + LD_TIME * s) / (1 + LG_TIME * s)) * IN
Si el valor del parámetro GAIN es menor o igual a cero, no se realiza el cálculo y el parámetro ERR_CODE devuelve una información de error.
La instrucción "Algoritmo Lead y Lag" puede utilizarse junto con bucles para la compensación en el control anticipativo. La instrucción comprende dos operaciones. La operación "Lead" desplaza la fase de la salida OUT, anticipándose la salida a la entrada. En cambio, la operación "Lag" desplaza la salida, de manera que la salida sigue a la entrada. Puesto que la operación "Lag" equivale a una integración, puede utilizarse como supresor de perturbaciones o filtro de paso bajo. La operación "Lead" equivale a una acción diferencial, por lo que puede utilizarse como un filtro de paso alto. La combinación de ambas operaciones (Lead y Lag) hace que la fase de salida siga a la entrada a bajas frecuencias y se le anticipe a altas frecuencias. Por este motivo, la instrucción "Algoritmo Lead y Lag" puede utilizarse como si fuera un filtro de paso de banda.
Al insertar la instrucción en el programa, el cuadro de diálogo "Opciones de llamada" se abre automáticamente; en él se puede determinar si los parámetros de bloque de la instrucción se depositan en un bloque de datos propio (instancia individual) o bien como variable local (multiinstancia) en la interfaz del bloque. Si crea un bloque de datos propio, lo encontrará en el árbol del proyecto, en la carpeta "Recursos de programa", en "Bloques de programa > Bloques de sistema". Encontrará más información al respecto en "Consulte también".
Parámetros
La tabla siguiente muestra los parámetros de la instrucción:
|
Parámetro |
Declaración |
Tipo de datos |
Área de memoria |
Descripción |
|---|---|---|---|---|
|
IN |
Input |
REAL |
I, Q, M, D, L, P |
Valor de entrada del tiempo de muestreo actual (tiempo de ciclo) que se procesa. En el parámetro IN también se pueden indicar constantes. |
|
SAMPLE_T |
Input |
INT |
I, Q, M, D, L, P |
Tiempo de muestreo En el parámetro SAMPLE_T también se pueden indicar constantes. |
|
OUT |
Output |
REAL |
I, Q, M, D, L, P |
Resultado de la instrucción |
|
ERR_CODE |
Output |
WORD |
I, Q, M, D, L, P |
Información de error |
|
LD_TIME |
Static |
REAL |
I, Q, M, D, L, P |
Tiempo de anticipación en la misma unidad que el tiempo de muestreo. |
|
LG_TIME |
Static |
REAL |
I, Q, M, D, L, P |
Tiempo de seguimiento en la misma unidad que el tiempo de muestreo. |
|
GAIN |
Static |
REAL |
I, Q, M, D, L, P |
Ganancia en % / % (relación del cambio en la salida con respecto al cambio en la entrada como estado constante). |
|
PREV_IN |
Static |
REAL |
I, Q, M, D, L, P |
Entrada anterior |
|
PREV_OUT |
Static |
REAL |
I, Q, M, D, L, P |
Salida anterior |
Encontrará más información sobre los tipos de datos válidos en "Consulte también".
Los parámetros estáticos no son visibles al efectuar la llamada de la instrucción en el programa. Estos se almacenan en la instancia de la instrucción.
Parámetro ERR_CODE
La tabla siguiente muestra el significado de los valores del parámetro ERR_CODE:
|
Código de error* |
Explicación |
|---|---|
|
0000 |
Ningún error |
|
0009 |
El valor del parámetro GAIN es menor o igual a cero. |
|
*En el editor de programas, los códigos de error se pueden representar como valores enteros o hexadecimales. Encontrará más información sobre el cambio de los formatos de visualización en "Consulte también". |
|
Ejemplo
El siguiente ejemplo muestra el funcionamiento de la instrucción:
|
Nota Los parámetros estáticos pueden inicializarse en el bloque de datos. |
|
"LEAD_LAG_DB"(IN := "Tag_Input", SAMPLE_T := "Tag_Input_SAMPLE_T", OUT => "Tag_Output_Result", ERR_CODE => "Tag_ErrorCode"); |
Las tablas siguientes muestran el funcionamiento de la instrucción con valores concretos.
Antes de la ejecución
En este ejemplo se utilizan los siguientes valores para los parámetros de entrada:
|
Parámetro |
Operando |
Valor |
|---|---|---|
|
IN |
Tag_Input |
2.0 |
|
SAMPLE_T |
Tag_Input_SAMPLE_T |
10 |
Los siguientes valores se almacenan en el bloque de datos de instancia "LEAD_LAG_DB" de la instrucción:
|
Parámetro |
Dirección |
Valor |
|---|---|---|
|
LD_TIME |
DBD12 |
2.0 |
|
LG_TIME |
DBD16 |
2.0 |
|
GAIN |
DBD20 |
1.0 |
|
PREV_IN |
DBD24 |
6.0 |
|
PREV_OUT |
DBD28 |
6.0 |
Después de la ejecución
Una vez ejecutada la instrucción, los valores siguientes se escriben en los parámetros de salida:
|
Parámetro |
Operando |
Valor |
|---|---|---|
|
OUT |
Tag_Output_Result |
2.0 |
Los siguientes valores se guardan en el bloque de datos de instancia "LEAD_LAD_DB" de la instrucción:
|
Parámetro |
Operando |
Valor |
|---|---|---|
|
PREV_IN |
DBD24 |
2.0 |
|
PREV_OUT |
DBD28 |
2.0 |