RAMP
Gera uma rampa linear da saída de X0 até X1 ao longo de um período TR, mantendo o rastreamento de X0 enquanto inativa. É um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: IEC_STD · Namespace: IEC · Tipo: bloco de função
Bloco de função
RAMP
+-----+
RUN---| |---BUSY
| |
X0---| |---XOUT
| |
X1---| |
| |
TR---| |
+-----+
Com RUN em FALSE, a saída XOUT acompanha (track) o valor de X0. Na
transição de RUN para TRUE, o bloco inicia a rampa de XOUT a partir do valor
corrente de X0 em direção a X1, percorrendo o intervalo no tempo TR.
Durante o trajeto BUSY permanece em TRUE; ao alcançar X1, BUSY retorna a
FALSE e XOUT passa a acompanhar X1.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
RUN |
IN |
BOOL |
FALSE |
— |
FALSE: rastreia |
X0 |
IN |
REAL |
0.0 |
— |
Valor inicial da rampa (valor rastreado enquanto |
X1 |
IN |
REAL |
0.0 |
— |
Valor final da rampa (valor de destino/rastreado ao término). |
TR |
IN |
TIME |
T#0ms |
— |
Duração total da rampa. |
BUSY |
OUT |
BOOL |
FALSE |
— |
TRUE durante a execução da rampa. |
XOUT |
OUT |
REAL |
0.0 |
— |
Valor de saída corrente da rampa. |
Observações
Enquanto
RUNestiver em FALSE,XOUTsegueX0(modo track).TRdefine o tempo total do percurso deX0aX1; comTRigual aT#0msa saída assumeX1imediatamente.
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
my_RAMP : RAMP; (* Instancia do bloco RAMP *)
RAMP_RUN : BOOL; (* Comando de execucao da rampa *)
RAMP_X0 : REAL; (* Valor inicial da rampa *)
RAMP_X1 : REAL; (* Valor final da rampa *)
RAMP_TR : TIME; (* Duracao da rampa *)
END_VAR
(* inicializa parametros para o bloco RAMP *)
(* por exemplo, rampa dos valores 0.0 a 100.0 em 30 seg. *)
RAMP_X0 := 0.0; (* parametro X0 *)
RAMP_X1 := 100.0; (* parametro X1 *)
RAMP_TR := T#30s; (* parametro TR *)
(* executa o bloco RAMP *)
my_RAMP(
RUN := RAMP_RUN, (* RUN *)
X0 := RAMP_X0, (* X0 *)
X1 := RAMP_X1, (* X1 *)
TR := RAMP_TR (* TR *)
);
(* testa se a rampa esta em andamento *)
IF my_RAMP.BUSY THEN
IF my_RAMP.XOUT < 50.0 THEN
(* ... *)
END_IF;
ELSE
(* ... *)
END_IF;