Bom já vimos de forma básica como simular e testar nosso software, agora vamos testar a nossa função Interlock_FB, mas acredito que alguns estão se perguntando o porque dessa função existir.
Primeiro vamos definir o que é interlock para caso alguém não saiba o que é, então vamos para algumas definições:
Intertravamento Mecânico (Machinery Interlock): Em engenharia e sistemas mecânicos, interlock refere-se a um mecanismo de segurança que impede que duas ou mais operações ocorram simultaneamente. Isso é frequentemente utilizado para garantir a segurança em máquinas industriais, onde certas operações devem ser concluídas ou desativadas antes que outras possam ocorrer.
Intertravamento Elétrico (Electrical Interlock): Na eletrônica e sistemas elétricos, interlock pode se referir a um sistema em que certas condições elétricas devem ser atendidas antes que um dispositivo ou circuito possa ser ativado. Isso é comum em sistemas de controle e automação.
Intertravamento em Sistemas de Segurança (Safety Interlock): Em segurança industrial, interlock pode ser usado para descrever sistemas de segurança que impedem o acesso a áreas perigosas de uma máquina ou instalação até que determinadas condições de segurança sejam atendidas.
Intertravamento em Circuitos Lógicos (Logic Interlock): Na área de ciência da computação e lógica, interlock pode se referir a um mecanismo que impede a execução simultânea de certas operações para evitar condições de corrida em sistemas computacionais.
Agora, vamos começar olhando nosso requisito para modo automático.
Temos uma pré-condições para que o modo automático possa ser ativado, mas o que seriam essas pré-condições? Poderiam ser condições de segurança, da máquina, condições de processo, etc.
Perceba que precisamos de mais esclarecimentos desse requisito, porém, podemos entender que todas essas pré-condições precisam estar Ok para meu modo automático, então posso resumir que: pre-condicao1_OK E pre-condicao2_OK E pre-condicao3_OK E pre-condicao..N_OK devem ser verdadeiras para que eu tenha o status de pré-condições para modo automático OK.
Essa seria a mesa condição para qualquer interlock que eu vá utilizar, bom então agora vamos pensar um pouco, primeiro eu posso ter N Interlocks, ou seja, o modo automático talvez tenha 1 ou 2, mas outros interlocks podem ter mais, então para ter uma lógica reutilizável, preciso ter uma quantidade X de interlocks pré-configurados, que possa atender todos os meus interlocks conhecidos nesse momento e a lógica deve ser fácil de ser modificada, caso seja necessário aumentar o número de interlocks.
Para o nosso projeto eu decidi, baseado em experiências anteriores que 10 será um número, que vai atender e sobrar, então teremos 10 interlocks para todos os lugares onde o conceito de interlock for utilizado.
Agora o próximo passo é definir do que nosso interlock será composto, bom como teremos 10 interlocks, porém muitas vezes não iremos utilizar todos, é interessante, poder ativar e desativar interlocks que não estão em uso, neste caso, então teremos a condição de interlock ativo, para definir se vamos usar ou não esse interlock específico, a segunda coisa é o seu status, que pode estar OK ou não OK, para ser analisado na lógica e por último, vamos querer que esse interlock seja mostrado na IHM, ou caso algo não ocorra como desejado o operador vai estar cego, então uma descrição para IHM é necessária.
Então assim, teremos a nossa UDT_Interlocks descrevendo o que é um interlock para o nosso sistema.
Essa UDT está em uso em outras UDTs, do nosso software como já foi mostrado alguns artigos atrás.
Bem, e qual seria condição para um interlock estar OK? baseado no que definimos anteriormente, o interlock OK, seria um interlock que não está ativo (não está em uso então está OK) ou estar ativo e com status OK, o que podemos resumir na seguinte expressão lógica:
InterlockOK := interlocks.ativo=Falso OU ( interlocks.ativo = Verdadeiro E interlocks.status = Verdadeiro)
ou Interlock NOK : = interlocks.ativo = Verdadeiro E interlocks.ativo <> interlocks.status
Como estamos falando de 10 interlocks, então estamos falando de um array, e para avaliar um array a melhor forma é fazer um laço de repetição, então a linguagem mais apropriada vai ser o texto estruturado:
Nesse caso, usei a premissa que os interlocks estarão verdadeiros, e existe um motivo, essa função será utilizada em várias outras funções, e se por um acaso exista uma condição que o interlock não é necessário, por exemplo eu vou utilizar na minha função atuador, onde iremos comandar válvulas pneumáticas, se uma das posições não precisar de interlock eu simplesmente não ativo os interlocks e assim mesmo ainda vai continuar, o negativo é que se esquecer de ativar um interlock quando necessário, pode existir por exemplo uma colisão, então vou ter que ter mais cuidado, eu optei por não ter uma opção de bypass, porém se você quiser optar por isso, vá em frente!
Bem agora vamos preparar para testar a função, primeiro criei uma chamada dessa função para verificar o comportamento, e criar um conjunto de variáveis para alterar os valores e testar a função:
Bom vou criar uma pequena tabela, para efetuar meus testes, pois como é um laço testando as mesmas lógicas vou testar apenas os extremos e um interlock intermediário e terei a minha lógica validada.
Essa Tabela terá referência, na minha planilha com os cenários de testes:
Bom vamos ao vídeo mostrando o teste:
Acho que deu para entender a importância de testar, o que é um interlocks e o porque de usar texto estruturado para essa função.
Próximo vídeo vou mostrar a função atuador, que irá fazer o controle dos atuadores pneumáticos do nosso sistema.
Até o próximo artigo,
Comments