23. Tolerância de Altura (Fábrica de Garrafas):

Três sensores ópticos (A, B e C) verificam a altura da garrafa. Sensor A = Base. Sensor B = Limite Inferior (-5 \%). Sensor \mathrm{C}= Limite Superior (+5 \%). A garrafa é considerada reprovada se for “baixa demais” (não atinge B) ou “alta demais” (atinge C). Desenvolva a lógica que acione um cilindro de rejeito sempre que a garrafa estiver fora dos limites quando passar pelo sensor A.

Passo 1

O enunciado nos dá três sensores ópticos e pede que se desenvolva a lógica que acione um cilindro de rejeito sempre que a garrafa estiver fora dos limites no instante em que passar pelo sensor A. Informação relevante fornecida:
  • Sensor A: detecta a base da garrafa (ponto de verificação onde a decisão deve ser tomada).
  • Sensor B: limiar inferior (marca se a garrafa atingiu o mínimo aceitável, isto é, B=1 quando a altura é pelo menos o limite inferior; se B=0 a garrafa é “baixa demais”).
  • Sensor C: limiar superior (marca se a garrafa ultrapassou o limite superior; C=1 quando a garrafa é “alta demais”).
  • A garrafa deve ser reprovada (acionar o cilindro de rejeito) quando, no instante em que estiver em A: ela for “baixa demais” (não atinge B) ou “alta demais” (atinge C).
O que é pedido explicitamente:
  • Construir a lógica booleana que gera o sinal de rejeito (chamarei esse sinal de R) a partir das entradas A, B e C, de forma que R seja ativado só quando a garrafa estiver fora dos limites no momento em que A detecta a garrafa.

Passo 2

Definição clara dos sinais binários (modo de pensar para a prova):
  • A é um sinal lógico que vale 1 quando a garrafa está na posição do sensor A (momento de avaliação) e 0 caso contrário.
  • B vale 1 quando a garrafa alcançou o limite inferior aceitável; B=0 significa “baixa demais”.
  • C vale 1 quando a garrafa alcançou o limite superior (ou seja, “alta demais”).
  • R será o sinal de saída que aciona o cilindro de rejeito; queremos R=1 somente quando, no instante de A=1, ocorrer B=0 (baixa) ou C=1 (alta).
Observação de procedimento: a avaliação deve ocorrer no momento em que A=1. Em aplicações reais costuma-se amostrar B e C quando A muda para 1 (ou enquanto A=1), para evitar decisões fora de tempo. Aqui vamos formular a lógica combinacional que responde a essa condição.

Passo 3

Aula rápida e prática de lógica booleana (ferramenta que vamos usar)
  • Operador AND ( \land): a expressão X \land Y vale 1 só se X=1 e Y=1.
  • Operador OR ( \lor): X \lor Y vale 1 se pelo menos um dos X ou Y vale 1.
  • Operador NOT ( \lnot): \lnot X vale 1 quando X=0, e vale 0 quando X=1.
Exemplos curtinhos para fixar:
  • Se queremos “acionar algo apenas quando o botão P estiver pressionado e a chave Q estiver ligada”, escrevemos P \land Q.
  • Se queremos “acionar quando Q estiver desligada” escrevemos \lnot Q.
  • Se queremos “acionar quando estiver muito baixo OU muito alto”, combinamos com OR.
Esses operadores se combinam para formar a lógica da decisão.

Passo 4

Construção da expressão booleana para o rejeito
  • Em palavras: “Rejeitar quando (na presença de A) a garrafa for baixa demais OU a garrafa for alta demais”.
  • Traduzindo cada condição em booleano:
    • “na presença de A” corresponde a exigir A=1; isso é uma condição necessária (AND com o teste de defeito).
    • “baixa demais” corresponde a B=0, ou seja \lnot B.
    • “alta demais” corresponde a C=1.
  • Juntando: dentro do instante de A queremos ativar R se \lnot B ou C acontecer, isto é \lnot B \lor C. Como isso só interessa quando A=1, colocamos um AND com A.
