108
INSTITUTO MILITAR DE ENGENHARIA CARLOS HENRIQUE DA COSTA OLIVEIRA VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE SISTEMAS INDUSTRIAIS AUTOMATIZADOS POR CONTROLADORES LÓGICOS PROGRAMÁVEIS Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto Militar de Engenharia, como requisito parcial para obtenção do título de Mestre em Ciências em Engenharia Elétrica. Orientador: Antonio Eduardo Carrilho da Cunha - Dr. Eng. Co-orientador: Mario Cesar Mello Massa de Campos - Dr. ECP Rio de Janeiro 2006

VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

  • Upload
    vothuy

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

INSTITUTO MILITAR DE ENGENHARIA

CARLOS HENRIQUE DA COSTA OLIVEIRA

VERIFICAÇÃO DE MODELOS APLICADA AO PROJETODE SISTEMAS INDUSTRIAIS AUTOMATIZADOS POR

CONTROLADORES LÓGICOS PROGRAMÁVEIS

Dissertação de Mestrado apresentada ao Curso deMestrado em Engenharia Elétrica do Instituto Militarde Engenharia, como requisito parcial para obtenção dotítulo de Mestre em Ciências em Engenharia Elétrica.

Orientador: Antonio Eduardo Carrilho da Cunha - Dr.Eng.Co-orientador: Mario Cesar Mello Massa de Campos -Dr. ECP

Rio de Janeiro

2006

Page 2: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

c2006

INSTITUTO MILITAR DE ENGENHARIAPraça General Tibúrcio, 80-Praia VermelhaRio de Janeiro-RJ CEP 22290-270

Este exemplar é de propriedade do Instituto Militar de Engenharia, que poderá incluí-loem base de dados, armazenar em computador, microfilmar ou adotar qualquer forma dearquivamento.

É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliote-cas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja ou venhaa ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem finalidadecomercial e que seja feita a referência bibliográfica completa.

Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es) e do(s)orientador(es).

L48 Oliveira, Carlos Henrique da C.Verificação de Modelos Aplicada ao Projeto de Sistemas

Industriais Automatizados por Controladores Lógicos Pro-gramáveis / Carlos Henrique da Costa Oliveira. - Riode Janeiro : Instituto Militar de Engenharia, 2006.

108 p.: il, graf., tab.

Dissertação (mestrado) - Instituto Militar deEngenharia- Rio de Janeiro, 2006.

1. Controladores Lógicos Programáveis - CLP. 2. Sis-temas Industriais Automatizados. 3. Verificção de Mode-los. 4. Automação. 5. Confiabilidade. 6. Diagrama deBlocos Funcionais - DBF. I. Título. II. Instituto Militarde Engenharia.

CDD 629.895

2

Page 3: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

INSTITUTO MILITAR DE ENGENHARIA

CARLOS HENRIQUE DA COSTA OLIVEIRA

VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DESISTEMAS INDUSTRIAIS AUTOMATIZADOS PORCONTROLADORES LÓGICOS PROGRAMÁVEIS

Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétricado Instituto Militar de Engenharia, como requisito parcial para obtenção do título deMestre em Ciências em Engenharia Elétrica.

Orientador: Antonio Eduardo Carrilho da Cunha - Dr. Eng.Co-orientador: Mario Cesar Mello Massa de Campos - Dr. ECP

Aprovada em 07 de Agosto de 2006 pela seguinte Banca Examinadora:

Antonio Eduardo Carrilho da Cunha - Dr. Eng. do IME - Presidente

Mario Cesar Mello Massa de Campos - Dr. ECP do CENPES

João Carlos dos Santos Basilio - Ph.D. da UFRJ

Paulo César Pellanda - Dr. ENSAE do IME

Rio de Janeiro2006

3

Page 4: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

Aos meus pais, José Carlos de Oliveira Delgado eAdélia da Costa Oliveira, dedico esta conquista porserem o tesouro da minha vida.

4

Page 5: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

AGRADECIMENTOS

A Deus.

Ao Instituto Militar de Engenharia, especialmente ao Departamentos de Engenharia

Elétrica, pela oportunidade de realizar este curso.

Aos meus pais José Carlos e Adélia, e irmãos Adriana, Claudio e Carlos Adriano, aos

meus cunhados Amauri e Esmeri e sobrinhas Lorraine, Catarine, Victoria e Lucas que

sempre me deram incentivo e motivação ao longo de toda a minha vida e em mais esta

etapa de minha formação.

Aos meus tio(a)s, vô, e primo(a)s por todo o incentivo e carinho.

A tia Sandra por todo o apoio.

A Denise, tia Vera, Sr Vitor, Fernanda e Marlon, que me acolheram com muito

carinho no Rio de Janeiro.

Aos meus amigos Cris, Faguinho, Rodrigo, Patrick, Charles, Marcinho, Raul, Pablo

e Diogo Couto pela alegria, incentivo e amizade.

Ao amigo, orientador e professor Antonio Eduardo Carrilho da Cunha pela paciência,

dedicação, incentivo e cumplicidade como orientador, sem os quais este trabalho não teria

se concretizado.

Ao amigo, co-orientador e professor Mario Cesar Mello Massa de Campos por acred-

itar e incentivar o trabalho.

Ao Marcelo do CENPES pelo apoio.

Aos professores Ades, Pellanda, Medling, Decilio e Pinheiro pelos conselhos, apoio e

profissionalismo prestados no decorrer do curso.

Aos meus amigos Leonardo Araújo, Diogo, Arthur, Michele, Alessandra, Rogério por

terem entrado na minha vida.

Aos amigos Wander, Pinho, Toscano Careca, Ten. Toscano, Ten. Gleison, Leozinho,

Luiz Felipe e Gilmar, pelo apoio, bizus e amizade.

Aos Professores Envandro Camelo, Hélio Paiva pelas cartas de recomendação para o

meu início no curso de mestrado.

Aos meus amigos Monique e Roberto pela força.

A todos que não foram citados mas contribuíram de alguma forma para o trabalho.

A Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - CAPES pelo apoio

financeiro.

5

Page 6: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

SUMÁRIO

LISTA DE ILUSTRAÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

LISTA DE TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

LISTA DE SÍMBOLOS E ABREVIATURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.1 Motivação e Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.4 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 VERIFICAÇÃO DE MODELOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1 Visão Geral da Verificação de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1.1 A Necessidade de Métodos Formais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.1.2 Verificação de Hardware e Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.1.3 O Processo de Verificação de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.1.4 Lógica Temporal e Verificação de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.1.5 Algoritmos Simbólicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.2 Lógicas Temporais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.1 A Lógica da Árvore da Computação CTL∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.2 CTL e LTL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2.3 Exemplo - Exclusão Mútua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.3 O Verificador de Modelos SMV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.4 Resumo do Capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3 VERIFICAÇÃO DE MODELOS APLICADA À PROGRAMAÇÃO

