CYCLE_CTRL

Controla a habilitação cíclica de 2 a 4 equipamentos com base em tempos de operação, comutando o canal ativo conforme o tempo de ciclo, eventos de troca e sinais de desabilitação; é um bloco de função (mantém estado entre scans; requer instância). Bloco obsoleto, mantido apenas por compatibilidade.

Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função

Nota

Este bloco está obsoleto e é mantido na biblioteca apenas para compatibilidade com aplicações legadas.

Considere a possibilidade de utilizar o bloco MOT_CYCLE que possui os mesmos recursos e suporte para qualquer número de equipamentos (motores).

Bloco de função

                 CYCLE_CTRL
          +----------------------+
 BOOL ----|EN                 ENO|---- BOOL
          |                      |
 BOOL ----|RUN                EVT|---- BOOL
          |                      |
 BOOL ----|SWITCH       ON_CYC_SW|---- BOOL
          |                      |
 BOOL ----|ACK_CYC_SW        FAIL|---- BOOL
          |                      |
USINT ----|MAX_CH         END_CYC|---- TIME
          |                      |
 TIME ----|CYC_TIME              |
          |                      |
 BOOL ----|HOLD ---------------- |----
          |                      |
 BOOL ----|DIS ----------------- |----
          |                      |
 BOOL ----|OUT ----------------- |----
          |                      |
  INT ----|SEL_OUT ------------- |----
          +----------------------+

Recebe um vetor de até 4 canais digitais e é responsável por definir um único canal ativo em um dado momento, com base nos seguintes critérios:

  • tempo de ciclo;

  • comutação por evento;

  • desabilitação do canal.

Tempo de ciclo

O parâmetro de entrada CYC_TIME é responsável por definir um período de tempo para manter um dado canal ativo. Em uma condição normal de operação os canais de saída (OUT) serão ativados ciclicamente a cada intervalo de tempo definido por CYC_TIME, conforme indicado no diagrama a seguir:

   |
   |----------+                                +----------+
   |          |                                |          |
O3 |          +--------------------------------+          +-----------------
   |
   |          +----------+                                +---------+
   |          |          |                                |         |
O2 |----------+          +--------------------------------+         +-------
   |
   |                     +----------+                               +-------
   |                     |          |                               |
O1 |---------------------+          +-------------------------------+
   |
   |                                +----------+
   |                                |          |
O0 +--------------------------------+          +---------------------------
                                    : CYC_TIME :

Comutação por evento

Sempre que a entrada SWITCH alterar o estado de inativo para ativo (transição de subida) é acionada uma nova transição das saídas, mesmo que o tempo de ciclo definido não tenha transcorrido. Quando a nova saída selecionada for ativada o tempo de ciclo é reinicializado.

       : CYC_TIME :                     : CYC_TIME :
       |----------+                     +----------+
       |          |                     |          |
    O3 |          +---------------------+          +-----------------
       |                                           : CYC_TIME :
       |          +--+                             +----------+
       |          |  |                             |          |
    O2 |----------+  +-----------------------------+          +------
       |             : CYC_TIME :
       |             +----------+                             +------
       |             |          |                             |
    O1 |-------------+          +-----------------------------+
       |
       |                        +------+
       |                        |      |
    O0 +------------------------+      +-----------------------------
       |
       |             +--+              +-+
       |             |  |              | |
SWITCH +-------------+  +--------------+ +---------------------------

Desabilitação do canal

O parâmetro de entrada DIS é um vetor que define quais canais estão desabilitados para serem selecionados como canal ativo. Quando o valor estiver ativo o canal associado não participa da seleção do próximo canal. Se o canal desabilitado for o canal ativo o bloco seleciona o próximo canal disponível automaticamente.

O gráfico seguinte apresenta cenários do comportamento dos canais em função da ocorrência de alguma falha sinalizada nas entradas DIS.

     |                >| CYC |<
     |-----+           +-----+        +-----+                 +-----+           +---
     |     |           |     |        |     |                 |     |           |
  O3 |     +-----------+     +--------+     +-----------------+     +-----------+
     |     +-----+           +-----+        +-----+                 +-----+
     |     |     |           |     |        |     |                 |     |
  O2 |-----+     +-----------+     +--------+     +-----------------+     +----------
     |                                            +-----+                 +-----+
     |                                            |     |                 |     |
  O1 |--------------------------------------------+     +-----------------+     +----
     |           +-----+           +--+
     |           |     |           |  |
  O0 +-----------+     +-----------+  +----------------------------------------------
     |
     |
DIS3 |-------------------------------------------------------------------------------
     |
     |
DIS2 |-------------------------------------------------------------------------------
     |        +-------------------------------+
     |        |<- falha no eqp 1              |
DIS1 |--------+                               +--------------------------------------
     |                                +----------------------------------------------
     |                                |<- falha no eqp 0
DIS0 +--------------------------------+

