Variáveis retentivas e não retentivas
Ao criar uma variável no programa de aplicação é possível controlar como será o processo de inicialização desta variável quando ocorrerem eventos do tipo, queda de energia, carga de um novo programa, carga de uma alteração no programa corrente, reset do equipamento etc. As variáveis criadas no programa, por default são do tipo não retentivas e, neste caso, o processo de inicialização da variável é o seguinte.
Declaração e inicialização de variáveis não retentivas
Para configurar uma variável como não retentiva, clique com o botão direito do mouse na coluna de Opções do editor de variáveis e selecione a opção Não retentivo. Quando a variável for configurada como não retentiva, o texto n_retain será apresentado na coluna de opções da respectiva variável conforme apresentado na figura seguinte.
Fig. 79 Inicialização de variáveis não retentivas
Quando o equipamento com o programa que possui as variáveis acima for energizado a variável V1, antes da execução do primeiro ciclo de varredura, irá inicializar o valor de V1 com 5. Como não existe um valor inicial para a variável V2 a mesma será inicializada com o valor default definido para o tipo da variável (INT).
A tabela a seguir apresentada os valores default para todos os tipos de dados disponíveis na norma IEC61131-3.
Valor inicial default para os tipos de dados
Tipo de dado |
Valor inicial |
|---|---|
BOOL |
FALSE |
SINT, INT, DINT, LINT |
0 |
USINT, UINT, UDINT, ULINT |
0 |
BYTE, WORD, DWORD, LWORD |
0 |
REAL, LREAL |
0.0 |
TIME |
T#0S |
DATE |
D#2000-01-01 [1] |
TIME_OF_DAY |
TOD#00:00:00.0 |
DATE_AND_TIME |
DT#2000-01-01-00:00:00.0 [1] |
STRING ‘’ |
(the empty string) |
Independentemente se o usuário definiu ou não um valor inicial para uma variável esta possui um valor de inicialização que será utilizado para ser atribuído à variável antes da execução do primeiro ciclo de varredura do programa de aplicação. Dependendo da retentividade da variável e do modo de inicialização do equipamento este processo de inicialização será ou não executado.
Importante
Quando a declaração da variável não especificar se a mesma possui ou não retentividade através dos textos n_retain ou retain o programa considera a variável a princípio como Não retentiva.
Variáveis retentivas
Existem situações onde o valor de uma variável deve ser mantido mesmo quando o equipamento for desligado e não deve ser reinicializado quando o equipamento for religado.
Imagine que você está automatizando uma linha de produção qualquer contando o número de peças produzidas para gerar um relatório de produção no final do dia. Para tanto, existe um PLC na linha que recebe um sinal digital que gera um pulso indicando que mais uma peça foi produzida. O programa do PLC deve então criar uma variável numérica (DINT por exemplo) e contar o nro. de pulsos recebidos sendo este valor a informação que desejamos, ou seja, a produção da linha. Desta forma, bastaria que no final da produção diária incluíssemos o valor desta variável no relatório a ser gerado.
Considere agora que, durante o período de produção a linha para de operar por uma queda de energia e todos os equipamentos são desligados. Quando a energia for restituída, o programa do PLC será ativado novamente, entretando se o valor da variável que conta o nro. de peças for reinicializado, o total de peças produzida até o momento da queda de energia será perdido.
Variáveis retentivas são variáveis que mantém o seu valor corrente caso o equipamento seja desligado (ou reinicializado). Desta forma o valor poderá ser recuperado quando o equipamento for energizado novamente.
Nota
A retentividade depende de recursos de hardware adicionais e portanto pode não estar disponível em todos os equipamentos. Consulte o manual do equipamento utilizado para identificar se o seu produto possui este recurso.
Especificação de uma variável retentiva
Para configurar uma variável como retentiva, clique com o botão direito do mouse na coluna de Opções do editor de variáveis e selecione a opção Retentivo.
Fig. 80 Configuração de uma variável como retentiva
Quando a variável for configurada como retentiva, o texto retain será apresentado na coluna de opções da respectiva variável.
Inicialização de variáveis retentivas
Como foi visto na sessão de Declaração e inicialização de variáveis não retentivas as mesmas são sempre inicializadas antes do programa de aplicação começar a rodar. No caso de variáveis retentivas existem critérios que definem se a variável será inicializada ou não. Estes critérios são definidos pelos Modos de inicialização do equipamento. Dependendo da condição do equipamento no instante da ativação do programa, uma variável retentiva irá ou não ser inicializada. Caso não seja inicializada, o hardware do equipamento deverá prover os recursos para que o conteúdo da variável seja preservado mesmo durante o período em que o equipamento estiver desligado.
Herança de retentividade
Considere uma aplicação que utiliza o tipo de dado TP_01 definido na Fig. 81.
Fig. 81 Tipo de dado com definição de retentividade
Nele o campo F_1 e F_2 possuem o atributo de retentividade e não retentividade definidos enquanto que o campo F_0 não definiu o atributo de retentividade.
Considera agora que vamos definir no programa de aplicação 3 variáveis do tipo TP_01 para serem utilizadas.
Fig. 82 Variáveis do tipo de dado TP_01 com retentividade
Note que as variáveis definidas também possuem os atributos de retentividade conforme indicado na Fig. 82.
A tabela seguinte apresenta o resultado do processo de inicialização das 3 variáveis definidas.
VAR |
F_0 |
F_1 |
F_2 |
Observações |
|---|---|---|---|---|
V_TPA |
2 |
Força o campo F_0 como retentivo |
||
V_TPB |
1 |
2 |
Força o campo F_0 como não retentivo |
|
V_TPC |
1 |
2 |
Mantém a retentividade definida nos campos do tipo TP_01 |
Mantém o valor anterior, ou seja, não inicializa o campo associado. |
Quando o campo não definir sua retentividade, é assumido que o mesmo é não retentivo, desde que a variável associada ao tipo não seja definida como retentiva. Neste caso o campo sem definição de retentividade herda a definição da variável.