DE CLPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.1 Controladores Lógicos Programáveis (CLPs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2 Visão Geral da Verificação de Modelos Aplicada à Programação de CLPs . . . 37

3.3 Um Modelo para os Diagramas de Contatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.4 Exemplos de Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.4.1 Sistema de Alarme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.4.2 Sistema de Manufatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

6

Page 7: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

3.5 Resumo do Capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4 CONTRIBUIÇÕES À APLICAÇÃO DA VERIFICAÇÃO DE MO-

DELOS AO PROJETO DE SISTEMAS AUTOMATIZADOS . . . . . 57

4.1 Projeto de Sistemas Automatizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.2 Exemplo de um Projeto de Sistema Automatizado . . . . . . . . . . . . . . . . . . . . . . . 59

4.2.1 Descrição Literal das Especificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.2.2 Matriz de Causa e Efeito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.2.3 Fluxograma de Funcionamento e Programa de Aplicação . . . . . . . . . . . . . . . . . 61

4.2.4 Programa em DBF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.3 Proposta de Verificação de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.4 Escrita da Especificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.4.1 Escrita de Especificações a partir da Matriz de Causa e Efeito . . . . . . . . . . . . 63

4.4.2 Escrita das Especificações a partir do Conhecimento do Sistema . . . . . . . . . . . 67

4.5 A Tradução da linguagem DBF em código SMV . . . . . . . . . . . . . . . . . . . . . . . 67

4.5.1 Elementos de Lógica Booleana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4.5.2 Elementos de Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.5.3 Blocos Temporizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

4.5.4 Construção Modular do Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.6 Verificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4.6.1 Reprojeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

4.7 Resumo do Capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

5 APLICAÇÃO NA AUTOMAÇÃO DE UM AQUECEDOR A

CHAMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

5.1 Automação do Processo de Purga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

5.1.1 Seqüência de Purga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

5.1.2 Lista de Entradas e Saídas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

5.1.3 Matriz de Causa e Efeito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

5.1.4 Projeto do Programa em DBF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

5.2 Modelagem das Especificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

5.3 Modelagem do Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

5.4 Verificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

5.5 Resumo do Capítulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

7

Page 8: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

6 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

6.1 Contribuições à verificação de modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

6.2 Limitações da Abordagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

6.3 Perspectivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7 REFERÊNCIAS BIBLIOGRÁFICAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

8 APÊNDICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

8.1 Manual do Verificador de Modelos Simbólicos (Symbolic Model Check-

ing - SMV) versão 2.5.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

8.2 Linguagem de Entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

8.3 Sintaxe e Semântica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

8.3.1 Convenções Léxicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

8.3.2 Expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

8.3.3 Declaração da ASSIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

8.3.4 Declaração SPEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

8.3.5 Declaração DEFINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

8.3.6 Módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

8.3.7 Identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

8.3.8 Módulo main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

8

Page 9: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

LISTA DE ILUSTRAÇÕES

FIG.2.1 (a) Estrutura Kripke. (b) Árvore correspondente para estado ini-

cial S0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

FIG.2.2 Operadores básicos de CTL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

FIG.2.3 Gráfico de transição de estados global para o problema de exclusão

mútua de um processo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

FIG.3.1 Fluxo de dados entre o CLP e um sistema a controlar. . . . . . . . . . . . . . . . 36

FIG.3.2 Ciclo de varredura do CLP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

FIG.3.3 Diagrama de Fluxo de Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

FIG.3.4 LD e descrição do modelo equivalente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

FIG.3.5 Sistema de alarme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

FIG.3.6 Programa de Controle para o Sistema de Alarme. . . . . . . . . . . . . . . . . . . . 44

FIG.3.7 Representação do programa de controle do alarme em linguagem

de verificação de modelos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

FIG.3.8 Verificação de Modelos para o programa de controle do alarme

(contra-exemplo). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

FIG.3.9 Contra-exemplo da especificação da linha 4 na Figura 3.8. . . . . . . . . . . . . 47

FIG.3.10 Analise gráfica do contra-exemplo da especificação da linha 4 na

Figura 3.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

FIG.3.11 Contra-exemplo da especificação da linha 7 na Figura 3.8. . . . . . . . . . . . . 49

FIG.3.12 Analise gráfica do contra-exemplo da especificação da linha 7 na

Figura 3.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

FIG.3.13 Reprojeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

FIG.3.14 Planta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

FIG.3.15 Programa de Controle para o Sistema de Manufatura. . . . . . . . . . . . . . . . . 51

FIG.3.16 Representação do programa de controle da manufatura em lin-

guagem de verificação de modelos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

FIG.3.17 Verificação de Modelos para o programa de controle da manufatura

(contra-exemplo). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

FIG.3.18 Analise gráfica do contra-exemplo da especificação na linha 7 da

Figura 3.16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

FIG.3.19 Projeto com base na análise do contra-exemplo. . . . . . . . . . . . . . . . . . . . . . 56

FIG.3.20 Resposta da Verificação após correção do programa. . . . . . . . . . . . . . . . . . 56

9

Page 10: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG.4.1 Método de projeto adotado por Empresas de Automação. . . . . . . . . . . . . 58

FIG.4.2 Sistema estrela-triângulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

FIG.4.3 Matriz de Causa e Efeito do sistema Y −△. . . . . . . . . . . . . . . . . . . . . . . . . 60

FIG.4.4 Fluxograma para o sistema estrela-triângulo. . . . . . . . . . . . . . . . . . . . . . . . 61

FIG.4.5 Programa em Diagramas de Blocos Funcionais. . . . . . . . . . . . . . . . . . . . . . 62

FIG.4.6 Procedimento atual e proposta de modificação. . . . . . . . . . . . . . . . . . . . . . . 63

FIG.4.7 Escrita de especificações CTL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

FIG.4.8 Blocos lógicos AND, OR e NOT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

FIG.4.9 Blocos SET/RESET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

FIG.4.10 Códigos SET/RESET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

FIG.4.11 Blocos dos temporizadores DI, DT, PO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

FIG.4.12 Máquinas de estado correspondente ao código do temporizador DI. . . . . . 70

FIG.4.13 Máquinas de estado correspondente ao código do temporizador DT. . . . . 71

FIG.4.14 Máquinas de estado correspondente ao código do temporizador PO. . . . . 71

FIG.4.15 Códigos dos temporizadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

FIG.4.16 Programa em Diagramas de Blocos Funcionais com as variáveis

auxiliares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

FIG.4.17 Tradução do DBF em código SMV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

FIG.4.18 Resposta da verificação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

FIG.4.19 Contra-exemplo da especificação na linha 7 da Figura 4.18. . . . . . . . . . . . 76

FIG.4.20 Contra-exemplo da especificação na linha 10 da Figura 4.18. . . . . . . . . . . 77

FIG.4.21 Contra-exemplo da especificação na linha 13 da Figura 4.18. . . . . . . . . . . 78

FIG.4.22 Reprojeto com base no contra-exemplo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

FIG.4.23 Reprojeto na linguagem SMV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

FIG.5.1 Matriz de Causa e Efeito do sistema Purga. . . . . . . . . . . . . . . . . . . . . . . . . 83

FIG.5.2 Projeto do sistema Purga. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

FIG.5.3 Tipos de sinal, segundo a norma ISA 5.2 (ISA, 1992). . . . . . . . . . . . . . . . . 84

FIG.5.4 Projeto do sistema Purga com inserção de variáveis auxiliares. . . . . . . . . 88

FIG.5.5 Modelo do Programa no SMV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

FIG.5.6 Resposta da verificação do sistema Purga. . . . . . . . . . . . . . . . . . . . . . . . . . . 90

FIG.8.1 Listagem de short.smv. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

FIG.8.2 Expressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

FIG.8.3 Programa e expressões reusáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

FIG.8.4 Atribuição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

10

Page 11: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

LISTA DE TABELAS

TAB.3.1 Simbologia e descrição dos diagramas de contato . . . . . . . . . . . . . . . . . . . . 40

TAB.3.2 Bobinas do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

TAB.4.1 Entradas e saídas do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

TAB.4.2 Condições para representação das Saídas . . . . . . . . . . . . . . . . . . . . . . . . . . 65

TAB.5.1 Variáveis de entrada do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

TAB.5.2 Variáveis de saída do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

11

Page 12: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

LISTA DE SÍMBOLOS E ABREVIATURAS

ABREVIATURAS

CLP - Controlador Lógico Programável

IME - Instituto Militar de Engenharia

LD - Diagrama de Contatos

SMV - Verificador de Modelo Simbólico

CTL - Lógica da Árvore da Computação

LTL - Lógica Temporal Linear

SIPN - Rede de Petri Interpretada a Sinais

SFC - Diagrama de Função Sequencial

PN - Rede de Petri

SED - Sistema a Eventos Discretos

TCS - Teoria de Controle Supervisório

DBF - Diagrama de Blocos de Funções

BF - Blocos de Funções

IL - Lista de Instruções

ST - Texto Estruturado

SIS - Sistema Instrumentado de Segurança

MCE - Matriz de Causa e Efeito

P&I - Diagrama de Processo e Instrumentação

MIE - Memória Intermediária de Entrada

MIS - Memória Intermediária de Saída

OBDD - Diagrama de Decisão Binária Ordenado

DCS - Sistemas de Controle Distribuído

SÍMBOLOS

: - tal que

∃ - existe

∀ - para todo

12

Page 13: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

⇒ - se, então

⇔ - se, somente se

∨ - operador OU

∧ - operador E

¬ - operador NÃO

a ∈ A - a pertence ao conjunto A

a /∈ A - a não pertence ao conjunto A

≡ - equivalente

s |= f - f é válido no estado s

s 2 f - f não é válido no estado s

A ⊂ B - A está contido em B

A ⊃ B - B está contido em A

A ≥ B - A maior ou igual a B

A ≤ B - A menor ou igual a B

A < B - A menor que B

A > B - A maior que B

SIMBOLOGIA PARA ALGORITMOS

! - operador NÃO

| - operador OU

& - operador E

:= - atribuição

init(x) - operador de inicialização da variável x

next(x) - operador de próximo estado da variável x

− > - operador implica

== - operador igual

! = - operador diferente

< - operador menor que

<= - operador menor ou igual que

> - operador maior que

>= - operador maior ou igual que

13

Page 14: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

RESUMO

A confiabilidade é um fator fundamental para os Sistemas Industriais Automatizados.Assim, é importante que o programa de aplicação do Controlador Lógico Programável(CLP), responsável pelo processo, atenda às corretas especificações para o funcionamento.A não conformidade com as especificações, seja por implementação errônea de uma lógicaou pela não observação de aspectos da interação do CLP com os equipamentos externos,pode levar a prejuízos materiais, pessoais e ambientais. O objetivo deste trabalho éaplicar as técnicas de verificação de modelos (model checking) ao projeto de SistemasIndustriais Automatizados baseados em CLPs programados por Diagramas de BlocosFuncionais (DBFs). As contribuições deste trabalho são: Criação de um procedimentode tradução de programas escritos em DBF para a linguagem reconhecida pela ferramentade verificação SMV usando carimbos, descrever um padrão para escrever especificações nalinguagem da Lógica da Árvore da Computação CTL e propõe uma etapa de reprojeto,com base no contra exemplo.

14

Page 15: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

ABSTRACT

Reliability is a basic factor for an industrial automated system. Thus, it is impor-tant that the application program running in the Programmable Logic controller (PLC),responsible for the system, follows exactly the safety specifications. The nonconformitywith the specifications, either by an error in the program implementation or by thenonobservation of some aspects of the interleaving logic, may lead to material, personalor environmental damages. The aim of this work is to apply model checking techniques tothe project of industrial automated system based on PLCs. Particularly the verificationis performed using the software SMV and the program in the PLC is implemented inFunctional Block Diagrams (FBDs). The contributions of this work are: a systematicprocedure for the translation of the structures in a FBD program into SMV code usingtemplates, and a method to re-project the PLC software by using of counterexamplesgiven in the verification procedures.

15

Page 16: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 INTRODUÇÃO

Este capítulo apresenta uma visão geral do trabalho, incluindo uma introdução ao

problema tratado, os objetivos traçados, a metodologia adotada e um guia de leitura

desta dissertação.

1.1 MOTIVAÇÃO E JUSTIFICATIVA

A confiabilidade é um fator fundamental para os Sistemas Industriais Automatizados.

Assim, é importante que o programa de aplicação no Controlador Lógico Programável

(CLP) responsável pelo processo industrial atenda às corretas especificações para o seu

funcionamento. Uma implementação que fuja do comportamento esperado pode permi-

tir que ocorram falhas, possibilitando a ocorrência de acidentes e prejuízos de ordem

material, pessoal e ambiental. Veja-se, por exemplo, o problema na planta química em

ALIPERTI (2005) e o problema no projeto das esteiras do aeroporto de Denver em GIBBS

(1994). Este trabalho é baseado na necessidade real de se utilizarem métodos formais em

sistemas onde falhas são inaceitáveis.

A verificação de modelos surgiu na ciência da computação na década de 60 em torno

da crise crônica do software (GIBBS, 1994). Começou a ser empregada na Engenharia

de Automação mais recentemente com a crescente complexidade dos sistemas autom-

atizados. O processo de verificação de modelos consiste basicamente em modelagem,

especificação e verificação.

A Verificação de Modelos permite fazer a comparação entre as especificações do

Sistema Industrial Automatizado e o programa a ser implementado no CLP. No caso

de não conformidade do projeto com as especificações, a verificação fornece um contra-

exemplo que ilustra a divergência.

Procedimentos semelhantes foram descritos em MOON (1994), RAUSCH & KROGH

(1998) e SMET & ROSSI (2002). Entretanto tais trabalhos tratam apenas de programas

escritos em linguagem por diagramas de contato e não tratam da sistematização do uso

da verificação num procedimento de projeto de um Sistema Industrial Automatizado.

16

Page 17: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1.2 OBJETIVOS

O objetivo do presente trabalho é aplicar a Verificação de Modelos como técnica aux-

iliar para o projeto de Sistemas Industriais Automatizados por CLP. Deseja-se garantir

principalmente a confiabilidade do sistema implementado. Particularmente, neste tra-

balho, trata-se da programação de CLPs por Diagramas de Blocos Funcionais (DBFs).

Este trabalho visa criar um procedimento de tradução do programa de aplicação

em DBF para um código aceito pela ferramenta de verificação. Objetiva-se tornar o

programa modular, no qual é possível inserir modelos dos equipamentos externos, dos

blocos temporizadores e dos blocos de memórias sob a forma de carimbos.

Também tem como objetivo sistematizar o procedimento de tradução de especifi-

cações em propriedades formais a serem verificadas.

1.3 METODOLOGIA

Primeiramente foi feito um estudo dos principais métodos de validação para sistemas

complexos, como: simulação, teste, verificação dedutiva e verificação de modelos, que é

a adotada no trabalho.

Em seguida é feito um estudo de Controladores Lógicos Programáveis (CLPs) e suas

principais linguagens de programação dando uma visão geral do processo de verificação

de modelos com exemplos de MOON (1994) e RAUSCH & KROGH (1998).

Com base numa generalização das etapas do projeto de um Sistema Industrial Autom-

atizado por CLPs, propõem-se etapas adicionais onde se aplica a verificação de modelos

para validar o projeto. Para a execução da Verificação é utilizada a ferramenta SMV

(Symbolic Model Verifier), que é uma ferramenta acadêmica que representa o estado-

da-arte em verificação de modelos (CMU, 2000). Com base no contra exemplo, este

trabalho propõe uma etapa de reprojeto do programa de aplicação. Tais procedimentos

são descritos na Seção 4.3.

Conseqüentemente, o trabalho descreve uma metodologia sistematizada para a veri-

ficação de modelos em projetos de sistemas automatizados, criando um procedimento de

tradução de programas escritos em Diagramas de Blocos Funcionais (DBF) para a lin-

guagem reconhecida pela ferramenta de verificação SMV. Descreve também um padrão

para escrever especificações baseadas no conhecimento do sistema e na matriz de causa

e efeito na linguagem da Lógica da Árvore da Computação CTL. Após desenvolvida a

metodologia, aplica-se a um exemplo real de parte de um Aquecedor a Chama no Capítulo

17

Page 18: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

5.

1.4 ORGANIZAÇÃO DO TRABALHO

O Capítulo 2 dá uma visão geral da verificação de modelos, descrevendo o seu pro-

cesso. Mostra o sistema de verificação de modelos que MCMILLAN (1993) desenvolveu

como parte de sua tese de doutorado, que é utilizado neste trabalho. Também apresenta

o que é a lógica da árvore de computação (CTL).

O Capítulo 3 tem por principal objetivo mostrar como funciona a verificação de

programas de CLP usando a verificação de modelos. São utilizados exemplos acadêmicos

de sistemas de pequeno porte (RAUSCH & KROGH, 1998) e (MOON, 1994) para facilitar

o entendimento do processo de verificação.

O Capítulo 4 tem por objetivo aplicar as técnicas de verificação de modelos ao projeto

de Sistemas Automatizados baseados em CLPs programados por DBF. Foram desenvolvi-

dos padrões para a verificação, com base em estruturas lógicas típicas, como carimbos de

blocos de memória e temporizadores. Também foram desenvolvidos padrões de especi-

ficações para sistemas automatizados, visando a uma futura automatização do processo

de verificação.

O Capítulo 5 tem por objetivo aplicar as técnicas de verificação de modelos desen-

volvidas a uma parte de um projeto de automação de um Aquecedor a Chama Industrial.

O Capítulo 6 conclui o trabalho, analisando seu conteúdo em termos dos objetivos

propostos. Também neste capítulo são resumidas as contribuições teóricas realizadas e

apresentam-se ainda sugestões para futuros trabalhos.

18

Page 19: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

2 VERIFICAÇÃO DE MODELOS

Este capítulo apresenta o método de verificação de modelos desenvolvido por Clarke

e Emerson (CLARKE et al., 1999), que é utilizado neste trabalho.

2.1 VISÃO GERAL DA VERIFICAÇÃO DE MODELOS

A Verificação de Modelos é uma técnica automática para validação do projeto de

sistemas concorrentes de estados finitos. Foi usada com sucesso na prática para vali-

dar projetos de complexos circuitos seqüenciais e protocolos de comunicação (CLARKE

et al., 1999). O principal desafio da verificação de modelos é o tratamento do problema

de explosão de espaço de estados. Este problema ocorre nos sistemas com muitos com-

ponentes que interagem entre si e com sistemas que possuem estruturas de dados que

podem assumir muitos valores diferentes. Nesta seção, compara-se a verificação de mo-

delos a outros métodos formais para validação de projetos de software e hardware. Além

disso, descreve-se como a verificação de modelos é usada para validar projetos de sistemas

complexos.

2.1.1 A NECESSIDADE DE MÉTODOS FORMAIS

Hoje, sistemas de hardware e software são usados amplamente em aplicações onde

falhas são inaceitáveis: comércio eletrônico, redes de comunicações telefônicas, estradas

de rodagem, sistemas de controle de tráfego aéreo, instrumentos médicos, entre outras.

Freqüentemente, escutam-se notícias de incidentes onde alguma falha é causada por um

erro em um sistema de hardware ou software. Um exemplo recente de tais falhas é o

foguete Ariane 5, que explodiu em 4 de junho de 1996, mais ou menos quarenta segundos

depois que foi lançado (SPARACO, 1996). O comitê que investigou o acidente mostrou

que este foi causado por um erro no software de um computador que era responsável por

calcular o movimento do foguete. Durante o lançamento, uma exceção ocorreu quando

um número de ponto flutuante de 64-bits foi convertido num inteiro de 16-bits com sinal.

Tal conversão não era protegida pelo código para manipular exceções e fez com que o

computador falhasse. O mesmo erro também fez com que o computador de backup fal-

hasse. Em conseqüência, dados incorretos da atitude foram transmitidos ao computador

de bordo, que causou a destruição do foguete. A equipe que investigou a falha sugeriu que

19

Page 20: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

diversas medidas fossem tomadas a fim impedir incidentes similares no futuro, incluindo

a verificação do software do Ariane 5 (SPARACO, 1996).

Por causa do sucesso da Internet e dos sistemas embarcados nos automóveis, aero-

planos, e outros sistemas criticamente seguros, a dependência do correto funcionamento

de dispositivos computacionais se torna cada vez maior. De fato, o ritmo da mudança

se torna mais acelerado a cada ano. Por causa deste rápido crescimento na tecnologia, é

importante desenvolver métodos que aumentem a confiança na correção de tais sistemas.

2.1.2 VERIFICAÇÃO DE HARDWARE E SOFTWARE

Os principais métodos de validação para sistemas complexos são simulação, teste,

verificação dedutiva, e verificação de modelos (CLARKE et al., 1999). Ambos, simulação

e teste, envolvem a execução de experimentos antes de se empregar o sistema. Enquanto

se executa a simulação sobre uma abstração ou modelo do sistema, o teste é executado

no produto real. No caso de circuitos, a simulação é executada no projeto do circuito,

enquanto o teste é executado no próprio circuito. Em ambos os casos, estes métodos

injetam sinais em determinados pontos no sistema e observam os sinais resultantes em

outros pontos. Para o software, a simulação e os testes geralmente envolvem a geração de

determinadas entradas e observação das saídas correspondentes. Estes métodos podem

ser uma maneira econômica para encontrar diversos erros. Entretanto, verificar todas as

interações possíveis e falhas potenciais usando simplesmente as técnicas de simulação e

teste é raramente possível.

O termo verificação dedutiva se refere normalmente ao uso de axiomas e regras de

prova para demonstrar a corretude dos sistemas (CLARKE et al., 1999). No início da

pesquisa envolvendo verificação dedutiva, o foco principal estava em garantir a correção

de sistemas críticos. Supunha-se que a importância do comportamento correto era tão

grande que o projetista ou perito em verificação (geralmente um matemático ou um

logicista) deveria gastar o tempo que fosse necessário para verificar o sistema. Inicial-

mente, tais provas eram construídas inteiramente à mão. Com o tempo, os pesquisadores

descobriram que ferramentas de software poderiam ser desenvolvidas para forçar o uso

correto de axiomas e regras de prova. Tais ferramentas poderiam também aplicar uma

busca sistemática para sugerir várias maneiras de se progredir no estágio corrente da

prova.

A importância da verificação dedutiva é amplamente reconhecida pelos cientistas

da computação. A técnica influenciou significativamente a área de desenvolvimento de

20

Page 21: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

softwares (por exemplo, a noção de um invariante). Entretanto, a verificação dedutiva é

um processo demorado que pode ser efetuado somente por peritos treinados no raciocínio

lógico e que tenham considerável experiência. A prova de um simples protocolo ou circuito

pode durar dias ou meses (CLARKE et al., 1999). Conseqüentemente, o uso da verificação

dedutiva é raro. É aplicado primordialmente aos sistemas altamente sensíveis, tais como

protocolos de segurança, onde o investimento de recursos necessários para garantir a

segurança do seu uso são justificáveis.

É importante estar ciente de que algumas tarefas matemáticas não podem ser ex-

ecutadas por algoritmos. A teoria da computabilidade (CLARKE et al., 1999) fornece

limitações do que pode ser decidido por um algoritmo. Em particular, mostra-se que

não existe um algoritmo que decida se um programa de computador arbitrário (escrito

em alguma linguagem de programação como C ou Pascal) termina. Isto limita imediata-

mente o que pode ser verificado automaticamente. Mais ainda, a terminação correta de

um programa genérico não pode ser verificada automaticamente (CLARKE et al., 1999).

Dessa forma, uma grande parte dos sistemas de prova não podem ser completamente

automatizados.

Uma vantagem da verificação dedutiva é que esta pode ser usada para especular sobre

sistemas de estados infinitos (CLARKE et al., 1999). E esta tarefa pode ser automati-

zada dentro de certos limites. E ainda, mesmo que a propriedade a ser verificada seja

verdadeira, nenhum limite pode ser colocado na quantidade de tempo ou de memória

necessária a se encontrar uma solução.

A verificação de modelos (model checking) é uma técnica para verificar sistemas con-

correntes de estados finitos (CLARKE et al., 1999). Um benefício desta restrição é que

a verificação pode ser executada automaticamente. O procedimento utiliza normalmente

uma busca exaustiva do espaço de estados do sistema para determinar se alguma especi-

ficação é verdadeira ou não. Dados os recursos suficientes, os procedimentos terminarão

sempre com uma resposta do tipo sim ou não. Além disso, pode ser implementada por

algoritmos com eficiência considerável, que podem rodar em máquinas potentes (geral-

mente não em um computador desktop típico).

Embora a restrição aos sistemas de estados finitos possa parecer uma principal

desvantagem, a verificação de modelos é aplicável a diversas classes importantes de sis-

temas. Os controladores de hardware são sistemas de estados finitos, e os mesmos são

muitos protocolos de comunicação. Em alguns casos, os sistemas que não são de esta-

dos finitos podem ser verificados pelo uso da verificação de modelos em combinação com

21

Page 22: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

vários princípios de abstração e indução. Em muitos casos, erros podem ser encontra-

dos restringindo as estruturas de dados ilimitadas a instâncias específicas que sejam de

estados finitos. Por exemplo, programas com filas de mensagens ilimitados podem ser

tratados por restrição do tamanho das filas a um número pequeno como dois ou três.

Em virtude da verificação de modelos poder ser feita automaticamente, esta é prefer-

ível à verificação dedutiva sempre que puder ser aplicada. Entretanto, sempre haverá

algumas aplicações críticas em que a prova de teoremas é necessária para a verificação

completa. Um novo sentido da pesquisa tenta integrar a verificação dedutiva com a verifi-

cação de modelos, de modo que porções de estados finitos de sistemas complexos possam

ser verificadas automaticamente. (CLARKE et al., 1999)

2.1.3 O PROCESSO DE VERIFICAÇÃO DE MODELOS

Aplicar a verificação de modelos a um projeto consiste de basicamente três tarefas

(CLARKE et al., 1999):

• Modelagem: A primeira tarefa é converter um projeto em um formalismo aceito

por uma ferramenta de verificação de modelos. Em muitos casos, esta é simples-

mente uma tarefa de compilação. Em outros casos, devido a limitações em tempo

e memória, modelar um projeto requer o uso de abstração para eliminar detalhes

irrelevantes ou sem importância.

• Especificação: Antes da verificação, é necessário indicar as propriedades a que o

projeto deve satisfazer. A especificação é dada geralmente em algum formalismo

lógico. Para sistemas de hardware e de software, é comum usar a lógica temporal,

que pode afirmar como o comportamento do sistema evolui com o tempo. Um ponto

importante na especificação é a abrangência (completeness). Embora a verificação

de modelos forneça subsídios para se certificar de que um modelo satisfaz a uma

dada especificação, é impossível determinar se a especificação dada cobre todas as

propriedades a que o sistema deve satisfazer.

• Verificação: A verificação é completamente automática. Entretanto, na prática,

envolve, freqüentemente, o auxílio humano. Uma atividade manual é a análise dos

resultados da verificação. Caso dê um resultado negativo, é fornecido ao usuário

um traço de erro. O traço de erro trata de um contra-exemplo para a propriedade

verificada e se destina a auxiliar o projetista a detectar onde o erro ocorreu. Neste

22

Page 23: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

caso, a análise do traço de erro pode requerer uma modificação no sistema e uma

nova aplicação do algoritmo de verificação.

Um traço de erro pode também resultar de uma modelagem incorreta do sistema

ou de uma especificação incorreta, chamada freqüentemente de negativo falso (CLARKE

et al., 1999). O traço de erro pode também ser útil para identificar e reparar estes dois

problemas. Uma outra possibilidade é que a tarefa da verificação não termine normal-

mente, devido ao tamanho do modelo, nos casos em que este seja demasiadamente grande

para a memória do computador. Neste caso, pode ser necessário refazer a verificação após

modificar alguns dos parâmetros do verificador de modelos ou ter-se ajustado o modelo

(por exemplo, pelo uso de abstrações adicionais).

2.1.4 LÓGICA TEMPORAL E VERIFICAÇÃO DE MODELOS

As lógicas temporais são úteis para especificar os sistemas concorrentes, porque de-

screvem a ordenação temporal dos eventos sem introduzir explicitamente o tempo. Foram

desenvolvidas originalmente por filósofos para investigar a maneira como o tempo é us-

ado nos argumentos da linguagem natural (HUGUES & CRESWELL, 1977). Embora

uma quantidade de lógicas temporais diferentes tenham sido desenvolvidas, a maioria

possui um operador como Gf que é verdadeiro no presente se f for sempre verdadeiro

no futuro (isto é, se f for globalmente verdadeiro). Para afirmar que dois eventos e1

e e2 nunca ocorrem ao mesmo tempo, escreve-se G(¬e1 ∨ ¬e2). As lógicas temporais

são classificadas freqüentemente conforme o tempo, sendo suposto ter em uma estrutura

linear ou ramificada. Neste trabalho, o sentido de uma fórmula em lógica temporal é

determinado sempre com respeito a um tipo de grafo de transição de estados, chamado,

por razões históricas, de estrutura Kripke (HUGUES & CRESWELL, 1977), conforme

mostra a Seção 2.2.1.

A introdução de algoritmos de verificação de modelos usando lógica temporal por

Clarke e Emerson (CLARKE & EMERSON, 1981) no início dos anos 80 permitiu a

automação do raciocínio em lógica temporal para validação de programas. O algoritmo

desenvolvido por Clarke e Emerson para a lógica de tempo ramificado CTL é polinomial

no tamanho do modelo determinado pelo programa sob consideração e no comprimento

de sua especificação em lógica temporal. Mostraram também como a imparcialidade

(fairness) poderia ser tratada sem alterar a complexidade do algoritmo.

Aproximadamente ao mesmo tempo, Quielle e Sifakis (QUIELLE & SIFAKIS, 1982)

produziram um algoritmo de verificação de modelos para um subconjunto da CTL, mas

23

Page 24: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

a complexidade não foi analisada. Mais tarde Clarke, Emerson e Sistla (CLARKE et al.,

1986) planejaram um algoritmo melhorado linear no produto do comprimento da fór-

mula e do tamanho do grafo de transição de estados. O algoritmo foi implementado no

verificador de modelos denominado EMC, que foi distribuído e usado amplamente para

verificar diversos sistemas de protocolos de rede e circuitos seqüenciais (CLARKE et al.,

1999).

2.1.5 ALGORITMOS SIMBÓLICOS

Na implementação original do algoritmo de verificação de modelos de Clarke e Emer-

son (CLARKE & EMERSON, 1981), as relações de transição são representadas explici-

tamente por listas de adjacência. Para sistemas concorrentes com um pequeno número

de processos, o número dos estados é geralmente pequeno, e a abordagem é, em geral

viável. Nos sistemas com muitas partes concorrentes entretanto, o número de estados no

grafo de transição de estados global é muito grande para lidar. Em 1987, Ken McMil-

lan, então um estudante de pós-graduação na Universidade de Carnegie Mellon, descobriu

que, usando uma representação simbólica para os grafos de transição de estados, sistemas

com número de estados muito maior poderiam ser verificados (MCMILLAN, 1993). A

nova representação simbólica foi baseada nos Diagramas de Decisão Binária Ordenados

(Ordered Binary Decision Diagrams - OBDDs), (BRYANT & MUSGRAVE, 1998). Os

OBDDs fornecem uma forma canônica que é freqüentemente mais compacta que a forma

normal conjuntiva ou disjuntiva (CLARKE et al., 1999). Algoritmos eficientes foram

desenvolvidos para manipular fórmulas booleanas escritas em OBDDs. Uma vez que a

representação simbólica captura alguma regularidade no espaço de estados de determi-

nados circuitos e protocolos, é possível verificar sistemas com um número extremamente

grande de estados, muitas ordens maior do que poderia ser tratado pelos algoritmos que

explicitam espaços de estados. Usando o algoritmo de verificação de modelos original de

CTL de Clarke e Emerson com a nova representação para grafos de transição de estados,

tornou-se possível verificar alguns exemplos com mais de 1020 estados (CLARKE et al.,

1999). Desde então, os vários refinamentos das técnicas baseadas em OBDD por outros

pesquisadores levaram à contagem de estados de até mais de 10120 (CLARKE et al.,

1999).

A representação implícita é completamente natural para modelar circuitos seqüenciais

e protocolos. Cada estado é codificado por uma atribuição de valores booleanos ao

conjunto de variáveis de estado associadas ao circuito ou protocolo. A relação de transição

24

Page 25: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

pode conseqüentemente ser expressa como uma fórmula booleana nos termos de dois

conjuntos de variáveis: um conjunto que codifica o estado de origem e o outro que codifica

o de destino. Esta fórmula é, então, representada por um diagrama binário de decisão

(CLARKE et al., 1999). O algoritmo de verificação de modelos se baseia no cálculo de

pontos fixos dos transformadores de predicado que são obtidos da relação de transição

(CLARKE et al., 1999). Os pontos fixos são conjuntos de estados que representam as

várias propriedades temporais do sistema concorrente. Nas novas implementações, tanto

os transformadores de predicado como os pontos fixos são representados por OBDDs.

Assim, é possível evitar que se construa explicitamente o grafo de estados do sistema

concorrente.

O sistema de verificação de modelos que McMillan desenvolveu como parte de sua

tese de doutorado é chamado Verificador de Modelos Simbólicos (Symbolic Model Veri-

fier - SMV) (MCMILLAN, 1993). Baseia-se em uma linguagem para descrever sistemas

concorrentes de estados finitos hierárquicos. Os programas na linguagem do SMV podem

ser verificados por especificações expressas em lógica temporal. O verificador de modelos

extrai um sistema de transição representado por um OBDD a partir de um programa na

linguagem SMV e usa um algoritmo de busca baseado em OBDDs para determinar se o

sistema satisfaz à especificação. Se o sistema de transição não satisfaz a alguma especi-

ficação, o verificador produzirá um traço de execução que mostra porque a especificação

é falsa. O sistema SMV é amplamente distribuído, e um grande número de exemplos

tem sido verificados com o mesmo. Os exemplos tratados fornecem uma evidência con-

vincente de que o SMV pode ser usado para eliminar erros em projetos industriais reais

(CLARKE et al., 1999). Uma descrição completa da linguagem SMV é apresentada no

Apêndice 8.1 deste trabalho.

Um exemplo que ilustra o poder da verificação simbólica de modelos é a verificação

do protocolo de coerência de cache descrito no padrão IEEE Futurebus+ (Padrão IEEE

896.1-1991) (CLARKE et al., 1999). O desenvolvimento do protocolo de coerência de

cache Futurebus+ data de 1988, e todas as tentativas precedentes de validar o protocolo

foram baseadas inteiramente em técnicas informais. No verão de 1992, pesquisadores da

Universidade Carnegie Mellon construíram um modelo preciso do protocolo na linguagem

SMV e, então, usaram o SMV para mostrar que o sistema de transição resultante satisfazia

uma especificação formal da coerência cache (CLARKE et al., 1993) e (LONG, 1993).

Foram capazes de encontrar uma certa quantidade de erros anteriormente não detectados,

bem como erros potenciais no projeto do protocolo. Clarke, Grumberg e Peled referem-

25

Page 26: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

se a esta como sendo a primeira vez que uma ferramenta automática de verificação é

utilizada para encontrar erros num padrão IEEE (CLARKE et al., 1999).

2.2 LÓGICAS TEMPORAIS

Nesta seção é descrita uma lógica para especificar propriedades temporais dos sis-

temas de transição de estados. A lógica utiliza proposições atômicas e conectivos

booleanos tais como a conjunção, a disjunção, e a negação para construir elaboradas

expressões que descrevem as propriedades dos estados do sistema. A lógica temporal

é um formalismo para descrever seqüências de transições entre estados em um sistema

reativo. Na lógica temporal considerada, o tempo não é mencionado explicitamente, pelo

contrário, uma fórmula especifica se algum estado é eventualmente alcançado, ou que

um estado de erro nunca é atingido. As propriedades como eventualmente ou nunca são

especificadas usando-se operadores temporais (CLARKE et al., 1999).

2.2.1 A LÓGICA DA ÁRVORE DA COMPUTAÇÃO CTL∗

Conceitualmente, as fórmulas da lógica da árvore de computação (Computation Tree

Logic - CTL∗) descrevem propriedades de árvores da computação. Forma-se uma árvore

de computação ao se designar um estado de uma estrutura de transição de estados como

estado inicial e, então, desenrola-se a estrutura numa árvore infinita com o estado inicial

na raiz.

A semântica CTL∗ é definida com respeito a uma estrutura Kripke (CLARKE et al.,

1999). Sejam AP um conjunto de proposições atômicas, M é uma estrutura Kripke tripla

(S, R, L), onde S é o conjunto de estados; R ⊂ S × S é a relação de transição, que deve

ser total (isto é, para todos os estados s ∈ S existe um estado s ’ ∈ S tal que (s, s ’) ∈

R); e L : S → 2AP é uma função que etiqueta cada estado (s ∈ S ) com um conjunto

de proposições atômicas (L(s) ⊂ AP) verdadeiras nesse estado. Um caminho em M é

uma infinita seqüência de estados, π = s0, s1, ... tais que, para cada i ≥ 0, (si, si+1) ∈ R. A

Figura 2.1 (a) ilustra uma estrutura Kripke e a Figura 2.1 (b) mostra a sua correspondente

árvore da computação, com estado inicial s0 (CLARKE et al., 1986). Da Figura 2.1, o

conjunto de estados é S = {s0, s1, s2}, a relação de transição é R = {(s0, s1), (s1,s0),

(s0, s2), (s2, s1)}, e os conjuntos de proposições atômicas são AP = {a, b, c}, o conjunto

de proposições verdadeiras nos estados é P (s0) = {a, b}, P (s1) = {b, c} e P (s2) = {a, c}.

26

Page 27: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

DE

DF

EF

S0

S2

S1

S0

S1 S2

S1

S0

S0

S1 S2

(a) (b)

.

.

....

.

.

.

FIG. 2.1: (a) Estrutura Kripke. (b) Árvore correspondente para estado inicial S0.

Em CTL∗ as fórmulas são compostas de quantificadores de caminho e operadores

temporais. Os quantificadores de caminho são usados para descrever a estrutura de

ramificação da árvore de computação. Há dois quantificadores de caminho: A (para

todos os caminhos de computação - for all computation paths) e E (para algum caminho

de computação - for some computation path). Estes quantificadores são usados em um

estado particular para especificar que todos ou algum dos caminhos que começam neste

estado possuem alguma propriedade. Os operadores temporais descrevem propriedades

de um caminho ao longo da árvore. Há cinco operadores temporais básicos:

• X (próxima vez - next time) requer que uma propriedade seja válida no segundo

estado do caminho.

• F (eventualmente ou no futuro - eventually or in the future) afirma que uma pro-

priedade é válida em algum estado do caminho.

• G (sempre ou globalmente - always or globally) especifica que uma propriedade é

válida para todo estado do caminho.

• U (até - until) é um operador que combina duas propriedades. Dadas as pro-

priedades p1 e p2, p1 U p2 se houver um estado do caminho onde p2 torna-se válida,

e em cada estado precedente, p1 sempre for válida.

• R (liberação - release) é dual ao operador U. Dadas as propriedades p1 e p2, p1

R p2, é válida quando p2 é válido ao longo do caminho até e incluindo o primeiro

27

Page 28: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

estado onde p1 seja válido. Não se requer que p1 torne-se válido no caminho.

Há dois tipos de fórmulas em CTL∗: fórmulas de estado (que são verdadeiras em um

estado específico) e fórmulas de caminho (que são verdadeiras ao longo de um caminho

específico). Seja AP o conjunto de nomes de proposição atômicas. A sintaxe de fórmulas

de estado é dada pelas seguintes regras:

• Se p ∈ AP, então p é uma fórmula de estado.

• Se f e g são fórmulas de estado, então ¬f, f ∨ g e f ∧ g são fórmulas de estado.

• Se f é uma fórmula de caminho, então E f e A f são fórmulas de estado.

Duas regras adicionais são necessárias para especificar a sintaxe de fórmulas do cam-

inho:

• Se f é uma fórmula de estado, então f é também uma fórmula de caminho.

• Se f e g são fórmulas de caminho, então ¬f, f ∨ g e f ∧ g, X f, F f, G f, f U g, e

f R g são fórmulas de caminho.

A CTL∗ é o conjunto das fórmulas de estado geradas pelas regras acima.

Utiliza-se πi para denotar o sufixo do caminho π que começa no estado si. Se f

denotar uma fórmula de estado, a notação M,s |= f significa que f é válida no estado s

da estrutura kripke M. Similarmente, se f for uma fórmula de caminho, M,π |= f significa

que f é válida ao longo do caminho π na estrutura kripke M. Quando a estrutura kripke

M estiver subentendida no contexto, será usualmente omitida. A relação |= é definida

indutivamente como segue (supõe-se que f1 e f2 sejam as fórmulas de estado, g1 e g2 sejam

fórmulas de caminho e que π denote um caminho na forma S0 S1 S2...):

a) M, s |= f1 ⇔ f1 ∈ L(s).

