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

Exercício de Um bloco de alarmes para todos os alarmes: treinamento de CLP e SCADA

Novo, visto, normalizado: um laço leva cada alarme pelos mesmos estados e marca o que veio primeiro.

Escreva o bloco de alarmes por trás da lista de alarmes da fábrica: um laço que leva cada um dos cinco alarmes por novo, visto e normalizado, conta os que estão ativos e não reconhecidos, informa a prioridade máxima e marca o alarme que veio primeiro.

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 fábrica modelo em que esta missão é executadaPRO (exige o Pro) missão
Como o teste roda

Novo, visto, normalizado

Teste 1 de 6
Definido pelo testeVerificado pelo testePasso 8 de 8 · 1.9 s
Level
Especialista
Tempo
Sobre 45 min
Recompensa
+800 XP
Bancada
fábrica modelo em 3D
Siemens editores
SCL
Rockwell editores
Texto estruturado
Beckhoff editores
Texto estruturado
Etapa
44. SCADA 2: um bloco de alarme para todo alarme
Comportamento exigido

Um bloco de alarmes para todos os alarmes: o que o seu código deve fazer

O controle da planta, as cinco condições de alarme Cond[0] a Cond[4] e suas prioridades Prio[0] a Prio[4] já estão escritos. Escreva um único laço FOR sobre os cinco alarmes que mantenha AlarmState[0] a AlarmState[4]: 0 Normal, 1 Novo (ativo, não reconhecido), 2 Visto (ativo, reconhecido), 3 Normalizado, não visto. A partir de 0, a condição ligando dá 1. No 1, um aperto de Ack dá 2; a condição desligando dá 3. No 2, a condição desligando dá 0. No 3, um aperto de Ack dá 0; a condição voltando dá 1. Cada alarme faz no máximo uma mudança por varredura, e Ack age no aperto, não enquanto está pressionado. ActiveCount é quantos alarmes estão no estado 1 ou 2. UnackCount é quantos estão no estado 1 ou 3. TopPriority é a prioridade mais urgente entre os alarmes que não estão no estado 0: 1, 2 ou 3, ou 0 se não houver nenhum. FirstOut é o número do alarme que começou o problema, contando a partir de 1: quando um alarme sai do estado 0 enquanto FirstOut é 0, FirstOut passa a ser o número dele. Se dois começarem na mesma varredura, ganha o que vem antes na tabela. FirstOut só volta a 0 quando todos os alarmes estão de novo no estado 0. Na aba Tela do operador, escolha como a lista trata um alarme normalizado, o primeiro alarme e os estados.

Estados
0 Normal, 1 Novo, 2 Visto, 3 Normalizado, não visto.
Ack
No aperto: 1 vira 2, e 3 vira 0.
Totais
ActiveCount: estados 1 e 2. UnackCount: estados 1 e 3. TopPriority: o mais urgente fora do 0.
Primeiro alarme
Definido pelo primeiro alarme a sair do 0; zerado quando todos voltam a 0.
Tabela de tags

Um bloco de alarmes para todos os alarmes: entradas e saídas

Seu programa lê 19 entradas e define 20 saídas. Mais uma entrada comanda a simulação ou mostra uma leitura, para você testar. Os nomes são os mesmos no editor de qualquer fabricante.