Parâmetros

Nome

Direção

Tipo

Dimensão

Padrão

Faixa / Unidade

Descrição

EN

IN

BOOL

—

TRUE

—

Habilita a operação do bloco.

RUN

IN

BOOL

—

FALSE

—

Desativa (0) / ativa (1) o controle das saídas.

SWITCH

IN

BOOL

—

FALSE

—

Força uma troca da saída ativa (avaliada por transição de subida).

ACK_CYC_SW

IN

BOOL

—

TRUE

—

Autoriza a comutação do canal por tempo de ciclo.

MAX_CH

IN

USINT

—

2

2 .. 4

Número de canais (equipamentos) a serem controlados.

CYC_TIME

IN

TIME

—

T#2h

= 10 s

Tempo de ciclo das saídas de controle.

HOLD

IN_OUT

BOOL

[*]

FALSE

—

Congela o tempo de ciclo do canal associado, quando selecionado.

DIS

IN_OUT

BOOL

[*]

FALSE

—

Desabilita a operação da saída associada (remove o canal da seleção).

OUT

IN_OUT

BOOL

[*]

FALSE

—

Vetor das saídas de controle dos equipamentos.

SEL_OUT

IN_OUT

INT

—

0

-1 .. MAX_CH-1

Número do canal de saída ativo (-1 = nenhum ativo). Pode ser atribuído para forçar um canal.

ENO

OUT

BOOL

—

FALSE

—

Saída de habilitação (espelha EN).

EVT

OUT

BOOL

—

FALSE

—

Pulso de evento na alteração da saída ativa.

ON_CYC_SW

OUT

BOOL

—

FALSE

—

Indica que a saída corrente será comutada por tempo.

FAIL

OUT

BOOL

—

FALSE

—

Falha no processamento do bloco (condição não operacional).

END_CYC

OUT

TIME

—

T#0ms

ms

Tempo restante para o fim do ciclo corrente.

Pré-condições

  • MAX_CH deve estar entre 2 e 4.

  • Os vetores fornecidos em OUT, HOLD e DIS devem ter tamanho igual ou maior que MAX_CH.

  • CYC_TIME deve ser de no mínimo 10 segundos.

Se qualquer uma dessas condições não for atendida, todas as saídas (OUT) permanecem inativas e a saída FAIL é ativada.

Observações

[RUN] Ativação do bloco

A entrada RUN quando inativa mantém todos os canais (OUT) desligados e a contagem de tempo de ciclo congelada. Quando ativada esta entrada, o canal corrente será ativado (se existir um) caso o tempo de ciclo não tenha sido completado. Caso o tempo de ciclo tenha sido completado, o próximo canal disponível será ativado e o tempo de ciclo reinicializado com o valor definido pelo parâmetro CYC_TIME.

Nota

O critério para ativação dos canais é baseado na procura do primeiro canal disponível em ordem crescente do nro do canal a partir do canal corrente.

Exemplo: Considere que o bloco está controlando 4 canais (equipamentos) e o canal corrente é o canal 2. O próximo canal a ser selecionado será o canal 3 (se a entrada DIS[3] não estiver ativa), o seguinte seria o canal 0, depois o 1 e assim sucessivamente.

Importante

Se todos os canais estiverem desabilitados pela entrada DIS, os canais estarão todos inativos e a saída FAIL será ativada para indicar esta condição.

[MAX_CH] Número de canais a serem utilizados

Este parâmetro de entrada indica quantos canais devem ser tratados pelo bloco nos vetores OUT, HOLD e DIS. Em outras palavras, define o nro de equipamentos que o bloco irá controlar. São aceitos os valores entre 1 a 4.

Importante

Os vetores fornecidos nos parâmetros OUT, HOLD e DIS devem possuir um tamanho igual ou maior que o valor especificado neste parâmetro. Caso contrário o bloco irá manter todos os canais (OUT) inativos e irá ativar a saída FAIL indicando uma condição inválida de operação.

[CYC_TIME] Tempo de ciclo

Este parâmetro define o tempo que um dado canal permanecerá ativo. Em uma condição normal de operação cada canal será mantido ativo pelo tempo definido neste parâmetro, conforme indicado neste gráfico. Note que o tempo será contabilizado apenas quando a entrada HOLD associada ao canal estiver inativa.

Nota

O tempo mínimo aceito para este parâmetro é de 10 segundos. Se especificado um tempo menor que 10 segundos, os canais de saída (OUT) permanecerão inativos e a saída FAIL será ativada indicando uma condição inválida de operação.

Quando não definida esta entrada pela aplicação, o tempo de ciclo default é de 2 horas.

[SWITCH] Evento de alteração do canal ativo

Esta entrada opera por transição de subida (Inativo->Ativo). Quando detectada uma transição, o bloco executa o procedimento de troca da saída ativa, desligando o canal corrente e ativando o próximo canal disponível, conforme exemplificado neste gráfico.

