Saturação do módulo

Atualizado há 28 dias

Um módulo com ruído pode emitir várias dezenas de impulsos por segundo. Cada elo da cadeia avança ao seu próprio ritmo: quando chegam mais impulsos do que aqueles que saem, uma fila de espera enche-se. Esta página descreve a localização dessas filas, os seus limites conhecidos e o mecanismo de proteção implementado pela aplicação.

Os números-chave

Valor O que designa
1 de cada vez impulsos tratados pelo tablet, uma fila por máquina
100 / 20 s sincronização para a plataforma por predefinição, ou seja, 5 elementos/s no máximo
15 000 tarefas em espera no tablet: corte do Bluetooth
500 tarefas restantes: nova ligação ao módulo

A cadeia, elo a elo

Sucedem-se três reservatórios. Cada um absorve as irregularidades, desde que o débito de entrada não ultrapasse de forma duradoura o débito de saída.

O sensor com ruído envia impulsos ao módulo, que os armazena na sua memória e os transmite por Bluetooth ao tablet. O tablet trata-os um de cada vez e, em seguida, coloca-os na fila de sincronização, enviada para a plataforma em pacotes de 100 a cada 20 segundos. Acima de 15 000 tarefas em espera, o tablet corta o Bluetooth.

Os impulsos armazenados (a laranja) aguardam tratamento; os elementos a azul aguardam envio. A seta vermelha representa o mecanismo de proteção descrito mais abaixo. Os marcadores 1 e 2 identificam os dois pontos de estrangulamento conhecidos.

Memória do módulo

O módulo regista cada impulso com a respetiva marca temporal. Quando está ligado, transmite-o ao tablet. Quando está desligado, conserva-o e esvazia a sua memória assim que a ligação é restabelecida. Trata-se de um buffer, e não de um ponto de estrangulamento.

1. Tratamento no tablet

Cada impulso é registado na base de dados e, em seguida, tratado para construir os perflogs, um só de cada vez por máquina. O débito depende do tablet e da sua carga: não é fixo.

2. Sincronização para a plataforma

Um pacote de 100 elementos a cada 20 s, ou seja, 5 por segundo no máximo.

Quando o ruído ultrapassa a capacidade de sincronização

Com as definições predefinidas, a sincronização transmite no máximo 5 elementos por segundo. Tudo o que chega acima deste limiar soma-se ao atraso da plataforma, hora após hora, mesmo que o tablet consiga tratar o fluxo.

A 10 impulsos por segundo, o atraso de sincronização aumenta 18 000 elementos por hora; a 30 por segundo, 90 000; a 50 por segundo, 162 000. Apenas 5 impulsos por segundo são enviados.

A azul, o volume transmitido de forma contínua; a laranja, o volume que se acumula na fila de sincronização. Estes valores são ordens de grandeza, estabelecidos com base num elemento a sincronizar por impulso. O atraso só é recuperado quando o fluxo volta a descer abaixo de 5 impulsos por segundo; aumentar o tamanho dos pacotes ou encurtar o intervalo eleva este teto.

O mecanismo de proteção: desligamento temporário

Quando o tablet deixa de conseguir acompanhar o fluxo, a sua fila de tratamento alonga-se. Para evitar a saturação, a aplicação corta o Bluetooth e deixa o módulo assegurar o armazenamento em seu lugar, durante o tempo necessário para recuperar o atraso.

Com um ruído contínuo, a fila de tratamento do tablet atinge 15 000 tarefas, o Bluetooth é cortado e a fila desce para 500 enquanto a memória do módulo se enche. Ao restabelecer a ligação, o módulo esvazia a sua memória de uma só vez e a fila volta de imediato a subir para 15 000: o ciclo recomeça.

Ilustração elaborada com um ruído ininterrupto; a escala de tempo é indicativa. A escala vertical da fila é respeitada, o que explica que o limiar de 500 apareça próximo de zero.

  1. O ruído enche a fila mais rapidamente do que o tablet a esvazia.
  2. Com 15 000 tarefas em espera, considerando todas as máquinas do tablet, a aplicação desliga todos os módulos.
  3. O módulo prossegue a contagem e conserva os impulsos na sua memória.
  4. Quando a fila desce para 500, a aplicação volta a ligar-se e o módulo esvazia a sua memória de uma só vez.
  5. Se o ruído persistir, esta rajada faz a fila regressar a 15 000 e inicia-se um novo ciclo.

💡 São utilizados dois limiares afastados em vez de um limiar único, para que a aplicação não encadeie cortes e novas ligações por algumas tarefas de diferença.

