Gerenciamento agendado de recursos de hardware

Este artigo discute uma possível implementação de um sistema automatizado para gerenciar recursos de hardware (usando relés eletromagnéticos como exemplo) com referência ao tempo absoluto. Esse sistema pode ser muito útil para resolver o problema de testar a automação de vários equipamentos.

Por exemplo, em alguns laboratórios de teste, é necessário automatizar a redefinição de energia dos dispositivos estudados / testados em pontos de tempo estritamente definidos com referência à escala absoluta (por exemplo, na segunda-feira às 10:00 da manhã). No entanto, a tarefa é complicada pelo fato de a decisão sobre a possibilidade de executar uma operação de gerenciamento de energia ser afetada pelo estado atual de outros recursos de hardware do dispositivo em estudo (por exemplo, um ou outro nível na linha GPIO de saída).

A última circunstância complica um pouco a solução e nos leva a pensar em usar algum módulo de hardware externo no qual há suporte para os recursos de hardware necessários para resolver esse problema, a saber: relés, relógios em tempo real, linhas GPIO de entrada.

Os primeiros experimentos que fizemos usando a plataforma Arduino. No entanto, quando se tornou necessário copiar esta solução em grandes quantidades com qualidade estável, eles começaram a procurar soluções prontas. Como resultado, ajustamos o sistema usando um módulo de hardware externo Laurent-5 com a capacidade de monitorar o processo de controle via Ethernet.



Para detalhes, é necessário redefinir brevemente a energia do dispositivo testado todos os dias estritamente às 07:00 da manhã. No entanto, uma redefinição nunca deve ser realizada se o dispositivo continuar executando operações críticas. Nesse caso, um nível lógico alto (+3,3 V) é definido na linha GPIO de saída discreta do dispositivo.

O módulo Laurent-5 foi conectado ao dispositivo de teste da seguinte forma. O sinal de prontidão do dispositivo foi trazido para a linha discreta de entrada IO_1. E a energia do dispositivo foi encaminhada através de contatos normalmente fechados do relé RELE_1. Se o relé estiver ligado, a energia do dispositivo em teste será cortada.



Para configurar o sistema, primeiro, você precisa alterar a direção do módulo GPIO IO_1 Laurent-5 "na entrada". A maneira mais fácil de configurar é através da interface da Web (o endereço padrão é 192.168.0.101). Vamos para a seção "Linhas gerais IO1 - IO8" no painel de controle principal.



Clicamos na “seta” na linha IO_1 e alteramos a direção dessa linha do GPIO para o estado “on” para analisar o estado da linha de “prontidão” do dispositivo em teste.



Em seguida, criamos regras CAT lógicas que servirão para a automação da análise de linha de "prontidão" e controlaremos o relé.

Entramos na seção CAT e clicamos no botão "Criar um novo evento". Aparecerá uma janela na qual o ID = 1 será atribuído à nova regra lógica.



Escolha o tipo de evento RTC - a tarefa será concluída no horário especificado.



Nas configurações do evento, indicamos o tempo de resposta - todos os dias às 07:00 da manhã.



Em resposta à ocorrência deste evento usando comandos Ke, habilitamos a operação dos eventos CAT 2,3 e 4 que criaremos mais adiante. Regras lógicas adicionais são necessárias para analisar o sinal de "prontidão" do dispositivo e evitar a reinicialização da energia, se não estiver pronto para isso.



Vamos dar um nome simbólico a esta regra lógica para maior clareza.



Como resultado, um novo evento com ID = 1 aparecerá na lista de regras lógicas:



Adicione a seguinte regra lógica com ID = 2, que será executada em um timer com uma frequência de 1 vez por segundo.





Indicamos uma condição adicional que deve ser atendida para que a regra lógica funcione, ou seja, especificamos a necessidade de um nível lógico baixo em IO_1, sinalizando assim que o dispositivo está pronto para uma redefinição de energia.



Se todas as condições forem atendidas, desligue os eventos 2,3 e 4. Redefiniremos o contador de respostas para o evento 3 (veja abaixo) e ligaremos o relé RELE_1 por 4 segundos, após o qual ele retornará automaticamente ao seu estado original (desligado).



No entanto, o que devo fazer se o dispositivo "congelar" e o alarme tocar o tempo todo? Para isso, usaremos eventos com ID = 3 e 4 nos quais implementamos uma aparência de um cronômetro de vigilância com o envio de uma mensagem de alarme se, dentro de um tempo especificado, o dispositivo não sinalizar sua disponibilidade para uma redefinição de hardware.

Vamos criar um evento com ID = 3 de acordo com o cronômetro comum, com uma frequência de resposta de uma vez a cada 1 segundo. Na verdade, esse evento não fará nada, basta enviar um comando $ KE vazio. No entanto, a cada operação, o contador de operações deste evento aumentará. Usando uma regra lógica com ID = 4, monitoraremos esse valor e, se exceder um determinado limite (por exemplo, 300 operações, o que corresponde a 5 minutos), interromperemos a operação e incrementaremos o valor da variável de programa VAR_1 para análise subsequente do número de operações com falha.

No total, um conjunto de regras lógicas terá a seguinte aparência. Para iniciar o sistema inteiro, basta ativar o processamento de eventos com ID = 1.



E haverá o seguinte: todos os dias às 07:00 da manhã, uma regra lógica com ID = 1. será acionada.Neste caso, o processamento de eventos com os IDs 2, 3 e 4. será incluído como uma reação.Se o dispositivo em teste estiver pronto para reiniciar a energia (nível lógico 0 a linha de sinal) - como parte da regra ID = 2, o processamento dos eventos 2-4 será desativado, o contador de operações da 3ª regra foi redefinido por algum motivo e o dispositivo foi redefinido ligando brevemente o relé.

Paralelamente, iniciamos a contagem regressiva com um relógio uma vez por segundo. Ao verificar o valor do cronômetro do watchdog na estrutura da regra ID = 4, podemos travar a espera e sinalizar a falha de toda a operação naquele dia, incrementando a variável de programa VAR_1, cujo valor pode ser solicitado via TCP / HTTP para análise subseqüente.

Source: https://habr.com/ru/post/pt476854/


All Articles