[HOLD] Pausa temporização do ciclo

Esta entrada permite que cada canal defina quando o tempo de ciclo deve ser contabilizado ou não. Se a entrada associada ao canal corrente estiver ativa, o tempo de ciclo se mantém pausado até que a mesma se torne inativa.

Importante

Note que, se esta entrada estiver indefinidamente ativa o bloco desabilita a comutação dos canais por tempo de ciclo, passando a alterar os canais apenas pelas entradas SWITCH ou DIS.

[DIS] Remove canal para operação

Este parâmetro é utilizado para remover o equipamento do processo de seleção de um novo canal ativo gerado por [CYC_TIME] Tempo de ciclo ou [SWITCH] Evento de alteração do canal ativo. Quando o canal associado estiver ativo neste parâmetro, a saída OUT associada se mantém inativa em qualquer condição de operação.

Esta entrada permite então, que um equipamento que está inoperante por algum motivo (ex: falha, manutenção etc.) possa ser removido temporariamente do ciclo de controle e inserido posteriormente, conforme exemplificado neste gráfico.

[OUT] Canal de operação

Este parâmetro é controlado pelo bloco para indicar qual o equipamento ou processo que está ativo em um dado momento. Apenas um equipamento estará ativo por vez. Se o bloco identificar alguma condição de falha todas as saídas permanecerão inativas e a saída FAIL indicará esta condição.

[SEL_OUT] Número do canal de saída ativo

Este parâmetro apresenta ao usuário o número do canal que está ativo no momento. Este valor deverá estar entre -1 a (MAX_CH - 1). O valor -1 indica que não existe nenhum canal de saída ativo.

Adicionalmente o usuário pode redefinir um novo canal de saída para o bloco, atribuindo um valor a este parâmetro. Quando for atribuído o novo valor a este parâmetro pelo usuário o mesmo será inicialmente consistido com os limites válidos e será verificado se o canal especificado está habilitado (entrada DIS inativa). No caso de alguma falha, o valor especificado é ignorado sendo mantido o valor corrente. Uma vez validado o valor especificado, a saída associada será ativada e o tempo de ciclo será reinicializado.

[FAIL] Falha no processamento do bloco

Este parâmetro, quando ativado pelo bloco indica uma condição não operacional. Nesta condição todas as saídas (OUT) associadas ao bloco estão inativas. As condições de FAIL avaliadas pelo bloco são:

  • Parâmetro MAX_CH inválido (menor que 2 ou maior que 4);

  • Tamanho do vetor associado ao parâmetro OUT menor que o parâmetro MAX_CH;

  • Tamanho do vetor associado ao parâmetro DIS menor que o parâmetro MAX_CH;

  • Tamanho do vetor associado ao parâmetro HOLD menor que o parâmetro MAX_CH;

  • Tempo de ciclo menor que 10 segundos.

[EVT] Pulso de notificação de alteração da saída ativa

Esta saída gera um pulso sempre que houver alteração no valor da saída ativa.

[END_CYC] Tempo restante para o término do ciclo corrente

Esta saída disponibiliza o tempo para término do ciclo corrente.

[ON_CYC_SW] Notifica que a saída corrente será trocada por tempo

Esta saída quando ativada indica que o tempo de troca programada da saída corrente foi atingido. Nesta condição, no próximo ciclo, o bloco irá verificar o estado da entrada ACK_CYC_SW. Se ela estiver ativa a saída será comutada. Esta entrada portanto permite sincronizar a mudança da saída.

Ver também

MOT_CYCLE

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    CYC     : HILS.CYCLE_CTRL;         (* Bloco de controle *)
    DIS     : ARRAY[0..3] OF BOOL;     (* Vetor de desabilitação dos canais *)
    RUN     : BOOL := FALSE;           (* Habilitação do bloco *)
    HOLD    : ARRAY[0..3] OF BOOL;     (* Vetor de pausa de temporização dos canais *)
    SWITCH  : BOOL := FALSE;           (* Entrada de chaveamento da saída *)
    MAX_CH  : USINT := 4;              (* Nro maximo de canais *)
    OUT     : ARRAY[0..3] OF BOOL;     (* Vetor de saídas de controle do bloco *)
    CUR_CHN : INT;                     (* Nro do canal ativo corrente *)
    TC      : TIME := T#1m;            (* Tempo de ciclo do bloco *)
END_VAR

(* ... *)
(* Ativa o bloco de controle de ciclo com os parâmetros definidos *)
CYC(
  EN       := TRUE,
  RUN      := RUN,
  CYC_TIME := TC,
  SWITCH   := SWITCH,
  MAX_CH   := MAX_CH,
  HOLD     := HOLD,
  DIS      := DIS,
  OUT      := OUT,
  SEL_OUT  := CUR_CHN
  );

(* ... *)