Quatro cenários

Do caso mais benigno ao mais crítico, consoante o débito do ruído e a sua duração.

Cenário Condição Tablet Plataforma Bluetooth
Ruído absorvido menos de 5 impulsos/s atualizado atualizada ligado
Plataforma em atraso mais de 5 impulsos/s, o tablet acompanha o fluxo atualizado em atraso ligado
Tablet saturado, ruído pontual mais impulsos do que aqueles que o tablet trata em atraso em atraso cortado temporariamente
Tablet saturado, ruído contínuo o ruído não se interrompe atraso crescente atraso crescente cortes repetidos
  • Ruído absorvido — Nenhum efeito visível. As filas esvaziam-se de forma contínua.
  • Plataforma em atraso — O tablet mantém-se em tempo real. Os dados da plataforma apresentam um atraso, recuperado assim que o ruído cessa.
  • Tablet saturado, ruído pontual — A máquina deixa de estar em tempo real: as ações que o exigem, como a mudança de produto, são recusadas. Se for o caso, corte aos 15 000 e depois nova ligação aos 500. Em seguida, a situação regressa à normalidade.
  • Tablet saturado, ruído contínuo — Cada nova ligação provoca uma nova saturação. A aplicação não recupera o seu atraso enquanto a fonte do ruído não for tratada.

Evitar o cenário

Existem duas famílias de medidas, consoante o ruído seja sofrido ou controlado.

Cortar na fonte

O ruído nunca entra na memória do módulo.

Desligar a alimentação do módulo

Módulo sem alimentação: nem o sensor nem o tablet comunicam com ele.

O módulo deixa de registar qualquer impulso e o tablet considera-o desligado até voltar a ser alimentado.

Desligar o sensor da ficha

Sensor desligado da ficha: a ligação entre o sensor e o módulo está cortada, o módulo continua ligado ao tablet.

O módulo permanece alimentado e ligado, mas o ruído deixa de o atingir: nenhum impulso é registado.

Fazer com que a aplicação ignore os impulsos

Esta solução aplica-se a um ruído controlado, durante um período conhecido. O módulo continua a transmitir, mas o tablet descarta os impulsos logo à chegada: não são registados, nem tratados, nem sincronizados.

Iniciar uma tarefa

Tarefa em curso: o módulo continua a transmitir, o tablet descarta os impulsos à chegada.

Uma tarefa de limpeza, por exemplo: o tempo é qualificado e os impulsos são ignorados até ao fim da tarefa. O início pode exigir o tempo real; a tarefa deve, portanto, ser iniciada antes do aparecimento do ruído, e não durante a saturação.

Ignorar os impulsos

Impulsos ignorados: o módulo continua a transmitir, o tablet descarta os impulsos à chegada.

Opção «Ignorar os impulsos do módulo»: um botão deslizante no ecrã principal. A escuta deve ser reativada assim que a operação estiver concluída.

⚠️ Em todos os casos, a produção real não é contabilizada durante este período: a configuração nominal deve ser restabelecida antes da retoma. Cortar o Bluetooth ou fechar a aplicação não tem qualquer efeito, uma vez que o módulo continua a registar o ruído e a restituí-lo quando a ligação é restabelecida.

O que o utilizador vê

O que é apresentado Quando Conteúdo
Ação recusada a fila de tratamento não está vazia «Requer estar em tempo real — Impulsos a aguardar tratamento: N»
Ação recusada o módulo esvazia a sua memória após uma nova ligação «Requer estar em tempo real — Recuperação dos dados do módulo em curso»
Janela de alerta durante o corte; fecha-se automaticamente quando a ligação é restabelecida «Foram recebidas muitas mensagens do módulo. A aplicação desligou-se temporariamente para tratar estas mensagens e voltará a ligar-se em seguida.»
Ícone Bluetooth verde-laranja durante o corte; ao tocar no ícone é apresentado «Muitos impulsos a tratar, desligado do módulo temporariamente»

A reter

  • O corte não implica qualquer perda de impulsos, dentro do limite da memória do módulo: este conserva-os, e o tablet regista-os na base de dados antes de os tratar.
  • As marcas temporais provêm do módulo: os perflogs mantêm-se exatos no tempo. Apenas a visualização e a plataforma apresentam um atraso.
  • O limiar de 15 000 é comum a todo o tablet e o corte aplica-se a todos os seus módulos: uma máquina com ruído penaliza as outras máquinas do mesmo tablet.
  • A solução encontra-se na fonte do ruído. Ajustar a sincronização acelera a plataforma, mas não o tablet.