• Nenhum resultado encontrado

As RdP podem-se dividir em dois grupos: RdP autónomas e RdP não autónomas. As primeiras incluem a componente abstracta do modelo RdP do sistema (estrutura de grafo e marcação) e as segundas integram características que as ligam ao mundo exterior (por exemplo, temporizações, sinais de entrada e saída) [Gomes, 97].

Como as RdP autónomas não são adequadas para modelar alguns dos aspectos importantes presentes em grande parte de sistemas a eventos discretos, nomeadamente as questões de tempo e sinais externos, encontram-se três tipos de extensões para dar resposta a essas questões, segundo [Gomes, 97]:

• As que conferem uma interpretação específica à rede, permitindo integrar no grafo referências a características do sistema físico (como sinais de controlo);

• As que conferem a capacidade de testar um estado (qualquer) de marcação;

• As que conferem a capacidade de integrar dependências temporais.

&

19

No presente trabalho, enfatiza-se a utilização do primeiro grupo, ou seja, utilizam-se RdP que integram a representação de sinais e eventos externos. Veremos de seguida (classe IOPT).

1.2.4.1. Classe IOPT (Input-Output Place-Transition)

As RdP IOPT possuem propriedades que possibilitam a modelação de sistemas com ligação ao meio físico, sendo que a sua evolução depende desse mesmo meio físico, ou seja, é uma rede não-autónoma.

As RdP IOPT constituem uma extensão simples e intuitiva às RdP Lugar-Transição [Reisig, 85] e que se destinam à modelação do comportamento de controladores de sistemas conduzidos por eventos discretos. Para tal, permite a especificação de sinais e eventos externos, quer de entrada, quer de saída.

Os eventos e sinais de entrada ficam associados à evolução da rede, nomeadamente às transições. É possível ainda associar, a cada transição, zero ou vários sinais de entrada que formam uma guarda de transição, estas guardas são condição necessária, mas não suficiente para a habilitação das transições respectivas. Por último, os sinais de saída ficam associados à marcação dos lugares.

Em [Gomes et al., 2007], são apresentadas algumas definições básicas das redes IOPT: - Definição 1 (interface do sistema): A interface do sistema a ser controlado com a rede IOPT é um tuplo ICS = (IS, IE, OS, OE) satisfazendo as seguintes condições:

1) IS é um conjunto finito de sinais de entrada. 2) IE é um conjunto finito de eventos de entrada. 3) OS é um conjunto finito de sinais de saída. 4) OE é um conjunto finito de eventos de saída. 5)

IS

IEOSOE=∅

- Definição 2 (estado de entrada do sistema): Considerando a interface ICS = (IS, IE, OS,

OE) com um sistema controlado (Definição 1), estado de entrada do sistema é definido pelo par SIS = (ISB, IEB) , satisfazendo as seguintes condições:

1) ISB é um conjunto finito de sinais de entrada:

ISBIS×Ν

0

2) IEB é um conjunto finito de eventos de entrada:

IEBIE×Β

A definição das redes IOPT pressupõe o uso de uma linguagem da inscrição, com uma sintaxe concreta, permitindo a especificação de expressões algébricas, variáveis e funções para a especificação de guardas e de condições da transição, bem como acções de saída associadas aos lugares.

20

O conjunto de expressões booleanas tem o nome de BE e a função Var(E) retorna um conjunto de variáveis utilizados na expressão E [Gomes et al., 2007].

- Definição 3 (rede IOPT): Dado o controlador com a interface ICS = (IS, IE, OS, OE), a rede IOPT é um tuplo N=(P, T, A, TA, M, weight, weightTest, priority, isg, ie, oe, osc) satisfazendo as seguintes condições:

1) P é um conjunto finito de lugares.

2) T é um conjunto finito de transições (separados de P ). 3) A é um conjunto de arcos, tal que

A⊆((P×T) (∪

T×P))

. 4) TA é um conjunto de arcos de teste, tal que

