• No results found

Nesta seção serão apresentadas soluções para alguns problemas de implementação. 6.2.1 Causalidade

Conforme visto na Figura 3.2, os blocos de sistema produto, procedimentos operacionais e o sistema a ser controlado, compõem a planta Ramadge - Wonham. Segundo a TCS, os eventos são espontaneamente gerados na planta e apenas desabilitados pelos supervisores. Sendo assim os supervisores continuam somente com a função de desabilitar eventos. Com esta forma de implementação é possível utilizar os supervisores reduzidos, reduzindo o número de estados. Para a célula de manufatura utilizada neste trabalho e por Vieira (2007), pode ser visto na Tabela 6.1 a diferença do número de estados e transições entre os supervisores não reduzidos e os reduzidos, utilizando tanto a abordagem monolítica como a abordagem modular local (VIEIRA, 2007).

Tabela 6.1 – No. de estados e de transições do conjunto de supervisores (VIEIRA, 2007).

6.2.2 Efeito avalanche e perda de informação

Os supervisores são implementados na linguagem SFC como visto na Figura 6.7. Existem duas formas de configurar o disparo de transições nos SFCs no SIMATIC da Siemens. No Block Settings existe a opção de Skip steps. Se esta opção for verdadeira o programa dispara todas as transições habilitadas em uma mesma chamada do SFC, sem executar as ações associadas aos passos que são ativados e desativados ao longo desta chamada. No autômato da Figura 6.11, se o evento a aconteceu, o programa vai do estado 1 para o estado 7, ocorrendo o efeito avalanche.

Figura 6.11 - Autômato susceptível ao efeito avalanche

Na Figura 6.12 temos o SFC da Figura 6.11. Se ocorrer o efeito avalanche neste exemplo, as ações associadas aos passos S2 e S4 não são executadas.

Figura 6.12 - SFC susceptível ao efeito avalanche

Outra situação em que pode haver perda de informação é se os eventos b e c aconteceram, o programa vai pular do passo S1 para o passo S6 no mesmo ciclo sem executar as ações associadas ao passo S3.

Com o Skip steps falso, o programa evolui apenas um passo por chamada do FB onde está implementado o supervisor em SFC. Por exemplo, na Figura 6.12, se ocorrer o evento “a” encontrando-se o supervisor no passo S1, este transita para o passo S2, não ocorrendo o efeito avalanche. Entretanto, no uso do skip steps falso existe o risco de perda da informação sobre a ocorrência de eventos. Por exemplo, se em um mesmo ciclo de varredura ocorrer os eventos “b”, “c” e “d”, o supervisor transita do passo S1 para o passo S3, podendo perder a informação de ocorrência dos eventos “c” e “d”.

Além disso, esta opção permite apenas o tratamento de um evento a cada chamada do bloco. Assim, se o bloco é chamado uma vez por ciclo de varredura, o programa trata apenas um evento por ciclo. A solução para este problema, adotada neste trabalho, consiste em verificar quantos eventos aconteceram e, dentro do programa estruturado do bloco MS, o supervisor é chamado tantas vezes quanto necessárias para tratar todos os eventos que ocorreram na planta. Para isto são criados grupos de variáveis temporárias dentro do MS. Na Figura 6.13 é apresentada parte do programa referente ao autômato da Figura 6.11 escrito em Structured Text. O supervisor slb3 pode ser chamado até quatro vezes, ou seja, pode ocorrer

no mesmo ciclo de varredura os eventos a, b, c e d. Primeiramente é verificado se o evento a ocorreu, “IF copa THEN”. Se copa for verdadeiro significa que o evento a ocorreu e tornam- se falsos os eventos b, c e d deixando apenas o evento a verdadeiro e o supervisor slb3 é chamado. Isto é feito para evitar o efeito avalanche. Se o evento a não ocorreu, copa for falso, não chama o supervisor slb3. Em seguida é feita esta verificação para os outros eventos b, c e d e para quantos eventos ocorreram.

6.2.3 Sincronização inexata

A satisfação da propriedade 1 definida em Balemi (1992, apud FABIAN e HELLGREN 1998) garante que o problema da sincronização inexata, apresentada na seção 3.4.4, não ocorra.

6.2.4 Problema da escolha

No intuito de solucionar o problema da escolha, neste trabalho adota-se a solução proposta por Cruz (2011). No exemplo utilizado na Figura 2.4 o problema da escolha surge quando as máquinas M2 e M4 podem iniciar suas operações, ou seja, os eventos A2 e A4 não estão desabilitados. Este caso pode ser visto no supervisor reduzido SRC da Figura 2.12. Neste supervisor quando no estado “0”, podem ocorrer os eventos A2 e A4. Este problema é tratado antes de chamar o bloco PS com o CED = 0, ou seja, quando irá tratar os eventos controláveis.

Para identificar se o problema da escolha existe, Cruz (2011) fez a análise em cada supervisor local isoladamente, nos supervisores não reduzidos e nos reduzidos. Leal et al. (2012) afirmam que um problema de escolha pode existir em algum supervisor local, mas não se apresentar na ação conjunta dos supervisores. Assim, a solução adotada por Cruz (2011) é suficiente, mas pode não ser necessária para evitar o problema da escolha. No caso de um problema da escolha ser identificado em um supervisor local, é acrescentado um trecho de código a fim de solucionar este problema, mas o mesmo só será chamado caso o problema se manifeste na ação conjunta dos supervisores. Para obter uma solução necessária e suficiente seria preciso avaliar o problema da escolha sobre o supervisor monolítico (composição dos supervisores modulares). Segundo Dietrich et al. (2002) para garantir que a implementação do supervisor tenha um comportamento não bloqueante, é necessário atender simultaneamente um conjunto de propriedades (VIEIRA, 2007).

Na Figura 6.14 apresenta-se o trecho de programa do bloco Action_sup onde é feito a chamada do bloco que faz o tratamento da escolha, o “TRATA_ESCOLHA”. Esta parte do código só é implementada quando existe o problema da escolha, ou seja, quando dois eventos estão aptos a serem gerados, porém transitam para estados diferentes, e somente um poderá transitar. É utilizada uma variável INTERCALA_A2_A4, que a cada ciclo de varredura do CLP assume de forma alternada os valores 0 e 1. O bloco que trata a escolha só é chamado quando os eventos A2 e A4 não estão desabilitados, ou seja, quando as variáveis a2d e a4d estão com o valor falso.

Figura 6.14 - Chamada do “TRATA_ESCOLHA” no bloco Action_sup

A escolha de qual evento será gerado dependerá da variável INTERCALA_A2_A4, que desabilitará um dos eventos de forma aleatória, como mostra na Figura 6.15. Se a variável INTERCALA_A2_A4 for igual a 1, o evento A2 será desabilitado por intermédio da variável dA2, e se a variável INTERCALA_A2_A4 for igual a zero o evento A4 será desabilitado por intermédio da variável dA4.

Figura 6.15 - Bloco de escolha

RELATERTE DOKUMENTER