MOT_CYCLE

Este bloco é utilizado para controlar o processo de ciclagem da operação de um conjunto de motores baseado nos seguintes critérios:

  • tempo de ciclo;

  • comutação por evento;

  • desabilitação do um motor por falha ou desativação;

Bloco

                  MOT_CYCLE
           +----------------------+
  BOOL ----|RUN                EVT|---- BOOL
           |                      |
  BOOL ----|SWITCH       ON_CYC_SW|---- BOOL
           |                      |
  BOOL ----|ACK_CYC_SW        FAIL|---- BOOL
           |                      |
 USINT ----|MAX_CH         END_CYC|---- TIME
           |                      |
  BOOL ----|HOLD_TME              |
           |                      |
  TIME ----|CYC_TIME              |
           |                      |
BOOL[] ----|DIS ----------------- |----
           |                      |
   INT ----|SEL_OUT ------------- |----
           +----------------------+

Operação do bloco

Tempo de ciclo

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

    SEL_OUT=3  SEL_OUT=2  SEL_OUT=1  SEL_OUT=0  SEL_OUT=3  SEL_OUT=2  SEL_OUT=1
   |
   |----------+                                +----------+
   |          |                                |          |
M3 |          +--------------------------------+          +-----------------
   |
   |          +----------+                                +---------+
   |          |          |                                |         |
M2 |----------+          +--------------------------------+         +-------
   |
   |                     +----------+                               +-------
   |                     |          |                               |
M1 |---------------------+          +-------------------------------+
   |
   |                                +----------+
   |                                |          |
M0 +--------------------------------+          +---------------------------
                                    : CYC_TIME :

   Mn - Motor n ativo

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 :
       |----------+                     +----------+
       |SEL_OUT=3 |                     |SEL_OUT=3 |
    M3 |          +---------------------+          +-----------------
       |          SEL_OUT=2                        : CYC_TIME :
       |          +--+                             +----------+
       |          |  |                             |SEL_OUT=2 |
    M2 |----------+  +-----------------------------+          +------
       |             : CYC_TIME :
       |             +----------+                             +------
       |             |SEL_OUT=1 |                             |SEL_OUT=1
    M1 |-------------+          +-----------------------------+
       |                        SEL_OUT=0
       |                        +------+
       |                        |      |
    M0 +------------------------+      +-----------------------------
       |
       |             +--+              +-+
       |             |  |              | |
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 motor associado não participa da seleção do próximo canal. Se o motor 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 ocôrrencia de alguma falha sinalizada nas entradas DIS.

     |                >| CYC |<
     |-----+           +-----+        +-----+                 +-----+           +---
     |     |           |     |        |     |                 |     |           |
  M3 |     +-----------+     +--------+     +-----------------+     +-----------+
     |     +-----+           +-----+        +-----+                 +-----+
     |     |     |           |     |        |     |                 |     |
  M2 |-----+     +-----------+     +--------+     +-----------------+     +----------
     |                                            +-----+                 +-----+
     |                                            |     |                 |     |
  M1 |--------------------------------------------+     +-----------------+     +----
     |           +-----+           +--+
     |           |     |           |  |
  m0 +-----------+     +-----------+  +----------------------------------------------

     |
     |
DIS3 |-------------------------------------------------------------------------------
     |
     |
DIS2 |-------------------------------------------------------------------------------
     |        +-------------------------------+
     |        |<- falha no motor 1            |
DIS1 |--------+                               +--------------------------------------
     |                                +----------------------------------------------
     |                                |<- falha no motor 0
DIS0 +--------------------------------+

Parâmetros

Nome

Classe

Tipo

Dim.

V. Ini.

Descrição

RUN

Entrada

BOOL

FALSE

Desativa (0) /Ativa (1) controle

SWITCH

Entrada

BOOL

FALSE

Força um troca de saída

ACK_CYC_SW

Entrada

BOOL

TRUE

Autoriza a comutação do motor por tempo

MAX_CH

Entrada

USINT

2

Nro de canais a serem utilizados

HOLD_TME

Entrada

BOOL

FALSE

Congela o tempo de ciclo do canal corrente

CYC_TIME

Entrada

TIME

T#2h

Tempo de ciclo das saídas de controle

DIS

Entrada/Saída

BOOL

[*]

FALSE

Desabilita seleção da saida associada

SEL_OUT

Entrada/Saída

INT

0

Nro do canal de saída ativo. -1 se nenhuma saída ativa

EVT

Saída

BOOL

FALSE

Pulso de evento de alteração das saídas

ON_CYC_SW

Saída

BOOL

FALSE

Ativa para indicar que sera comutado o motor por tempo

FAIL

Saída

BOOL

FALSE

Falha no processamento do bloco

END_CYC

Saída

TIME

T#0ms

Tempo restante para o fim do ciclo corrente

[RUN] Ativação do bloco