TA⊆(P×T)

. 5) M é a função de marcação

M

:P→Ν

0.

6) weight :

A→Ν

0, representa a função de peso dos arcos.

7) weighTest :

TA→Ν

0, representa a função peso dos arcos de teste.

8) priority é uma função parcial que aplica transições a inteiros não negativos:

0

:T

N

priority

9) isg é uma função parcial de guarda de sinal de entrada que aplica transições a expressões booleanas, onde as variáveis são sinais de entrada:

isg:T

BE

onde

eb

isg(T), Var(eb)

IS.

10) ie é uma função parcial de evento de entrada que aplica transições a eventos de entrada:

ee:T

IE

.

11) oe é uma função parcial de evento de saída que aplica transições a eventos de saída:

IE

T

ee:

.

12) osc é uma função de sinal de saída de lugares para conjuntos de regras:

)

(

:P

RULES

osc

→Ρ

, onde

RULES⊆(BES×OS×Ν

0

),BESBE

e

( )e

ML

Var

BES

e

,

com ML sendo o conjunto de identificadores para cada marcação de lugar depois de um estado de execução.

Quando disparadas, as transições podem emitir eventos de saída (oe), que por sua vez irão alterar os sinais a que estão associados. Os sinais de saída também podem ser alterados pelas marcações de lugar (osc). Para cada transição, é também possível associar nível de prioridade (priority), guardas que usam sinais externos (isg), tal como eventos de entrada (ie) e de saída (oe).

21

As guardas são funções dos sinais externos de entrada. Sempre que uma transição está habilitada e as condições externas associadas são avaliadas como verdadeiras (eventos de entrada e sinais de entrada) então a transição dispara.

1.2.4.2. Representação em PNML

O PNML (Petri Net Markup Language) é um formato de representação de RdP baseado na acção XML. A característica específica do PNML é a sua distinção entre características gerais de todos os tipos de RdP e características específicas de um determinado tipo de RdP.

As características específicas são definidas em separado, numa norma: Petri Net Type Definition (PNTD) para cada tipo de RdP.

O uso do PNML facilita a troca de representações de RdP entre diferentes ferramentas existentes utilizando RdP, mesmo que essas ferramentas suportem classes de RdP ligeiramente diferentes. Características específicas a uma classe de redes que outras ferramentas desconheçam, ou simplesmente não utilizem, podem ser simplesmente ignoradas.

De acordo com [Barros & Gomes, 04], existem duas formas de compor modelos RdP utilizando PNML:

- Utilizando PNML estrutural: cada rede torna-se numa página e cada página pode conter referências para outras páginas através do uso de lugares e/ou transições de referência.

- Utilizando PNML modular: cada rede torna-se um módulo. Cada módulo pode especificar uma parte de uma implementação e uma parte da interface com nós de referência, portas de saída. Os módulos são conectados, única e exclusivamente através da importação e exportação de nós.

O PNML estrutural oferece uma forma simples de partir um modelo em vários submodelos, contendo referências uns aos outros. Cada nó pode ser uma referência para outro nó noutra página, existindo assim, nós e nós de referência.

O PNML modular é um pouco diferente, permite a criação de várias instâncias independentemente do modelo inicial. É muito útil uma vez que cada módulo pode ser utilizado em contextos diferentes, possivelmente ao mesmo tempo. Contudo, o projectista do modelo não tem que saber em que contexto o mesmo será utilizado, apenas a sua funcionalidade.

22

O PNML foi utilizado em trabalhos associados a esta dissertação como meio de ligação entre o editor de Redes de Petri Snoopy IOPT [Nunes, 08] e a ferramenta de geração autónoma de código C [Rebelo, 10], desenvolvidos no âmbito do projecto FORDESIGN [Fordesign, 07] [Gomes, Barros, Costa, 07].

Para informação mais detalhada sobre PNML assim como a forma de o obter através do editor de Redes de Petri, consultar [Nunes, 08].

Documentos relacionados