Portanto a expressão é:
R = A \land (\lnot B \lor C).
Podemos, se quiseres, expandir usando distributiva (não necessário, só para ver outra forma):
R = (A \land \lnot B) \lor (A \land C).
Essa forma mostra explicitamente os dois casos que disparam o rejeito: (1) A e não B ou (2) A e C.

Passo 5

Verificação por tabela de verdade reduzida (só os casos relevantes quando A=1)
Avaliar \;R = A \land (\lnot B \lor C)\; nos casos A=1:
  • Se A=1,\;B=0,\;C=0: \lnot B=1 então R=1 (rejeita — baixa demais).
  • Se A=1,\;B=1,\;C=0: \lnot B=0 e C=0 então R=0 (aceita).
  • Se A=1,\;B=1,\;C=1: \lnot B=0 mas C=1 então R=1 (rejeita — alta demais).
  • Se A=0: independente de B,C, R=0 (não avaliar fora do instante de A).
Isso bate com a especificação: apenas quando A vê a garrafa fazemos a decisão; rejeitamos se ela for baixa ou alta.

Passo 6

Como implementar isso em ladder (prático para prova/PLC) — tradução direta
  • Em ladder, série = AND; paralelo = OR; contato normalmente aberto (NO) representa a variável em direto; contato normalmente fechado (NC) representa \lnot da variável.
  • Rung sugerido:
    • Em série: contato NO de A.
    • Em série com um ramo paralelo contendo:
      • ramo 1: contato NC de B (ou seja, \lnot B);
      • ramo 2: contato NO de C.
    • Saída do rung: bobina R (cilindro de rejeito).
  • Em palavras: A em série com (NC B em paralelo com NO C) aciona R.
Essa construção implementa exatamente R = A \land (\lnot B \lor C).

Passo 7

Observações práticas importantes (para a prova e para a bancada)
  • Amostragem/tempo: idealmente avaliar B e C durante o tempo em que A=1 ou disparar na borda de subida de A (usar um one-shot) para evitar múltiplos pulsos. Em muitos PLCs usa-se um bloco “rising edge of A” para gerar um pulso que dispara um temporizador ou um latch.
  • Latching e retração do cilindro: normalmente não se deixa a bobina R permanentemente; usa-se R para comandar um pulso ou se seta R até que um sensor de posição do cilindro (ex.: X) confirme a posição de rejeito, então resetar R. Isso evita manter o cilindro estendido indefinidamente.
  • Filtragem/debounce: sensores ópticos podem oscilar; recomenda-se um pequeno filtro (por ex. requerer que B ou C mantêm estado por alguns ms) antes de tomar decisão, se houver ruído.
  • Caso extremo: se B e C ficarem ambos em 1 (por exemplo uma leitura ambígua), a expressão continua a rejeitar por causa de C=1, o que é coerente (atingiu o limite superior).

Passo 8

Exemplo passo-a-passo num caso prático (para consolidar)
  • Suponha uma garrafa passa em A; os sensores leem: B=0 (não alcançou o mínimo) e C=0. Então \lnot B=1, logo \lnot B \lor C = 1, e como A=1 temos R=1 → cilindro rejeita.
  • Suponha agora A=1,\;B=1,\;C=0. Então \lnot B=0 e C=0, portanto R=0 → deixa passar (aceita).
  • Suponha A=1,\;B=1,\;C=1. Então R=1 (rejeita por excesso de altura).
Vai dar certo na prova: mostre a expressão e, se pedirem diagrama Ladder, desenhe a versão com A em série e B NC paralelo com C NO.

Resposta

R = A \land (\lnot B \lor C)
(Implementação em ladder: contato NO de A em série com paralelo contendo contato NC de B e contato NO de C; saída: bobina R.)

Exercícios relacionados