CASE: termo de CLP em linguagem simples
Números e dadosComo o controle remoto de uma TV: aperte 1 e você vai para o canal 1, aperte 3 e vai para o canal 3. CASE olha um número e executa só a parte do código que combina com ele.
Escolhe uma seção de código por um valor, como um número de estado. Só a seção correspondente executa nessa chamada de CASE.
CASE em uma máquina real
CASE escolhe uma seção do código em texto para executar, com base em um número. Escreve-se CASE State OF, seguido de ramos numerados, e fecha-se com END_CASE. Só o ramo que combina é executado.
É o jeito usual de escrever uma máquina de estados em SCL ou texto estruturado, porque mantém a lógica de cada estado em um só lugar. Uma cadeia de IF e ELSIF faz o mesmo trabalho, mas fica mais difícil de ler à medida que entram estados.
Um ramo pode listar vários números, então dois estados podem compartilhar o mesmo código. Um ramo ELSE pode pegar um valor que nenhum ramo espera.
CASE: um exemplo resolvido
Uma batelada guarda a sua posição em uma tag chamada State. Com State em 10, o CASE executa o ramo da batelada. Quando o estado passa para 30, só o ramo Held é executado, e esse ramo mantém o equipamento parado.
CASE: um erro comum
Escrever uma saída em apenas um ramo. Um ramo que não é executado deixa as suas tags como estavam. Assim, um comando definido em um estado continua ligado no seguinte, a menos que algo o limpe.
Ainda com dúvida sobre este? Pergunte no Vestiário.