A entrada RUN quando inativa mantem o bloco sem processamento, não altera o valor corrente de SEL_OUT e mantem contagem de tempo de ciclo congelada. Quando ativada esta entrada, o motor corrente (SEL_OUT) será ativado (se exisitir um) caso o tempo de ciclo não tenha sido completado. Caso o tempo de ciclo tiver sido completado, o proximo canal disponível será ativado e o tempo de ciclo reinicializaddo com o valor definido definido pelo parâmetros CYC_TIME.

Nota

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

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

[MAX_CH] Número de canais a serem utilizados

Este parâmetro de entrada indica quantos motores devem ser tratados pelo bloco. O vetor associado ao parâmetro DIS deve possuir um tamanho igual ou maior que este valor, caso contrário a saída de FAIL será ativada e o bloco se manterá inativo. O motor corrente será indicado pela saída SEL_OUT com valores entre 0 e MAX_CH - 1.

Importante

O vetor fornecido no parâmetro DIS devem possuir um tamanho igual ou maior que o valor especificado neste parâmetro. Caso contrário o bloco irá manter a saída corrrente como -1 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 motor permanecerá ativo. Em uma condição normal de operação cada motor 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 estiver inativa.

Nota

O tempo mínimo aceito para este parâmetro é de 5 segundos. Se especificado um tempo menor que 5 segundos, o valor de 5 segundos será utilizado como tempo de ciclo.

Quando não especificado este parâmetro pela aplicação, será utilzado o tempo de ciclo default que é de 2 horas.

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

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

[HOLD] Pausa temporização do ciclo

Esta entrada permite o usuário sinalize quando o tempo de ciclo do motor corrente deve ser contabilizado ou não. Se a entrada associada ao canal corrente estiver ativa, o tempo de ciclo se mantem 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 pela entradas SWITCH ou DIS.

[DIS] Retira motor de operação

Este parâmetro é utilizado para remover o motor associado do processo de seleção de um novo motor ativo gerado por [CYC_TIME] Tempo de ciclo ou [SWITCH] Evento de alteração do motor ativo. Quando o motor associado estiver ativo neste parâmetro, a saída SEL_OUT não selecionará o motor para operação.

Esta entrada permite então, que um motor que esteja 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.

[ACK_CYC_SW] Habilita alteração da saída corrente

Esta entrada pode ser utilizada em conjunto com a saída ON_CYC_SW para sincronizar a alteração do motor corrente. Quando a saída ON_CYC_SW for 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 desta entrada e, somente irá comutar a saída quando esta entrada estiver ativada.

Se esta funcionalidade não for necessária na aplicação não ha necessidade de declarar este parâmetro pois o valor default para esta entrada é TRUE o que irá imediatamente habilitar a troca do mtor corrente na situação descrita anteriormente.

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

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

Como este é um parâmetro de entrada/saída o usuário pode redefinir um novo motor atribuindo um valor a este parâmetro. Neste caso o mesmo será inicialmente consistido com os limites válidos e será verificado se o canal especificado esta 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);

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

  • Todos os canais desabilitados pela entrada DIS

Importante

Se todos os canais estiverem desabilitados pela entrada DIS, a saída FAIL será ativada para indicar esta condição e o parâmetro SEL_OUT irá retornar o valor -1 indicando que nenhum motor está disponível (ativo).

[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 saida corrente será trocadaa por tempo

Esta saída quando ativada indica que o tempo de troca programada da saida 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 portando permite sincronizar a mudança da saída.

Exemplo

Declaração de Variáveis

Nome

Tipo

Dimensão

Valor Inicial

Descrição

CYC

HILS.MOT_CYCLE

Bloco de controle

DIS

BOOL

[0..3]

[0,0,0,0]

Vetor de condição de falha dos canais

RUN

BOOL

FALSE

Habilitação do bloco

SWITCH

BOOL

FALSE

Entrada de chaveamento da saida

MAX_CH

UINT

4

Nro maximo de motores

CUR_CHN

INT

-1

Nro do motor ativo

Clique aqui para baixar a tabela de variáveis

Código ST

(* ... *)
// Ativa o bloco de controle de ciclo com os parametros definidos
CYC(  // MOT_CYCLE
  RUN        := RUN,  // [BOOL] Desativa (0) /Ativa (1) controle
  SWITCH     := SWITCH,  // [BOOL] Força um troca de saída
  ACK_CYC_SW := TRUE,  // [BOOL] Autoriza a comutação do motor por tempo
  MAX_CH     := 4,  // [USINT] Nro de canais a serem utilizados
  HOLD_TME   := FALSE,  // [BOOL] Congela o tempo de ciclo do canal corrente
  CYC_TIME   := T#30m,  // [TIME] Tempo de ciclo das saídas de controle
  DIS        := DIS,  // [BOOL] Desabilita seleção da saida associada
  SEL_OUT    := CUR_CHN   // [INT] Nro do canal de saída ativo. -1 se nenhuma saída ativa
  );

(* ... *)