Control Cam para el FP0H
Esta instrucción realiza un control Cam según los parámetros de la DUT especificada, con un máximo de 32 valores objetivo de acuerdo con el valor actual del contador de alta velocidad. Para cada salida cam, el valor objetivo se establece como un par con un valor de ajuste ON y OFF.
Se puede ejecutar un programa de interrupción siempre que el valor actual coincida con uno de los valores de preselección.
Entrada
Canal del contador de alta velocidad: 0–3
Dirección de inicio del área que contiene la tabla de datos
Salida
Dirección de inicio (WR, WL o WY) del área que contiene la dirección (palabra), por ejemplo, BOOL32_OVERLAPPING_DUT. Seleccionar el tamaño (16 ó 32 bits) según el número establecido en diNumberOfTargetValuesAndOutputRelays.
Entrada
Crear su propia DUT utilizando la siguiente DUT como ejemplo: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT
Se pueden especificar los siguientes parámetros en la DUT:
Código de control
Dirección (palabra) para las salidas
Número de valores de preselección
(Valores de preselección ON/OFF de F165_HighSpeedCounter_Target_Values_OnOff_DUT)
Máximo valor de preselección
Rango: 1–2147483646 (16#1–16#7FFFFFFE)
Salida
Si el número de valores de preselección está en el rango de 1–16, se utiliza una palabra. Si el número de valores de preselección está en el rango de 17–32, se utilizan dos palabras.
Por ejemplo: Cuando la dirección de salida se ajusta a "Relé interno", el número de palabra base de la dirección de salida se ajusta a "0", y el número de valores objetivo se ajusta a "32", R0 a R1F son configurados como la dirección de la salida cam.
Cuando se ha especificado el relé de salida (Y), los valores son enviados tanto a la salida de la CPU como a las memorias de operación.
Ejemplo
1000–4999 R100: ON
7000–8999 R101: ON
Con F165_HighSpeedCounter_Cam, es posible realizar el control con un objetivo máximo especificado. Los ajustes para activar/desactivar el control de valores objetivo máximos y el valor objetivo máximo se especifican en la tabla de datos.
La tabla de datos varía entre 12 y 138 palabras en función del número de valores objetivo y del ajuste de valor objetivo máximo especificado.
El valor objetivo máximo del final de la tabla de datos solo es válido cuando el control del valor objetivo se ajusta a 16#0010 (con valor máximo) en dwCamControlCode. Este ajuste puede omitirse cuando el control del valor objetivo se ajusta a 16#0000 (sin valor máximo).
Habilitado |
Deshabilitado |
||
---|---|---|---|
Rango de contaje |
0 a valor objetivo |
Valor mínimo negativo a valor máximo positivo |
|
Operación cuando se supera el rango de contaje |
Contaje incremental: |
Cuando el valor de actual supera el valor objetivo, se ajusta a 0. |
Cuando el valor actual supera el valor máximo positivo, vuelve al valor mínimo negativo. |
Contaje decremental: El puntero a la tabla de datos se mueve desde el último valor objetivo al valor objetivo 1. |
Cuando el valor actual cae por debajo de 0, se establece en el valor objetivo. |
Cuando el valor actual cae por debajo del valor mínimo negativo, vuelve al valor máximo positivo. |
La salida varía en función del valor de preselección ON y del valor de preselección OFF.
Valor de preselección OFF > valor de preselección ON
Cuando el valor actual es mayor o igual que el valor de preselección ON y menor que el valor de preselección OFF, el bit de salida correspondiente se activa. Cuando el valor actual está fuera de rango, el bit correspondiente se desactiva.
Contaje incremental: |
Contaje decremental: |
---|---|
Valor de preselección OFF (1) > valor de preselección ON (2) ![]() |
Valor de preselección ON > valor de preselección OFF
Cuando el valor actual es menor que el valor de posición ON y mayor o igual que el valor de preselección OFF, el bit de salida correspondiente se desactiva. Cuando el valor actual está fuera de rango, el bit correspondiente se activa.
Contaje incremental: |
Contaje decremental: |
---|---|
Valor de preselección ON (1) > valor de preselección OFF (2) ![]() |
Valor de preselección ON = valor de preselección OFF
Cuando el valor actual está fuera de rango, el bit correspondiente se desactiva.
Contaje incremental: |
Contaje decremental: |
---|---|
Valor de preselección ON (1) > valor de preselección OFF (2) ![]() |
Seleccionar la entrada del contador de alta velocidad para el canal determinado en los registros del sistema.
Cuando se ejecuta una instrucción del contador de alta velocidad, la bandera control del contador de alta velocidad (por ejemplo, sys_bIsHscChannel0ControlActive) del canal utilizado pasa a TRUE. No se puede ejecutar otra instrucción del contador de alta velocidad utilizando el mismo canal mientras que la bandera de control esté a TRUE.
Se puede ejecutar la instrucción simultáneamente en un máximo de dos canales.
Para cancelar la ejecución de la instrucción, poner a TRUE el bit 3 del registro de datos que almacena el código de control del contador de alta velocidad (sys_wHscOrPulseControlCode). La bandera de control del contador de alta velocidad pasa a FALSE. Para habilitar la ejecución de la instrucción del contador de alta velocidad, poner el bit 3 a FALSE. Cuando se ajusta el bit 3 de sys_wHscOrPulseControlCode a TRUE, también se desactiva el control del valor objetivo máximo. Cuando se detiene el control del valor objetivo máximo, la salida cam se mantiene y el contador de alta velocidad sigue contando.
Poner a cero o preestablecer el valor actual del contador de alta velocidad antes de activar la instrucción.
Sobrescribir el valor actual del canal utilizado en la ejecución de la instrucción puede causar un funcionamiento inesperado.
Si la instrucción se ejecuta en el programa principal, asegurarse de que el intervalo de tiempo entre los valores de preselección adyacentes es mayor que el ciclo de scan.
Si la instrucción se ejecuta en un programa de interrupción, asegurarse de que el intervalo de tiempo mínimo entre valores de preselección adyacentes es mayor que el máximo tiempo de ejecución del programa de interrupción.
Cuando se utiliza una entrada de reset o un reset por software, comprobar que el valor de preselección 1 es un entero y ³ 1.
Cuando se usa el control de valor máximo junto con una entrada de reset o un reset por software, tener la precaución de no utilizarlos la vez.
Cuando se ejecuta el reset por hardware o el reset por software durante el control del contador de alta velocidad, el valor actual del contador de alta velocidad se pone a 0. La salida asignada a la salida cam será la salida correspondiente al valor actual de proceso 0.
También es posible iniciar el programa de interrupción INTn cada vez que el valor actual alcanza los valores objetivo. Para esta operación, la activación del programa de interrupción debe ser permitida por la instrucción de control de interrupción ICTL.
si el valor de preselección > el valor de preselección máximo.
si el valor de preselección = 0.
si los valores de preselección no están ordenados en sentido ascendente.
si el valor de preselección > el valor de preselección máximo.
si el valor de preselección = 0.
si los valores de preselección no están ordenados en sentido ascendente.
La DUT FF165_HighSpeedCounter_Cam_8_Values_OnOff_DUT está predefinida en la FP Library y se puede utilizar como un ejemplo.
En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
VAR
bEnable: BOOL:=FALSE;
dutF165FP0H_CH0: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT;
END_VAR
VAR_EXTERNAL
g_dutCamControl_WY0: BOOL32_OVERLAPPING_DUT;
END_VAR
La función se ejecuta cuando la variable bEnable se encuentra a TRUE.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,bEnable,5,1,7,3,);
B(B_F,F165_HighSpeedCounter_Cam!,,14,0,28,5,,?DEN?HiHscChannel?Ds_dutDataTable?AENO?CdutBitOutputs);
B(B_VARIN,,0,12,2,14,4,);
B(B_VAROUT,,g_dutCamControl_WY0,28,2,30,4,);
B(B_VARIN,,dutF165FP0H_CH0,12,3,14,5,);
L(1,0,1,6);
L(1,2,5,2);
L(7,2,14,2);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bEnable) then
F165_HighSpeedCounter_Cam(iHscChannel := 0, s_dutDataTable := dutF165FP0H_CH0,
dutBitOutputs => g_dutCamControl_WY0);
end_if;