Bom depois de falar das características da nossa máquina de estados e começar a desenvolver algumas das estruturas de dados envolvidas, é hora de finalizar essas estruturas de dados e e começar a desenvolver a máquina de estados em si.
Aqui nós temos as estruturas de dados que vamos usar com a nossa máquina de estados, com as entradas que serão utilizadas no bloco de função, os status que serão gerados e a estrutura de interface com a IHM (Interface Homem-Máquina).
Agora vamos falar do nosso bloco de função que vai gerenciar a máquina de estados, modos de operação, estados de espera e execução a transição dos passos.
Modos de Operação
Da mesma forma que nos nosso bloco de modos de operação que já vimos nessa série, a máquina de estados vai ter interlocks para modos automático, permitindo que ela possa entrar em modo automático somente se as condições de segurança forem atingidas.
Então vamos ver internamente como isso é feito no nosso bloco.
Antes de tudo precisamos inicializar o bloco após uma energização ou download, quando isso ocorrer nossos passos estarão zerados, o próximo passo também será zero, as descrições do passo estarão limpas, qualquer estado falso, e a máquina estará abortada.
Para verificar os nossos interlocks para modo automático, irei usar a função interlocks_FC, que já foi apresentada nessa série, os status do interlocks serão copiados para variáveis de status para serem visualizados, inclusive pela IHM.
Uma vez que temos interlocks para o modo automático teremos como colocar a nossa máquina de estados em modo automático.
Temos comandos das entradas e da IHM para colocar a nossa máquina de estados em automático, como também um comando voltar para auto, que vai ocorrer quando o modo semiautomático for desligado. Da mesma forma os comandos para alteração de modo de operação desligam o modo automático.
O modo manual por sua vez só pode ser ativado se a máquina de estados estiver em um estado de espera, ou seja, se a máquina de estados estiver parada, paused, abortada, homed ou estiver com o ciclo completo sem start, ou seja, não está executando.
Quando houver uma solicitação de troca para o estado automático o modo manual vai ser desligado, outra condição a destacar é o fato de a falta de interlocks para modo automático, a máquina de estados irá assumir o modo manual.
Já o modo semiautomático só pode ser ativado se a máquina estiver em modo automático, e caso seja alterado para o modo manual o modo semiautomático é desligado, outra característica é que quando o modo semiautomático for desligado o modo automático é ativado novamente. O modo semiautomático é também conhecido como step-mode, ou modo passo-a-passo.
Já o modo dry-cycle usado, especialmente para debug de templo de ciclo, testes de sequência, das máquinas sem o produto, é ativado somente em modo automático e com a máquina em estado homed, alguns detalhes sobre desativar o modo dry-cycle, quando é solicitado o desligamento o modo dry-cycle, ele só vai ocorrer quando a máquina tiver seu ciclo concluído, estiver parada ou homed, isso ocorrer para não ocorrer falhas se houver desligamento do status de dry-cycle durante o ciclo. Caso a máquina seja abortada também haverá o desligamento, o modo manual só irá desligar o modo dry-cycle se houver uma solicitação de desligar o dry-cycle.
Estados
Os requisitos para os estados da máquina já foram explicados nos últimos artigos, então vamos focar em outro ponto aqui, sabendo que os estados de atuação geram uma sequência de passos, ao final dessa sequência irá ocorrer uma transição para um estado de espera até a chegada de um novo comando.
O ISA TR88.002 - PackML traz valores de referência para os estados
Esses mesmos valores são utilizados internamente para definir os estados dentro do bloco de função, dentro da nossa
Teremos 3 sequências de atuação homing, executando e abortando, uma vez que o estado de atuação parando é o próprio executando, ocorrendo a parada no final do ciclo e pausando, é a conclusão do passo da sequência atual. Para tal, uma faixa de valores para os passos precisava ser definida, então pensando na possibilidade de uma máquina muito complexa, um range de 1000 passos foi a escolha, então para executando, como o estado tem como valor 6, o range dos passos irá iniciar em 6000, para abortando 8000 e homing 1000.
As transições do passo são feitas com as permissões todas OK ou caso o estado seja completo, ou seja, a sequência finalizada. As permissões são verificadas com a ajuda da função interlock_FC., com um detalhe, é obrigatório ter uma permissão ativa ao menos em cada passo, afinal se você não precisa de permissão para transacionar o passo para quer ter ele, não é? se houver uma falha no passo, não será atualizado as permissões das dos status, para manter a informação visível para IHM e monitoramento, uma vez que são limpas ao final de cada scan.
Os passos podem falhar, ou por não ser executando dentro de um tempo planejado (time out), ou porque um equipamento falhou o que pode enviar um trigger de falha.
Logicamente, um reset da falha deve gerar uma tentativa de executar o mesmo passo novamente.
Bom, foi uma explicação superficial, sobre como o bloco funciona, agora vamos ver como vamos fazer as sequências.
Nossa função de sequência, cada network irá conter um passo
Em cada passo iremos verificar o passo atual, se o passo está executando, e iremos configurar o valor do nosso próximo passo, colocar o tempo para time out do passo, se o tempo for igual a 0ms, o passo não irá falhar por tempo (time out), envio dos comandos, configurado a descrição do passo que de preferência deve ser o mesmo do nome da network, ter as permissões configuradas e os triggers de falha de passo, referentes ao passo.
No fim de cada sequência um passo específico irá enviar o comando de sequência completa para a máquina de estados.
Bom depois dessa explicação, vamos a o vídeo mostrando a máquina de estados funcionando no TIA Portal da Siemens, pois vai ficar bem mais simples de entender o funcionamento, essa versão é bem simples, outras funções podem ser adicionadas, para tornar mais simples as networks dos passos, isso podemos abordar mais para frente, nesse momento o interessante é entender o funcionamento da máquina de estados.
No próximo artigo vamos ver o funcionamento da mesma máquina de estados no Codesys.
Até o próximo artigo.
Comments