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 |
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
);
(* ... *)