b) M, s |= ¬f1 ⇔ M, s 2 f1.

c) M, s |= f1 ∨ f2 ⇔ M, s |= f1 ou M, s |= f2.

d) M, s |= f1 ∧ f2 ⇔ M, s |= f1 e M, s |= f2.

e) M, s |= Eg1 ⇔ há um caminho π a partir de s tal que M, π |= g1.

f) M, s |= Ag1 ⇔ para cada caminho π que parte de s, M, π |= g1.

28

Page 29: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

g) M, π |= f1 ⇔ s é o primeiro estado de π e M, s |= f1.

h) M, π |= ¬g1 ⇔ M, π 2 g1.

i) M, π |= g1 ∨ g2 ⇔ M, π |= g1 ou M, π |= g2.

j) M, π |= g1 ∧ g2 ⇔ M, π |= g1 e M, π |= g2.

k) M, π |= Xg1 ⇔ M, π1 |= g1.

l) M, π |= Fg1 ⇔ existe um k ≥ 0 tal que M,πk |= g1.

m) M, π |= Gg1 ⇔ para todo i ≥ 0,M, πi |= g1.

n) M, π |= g1Ug2 ⇔ existe um k ≥ 0, tal que M, πk |= g2 e para todo 0 ≤ j <

k,M, πj |= g1.

o) M, π |= g1Rg2 ⇔ para todo j ≥ 0, se para cada i < j M, πi2 g1 então M,πj |= g2.

É fácil ver que os operadores ∨,¬,X,U, e E são suficientes para expressar qualquer

fórmula CTL∗ CLARKE et al. (1999), pois é possível listar o seguinte:

• f ∧ g ≡ ¬(¬f ∨ ¬g)

• fRg ≡ ¬(¬fU¬g)

• Ff ≡ verdadeiroUf

• Gf ≡ ¬F¬f

• A(f) ≡ ¬E(¬f)

2.2.2 CTL E LTL

Neta seção consideram-se duas sub-lógicas da CTL∗: uma é uma lógica de tempo

ramificante e a outra é uma lógica de tempo linear. A distinção entre as duas está na forma

como lidam com a ramificação na árvore de computação subjacente. Na lógica temporal

de tempo ramificante, os operadores temporais quantificam sobre os caminhos que são

possíveis a partir de um dado estado. Na lógica temporal de tempo linear, os operadores

são fornecidos descrevendo eventos ao longo de um único trajeto de computação.

A lógica da árvore da computação (CTL) é um subconjunto restrito da CTL∗ onde

cada um dos operadores temporais X, F, G, U e R deve ser imediatamente precedido

29

Page 30: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

por um quantificador de caminho (CLARKE et al., 1999). Mais precisamente, a CTL é

um subconjunto da CTL∗ que é obtida ao se restringir a sintaxe de fórmulas de caminho

pela seguinte regra:

• Se f e g forem fórmulas de estado, então X f, F f, G f, f U g, e f R g são fórmulas

de caminho.

A Lógica temporal linear (LTL), consiste das fórmulas que têm a forma A f, onde

f é uma fórmula do caminho em que as únicas subfórmulas de estado permitidas são

proposições atômicas (CLARKE et al., 1999). Mais precisamente, uma fórmula de cam-

inho LTL é tal que:

• Se p ∈ AP, então p é uma fórmula de caminho.

• Se f e g são fórmulas de caminho, então ¬f, f∨ g, f∧ g, X f, F f, G f, f U g, e f R

g são fórmulas de caminho.

Pode-se mostrar que as três lógicas discutidas neste trabalho possuem poderes de

expressão diferentes (CLARKE et al., 1999). Por exemplo, não há nenhuma fórmula

CTL que seja equivalente à fórmula LTL A(FGp). Esta fórmula expressa a propriedade

de que, ao longo de todo caminho, há algum estado a partir do qual p será sempre

válido. Do mesmo modo, não há nenhuma fórmula LTL que seja equivalente à uma

fórmula CTL AG(EFp). A disjunção entre as duas fórmulas A(FGp) ∨ AG(EFp) é

uma fórmula CTL∗ e não é exprimível em fórmulas CTL ou LTL.

Todas as especificações neste trabalho serão escritas na lógica CTL. Há dez oper-

adores básicos de CTL (CLARKE et al., 1999):

• AX e EX;

• AF e EF;

• AG e EG;

• AU e EU;

• AR e ER.

Cada um dos dez operadores podem ser expressos nos termos de três operadores EX,

EG e EU (CLARKE et al., 1999):

30

Page 31: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

• AXf = ¬EX(¬f)

• EFf = E[V erdadeiroUf ]

• AGf = ¬EF(¬f)

• AFf = ¬EG(¬f)

• A[fUg] ≡ ¬E[¬gU(¬f ∧ ¬g)] ∧ ¬EG¬g

• A[fRg] ≡ ¬E[¬fU¬g]

• E[fRg] ≡ ¬A[¬fU¬g]

Alguns dos principais operadores são ilustrados na Figura 2.2. Os operadores são mais

fáceis de compreender em termos da árvore da computação obtida pelo desdobramento

do modelo Kripke. Cada árvore da computação possui o nó s0 como raiz (CLARKE

et al., 1999).

Muitos dos métodos para evitar o problema da explosão de estados baseiam-se no

raciocínio computacional ou na abstração. A lógica que é usada tipicamente nestes casos

é mais restrita e apenas permite quantificadores de caminho universais. A limitação da

CTL aos quantificadores de caminho universais é chamada de ACTL∗, e a restrição da

CTL aos quantificadores de caminho universais é chamada ACTL.

A fim de evitar quantificadores de caminho existenciais implícitos resultantes do uso

da negação, supõe-se que as fórmulas sejam dadas na forma normal positiva, isto é, as

negações são aplicadas apenas às proposições atômicas. Para evitar perda do poder de

expressão, tornam-se necessários os operadores de junção (∧) e disjunção (∨), bem como

ambos os operadores U e de R.

31

Page 32: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

f

f f

f

f

f f

f

f f

M,s0 _�$)�f M,s0_�$*�f

f

f

f

f

M,s0 _�()�f M,s0 _�(*�f

f f

M,s0 _�$;�f

f

M,s0 _EX f

s0 s0 s0

s0s0s0

FIG. 2.2: Operadores básicos de CTL.

As fórmulas AF AGa e AF AXa são exemplos de fórmulas ACTL. Essas fórmulas

não são exprimíveis em LTL CLARKE et al. (1999). Porque ACTL é um subconjunto de

CTL, as lógicas ACTL e LTL são incomparáveis. Além disso, ACTL∗ possui mais poder

de expressão que a LTL. As fórmulas AG EF a e AG¬ AF a não estão em ACTL.

2.2.3 EXEMPLO - EXCLUSÃO MÚTUA

Os grafos de transição de estados globais de muitos programas concorrentes podem

ser modelados como estruturas Kripke CLARKE et al. (1986). Por exemplo, a Figura

2.3 mostra a estrutura Kripke para uma solução simples do problema de exclusão mútua

entre dois processos P1 e P2. Nesta solução, cada processo Pi(i = 1ou2) está sempre em

uma de três regiões do código:

• Ni: fora da região crítica;

• Ti: esperando para entrar na região crítica;

• Ci: dentro da região crítica.

32

Page 33: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 2.3: Gráfico de transição de estados global para o problema de exclusão mútua deum processo.

Note que somente transições entre regiões diferentes do código foram modeladas;

os movimentos dentro da mesma região são considerados irrelevantes neste nível de ab-

stração. Além disso, cada transição é devido à execução exata de uma etapa de um

processo. É fácil ver, neste caso, que AF(C1) é verdadeiro no estado 1 e que EF(C1∧C2)

é falso no estado 0.

2.3 O VERIFICADOR DE MODELOS SMV

O SMV é uma ferramenta para verificar se sistemas de estados finitos satisfazem a

especificações dadas em CTL. Utiliza o algoritmo simbólico de verificação de modelos

baseado em OBDDs de McMillan (MCMILLAN, 1993) (CLARKE et al., 1999). Os

componentes da linguagem do SMV são usados para descrever sistemas complexos de

estados finitos. Algumas das características mais importantes da linguagem são descritas

abaixo.

O usuário pode decompor a descrição de um sistema de estados finitos complexo

em módulos. Os módulos podem ser instanciados diversas vezes, e podem referenciar

variáveis declaradas em outros módulos. Os módulos podem ter parâmetros que podem

ser componentes de estados, expressões, ou outros módulos.

Os Módulos do SMV podem ser compostos sincronamente ou por intertravamento.

Em uma composição síncrona, um passo na composição corresponde a um passo em cada

um dos componentes. No intertravamento, um passo da composição representa um passo

dado por apenas um componente. Se a palavra chave process preceder uma instância

de um módulo, o intertravamento é usado, senão a composição síncrona é suposta.

33

Page 34: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

As transições de estado em um modelo podem ser deterministas ou não-

deterministas. O não-determinismo pode refletir um ponto de escolha nas ações do

sistema que está sendo modelado, ou pode ser usado para descrever um modelo mais

abstrato onde são omitidos determinados detalhes. A habilidade de especificar o não-

determinismo está ausente para muitas linguagens de descrição de hardware, mas é crucial

ao fazer modelos de alto nível (CLARKE et al., 1999).

As relações de transição dos módulos podem ser especificadas explicitamente nos

termos de relações booleanas nos estados estimados atuais e próximos de variáveis de

estados, ou implicitamente como um conjunto de indicações de atribuições paralelas. As

indicações de atribuição paralelas definem os valores das variáveis no próximo estado em

termos de valores no estado atual.

Não é fornecida uma sintaxe ou uma semântica formal para a linguagem do SMV

aqui neste capítulo, mas pode ser encontrado no manual do SMV (MCMILLAN, 1993)

ou no Apêndice 8.1.

2.4 RESUMO DO CAPÍTULO

Este capítulo mostra basicamente como funciona o método de Verificação de Modelos.

No próximo capítulo será mostrado como a verificação de modelos é aplicada à validação

de programas de CLP.

34

Page 35: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

3 VERIFICAÇÃO DE MODELOS APLICADA À PROGRAMAÇÃO DE

CLPS

Este capítulo ilustra a aplicação da verificação de modelos à validação de progra-

mas de CLP. Os programas em consideração são escritos na linguagem de diagramas de

contato. Os exemplos apresentados servem de base para a compreensão de como são

elaboradas as especificações em CTL, e como funciona o método de verificação.

3.1 CONTROLADORES LÓGICOS PROGRAMÁVEIS (CLPS)

Um controlador lógico programável (CLP) é um equipamento eletrônico de tecnolo-

gia digital que utiliza memória programável para armazenamento interno de instruções

para cumprimento de rotinas especificas, como lógica, seqüenciamento, temporização,

contagem e aritmética, para controlar, por intermédio dos sinais provenientes de módu-

los de entradas e saídas, vários tipos de máquinas ou processos (DIAS, 2005). A Figura

3.1 apresenta um fluxo de dados de um CLP e um processo sob seu controle (MOON,

1994). Ao controlar um sistema, um CLP executa repetidamente um ciclo de varredura

conforme mostra a Figura 3.2. Um ciclo de varredura tipo consiste em três etapas:

a) Atualização dos dados da memória intermediária de entrada (MIE) com base nos

valores lidos nos módulos de entrada.

b) Execução sequencial do programa de aplicação do usuário, com alteração da

memória de dados.

c) Escrita dos valores da memória intermediária de saída (MIS) nos módulos de saída.

35

Page 36: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 3.1: Fluxo de dados entre o CLP e um sistema a controlar.

Para que o CLP seja um controlador eficaz, o tempo de varredura deve ser menor

do que o tempo de duração mais curto de um sinal de entrada ou saída do processo. O

tempo de varredura é geralmente na escala de milesegundos e depende da velocidade do

processador, do tamanho do programa, e do número de dispositivos de entrada e de saída

(FALCIONE & KROGH, 1993).

FIG. 3.2: Ciclo de varredura do CLP.

O padrão IEC 61131-3 (IEC, 2003) define a sintaxe e a semântica de cinco linguagens

de programação para CLPs. As quatro primeiras linguagens de programação são: os Dia-

gramas de Contatos, os Diagramas de Blocos Funcionais (que são linguagens gráficas), os

Textos Estruturados e as Listas de Instruções (que são linguagens textuais). A linguagem

de Diagramas de Contato (Ladder Diagram - LD) se baseia na lógica de relés e permite

a descrição de funções Booleanas. Na linguagem dos Diagramas de Blocos Funcionais

36

Page 37: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

(DBF), a programação é feita por intermédio de blocos gráficos. A linguagem de Texto

Estruturado (Structured Text - ST), próxima ao Pascal, permite sentenças condicionais,

seqüenciais e laços. A Lista de Instruções (Instruction List - IL) é uma linguagem na

forma de um código assembler.

A quinta linguagem da norma IEC 61131-3 é definida para estruturar a organização

interna dos programas de CLP e blocos de funções. Esta linguagem gráfica, chamada

de Cartas de Funções Seqüenciais (Sequential Function Charts - SFC), trata de uma

extensão das máquinas de estado contendo primitivas para descrever comportamentos

seqüenciais, paralelismo e sincronicidades. Permite a divisão de um programa de CLP

(ou bloco de funções) em um conjunto de etapas e transições interconectadas por arcos

direcionados. Cada etapa é associada a um conjunto de ações e cada transição é associada

a um conjunto de condições lógicas. Baseia-se no Grafcet, norma IEC 60848 (IEC, 1999).

Um dos objetivos da IEC 61131-3 é proporcionar ao projetista de programas de CLP

uma ferramenta modular e estruturante para viabilizar a reusabilidade e a qualidade

dos programas, especialmente em direção à confiabilidade à segurança (LAMPÉRIÈRE-

COUFFIN et al., 1999). Todavia, a existência de elementos comuns para todas as lin-

guagens de programação não é o bastante para assegurar a qualidade dos programas, e

o padrão não trata de métodos eficientes de verificação.

3.2 VISÃO GERAL DA VERIFICAÇÃO DE MODELOS APLICADA À PROGRA-

