O FC PS chama os FCs dgi e os FBs Gi. Cada autômato da representação por sistema
produto constituída por "n" subsistemas Gi será sistematicamente convertido em um SFC
correspondente.
Para implementar os FCs dgi é preciso identificar quais plantas compartilham células de controle. Na Figura 5.3 mostra-se um exemplo de supervisores reduzidos. Estes são os supervisores da linha de transferência industrial ilustrada na Figura 2.4 da seção 2.4.6.
Figura 5.3 - Supervisores reduzidos
Na Tabela 5.1 estão relacionados os supervisores com os eventos e plantas coordenados por estes supervisores do exemplo.
Nesta tabela verifica-se que o subsistema G1 compartilha a célula de controle apenas com o subsistema G2. Já este último compartilha a célula de controle com G1, G4 e G5. As células de controle podem ser visualizadas na Figura 2.8. Assim, o tratamento de um evento de G1 não requer a suspensão do tratamento dos eventos de G3, G4, G5 nem do G6, requer somente a suspensão do tratamento do evento de G2. Por outro lado, o tratamento do evento
de G2 requer a suspensão o tratamento dos eventos de G1, G4 e G5 até que ocorra a atualização do estado ativo de todos os supervisores.
Tabela 5.1 - Eventos por célula de controle
Supervisor Eventos Planta local
SRA A1, B1, A2 G1 || G2
SRB A3 B3, A4 G3 || G4
SRC B5, A2, A4, B2, B4, A5 G2 || G4 || G5
SRD A5, B5, A6 G5 || G6
Na proposta de Vieira (2007), duas variáveis Booleanas, gievt e gid, com i ∈ I = {1, 2, ... , n} são usadas para garantir que a cada ciclo de varredura do CLP ocorra o tratamento de, no máximo, um evento de cada célula de controle. A variável gievt torna-se verdadeira, sinalizando que um evento ocorreu na planta Gi correspondente. A variável gid deve assumir valor verdadeiro sempre que ocorrer o tratamento de evento de qualquer subsistema que compartilhe alguma célula de controle com o subsistema Gi em questão. Se a variável gid assume valor verdadeiro então não é realizado o tratamento de eventos no subsistema Gi correspondente.
No exemplo em questão, para o subsistema G2 é verificado se g1evt, g2evt, g4evt ou g5evt apresentam valor verdadeiro. Se houver algum valor verdadeiro, significa que algum evento foi tratado em um destes subsistemas e então o valor da variável g2d torna-se verdadeiro, conforme ilustrado na Figura 5.4. No bloco PS, antes de chamar o subsistema G2 é verificado o valor da variável g2d. Caso esta variável esteja com o valor verdadeiro, o subsistema G2 não é chamado, impedindo assim o tratamento de quaisquer eventos no subsistema G2.
Segundo Vieira (2007), são necessárias três etapas para converter os autômatos dos subsistemas do nível SP nos respectivos SFCs. A primeira etapa consiste em definir as variáveis que serão utilizadas.
Além das variáveis gid e gievt citadas anteriormente, é necessário criar uma variável do tipo Booleana CED. A ativação da variável CED suspende o tratamento de qualquer evento controlável.
Uma variável do tipo Booleana σ é criada para cada evento “σ”∈ ΣGi, i ∈ I. Estas
variáveis se tornam verdadeiras quando ocorrem os eventos correspondentes.
Para cada evento controlável é necessário criar mais duas variáveis Booleanas, σid e cmdσi. Se o evento “σi” é desabilitado num dado estado de um supervisor, a variável σid torna-se verdadeira. A variável cmdσi se torna verdadeira quando ocorre o evento “σi”. Esta variável será posteriormente tratada no bloco responsável pelo detalhamento da ocorrência do evento controlável correspondente.
Para cada evento não controlável é criada mais uma variável inteira, rspIi. Esta variável indica o número de ocorrências deste evento pendentes a serem tratadas.
A segunda etapa consiste em fazer a conversão do autômato Gi em um autômato Hi, com i ∈ I = {1, 2, ... , n}, correspondente que atenda às seguintes regras (VIEIRA, 2007):
• L(Gi) = L(Hi);
• Cada estado é associado a um evento, ou seja, se houver mudança de um estado será sempre devido à ocorrência do mesmo evento;
• Nenhum evento conduz para o estado inicial do autômato;
• Não poderão existir autolaços, ou seja, quando ocorrer um evento obrigatoriamente haverá mudança de estado.
Se o autômato original possuir autolaços, é necessário primeiramente criar outro autômato equivalente sem autolaços. Veja o exemplo na Figura 5.5
Figura 5.5 – Autômatos equivalentes a) com autolaço e b) sem autolaço
Este procedimento utilizado por Vieira (2007) foi baseado em (CARROLL e LONG, 1989) para converter um autômato de Mealy em um autômato de Moore.
Considerando que qi são os estados, σi são os eventos ∈ ΣGi,σdummy ∉ ΣGi, Q é o
conjunto de estados, Σ é o conjunto de eventos, δ é a função de transição de estados: δ((q, σ2),δ1) = (δGi(q, σ1), σ1). Na Figura 5.6 é apresentado o autômato G2 onde QG2 = {0, 1} e ΣG2 = {A2, B2}. O estado inicial de H2 será q0H2 = (0, σdummy). Na Tabela 5.2 pode ser vista a conversão de G2 em H2.
Figura 5.6 - Exemplo de autômato da planta
Tabela 5.2 - Conversão Gi – Hi
G2 δH2( (0, σdummy), A2) (δG2(0, A2), A2) (1, A2); δH2( (1, A2), B2) (δG2(1, B2), B2) (0, B2); δH2( (0, B2), A2) (δG2(0, A2), A2) (1, A2);
A Figura 5.7 ilustra o autômato H2 para as plantas G2 mostradas na Figura 5.6.
Figura 5.7 - Novo autômato H2 para a planta G2
A terceira etapa consiste na conversão do novo autômato em linguagem SFC. Segundo Vieira (2007), este procedimento foi baseado na conversão de autômatos em Redes de Petri em (CASSANDRAS e LAFORTUNE, 1999).
Cada passo do SFC está associado a um estado qi de Hi e cada transição está associada a uma tripla da função de transição de estados (qorig, σ, qdest). O passo inicial é o q0Hi = (0, σdummy). Cada transição (xq, xq’) está associada à tripla-ordenada (q, σ, q’). Na Tabela 5.3 mostram-se as transições associadas à tripla-ordenada de H2.
Tabela 5.3- Transições de H2
(q, σ, q’) (xq, xq’)
G2 (0, σdummy), A2, (1, A2) (x0, x1) (1, A2), B2, (0, B2) (x1, x2) (0, B2), A2, (1, A2) (x2, x1)
Para ocorrer o disparo de uma transição é necessário que a mesma esteja habilitada (todos os passos imediatamente precedentes estão ativos) e que a condição de transição assuma valor lógico verdadeiro. Esta condição pode ser uma expressão booleana ou uma comparação. Na Figura 5.8 mostra-se o SFC (FB G2) para o subsistema G2. O passo S1 é o passo inicial e equivale ao estado (0, σdummy) do autômato H2 da Figura 5.7. O passo S2 equivale ao estado (1, A2) e o passo S3 equivale ao estado (0, B2) do autômato H2. Para desativar o passo S1 e ativar o passo S2 é necessário que as variáveis a2d e CED sejam falsas. Se a variável a2d for verdadeira, significa que o evento A2 está desabilitado e não pode acontecer. Se CED for verdadeira, significa que não podem ser tratados eventos controláveis. Se o passo S1 está ativo e as duas variáveis forem falsas, o passo S2 é ativado e as variáveis a2 e cmda2 tornam-se verdadeiras, o que significa que o evento A2 ocorreu. A variável g2evt torna-se verdadeira sinalizando o tratamento de um evento do subsistema correspondente.
Estando o passo S2 ativo, só poderá ativar o passo S3 se a variável rspI2 for maior que “1”, o que significa que existe ao menos uma ocorrência do evento não controlável B2 para ser tratada. Se o passo S3 for ativado, a variável b2 torna-se verdadeira e o valor da variável rspI2 é decrementado em “1”. Para ativar novamente o passo S2, é preciso que a2d e CED apresentem novamente valor falso.
Figura 5.8 - SFC para o subsistema G2