ONF_CTRL
Implementa um controlador liga-desliga (ON-OFF) com histerese sobre a variável de processo, com modos manual/automático, inversão da saída, congelamento e tempo mínimo entre comutações; é um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Bloco de função
ONF_CTRL
+---------------+
BOOL ----|RUN OUT|---- BOOL
| |
BOOL ----|INV |
| |
BOOL ----|MAN_AUT |
| |
BOOL ----|MAN_OUT |
| |
REAL ----|SP |
| |
REAL ----|PV |
| |
REAL ----|HIS |
| |
TIME ----|LOCK |
| |
BOOL ----|FREEZE |
+---------------+
Quando a entrada RUN está inativa a saída OUT é zero e o bloco de controle
não é executado.
Quando RUN está ativa, a entrada MAN_AUT define o comportamento do bloco.
Se MAN_AUT estiver inativa, o valor da saída é definido pela entrada MAN_OUT
(modo manual). Se MAN_AUT estiver ativa, o valor da saída é calculado em função
das entradas PV, SP e HIS (modo automático).
Os valores de PV, SP e HIS devem estar na mesma faixa de unidade de
engenharia.
Se o valor da histerese for maior que zero, o comportamento do controle é o seguinte:
|
| ...
| . ... ...
SP+HIS |_______________._______._____________.___._______
| ... . . .
| . .. . .
SP |________...________________.______._________.____
| .. .. . ..
| .. . .
| . .
PV |..
|
+-------------------------------------------------
OV |---------------+ +---------+ +----
| | | | |
+ +-----------+ +------+
Se PV >= SP + HIS => OV = FALSE
Se PV < SP => OV = TRUE
Se o valor da histerese for menor que zero, o comportamento do controle é o seguinte:
|
| ...
| . ... ...
SP |_______________._______._____________.___._______
| ... . . .
| . .. . .
SP-HIS |________...________________.______._________.____
| .. .. . ..
| .. . .
| . .
PV |..
|
+-------------------------------------------------
OV |---------------+ +---------+ +----
| | | | |
+ +-----------+ +------+
Se PV > SP => OV = FALSE
Se PV <= SP - HIS => OV = TRUE
A entrada INV, quando ativada, inverte o estado da saída de controle.
A entrada LOCK define um tempo mínimo para a variação da saída de controle. Ou
seja, se LOCK for igual a 5 segundos, a saída de controle, após alterar seu
estado, se manterá na mesma condição por pelo menos 5 segundos, mesmo que o bloco
de controle leve o sinal de saída para o outro estado.
Se a entrada FREEZE se tornar ativa, a saída de controle é mantida no estado
presente no instante da transição desse sinal.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
RUN |
IN |
BOOL |
TRUE |
— |
Habilita o controle (TRUE); desliga a saída quando FALSE. |
INV |
IN |
BOOL |
FALSE |
— |
Habilita o controle invertido (inverte o estado da saída). |
MAN_AUT |
IN |
BOOL |
TRUE |
— |
Modo manual (FALSE) ou automático (TRUE). |
MAN_OUT |
IN |
BOOL |
FALSE |
— |
Valor da saída de controle no modo manual. |
SP |
IN |
REAL |
0.0 |
Unid. de engenharia |
Setpoint do processo. |
PV |
IN |
REAL |
0.0 |
Unid. de engenharia |
Variável de processo. |
HIS |
IN |
REAL |
0.0 |
Unid. de engenharia |
Histerese de controle. |
LOCK |
IN |
TIME |
T#1s |
— |
Tempo de congelamento da saída após alteração de valor. |
FREEZE |
IN |
BOOL |
FALSE |
— |
Congela o valor da saída de controle no estado corrente. |
OUT |
OUT |
BOOL |
FALSE |
— |
Saída de controle. |
Pré-condições
PV,SPeHISdevem estar na mesma faixa de unidade de engenharia.RUNdeve estar ativa para que o bloco de controle seja executado.
Observações
Com
RUNinativa,OUTpermanece em FALSE e o controle não é processado.No modo manual (
MAN_AUTinativa),OUTacompanha diretamenteMAN_OUT.LOCKgarante um tempo mínimo entre comutações da saída;FREEZEmantém a saída no estado corrente enquanto ativo.
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
my_ONF : HILS.ONF_CTRL; (* Instancia do bloco ONF_CTRL *)
sp_value : REAL; (* Setpoint do processo *)
pv_value : REAL; (* Variável de processo *)
his_value : REAL; (* Histeresse de controle *)
END_VAR
(* Exemplo de utilização do ONF_CTRL *)
sp_value := 80.0; (* Setpoint do processo *)
pv_value := 70.0; (* Variável de processo, ler de uma entrada analógica *)
his_value := 1.5; (* Histeresse de controle *)
my_ONF(
RUN := TRUE,
(* INV := FALSE, nao necessita ser atribuido se controle direto *)
(* MAN_AUT:= TRUE, nao necessita ser atribuido se operando sempre em automatico *)
(* MAN_OUT:= FALSE, nao necessita ser atribuido se operando sempre em automatico *)
SP := sp_value,
PV := pv_value,
HIS := his_value
(* LOCK := T#1s, nao necessita ser atribuido se recurso de LOCK for de 1 seg *)
(* FREEZE := FALSE nao necessita ser atribuido se recurso de FREEZE nao for utilizado *)
);
IF my_ONF.OUT THEN
(* ... acao quando a saida de controle esta ativa ... *)
;
END_IF;