TagTipo de dadoSeu códigoO que significa na máquina
StartBOOLLêUma entrada de que o seu código precisaLigar a fábrica
StopBOOLLêUma entrada de que o seu código precisaParar a fábrica onde está
ResetBOOLLêUma entrada de que o seu código precisaResetar depois de uma parada de emergência ou de um disparo da cortina de luz
EStopBOOLLêUma entrada de que o seu código precisaParada de emergência pressionada
CompressorFaultBOOLLêUma entrada de que o seu código precisaExperimente: o compressor desarma
AirPressureREALLêUma entrada de que o seu código precisaPressão do reservatório de ar, bar
SteamPressureREALLêUma entrada de que o seu código precisaPressão do vapor da caldeira, bar
VesselLevelREALLêUma entrada de que o seu código precisaNível do tanque de mistura, %
VesselTempREALLêUma entrada de que o seu código precisaTemperatura do lote, °C
SugarAddedREALLêUma entrada de que o seu código precisaAçúcar que o dosador gravimétrico adicionou a este lote, kg
BufferLevelREALLêUma entrada de que o seu código precisaNível do tanque pulmão da enchedora, %
BadBottleBOOLLêUma entrada de que o seu código precisaCâmera: está passando uma garrafa sem rótulo
GateEyeBOOLLêUma entrada de que o seu código precisaHá uma garrafa na frente do portão de rejeito
AccumFullBOOLLêUma entrada de que o seu código precisaTrês fardos estão esperando o robô
CurtainClearBOOLLêUma entrada de que o seu código precisaFeixes da cortina de luz intactos
PalletFullBOOLLêUma entrada de que o seu código precisaUm palete cheio está esperando ou a caminho da envolvedora
PalletOnWrapperBOOLLêUma entrada de que o seu código precisaHá um palete na mesa giratória da envolvedora
WrapDoneBOOLLêUma entrada de que o seu código precisaO palete na envolvedora está envolvido
AckBOOLLêUma entrada de que o seu código precisaBotão da tela: reconhecer os alarmes
PersonInCellBOOLNão necessáriaPara testar ou observar; o seu código pode deixá-la de foraExperimente: alguém entra na célula do robô
CompressorBOOLEscreveUma saída que o seu código defineLigar o compressor de ar
BoilerOnBOOLEscreveUma saída que o seu código defineLigar a caldeira
WaterValveBOOLEscreveUma saída que o seu código defineÁgua para o tanque de mistura
FeederBOOLEscreveUma saída que o seu código defineLigar o dosador gravimétrico de açúcar
AgitatorBOOLEscreveUma saída que o seu código defineLigar o agitador
SteamValveBOOLEscreveUma saída que o seu código defineVapor para a camisa do tanque
TransferPumpBOOLEscreveUma saída que o seu código defineBombear o lote para o tanque pulmão
LineRunBOOLEscreveUma saída que o seu código defineLigar a linha de envase
RejectGateBOOLEscreveUma saída que o seu código defineAcionar o portão de rejeito
RobotEnableBOOLEscreveUma saída que o seu código defineDeixar o robô paletizar
PalletOutBOOLEscreveUma saída que o seu código defineLevar o palete cheio para a envolvedora
WrapBOOLEscreveUma saída que o seu código defineLigar a envolvedora de filme stretch
AGVCallBOOLEscreveUma saída que o seu código defineChamar o AGV para pegar o palete envolvido
GreenLampBOOLEscreveUma saída que o seu código defineColuna luminosa: produzindo
AmberLampBOOLEscreveUma saída que o seu código defineColuna luminosa: partindo ou esperando
RedLampBOOLEscreveUma saída que o seu código defineColuna luminosa: parada de emergência ou disparo da cortina de luz
ActiveCountINTEscreveUma saída que o seu código defineLista de alarmes: alarmes com a condição ativa
UnackCountINTEscreveUma saída que o seu código defineLista de alarmes: alarmes que ninguém reconheceu
TopPriorityINTEscreveUma saída que o seu código defineLista de alarmes: a prioridade mais urgente exibida, de 1 a 3, ou 0
FirstOutINTEscreveUma saída que o seu código defineLista de alarmes: o alarme que veio primeiro, de 1 a 5, ou 0

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

Testes automáticos

Um bloco de alarmes para todos os alarmes: o que os testes verificam

  1. Todo alarme segue os mesmos quatro estados: 0 Normal, 1 Novo, 2 Visto, 3 Normalizado, não visto.
  2. Um alarme que normaliza antes do Ack fica na lista como 3 até o Ack; um que volta antes do Ack é Novo de novo.
  3. O Ack age no momento do aperto: um Ack mantido pressionado não reconhece um alarme que chega depois.
  4. ActiveCount, UnackCount e TopPriority batem com a lista em toda varredura.
  5. FirstOut indica o alarme que veio primeiro e o mantém até a lista ficar vazia.
  6. A lista mantém um alarme normalizado até ele ser visto, marca o primeiro e diz cada estado por extenso.
  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

O servidor SCADA de uma planta guarda uma tabela de alarmes, cada linha com um estado, uma prioridade e um horário. A marca de primeiro alarme é o que o turno do dia lê depois de uma noite de paradas.

Um único desarme pode gerar vinte alarmes em poucos segundos. Sem estados e sem marca de primeiro alarme, o operador reconhece todos para calar a sirene e a causa se perde.

Onde você encontraria istoUm controlador para uma fábrica inteira: quando cada máquina pode funcionar, e o que a mantém segura

Uma pequena fábrica de bebidas faz um refresco de laranja. Açúcar e água são dosados em lotes e pasteurizados, e depois bombeados para uma enchedora. As garrafas são enchidas, tampadas, rotuladas e inspecionadas, embaladas em fardos de seis, empilhadas em paletes por um robô, envolvidas com filme e levadas até a doca por uma empilhadeira autônoma. Cada máquina tem os seus próprios controles; o controlador da planta decide quando cada uma pode funcionar, passa o trabalho de uma para a outra e para tudo com segurança.

  1. BatchMisturar e pasteurizar
  2. FillEncher, tampar, rotular
  3. InspecionarRejeitar garrafas ruins
  4. EmbalarRobô empilha os fardosVocê está aqui
  5. ExpedirEnvolver, AGV até a doca
Em uma instalação real: lugares, peças e segurança
  • Salas de envase de refrigerantes e sucos
  • Fábricas de molhos, laticínios e alimentos líquidos
  • Produtos líquidos de limpeza e higiene pessoal

Uma parada de emergência é ligada por um relé de segurança que corta a energia por conta própria. O programa então precisa manter tudo desligado e esperar um Reset e um Start deliberados, para que nada se mova de surpresa.

Células robotizadas são cercadas. Cortinas de luz e portas intertravadas param o robô quando alguém entra, e religar exige um reset feito de fora da célula, no espírito da ISO 10218 e da ISO 13849.

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