• No results found

Representación del Estado y la sociedad peruana en Abril Rojo

CAPITULO II: SITUACIÓN NARRATIVA EN ABRIL ROJO

2.3. Representación del Estado y la sociedad peruana en Abril Rojo

Em (BARRETA; TORRICO, 2008) é apresentada uma proposta para a implementação da lógica de controle obtida por meio da TCS em microcontroladores. O trabalho contribui com uma ferramenta de geração de código e com uma forma de representação do AFD em memória por intermédio de listas encadeadas. O uso de microcontroladores apresenta uma forma mais versátil e barata, quando comparado ao CLP, de implementar a lógica de controle com base na TCS.

Para realizar a implementação em microcontroladores, Barreta e Torrico (2008) afirmam que um fator limitante importante é a memória disponível nesses dispositivos. O supervisor pode ser armazenado em memória por meio de uma matriz que relaciona os estados de entrada Qe pelos eventos Σ, em que cada cruzamento entre os estados e os eventos indica um estado de destino Qs(também chamado de estado de saída). Assim, cada transição do autômato é mapeada na matriz. As matrizes que representam os supervisores são geralmente esparsas, por causa de os estados não contemplarem transições oriundas para uma grande parcela dos eventos. Essa característica esparsa implica um grande desperdício de memória.

2.4 Implementação da estrutura de controle supervisório 68 Assim, Barreta e Torrico (2008) propõem o emprego de listas encadeadas para armazenar os supervisores em memória. Para a utilização dessa estratégia é necessário o uso de quatro vetores, três de tamanho igual ao número de transições #T no autômato e um igual ao número de estados #Q no autômato. Dois vetores evento e estado_de_saida, de tamanho #T , formam o par (e,s)|e ∈ Σ, s ∈ Qs, indicando que a ocorrência do evento e implica uma transição para o estado s. Outro vetor, primeiro, de tamanho #Q, indica o primeiro par dos dois vetores anteriores, para cada estado. O último vetor, proximo, de tamanho #T , indica para cada transição qual a próxima transição daquela sequência, fazendo o encadeamento. Para obter todas as transições de um determinado estado satual, consulta-se o vetor primeiro, fazendo P1 = primeiro[satual], obtendo a posição da primeira transição f(satual, evento[P1]) → estado_de_saida[P1]. As demais transições estão na posição Pi = proximo[Pi−1]. Quando Pi é igual a um valor definido como nulo, não há mais transições para o estado corrente.

No intuito de ilustrar o método de armazenamento dos supervisores por listas encadeadas, considere o autômato da Figura 2.17 como um supervisor. O vetor primeiro indica que o estado 0 inicia sua representação na posição 0 dos demais vetores, já o estado 1 inicia na posição 1. Assim, a posição 0 dos demais vetores indica que há uma transição com o evento 0 para o estado 1 e que não há mais transições oriundas do estado 0, pois proximo[0] é −1. A posição 1 do vetor representa a transição de origem no estado 1 para o estado 1 pela ocorrência do evento 1, em proximo indica-se que a próxima transição oriunda do estado 1 está na posição 2 dos vetores. Na posição 2 é indicado que com o evento 2 há uma transição para o estado 0 e não há mais transições oriundas do estado 1.

Figura 2.17: Esquema de armazenamento de um supervisor na memória por listas encadeadas

Posição primeiro evento estado_de_saida proximo No Vetor

0 0 0 1 -1

1 1 1 1 2

2 - 2 0 -1

2.4 Implementação da estrutura de controle supervisório 69 A estratégia de lista encadeada representa uma economia da memória para o armazenamento do supervisor no microcontrolador. Considerando o uso de 2 bytes (16 bits) para armazenar o índice de todos os estados, e 1 byte (8 bits) para armazenar o índice de cada um dos Σ eventos na estrutura de dados, é possível prever o consumo de memória de ambas as abordagens. Na representação por matriz a memória utilizada, Mmatrizem bytes, é Mmatriz = #Q × #Σ × 2. Na representação por lista encadeada os vetores estado_de_saida, proximo e primeiro registram dados de 2 bytes, enquanto o vetor evento registra dados de 1 byte. Assim, o uso de memória Mlista_encadeadaem bytes é Mlista_encadeada = 5 × #T + 2 × #Q. Os valores podem ser mudados conforme a necessidade de cada caso, o que altera a função que define o valor de Mlista_encadeada. Considerando os valores apresentados, é possível armazenar supervisores com até 256 eventos, 216− 1 estados e 216− 1 transições.

2.4.4 Otimização do uso de memória na implementação em microcontro-

ladores

Em Lopes et al. (2011) é apresentada um método de implementação da lógica de controle obtida por meio da TCS. Esse método visa à redução do consumo de memória do microcontrolador, resultando em um armazenamento compacto da estrutura do supervisor. O trabalho traz um estudo comparativo sobre a estratégia de armazenamento introduzida, denominada memory safe, a abordagem de listas encadeadas e o uso de matriz. O trabalho ainda introduz a ferramenta de geração de código Nadzoru (LOPES et al., 2012).

A estratégia está ilustrada na Figura 2.18. O armazenamento é realizado num vetor de bytes. Portanto, cada posição do vetor tem tamanho de 1 byte. No exemplo da Figura 2.18 as posições de 0 a 3 armazenam dados das transições oriundas do primeiro estado 0, sendo o primeiro subvetor. Nas posições de 4 a 10 são armazenados os dados das transições oriundas do segundo estado 1, sendo o segundo subvetor. Nessa estratégia existem s subvetores, sendo s o número de estados do supervisor.

Cada subvetor Vi representa univocamente um estado do supervisor, em que Virepresenta o estado Ni. Cada subvetor inicia com um número t indicando a quantidade de transições oriundas do estado que ele representa. O restante do subvetor é composto por t 3-uplas (terna). Cada 3-upla representa uma das transições oriundas do estado representado pelo subvetor. O primeiro valor da 3-upla indica o evento, os outros dois valores indicam o estado de destino da transição.

2.4 Implementação da estrutura de controle supervisório 70 Figura 2.18: Esquema de armazenamento de um supervisor na memória pelo método memory safe

Fonte: adaptado de (LOPES et al., 2011)

Cada estado pode ter até 255 transições oriundas, em decorrência do fato de se usar 1 byte para representar o número de transições de cada estado/subvetor. O supervisor pode conter até 256 eventos, em virtude do fato de se usar 1 byte para representar o número relacionado ao evento em cada 3-upla. Ainda é possível representar até 216estados em cada supervisor, por causa do fato de se usar 2 bytes para representar o número do estado de destino de cada transição em cada 3-upla.

Para armazenar a estrutura do supervisor, tal método utiliza uma memória Mmemory_safe = 3 × #T + #Q. Assim, comparando com a estratégia apresentada por Barreta e Torrico (2008), esse método requer uma menor quantidade de memória (LOPES et al., 2011). Na representação pela estratégia memory safe considera-se armazenar supervisores com até 256 eventos, 216 estados e 255 transições por estado, os mesmos valores aplicados para as listas encadeadas. Os valores podem ser mudados conforme a necessidade de cada caso, o que altera a função que define o valor de Mmemory_safe.

2.4 Implementação da estrutura de controle supervisório 71