Para acceder al registro especial de datos que almacena el código de control del contador de alta velocidad y la salida de pulsos utilizar la variable del sistema sys_wHscOrPulseControlCode. (La variable del sistema sys_wHscOrPulseControlCode se corresponde con el registro especial de datos DT90052.)
Operaciones que se realizan por medio del código de control del contador de alta velocidad
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.
X0 Entrada del contador de alta velocidad
Cuando el bit 2 del código de control se pone a TRUE, no es posible realizar un reset por hardware utilizando la entrada especificada en el registro del sistema. El contaje continuará incluso si la entrada de reset pasa a TRUE. El reset por hardware está deshabilitado hasta que el bit 2 se pone a 0.
Operación de control de la entrada de contaje
X0 Entrada del contador de alta velocidad
Cuando el bit 1 del código de control se pone a TRUE, se inhabilita el contaje y el valor actual mantiene su valor. El contaje continúa cuando el bit 1 se pone a FALSE.
X0 Entrada del contador de alta velocidad
Cuando el bit 0 del código de control se pone a TRUE, se realiza un reset por software y el valor actual se pone a 0. El valor actual se mantiene a 0 hasta que el bit 0 se pone a FALSE.
Los bits del 0–15 del código de control se distribuyen en grupos de cuatro. El valor del bit en cada grupo, se representada por un número hexadecimal (por ejemplo 00020000 0000 1001 = 16#2009).
0: continuar/1: cancelar
0: habilitado/1: deshabilitado
0: permitir/1: prohibir
0: no/1: si
Ejemplo: 16#2009
Grupo |
Valor |
Descripción |
|
---|---|---|---|
IV |
2 |
Número de canal: 2 |
|
III |
0 |
(fijo) |
|
II |
0 |
(fijo) |
|
I |
9 |
9 Hex corresponde a 1001 binario |
|
Cancelar la instrucción del contador de alta velocidad: cancelar (bit 3) |
1 |
||
Entrada de reset: habilitado (bit 2) |
0 |
||
Contaje: permitir (bit 1) |
0 |
||
Resetear el valor actual. Poner a 0: si (bit 0) |
1 |
Los bits del 0 al 15 del código de control se distribuyen en grupos de cuatro, cada grupo contiene la configuración de un canal. El valor del bit en cada grupo, se representada por un número hexadecimal (por ejemplo 0000 0000 1001 0000 = 16#90).
0: continuar/1: cancelar
0: habilitado/1: deshabilitado
0: permitir/1: prohibir
0: no/1: si
Grupo |
IV |
III |
II |
I |
Canal |
3 |
2 |
1 |
0 |
Grupo |
Valor |
Descripción |
|
---|---|---|---|
IV |
0 |
– |
|
III |
0 |
– |
|
II |
9 |
Número de canal: 1 9 Hex corresponde a 1001 binario |
|
Cancelar la instrucción del contador de alta velocidad: cancelar (bit 3) |
1 |
||
Entrada de reset: habilitado (bit 2) |
0 |
||
Contaje: permitir (bit 1) |
0 |
||
Resetear el valor actual. Poner a 0: si (bit 0) |
1 |
||
I |
0 |
– |
Al poner la entrada de reset a TRUE, el valor actual pasa a 0. Utilizar la configuración de la entrada (bit 2) para deshabilitar la entrada en los registros del sistema.
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
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH0_RESET_ELAPSED_VALUE: WORD:=16#0001;
(*Resets elapsed value of channel 0*)
HSC_CH0_CONTINUE: WORD:=16#0000;
(*Continues counting in channel 0*)
END_VAR
VAR
END_VAR
Para comenzar a contar, el reset se realiza en el paso 1, y se introduce un 0 inmediatamente después en el paso 2. Un reset simplemente no inicia el contaje.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH0_RESET_ELAPSED_VALUE,22,2,24,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH0_CONTINUE,22,6,24,8,);
B(B_F,E_MOVE!,Instance,24,0,30,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,2,32,4,);
B(B_F,E_MOVE!,Instance,24,4,30,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,6,32,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,24,2);
L(8,6,24,6);
L(8,2,8,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
end_if;
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
bSoftwareReset: BOOL:=FALSE;
(*Activates the function*)
END_VAR
VAR CONSTANT
HSC_CH1_RESET_ELAPSED_VALUE: WORD:=16#1001;
(*Resets elapsed value of channel 1*)
HSC_CH1_CONTINUE: WORD:=16#1000;
(*Continues counting in channel 1*)
END_VAR
VAR
END_VAR
Para comenzar a contar, el reset se realiza en el paso 1, y se introduce un 0 inmediatamente después en el paso 2. Un reset simplemente no inicia el contaje.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,HSC_CH1_RESET_ELAPSED_VALUE,24,2,26,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH1_CONTINUE,24,6,26,8,);
B(B_F,E_MOVE!,Instance,26,0,32,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,2,34,4,);
B(B_F,E_MOVE!,Instance,26,4,32,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,6,34,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,26,2);
L(1,0,1,8);
L(8,6,26,6);
L(8,2,8,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bSoftwareReset) then
sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;