MAÇÃO DE CLPS

Encontram-se na literatura algumas abordagens para verificação de programas de

CLP, descritas sucintamente a seguir. Em MOON (1994), apresenta-se um método de

verificação de programas escritos em diagrama de contatos. Definem-se algumas formas

de escrever as especificações em CTL para os acionamentos típicos de um CLP. Mostra-se

uma forma de modelagem de um programa escrito em diagrama de contatos na forma de

um código SMV. Utiliza a ferramenta SMV original (CMU, 2000) para fazer a verificação.

Em RAUSCH & KROGH (1998), utiliza-se o formalismo dos sistemas Condição/Evento

para representar a planta a controlar pelo CLP. Dessa forma, inclui-se o modelo dos

equipamentos externos que interfaceiam com o CLP. Utilizam-se módulos para descrever

os componentes do sistema e do programa do CLP. Em VÖLKER & KRÄMER (1999)

faz a verificação por prova de teoremas assistida por uma ferramenta de software. As

especificações são escritas em LTL e os programas a verificar descritos em SFCs e DBFs.

Em SMET & ROSSI (2002) modela-se uma célula de manufatura onde se testam 90

37

Page 38: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

especificações. Utiliza-se o Cadence SMV (CADENCE, 2002) para fazer a verificação.

Expressam-se as propriedades em LTL e CTL. Em XIYING & LITZ (2002) utilizam-se

redes de Petri para modelar o sistema. Apresenta-se um procedimento para descrever os

sistemas por Redes de Petri Interpretadas a Sinais (SIPN). SONG et al. (2004) faz a ver-

ificação de modelos para programas com blocos temporizadores. Trata-se da verificação

de propriedades para a automação de usinas nucleares.

A Figura 3.3 apresenta uma visão geral do método a ser seguido para se executar

a verificação de sistemas automatizados por CLP baseado nas abordagens de MOON

(1994) e RAUSCH & KROGH (1998), citadas anteriormente.

Programas em Diagrama de Contatos

Equipamentos/sensores/atuadores/processo

Modelo do prog. em Diagr. deCont. em execução no CLP

Contra-exemplo

Propriedades formais

Funcionamento do CLP

Especificações de funcionamento

Modelo do sistema

Verificação

Propriedade verdadeira

Modelo do ambienteexterno

FIG. 3.3: Diagrama de Fluxo de Dados.

Primeiramente obtém-se um modelo do programa de aplicação combinado ao fun-

cionamento do CLP. De forma geral, tratam-se apenas programas escritos em Diagramas

de Contatos. As estruturas utilizadas da linguagem de diagrama de contatos são simples,

não se encontrando na maioria das abordagens, estruturas complexas do tipo memórias,

temporizadores etc. Essa modelagem do programa de aplicação, incluindo sua interpre-

tação pelo hardware do CLP, foi estabelecida por MOON (1994). A verificação é feita

sobre uma abstração do programa e não sobre o programa de aplicação propriamente

dito. Faz-se uma modelagem da listagem do CLP na linguagem do SMV apenas.

Adicionalmente, pode-se ter o modelo do ambiente externo ao CLP: equipamentos,

sensores, atuadores e o processo propriamente dito. Isso enriquece o modelo do sistema,

restringindo os comportamentos possíveis, pois nem todo sinal de entrada pode ocorrer. A

38

Page 39: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

modelagem do ambiente externo ao CLP foi estabelecida pela primeira vez por RAUSCH

& KROGH (1998).

O modelo do programa de aplicação, combinado ao modelo do funcionamento do

CLP, e o modelo do ambiente externo são combinados num modelo do sistema a verificar,

como mostrado na Figura 3.3.

As especificações de funcionamento podem descrever as seqüências lógicas indese-

jadas, a lógica de sequencialização ou as propriedades estruturais do sistema. Em função

da descrição das especificações ou do conhecimento do sistema, é feita a construção da

propriedade formal, escrita na maioria das vezes em CTL. Não se observa na literatura

nenhuma tentativa de sistematização da escrita de especificações.

Em geral a verificação é feita utilizando-se diferentes versões da ferramenta SMV.

MOON (1994) e RAUSCH & KROGH (1998) desenvolveram os estudos sobre SMV

original (CMU, 2000). SMET & ROSSI (2002) utilizam o Cadence SMV (CADENCE,

2002). Há, ainda, a ferramenta NuSMV (CAVADA & CIMATTI, 2004).

O resultado da verificação indica se o modelo do sistema está em conformidade com

as especificações ou não. Em caso negativo, três são as hipóteses que devem ser levan-

tadas, como indicado pelo tracejado na Figura 3.3. Primeiramente, uma fonte de não

conformidade é o erro de modelagem do sistema. Neste caso, deve-se refinar ou corrigir o

modelo do sistema para se fazer uma nova verificação. A segunda hipótese é a existência

de um erro do programa de aplicação captado na modelagem. Neste caso, deve-se par-

tir para um reprojeto do programa antes de uma nova verificação. A terceira hipótese

corresponde ao dito falso verdadeiro de uma propriedade, onde as especificações ou estão

escritas incorretamente ou expressam requisitos muito restritos para o sistema. Neste

caso, a especificação deve ser reescrita para uma nova verificação.

3.3 UM MODELO PARA OS DIAGRAMAS DE CONTATOS

Os Diagramas de Contato são uma forma de programação de CLPs por meio de

símbolos gráficos, representando contatos e bobinas. Os contatos e bobinas correspondem

a variáveis booleanas armazenadas na memória de dados do CLP. São conectados por

ligações em ramos (rungs) como num diagrama de lógica a relé. As expressões booleanas

calculadas a cada ciclo de varredura do CLP correspondem à avaliação lógica seqüencial

do diagrama de contatos (FABIAN & HELLGREN, 1998).

Um contato é representado como abaixo, onde se identifica um contato, associado à

variável booleana A, interna ao CLP, e duas ligações: uma à direita e uma à esquerda.

39

Page 40: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

A

--| |--

Os contatos são usados como acesso ao estado de uma variável interna no cálculo de

expressões booleanas. Tipicamente encontram-se os contatos indicados na Tabela 3.1

(FABIAN & HELLGREN, 1998).

TAB. 3.1: Simbologia e descrição dos diagramas de contato

CONTATO SÍMBOLO DESCRIÇÃOContato normal-mente aberto

A

--| |--

O estado da ligação à esquerda é copiado para a ligaçãoà direita se o estado de A é verdadeiro, caso contrário,o estado da ligação à direita é falso.

Contato normal-mente fechado

A

--|/|--

O estado da ligação à esquerda é copiado para a ligaçãoà direita se o estado de A é falso, caso contrário, o estadoda ligação à direita é falso.

Uma bobina é representada como abaixo, onde identifica-se uma bobina associada a

uma variável booleana Q, interna ao controlador, e duas ligações: uma à direita e uma à

esquerda.

Q

--( )--

As bobinas alteram os estados de suas variáveis associadas. A Tabela 3.2 ilustra alguns

tipos de bobina (FABIAN & HELLGREN, 1998).

TAB. 3.2: Bobinas do sistema

BOBINA SÍMBOLO DESCRIÇÃOBobina normal Q

--( )--

O estado da ligação da esquerda é copiado para avariável Q.

Bobina negativa Q

--(\)--

A negação do estado da ligação à esquerda é copi-ada para a variável Q.

A conversão de um diagrama de contatos para uma descrição de modelo em SMV é

quase que uma correspondência direta (MOON, 1994). Os valores de saída das bobinas,

à direita de cada ramo, dependem da estrutura e dos valores no lado esquerdo do ramo.

Cada ramo pode ser convertido em uma descrição de modelo correspondente usando os

operadores do SMV ! (NÃO), & (E), | (OU) e next (próximo estado) (MOON, 1994).

40

Page 41: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

A Figura 3.4 mostra um diagrama de contatos (a) e a descrição do modelo equivalente

no SMV (b). As barras verticais do diagrama indicam a fonte de potência, onde a barra

da esquerda representa o potencial alto e a barra da direita representa o potencial baixo,

enquanto as linhas horizontais, chamadas ramos, indicam, os fluxos corrente possíveis. A

varredura dos ramos de um diagrama de contatos é da esquerda superior para a direita.

Dependendo do fabricante do CLP, a varredura do diagrama de contatos é feita ramo a

ramo ou coluna a coluna. Em muitos casos, as duas ordens não fazem nenhuma diferença

no comportamento da varredura dos CLPs. Para evitar casos excepcionais, é escolhido

o modelo do diagrama de contatos fazendo varredura ramo a ramo de cima para baixo

(MOON, 1994). A ordem da varredura coluna por coluna pode ser modelada de uma

maneira similar (MOON, 1994).

next(R2) := R1;

next(R4) := !R3;

next(R7) := R5 & R6;

next(R10) := R8 | R9;

next(R15) := next(R7) & R14;

next(R12) := (R11 | R12) & !R13;

Ramo 1

Ramo 2

Ramo 3

Ramo 4

Ramo 5

Ramo 6

R1 R2

R3 R4

R6 R7

R11

R12

R13

R7 R14 R15

R8

R9

R10

R5

R12

(a) (b)

FIG. 3.4: LD e descrição do modelo equivalente.

O ramo 1 do diagrama da Figura 3.4, corresponde a um contato normalmente aberto

R1 ligado a uma bobina de saída R2. O valor correspondente da bobina R2 no próximo

ciclo de varredura é igual ao valor do contato R1 no tempo de varredura atual. Deste

modo, se a entrada R1 é VERDADEIRA então R2 é VERDADEIRA no próximo ciclo

de varredura; senão R2 é FALSO no próximo ciclo de varredura.

41

Page 42: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

Embora a memória de dados seja atualizada imediatamente enquanto as entradas

relacionadas são mudadas, o sinal de saída ocorre depois, uma vez feita a varredura.

Para incluir a idéia da diferença de tempo entre a entrada e a saída, o operador next

é usado na descrição de modelos como mostrado no texto do lado direito (b) da Figura

3.4. O ramo 2 representa a lógica booleana (NÃO) e a descrição de modelos equivalentes

é mostrada no texto usando o operador !.

Os ramos em série e paralelo de variáveis de entrada representam a lógica booleana

E e OU, respectivamente, como mostrado nos ramos 3 e 4. Por exemplo, R7 no ramo

3 é VERDADEIRO na próxima varredura somente se R5 e R6 são atualmente VER-

DADEIROS. O ramo 5 mostra um contato de selo, uma estrutura fundamental para

todos os elementos armazenados. A bobina R12 torna-se VERDADEIRA (selagem) se

o contato de R11 tornar VERDADEIRO, e R12 permanece VERDADEIRA até que o

contato R13 se torne VERDADEIRO (liberação). A descrição de modelo equivalente é

mostrada no texto da Figura 3.4. Observe que R12 é mostrado como um contato nor-

malmente aberto no lado direito do texto e uma saída representada pelo operador next

no lado esquerdo do texto. Porque R7 no ramo 6 é mostrado também no ramo 3 como

uma saída, o contato R7 já está alterado quando o CLP começa a varredura do ramo 6

(somente na ordem de varredura ramo a ramo de cima para baixo). Assim o valor de R7

no ramo 6 é o mesmo que o próximo valor R7 mudado no ramo 3. O R7 no ramo 6 é

representado como next(R7) em vez de R7, mesmo R7 sendo mostrado no lado esquerdo

do ramo. A regra da conversão aqui é que se a variável da entrada já tiver aparecido

como uma variável de saída acima do ramo atual, o operador next deve ser adicionado

para representar a variável na descrição de modelos do SMV.

Pode-se traduzir um programa em Diagrama de Contatos em um modelo do sistema

correspondente para sua verificação usando as regras da conversão mostradas na Figura

3.4.

3.4 EXEMPLOS DE APLICAÇÃO

Nesta seção são apresentados dois exemplos acadêmicos que ilustram como é feita a

verificação em diagramas de contato. Tratam-se de um sistema de alarme fornecido por

MOON (1994) e um sistema de manufatura fornecido por RAUSCH & KROGH (1998).

42

Page 43: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

3.4.1 SISTEMA DE ALARME

Considere um típico sistema de alarme mostrado na Figura 3.5 (MOON, 1994). O

sistema possui duas entradas binárias: um sinal vindo de um contato no campo (d1), a

significar a ocorrência de uma condição, e o sinal de reconhecimento da condição, por

parte do operador (APB) vindo de uma botoeira num painel. Duas saídas binárias: uma

sirene (horn) e uma lâmpada de advertência (lig). Cada variável binária assume o valor 1

(VERDADEIRO) ou 0 (FALSO). O estado d1 = 1 indica que alguma condição no campo

excede um limite permitido, por exemplo, um reator está em uma alta temperatura ou é

detectada a pressão baixa num processo.

Sistema de Alarme Lâmpada (lig)Reconhecimento (APB)

Condição no campo (d1) Sirene (horn)

FIG. 3.5: Sistema de alarme.

As especificações informais do projeto para o diagrama de contatos deste sistema de

alarme são as seguintes:

• Se a condição no campo ocorre (d1 = 1 ), o sistema de alarme faz soar a sirene

(horn = 1 ).

• Nessa condição, quando o operador pressiona a botoeira de reconhecimento (APB

= 1 ), o sistema deve desligar a sirene e acender a lâmpada de advertência (lig =

1 ).

• A lâmpada permanece acesa enquanto persistir a condição no campo (d1 = 1 ).

• Assim que a condição no campo cessar (d1 = 0 ), a lâmpada deve ser apagada (lig

= 0 ) e o sistema retorna à condição inicial de normalidade.

Suponha que um engenheiro projete o diagrama de contatos para o sistema de alarme

mostrado na Figura 3.6 baseado nas especificações acima (MOON, 1994).

Utiliza-se o método de verificação para certificar-se de que o programa atende a todas

as especificações dadas. Como a primeira etapa da verificação, é necessário modelar o

programa de controle.

A Figura 3.7 mostra o programa de controle na linguagem de descrição de modelos

da ferramenta SMV (MOON, 1994). As linhas 12 a 14 da Figura 3.7 iniciadas por next

43

Page 44: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

d1horn

R1 d1horn

horn

APB

d1 APB

lig d1

lig

d1 R1

R1

APB

horn APB

R1

FIG. 3.6: Programa de Controle para o Sistema de Alarme.

correspondem a cada ramo mostrado na Figura 3.6. Toda vez que ocorre a varredura no

CLP, as variáveis dependentes, R1, horn e lig, mudam de acordo com as regras de cada

ramo. As linhas 9 e 11 correspondem à inicialização das variáveis internas ao CLP.

1 MODULE main

2 VAR

3 d1: boolean;

4 APB : boolean;

5 R1 : boolean;

6 horn : boolean;

7 lig : boolean;

8 ASSIGN

9 init(R1) := 0;

10 init(horn) := 0;

11 init(lig) := 0;

12 next(R1) := ((!d1 & (APB |!horn)) | R1) & ((!horn & !APB) | !d1);

13 next(horn) := ((next(R1) & d1) | horn) & !APB;

14 next(lig) := ((d1 & APB) | lig) & (next(R1) | d1);

15

16 SPEC AG(APB -> AF !horn)

17 SPEC AG(!d1 & !APB -> AX(d1 & !APB -> AF horn))

18 SPEC AG(horn -> !E[!APB U (!horn & !APB)])

19 SPEC AG(!d1 -> AF !lig)

20 SPEC AG(d1 & !APB -> AX(d1 & APB -> AF lig))

21 SPEC AG(lig -> !E[d1 U (!lig & d1)])

22 SPEC AG!(horn & lig)

FIG. 3.7: Representação do programa de controle do alarme em linguagem deverificação de modelos.

44

Page 45: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

As linhas 16 a 22 da Figura 3.7 mostram as especificações escritas em CTL referentes

à descrição do sistema. As três primeiras (linhas 16 a 18) expressam o comportamento

da sirene, as três seguintes (linha 19 a 21) comportamento da lâmpada e a última (linha

22) comportamento conjunto da sirene e da lâmpada.

O resultado da verificação é mostrado de forma parcial, na Figura 3.8.

1 -- specification AG (APB -> AF (!horn)) is true

