Bem no artigo 20 falei um pouco sobre o modelo de máquina de estados ISA88.TR002 / OMAC PackML, que apresenta um modelo bem definido.
Vamos a um rápido resumo, se quiser relembrar volte ao artigo 20.
Esse modelo foi elaborado com o foco na indústria de embalagem, porém, muitas empresas têm adaptado esse modelo para suas necessidades, uma vez que ele se mostra muito eficiente para controlar o escopo da máquina como um todo, conforme a definição de Unit, dentro da ISA88.00.1, mesmo assim utilizando conceitos de uma máquina de estado como parent (pai) e outras como child (filho), é possível ver o mesmo de modelo de máquina de estado controlando um Process Cell (ou linha), monitorando as máquinas filho, o que é uma adaptação interessante, dependendo do tipo de processo.
Vale lembrar que se levantar corretamente requisitos do seu sistema, será fundamental para entender como adaptar esse modelo ou outros a necessidade real.
Bem, agora vamos ver como seria implementar uma máquina de estados, com o mínimo necessário.
Então vamos primeiro verificar os estados da máquina que são o mínimo necessário, conforme a ISA88.TR002:
Stopped:
Tipo: Wait/Aguardo
A máquina está energizada e estacionaria (sem movimentos) depois de completar o estado de Stopping (parando). Comunicação com outros sistemas continuam funcionando.
IDLE
Tipo: Wait/Aguardo
Indica que um estado de Resetting for completado. A máquina mantém os estados de condições de máquina que foram alcançados durante o estado de resetting.
EXECUTE
Tipo: Acting/Atuação
Quando a máquina está processando material, ela está em estado de execução até que uma transição de comando é recebida. Diferentes tipos de modo de máquina (operação), irão resultar em específicos tipos de Execução. Exemplo, modos de produção, modo de Clear Out, etc.
ABORTED
Tipo: Acting/Atuação
Mantém as informações de condição de abort (abortar). A máquina so poder sair do estado de Aborted (abortado) depois de remover as falhas existentes
Para atingir cada estado, existem condições já pré-determinadas pelo modelo:
O objetivo agora é criar uma máquina de estados baseado nesse modelo, e demonstrar como utilizar a mesma para controlar o nosso magazine, que é uma máquina bem simples então fica bem fácil entender.
Para isso vamos precisar, primeiro detalhar o comportamento dos nossos estados.
Aborted /Abortado.
O funcionamento da máquina pode ser abortado em qualquer estado, então quando o usuário solicitar que a operação seja abortada, iremos para o estado procedural aborting/abortando, que nada mais é que uma sequência que irá garantir que a máquina entre em estado abortado de forma segura, uma vez que essa sequência é concluída teremos o estado Aborted/Abortado.
Exemplos de ações em estado abortando são, desligar os motores, desligar comando e válvulas, travar pinos de segurança, abortar programa do robô.
Um comando de abort/abortar, quando executado por um usuário em qualquer estado da máquina, efetua a transição para o estado de aborting/abortando e uma vez esse concluído teremos o estado abortado.
Stopped:
Uma vez a máquina linha executando sua sequência normal, ela recebe um comando de stop / parada, assim ao finalizar a sequência de funcionamento, a máquina, não irá executar a sequência de automático novamente, sem receber um novo comando de start, quando falamos de máquinas que irão funcionar de forma contínua, ou seja, seu ciclo é reiniciado após a sequência de automático completa.
Durante a sequência de stopping / parando, garante-se que a máquina esteja energizada, porém sem comandos de movimento ativos, por exemplo a máquina mantém seus drivers energizados, porém sem nenhum movimento.
Em específico na indústria e embalagem, tem como prática comum efetuar o comando de stop /parada, com a máquina em estado de ide / execute / resetting, porém não é comum em outros tipos de processo.
IDLE / HOMED
O estado IDLE, também é chamado de homed, irá depender muito da nomenclatura escolhida, esse estado é atingido após finalizar a sequência de resetting, iniciada após um comando de reset quando a máquina em estado de stopped.
Porém, um uma versão mais compactada como estamos, fazendo agora a sequência de resetting, pode ser iniciada ou no estado stopped /parado ou aborted /abortado.
A sequência de resetting é também conhecida nessa situação como homing, onde essa sequência tem como finalidade, limpar as falhas da máquina e colocar a mesma em posição inicial (home-position).
EXECUTE
Uma vez a máquina em estado Idle, indicando que está pronta para o início do processo produtivo, um comando de start/início recebido, se necessário uma sequência de starting / iniciando, será iniciada e quando concluída a máquina/linha irá, transacionar para o estado running/executando, caso o processo não tenha como obrigação uma sequência de starting, a máquina irá transacionar do estado Idle para o estado running/executando que é inclusive a situação mais comum, uma vez a sequência de funcionamento completada, indicando que a produção foi concluída, ocorre a transição para completed/Completo, conhecido como cycle complete / Ciclo completo.
Para funcionamento contínuo, é adicionado um comando start contínuo, comumente chamado de continuous mode, que é desabilitado com um comando de stop.
Uma prática comum, evitar transacionar sequências e estados, de forma desnecessária, ao final da sequência de running, é uma prática posicionar a máquina em posição de IDLE, assim em modo contínuo a máquina inicia o próximo ciclo sem a necessidade de iniciar uma sequência de resetting, nesse caso o comando de start pode ser recebido com IDLE ou Cycle Completed.
Com esse detalhamento, agora temos os nossos Requisitos, básicos para a nossa máquina de estados.
[RF 101] – Aborted /Abortado.
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
A máquina pode receber comando de abortar para transacionar para o estado abortado, m qualquer estado da máquina.
Ao receber comando de abortar, é iniciado o estado procedural abortando/aborting.
No estado procedural aborting/abortando, obrigatoriamente, todos os comandos devem ser desligados.
Quando o estado procedural finalizar, a máquina irá para o estado de aguardo Abortado/Aborted.
[RF 102] – Aborted /Abortado Status
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
Status de Abortado, Aborting devem estar visíveis para uso interno no software e para Interface Home-Máquina (IHM).
[RF 103] – Stopped /Parado.
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
A máquina pode receber comando de Parar/Stop, enquanto estiver em estado procedural running/executando.
Uma vez recebido o comando parar, quando a sequência de running chegar ao final, o status de ciclo completo ficará ativo, e a máquina irá transacionar para o estado procedural stopping/parando.
O estado procedural stopping/parando deve manter a máquina energizada, ou seja, servos e drives com ativados, robôs com motores ativados etc. porém sem comandos de ação.
[RF 104] – Stopped /Parado Status
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
Status de Stopped/Parado, Parando/Stopping devem estar visíveis para uso interno no software e para Interface Home-Máquina (IHM)
[RF 105] – IDLE / HOMED
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
Para receber um comando para transacionar para o estado Idle, é necessário a máquina estar em estado abortado ou parado.
Uma vez recebido o comando Idle/Reset, a máquina irá transacionar para o estado procedural resetting/homing.
O estado procedural resetting/homing, irá posicionar a máquina em sua posição inicial para o processo (home-position), pronta para iniciar o processo produtivo.
Uma vez finalizado a sequência de resetting/homing, a máquina irá transacionar para o estado de aguardo Idle/Homed.
[RF 106] – IDLE / HOMED Status
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
Status de Idle/Homed, resetting/Homed, devem estar visíveis para uso interno no software e para Interface Home-Máquina (IHM)
[RF 107] – EXECUTE
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
Para receber um comando para transacionar para o estado execute, um comando start é necessário, esse comando só será valido se máquina estiver em estado Idle/Homed.
Ao receber o comando start, um estado procedural starting/iniciando, será iniciado, uma vez finalizado, a transição irá ocorrer de forma automática para o estado procedural execute /running.
O estado procedural starting, será utilizado para garantir o início do funcionamento correto da máquina, como por exemplo, receber uma receita.
Caso nenhuma ação seja necessária para o início da sequência de funcionamento o estado starting é concluído sem nenhuma ação. (Starting opcional)
O estado procedural execute/running/executando é responsável pela sequência de funcionamento responsável pela produção (sequência de automático do processo).
Quando finalizada a sequência de running/executando, a máquina irá transacionar para o estado ciclo completo (cycle completed).
Um comando de habilitar modo contínuo é necessário para a execução contínua do ciclo, transacionando do estado ciclo completo para, execute/running automaticamente.
Se o comando habilitar modo contínuo não estiver habilitado, será necessário um comando start para iniciar o estado procedural running, com a máquina em estado ciclo completo.
[RF 108] – EXECUTE Status
Modulo: Máquina de Estados
Data: 02/04/2024
Alteração:__________ Autor: Paulo Ricardo
Prioridade: Essencial
Descrição:
Status de Execute/Running, cycle complete (ciclo completo), devem estar visíveis para uso interno no software e para Interface Home-Máquina (IHM).
Como será feita a gestão, da transição entre os estados dentro dos estados procedurais?
Basicamente, estamos falando de como será feita a transição dos passos dentro dos estados procedurais, que nada mais são que sequências que serão executadas em automático ou semiautomático, quando ativas.
Nós temos algumas opções, e inclusive irá depender da linguagem a ser utilizada, por exemplo se for utilizar a linguagem SFC, essa linguagem já possui o conceito de transição bem claro então, a máquina de estados terá que apenas, iniciar as sequências e observar seus estados.
Para as demais linguagens é interessante, a máquina gerenciar também as transições dos estados.
Como será feita a gestão dos modos de controle (operação)?
Relembrando o artigo 20, temos os modos considerados típicos pela PackML que são, Produção, Manutenção, Manual, Clean In Place, Run-Out, Semiautomático, Dry-Cycle, etc., o que vai distinguir os elementos entre esses modos de controle, são as seleções de subset de estados, comandos e transições.
Vamos agora trazer esses modos para aquilo que é encontrado de forma geral e não somente para quem aderiu 100% ao PackML, que lembrando que esse padrão é para indústria de embalagem em pensado nessa indústria.
Production mode / Modo de Produção: Modo utilizado para a rotina de produção, a máquina executa a lógica relevante em resposta a commandos que foram enviados diretamente ou por um outro sistema de supervisão. -- Em resumo, basicamente o nosso modo automático de qualquer máquina
Maintenance Mode / Modo de Manutenção: Esse modo permite pessoal autorizado, a funcionar uma máquina individual, de forma independente de outras máquinas em uma linha de produção, esse modo tipicamente é utilizado para testes operacionais e busca de falhas. Outra utilidade seria para testar melhorias, ajustes de máquina e processo em geral. --- Um modo que raramente você vê, mesmo em linhas onde várias máquinas são integradas, uma vez que o modo Dry-Cycle já tem essa finalidade.
Manual Mode / Modo Manual: Fornece o controle direto e individual dos módulos da máquina. Tipicamente utilizado para comissionamento de drives, verificar funcionamento individual de componentes etc. --- Outro Modo muito comum, não só para comissionamento como para manutenção do equipamento.
Semiautomático: É um sistema no qual parte das operações é executada automaticamente pela máquina, enquanto outra parte requer intervenção humana. Isso significa que a máquina executa algumas tarefas de forma autônoma, mas ainda depende da supervisão ou interação do operador humano para concluir o processo.
O famoso Step-Mode ou modo de passo, é um grande exemplo de modo semiautomático, no qual o usuário aciona a transição para o próximo passo, a máquina executa as ações contidas no passo, porém a transição só irá ocorrer caso as condições para tornar a transição verdadeira (interlocks da transição ou permissões da transição, são os 2 termos mais usados), sejam verdadeiros e um novo comando do usuário para ir para o próximo passo seja executado.
Dry-Cycle: Nesse modo a máquina executa seu ciclo de operação sem a presença de produtos reais a serem processados. Em vez disso, ela simula o ciclo de produção normal, mas sem realmente produzir produtos acabados. Essa simulação é útil para diversos propósitos, como testes de funcionamento, calibração de equipamentos, treinamento de operadores, verificação de tempo de ciclo e manutenção preventiva.
Bom agora podemos relacionar os estados da máquina com os modos de controle, primeiro vamos olhar aqui o que diz o guia da OMAC para implementar o PackML
Fonte: PACKML UNIT/MACHINE IMPLEMENTATION GUIDE
No caso, pelo guia, a troca dos modos de controle só podem ser feitos caso a máquina de estados esteja no estado Stopped/Parada e em específico a troca para modo manual somente com a máquina de estados em modo abortado.
Em relação ao modo manual é muito comum ver a possível transição com a máquina em stopped ou paused, além do estado abortado, isso ocorre para facilitar uma manutenção ou recuperar de uma falha, vamos falar um pouco mais sobre isso.
Pelo conceito do PackML quando você tem um estado de segurança, como por exemplo um botão de emergência acionada, você obrigatoriamente deve transacionar para um estado de abortando e abortado, isso não é um problema para uma máquina pequena, onde você não tem várias coisas acontecendo, agora vamos para uma máquina grande ou célula robotizada, no caso de quem vai adaptar esse modelo para outros processos, não necessariamente você quer ir para o estado de abortado, e por quê? Porque você não quer descartar aquela peça logo de cara, porque você pode entrar dentro da célula, ajustar um sensor solto, usar o modo manual para testar se o sensor está funcionando e depois continuar o processo, apenas alguns exemplos de situações, onde em alguns lugares optam para o modo manual poder ser acionado em outros estados sem ser o abortado.
Já o modo Dry-cycle só faz sentido para os modos para Idle/homed e Execute/Running, que são os modos que são focados na produção, enquanto o modo semiautomático ou step-mode, pode ser utilizado nos mesmos modos que o modo automático.
Sabendo todas essas informações, podes começar a modelar a nossa máquina de estados que irá gerenciar os modos operacionais
Para criar a nossa máquina de estados, teremos primeiro que criar as nossas estruturas de dados, então vamos modelar algumas estruturas básicas, antes de tudo, já que possuímos alguns requisitos que nos permitem iniciar esse trabalho.
Vamos começar com a estrutura de dados que vai nos dar os status da nossa máquina de estados
Essa estrutura, contém os status procedurais e de espera, além dos status dos modos de controle.
Outra estrutura de dados necessária vai a ser relacionada os comandos, onde existem os comandos de mudança de transição dos estados da máquina como também a mudança/habilitação dos modos de controle.
Essas duas estruturas são estão em sua forma mais básicas, agora precisamos ir mais a fundo de como vamos fazer a nossa máquina de estados funcionar.
Quando falamos um pouco antes nesse artigo sobre a mudança da transição de passos, a utilização da linguagem pode tornar um pouco mais fácil ou mais difícil, mesmo assim podemos ter elementos em comum para várias linguagens, principalmente levando em conta informações que são úteis serem apresentadas na IHM.
Algumas informações que são interessantes ter como informação e que também podem ser utilizadas no gerenciamento da máquina de estados:
Passo Atual
Proximo Passo
Descrição do Passo
Agora vamos pensar um pouco na transição do passo, ela é basicamente as condições atingidas, que também são chamadas de interlocks, para que o passo transacione, essas condições quando apresentadas na IHM tornam a recuperação de falhas e monitoramento do funcionamento.
Interlocks não são infinitos, é necessário definir uma quantidade máxima de interlocks por passo, e essa avaliação deve ser feita conforme as necessidades do processo em que a máquina de estados vai ser utilizada, valores muito comuns de se encontrar são 8 e 16, muito em referência ao tamanho de byte e word, para facilitar alguma operação com bits com instruções prontas.
Para tal cada interlock terá que possuir as seguintes características:
ativo (para habilitar ou desabilitar um interlock);
descrição, informação importante para informação clara para IHM;
status atual do interlock
Para quem acompanha a série desde o começo, já sabe que temos uma UDT_Interlocks já criada e uma função para verificar se todos os interlocks ativos estão OK, se você não viu, pode dar uma olhada no artigo de número 12 dessa série.
Assim temos a estrutura de status atualizada.
No próximo artigo vamos fazer a estrutura completa, e programar a nossa máquina de estados, e aplicar a mesma ao maganize de paletes que é nosso exercício.
Até o próximo artigo.
Bibliografia:
Comments