Controlo do Programa
Fluxo & Execução
Domine o fluxo lógico do seu programa. Desde saltos condicionais até ferramentas de diagnóstico em tempo real, otimize a estrutura de execução do seu autómato.
O que são as operações de controlo no TIA Portal?
As operações de controlo do programa permitem modificar a ordem sequencial de execução dos segmentos. São utilizadas para ignorar partes do código (Saltos), criar ramificações complexas (Distribuidores) ou gerir o comportamento interno do CPU (Paragem, Watchdog, Medição de tempo).
Estas instruções são potentes mas devem ser utilizadas com precaução, nomeadamente a instrução WAIT que bloqueia o ciclo, ou os saltos que podem tornar o programa difícil de depurar se forem excessivos. O TIA Portal oferece também ferramentas modernas para intercetar erros localmente em cada bloco.
Saltos e Fluxo
Instruções de desvio do programa
JMP / JMPN — Saltos condicionais
JMPO que faz
JMP interrompe a execução sequencial e salta para uma etiqueta (LABEL) se o RLO estiver a 1. JMPN faz o mesmo se o RLO estiver a 0.
Quando usar
Ignorar uma secção de código que não deve ser executada num modo específico, ou criar loops simples em LAD/FBD.
Dicas Pro
O destino do salto (LABEL) deve estar dentro do mesmo bloco (FC ou FB).
Não utilize saltos para trás para criar loops sem condição de saída, pois corre o risco de ultrapassar o tempo de ciclo.
Em SCL, utilize as estruturas IF...THEN ou CASE...OF.
SWITCH — Distribuidor multicaso
SWITCHO que faz
Compara um valor de entrada com vários valores alvo e salta para o segmento correspondente ao primeiro caso verificado. Equivalente gráfico do Switch/Case.
Quando usar
Gestão de estados máquina (Grafcet simples), seleção de modos de funcionamento ou encaminhamento de peças segundo um código tipo.
Dicas Pro
Mais limpo e legível do que uma série de comparadores == em série.
Utilize a entrada 'ELSE' para gerir o caso em que nenhum valor corresponde.
Ideal para estruturas de menus em HMI.
RET — Retorno
RETO que faz
Força o fim da execução do bloco atual (FC/FB) e regressa ao bloco que o chamou.
Quando usar
Terminação antecipada de uma função se for detetado um erro no início do bloco, ou se uma condição de segurança não for cumprida.
Dicas Pro
Útil para otimizar o tempo de ciclo ao não processar o resto do código desnecessariamente.
Esteja atento: as saídas do bloco ainda não processadas manterão o seu último estado.
Em SCL, utilize a instrução RETURN;
Controlo do Runtime
Gestão do ciclo CPU e medições de desempenho
RUNTIME — Medir o tempo
RUNTIMEO que faz
Mede o tempo de execução de uma porção do programa ou do bloco inteiro em microssegundos (µs).
Quando usar
Otimização do código, diagnóstico de segmentos pesados ou cálculos de desempenho da máquina.
Dicas Pro
Chame o RUNTIME uma vez para inicializar a medição e uma segunda vez para obter o resultado.
Utilize le tipo de dados LReal para armazenar o resultado da medição.
Prático para verificar se um loop FOR complexo não se aproxima dos limites do watchdog.
WAIT — Temporização fixa
WAITO que faz
Suspende a execução do programa durante uma duração especificada em microssegundos. ATENCAO: ao contrario de um Temporizador, o WAIT bloqueia totalmente o ciclo do CPU.
Quando usar
Esperar alguns microssegundos para estabilizar um sinal eletrónico numa placa de E/S ultra-rápida.
Dicas Pro
Utilizar com extrema moderação. Um WAIT demasiado longo ativará um erro de Watchdog e parará o PLC.
Nunca utilizar para temporizações de processo (segundos/minutos); use os Temporizadores TON para isso.
Apenas disponível no S7-1500.
STP — Paragem do CPU
STPO que faz
Força a passagem do CPU para o modo STOP.
Quando usar
Condição de erro fatal onde a máquina não deve mais ser pilotada, ou teste de diagnóstico.
Dicas Pro
A paragem é imediata. Será necessária uma intervenção manual (HMI ou seletor) para reiniciar.
Prefira a gestão de alarmes com modo seguro em vez da paragem brusca do CPU sempre que possível.
Útil em projetos de comissionamento para fazer um 'break' num ponto preciso.
Gestão de Erros
Interceção local de falhas de execução
GET_ERROR / GET_ERR_ID
O que fazem
Recuperam informações sobre o primeiro erro ocorrido dentro de um bloco (ex: acesso a um índice de array inexistente).
Quando usar
Tornar os seus blocos robustos intercetando erros de programação sem parar o PLC.
Dicas Pro
O GET_ERROR fornece uma estrutura detalhada, o GET_ERR_ID apenas devolve o número do erro.
Coloque estas instruções no final dos seus blocos críticos.
Permite criar um registo de erros personalizado.
Saltos vs Estruturas de controlo
Qual o método a usar para desviar o programa?
| Você precisa de... | Instrução recomendada | Porquê? |
|---|---|---|
| Salto simples em Ladder | JMP | Ignorar um segmento |
| Escolha múltipla complexa | SWITCH / CASE | Mais legível do que 10 JMPs |
| Medir duração interna | RUNTIME | Otimização de desempenho |
| Paragem imediata | STP | Erro crítico de hardware |
| Espera muito curta | WAIT | Estabilização eletrónica |
| Diagnóstico local | GET_ERROR | Evitar o STOP do CPU |
Perguntas Frequentes
Qual é a diferença entre JMP e JMP_LIST?
O JMP é um salto único. O JMP_LIST permite definir uma lista de destinos. Com base num índice numérico, o programa salta para a 1ª, 2ª ou N-ésima etiqueta da lista.
A instrução WAIT é perigosa?
Sim, se for mal utilizada. Suspende a execução de TODO o programa do utilizador. Se a soma dos seus WAITs e do seu código exceder o tempo de watchdog (geralmente 150ms), o CPU passará a STOP.
Como medir o tempo de ciclo total do PLC?
Não precisa da instrução RUNTIME para isso. Pode ler a informação diretamente nas propriedades do CPU online ou utilizar as variáveis de sistema do OB1.
Onde colocar as etiquetas LABEL?
Os LABELs podem ser colocados no início de qualquer segmento. No LAD aparecem por cima do carril esquerdo. O nome deve ser único no bloco.