2 -- specification AG (!d1 & !APB -> AX (d1 & !APB -> AF ho... is true

3 -- specification AG (horn -> !E((!APB) U (!horn & !APB))) is true

4 -- specification AG (!d1 -> AF (!lig)) is false

5 -- specification AG (d1 & !APB -> AX (d1 & APB -> AF lig)... is true

6 -- specification AG (lig -> !E(d1 U (!lig & d1))) is true

7 -- specification AG (!(horn & lig)) is false

FIG. 3.8: Verificação de Modelos para o programa de controle do alarme(contra-exemplo).

A primeira especificação

AG(APB− > AF!horn)

faz o verificador de modelos procurar todas as possibilidades de estados no sistema e

responder à pergunta: se a botoeira for acionada, faz a sirene parar? A resposta do

verificador de modelos a esta pergunta é VERDADEIRA como mostrado na linha 1 da

Figura 3.8.

A segunda especificação

AG(!d1&!APB− > AX(d1&!APB− > AFhorn))

corresponde a se a botoeira não estiver pressionada e, no próximo instante, o sinal de

perigo em d1 muda de 0 para 1, então a sirene soa. O verificador de modelos responde

que este teste é VERDADEIRO como mostrado na linha 2 da Figura 3.8.

A terceira especificação

AG(horn− >!E[!APBU(!horn&!APB)])

testa o período de tempo em que a sirene soa. A segunda parte da expressão CTL é

!E[!APBU(!horn&!APB)],

equivalente a A[hornUAPB], que significa que a sirene permanece VERDADEIRA a

menos que APB seja VERDADEIRA. A especificação mostra um caso, em que uma vez

45

Page 46: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

a sirene acionada, permanece ligada a menos que a botoeira seja pressionada. A botoeira

não pode ser pressionada para sempre. A resposta é VERDADEIRA como mostrado

na linha 3 da Figura 3.8. Os resultados dos três testes acima indicam que a sirene se

comporta como especificado no enunciado do problema.

As três especificações seguintes tratam do comportamento da lâmpada de advertên-

cia. A expressão CTL

AG(!d1− > AF!lig)

significa que a lâmpada não acende sem que a condição no campo ocorra. Como visto na

Figura 3.8 (linha 4) a resposta é FALSA. Isto significa que há um estado em que a lâmpada

permanece ligada (lig=1 ) quando não há nenhuma condição no campo (d1=0 ). Deve-se

seguir o contra-exemplo fornecido pelo SMV e mostrado na Figura 3.9 para encontrar

a fonte do erro, o que é ilustrado na Figura 3.10. A condição inicial mostra que todas

as variáveis são zero (VERDADE). A condição no campo (d1 ), a botoeira (APB) e R1

são mostradas VERDADEIRAS no estado 1.2. A lâmpada torna-se VERDADEIRA no

estado 1.3 e permanece ligada mesmo que a condição no campo desapareça. Um exemplo

é o loop dos estados 1.3 ao 1.5. Este contra-exemplo pode sugerir uma modificação no

projeto, particularmente na parte da lógica relacionada à lâmpada. As duas especificações

seguintes para a lâmpada (linhas 5 e 6 da Figura 3.8) são análogas às especificações

correspondentes da sirene.

46

Page 47: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG (!d1 -> AF (!lig)) is false

2 -- as demonstrated by the following execution sequence

3 state 1.1:

4 d1 = 0

5 APB = 0

6 R1 = 0

7 horn = 0

8 lig = 0

9

10 state 1.2:

11 d1 = 1

12 APB = 1

13 R1 = 1

14

15 -- loop starts here --

16 state 1.3:

17 d1 = 0

18 APB = 0

19 R1 = 0

20 lig = 1

21

22 state 1.4:

23 d1 = 1

24 APB = 1

25 R1 = 1

26

27 state 1.5:

28 d1 = 0

29 APB = 0

30 R1 = 0

FIG. 3.9: Contra-exemplo da especificação da linha 4 na Figura 3.8.

47

Page 48: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

d1

APB

R1

horn

lig

1.1 1.2 1.3 1.4 1.5Estados

Local onde ocorre o problema

FIG. 3.10: Analise gráfica do contra-exemplo da especificação da linha 4 na Figura 3.8.

A especificação

AG!(horn&lig)

testa se há alguma situação que a sirene e a lâmpada estão ligadas simultaneamente. A

resposta é FALSA visto que no estado 1.5 da Figura 3.11 a sirene (horn) e a lâmpada

(lig) estão em simultaneidade, conforme ilustra a analise gráfica na Figura 3.12.

48

Page 49: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG (!(horn & lig)) is false

2 -- as demonstrated by the following execution sequence

3 state 1.1:

4 d1 = 0

5 APB = 0

6 R1 = 0

7 horn = 0

8 lig = 0

9

10 state 1.2:

11 d1 = 1

12 APB = 1

13 R1 = 1

14

15 state 1.3:

16 d1 = 0

17 APB = 0

18 R1 = 0

19 lig = 1

20

21 state 1.4:

22 d1 = 1

23 R1 = 1

24

25 state 1.5:

26 d1 = 0

27 horn = 1

FIG. 3.11: Contra-exemplo da especificação da linha 7 na Figura 3.8.

d1

APB

R1

horn

lig

1.1 1.2 1.3 1.4 1.5Estados

Local onde ocorre o problema

FIG. 3.12: Analise gráfica do contra-exemplo da especificação da linha 7 na Figura 3.8.

Para que a lâmpada funcione corretamente nesta situação, o diagrama de contatos

49

Page 50: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

deve ser reprojetado. A Figura 3.10 ilustra uma possível solução por remoção de um

contato associado a R1 no terceiro ramo do diagrama de contatos. As mesmas especifi-

cações são usadas para verificar o diagrama de contatos reprojetado, e o resultado correto

para todos os testes relativos às especificações mostradas na Figura 3.8, após reprojeto

(Figura 3.13), asseguram ao usuário que o sistema de alarme segue as especificações

dadas. Observa-se que este método não garante qualquer coisa sobre comportamentos

não modelados do sistema.

d1horn

R1 d1horn

horn

APB

d1 APB

lig

lig

d1 R1

d1

APB

horn APB

R1

FIG. 3.13: Reprojeto.

3.4.2 SISTEMA DE MANUFATURA

Trata-se de um exemplo fornecido por RAUSCH & KROGH (1998), que consiste de

dois relés e de um pistão para mover uma peça (Figura 3.14). É parte de um sistema de

manufatura onde uma esteira transportadora move uma peça para a posição 1. O pistão

move a peça da posição 1 para a posição 2. Um outro pistão (não mostrado) move a peça

da posição 2 para outra esteira transportadora.

A Figura 3.14 mostra os sinais de saída binários do controlador c1 e c2, os quais são

sinais de entrada à planta, e os sinais de entrada binários do controlador R1on, R2on (=

1 se o relé for acionado), Pbase e Pestendido (= 1 se o pistão estiver nesta posição). O

pistão é movido por um motor controlado por dois relés. O relé R1 causa o movimento

para a diante, e o relé R2, o movimento inverso. A especificação para o sistema da Figura

50

Page 51: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

3.14 é que se proíbe que ambos os relés estejam acionados simultaneamente.

M

Posição 2

Posição1

C1 C2

R1 R2

Pestendido

Pbase

R1on

R2on

Pistão

CLP

Peça

FIG. 3.14: Planta.

O controle é realizado usando um CLP, e é usada no exemplo a notação de diagramas

de contato. A Figura 3.15 mostra o programa no CLP (RAUSCH & KROGH, 1998),

onde R1on , R2on são os sinais do sensor dos relés, C1s, C2s são os sinais de comando

do controlador, e C1 e C2 são os sinais de saída de comando aos relés. A lógica de

controle deixa um comando a um relé para o controlador durante a passagem seqüencial

completa, desde que o outro relé não esteja acionado, ou não haja nenhum comando que

esteja se opondo à força para acionar o outro relé.

FIG. 3.15: Programa de Controle para o Sistema de Manufatura.

Em RAUSCH & KROGH (1998), por meio da verificação formal, prova-se que a ex-

51

Page 52: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

ecução da lógica de controle está incorreta pois em algum momento do ciclo de varredura

ambos os relés podem ser acionados ao mesmo tempo.

Neste exemplo utilizam-se módulos para elaborar um modelo SMV para o sistema

(RAUSCH & KROGH, 1998). Um módulo é um gabarito para um sistema de transições

de estados que é usado para modelar múltiplos componentes em um sistema com múltiplas

instâncias. As instâncias dos módulos podem ser usadas nas definições de outros módulos,

dando a possibilidade para definir modelos hierárquicos de sistemas complexos (CLARKE

et al., 1999). Por exemplo, as linhas de 7 a 16 da Figura 3.16 mostram um módulo que

representa um relé genérico para o sistema.

Um módulo é definido pela palavra-chave MODULE e um nome seguido por uma lista de

variáveis de entrada (linha 1 da Figura 3.16). As variáveis locais do módulo são definidas

em uma lista que começa com a palavra chave VAR (linha 2). As transições de estados

são caracterizadas pelas mudanças nos valores das variáveis do módulo e definidas na

indicação de ASSIGN (linhas 10 a 16). As transições podem ser não-deterministas como

ilustrado nas linhas 13 e 14. Variáveis adicionais podem ser definidas depois da palavra

chave DEFINE, não mostrada neste programa.

As instâncias dos módulos podem ser usadas para construir outros módulos. No caso

em análise, um módulo que representa o sistema completo é composto por duas instâncias

dos módulos para os dois relés (que usam a mesma definição do módulo) e um módulo

para o controlador (vide Figura 3.16). Um programa pode ser instanciado mais de uma

vez como nas linhas 3 e 4. O módulo completo é referenciado pelo módulo principal main.

Este é o módulo superior na composição hierárquica como mostra as linhas de 1 a 6 da

Figura 3.16.

O diferencial deste exemplo é a necessidade de se modelar o ambiente externo ao

CLP, pois a especificação de comportamento consiste em evitar que os relés R1 e R2

estejam acionados ao mesmo tempo. O modelo se dá a partir da escrita de diagramas de

estados correspondentes ao comportamento desejado para os relés, como mostrado nas

linhas 7 a 16 da Figura 3.16.

O exemplo ilustra os tipos de circunstâncias sutis que podem conduzir a problemas

com programas de CLP, devido à duração finita do ciclo de varredura. A probabilidade da

seqüência de transições indesejadas ocorrer pode ser pequena, mas é certamente possível

(veja Figura 3.17).

Para melhor visualização do traço do contra-exemplo é apresentada uma análise

gráfica na Figura 3.18. Na computação da saída C2, há um teste para certificar se a

52

Page 53: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 MODULE main

2 VAR

3 r1 : relay(c.C1);

4 r2 : relay(c.C2);

5 c : controller(r1.state,r2.state);

6 SPEC AG (!r1.state | !r2.state)

7 MODULE relay(input)

8 VAR

9 state : boolean;

10 ASSIGN

11 init(state) := 0;

12 next(state) := case

13 !state & input : {1,0};

14 state & !input : {0,1};

15 1: state;

16 esac;

17 MODULE controller(R1on,R2on)

18 VAR

19 C1s : boolean;

20 C2s : boolean;

21 C1 : boolean;

22 C2 : boolean;

23 ASSIGN

24 init(C1s) := 0;

25 init(C2s) := 0;

26 init(C1) := 0;

27 init(C2) := 0;

28 next(C1) := (C1s & (R1on | (!R2on & !C2)));

29 next(C2) := (C2s & (R2on | (!R1on & !next(C1))));

FIG. 3.16: Representação do programa de controle da manufatura em linguagem deverificação de modelos.

53

Page 54: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG (!r1.state | !r2.state) is false

2 -- as demonstrated by the following execution sequence

3 state 1.1:

4 r1.state = 0

5 r2.state = 0

6 c.C1s = 0

7 c.C2s = 0

8 c.C1 = 0

9 c.C2 = 0

10

11 state 1.2:

12 c.C1s = 1

13

14 state 1.3:

15 c.C1s = 0

16 c.C2s = 1

17 c.C1 = 1

18

19 state 1.4:

20 r1.state = 1

21 c.C2s = 0

22 c.C1 = 0

23 c.C2 = 1

24

25 state 1.5:

26 r2.state = 1

27 c.C2 = 0

28

29 resources used:

30 processor time: 0 s,

31 BDD nodes allocated: 771

32 Bytes allocated: 1045224

33 BDD nodes representing transition relation: 78 + 1

FIG. 3.17: Verificação de Modelos para o programa de controle da manufatura(contra-exemplo).

54

Page 55: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

saída C1 está desligada. O contato C1 é acionado, entretanto, no ramo precedente,

assim C2 poderia estar desligada mesmo que o valor da saída do controlador (como é

visto pela planta) possa ainda estar ligado. Conseqüentemente, o primeiro relé poderia

fazer uma transição para acionado e, ao final de um ciclo de varredura, o sinal C2 poderia

ser também acionado, colocando a planta em perigo durante a varredura seguinte, uma

vez que o relé R2 pode ser acionado em conjunto com R1.

C1

C2

C1s

C2s

r1.state

r2.state

1.1 1.2 1.3 1.4 1.5Estados

Local onde ocorre o problema

FIG. 3.18: Analise gráfica do contra-exemplo da especificação na linha 7 da Figura 3.16.

A solução para um controlador que evite este erro neste caso, é considerar os valores

velho e novo de C1 quando for computado o valor novo C2, conforme mostra a Figura

3.19 (RAUSCH & KROGH, 1998).

Após correção com base no contra-exemplo na Figura 3.17 e auxilio da análise gráfica

na Figura 3.18, a especificação passou a ser verdadeira conforme mostra a Figura 3.20.

55

Page 56: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 3.19: Projeto com base na análise do contra-exemplo.

1 -- specification AG (!r1.state | !r2.state) is true

2

3 resources used:

4 processor time: 0 s,

5 BDD nodes allocated: 323

6 Bytes allocated: 1045220

7 BDD nodes representing transition relation: 107 + 1

FIG. 3.20: Resposta da Verificação após correção do programa.

3.5 RESUMO DO CAPÍTULO

Neste capítulo é possível ter uma visão geral de como funciona a verificação de

modelos aplicada aos programas de CLP. Os programas são escritos na linguagem de

Diagramas de Contato. Porém um dos objetivos da dissertação é aplicar a verificação,

em programas de CLP escritos na linguagem de Diagrama de Blocos Funcionais (DBF).

O próximo capítulo trata da verificação aplicada a um sistema automatizado escrito

na linguagem DBF. São tratadas, ainda, estruturas mais complexas como memórias e

temporizadores.

56

Page 57: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

4 CONTRIBUIÇÕES À APLICAÇÃO DA VERIFICAÇÃO DE MODELOS

AO PROJETO DE SISTEMAS AUTOMATIZADOS

O objetivo deste capítulo é aplicar as técnicas de verificação de modelos (model

checking) ao projeto de Sistemas Automatizados baseados em CLPs programados por

Diagramas de Blocos Funcionais (DBF). Foram desenvolvidos padrões para a verificação,

com base em estruturas lógicas típicas, visando uma futura automatização do processo.

4.1 PROJETO DE SISTEMAS AUTOMATIZADOS

A Figura 4.1 ilustra um modelo muito adotado por empresas de engenharia de au-

tomação para o projeto de sistemas automatizados. As etapas de um projeto são divididas

em quatro, a saber: elaboração de requisitos, projeto, implementação e teste e validação.

Na etapa de elaboração de requisitos as especificações do sistema são listadas. Alguns

documentos típicos produzidos nesta etapa são:

• Descritivos literais da automação;

• Padrões de lógica para sequenciamento e intertravamento;

• Matrizes de Causa e Efeito;

• Fluxogramas de Funcionamento, e

• Diagramas de Processo e Instrumentação.

Os padrões de lógica para sequenciamento seguem a norma ISA 5.2 (Diagramas

Lógicos Binários para Operações de Processos) (ISA, 1992).

Na etapa de projeto, com base nos documentos gerados pela etapa de elaboração

de requisitos, a própria empresa ou uma empresa terceirizada desenvolve o projeto do

sistema automatizado. Documentos típicos gerados nesta fase são:

• Mapa de Memória do CLP;

• Lista de Entradas e Saídas, e

• Listagem do Programa do CLP.

57

Page 58: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

A listagem do programa segue o proposto pela norma IEC 61131-3. A maioria dos

programas gerados atualmente seguem os diagramas de contato. Para sistemas onde a

segurança é crítica, nota-se o emprego dos DBFs, que possuem um mapeamento direto

aos blocos da norma ISA 5.2.

Na fase de implementação, o diagrama desenvolvido é implementado no CLP corre-

spondente e montagens elétricas são realizadas. Novamente o processo pode ser terce-

irizado ou montado pela equipe de campo da contratante, com suporte da equipe que

elaborou o projeto.

Teste eValidação

Elaboração de Requisitos

Projeto

Implementação

FIG. 4.1: Método de projeto adotado por Empresas de Automação.

Na fase de testes e validação, são executados testes para comissionamento do sis-

tema. Tipicamente, testes de bancada ou os ditos loop-tests (testes feitos com o CLP

ligado à malha de controle) são realizados. Observa-se que estes testes não exaurem as

possibilidades de falha do sistema. Para alguns casos, o limite humano não possibilita a

visualização de certas falhas. Como a confiabilidade do sistema é garantida apenas pelos

testes, problemas não detectados podem causar prejuízos materiais, pessoais e ambien-

tais. Por outro lado, os erros detectados na fase de testes e validação acarretam o retorno

às fases anteriores, como ilustrado pelo tracejado na Figura 4.1. O retorno às etapas

anteriores corresponde a atrasos indesejáveis no cronograma do projeto.

58

Page 59: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

4.2 EXEMPLO DE UM PROJETO DE SISTEMA AUTOMATIZADO

Para ilustrar o processo, toma-se como exemplo um projeto de uma chave de partida

estrela-triângulo (Y-△) para um motor trifásico. A finalidade de um sistema Y-△ em

um motor é de se reduzir a corrente de partida, ou seja, a corrente de pico no momento

da partida. É necessário que o motor seja do tipo de rotor em gaiola de esquilo, e todas

as pontas de ligação devem ser externas.

A tensão triângulo é a mesma da rede (será nesta tensão que o motor irá trabalhar).

A tensão em estrela (tensão de partida do motor) externamente ao motor também é a

mesma da triângulo, sendo menor nas bobinas do motor pelo tipo de ligação nos terminais.

4.2.1 DESCRIÇÃO LITERAL DAS ESPECIFICAÇÕES

A Figura 4.2 mostra o esquema elétrico do sistema estrela-triângulo. O funciona-

mento do sistema é o seguinte:

• Pressionando a botoeira L, as bobinas dos contactores K1, K3 (ligação em estrela)

são alimentadas, começando a contar o tempo programado;

• Após o tempo programado (10s), a alimentação da bobina de K3 é cortada, e a

bobina de K2 (ligação em triângulo) é acionada. As bobinas K1 e K2 são mantidas

energizadas;

• As contactoras K2 e K3 não podem estar acionadas ao mesmo tempo;

• Pressionando a botoeira D, desliga-se todo o sistema;

• Implementar a segurança de sobrecorrente com entrada de um contato do relé

térmico FT no CLP.

As entradas e saídas do sistema estão na Tabela 4.1.

4.2.2 MATRIZ DE CAUSA E EFEITO

A Matriz de Causa e Efeito (MCE) trata-se de uma tabela onde se estabelecem as

relações de seqüencialização de acionamento do sistema. Na primeira linha da tabela

listam-se os sinais que são as causas para os acionamentos, e na primeira coluna listam-se

os conseqüentes efeitos nos sinais do sistema. A Figura 4.3 ilustra a MCE para o processo

em questão.

59

Page 60: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 4.2: Sistema estrela-triângulo.

TAB. 4.1: Entradas e saídas do sistema

ENTRADASL Botoeira de liga (botão pulsante)D Botoeira de desliga (botão pulsante)FT Contato térmico

SAÍDASK1 Contactora de acionamentoK2 Contactora de acionamentoK3 Contactora de acionamento

L ac

iona

do

K1

acio

nado

K3

acio

nado

T >

10s

K3

desl

igad

o

D a

cion

ado

FT a

cion

ado

XX X XX X X

X X

Desliga K3

Liga K2

Desliga K1, K2 e K3

EFEITO

CA

US

A

Aciona K1 e K3

FIG. 4.3: Matriz de Causa e Efeito do sistema Y −△.

60

Page 61: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

4.2.3 FLUXOGRAMA DE FUNCIONAMENTO E PROGRAMA DE APLICAÇÃO

A lógica de acionamento do programa de aplicação desenvolvido para este sistema é

demonstrada na forma de um Fluxograma na Figura 4.4.

L?

Aciona K1 e K3

T> 10s ?

Início

D?

!K3?

FT?

D?

Desliga K3

Aciona K2

FT?

S

S

N

N

S

D? FT?

S

Desliga K1, K2 e K3

N

N N

N

N

S S

S S

N

N

S

FIG. 4.4: Fluxograma para o sistema estrela-triângulo.

Neste trabalho está sendo mostrado o fluxograma pois é uma das maneiras utilizadas

pelas empresas para expressar a lógica de acionamento. Porém o uso do mesmo é arriscado

para Sistemas Industriais Automatizados, podendo induzir o projetista a inserir erros na

execução do projeto em DBF no CLP.

4.2.4 PROGRAMA EM DBF

A Figura 4.5 representa o programa escrito em diagramas de blocos funcionais DBF,

projetado por uma empresa de automação.

Supõe-se que os blocos utilizados são E (AND), OU (OR), memórias e tempo-

rizadores com atraso sincronizado (DI). A descrição detalhada do funcionamento dos

blocos encontra-se na Seção 4.5

61

Page 62: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 4.5: Programa em Diagramas de Blocos Funcionais.

4.3 PROPOSTA DE VERIFICAÇÃO DE MODELOS

Este trabalho tem como proposta inserir um método de verificação nas fases de

elaboração de requisitos e projeto do processo ilustrado na Figura 4.1, conforme mostrado

na Figura 4.6.

Na elaboração de requisitos, propõe-se um procedimento no qual faz-se a tradução de

especificações, para especificações em CTL. Já na fase de projeto, os programas escritos

em DBF no CLP são traduzidos no código reconhecido pela ferramenta de verificação. O

processo se fecha com uma etapa de verificação. O resultado da verificação, quando da

obtenção de um erro, é utilizado para refinamento dos requisitos e/ou reprojeto. Com

este processo objetiva-se aumentar a confiabilidade do sistema e minimizar o atraso no

projeto por erros detectados na fase de testes e validação.

Nas próximas seções, as etapas do processo de verificação são detalhadas.

62

Page 63: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

Verificação

Módulo do prog.do CLP em SMV

Re-projeto

Refinamento dos requisitos

Elaboração de Requisitos

Projeto

Implementação

Teste eValidação

Especificação em CTL

FIG. 4.6: Procedimento atual e proposta de modificação.

4.4 ESCRITA DA ESPECIFICAÇÃO

O estudo feito para este trabalho mostra que existem duas maneiras de escrever as

especificações CTL para sistemas automatizados. Pode ser feita a partir da matriz de

causa e efeito, como apresentado na Seção 4.4.1 e também a partir do conhecimento do

sistema, como apresentado na Seção 4.4.2.

4.4.1 ESCRITA DE ESPECIFICAÇÕES A PARTIR DA MATRIZ DE CAUSA E

EFEITO

Este desenvolvimento consiste na obtenção de especificações CTL com base na MCE.

A Figura 4.7 ilustra a base do procedimento proposto para sistematização da escrita das

especificações CTL. Nesta figura:

• V AR representa uma variável de saída do sistema;

• CON representa as condições que levam a variável V AR assumir a condição 1 (equi-

valente a ON ou VERDADEIRO), denominada condição para verdadeiro;

• COFF representa as condições que levam a variável V AR assumir a condição 0

(equivalente a OFF ou FALSO), denominada condição para falso.

63

Page 64: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

COFF

CONVARLógica

FIG. 4.7: Escrita de especificações CTL.

Exploram-se as informações a respeito do acionamento de variáveis na MCE para es-

crita de propriedades CTL. As especificações podem ser escritas de duas formas diferentes

em função do acionamento e do desligamento da variável V AR.

Para o acionamento da variável V AR escrevem-se duas especificações:

• A primeira especificação é:

AG(CON&!COFF− > AF(V AR)), (4.1)

a significar que sempre que a condição para verdadeiro for válida e a condição para

falso for não válida (CON&!COFF ) então, para todos os caminhos no futuro, V AR será

verdadeira.

• A outra especificação é:

AG(!V AR− >!E[!CONU(V AR&!CON)]), (4.2)

a significar que sempre que V AR passar de falso para verdadeiro, CON deve também ser

válida. Isso significa que V AR não passa para verdadeiro por qualquer outra condição

que não seja CON .

Para o desligamento da variável V AR escrevem-se também duas especificações:

• A primeira especificação é:

AG(COFF &!CON− > AF(!V AR)), (4.3)

a significar que sempre que a condição para falso for válida e a condição para verdadeiro

for não válida (COFF &!CON) então, para todos os caminhos no futuro, V AR será não

verdadeira.

• A outra especificação é:

64

Page 65: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

AG(V AR− >!E[!COFFU(!V AR&!COFF )]), (4.4)

a significar que sempre que V AR passar de verdadeiro para falso, COFF deve também

ser válida. Isso significa que V AR não passa para falso por qualquer outra condição, a

não ser por COFF .

Baseado na Tabela 4.1 de entradas e saídas e na Matriz de Causa e Efeito do sistema

Y −△, são mostradas as condições para verdadeiro e falso para as variáveis K1, K2 e K3

na Tabela 4.2.

TAB. 4.2: Condições para representação das Saídas

SAÍDAS CON COFF

Contactora K1 L (D|FT)Contactora K2 (T1 & !K3) (D|FT)Contactora K3 (L & !K2) (D|FT|T1)

Para a contactora K1, a condição que a torna verdadeira é L e a que a torna falsa

é D ou FT. Já para a contactora K2, a condição que a torna verdadeira é T1, variável

binária a significar que o tempo em triângulo terminou, e !K3, e a que a torna falsa é D

ou FT. Da mesma forma, para a contactora K3, a condição que a torna verdadeira é L e

!K2, e a que a torna falsa é D ou FT ou T1.

De acordo com as especificações sistematizadas para o acionamento (especificações

4.1 e 4.2) e desligamento (especificações 4.3 e 4.4) de variáveis de saída, mostram-se as

especificações para o sistema Y −△ levando em conta as condições para verdadeiro e falso

descritas para cada uma das contactoras. Substituindo as condições de cada contactora

tem-se:

• As especificações para o acionamento de K1:

AG(L&!(D|FT )− > AF(K1)) (4.5)

AG(!K1− >!E[!LU(K1&!L)]) (4.6)

• Especificações para o desligamento de K1:

65

Page 66: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

AG((D|FT )&!L− > AF(!K1)) (4.7)

AG(K1− >!E[!(D|FT )U(!K1&!(D|FT ))]) (4.8)

• Especificações para o acionamento de K2:

AG((T1&!K3)&!(D|FT )− > AF(K2)) (4.9)

AG(!K2− >!E[!(T1&!K3)U(K2&!(T1&!K3))]) (4.10)

• Especificações para o desligamento de K2:

AG((D|FT )&!(T1&!K3)− > AF(!K2)) (4.11)

AG(K2− >!E[!(D|FT )U(!K2&!(D|FT ))]) (4.12)

• Especificações para o acionamento de K3:

AG((L&!K2)&!(D|FT |T1))− > AF(K3)) (4.13)

AG(!K3− >!E[!(L&!K2)U(K3&!(L&!K2))]) (4.14)

• Especificações para o desligamento de K3 (4.15) e (4.16).

AG((D|FT |T1)&!(L&!K2)− > AF(!K3)) (4.15)

AG(K3− >!E[!(D|FT |T1)U(!K3&!(D|FT |T1))]) (4.16)

66

Page 67: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

4.4.2 ESCRITA DAS ESPECIFICAÇÕES A PARTIR DO CONHECIMENTO DO SIS-

TEMA

Esta seção apresenta uma outra forma de especificação baseada no conhecimento do

sistema, subentendida por especificação estrutural.

Um primeiro tipo pode expressar segurança para o sistema, pela expressão AG p,

onde apresenta uma situação no qual a propriedade p sempre é válida para o sistema.

Para o sistema Y −△ pode-se representar essa especificação na forma:

AG!(K2&K3)

a representar que as saídas K2 e K3 não podem estar acionadas simultaneamente. Esse

tipo de especificação é expressa informalmente como nada bom/ruim vai acontecer.

Dois outros tipos de especificações estruturais podem ser escritas para uma dada

propriedade p: vivacidade, AF p, a significar que sempre a propriedade p será verdade no

futuro, informalmente expresso como algo bom/ruim vai acontecer, e alcançabilidade, EF

p , a significar que eventualmente a propriedade p será verdade no futuro, informalmente

expresso como algo bom/ruim pode acontecer (CLARKE et al., 1999).

4.5 A TRADUÇÃO DA LINGUAGEM DBF EM CÓDIGO SMV

Esta seção apresenta um método de tradução de um programa escrito em DBF para

o código do SMV. Com objetivo de uma automatização do método de tradução foram

desenvolvidos gabaritos de código SMV para as estruturas típicas da norma ANSI/ISA

5.2 (ISA, 1992).

4.5.1 ELEMENTOS DE LÓGICA BOOLEANA

A Figura 4.8 mostra os blocos de lógica básica que são utilizados na elaboração do

DBF. Essa figura é apresentada em três colunas as quais representam:

• A Figura 4.8(a): o bloco lógico E (AND). A variável de saída D é verdade se

somente se todas as variáveis de entra A, B e C forem verdade. Na linguagem

SMV escreve-se D:= A&B&C;

• A Figura 4.8(b): o bloco lógico OU (OR). A variável de saída D é verdade se so-

mente se uma ou mais variáveis de entrada A, B ou C forem verdade. Na linguagem

do SMV, escreve-se D:= A|B|C;

67

Page 68: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

• A Figura 4.8(c): o bloco lógico NÃO (NOT ). A variável de saída B existe se somente

se a variável de entrada A for falsa. Na linguagem do SMV, escreve-se B:= !A;

FIG. 4.8: Blocos lógicos AND, OR e NOT.

4.5.2 ELEMENTOS DE MEMÓRIA

A Figura 4.9 mostra os blocos de memória no qual S representa SET e R representa

RESET. Na Figura 4.9 (a), a saída lógica C é verdade assim que a entrada lógica A seja

verdade. C continua a ser verdadeiro, indiferentemente do estado subseqüente de A, até

que a entrada lógica B seja verdade. C permanece no estado falso indiferentemente do

estado subseqüente de B, até que A volte a ser verdadeira. A saída lógica D (se usada),

é verdadeira quando C não for verdadeira, e D é falso quando C for verdadeiro. Se as

entradas S e R estiverem em simultaneidade, e se deseja que S tenha prioridade sobre

R, então S tem que ser circulado conforme apresentado em (a), e se R tem prioridade

sobre S, então R deve ser circulado conforme (b) da Figura 4.9.

FIG. 4.9: Blocos SET/RESET.

A Figura 4.10(a) ilustra o código correspondente aos blocos de memória com prior-

idade para SET e a Figura 4.10(b) ilustra o bloco com prioridade para RESET. Esse

código foi elaborado de acordo com a lógica booleana das memórias correspondentes.

68

Page 69: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 4.10: Códigos SET/RESET.

4.5.3 BLOCOS TEMPORIZADORES

A Figura 4.11 ilustra os blocos dos temporizadores que podem ser utilizados na

elaboração do DBF segundo norma ISA 5.2 (ISA, 1992). Essa figura é apresentada em

três colunas as quais representam:

• Figura 4.11(a): Bloco do Temporizador por atraso no acionamento (Delay Initiation

of Output - DI ). A permanência contínua da entrada lógica A em verdadeiro por

um tempo t causa uma saída lógica B verdadeira quando t termina. B volta a falso

quando A volta a falso.

• Figura 4.11(b): Bloco do Temporizador por atraso no desligamento (Delay Ter-

mination of Output - DT ). A passagem da entrada lógica A para verdadeiro, faz

a saída lógica B torna-se verdadeira imediatamente. B torna-se falsa quando A

torna-se falsa e permanecer neste estado por um tempo t.

• Figura 4.11(c): Bloco do Temporizador de tempo fixo (Pulse Output - PO). A

passagem da entrada lógica A para verdadeiro, indiferentemente do estado sub-

seqüente, faz saída lógica B tornar-se verdadeira imediatamente. B permanece

verdadeira por um tempo t, e então torna-se falsa.

Num modelo de um temporizador que leve em conta o passo-a-passo da contagem,

a variável de contagem do temporizador assume valores discretos que vão de zero ao

tempo final de contagem, numa quantidade dependente do passo de contagem. Numa

representação em estado discreto para um temporizador, o número de estados seria muito

grande, pois estes deveriam corresponder aos valores assumidos pela variável de contagem.

69

Page 70: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 4.11: Blocos dos temporizadores DI, DT, PO.

Para evitar esta complexidade na modelagem do temporizador. Trabalha-se com uma

abstração, como ilustram as Figuras 4.12, 4.13 e 4.14. Essas figuras mostram máquinas

de estado correspondentes aos temporizadores. A máquina de estado possui três estados

os quais variam de acordo com o tipo de temporizador utilizado. Os temporizadores

DI representado na Figura 4.12 (a) e PO na Figura 4.14 (a) são formados pelos estados

parado, contando e terminado. O temporizador DT na Figura 4.13 (a) é formado pelos

estados parado, contando e alto. Todos os estados e saídas dos temporizadores estão

ilustrados nas respectivas figuras sob a letra (b). Esses gráficos foram utilizados para

modelar os temporizadores e foram inspirados em IEC (2003).

FIG. 4.12: Máquinas de estado correspondente ao código do temporizador DI.

A Figura 4.15 ilustra os códigos correspondentes a cada um dos blocos dos tempo-

rizadores DI, DT e PO respectivamente, que são traduzidos de forma direta a partir das

respectivas máquinas de estado das Figuras 4.12, 4.13 e 4.14.

70

Page 71: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 4.13: Máquinas de estado correspondente ao código do temporizador DT.

FIG. 4.14: Máquinas de estado correspondente ao código do temporizador PO.

71

Page 72: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 4.15: Códigos dos temporizadores.

4.5.4 CONSTRUÇÃO MODULAR DO CÓDIGO

O código para verificação no SMV é construído modularmente a partir do programa

em DBF por interligação dos carimbos correspondentes aos blocos do diagrama.

A Figura 4.16 ilustra as variáveis definidas para os blocos do programa na Figura 4.5.

São definidas as variáveis Q1, Q2, Q3, e Q5 (memórias) e temp (temporizador DI). Uma

importante consideração é como se processa a varredura do programa. Assume-se que a

varredura é da esquerda para direita e de cima para baixo dos blocos. Assim, deve-se

tomar cuidado na hora de modelar as variáveis que voltam em linhas da direita para a

esquerda para alimentar os outros blocos.

72

Page 73: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 4.16: Programa em Diagramas de Blocos Funcionais com as variáveis auxiliares.

A Figura 4.17 mostra como é o processo de modularização do sistema utilizando os

carimbos para a tradução do diagrama da Figura 4.5 em código SMV . Como se pode ob-

servar, a seqüência dos módulos do programa são declarados a partir do módulo principal

main na linha 1, com as variáveis de entradas booleanas nas linhas 2 a 5 e a instância

do programa na linha 6. Definem-se as saídas como K1, K2, K3 e T1 nas linhas 7 a 11

do programa. Em seguida, nas linhas de 12 a 13, colocam-se as especificações do sistema

na linguagem CTL. Nas linhas 14 a 19 são implantados os códigos dos temporizadores

e memórias que, para o exemplo, utilizam-se apenas o temporizador DI (mostrado) e as

memórias com prioridade para SET e para RESET (não mostrados). A colocação dos

blocos de memória, temporizadores e outros não precisa ser necessariamente nessa ordem.

Para finalizar, faz-se o módulo do programa ser verificado, onde se encontra a lógica

de seqüenciamento nas linhas 20 a 26 de acordo com o programa escrito em DBF na

Figura 4.16. Consideram-se as saídas correspondentes aos blocos de memória do projeto

como saídas Q1, Q2, Q3, uma saída auxiliar Qs e a saída do temporizador temp. Depois

definem-se essas saídas como K1, K2, K3 e T1 nas linhas 27 a 31 do programa principal

para facilitar a interpretação da resposta da verificação.

É importante observar que a saída do bloco do temporizador DI retorna aos blocos

de memória Q2 e Q3 na Figura 4.16. Em conseqüência, é necessário não utilizar o next na

interligação dos blocos do temporizador nas linhas 23 e 24 da Figura 4.17, pois se pode

omitir erros na verificação devido a consideração de que a varredura do CLP se processa

73

Page 74: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

da esquerda para a direita do diagrama.

1 MODULE main

2 VAR

3 L : boolean;

4 D : boolean;

5 FT : boolean;

6 c : programa_empresa(L,D,FT);

7 DEFINE

8 K1:= c.K1;

9 K2:= c.K2;

10 K3:= c.K3;

11 T1:= c.T1;

12 SPEC AG (L & !(D|FT) -> AF K1)

13 ...

14 MODULE DI(entrada)

15 ...

16 MODULE resetset(entrada_set,entrada_reset)

17 ...

18 MODULE setreset(entrada_set,entrada_reset)

19 ...

20 MODULE programa_empresa(L,D,FT)

21 VAR

22 Q1 : setreset(L,(D|FT));

23 Q2 : setreset((temp.saida & !next(Q3.saida)),(D|FT));

24 Q3 : setreset(L,(D|FT) | temp.saida);

25 Qs : setreset(L,(D|FT));

26 temp : DI(next(Qs.saida));

27 DEFINE

28 K1:= Q1.saida;

29 K2:= Q2.saida;

30 K3:= Q3.saida;

31 T1:= temp.saida;

FIG. 4.17: Tradução do DBF em código SMV.

4.6 VERIFICAÇÃO

A verificação é uma etapa que informa se o sistema está de acordo com as especi-

ficações ou não, neste caso, informa-se um contra-exemplo. Um contra-exemplo é uma

seqüência de ações tomadas pelo programa de controle que viola as especificações. Para

as especificações das linhas 7, 10 e 13 na Figura 4.18, ocorre uma violação do programa

projetado (programa_empresa na linha 20 da Figura 4.17) com as especificações dese-

jadas. A Figura 4.18 mostra o resultado da verificação. As linhas 1 a 6, 8, 9, 11 e 12

mostram que o programa não viola as respectivas especificações, descrevendo que são

verdadeiras. Em conseqüência da violação, o SMV proporciona um contra-exemplo das

especificações que foram falsas, como mostrado nas Figuras 4.19, 4.20 e 4.21.

74

Page 75: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG (L & !(D | FT) -> AF K1) is true

2 -- specification AG (!K1 -> !E((!L) U (K1 & !L))) is true

3 -- specification AG ((D | FT) & !L -> AF (!K1)) is true

4 -- specification AG (K1 -> !E((!(D | FT)) U (!K1 & !(D | ... is true

5 -- specification AG (T1 & !K3 & !(D | FT) -> AF K2) is true

6 -- specification AG (!K2 -> !E((T1 & !K3) U (K2 & T1 & !K... is true

7 -- specification AG ((D | FT) & !(T1 & !K3) -> AF (!K2)) is false

8 -- specification AG (K2 -> !E((!(D | FT)) U (!K2 & !(D | ... is true

9 -- specification AG (L & !K2 & !(D | FT | T1) -> AF K3) is true

10 -- specification AG (!K3 -> !E((!(L & !K2)) U (K3 & !(L &... is false

11 -- specification AG ((D | FT | T1) & !L -> AF (!K3)) is true

12 -- specification AG (K3 -> !E((!(D | FT | T1)) U (!K3 & !... is true

13 -- specification AG (!(K2 & K3)) is false

FIG. 4.18: Resposta da verificação.

75

Page 76: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG ((D | FT) & !(T1 & !K3) -> AF (!K2)) is false

2 -- as demonstrated by the following execution sequence

3 state 1.1:

4 T1 = 0

5 K3 = 0

6 K2 = 0

7 K1 = 0

8 L = 0

9 D = 0

10 FT = 0

11

12 state 1.2:

13 L = 1

14

15 state 1.3:

16 K3 = 1

17 K1 = 1

18 L = 0

19 c.temp.estado = contando

20

21 state 1.4:

22 T1 = 1

23

24 state 1.5:

25 K3 = 0

26 K2 = 1

27 L = 1

28 -- loop starts here --

29 state 1.6:

30 K3 = 1

31 L = 0

32 FT = 1

33 state 1.7:

34 T1 = 0

35 K3 = 0

36 K1 = 0

37 L = 1

38 FT = 0

39

40 state 1.8:

41 K3 = 1

42 K1 = 1

43 L = 0

44 c.temp.estado = contando

45

46 state 1.9:

47 T1 = 1

48 FT = 1

FIG. 4.19: Contra-exemplo da especificação na linha 7 da Figura 4.18.76

Page 77: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG (!K3 -> !E((!(L & !K2)) U (K3 & !(L &... is false

2 -- as demonstrated by the following execution sequence

3 state 2.1:

4 T1 = 0

5 K3 = 0

6 K2 = 0

7 K1 = 0

8 L = 0

9 D = 0

10 FT = 0

11

12 state 2.2:

13 L = 1

14

15 -- loop starts here --

16 state 2.3:

17 K3 = 1

18 K1 = 1

19 L = 0

20

21 state 2.4:

22 T1 = 1

23 FT = 1

24

25 state 2.5:

26 T1 = 0

27 K3 = 0

28 K2 = 1

29 K1 = 0

30 FT = 0

31

32 state 2.6:

33 L = 1

34 FT = 1

35

36 state 2.7:

37 K3 = 1

38 K2 = 0

39 K1 = 1

40 L = 0

41 FT = 0

FIG. 4.20: Contra-exemplo da especificação na linha 10 da Figura 4.18.

77

Page 78: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG (!(K2 & K3)) is false

2 -- as demonstrated by the following execution sequence

3 state 3.1:

4 T1 = 0

5 K3 = 0

6 K2 = 0

7 K1 = 0

8 L = 0

9 D = 0

10 FT = 0

11

12 state 3.2:

13 L = 1

14

15 state 3.3:

16 K3 = 1

17 K1 = 1

18 L = 0

19

20 state 3.4:

21 T1 = 1

22

23 state 3.5:

24 K3 = 0

25 K2 = 1

26 L = 1

27

28 state 3.6:

29 K3 = 1

30 L = 0

FIG. 4.21: Contra-exemplo da especificação na linha 13 da Figura 4.18.

4.6.1 REPROJETO

Para a especificação da linha 7 da Figura 4.18 o contra-exemplo na Figura 4.19

ilustra um traço de erro do programa. Analisando o contra-exemplo pode-se ver que no

estado 1.9 da linha 46 ocorre a proteção de sobrecorrente através do relé térmico (FT)

e a prioridade para SET não impõe o desligamento geral do sistema, ocasionando uma

falha.

Para a especificação da linha 10 da Figura 4.18, o contra-exemplo na Figura 4.20

mostra que no estado 2.6 na linha 32 o sistema Y −△ e o relé térmico (L = 1 e FT = 1)

acionam simultaneamente. O sistema Y − △ continua ativo e a prioridade é para o

sistema desligar devido à proteção do relé térmico.

78

Page 79: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

Por fim a especificação da linha 13 da Figura 4.18. O contra-exemplo na Figura

4.21 mostra um traço de erro que no estado 3.5, na linha 23, ocorre um erro devido ao

religamento do sistema estando K1 e K2 ainda ativos. O religamento do sistema faz com

que K3 seja ativado no estado 3.6 na linha 28. Porém, sendo prioridade para SET, K3

fica ativo em simultaneidade com K2.

Após a análise dos traços de eventos, é possível modificar o programa de aplicação

para que estes traços sejam suprimidos, o que corresponde a etapa de reprojeto. A partir

dos contra-exemplos identificam-se que a inserção dos blocos de memória com prioridade

SET violam as especificações e o correto é a prioridade RESET. O sistema reprojetado

está na Figura 4.22. A posterior verificação para o reprojeto na Figura 4.23 indicou que

todas as especificações da Figura 4.18 são verdadeiras para o sistema reprojetado.

FIG. 4.22: Reprojeto com base no contra-exemplo.

79

Page 80: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 MODULE programa_reprojeto(L,D,FT)

2 VAR

3 Q1 : resetset(L,(D|FT));

4 Q2 : resetset((temp.saida & !next(Q3.saida)),(D|FT));

5 Q3 : resetset(L,(D|FT) | temp.saida);

6 Qs : resetset(L,(D|FT));

7 temp : DI(next(Qs.saida));

8 DEFINE

9 K1:= Q1.saida;

10 K2:= Q2.saida;

11 K3:= Q3.saida;

12 T1:= temp.saida;

FIG. 4.23: Reprojeto na linguagem SMV.

4.7 RESUMO DO CAPÍTULO

Este capítulo tem como contribuições a criação de um procedimento de tradução

de processos escrito em DBF para um código aceito pelo SMV. Tratam-se da sistem-

atização de padrões na tradução da MCE e em especificações na linguagem CTL e da

inserção da verificação no projeto de sistemas automatizados escritos na linguagem DBF.

Uma vantagem em relação a abordagens semelhantes é a busca pela sistematização dos

procedimentos de verificação, visando futuro automatismo do processo.

80

Page 81: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

5 APLICAÇÃO NA AUTOMAÇÃO DE UM AQUECEDOR A CHAMA

Este capítulo mostra a aplicação da verificação de modelos ao projeto de automação

de um Aquecedor a Chama (API, 1997). Trata-se em particular da automação do processo

de purga, etapa da inicialização do aquecedor (API, 1997). Os documentos de projeto

analisados na verificação são a descrição literal das especificações, a matriz de causa e

efeito e o programa em DBF, escrito segundo a norma ISA 5.2 (ISA, 1992).

5.1 AUTOMAÇÃO DO PROCESSO DE PURGA

Nesta seção descreve-se a documentação do projeto da automação do processo de

purga de um aquecedor a chama (API, 1997).

5.1.1 SEQÜÊNCIA DE PURGA

O processo de purga do aquecedor consiste nos seguintes passos:

a) Para iniciar a seqüência, o sinal Permissão de Purga deve estar ativo;

b) O operador comanda Iniciar Purga;

c) A válvula de vapor deve ser aberta automaticamente, e a indicação Purga em An-

damento deve começar a piscar quando a chave de fim-de-curso ZSH-XV-VAPOR

confirmar a abertura total da válvula;

d) Uma vez que a indicação de Purga em Andamento é observada, um temporizador

deve ser iniciado, e o tempo de purga deve começar. O tempo de purga deve ser

T1;

e) Se o operador fecha a válvula de vapor antes do tempo total de purga ou, se o

operador comandar Desistência de Purga, a seqüência de inicialização deve ser

inibida e uma nova purga será necessária para habilitar qualquer ignição;

f) Se qualquer intertravamento que cause o desligamento geral do aquecedor a chama

é disparado durante a operação de purga, a seqüência de inicialização deve ser

abortada e, após o término da operação de purga, a ignição não será permitida;

81

Page 82: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

g) O fechamento da válvula de vapor após o tempo de purga será automático, e a

indicação Permissão para Ignição piscará durante T2.

5.1.2 LISTA DE ENTRADAS E SAÍDAS

As Tabelas 5.1 e 5.2 apresentam a correspondência lógica de entradas e saídas.

Considera-se que todas as variáveis são binárias, assumindo os valores 0 (equivalente

a falso ou off ) e 1 (equivalente a verdadeiro ou on).

TAB. 5.1: Variáveis de entrada do sistema

Sensores/Sinais de entrada Variável Correspondência lógica

Permissão de Purga perm_purg habilitada = 1Iniciar Purga init_purg acionado = 1

Chave ZSH-XV-VAPOR fch_xv acionada = 1Desistência de Purga des_purg acionado = 1

Intertravamento para desligamento do purga sd_purg acionado = 1

TAB. 5.2: Variáveis de saída do sistema

Atuadores/Indicadores Variável Correspondência lógica

Abertura da válvula de vapor abre_xv para abrir = 1Purga em Andamento indic_purg acionado = 1Permissão para Ignição indic_ignit acionada = 1

5.1.3 MATRIZ DE CAUSA E EFEITO

A Figura 5.1 mostra a Matriz de Causa e Efeito para o sistema descrito anteriormente.

82

Page 83: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

init_

purg

perm

_pur

g

! des

_pur

g

! sd_

purg

fch_

xv

T1 des_

purg

sd_p

urg

T2

Com

ando

de

Inic

iar

Purg

a

Sin

al d

e Pe

rmis

são

de P

urga

Ope

rado

r nã

o C

oman

da

Des

istê

ncia

de

Purg

a

Não

aco

ntec

er In

tert

rava

men

to

SD

-PU

RG

A

Cha

ve d

e fim

-de-

curs

o Z

SH

-XV

-V

APO

R

Purg

a Fi

naliz

ada

Com

ando

de

desi

stên

cia

de

Purg

a

Inte

rtra

vam

ento

SD

-PU

RG

A

Igni

ção

Fina

lizad

a

Abre válvula de vapor abre_xv X X X XIndicação de Purga em Andamento indic_purg X X XIndicação Permissão para Ignição indic_ignit XFecha válvula de vapor ! abre_xv X XFim da Indicação de Purga em Andamento ! indic_purg X X XFim da Indicação de Permissão para Ignição ! indic_purg X X

CA

US

A

EFEITO

FIG. 5.1: Matriz de Causa e Efeito do sistema Purga.

Na matriz de causa e efeito da Figura 5.1, T1 e T2 são variáveis binárias que indicam

o término dos tempos de purga e ignição respectivamente (T1, T2=1 equivale ao término

da contagem).

5.1.4 PROJETO DO PROGRAMA EM DBF

Na Figura 5.2 está o projeto de automação do sistema Purga do Aquecedor a Chama

escrito na linguagem DBF. A interpretação dos símbolos segue a norma ISA 5.2 (ISA,

1992), alguns símbolos adicionais são apresentados na Figura 5.3.

83

Page 84: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FIG. 5.2: Projeto do sistema Purga.

FIG. 5.3: Tipos de sinal, segundo a norma ISA 5.2 (ISA, 1992).

5.2 MODELAGEM DAS ESPECIFICAÇÕES

As condições para verdadeiro e falso da variável abre_xv estão nas equações abaixo.

CON = init_purg (5.1)

COFF = (T1|des_purg|sd_purg|!perm_purg|indic_ignit) (5.2)

A condição para verdadeiro da variável abre_xv é que o operador comande o início de

purga (init_purg). A condição para falso da variável abre_xv é ou que o tempo de purga

84

Page 85: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

termine (T1), ou que o operador comande a desistência de purga (des_purg), ou que haja

um intertravamento para desligamento da purga (sd_purg), ou que a permissão de purga

seja desabilitada (!perm_purg), ou que a ignição esteja em andamento (indic_ignit).

As condições para verdadeiro e falso da variável indic_purg estão abaixo:

CON = (fch_xv&abre_xv) (5.3)

COFF = (des_purg|sd_purg|T1|!perm_purg|!fch_xv) (5.4)

A condição para verdadeiro da variável indic_purg é que a chave de fim-de-curso

confirme a abertura total da válvula (fch_xv) e esteja ativo o comando da abertura da

válvula de vapor (abre_xv). A condição para falso da variável indic_purg é ou que

exista desistência de purga (des_purg), ou intertravamento da purga (sd_purg), ou que

o tempo de purga termine (T1), ou que não exista permissão de purga (!perm_purg), ou

que o operador feche manualmente a válvula de vapor (!fch_xv).

As condições para verdadeiro e falso da variável indic_ignit são:

CON = T1 (5.5)

COFF = (sd_purg|T2) (5.6)

A condição para verdadeiro da variável indic_ignit é que o tempo de purga termine

(T1). A condição para falso da variável indic_ignit é ou que exista intertravamento da

purga (sd_purg), ou que o tempo de ignição termine (T2).

De acordo com as especificações sistematizadas para o acionamento (especificações

4.1 e 4.2) e desligamento (especificações 4.3 e 4.4), desenvolvem-se as especificações para

o sistema.

• As especificações de acionamento para abre_xv:

AG((init_purg&!(T1|des_purg|sd_purg|!perm_purg|indic_ignit)− > AF(abre_xv))

(5.7)

AG(!abre_xv− >!E[!init_purgU(abre_xv&!init_purg)]) (5.8)

85

Page 86: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

• Especificações de desligamento para abre_xv:

AG((T1|des_purg|sd_purg|!perm_purg|indic_ignit)&!init_purg− > AF(!abre_xv))

(5.9)

AG(abre_xv− >!E[!(T1|des_purg|sd_purg|!perm_purg|indic_ignit)U(!abre_xv&

!(T1|des_purg|sd_purg|!perm_purg|indic_ignit))]) (5.10)

• Especificações de acionamento para indic_purg:

AG((fch_xv&abre_xv)&!(des_purg|sd_purg|T1|!perm_purg|!fch_xv)− >

AF(indic_purg)) (5.11)

AG(!(indic_purg)− >!E[!(fch_xv&abre_xv)U(indic_purg&!(fch_xv&abre_xv))])

(5.12)

• Especificações de desligamento para indic_purg:

AG((des_purg|sd_purg|T1|!perm_purg|!fch_xv)&!(fch_xv&abre_xv)− >

AF(!indic_purg)) (5.13)

AG(indic_purg− >!E[!(des_purg|sd_purg|T1|!perm_purg|!fch_xv)U

(!indic_purg&!(des_purg|sd_purg|T1|!perm_purg|!fch_xv))]) (5.14)

• Especificações de acionamento para indic_ignit:

AG(T1&!(sd_purg|T2)− > AF(indic_ignit)) (5.15)

AG(!(indic_ignit)− >!E[!T1U(indic_ignit&!T1)]) (5.16)

86

Page 87: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

• Especificações de desligamento para indic_ignit:

AG((sd_purg|T2)&!T1− > AF(!indic_ignit)) (5.17)

AG(indic_ignit− >!E[!(sd_purg|T2)U(!indic_ignit&!(sd_purg|T2))]) (5.18)

Além das especificações acima, baseado no conhecimento do sistema, são expressas

situações indesejadas para o projeto (especificações de segurança). Para o sistema purga

foram identificadas três situações que não podem ocorrer, listadas abaixo.

• A especificação na equação 5.19 expressa que não pode ocorrer indicação de Purga

em Andamento (indic_purg) com a válvula de vapor fechada (!fch_xv):

AG!(indic_purg&!fch_xv) (5.19)

• A especificação na equação 5.20 expressa que não pode ocorrer a não permis-

são de purga (!perm_purg) seguida do comando de abrir a válvula de vapor

(AX(abre_xv)):

AG!(!perm_purg&AX(abre_xv)) (5.20)

• A especificação na equação 5.21 expressa que não pode estar a purga desabilitada

(!(perm_purg)) e, em seguida, ocorrer a indicação de purga em andamento (in-

dic_purg):

AG!(!perm_purg&AX(indic_purg)) (5.21)

5.3 MODELAGEM DO PROGRAMA

Na Figura 5.4, reproduz-se a Figura 5.2 com inserção de variáveis auxiliares para

modelagem de programa no SMV. A Figura 5.5 representa a modelagem do sistema

purga utilizando os carimbos correspondentes aos blocos do diagrama da Figura 5.4.

O módulo principal main é composto pelas variáveis de entrada booleanas nas linhas

2 a 7, seguida da representação das saídas Q1, Q2, temp1 e temp2 nas linhas 9 a 13,

87

Page 88: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

representadas como instâncias dos módulos definidos nas linhas 24 a 27. Depois são

representadas as especificações do sistema, seguidas dos módulos dos blocos temporizador

e memória.

FIG. 5.4: Projeto do sistema Purga com inserção de variáveis auxiliares.

88

Page 89: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 MODULE main

2 VAR

3 perm_purg : boolean;

4 init_purg : boolean;

5 fch_xv : boolean;

6 des_purg : boolean;

7 sd_purg : boolean;

8

9 Q1 : resetset(init_purg,(Q2.saida|!perm_purg|sd_purg|des_purg));

10 Q2 : resetset(next(temp1.saida),(sd_purg|temp2.saida));

11

12 temp1 : DI(next(Q1.saida) & fch_xv);

13 temp2 : DI(next(Q2.saida));

14

15 DEFINE

16 abre_xv:= Q1.saida;

17 indic_purg:= Q1.saida & fch_xv;

18 indic_ignit:= Q2.saida;

19 T1:= temp1.saida;

20 T2:= temp2.saida;

21

22 SPEC AG !(indic_purg & !fch_xv)

23 ...

24 MODULE DI(entrada)

25 ...

26 MODULE resetset(entrada_set,entrada_reset)

27 ...

FIG. 5.5: Modelo do Programa no SMV.

5.4 VERIFICAÇÃO

Após a modularização do sistema é feita a verificação com as especificações descritas

na Seção 5.2. O resultado da verificação é mostrado na Figura 5.6. Observa-se que

todas as especificações são verdadeiras. Isso quer dizer que não ocorre uma violação das

especificações por parte do programa de automação da Purga projetado.

89

Page 90: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 -- specification AG (init_purg & !(T1 | des_purg | sd_pur... is true

2 -- specification AG (!abre_xv -> !E((!init_purg) U (abre_... is true

3 -- specification AG ((T1 | des_purg | sd_purg | !perm_pur... is true

4 -- specification AG (abre_xv -> !E((!(T1 | des_purg | sd_... is true

5 -- specification AG (fch_xv & abre_xv & !(des_purg | sd_p... is true

6 -- specification AG (!indic_purg -> !E((!(fch_xv & abre_x... is true

7 -- specification AG ((des_purg | sd_purg | T1 | !perm_pur... is true

8 -- specification AG (indic_purg -> !E((!(des_purg | sd_pu... is true

9 -- specification AG (T1 & !(sd_purg | T2) -> AF indic_ign... is true

10 -- specification AG (!indic_ignit -> !E((!T1) U (indic_ig... is true

11 -- specification AG ((sd_purg | T2) & !T1 -> AF (!indic_i... is true

12 -- specification AG (indic_ignit -> !E((!(sd_purg | T2)) ... is true

13 -- specification AG (!(indic_purg & !fch_xv)) is true

14 -- specification AG (!(!perm_purg & AX abre_xv)) is true

15 -- specification AG (!(!perm_purg & AX indic_purg)) is true

FIG. 5.6: Resposta da verificação do sistema Purga.

5.5 RESUMO DO CAPÍTULO

Este Capítulo mostra a importância da aplicação da verificação de modelos aos Sis-

temas Industriais Automatizados. Embora o projeto apresentado esteja correto, é impor-

tante observar que a modularização e sistematização proposta no trabalho mostra que o

tempo gasto para a validação do projeto é pequeno, podendo melhorar com a automatiza-

ção da verificação. Não foi preciso interromper, parar ou transferir nenhum processo em

campo para testar o programa do CLP, ao mesmo tempo que se aumenta a confiabilidade

inerente ao projeto.

90

Page 91: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

6 CONCLUSÃO

Neste capítulo é apresentado um resumo, do ponto de vista metodológico, das con-

tribuições desta dissertação. São descritas as contribuições, assim como as perspectivas

para futuros estudos, baseados na experiência adquirida durante o desenvolvimento deste

trabalho.

6.1 CONTRIBUIÇÕES À VERIFICAÇÃO DE MODELOS

O Capítulo 4 apresenta as contribuições deste trabalho para a sistematização de

processos de Sistemas Industriais Automatizados.

Inicialmente é apresentada uma técnica de sistematização na tradução de especifi-

cações escritas a partir da MCE. Este procedimento se baseia em determinar as condições

que levam uma variável de saída a assumir uma condição verdadeira ou falsa. Isso quer

dizer, condições de acionamento e desligamento de variáveis de saída. Duas maneiras sis-

tematizadas para descrever especificações de desligamento foram criadas. Uma implica

em condições que podem ocorrer para o acionamento ou desligamento das variáveis e a

outra representa a obrigatoriedade de apenas determinadas condições levarem as variáveis

de saída a se tornarem falsas ou verdadeiras.

Outros tipos sistematizados de especificações são baseadas no conhecimento do sis-

tema. Estes tipos podem expressar a segurança, a alcançabilidade e a vivacidade do

sistema. Mostram sempre o comportamento das variáveis de saída.

Uma outra contribuição é a criação de um método de tradução de sistemas escritos

em DBF para o código SMV. Foram desenvolvidos gabaritos de códigos SMV para estru-

turas típicas da Norma ANSI/ISA 5.2. Sistematizou-se o procedimento incluindo desde

estruturas lógicas básicas até estruturas mais complexas, como elementos de memória e

blocos temporizadores. Tais blocos possuem correspondentes equivalentes na linguagem

DBF definidas na norma para programação de CLP IEC 61131-3 (IEC, 2003).

Criou-se também um procedimento para a construção modular do código para a

verificação no SMV.

A verificação dos sistemas Y − △ e Purga, mostraram a eficiência do reprojeto

orientado pelo traço de eventos do erro fornecido pelo SMV. Em muitos casos, entretanto,

a especificação testada mostrou-se uma propriedade falsa verdadeira, sendo muito restrita

91

Page 92: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

para o sistema, obrigando a uma reescrita da mesma.

No Capítulo 5, demonstra-se a aplicabilidade do método proposto ao se abordar um

projeto de automação realista da etapa de purga de um aquecedor a chama.

Uma vantagem, em relação a abordagens anteriores, é a busca pela sistematização

dos procedimentos de verificação, visando um futuro automatismo do processo.

A fase de desenvolvimento do trabalho deu origem a dois artigos, o OLIVEIRA et al.

(2006b) apresenta a aplicação da verificação a sistemas instrumentados de segurança e o

OLIVEIRA et al. (2006a) a sistematização dos procedimentos de verificação de modelos

aplicada aos sistemas industriais automatizados controlados por CLP.

6.2 LIMITAÇÕES DA ABORDAGEM

Um problema na verificação de modelos utilizando a ferramenta SMV é que, depen-

dendo da quantidade de variáveis de entrada para determinadas especificações, o SMV

não mostra o contra-exemplo, apenas descreve que o programa não está de acordo com

a especificação. Isso é uma falha da ferramenta e pode ser corrigido por uso de outras

ferramentas.

Para tratamento de sistema de grande porte é necessário que seja feito algum tipo

de decomposição estrutural do processo, para que seja tratável pela ferramenta de verifi-

cação. Este ponto ainda está em desenvolvimento na pesquisa da verificação de modelos

(CLARKE et al., 1999).

O método funcionou bem para sistemas com um temporizador ou onde não há ne-

cessidade de verificar o funcionamento paralelo de dois temporizadores distintos. Neste

caso, dever-se-ia buscar uma ferramenta de verificação que tratasse do tempo explicita-

mente, como os autômatos temporizados tratados no HyTech (HENZINGER et al., 1997),

CheckMate (CHUTINAN, 1999) ou UPAAL (DAVID & LARSEN, 2004).

6.3 PERSPECTIVAS

Com relação aos estudos apresentados neste trabalho, existem alguns pontos que

merecem atenção e que representam possibilidades de trabalhos futuros.

Os códigos criados para a representação do programa DBF na linguagem SMV, não

foram retirados do código fonte do CLP, mas sim da sua lógica abstraída em máquinas

de estado. Portanto, um passo adicional interessante seria uma ferramenta que extraísse

o modelo a ser verificado diretamente do programa do CLP.

92

Page 93: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

Foi desenvolvido um procedimento de verificação de programas de CLP modular, mas

esse procedimento não é automatizado. Não se tem conhecimento de uma ferramenta

computacional para verificação com tal funcionalidade.

93

Page 94: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

7 REFERÊNCIAS BIBLIOGRÁFICAS

ALIPERTI, J. Gerenciamento de Alarmes: uma Situação Alarmante. Brasil InTech, (70):18–21, Abril 2005.

API. Instrumentation and Control Systems for Fired Heaters and Steam Gen-erators. API Recommended Practice 556, Maio 1997.

BRYANT, R. E. e MUSGRAVE, G. Panel: User Experience with High LevelFormal Verification. Em Design Automation Conference, pág. 327, 1998.

CADENCE. Cadence SMV - Symbolic model checker. http://www.kenmcmil.com/,junho 2002.

CAVADA, R. e CIMATTI, A. NuSMV version 2.2. [email protected], Novembro 2004.

CHUTINAN, A. Hybrid System Verification Using Discrete Model Approxima-tions. www.cs.cmu.edu/ webk/checkmate, Novembro 1999.

CLARKE, E. M. e EMERSON, E. A. Design and synthesis of synchronizationskeletons using branching time temporal logic. Em In Logic of Programs: work-shop, Yorktown Heights, NY, Maio 1981.

CLARKE, E. M., EMERSON, E. A. e SISTLA, A. P. Automatic verification offinite-state concurrent systems using temporal logic specifications. ACMTransactions on Programming Languages and Systems, 8(2):244–263, 1986.

CLARKE, E. M., GRUMBERG, O., HIRAISHI, H., JHA, S., LONG, D. E., MCMILLAN,K. L. e NESS, L. A. Verification of the Futurebus + cache coherence protocol.Em Claesen, 1993.

CLARKE, E. M., GRUMBERG, O. e PELED, D. A. Model Checking. The MIT Press,Cabridge, Massachusetts 02142, 1st edition, 1999.

CMU. The SMV system* for SMV: Version 2.5.4. www.cs.cmu.edu/ mod-elcheck/smv.html, Novembro 2000.

DAVID, G. e LARSEN, K. G. A Tutorial on UPPAAL: Formal Methods for theDesign of Real-Time Systems. International School on Formal Methods for theDesign of Computer, Comunication, and Software Systems, Nevembro 2004.

DIAS, C. A. Técnicas Avançadas de Instrumentação & Controle de ProcessosIndustriais. Editora e Gráfica ao Livro Técnico, [email protected], 1a edition, 2005.

FABIAN, M. e HELLGREN, A. PLC-based Implementation of Supervisory Con-trol for Discrete Event Systems. Em IEEE Conference on Decision and Control,págs. 16–18, Tampa, Florida, USA, Dezembro 1998.

94

Page 95: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

FALCIONE, A. e KROGH, B. H. Design Recovery for Relay Ladder Logic. IEEETransactions on Automatic Control, 13(2):90–98, abril 1993.

GIBBS, W. W. Software’s Chonic Crisis. Scientific American, págs. 86–95, Setembro1994.

HENZINGER, T. A., HO, P. H. e WONG-TOI, H. HyTech: A Model Checker forHybrid Systems. Software tools for Technology Transfer, 1997.

HUGUES, G. E. e CRESWELL, M. J. Introduction to Modal Logic. Methuen, 1977.

IEC. Specification Language GRAFCET for Sequential Function Charts. IECInternational Standard 60848, Fevereiro 1999.

IEC. Programmable controllers−Part3: Programming languages. IEC Interna-tional Standard 61131 − 3, Janeiro 2003.

ISA. Binary Logic Diagrams for Process Operations ANSI/ISA 5.2. ISA-TheInstrumentation, Systems, and Automation Society, Julho 1992.

LAMPÉRIÈRE-COUFFIN, S., ROSSI, J.-M. e LESSAGE, J. Formal Validation ofPLC Programs : A Survey. University Laboratory in Automated Production Re-search, Julho 1999.

LONG, D. E. Model Checking, Abstration, and Compositional Reasoning. Tese(doutorado), Carnegie Mellon University, USA, 1993.

MCMILLAN, K. L. Symbolic Model Checking: An Approach to the State Ex-plosion Problem. Tese (doutorado), Carnegie Mellon University, USA, novembro1993.

MOON, I. Modeling Programmable Logic Controllers for Logic Verification.IEEE Transactions on Automatic Control, 14(2):53–59, Abril 1994.

OLIVEIRA, C. H. C., CUNHA, A. E. C. e CAMPOS, M. C. M. M. Verificação de Mo-delos Aplicada aos Sistemas Industriais Automatizados por ControladoresLógicos Programáveis. CBA Congresso Brasileiro de Automática, Outubro 2006a.

OLIVEIRA, C. H. C., CUNHA, A. E. C. e CAMPOS, M. C. M. M. Verificação Formalde Sistemas de Segurança Instrumentados. INDUSCON Conferência Interna-cional de Aplicações Industriais, Abril 2006b.

QUIELLE, J. P. e SIFAKIS, J. Specification and verification of concurrent systemsin CESAR. Em ACM International Symposium on Programming, págs. 337–350,1982.

RAUSCH, M. e KROGH, B. Formal Verification of PLC Programs. Em AmericanControl Confernce − ACC, págs. 234–238, Philadelphia, Pennsylvania, Junho 1998.

SMET, O. e ROSSI, O. Verification of a controller for a flexible manufacturingline written in Ladder Diagram via model-checking. Em American ControlConfernce − ACC, págs. 8–10, Anchorage, Maio 2002.

95

Page 96: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

SONG, M. J., KOO, S. R. e SEONG, P. H. Development of a Verification Methodfor Timed Function Blocks Using ESDT and SMV. IEEE International Sym-posium on High Assurance Systems Engineering (HASE’2004), 373(1):285–286, Abril2004.

SPARACO, P. Board Faults Ariane 5 Software. Aviation Week & Space Technology,págs. 33–35, Julho 1996.

VÖLKER, N. e KRÄMER, B. J. Modular Verification of Function Block Basedindutrial Control Systems. Em IFAC-IFIP, págs. 66–71, Schlo Dagstuhl, Germany,Junho 1999.

XIYING, W. e LITZ, L. Model Checking: Towards Generating a Correct Specifi-cation for Logic Contollers. Em American Control Conference - ACC, págs. 8–10,Anchorage, AK, Maio 2002.

96

Page 97: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

8 APÊNDICE

97

Page 98: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

8.1 MANUAL DO VERIFICADOR DE MODELOS SIMBÓLICOS (SYMBOLIC

MODEL CHECKING - SMV) VERSÃO 2.5.4

Este documento apresenta um resumo do manual da ferramenta SMV, disponível em

CMU (2000).

O SMV é uma ferramenta para verificar sistemas de estados finitos contra especifi-

cações escritas na lógica temporal CTL.

Este documento descreve a sintaxe e a semântica da linguagem de entrada do SMV, e

as funcionalidades do verificador de modelos. Todos os exemplos neste documento estão

disponíveis na distribuição com o software (CMU, 2000).

8.2 LINGUAGEM DE ENTRADA

Considere o programa na linguagem de entra do SMV ilustrado na Figura 8.1 (arquivo

short.smv na distribuição).

1 MODULE main

2 VAR

3 request : boolean;

4 state : {ready,busy};

5 ASSIGN

6 init(state) := ready;

7 next(state) := case

8 state = ready & request : busy;

9 1 : {ready,busy};

10 esac;

11 SPEC

12 AG(request -> AF state = busy)

FIG. 8.1: Listagem de short.smv.

O arquivo de entrada descreve ambos o modelo e a especificação. O modelo é uma

estrutura Kripke, cujo estado é definido por uma coleção de variáveis de estado, que

podem ser booleanas ou escalares. A variável request (pedido) é declarada para ser

booleana na Figura 8.1, enquanto a variável state (estado) é um escalar que assume os

valores ready (disponível) ou busy (ocupado).

A relação de transição da estrutura Kripke, e seu estado inicial (ou estados), são

determinados por uma coleção de atribuições paralelas, que são introduzidas pela palavra

ASSIGN. Na Figura 8.1, o valor inicial da variável state é ready. O valor seguinte de

state é determinado pela expressão na Figura 8.2

O valor de uma expressão case é dado pela primeira expressão no lado direito de um :

98

Page 99: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 case

2 state = ready & request : busy;

3 1 : {ready,busy};

4 esac;

FIG. 8.2: Expressão

cuja condição no lado esquerdo seja verdadeira. Assim, se state = ready&request for ver-

dadeiro, então o resultado da expressão case é ready, senão, é o conjunto {ready,busy}.

Quando um conjunto é atribuído a uma variável, o resultado é uma escolha não determin-

ista entre os valores disponíveis. Assim, se o valor do state não for ready, ou request

for falso, o valor de state no estado seguinte pode ser ready ou busy. As escolhas não

deterministas são úteis para descrever os sistemas que não estejam ainda inteiramente

implementados, ou para modelos abstratos de protocolos complexos, onde o valor de

algumas variáveis de estado não pode ser determinado completamente.

Observe que request não está atribuído neste programa. Isto deixa o sistema do

SMV livre para escolher qualquer valor para esta variável, dando-lhe a característica de

uma entrada sem restrições para o sistema.

A especificação do sistema aparece como uma fórmula CTL após a palavra-chave

SPEC. O verificador de modelos SMV verifica se todos os possíveis estados iniciais sat-

isfazem à especificação. Na Figura 8.1, a especificação afirma que invariavelmente se

request for verdade, então inevitavelmente o valor de state é busy.

A Figura 8.3 ilustra a definição dos módulos reusáveis e expressões. É um modelo

de circuito contador binário de 3 bits. Observe que o módulo de nome main possui o

significado especial no SMV, na mesma maneira que faz na linguagem de programação

C. A ordem de definições no arquivo de entrada não possui especificação de seqüencia.

Neste exemplo, uma variável pode também ser uma instância de um módulo definido

pelo usuário. O módulo neste caso é o counter_cell, que é instanciado três vezes,

com os nomes bit0, bit1 e bit2. O módulo-célula do contador possui um parâmetro

formal carry_in. Na instância bit0, este parâmetro possui valor 1. Na instância bit1,

carry_in é dado pelo valor de bit0. carry_out. Esta expressão é avaliada no contexto

do módulo principal. Entretanto, uma expressão na forma a.b denota b componente do

módulo a, justo como se o módulo a fosse uma estrutura de dados em uma linguagem de

programação padrão. Daí, carry_in dentro do módulo bit1 é o carry_out do módulo

bit0. A palavra-chave DEFINE é usada para atribuir a expressão value & carry_in para

o símbolo carry_out.

O efeito da indicação DEFINE poderia ter sido obtido declarando uma variável e

99

Page 100: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

1 MODULE main

2 VAR

3 bit0 : counter_cell (1);

4 bit1 : counter_cell (bit0.carry_out);

5 bit2 : counter_cell (bit1.carry_out);

6 SPEC

7 AG AF bit2.carry_out

8

9 MODULE counter_cell (carry_in)

10 VAR

11 value : boolean;

12 ASSIGN

13 init (value) := 0;

14 next (value) := value + carry_in mod 2;

15 DEFINE

16 carry_out := value & carry_in;

FIG. 8.3: Programa e expressões reusáveis

atribuindo seu valor, como segue:

1 VAR

2 carry_out : boolean;

3 ASSIGN

4 carry_out := value & carry_in

FIG. 8.4: Atribuição

Observe que neste caso, o valor atual da variável é atribuído, ao invés do valor

seguinte. Os símbolos definidos são às vezes preferíveis às variáveis, desde que não in-

troduzam uma variável nova na representação BDD do sistema. Um ponto fraco dos

símbolos definidos é que não podem ser dados valores não deterministas.

8.3 SINTAXE E SEMÂNTICA

Esta seção descreve a sintaxe e a semântica da linguagem de entrada do SMV.

8.3.1 CONVENÇÕES LÉXICAS

Um átomo na sintaxe descrita abaixo pode ser toda a seqüência dos caracteres no

conjunto {A-Z, a-z, 0-9,_,-}, desde que começem com um caracter alfabético. Todos

os caracteres em um nome são significantes, e maiúsculas e minúsculas são diferenciadas.

Os caracteres de espaço em branco são o espaço, a tabulação e a nova linha. Toda a série

que começa com dois traços (--) e que termina com uma nova linha é um comentário. Um

number é toda a seqüência de dígitos. Todos os outros símbolos analisados e reconhecidos

são incluídos nas citações e expressões da sintaxe abaixo.

100

Page 101: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

8.3.2 EXPRESSÕES

As expressões são construídas a partir das variáveis, constantes, e uma coleção de

operadores, inclusive conectivos booleanos, operadores aritméticos inteiros, e expressões

case. A sintaxe das expressões é como segue:

expr ::

atom ;; constante simbólica

| number ;; constante numérica

| id ;; identificador variável

| "!" expr ;; lógica não

| expr1 "&" expr2 ;; lógica e

| expr1 "|" expr2 ;; lógica ou

| expr1 "->" expr2 ;; implicação lógica

| expr1 "<->" expr2 ;; equivalência lógica

| expr1 "=" expr2 ;; igualdade

| expr1 "!=" expr2 ;; desigualdade

| expr1 "<" expr2 ;; menor que

| expr1 ">" expr2 ;; maior que

| expr1 "<=" expr2 ;; menor ou igual que

| expr1 ">=" expr2 ;; maior ou igual que

| expr1 "+" expr2 ;; adição de inteiro

| expr1 "-" expr2 ;; subtração de inteiro

| expr1 "*" expr2 ;; multiplicação de inteiro

| expr1 "/" expr2 ;; divisão de inteiro

| expr1 "mod" expr2 ;; resto de inteiro

| "next" "(" id ")" expr2 ;; valor seguinte

| set_expr ;; uma expressão set

| case_expr ;; uma expressão de case

Uma id, ou identificador, é um símbolo ou expressão que identifica um objeto, tal

como uma variável ou um símbolo definido. Uma vez que uma id pode ser um átomo,

há uma possível ambigüidade se uma variável ou um símbolo definido tiverem o mesmo

nome que uma constante simbólica. Tal ambigüidade é marcada pelo interpretador como

um erro. A expressão next(x) refere-se ao valor do identificador x no próximo estado.

A ordem para analisar a precedência gramatical é, de cima para abaixo,

101

Page 102: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

*,/

+,-

mod

=,!+,<,>,<=,>=

!

&

|

->,<->

Operadores de igual precedência se associam à esquerda, como exceção da implicação

->, que se associa à direita. Parênteses podem ser usados para agrupar expressões.

Uma expressão case possui a sintaxe:

case_expr ::

"case"

expr_a1 ":" expr_b1 ";"

expr_a2 ":" expr_b2 ";"

...

expr_an ":" expr_bn ";"

esac

Uma expressão case retorna ao valor da primeira expressão no lado direito, tal que

a condição correspondente no lado esquerdo seja verdadeira. Assim, se expr_a1 for

verdadeiro, então o resultado é expr_b1. Senão, se expr_a2 for verdadeiro, então o

resultado é expr_b2 etc. Se nenhuma das expressões no lado esquerdo for verdadeira, o

resultado da expressão case é o valor numérico 1. É um erro para toda a expressão da

esquerda para retornar um valor diferente de 0 ou 1.

Uma expressão set possui a sintaxe:

dec1 :: "VAR"

atom1 ":" type1 ";"

atom2 ":" type2 ";"

...

O tipo associado a uma declaração variável pode ser um booleano, um escalar, um

módulo definido pelo usuário, ou um vetor de qualquer um dos anteriores.

102

Page 103: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

8.3.3 DECLARAÇÃO DA ASSIGN

Uma declaração de atribuição tem a forma:

dec1 :: "ASSIGN"

dest1 ":=" expr1 ";"

dest2 ":=" expr2 ";"

...

onde dest1 e dest2 tem a forma:

dest :: atom

| "init" "(" atom ")"

| "next" "(" atom ")"

No lado esquerdo da atribuição, o átomo denota o valor atual de uma variável,

init(atom) denota seu valor inicial, e next(atom) denota seu valor no próximo estado.

Para que o programa seja implementável, deve ser estabelecido uma ordem em que

as atribuições podem ser executadas tais que nenhuma variável seja atribuída depois que

seu valor seja referenciado. Este não é o caso se houver uma dependência circular entre

as atribuições em qualquer processo dado. Assim, tal circunstância é um erro. Além do

mais, é um erro se a uma variável for atribuído um valor mais de uma vez em em um

dado instante. É um erro se:

a) o valor seguinte ou atual de uma variável for atribuído mais de uma vez em um

processo dado, ou

b) o valor inicial de uma variável for atribuído mais de uma vez no programa, ou

c) o valor corrente e valor inicial de uma variável forem ambos atribuídos no programa,

ou

d) o valor corrente e o valor seguinte de uma variável forem ambos atribuídos no

programa.

8.3.4 DECLARAÇÃO SPEC

A especificação de sistema é dada como uma fórmula na lógica temporal CTL, intro-

duzida pela palavra chave SPEC. A sintaxe desta declaração é:

103

Page 104: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

dec1 :: "SPEC" ctlform

Uma formula CTL tem a sintaxe

ctlform ::

expr ;; uma expressão booleana

| "!" ctlform ;; não lógico

| ctlform1 "&" ctlform2 ;; e lógico

| ctlform1 "|" ctlform2 ;; ou lógico

| ctlform1 "->" ctlform2 ;; implicação lógica

| ctlform1 "<->" ctlform2 ;; equivalência lógico

| "E" pathform ;; quantificador de caminho existencial

| "A" pathform ;; quantificador de caminho universal

A sintaxe da fórmula de caminho é:

pathform ::

"X" ctlform ;; próxima vez

"F" ctlform ;; eventualmente

"G" ctlform ;; globalmente

ctlform1 "U" ctlform2 ;; até que

A ordem de precedência dos operadores é (de cima para baixo)

E,A,X,F,G,U

!

&

|

->,<->

Os operadores de precedência igual se associam à esquerda, à exceção da implicação

->, que se associa à direita. Parênteses podem ser usados para agrupar expressões. É

um erro uma expressão em uma fórmula CTL conter um operador next( ) ou retornar

um valor diferente de 0 ou 1. Se houver mais de uma declaração SPEC a especificação é a

conjunção de todas as declarações SPEC. Entretanto, cada uma das fórmulas SPEC é avali-

ada e os resultados são relatados separadamente, um por um, na ordem das declarações

SPEC no texto do programa.

104

Page 105: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

8.3.5 DECLARAÇÃO DEFINE

A fim de fazer descrições mais concisas, um símbolo pode ser associado uma expressão

geralmente usada. A sintaxe para esta declaração é:

dec1 :: "DEFINE"

atom1 ":=" expr1 ";"

atom2 ":=" expr2 ";"

...

atomn ":=" expr3 ";"

Quando o identificador que refere-se ao símbolo no lado esquerdo ocorre em uma

expressão, está substituído pela expressão no lado direito. A expressão no lado direito é

avaliada sempre em seu contexto original. As referências prévias para símbolos definidos

são permitidas, mas definições circulares não são, e o resultado é um erro.

8.3.6 MÓDULOS

Um módulo é uma coleção encapsulada de declarações. Uma vez definido, um mó-

dulo pode ser utilizado tantas vezes quanto necessário. Os módulos podem também ser

parametrizados, de modo que cada instância de módulo possa referenciar a diferentes

valores dados. Um módulo pode conter instâncias de outros módulos permitindo que

uma hierarquia estrutural seja construída. A sintaxe de um módulo é a seguinte:

module ::

"MODULE" atom [ "(" atom1 "," atom "," ... atom ")" ]

decl1

decl2

...

decl3

O átomo imediatamente seguido da palavra-chave MODULE é o nome associado ao

módulo. Os nomes de módulo são extraídos de um espaço de nomes distintos dos outros

nomes do programa, e daí podem haver um conflitos entre os nomes das variáveis e das

definições. A lista opcional dos átomos nos parênteses são os parâmetros formais do

módulo. Sempre que estes parâmetros ocorrem nas expressões dentro do módulo, são

substituídos pelos parâmetros reais que são fornecidos quando o módulo é instanciado.

105

Page 106: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

Uma instância de módulo é criada usando a declaração VAR. Esta declaração fornece

um nome para a instância, e também uma lista de parâmetros reais, que são atribuídos

aos parâmetros formais na definição do módulo. Um parâmetro real pode ser qualquer

expressão legal. É um erro ser o número de parâmetros reais estiver diferente do número

de parâmetros formais. Por exemplo, na seguinte parte do programa:

...

VAR

a : boolean;

b : foo(a)

...

MODULE foo(x)

ASSIGN

x := 1;

à variável b é atribuída o valor 1. Isto distingüe o mecanismo de chamada por referência

de um esquema de chamada por valor. Considere agora o seguinte programa:

...

DEFINE

a := 0;

VAR

b : bar(a);

...

MODULE bar(x)

DEFINE

a := 1;

y := x;

No programa acima, o valor de y é 0. Por outro lado, usando um mecanismo de chamada

por nome (call-by-name), o valor de y seria 1, desde que a fosse substituído por uma

expressão para x.

Referências prévias para os nomes dos módulos são permitidos, mas as referências

circulares não o são, e o resultado é um erro.

106

Page 107: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

8.3.7 IDENTIFICADORES

Um id, ou identificador, é uma expressão que referencia a um objeto. Os objetos são

instâncias dos módulos, variáveis, e símbolos definidos. A sintaxe de um identificador é

a seguinte:

id ::

atom

| id "." atom

| id "[" expr "]"

Um átomo identifica o objeto com esse nome como definido em uma declaração VAR

ou DEFINE. Se a identificar uma instância de um módulo, então a expressão a.b identifica

o objeto componente nomeado b da instância a. Isto é precisamente análogo a acessar

um componente de um tipo estruturado dado. Note que um parâmetro real da instância

de módulo a pode identificar uma outra instância de módulo b, permitindo que a acesse

aos componentes de b, como no exemplo seguinte:

...

VAR

a: foo(b);

b : bar(a);

...

MODULE foo(x)

DEFINE

c := x.p | x.q;

MODULE bar(x)

VAR

p : boolean;

q : boolean;

Aqui, o valor de c é o ou lógico de p e q.

Se a identifica um vetor, a expressão a[b] identifica o elemento b do vetor a. É um

erro para a expressão b avaliar um número fora dos limites subscritos do vetor a, ou um

valor simbólico.

107

Page 108: VERIFICAÇÃO DE MODELOS APLICADA AO PROJETO DE … · controladores lÓgicos programÁveis Dissertação de Mestrado apresentada ao Curso de Mestrado em Engenharia Elétrica do Instituto

8.3.8 MÓDULO MAIN

A sintaxe de um programa de SMV é

program ::

module1

module2

...

modulen

Deve sempre haver um módulo com nome main com nenhum parâmetro formal. O

módulo main é o ponto de partida para avaliação por parte do interpretador.

108