Carregando o progresso local…
PLC Gym
Início do PLC GymNível 1, 0 XP · seu progresso
Missão 59 · PRO (exige o Pro)

Exercício de Média das últimas N leituras: média móvel

Suavize um nível ruidoso. Faça a média só das leituras que você tem e descarte a mais antiga.

Calcule SmoothedLevel como a média das últimas WindowSize leituras de Level. Guarde-as em um array REAL, uma lista numerada de valores. Some-as com um laço FOR que fique dentro do array. Enquanto Sample estiver em ON, faça uma leitura por varredura. Até a janela encher, divida por ValidCount, não por N. Reset vence e põe o resultado em 0.

Esta missão faz parte do ProCrie uma conta grátis: toda conta tem um teste do Pro grátis até 5 de dezembro.

Sem cartão. Nada a pagar. Nada a cancelar.

Official release: 5 December. Fique em primeiro no ranking no dia e ganhe 3 meses de Pro, mais 2 semanas de Pro para dar a um amigo. O 2º lugar ganha 4 semanas. O 3º lugar ganha 2 semanas. Regras

  • Todas as aulas, do zero
  • Todas as missões e lições, conforme você sobe de nível
  • Um teste prático para cada título, com certificado
  • Rebobine qualquer teste, uma varredura de cada vez
  • Soluções comentadas quando você travar
  • O conversor de código, à vontade
A máquina 3D tanque de processo em que esta missão é executadaPRO (exige o Pro) missão
Como o teste roda

O aquecimento usa só leituras válidas

Teste 1 de 11
Definido pelo testeVerificado pelo testePasso 18 de 18 · 360 ms
Level
Avançado
Tempo
Sobre 25 min
Recompensa
+450 XP
Bancada
tanque de processo em 3D
Siemens editores
SCL
Rockwell editores
Texto estruturado
Beckhoff editores
Texto estruturado
Etapa
18. Manter as leituras mais recentes
Comportamento exigido

Média das últimas N leituras: o que o seu código deve fazer

Uma leitura de nível ruidosa fica pulando. Suavizá-la impede que a lógica seguinte reaja a cada oscilação. Tendências mostra Level e SmoothedLevel lado a lado, varredura por varredura. Seu filtro só calcula um número para a lógica seguinte. Ele não liga a bomba nem a válvula.

Amostra e tamanho da janela
Defina WindowSize como um número inteiro de 1 a 8 antes do Reset. Mantenha igual durante a batelada. Sample em ON faz uma leitura de Level por varredura. Sample em OFF mantém SmoothedLevel e ValidCount como estão.
Enchendo e dando a volta
Com menos de N leituras guardadas, faça a média só delas. Depois de cheia, faça a média das N mais novas. ValidCount é o número guardado, até N. Mantenha as casas decimais. Como você organiza o buffer fica a seu critério.
Reset
Enquanto Reset estiver em ON, SmoothedLevel e ValidCount são 0 a cada varredura, mesmo com Sample em ON. Uma batelada nova deve usar só leituras novas.
Tabela de tags

Média das últimas N leituras: entradas e saídas

Seu programa lê 4 entradas e define 2 saídas. Os nomes são os mesmos no editor de qualquer fabricante.

TagTipo de dadoSeu códigoO que significa na máquina
ResetBOOLLêUma entrada de que o seu código precisaBotão de reset
LevelREALLêUma entrada de que o seu código precisaNível do tanque, %
SampleBOOLLêUma entrada de que o seu código precisaEnquanto ON, faça uma leitura de Level a cada varredura.
WindowSizeDINTLêUma entrada de que o seu código precisaQuantas leituras usar na média (N), de 1 a 8. Defina antes do Reset e mantenha durante a batelada.
ValidCountDINTEscreveUma saída que o seu código defineQuantas leituras estão guardadas até agora. Nunca mais que WindowSize.
SmoothedLevelREALEscreveUma saída que o seu código defineMédia das últimas N leituras, em %.

No SCL da Siemens, escreva as tags do próprio bloco com # na frente, como faz o TIA Portal: #Reset. Rockwell e TwinCAT use só o nome: Reset.

Testes automáticos

Média das últimas N leituras: o que os testes verificam

  1. Funciona para todo N de 1 a 8, enquanto enche e depois de dar a volta muitas vezes.
  2. Com Sample em OFF, a média e a contagem ficam paradas. Com Sample mantido em ON, cada varredura acrescenta uma leitura.
  3. Reset esvazia a janela, mesmo com Sample em ON. Mantenha as casas decimais nas leituras.
  1. Teste Use os botões abaixo do modelo e veja a bancada responder.
  2. Testar solução Todas as verificações rodam no seu código com um toque.
  3. Rebobinar PRO (exige o Pro) Se uma falhar, volte por ela uma varredura de cada vez para ver o porquê.

Travado nesta missão? Pergunte aos membros no Vestiário.

Por que importa

Onde você veria isto em campo

Ondulações na superfície fazem a leitura de nível de um tanque de fábrica pular. O operador quer um número mais estável na tela.

Fazer a média das últimas leituras suaviza as ondulações. Contar posições vazias gera uma leitura falsamente baixa. Guardar leituras antigas por tempo demais esconde uma mudança real.

Onde você encontraria istoProduzir um lote de bebida

Em uma fábrica de bebidas, válvulas deixam entrar quantidades medidas de água e xarope em um tanque de mistura. Um misturador elétrico junta tudo em um lote. Depois, uma válvula de saída manda a bebida para um tanque pulmão. As máquinas de envase engarrafam a partir dali.

  1. Tanques de ingredientesGuardam a água e o xarope
  2. Tanque de misturaEncher, misturar e medir um loteVocê está aqui
  3. Tanque pulmãoMantém a bebida pronta à espera
  4. Envasadora de garrafasColoca a bebida nas garrafas
Em uma instalação real: lugares, peças e segurança
  • Fábrica de bebidas: misturar água e xarope
  • Fábrica de tintas: misturar ingredientes para obter uma cor uniforme
  • Estação de tratamento de água: preparar uma mistura química medida
  • Cervejaria: aquecer água para lavar equipamentos

Um tanque cheio não fecha a própria entrada. A água continua chegando até a válvula fechar, então uma entrada aberta pode inundar a sala.

Um aquecedor que não está coberto por líquido pode superaquecer. Tanques de verdade têm dispositivos de segurança separados além do programa do CLP.

Os tamanhos, tempos e cortes são escolhas didáticas, não o desenho de uma instalação real em particular.

Continue

Próximo na trilha