Vous êtes sur la page 1sur 144

EDINEI PERES LEGASPE

CONTROLADOR FUZZY DE CDIGO ABERTO PARA USO EM


CONTROLADORES PROGRAMVEIS

Dissertao

apresentada

Escola

Politcnica da Universidade de So
Paulo para obteno do ttulo de Mestre
em Cincias

SO PAULO
2012

EDINEI PERES LEGASPE

CONTROLADOR FUZZY DE CDIGO ABERTO PARA USO EM


CONTROLADORES PROGRAMVEIS

Dissertao

apresentada

Escola

Politcnica da Universidade de So
Paulo para obteno do ttulo de Mestre
em Cincias
Programa:
Engenharia Eltrica
rea de Concentrao:
Engenharia de Controle e Automao

Orientador:
Prof. Dr. Eduardo Mrio Dias

SO PAULO
2012

FICHA CATALOGRFICA

Legaspe, Edinei Peres


Controlador fuzzy de cdigo aberto para uso em controladores programveis / E.P. Legaspe. -- So Paulo, 2012.
144 p.
Dissertao (Mestrado) - Escola Politcnica da Universidade
de So Paulo. Departamento de Engenharia de Energia e Automao Eltricas.
1. Lgica fuzzy 2. Feedback 3. Controladores programveis
I. Universidade So Paulo. Escola Politcnica. Departamento de
Engenharia de Energia e Automao Eltricas II. t.

Aos meus pais


com todo o meu amor.

AGRADECIMENTOS
Agradeo de todo o meu corao, a Deus em primeiro lugar. Tambm quero
agradecer aos meus pais, pois sem eles eu no estaria aqui, em todos os aspectos.
Quero agradecer ao prof. Dr. Eduardo Mrio Dias que me aceitou com o seu
orientado e que me ofereceu a possibilidade de estudar nesta escola to importante
que a Escola Politcnica da USP, sinceramente, o meu eterno muito obrigado.
No posso deixar de agradecer a prof. Dra. Andrea L. B. Vieira Rodrigues e ao
prof. Msc. Joel Rocha Pinto, fundamentais na minha formao de graduao e
grandes incentivadores para que eu cursasse o programa de ps-graduao da
Escola Politcnica da USP.
Tambm quero agradecer meu chefe o Msc. Eduardo Mantovani que
praticamente um pai para mim, pois alm de me ajudar em inmeras coisas, me
liberou os dias necessrios para que eu pudesse assistir s aulas na Escola
Politcnica da USP.
Outro agradecimento muito especial ao prof. Dr. Diolino Jos dos Santos Filho,
que me auxiliou muito na elaborao de artigos, assim como no fornecimento de
dicas e informaes valiosas para a realizao deste trabalho.
E por ltimo, aos meus amigos, que participaram do meu desenvolvimento nesta
fase to importante de minha vida, quero agradecer aos doutorandos Reinaldo
Squillante Jnior e Marcos Iris Pessoa.

RESUMO

Sistemas de controle fuzzy so amplamente empregados na indstria de controle de


processos. Normalmente controlando variveis analgicas, tais como presso,
temperatura, vazo, posio e velocidade. Hoje existem diversas solues de
mercado que permitem o uso da lgica fuzzy em CPs (Controladores programveis).
Porm essas solues so proprietrias e de custo elevado. Adicionalmente existe a
norma IEC 61131-7, introduzida no ano de 2000, que especifica sistemas fuzzy em
CPs, onde a mesma define um conjunto de regras que permite a definio de
algoritmos fuzzy independente do hardware de um fabricante de CPs. A adoo da
norma IEC 61131-7 no vem acontecendo de uma maneira rpida, devido a diversos
fatores, mas principalmente, por j existirem solues proprietrias e personalizadas
fornecidas pelos fabricantes de CPs. Portanto, a contribuio deste trabalho um
mtodo de desenvolvimento de controladores fuzzy por retroalimentao usando
como soluo um sistema de cdigo aberto ou livre. Este mtodo prope o uso de
uma arquitetura de controle distribudo envolvendo PCs (Computadores pessoais) e
CPs. A construo do controlador fuzzy foi feita em linguagem Java e liberada sobre
licena de cdigo aberto, assim permitindo o seu uso de forma gratuita em uma
grande variedade de aplicaes industriais. O mtodo baseado na norma IEC
61131-7 para a aplicao da lgica fuzzy em sistemas de automao industrial.
Diversos testes foram realizados, tais como testes de mesa do software de controle,
e at em uma planta real para validao de software de controle em operao real.
Com os resultados dos testes foram obtidas diversas curvas de resposta no tempo,
que permitem a avaliao do controlador e do software de controle. Aps a
execuo dos testes e verificado o comportamento obtido pelas curvas, foi
constatada a compatibilidade do software construdo com a norma IEC 61131-7,
assim permitindo o seu uso em outras aplicaes.

Palavras-chave: Lgica fuzzy, Retroalimentao, IEC 61131-7, Cdigo livre,


Controladores programveis.

ABSTRACT

Fuzzy control systems are largely applied at the processes control industry, usually
controlling analogic variables, such as, pressure, temperature, outflow, position and
speed. Nowadays, there are several market solutions which allow the Fuzzy Logic
usage in PLCs (Programmable Logic Controllers), therefore, these solutions are
proprietary and have a high cost. Additionally, there is the IEC 61131-7 standard,
introduced in 2000, which specifies Fuzzy systems in PLCs. It defines a set of rules
which allow the Fuzzy definition regardless of the hardware from the PLCs
manufacturer. The adoption of the IEC 61131-7 standard is not happening effectively,
due to many factors, but mainly because there are already proprietary and
customized solutions provided by the PLCs manufacturers.
The contribution provided by this report, is a method of Fuzzy control
development by feedback using as solution, a free or open source code system. This
method proposes the usage of a distributed control architecture involving both PCs
(Personal Computers) and PLCs.
The building of the Fuzzy controller was made in Java language and released
under open source code license, allowing its use to be free in a great variety of
industrial applications. The method is based on the IEC 61131-7 standard for the
Fuzzy logic application in industrial automation.
Several tests were performed, such as, software control table test, and even in a
real plant for control software validation in a real operation. With the tests results
were obtained quite a few response curves at time, which allow the evaluation of the
controller and of the control software. After the tests executions and the verifying of
the behavior obtained by the curves, it was stated the compatibility of the built
software with the IEC 61131-7 standard, admitting it to be used in other applications.

Keywords: Fuzzy logic, Feedback, IEC 61131-7, Open Source, Programmable logic
controllers .

LISTA DE FIGURAS
Figura 2.1 Lei de Ampre (adaptado de Del Toro; 1994). ...................................... 23
Figura 2.2 Corrente alternada (adaptado de PINTO, 2011). .................................. 25
Figura 2.3 Sistema trifsico (WEG, 2009). ............................................................. 26
Figura 2.4 Enrolamento trifsico (WEG, 2009). ...................................................... 27
Figura 2.5 Campo magntico girante (FONTE, 2012). ........................................... 27
Figura 2.6 Motor e suas partes (JUNIFER, 2012). ................................................. 28
Figura 2.6 Tipos de Motores (PINTO, 2011). ......................................................... 29
Figura 2.6 Gerao da onda senoidal (SIEMENS, 2011). ...................................... 31
Figura 2.7 Inversor de frequncia Siemens M440 (SIEMENS, 2011). ................... 31
Figura 2.8 CP Siemens s200 e mdulos de expanso (SIEMENS, 2009). ............ 33
Figura 2.9 Exemplo de encoder incremental (AUTONICS, 2012). ......................... 34
Figura 2.10 Funcionamento do encoder (AUTONICS, 2012). ................................ 34
Figura 2.11 Diagrama de blocos de um sistema de controle (OGATA, 2010). ....... 35
Figura 2.12 reas da IA (adaptada de FOGEL; FUKUDA; GUAN, 1999). ............. 38
Figura 2.12 reas da IC ......................................................................................... 39
Figura 2.13 Comparao conjuntos clssicos vs. Conjuntos nebulosos ................ 40
Figura 2.14 Funo de pertinncia altura formato grfico ...................................... 41
Figura 2.15 Controlador fuzzy bsico (Adaptado de IEC 61131-7, 2000) .............. 42
Figura 2.16 Exemplos de funo de pertinncia .................................................... 43
Figura 2.17 Operador mnimo ou conector AND lgico ....................................... 44
Figura 2.18 Operador mximo ou conector OR lgico ......................................... 44
Figura 2.19 Operador negao ou conector NOT lgico ..................................... 45
Figura 2.20 Regras de inferncias de Mamdani (adaptado de SIMES; SHAW,
2007). ........................................................................................................................ 47
Figura 2.21 Exemplo da aplicao do mtodo de Mamdani (LEE,1990b) .............. 48
Figura 2.22 Exemplo da sada com centro de gravidade (IEC 61131-7, 2000) ...... 51
Figura 2.22 Exemplo da sada com mais esquerda [LM] e mais direita [RM]
(IEC 61131-7, 2000) .................................................................................................. 51
Figura 2.23 Exemplo comparativo entre centro de gravidade [GOC] e centro de
rea [COA] (IEC 61131-7, 2000) ............................................................................... 52
Figura 2.24 Exemplo de centro de gravidade para elementos simples [GOCS] (IEC
61131-7, 2000) .......................................................................................................... 53

Figura 2.25 Diagrama de blocos do controlador fuzzy por retroalimentao.......... 54


Figura 2.26 Funo de pertinncia da varivel Erro (Adaptado de POPA el al,
2008) ......................................................................................................................... 56
Figura 2.27 Controlador fuzzy por retroalimentao proposto pela norma IEC
61131-7 (IEC 61131-7, 2001) .................................................................................... 57
Figura 2.28 Sintonia por mapeamento de escalas (Adaptado de LEE,1990a) ....... 59
Figura 2.28 Superfcie de regras fuzzy ................................................................... 61
Figura 2.30 Exemplo do uso do cdigo fuzzy em FDB IEC 61131-3 (IEC 61131-7,
2000). ........................................................................................................................ 63
Figura 2.31 Exemplo de cdigo FCL comentado (IEC 61131-7, 2000) .................. 65
Figura 2.32 Sistema fuzzy com entrada em degrau ............................................... 69
Figura 2.33 Sistema fuzzy com entrada em rampa ................................................ 69
Figura 2.34 Exemplo de compilador adaptado de AHO et al. (2006). .................... 71
Figura 2.35 Exemplo de autmato adaptado de AHO et al. (2006). ....................... 73
Figura 2.36 Exemplo de compilador adaptado de AHO et al. (2006). .................... 75
Figura 2.37 Exemplo de implementao de autmato ........................................... 76
Figura 2.38 Exemplo de gramtica adaptado de RAMOS et al. (2009) .................. 78
Figura 2.39 Exemplo de derivao adaptado de RAMOS et al. (2009) .................. 78
.................................................................................................................................. 79
Figura 2.40 Exemplo de gramtica sensvel ao contexto adaptado de AHO et al.
(2006) ........................................................................................................................ 79
Figura 2.42 Gramtica no ambgua adaptada (GRUNE, 2001) ............................ 80
Figura 2.43 Hierarquia das classes gramaticais (APPEL, 1999) ............................ 84
Figura 2.44 Regra de produo para pseudocdigo (adaptado de AHO et al., 2006)
.................................................................................................................................. 85
Figura 2.45 Ilustrao de semntica (adaptado de AHO et al., 2006) .................... 86
Figura 2.44 Exemplo de condicional ...................................................................... 88
Figura 2.47 Anlise sinttica .................................................................................. 89
Figura 2.48 Gerao de cdigo de um compilador................................................. 89
Figura 2.49 Interpretao de cdigo ....................................................................... 90
Figura 2.50 Mquina de pilha ................................................................................. 91
Figura 2.52 Modelo ISO OSI (adaptado de TANENBAUM et al., 2010) ................. 92
Figura 3.1 Arquitetura do sistema de controle proposto ......................................... 98
Figura 3.2 Programa fuzzy monitor em regras fuzzy ............................................ 100

Figura 3.3 Programa fuzzy monitor em visualizao do controle ......................... 101


Figura 3.4 Fluxo de execuo do protocolo de camada quatro ............................ 104
Figura 3.5 Fluxo de execuo do protocolo de camada um ................................. 107
Figura 3.6 Implementao da tabela de varredura ............................................... 110
Figura 3.7 Autmato finito implementado ............................................................. 110
Figura 3.8 Gramtica do interpretador ................................................................. 112
Figura 3.8 Gramtica desenvolvida para a FCL ................................................... 112
Figura 3.9 Trecho da implementao da anlise descendente recursiva ............. 113
Figura 3.10 Estrutura TVARIABLE ....................................................................... 114
Figura 3.11 Lista de objetos TIF ........................................................................ 115
Figura 3.12 Classe TIF....................................................................................... 115
Figura 3.13 Exemplo de objeto TIF na memria ................................................ 116
Figura 3.14 Arquitetura final de software .............................................................. 117
Figura 3.15 Esquema de ligao do prottipo ...................................................... 118
Figura 3.16 Bancada de testes montada .............................................................. 119
Figura 3.17 Detalhe da bancada de testes ........................................................... 120
Figura 4.1 Funo de pertinncia caso um .......................................................... 121
Figura 4.2 Funo de pertinncia caso dois ......................................................... 121
Figura 4.3 Base de regras para os casos um e dois ............................................ 122
Figura 4.4 script FCL do caso um ........................................................................ 122
Figura 4.5 Superfcie de regras para o caso um .................................................. 123
Figura 4.6 Superfcie de regras para o caso dois ................................................. 123
Figura 4.7 Curva de resposta do setpoint do caso um ......................................... 124
Figura 4.8 Curva de resposta do setpoint do caso dois ....................................... 124
Figura 4.9 Caso trs antes do distrbio ................................................................ 125
Figura 4.10 Caso trs depois do distrbio ............................................................ 126
Figura 4.11 Pertinncia do caso quatro ................................................................ 126
Figura 4.12 Script FCL para o caso quatro .......................................................... 127
Figura 4.13 Superfcie de regras fuzzy para o caso quatro .................................. 128
Figura 4.14 Curva de resposta do setpoint do caso quatro .................................. 128

LISTA DE TABELAS
Tabela 1.1 Classificao das linguagens de programao. ................................... 18
Tabela 2.1 Erros de regime para tipos de sistemas. .............................................. 37
Tabela 2.2 Regras propostas demostrao............................................................ 59
Tabela 2.3 Regras propostas completas. ............................................................... 60
Tabela 2.4 Mtodos de acumulao. ..................................................................... 67
Tabela 2.5 Mtodos de acumulao. ..................................................................... 67
Tabela 2.6 Momento de lanamento das linguagens de programao. ................. 71
Tabela 2.7 Fases de um compilador/interpretador. ................................................ 72
Tabela 2.8 Tabela de transio do automato da figura 2.35. ................................. 74
Tabela 3.1 Diagrama de bytes do protocolo ......................................................... 102
Tabela 3.2 Comandos protocolo camada 1 .......................................................... 103
Tabela 3.3 Mtodos da classe CPSiemens .......................................................... 106
Tabela 3.4 Lista de TOKENS ............................................................................... 109
Tabela 3.5 Lista de equipamentos e software utilizados ...................................... 118
Tabela 5.1 Lista de pases que efetuaram o download do software ..................... 132

LISTA DE ABREVIATURAS E SIGLAS


AST

Abstract Syntax Tree

COA

Centre of Area

COG

Centre of Gravity

CP

Controlador Programvel

CV

Control Variable

Erro

FBD

Function Block Diagram

FCL

Fuzzy Control Language

GLC

Gramtica Livre de Contexto

GOGS

Centre of Gravity for Singletons

IA

Inteligncia Artificial

IC

Inteligncia Computacional

ID

Identificador

IEC

International Electrotechnical Commission

IHM

Interface Homem-Mquina

IL

Instruction List

IP

Internet Protocol

ISO

International Organization for Standardization

JVM

Java Virtual Machine

LD

Ladder Diagram

LL

Left-to-right parse and Leftmost derivation

LM

Left Most Maximum

OSI

Open Systems Interconnection

PC

Personal Computer

PLC

Programmable Logic Controller

PPI

Point to Point Interface

PV

Process Variable

PWM

Pulse Width Module

RAM

Random Access Memory

RM

Right Most Maximum

SFC

Sequential Function Chart

SP

Setpoint

ST

Structured Text

TCP

Transmission Control Protocol

Sada do Controlador

SUMRIO
1

INTRODUO ................................................................................................... 16
1.1

OBJETIVO ................................................................................................... 19

1.2

MOTIVAO ................................................................................................ 19

1.3

METODOLOGIA DA PESQUISA E ESTRUTURA DO TRABALHO ............ 20

REVISO DA LITERATURA ............................................................................. 22


2.1

MOTORES DE INDUO............................................................................ 22

2.1.1

Principio de induo e do campo magntico ......................................... 22

2.1.2

Corrente alternada ................................................................................. 24

2.1.3

Campo magntico girante ...................................................................... 26

2.1.4

Motor de induo trifsico ...................................................................... 28

2.2

INVERSORES DE FREQUNCIA ............................................................... 30

2.3

CONTROLADOR PROGRAMVEL ............................................................. 32

2.3.1
2.4

TPICOS DE TEORIA DE CONTROLE CLSSICO ................................... 35

2.5

LGICA FUZZY ........................................................................................... 38

2.5.1

Nmeros fuzzy e a teoria de conjuntos fuzzy ........................................ 40

2.5.2

Controlador fuzzy................................................................................... 42

2.5.3

Operaes sobre os conjuntos fuzzy ..................................................... 43

2.5.4

Bases de regras..................................................................................... 45

2.5.5

Mtodo de inferncia ............................................................................. 46

2.5.6

Mtodos de defuzzyficao ................................................................... 50

2.5.7

Controle fuzzy por retroalimentao ...................................................... 53

2.5.8

Base de conhecimento para o controle ................................................. 54

2.5.9

Norma IEC 61131-7 ............................................................................... 61

2.5.10
2.6

Erro de regime em sistemas retroalimentados fuzzy .......................... 68

CONSTRUO DE LINGUAGENS ARTIFICIAIS ........................................ 70

2.6.1

Anlise lxica ......................................................................................... 73

2.6.2

Anlise sinttica ..................................................................................... 77

2.6.3

Anlise semntica.................................................................................. 86

2.6.4

Interpretao de cdigo ......................................................................... 87

2.7
3

Sensores e atuadores ............................................................................ 33

REDES DE COMPUTADORES ................................................................... 92

PROPOSTA DO TRABALHO ............................................................................ 96


3.1

CONSTRUO DO SOFTWARE ................................................................ 96

3.1.1

Programa Fuzzy monitor ....................................................................... 99

3.1.2
3.2

Programa FuzzyPLC ........................................................................... 102

Prottipo de testes ..................................................................................... 117

RESULTADOS OBTIDOS ............................................................................... 121

CONCLUSES ................................................................................................ 130

REFERNCIAS BIBLIOGRFICAS ....................................................................... 133


Anexo a .................................................................................................................. 138
Anexo b .................................................................................................................. 141

16

1 INTRODUO
O estudo da teoria de controle e da automao fundamental para o
dimensionamento de equipamentos e formas controle a serem aplicado na indstria
(FRANKLIN, 2009; KUO, 2009).

A teoria clssica de controle prov meios para clculos e dimensionamentos dos


controles a serem usados na indstria (OGATA, 2009). O grande problema desses
sistemas, que os mesmos geram equaes extremamente complexas para poder
efetuar o controle dos processos (DORF; BISHOP, 2010).

O ser humano sempre desejou construir uma mquina que possa resolver os
problemas de forma inteligente, como outro ser humano o faria (SIMES; SHAW,
2007).

Outro desejo, e este que se encontra na indstria, que o controle seja feito de
forma automtica e com alta preciso (FRANKLIN, 2009; DORF; BISHOP, 2010).

Para preencher essa necessidade uma possvel soluo lgica fuzzy. Com a
lgica fuzzy possvel colocar o conhecimento de uma pessoa em um sistema
computacional, fazendo assim a mquina pensar com as pessoas (ZADEH, 1984).
E assim a mquina ser controlada de forma inteligente.

Segundo ZADEH (1996) a lgica fuzzy uma computao baseada em


palavras, logo a insero do conhecimento se d na forma de palavras, a mesma
forma que um ser humano se comunica com outros, seja pela fala ou pela escrita.

Portanto o desenvolvimento de controladores fuzzy para uso em processos


industriais facilitado, isto porque a sua construo se d na forma de comunicao
dos seres humanos, ou seja, feita por palavras.

17

O desenvolvimento de um sistema de controle, utilizando a lgica fuzzy, pode


reduzir a complexidade de um sistema a ser controlado (TAO, C.W.; TAUR 2000)
(SIMES; SHAW, 2007).

Normalmente a complexidade do sistema a ser controlado atribuda a


caractersticas da planta a ser controlada, as mais comuns so: no linearidades,
tempo morto e mudanas nas constantes de tempo da planta em tempo de
execuo (FRANKLIN, 2009).

Portanto a lgica fuzzy pode se tornar uma excelente opo para o projetista no
momento em que se desenvolve um sistema de controle para um determinado
processo industrial.

Uma forma de se desenvolver sistemas de controle aplicados indstria


atravs dos controladores programveis (CPs) (MIYAGI, 2007) ( MICHELL, 2007).

A norma IEC 61131-3, define as linguagens de programao para os


controladores programveis. As linguagens so: Diagrama Ladder (LD), Diagrama
de bloco de funes (FDB), Diagrama de sequenciamento de funes (SFC), Lista
de instrues (IL) e Texto estruturado (ST).

Na tabela 1.1 apresentada a classificao das linguagens definidas pela norma


IEC 61131-3.

18

Tabela 1.1 Classificao das linguagens de programao.


Fonte: Adaptado de IEC 61131-3 (2003)
Linguagem
Diagrama Ladder (LD)
Diagrama bloco de
funes (FDB)
Diagrama de
sequenciamento de
funes (SFC)
Lista de instrues
Texto estruturado

Tipo

Aplicaes / Comentrios

Grfica

Diagrama de lgica de contato. Indicado para


o tratamento de condies booleanas.

Grfica

Tratamento
de
condies
Descreve funes a partir
elementares.

Grfica

Similar ao FDB, porm indicada para a


construo de mquinas de estado.

Texto

Linguagem de baixo nvel similar linguagem


Assembly.

Texto

Linguagem de alto nvel similar s linguagens


C e Pascal.

booleanas.
de blocos

No entanto, nenhuma dessas linguagens prpria ou mesmo possui algum


mecanismo direto para descrever a lgica fuzzy em sistemas de controle baseados
em CPs.

Observada essa deficincia, a subcomisso 65B da IEC, responsvel pelas


especificaes em controladores programveis, desenvolveu a padronizao da
lgica fuzzy para o mesmo. Essa especificao conhecida como IEC 61131-7 (IEC
61131-7, 2000).

O uso da norma IEC 61131-7 em CPs no est ocorrendo da mesma forma que
a IEC 61131-3. A lenta adoo da lgica fuzzy ocorre por limitaes do hardware do
fabricante do CP e pela baixa qualificao de profissionais de automao em geral
(MA; TAO 2009).

Hoje existe um esforo do mercado no sentido de potencializar o uso da lgica


fuzzy em CPs. Entretanto essas solues ou produtos que fazem o uso da lgica
fuzzy em CP so de cdigo proprietrio e tem um custo elevado, dificultando o
entendimento do processo de sntese de controladores e em quais aspectos a norma
IEC 61131-7 est sendo contemplada (FUZZYTECH, 2012) (ROCKWELL,2012)
(AUTOMATION, 2012).

19

Dificuldades como estas apresentadas, atrapalham o uso da lgica fuzzy em


ambientes industriais e tambm o seu ensino em laboratrios em cursos de
engenharia.
1.1

OBJETIVO

Este trabalho tem o objetivo de propor um mtodo que permita a construo de


um controlador fuzzy retroalimentado. Como resultado final, obtm-se um software
de controle fuzzy.

Esse controlador/software compatvel com a norma IEC 61131-7 e seu uso


para CPs. importante destacar que a soluo proposta adequa-se a uma
arquitetura distribuda envolvendo computadores pessoais (PC).

Para edio e insero de regras e tambm para o monitoramento das aes de


controle, foi desenvolvida uma interface homem-mquina (IHM), que permite o ajuste
do controlador e o monitoramento do controle em tempo real.

O software de controle fuzzy distribudo na forma de cdigo aberto, e


implementado em linguagem JAVA. Portanto, outras pessoas ou instituies podem
utilizar o mesmo sem custo (tanto o sistema executvel como as suas fontes
originais), pois o mesmo se encontra disponvel para download gratuito (LEGASPE,
2012).
1.2

MOTIVAO

A principal motivao para o desenvolvimento deste trabalho se deu devido


falta de ferramentas de trabalho para o uso da lgica fuzzy em sistemas de
automao e controle que fossem gratuitas ou de cdigo aberto.

Existem diversos usos para ferramentas deste tipo seja para um ambiente
industrial ou mesmo acadmico. Isto devido em grande parte, ao custo do software

20

ser zero e flexibilidade do uso da norma IEC 61131-7 para a construo de


algoritmos fuzzy.

Hoje o autor utiliza-se do software de controle desenvolvido em suas aulas de


controle e automao na Faculdade de Engenharia de Sorocaba (FACENS).
1.3

METODOLOGIA DA PESQUISA E ESTRUTURA DO TRABALHO

A metodologia deste trabalho baseia-se em uma pesquisa explanatria. Neste


tipo de pesquisa so feitas pesquisas bibliogrficas junto a um estudo de caso, desta
forma objetivando o estudo de um fenmeno ou processo (REY, 2011).

Sero apresentados os tpicos relevantes teoria aplicada (pesquisa


bibliogrfica), bem como os resultados obtidos a partir de um prottipo de testes
(estudo de caso).

O prottipo de teste basicamente composto por um CP, um computador PC


executando o software de controle fuzzy, um inversor de frequncia e um motor de
corrente alternada, configurando um sistema de controle de velocidade.
As anlises dos dados obtidos pelo prottipo de testes sero feitas atravs de curvas
de resposta velocidade Vs. tempo, possibilitando-se assim, analisar a eficincia do
controlador fuzzy.

No captulo dois apresentada a reviso da literatura para dar embasamento


terico e tambm para dar suporte parte experimental. Dentre os principais itens
estudados

destacam-se:

Motores,

inversores

de

frequncia,

controladores

programveis, teoria de controle, lgica fuzzy, teoria de compiladores e


interpretadores e redes de computadores.

No captulo trs apresentado o tpico proposta do trabalho, feita a descrio


da implementao do software de controle fuzzy e o prottipo de testes. A

21

montagem experimental importante para validar o prprio controle fuzzy a partir da


coleta das curvas de resposta.

No captulo quatro apresentado o tpico resultados obtidos, o qual apresentar


as respostas obtidas do prottipo, bem como comentrio a respeito dos resultados.

No captulo cinco apresentada a concluso deste trabalho.

22

2 REVISO DA LITERATURA
O objetivo desse captulo apresentar tpicos tericos necessrios para se
construir um controlador fuzzy por retroalimentao.

No primeiro item so apresentados os motores de induo, que o elemento a


ser controlado no prottipo de testes.
2.1

MOTORES DE INDUO

Motores eltricos de induo so mecanismos que convertem a energia eltrica


em energia mecnica (KINGSLEY, 2006; DEL TORO, 1994).
Os motores de induo envolvem diversos conceitos, tais como: o princpio da
induo, o campo magntico e a corrente alternada dentre outros itens.

Os prximos tpicos tm o objetivo de introduzir esses conceitos.


2.1.1 Principio de induo e do campo magntico
O fenmeno da gerao de movimentao em motores de corrente alternada
est ligada ao princpio de induo e do campo magntico.

O princpio da induo est ligado lei de Faraday-Neumann-Lenz, tambm


conhecida como lei da induo eletromagntica ou simplesmente Lei de Faraday.
Essa lei afirma que a variao de fluxo magntico em um corpo fechado
ferromagntico no tempo, provoca uma tenso induzida (KINGSLEY, 2006).

Na equao 2.1, pode-se observar a equao que rege esse fenmeno da induo
magntica, conhecida como: Lei de Faraday.

V fem

(2.1)

23

Conforme descrito na equao 2.1, para se gerar uma tenso induzida (Vfem)
necessria uma variao de fluxo magntico ( ) no tempo. Tambm est descrito na
parte da equao 1, o termo campo magntico (B) que a razo do fluxo magntico
() pela rea do corpo ferromagntico (S).

Uma forma de gerar um fluxo magntico ( ) atravs de uma corrente eltrica


que passa por um fio condutor. Esse fenmeno chama-se lei de Ampre.
(KINGSLEY, 2006).

Na figura 2.1 possvel visualizar a corrente (I) passando no material condutor e


ento gerando o campo magntico (B) em torno do material condutor.

Figura 2.1 Lei de Ampre (adaptado de Del Toro; 1994).


Matematicamente a lei de Ampre relaciona a corrente eltrica com a integral
fechada do campo magntico pelo elemento infinitesimal do tamanho do corpo.
(PINTO, 2011) (KINGSLEY, 2006) (DEL TORO,1994). Esta relao pode ser mais
bem observada na equao 2.2.

B l

(2.2)

Onde 0 a constante permeabilidade magntica do vcuo (igual a 4 107) e I


a corrente eltrica. Outra relao importante do campo magntico (B) com corrente
eltrica (I) se d na lei de Biot-Savart. (KINGSLEY, 2006).

Na equao 2.3, observado um caso j deduzido da lei de Biot-Savart para um


fio retilneo condutor, o mesmo da figura 2.1.

.I
B
2R

(2.3)

24

Onde R o raio do fio e a constante permeabilidade magntica do material.


Outra relao importante e direta a intensidade do campo magntico (H) que
dado pela equao 2.4.

(2.4)

Como possvel observar nas equaes descritas em 2.2 e 2.3 contra a


equao 2.1, a variao da corrente eltrica gera uma variao de campo
magntico. A variao do campo magntico no tempo gera uma tenso induzida.
Com esses princpios, so construdas diversas mquinas eltricas, destacando-se
os transformadores e os motores de induo (PINTO, 2011) (KINGSLEY, 2006)
(DEL TORO,1994).

Pelo contedo apresentado, possvel observar que a variao do campo


magntico no tempo o que produz uma tenso induzida (Vfem), definido pela Lei de
Faraday. A aplicao de uma corrente eltrica em um corpo condutor ir gerar um
campo magntico em torno deste, baseado nas leis de Ampre e de Biot-Savart.

Uma forma de produzir a variao do fluxo magntico atravs da corrente


alternada apresentada no tpico 2.1.2
2.1.2 Corrente alternada
Corrente alternada uma corrente eltrica que altera o seu sentido ao longo do
tempo, trabalhando em uma frequncia pr-estabelecida. (DEL TORO, 1994)

Na figura 2.2, possvel observar a variao da corrente ao longo do tempo.

25

Figura 2.2 Corrente alternada (adaptado de PINTO, 2011).


Conforme visto na figura 2.2, a forma que comea no tempo zero e termina em
T, caracteriza o perodo (T). O inverso desde tempo (T) chama-se frequncia de
trabalho (f). As redes eltricas brasileiras operaram na frequncia de 60 Hz. (PINTO,
2011)

A rede eltrica distribuda em fases, portanto geralmente encontram-se nas


residncias os sistemas monofsicos e bifsicos. No entanto em aplicaes
industriais os sistemas trifsicos so mais utilizados. (PINTO, 2011) (WEG, 2009)

O sistema trifsico formado pela associao de trs sistemas monofsicos de


tenses U1, U2 e U3 as quais, a defasagem entre elas de 120, ou seja, os
atrasos de U2 em relao a U1, de U3 em relao a U2 e de U1 em relao a U3
devem se iguais a 120. (WEG, 2009)

Na figura 2.3 apresentado o sistema trifsico e a distribuio das trs correntes


defasadas 120 de cada uma.

26

Figura 2.3 Sistema trifsico (WEG, 2009).


Pelo contedo apresentado observa-se que a corrente alternada ir variar ao
longo do tempo. Baseado na lei de Biot-Savart, essa variao ir gerar um campo
magntico. Esse campo magntico dentro da parte do motor chamado estator
chamado de campo magntico girante. O campo magntico girante com suas
implicaes apresentado no tpico 2.1.3.
2.1.3 Campo magntico girante
Quando uma bobina percorrida por uma corrente eltrica, criado um campo
magntico dirigido conforme o eixo da bobina, e de valor proporcional corrente
(WEG, 2009).

Na figura 2.4 indicado um enrolamento trifsico, que composto por trs


monofsicos espaados entre si 120. Se este enrolamento for alimentado por um
sistema trifsico, as correntes I1, I2 e I3 criaro, do mesmo modo, os seus prprios
campos magnticos H1, H2 e H3. Estes campos so espaados entre si 120. Alm
disso, como so proporcionais s respectivas correntes, os campos sero defasados
no tempo tambm de 120 entre si e podem ser representados por um grfico igual
ao da figura 7. O campo total H resultante, a cada instante, ser igual soma grfica
dos trs campos H1, H2 e H3 naquele instante. (WEG, 2009)

27

Figura 2.4 Enrolamento trifsico (WEG, 2009).


Na figura 2.5, esto representados os trs campos magnticos induzidos pelas
trs correntes em cinco instantes sucessivos e indicando sua soma vetorial total a
cada instante.

Figura 2.5 Campo magntico girante (FONTE, 2012).


Pelo contedo apresentado nesse tpico, observado o campo magntico
girante produzido por um sistema de correntes trifsicas. O campo magntico girante
total a soma vetorial dos trs campos magnticos, gerados pelas correntes I1, I2 e
I3.

Esse campo magntico girante total ir influenciar o rotor, que um elemento


importante dentro do motor de induo. O motor de induo e seus componentes
so apresentados no tpico 2.1.4.

28

2.1.4 Motor de induo trifsico


Basicamente o motor de induo constitudo de duas partes: estator e rotor. O
estator basicamente um conjunto de enrolamentos que, quando acionado por
correntes alternadas, tem a funo de gerar um campo magntico girante. J o rotor
por estar dentro da estrutura do estator submetido ao campo magntico girante.
Este campo magntico atuando no rotor induz tenses nas barras do rotor, as quais
geram correntes, e consequentemente, um campo no rotor, de polaridade oposta
do campo girante. O rotor tende a acompanhar a rotao deste campo,

ento

desenvolvendo um conjugado1 fazendo com que o motor gire. (PINTO, 2011) (WEG,
2009; KINGSLEY, 2006).

Na figura 2.6, exibido o motor com suas partes constituintes.

Figura 2.6 Motor e suas partes (JUNIFER, 2012).

Mesmo que torque

29

O motor de induo trifsico de corrente alternada tambm conhecido como


mquina assncrona, o mesmo tem esse nome porque existe uma diferena da
velocidade do campo magntico girante em relao a velocidade real do motor.
(PINTO, 2011)

Na figura 2.7 possvel visualizar os tipos de motores existentes.

Figura 2.6 Tipos de Motores (PINTO, 2011).


Na maioria das aplicaes geralmente se utilizam dos motores de induo com
rotor do tipo gaiola de esquilo por sua robustez, custo e baixa manuteno (PINTO,
2011).

Essa diferena entre a velocidade do campo magntico girante em relao


velocidade real, para a carga nominal, chamada de escorregamento (s) (DEL
TORO, 1994).

Na equao 2.5 demonstrada a equao do escorregamento (s).

30

s
Variaes

de

carga

Vel CampoGirante Vel Re al

(2.5)

Vel CampoGirante
acoplada

ao

eixo

do

motor

iro

desenvolver

escorregamentos diferentes, logo, velocidades diferentes. (DEL TORO, 1994).

A velocidade (n) de um motor trifsico expressa em termos da frequncia(f), do


escorregamento (s), e do nmero de plos existentes no motor (p) (KINGSLEY,
2006).

Na equao 2.6, possvel ver a relao acima descrita.

120. f .(1 s)
p

(2.6)

Para se alterar a velocidade necessrio modificar os valores da equao.


Como o nmero de plos (p) uma caracterstica construtiva do motor e, portanto
fixa, e o escorregamento um fenmeno que ocorre sobre o motor; ento os
mesmos no podem ser parmetros do controle. Ficando assim a modificao da
frequncia da corrente eltrica, sendo o parmetro de controle da velocidade
(KINGSLEY, 2006).

Nesse tpico foi apresentado o motor de induo, e o ponto chave do controle


de velocidade a frequncia aplicada ao mesmo. Para a gerao de frequncias
variveis necessrio um equipamento chamado inversor de frequncia. A
discusso do equipamento junto com o seu princpio de funcionamento, so ambos
demonstrados no tpico 2.2.
2.2

INVERSORES DE FREQUNCIA

Os inversores de frequncia, tambm conhecidos como conversores de


frequncia so dispositivos eletrnicos capazes de gerar tenses e frequncias
variveis com o objetivo de controlar a velocidade de um motor trifsico (KINGSLEY,
2006) (SIEMENS, 1994).

31

O princpio bsico de funcionamento gerar um conjunto de ondas quadradas


que simule uma senoidal, isso pode ser mais bem observado na figura 2.6.

Figura 2.6 Gerao da onda senoidal (SIEMENS, 2011).


A tcnica apresentada na figura 2.6 chamada de PWM, que conhecida como
modulao por largura de pulso. O objetivo dessa tcnica regular a largura do
pulso quadrado e assim transmitir mais ou menos potncia no sinal atravs dessa
modulao (SIEMENS, 2011).

Basicamente os inversores de frequncia reconstroem a forma de onda senoidal


de sada, que ser acoplada ao motor de induo. A reconstruo do sinal tem o
objetivo de controlar a frequncia de sinal trifsico (ou seja, trs sinais de fase
similar figura 2.6, mas deslocados 120 uma da outra), e assim controlando a
velocidade do motor atravs da equao 2.6. Na figura 2.7 apresentado o inversor
de frequncia Siemens M440.

Figura 2.7 Inversor de frequncia Siemens M440 (SIEMENS, 2011).

32

O Inversor de frequncia normalmente no efetua controles sobre os motores,


que apenas trabalham simplesmente como atuadores no processo. Para efetuar
controles, normalmente so usados os controladores programveis (CPs) para
acionar os inversores de frequncia, assim regulando a velocidade de um
determinado processo. Os controladores programveis (CPs) so abordados no
tpico 2.3.
2.3

CONTROLADOR PROGRAMVEL

O controlador programvel (CP), tambm conhecido na lngua inglesa como


PLC, basicamente um computador industrial, cujo objetivo o de controlar
processos industriais (MIYAGI, 2007; MICHELL, 2007; CASTRUCCI, MORAES,
2001).

Um CP o controlador indicado para lidar com sistemas caracterizados por


eventos discretos, ou seja, com processos em que as variveis assumem valores
zero ou um (ou variveis ditas digitais, ou seja, que s assumem valores dentro de
um conjunto finito). Podem ainda lidar com variveis analgicas definidas por
intervalos de valores de corrente ou tenso eltrica. As entradas e/ou sadas digitais
so os elementos discretos, as entradas e/ou sadas analgicas so os elementos
variveis, entre valores conhecidos de tenso ou corrente (MICHELL, 2007).

O CP pode ser constitudo de mdulos de expanso, sendo que cada deles


desempenha funcionalidades diferentes como entradas e sadas digitais bem como
entradas e sadas analgicas. (MICHELL, 2007) (CASTRUCCI, MORAES, 2001).

Na figura 2.8, exibido o CP SIEMENS S200 junto com seus mdulos de


expanso.

33

Figura 2.8 CP Siemens s200 e mdulos de expanso (SIEMENS, 2009).


Por ser um computador industrial, o CP opera de forma similar aos
computadores pessoais, no quesito de execuo de programas. O mesmo executa
um programa armazenado em sua memria (MICHELL, 2007).

Este programa pode ter o objetivo de controlar um processo especfico de uma


mquina executora de uma operao dentro de uma indstria ou at mesmo de
controlar e monitorar uma srie de processos de manufatura nessa mesma indstria
(MIYAGI, 2007) (CASTRUCCI, MORAES, 2001).

Nos mdulos de expanso existem os dois tipos de entradas, que podem ser
digitais ou analgicas. Nessas entradas , normalmente, onde se conectam os
sensores. J nos mdulos de expanso de sada, so geralmente conectados os
atuadores. Os sensores e atuadores so comentados no tpico 2.3.1 deste trabalho.
2.3.1 Sensores e atuadores
Sensores so dispositivos que medem valores de grandezas fsicas, tais como:
nvel, temperatura, espao, velocidade [...] (MICHELL, 2007).

Existem diversos tipos de sensores para inmeras aplicaes, porm para


medies de velocidade ou posio, normalmente se utiliza o sensor chamado
encoder.

Na figura 2.9 exibido um exemplo de encoder incremental.

34

Figura 2.9 Exemplo de encoder incremental (AUTONICS, 2012).


O sinal que o sensor encoder gera basicamente uma sequncia de pulsos. A
quantidade de pulsos proporcional posio desenvolvida. O princpio do
funcionamento do encoder a existncia de um LED emissor antes de um disco
rotativo, disco esse que possui orifcios os quais permitem que a luz do LED passe
hora sim e hora no. Quando o disco gira, o circuito de foto sensor registra que o
disco girou e contabiliza quantas vezes ocorreu a incidncia do LED no foto sensor
(MICHELL, 2007).

Os orifcios so separados de maneira regular em torno do disco. A quantidade


de orifcios determina a quantidade de pulsos (MICHELL, 2007).

Por exemplo, existem encoders de 1200 pulsos por volta, se o sensor gerar 2400
pulsos significa que o mesmo executou duas voltas.

Na figura 2.10 demonstrado o funcionamento do encoder.

Figura 2.10 Funcionamento do encoder (AUTONICS, 2012).

35

Atuadores so dispositivos com elementos que provocam mudanas nos


processos industriais, tais como: aquecimento, resfriamento, movimento [...]
(MICHELL, 2007).

Nesse contexto o inversor de frequncia um atuador no processo.

No contedo demostrado at o momento, todos os elementos fsicos


necessrios para se efetuar um controle de velocidade em um motor de induo
foram apresentados, so eles: sensor, atuador, controlador e motor. Porm o
controlador deve ser programado. Essa programao deve utilizar tpicos da teoria
de controle (retroalimentao), para monitorar a varivel de erro e fazer a mesma
tender ao valor de zero, em outras palavras, estabilizar-se em um ponto desejado ou
simplesmente

setpoint.

Alguns desses tpicos de

controle

clssico

so

apresentados no item 2.4 deste trabalho.


2.4

TPICOS DE TEORIA DE CONTROLE CLSSICO

Segundo OGATA, (2010, p.23): Um sistema de controle pode ter vrios


componentes. Para mostrar as funes sendo executadas em cada um desses
componentes, na engenharia de controle, normalmente se utiliza um diagrama
chamado diagrama de blocos.

Na figura 2.11 exibido um exemplo de diagrama de blocos e um sistema a ser


controlado.

Figura 2.11 Diagrama de blocos de um sistema de controle (OGATA, 2010).


Dentro do diagrama temos os sub-blocos:
Gc(s) Representa a equao diferencial do controlador.

36

Gp(s) Representa a equao do sistema a ser controlado ou planta.


H(s) Retroalimentao ou sensor.

Alm dos sub-blocos existem os fluxos de sinais que so:


V(s) Setpoint ou valor desejado.
PV(s) Valor medido do sensor ou retroalimentao.
E(s) Diferena do sinal V(s) com PV(s), conhecido como erro do processo.
VC(s) Ao controladora ou atuadora

O objetivo do controlador Gc(s) manter a varivel PV(s) mais prxima do valor


de V(S). Primeiro o sistema calcula o desvio das variveis ou simplesmente o erro
E(S). O valor de E(S) submetido a uma equao diferencial contida dentro do
controlador Gc(s), este mesmo calcula a varivel de sada VC(S) que a energia
que o controlador ir colocar no processo para que o desvio seja zero (OGATA,
2010).

Controladores bem ajustados possuem pouco ou nenhum desvio da varivel


desejada e alcanam de forma rpida este estado (FRANKLIN, 2009).

O desvio do valor da varivel desejada V(s) em relao a varivel do processo


PV(s), mais comumente encontrada em sistemas de controle, o erro de regime
permanente (KUO, 2009) (OGATA, 2010).

O fenmeno de erro de regime ocorre basicamente, devido a uma caracterstica


da planta em malha aberta (funo de transferncia) que o nmero de plos na
origem e o tipo de sinal de entrada. Quando a planta submetida a uma
retroalimentao (sistema de malha fechada) poder ocorrer este fenmeno (KUO,
2009).

37

O nmero de plos de malha aberta na origem define o tipo de sistema. Na


tabela 2.1 so apresentados os tipos de sistema e sinais de entrada. utilizada uma
funo de transferncia de primeira ordem como referncia do sistema do tipo zero.
Tabela 2.1 Erros de regime para tipos de sistemas.
Fonte: Adaptado de OGATA (2010) e KUO (2009)
Tipo de
sistema

Formato funo de
transferncia

Degrau

Rampa

K
s 1

Constante

Infinito

K
s (s 1)

Zero

Constante

K
2
s (s 1)

Zero

Zero

De acordo com a tabela 2.1 se um sistema do tipo zero e for aplicado um


degrau em sua referncia o erro de regime constante, porm se aplicada uma
rampa, o erro de regime infinito. J para um sistema do tipo um, se aplicado um
degrau o erro de regime zero, porm se aplicada uma rampa o erro de regime
constante. O princpio apresentado vlido se for utilizada uma retroalimentao
simples (H(s)= 1 e ganho do controlador P =1).

Sistemas de controle clssicos envolvem clculos com funes de transferncia,


transformadas

de

Laplace,

nmeros

complexos,

entre

outras

ferramentas

matemticas complexas. Mesmo controladores tradicionais utilizados na indstria


com P, PI, PD e PID tm necessidade de uma anlise matemtica em relao
planta para a escolha correta do controlador.

O grande problema do engenheiro, em poder aplicar os conhecimentos da teoria


de controle em processos industriais reais, se d pela complexidade da planta
(elemento a ser controlado), pois a modelagem atravs de mtodos clssicos, para
poder estimar o modelo matemtico da planta e tambm o clculo do controlador,
muito complexa, portanto a grande maioria os projetistas no a faz. E ento so

38

obrigados a estimar o controlador, baseados no mtodo de tentativa e erro


(FRANKLIN, 2009).

Conforme comentado anteriormente, um dos grandes empecilhos em se aplicar


a teoria clssica de controle reside na dificuldade de clculo do controlador. Para
isso a lgica fuzzy facilita em muito a construo de controladores de processos
industriais complexos, de forma mais simples e de comportamento mais "inteligente".

A lgica fuzzy apresentada no tpico 2.5.


2.5

LGICA FUZZY

Recentemente se destacou da rea de IA um subcampo denominado IC


(Inteligncia computacional) (ZADEH, 1996) (FOGEL; FUKUDA; GUAN, 1999).

Figura 2.12 reas da IA (adaptada de FOGEL; FUKUDA; GUAN, 1999).


Segundo Andrade (2002) a IC trata-se de um conjunto de tcnicas que exploram
o potencial para se criar "Mquinas inteligentes" por meio de modelagem dos
comportamentos,

mecanismos

que

so

subjacentes

aos

organismos

biologicamente inteligentes.

A IC difere das demais tcnicas de computao tradicionais, por tratar


caractersticas como: abstrao, impreciso, aprendizado e busca atravs de

39

evoluo. As trs reas principais da IC so computao fuzzy ou nebulosa,


computao neural e computao evolutiva (ANDRADE, 2002).

Figura 2.12 reas da IC


Portanto possvel desenvolver controladores inteligentes de processos
industriais ou controladores de mquinas utilizando lgica fuzzy.

Lgica fuzzy ou lgica nebulosa como tambm conhecida, uma extenso da


lgica tradicional booleana, permitindo operaes nos elementos similares s portas
lgicas

no

contexto

da

lgica

booleana

(ZADEH,1965)

(ZADEH,1984)

(ZADEH,1996).

O controlador fuzzy um tipo de controle baseado na lgica fuzzy que pode ser
utilizado na indstria. Dependendo do tipo do fenmeno que se deseja controlar, um
controle tradicional pode ser bem mais complexo para ser ajustado (IEC 61131-7,
2000) (ARROFIQ; SAAD, 2010) (SIMES; SHAW, 2007) (YONEYAMA, 2000).

O controle fuzzy um tipo de controle recomendado para problemas no


lineares, pois por meio desta forma de controle, consegue-se controlar vrios tipos
de sistemas atravs de seus parmetros (IEC 61131-7, 2000) (SIMES; SHAW,
2007).

40

Uma representao do conhecimento em lgica fuzzy feita atravs nmeros


fuzzy e de conjuntos fuzzy (ZADEH,1965), os mesmos so apresentados nos tpicos
2.5.1.
2.5.1 Nmeros fuzzy e a teoria de conjuntos fuzzy
Os nmeros fuzzy so nmeros que esto em um intervalo fechado entre o
nmero 0 (zero) e o nmero 1(um). Podendo assumir qualquer valor dentro desse
intervalo (por exemplo, 0.78 um nmero fuzzy vlido). Na teoria clssica de
conjuntos apenas os valores 0 (Zero) ou 1 (Um), significando no contido ou
contido para um conjunto (ZADEH, 1965) (ZADEH, 1996) (IEC 61131-7, 2000)
(SIMES; SHAW, 2007).
Na figura 2.13, so exibidos dois grupos de conjuntos. No primeiro termo so
mostrados dois conjuntos clssicos A e B, onde est ntido o que pertence ou no
aos conjuntos. Porm no segundo termo um conjunto fuzzy ou nebuloso, dentro
dele est bem ntido quando pertence (que est para o numero fuzzy 1) e tambm
fora quando no pertence (que est para o nmero fuzzy 0), no entanto existe uma
rea que uma penumbra, que representa valores intermedirios entre 0 e 1.

Figura 2.13 Comparao conjuntos clssicos vs. Conjuntos nebulosos


Uma forma de representar os conjuntos fuzzy, logo conhecimentos, atravs de
funes de pertinncia. As funes de pertinncia podem ser representadas
graficamente ou atravs de equaes como segmentos de reta (IEC 61131-7, 2000)
(ARROFIQ; SAAD, 2010) (SIMES; SHAW, 2007).

41

Na figura 2.14, se pode observar a funo de pertinncia altura. Ela composta


de dois termos: baixo e alto. No eixo X est o valor real da altura de um individuo.
Em Y est converso para o nmero fuzzy (que est no intervalo fechado de 0 a
1).

Figura 2.14 Funo de pertinncia altura formato grfico


A funo de pertinncia uma funo em termos matemticos, dado seu
domnio, se tem o valor de sua imagem, porm separado em cada termo
pertencente funo de pertinncia.

A funo de pertinncia descrita no formato grfico pode ser descrita atravs de


um formato matemtico. Na equao 2.7 e 2.8 se pode observar a mesma
pertinncia da figura 2.14.

1
100 x 150
0,0334 x 6 150 x 180

Baixo ( x)

0,0334 x 5,33 160 x 190


1
190 x 250

Alto ( x)

(2.7)

(2.8)

No exemplo da figura 2.14, demonstrado como converter valores reais em


valores fuzzy, abaixo, alguns exemplos:
Baixo(140) = 1
Baixo(165) = 0,5
Baixo(180) = 0

42

Alto(140) = 0
Alto(165) = 0,2
Alto(180) = 1

Basicamente a resposta de uma funo em termos matemticos: dado um em


valor X (domnio) o qual seu Y (imagem). O conhecimento foi representado como
uma funo de pertinncia. importante destacar que o valor 165 teve duas
pertinncias simultneas de 0,5 e 0,2. E faz sentido neste contexto, pois a transio
de altura gradual, do baixo para o alto, conforme se pode ver na figura 2.14.

O processo de converso de dados de entrada para um nmero fuzzy se chama


fuzzyficao. (IEC 61131-7, 2000) (SIMES; SHAW, 2007) (YONEYAMA, 2000).

O processo fuzzyficao importante, pois a primeira etapa do controlador


fuzzy (IEC 61131-7, 2000).

Os processos de fuzzyficao e defuzzyficao so basicamente as entradas e


sadas de um controlador fuzzy. O controlador fuzzy discutido no tpico 2.5.2 deste
trabalho.
2.5.2 Controlador fuzzy
O controlador fuzzy, basicamente processa uma ou mais entradas, a partir de
um sistema de inferncia (inteligncia computacional) e gera uma ou mais sadas
(IEC 61131-7, 2000) (SIMES; SHAW, 2007).

Figura 2.15 Controlador fuzzy bsico (Adaptado de IEC 61131-7, 2000)

43

Conforme pode ser observado na figura 2.15 o sistema possui uma entrada e
devolve uma sada. Conforme comentado anteriormente, a primeira fase do
controlador a fuzzyficao, cujo objetivo converter nmeros reais em nmeros
fuzzy, ou simplesmente a entrada de dados no sistema.

Os nmeros fuzzy so processados em um mdulo de inferncia que usa uma


base de regras, esse mdulo ento gera novos nmeros fuzzy. Esses novos
nmeros fuzzy passam por um processo chamado de defuzzyficao, que converte
um nmero fuzzy em um nmero real (IEC 61131-7, 2000) (SIMES; SHAW, 2007)
(YONEYAMA, 2000).

Um dos aspectos mais importantes do mdulo de inferncia so as operaes


sobre os conjuntos fuzzy. Essas operaes so demonstradas no tpico 2.5.3 deste
trabalho. Diversas operaes lgicas sobre os conjuntos so tambm demonstradas,
evidenciando as possibilidades de escrever tratamentos complexos em lgica fuzzy.
2.5.3 Operaes sobre os conjuntos fuzzy
As operaes sobre conjuntos fuzzy so as mesmas utilizadas na teoria de
conjunto clssico.

Para simplificao sero utilizados dois conjuntos fuzzy A e B, representados por


funes de pertinncia grfica, conforme mostrado na figura 2.16.

Figura 2.16 Exemplos de funo de pertinncia

44

Na figura 2.17 demonstrada a operao de interseco dos conjuntos A e B,


tambm conhecidos como operador mnimo ou conector lgico AND ou conector
lgico E. Em azul tm-se o operador mnimo ou a interseco dos conjuntos.
AB (x) = min(A,B) = A B

Figura 2.17 Operador mnimo ou conector AND lgico


Na figura 2.18 demonstrada a operao unio dos conjuntos A e B, tambm
conhecidos como operador mximo ou conector lgico OR ou conector lgico OU.
Em azul tm-se o mximo operador ou a unio dos conjuntos.
AB (x) = max(A,B) = A B

Figura 2.18 Operador mximo ou conector OR lgico


As operaes mnimas e mximas so binrias, ou seja, so necessrios dois
resultados de conjuntos para se fazer essas operaes. Na figura 2.19
demonstrado o operador negao, tambm conhecido como complemento ou
simplesmente conector lgico NOT ou ainda conector lgico no. O Azul a
negao do valor em vermelho.
A (xi) = 1 - A (xi)

45

Figura 2.19 Operador negao ou conector NOT lgico


Alm das funes de pertinncia para representar o conhecimento, outra forma
de represent-lo atravs das bases de regras. A teoria das bases de regras
apresentada no tpico 2.5.4 deste trabalho.
2.5.4 Bases de regras
As bases de regras so basicamente um conjunto de condicionais e
consequentes, estruturadas em regras de produo. E esto estruturadas da
seguinte forma:

Se <condicionais> ento <consequente>

A vantagem da lgica fuzzy valorizar o conhecimento do operador no


processo. Esse conhecimento pode ser descrito em uma base de regras (IEC 611317, 2000) (SIMES; SHAW, 2007).
Observe esse exemplo de conhecimento do operador:

"Se a temperatura est alta e aumentando,


ento, deve-se aumentar um pouco o resfriamento".

Traduzido para a regra:


Se temp = Alta e delta-temp = Positivo,
ento delta-resfr = PositivoPequeno.

46

Onde as variveis temp, delta-temp e delta-resfr so representadas por


funes de pertinncia. Por exemplo, a funo temp pode ser composta de vrios
termos, tais como: baixa, mdia e alta. A subdiviso desses termos tem o objetivo de
melhor classificar a transio de um conjunto para outro. Ou em outras palavras,
para se definir melhor a transio de uma temperatura da condio baixa para a
mdia e depois para alta.

As bases de regras tem o objetivo de organizar o conhecimento contido dentro


da descrio dos conjuntos definidos pelas funes de pertinncia. Assim,
organizado o conhecimento na forma de palavras ou bases de regras (ZADEH,
1996) (IEC 61131-7, 2000).

Agora atravs sistema com os nmeros fuzzy de entrada (determinados pelas


funes de pertinncia e com a base de regras j definida) possvel fazer a
inferncia do sistema. A inferncia apresentada no tpico 2.5.5 deste trabalho.
2.5.5 Mtodo de inferncia
A inferncia o mdulo mais importante do controlador fuzzy. E ela quem
decide que atitude tomar, similar ao ser humano quando toma uma deciso.

Existem diversos mtodos para a inferncia propostos (LEE,1990b), entre elas o


modus ponens generalizado:
Todo homem mortal. Scrates homem. Logo, Scrates mortal.

Lee (1990b) classificou os sistemas de inferncia fuzzy em:

Raciocnio fuzzy tipo 1 (Mamdani)

Raciocnio fuzzy tipo 2 (Larsen)

Raciocnio fuzzy tipo 3 (Tsukamoto)

Raciocnio fuzzy tipo 4 (Takagi e Sugeno)

47

Os mtodos mais utilizados em sistema de inferncia em aplicaes prticas so


o de Mamdani e o Takagi e sugeno.

Na figura 2.20 demonstrado o mtodo de Mamdani.

Regra semntica: mx-min


1. Condicionais: Interseco nebulosa entre os graus de
pertinncia das entradas atuais nos termos primrios->
coeficiente de disparo Dk, para cada regra k.

2. Todas as regras com D[k] > 0 disparam.


3. Consequentes: limitados pelo coeficiente de disparo
nos seus valores mximos dos conjuntos de sada.
4. Operao global de unio compe um conjunto
fuzzy para cada varivel de sada (informaes
de todas as regras)

Figura 2.20 Regras de inferncias de Mamdani (adaptado de SIMES; SHAW,


2007).
A aplicao dessas regras pode ser mais bem compreendida na figura 2.21.

48

Figura 2.21 Exemplo da aplicao do mtodo de Mamdani (LEE,1990b)


Para entendimento melhor do exemplo considere as regras:
Regra 1: Se x = A1 e y = B1 ento z = C1
Regra 2: Se x = A2 e y = B2 ento z = C2

Conforme observado na figura 2.21 o valor e entrada so x0 e y0 que foram


fuzzyficados, em outras palavras; dado seu domnio encontrado sua imagem,
assim obtendo os valores A1 e B1. O Mesmo principio se aplica para determinar
A2 e B2. Observando tanto a regra 1 como a regra 2, o conector lgico usado o
E ou AND, logo, deve-se aplicar o mnimo entre as duas regras. Observa-se
agora que o grfico no termo C1 ativado com o menor valor das pertinncias A1 e
B1.

Em termos matemticos, se tem:


C1 = A1B2 = min(A1, B1) = A1 B1
O mesmo ocorre com o termo C2 e sua nova pertinncia C2 que :
C2 = A2B2 = min(A2, B2) = A2 B2

49

Como ltimo passo do mtodo de Mamdani, deve-se fazer a unio dos termos
iguais, logo, se deve atribuir o maior valor de C1 e C2 para C. Em termos
matemticos se tem:
C = C1C2 = max(A,B) = A B
Conforme a figura 2.21, o grfico de sada C a unio dos grficos C1 e C2.

Depois de efetuada a inferncia no sistema, o mesmo gera um nmero fuzzy.


necessrio converter esse nmero fuzzy em um nmero real, esse processo
chamado de defuzzyficao (LEE,1990b) (IEC 61131-7, 2000) (SIMES; SHAW,
2007).

Alm do mtodo de Mamdani outro mtodo de inferncia muito utilizado o


mtodo de Takagi e Sugeno.

Este mtodo pode ser considerado uma expanso do mtodo de Mamdani,


cuja principal diferena que o consequente das regras se ativado por funo
(LEE, 1990b).

Para entendimento melhor do mtodo de Takagi e Sugeno considere as regras:


Regra 1: Se x = A1 e y = B1 ento z = F1 (x,y)
Regra 2: Se x = A2 e y = B2 ento z = F2 (x,y)

Onde a funo Fx pode ser linear, quadrtica ou qualquer outro formato. O


projetista deve escolher o melhor modelo para a aplicao em questo.
Normalmente so utilizados modelos lineares para essas funes. Para o caso linear
o formato :
zi = pix + qiy + ri

Onde os termos pi e qi so pesos ou coeficientes angulares e ri um coeficiente


linear aplicado a um caso linear.

50

Depois de calculados todos os termos zi, correspondentes das regras, uma


mdia ponderada feita com esses valores zi. Para o caso de duas regras tm-se:

w1z1 w 2 z 2
w1 w 2

Onde os termos w1 e w2 so os pesos da mdia ponderada. Desta forma,


aplicando corretamente os pesos, possvel efetuar reduo do nmero de regras
em relao ao modelo de Mamdani. No entanto a reduo das regras pode gerar um
modelo mais complexo (LEE, 1990b).

Segundo a norma IEC 61131-7, o mtodo de Mamdani nico implementado


em sua especificao.

Neste trabalho no sero implementados os demais mtodos de inferncia, pois


esses mesmos mtodos, no so utilizados na norma IEC 61131-7.

Conforme comentado anteriormente o processo de defuzzyficao, o mdulo


ou fase que converte um nmero fuzzy em um nmero real, esse mtodo
demonstrado no tpico 2.5.6 deste trabalho.
2.5.6 Mtodos de defuzzyficao
O processo de defuzzyficao a transformao de um nmero fuzzy em um
nmero real. Existem diversos mtodos, tais como: centro de massa, tambm
conhecido como centroide, o centro da soma, mdia dos mximos, entre outros
(LEE, 1990b) (TSOUKALAS, L. H.; UHRIG, 1997).

No entanto a norma IEC 61131-7 implementa alguns mtodos, so eles:

Centro de gravidade (GOC): centro geomtrico da figura que definida


por:

51

Max

u. (u )

Min
Max

u
(2.9)

(u ) u

Min

A resposta da equao 2.9 pode ser mais bem visualizada na figura 2.22.

Figura 2.22 Exemplo da sada com centro de gravidade (IEC 61131-7, 2000)

Mais esquerda (LM) e mais direita (RM): so como as maiores alturas


dos termos de sada da esquerda e da direita. Para uma visualizao
desse conceito, o mesmo exibido na figura 2.23.

Figura 2.22 Exemplo da sada com mais esquerda [LM] e mais direita [RM]
(IEC 61131-7, 2000)

Centro da rea ou bissetor de rea (COA): o ponto que divide o grfico


em duas partes de mesma rea, definido por:

52

Max

(u)

(2.10)

A resposta da equao 2.10 pode ser mais bem visualizada na figura 2.23,
que compara os mtodos de centro de gravidade (GOC) e centro de rea
(COA).

Figura 2.23 Exemplo comparativo entre centro de gravidade [GOC] e centro de


rea [COA] (IEC 61131-7, 2000)

Centro de gravidade para elementos simples ou pontuais (GOGC): uma


aproximao numrica para termos de uma funo de pertinncia que
possuem apenas valores pontuais definidos e no uma faixa (ou seja,
uma curva). A forma de clculo definida por:
p

U (t k )

U
i 1

ai (t k )

a (t )
i 1

(2.11)

A ttulo de exemplo ser aplicada a equao 2.11 para a figura 2.24.

53

Figura 2.24 Exemplo de centro de gravidade para elementos simples [GOCS] (IEC
61131-7, 2000)
Para o caso da figura 2.24 a expanso da equao 2.11 pode ser visualizada
na equao 2.12.

U (t k )

U1 a1 (t k ) U 2 a2 (t k ) U 3 a1 (t k ) U 4 a4 (t k )
a1 (t k ) a2 (t k ) a1 (t k ) a4 (t k )

(2.12)

O que foi apresentado at agora basicamente um sistema de entrada,


processamento e sada simples. Porm, para poder-se controlar um processo
industrial do tipo continuo necessrio ter retroalimentao ou feedback. No tpico
2.4 deste trabalho foram apresentados alguns tpicos da teoria de controle clssica.
Como se pode observar na figura 2.11, o sinal erro E(s) calculado a partir da
diferena do sinal desejado ou Setpoint V(S) contra o Sinal de retroalimentao
fornecido por um sensor PV(S). Mais detalhes da retroalimentao em lgica fuzzy
so apresentados no tpico 2.5.7 deste trabalho.
2.5.7 Controle fuzzy por retroalimentao
O controlador fuzzy por retroalimentao pode ser representado em um
diagrama de blocos mais simplificado, assim evidenciando suas partes.

54

Figura 2.25 Diagrama de blocos do controlador fuzzy por retroalimentao


Na figura 2.25, so indicados diversos sinais, tais como:

SP(t) Valor de referncia ou setpoint.

CV(t) Ao atuadora do controlador, ou energia para o processo.

PV(t) Sinal de sada do processo depois de ser medido pelo sensor.

O controlador fuzzy mede o erro do sistema. A partir de uma base de regras e


sinal do erro, feita uma inferncia e ento gerado um sinal de sada. Este sinal de
sada chamado de varivel atuadora (POPA et al.,2008) (LEE, 1990a).

A varivel atuadora pode ser um sinal que representa a energia a ser fornecida a
um sistema a ser controlado (FRANKLIN, 2009) (IEC 61131-7, 2000) (GUILLEMIN,
1996).

O controlador fuzzy por retroalimentao necessita das funes de pertinncia e


de uma base de regras especficas, para representar uma base de conhecimento
para o controle. No tpico 2.5.8 ser apresentada esta base de conhecimento.
2.5.8 Base de conhecimento para o controle
Conforme comentado anteriormente o controlador fuzzy por retroalimentao
necessita de uma base de conhecimento para efetuar o controle.

55

Como basicamente a inferncia deve ser feita em funo pelo menos da varivel
de erro, as funes de pertinncia e regras devem referenciar essa varivel (POPA
et al.,2008) (LEE, 1990a).

Alm de se usar a varivel de erro, pode-se tambm utilizar de forma


combinada, a varivel derivada do erro no tempo, que representa a velocidade do
erro no tempo (GUILLEMIN, 1996) (LEE, 1990a).

Uma varivel pode assumir diferentes valores ou faixas de valores. Supondo que
o valor de retroalimentao PV(s) esteja na faixa 0 100. Logo os valores mximos
de erro sero -100 e +100. Devido diferena numrica E(t) = SP(t) PV(t), j vista
anteriormente na figura 2.25.

Um controlador digital deve ser executado em uma taxa de aquisio


(FRANKLIN, 2009) (GUILLEMIN, 1996) (LEE, 1990a).

O controlador fuzzy implementado de forma digital, logo, possui uma taxa de


aquisio.

Conforme comentado anteriormente, alm da varivel erro, possvel ter em um


sistema retroalimentado fuzzy a derivada do erro, o valor da derivada do erro pode
ser calculado numericamente a partir da equao 2.13.

Derivada E

E Atual E Anteiror
E

T Tempo de aquisio

(2.13)

Conforme visto na equao 2.13, a derivada do erro a variao do erro no


tempo. Sabendo-se dos limites das variveis de entrada, e tambm sabendo os
limites das variveis de sada, possvel definir as funes de pertinncia para a
varivel erro e a varivel derivada do erro.

56

Tanto as variveis de entrada erro, derivada do erro e a varivel de sada ou


atuador, podem ser representadas pelo mesmo conjunto bsico de pertinncias. A
representao grfica das funes de pertinncia pode ser apresentada de forma
adimensional, demonstrando o valor mnimo e mximo de fundo de escala na faixa
de -1 +1 (POPA et al.,2008) (GUILLEMIN, 1996) (LEE, 1990a).

Como a varivel de entrada do controle erro ou desvio do processo, a mesma


pode ter pesos ou faixa da quantidade do desvio; Temos ento: Zero (Z), Positivo
Pequeno (PP), Positivo Mdio (PM) e Positivo Grande (PG) e assim por diante.
(POPA et al.,2008) (IEC 61131-7, 2000) (LEE, 1990a).

Na figura 2.26, exibido um exemplo de pertinncia para o varivel erro.

Figura 2.26 Funo de pertinncia da varivel Erro (Adaptado de POPA el al,


2008)
Uma possvel sintonia do controlador fuzzy se d atravs da manipulao das
curvas da funo de pertinncia (IEC 61131-7, 2000) (LEE, 1990a).

Outra forma de representar o conhecimento atravs das bases de regras. As


bases de regras devem ser escritas em termos do erro e a derivada do erro (se esta
ltima varivel existir).

57

Para definir as regras de controle necessrio compreender melhor a forma


como o sinal de sada do controlador fuzzy por retroalimentao gerado, em outras
palavras como o sinal CV(t) da figura 2.25 gerado.

Segundo a norma IEC 61131-7 (2001), o sinal calculado pelo controlador fuzzy
integrado com seu atual valor de sada. Na figura 2.27, este apresentado
integrando o valor de sada U no tempo.

Figura 2.27 Controlador fuzzy por retroalimentao proposto pela norma IEC
61131-7 (IEC 61131-7, 2001)
Em outras palavras o controlador fuzzy calcula um valor de sada, que neste
exemplo ser chamado de U. A cada ciclo da execuo do controlador fuzzy, o valor
de sada incrementado em U, portanto o valor Y da figura 2.27 pode ser
representado ela equao numrica simples em 2.14.

Y Y U

(2.14)

Se o raciocnio anterior por aplicado na figura 2.25, temos:

CV (t ) CV (t ) CV

(2.14)

Portanto o controlador fuzzy por retroalimentao calcula um delta de energia


(CV) que ser somado com o sinal CV(t) ao longo do tempo nos intervalos de
execuo do controlador.

58

Como o controlador ira calcular um novo CV a cada base de tempo, e o mesmo


ser integrado com o valor de sada, uma caracterstica ocorre: a eliminao do erro
de regime (BUTKIEWICZ,1998) (LEE, 1990a).

A ttulo de demonstrao considere os exemplos aplicados apenas para a


varivel de entrada erro e a sada CV:

Erro igual zero: indica que o sistema tem desvio zero, logo o sistema
chegou ao seu setpoint. Portanto no necessrio gerar mais energia
para o sistema ento CV igual zero.

Erro igual a positivo grande: indica que o sistema tem um grande desvio,
logo o sistema est muito longe do seu setpoint. Portanto necessrio
gerar muita energia para o sistema, ento CV igual a positivo grande.

Erro igual a positivo pequeno: indica que o sistema tem pouco desvio,
logo o sistema est muito prximo do seu setpoint. Portanto necessrio
gerar pouca energia para estabilizao do sistema ento CV igual a
positivo pequeno.

As regras devem estar de acordo com essa caracterstica de sada do sinal


CV(t). A escolha das regras influi em muito na sintonia do controlador.

Em Lee (1990a) o mesmo apresenta um mtodo proposto por Mamdani que se


chama: mapeamento de escalas. Esse mtodo tem o objetivo de ajustar a trajetria
do sistema de PV(t) para trazer ao ponto desejvel ou SP(t).

O mtodo basicamente similar demonstrao apresentada anteriormente,


porm leva em conta mais uma varivel de entrada, a derivada do erro.

Na figura 2.28 apresentado um grfico separado em pontos ou reas para


anlise: a, b, c, d, e, e f, as quais descrevem pontos da trajetria do sinal PV(t).

59

Figura 2.28 Sintonia por mapeamento de escalas (Adaptado de LEE,1990a)

Esses pontos iro gerar regras as Ri, Rii, Riii e assim por diante.
Essas regras levam em conta os sinais de erro e derivado do erro. Considerando
a figura 2.26 como base para as pertinncias de erro, derivada do erro e CV, sero
no total de 49 regras. O desenvolvimento das regras podem levar a dinmica da
planta em questo, ajustando assim o peso da sada CV.

Analisando a figura 2.28 e levando em conta os termos da funo de pertinncia


2.26, desenvolvida a tabela 2.2.

Tabela 2.2 Regras propostas demostrao.


Fonte: Adaptado de LEE (1990a)
Regra

Erro

Derivada Erro

CV

Ref. Setpoint

1 (I)

PG

PG

2 (II)

NG

NG

3 (III)

NG

NG

4 (IV)

PG

PG

5 (V)

PM

PM

6 (VI)

NM

NM

Setpoint

...
49 (XLVII)

60

Reorganizando a tabela 2.2, onde a sada ou contedo CV e elementos para


organizao que so: a linha para erro e a coluna para a derivada do erro, se tem a
tabela 2.3.

Tabela 2.3 Regras propostas completas.


Fonte: Adaptado de LEE (1990a)
Erro

NG

NM

NP

PP

PM

PG

NG

NG

NG

NM

NM

NP

NP

NM

NG

NM

NM

NP

NP

PP

NP

NM

NM

NP

NP

PP

PP

NM

NP

NP

PP

PP

PM

PP

NP

NP

PP

PP

PM

PM

PM

NP

PP

PP

PM

PM

PG

PG

PP

PP

PM

PM

PG

PG

DErro/dt

Utilizando-se de softwares especializados em lgica fuzzy, como o MATLAB,


possvel construir de forma mais simplificada o plano de erro, tambm conhecida
como superfcie de regras fuzzy. A construo dessa superfcie de regras fuzzy
depende das pertinncias usadas, como pode ser visto na figura 2.26 e a base de
regras utilizada como, por exemplo, na tabela 2.3.

A superfcie de regras fuzzy uma importante ferramenta para a anlise de


sistemas fuzzy retroalimentados, pois com ela possvel analisar o desempenho da
varivel retroalimentada em torno do setpoint e tambm analisar possveis
problemas com erro de regime (BUTKIEWICZ, 2008) (IEC 61131-7, 2000)
(QUADRADO; FERNANDO SILVA, 1993).

Na figura 2.28 apresentado a superfcie de regras fuzzy, o caso da tabela 2.3.

61

Figura 2.28 Superfcie de regras fuzzy


Na figura 2.28 possvel observar a relao entre as entradas Erro (eixo X) e
derivada do erro (eixo Y) e sua sada (Eixo Z). Observada a figura possvel
visualizar a sada para cada variao da entrada. Tambm possvel observar que
quanto maior o erro, maior o sinal de CV, e quando o erro e sua derivada forem
zero, a sada zero.

Neste tpico foram apresentadas as bases de regras que devem ser usadas em
controladores fuzzy por retroalimentao. J para uso de lgica fuzzy em
controladores programveis (CP) existe a norma IEC 61131-7, que descreve o seu
uso nesses equipamentos. Os detalhes da norma so demonstrados no tpico 2.5.9
desde trabalho.
2.5.9 Norma IEC 61131-7
A norma foi criada pelo rgo IEC, mais especificamente pelo comit de nmero
65B, que trata de especificaes em controladores programveis.

A norma descreve como deve funcionar o controle fuzzy em equipamentos


industriais, tais como os controladores programveis (CP), e principalmente como

62

program-la no controlador. Para isso a norma define uma linguagem de


programao chamada FCL, a fuzzy control language (IEC 61131-3, 2000).

Essa linguagem sintaticamente similar linguagem ST definida pela norma


IEC 61131-3. Na figura 2.29 apresentado um exemplo de cdigo em linguagem
FCL.
FUNCTION_BLOCK Fuzzy_FB
VAR_INPUT
temp : REAL;
pressure : REAL;
END_VAR
VAR_OUTPUT
valve : REAL;
END_VAR
FUZZIFY temp
TERM cold := (3, 1) (27, 0);
TERM hot := (3, 0 (27, 1);
END_FUZZIFY
FUZZIFY pressure
TERM low := (55, 1) (95, 0);
TERM high:= (55, 0) (95, 1);
END_FUZZIFY
DEFUZZIFY valve
TERM drainage := -100;
TERM closed := 0;
TERM inlet := 100;
ACCU : MAX;
METHOD : COGS;
DEFAULT := 0;
END_DEFUZZIFY
RULEBLOCK No1
AND : MIN;
RULE 1 : IF temp IS cold AND pressure IS low THEN valve IS inlet
RULE 2 : IF temp IS cold AND pressure IS high THEN valve IS closed WITH 0.8;
RULE 3 : IF temp IS hot AND pressure IS low THEN valve IS closed;
RULE 4 : IF temp IS hot AND pressure IS high THEN valve IS drainage;
END_RULEBLOCK
END_FUNCTION_BLOCK

Figura 2.29 Exemplo de cdigo FCL fornecido na norma IEC 61131-7 (IEC 611317, 2000).

O exemplo de cdigo FCL no um controle por retroalimentao, mas sim do


tipo feedforward, ou seja, controle antecipativo. A norma permite que sejam usados
quaisquer dos tipos de controle de forma simples ou mesmo de forma combinada. O
controle proposto nesse script FCL envolve duas variveis de entrada temperatura e
presso e uma de sada vlvula, conforme pode ser mais bem visualizado na
figura 2.29.

63

A norma 61131-7 prev que o CP tambm deve ser compatvel com a norma
61131-3 nos seguintes pontos:

Tipos de dados (INT, WORD, REAL, etc...).

Integrao com as demais linguagens de programao da IEC 61131-3.

O primeiro tpico importante para que haja interoperabilidade de troca de


informaes entre o CP e o programa em FCL. O segundo tpico diz respeito a
integrao, normalmente o programa em FCL fica disponvel como se fosse um
bloco compatvel com a IEC 61131-3, onde possvel chamar esse bloco ou subrotina em seu sistema de programao.

Na figura 2.30 apresentado o uso em diagrama do bloco de funes (FDB) da


IEC 61131-3.

Figura 2.30 Exemplo do uso do cdigo fuzzy em FDB IEC 61131-3 (IEC 61131-7,
2000).

A norma uma linguagem declarativa similar linguagem SQL dos bancos de


dados relacionais. A mesma separada em reas e subreas para declarar as
pores que so:

Definio do bloco fuzzy


o 1 - Declarao das variveis de entrada
o 2 - Declarao das variveis de sada

64

o 3 - Fuzzyficao

3.1 - Definio de funo de pertinncia a partir das variveis de


entrada

3.1.1 - Definio dos termos existentes de cada


pertinncia

3.1.2 - Definio dos pontos ou curva para cada um dos


termos

o 4 - Defuzzyficao

4.1 - Definio de funo de pertinncia a partir das variveis de


sada

4.1.1 - Definio dos termos existentes de cada


pertinncia

4.1.2 - Definio dos pontos ou curva para cada um dos


termos

4.2 - Definio de acumulao

4.3 - Definio do mtodo de defuzzyficao

4.4 - Definio de valor mnimo ou padro

o 5 - Bloco de regras Se-Ento

As reas e subreas foram enumeradas de um a cinco. Essas regies so


indicadas na figura 2.31 que basicamente a figura 2.29 comentada.

65

FUNCTION_BLOCK Fuzzy_FB
VAR_INPUT
temp : REAL;
pressure : REAL;
END_VAR

VAR_OUTPUT
valve : REAL;
END_VAR

2
3 e 3.1
3.1.1 e 3.1.2

FUZZIFY temp
TERM cold := (3, 1) (27, 0);
TERM hot := (3, 0 (27, 1);
END_FUZZIFY

3 e 3.1

FUZZIFY pressure
TERM low := (55, 1) (95, 0);
TERM high:= (55, 0) (95, 1);
END_FUZZIFY

3.1.1 e 3.1.2
4 e 4.1

DEFUZZIFY valve
TERM drainage := -100;
TERM closed := 0;
TERM inlet := 100;
ACCU : MAX;
METHOD : COGS;
DEFAULT := 0;
END_DEFUZZIFY

4.1.1 e 4.1.2
4.2
4.3

4.4

RULEBLOCK No1
AND : MIN;
RULE 1 : IF temp IS cold AND pressure IS low THEN valve IS inlet
RULE 2 : IF temp IS cold AND pressure IS high THEN valve IS closed WITH 0.8;
RULE 3 : IF temp IS hot AND pressure IS low THEN valve IS closed;
RULE 4 : IF temp IS hot AND pressure IS high THEN valve IS drainage;
END_RULEBLOCK
END_FUNCTION_BLOCK

Figura 2.31 Exemplo de cdigo FCL comentado (IEC 61131-7, 2000)


Conforme j foi comentado anteriormente o cdigo separado em reas e
subreas.

cdigo

principal

delimitado

pelas

palavras

chaves

FUNCTION_BLOCK e END_FUNCTION_BLOCK. Logo aps a palavra chave


FUNCTION_BLOCK, informado o nome do bloco para ser gerenciado pelo CP e o
nome estar disponvel para as demais linguagens do padro IEC 61131-3.

Na rea 1, so criadas duas variveis de entrada que so temp e pressure, que


neste exemplo respectivamente representam a temperatura e a presso de um
sistema de controle. Na rea 2 definida a varivel de sada valve, que representa o
estado de uma vlvula em 3 posies: drenagem, fechada e aberta.

Nas reas 3 e 3.1, indicado que as variveis de entrada so fuzzyficveis. J


nas reas 3.1.1 e 3.1.2 so indicados os termos e seus valores de pertinncia, isto

66

feito declarando-se o nome do termo aps a palavra chave TERM, e aps a


declarao do termo informado um conjunto de pares ordenados (X, Y) que
representam a curva da pertinncia.

Na rea 4 e 4.1, informado que a varivel de sada defuzzyficvel. J nas


reas 4.1.1 e 4.1.2 so definidos os termos da varivel de sada valve e sua
pertinncia, porm como observado no cdigo, as sadas s tem trs possibilidades
e no uma faixa definida por uma curva, mas sim apenas trs pontos que so:
drenagem (-100), fechada(0) e aberta(+100).

Na rea 4.2 definido o mtodo de acumulao, segundo a norma IEC 61131-7


o mesmo pode ser chamado de resultado de agregao, esta configurao define
como ser a combinao dos resultados das regras lingusticas.

O mtodo de resultado de agregao mais comumente utilizado o uso do


operador OR (OU) ou regra dos mximos, isto porque pelas regras lingusticas existe
um OR (OU) implcito entre as mesmas (LEE, 1990a).

Por exemplo:
Regra 1: Se x = A1 e y = B1 ento z = C1
Regra 2: Se x = A2 e y = B2 ento z = C2
a mesma coisa que:
Regra 1: Se x = A1 e y = B1 ento z = C1
OU
Regra 2: Se x = A2 e y = B2 ento z = C2

Isto porque as regras esto em paralelo, logo usado o operador OR.

No exemplo, no cdigo est sendo configurado o mximo, ou seja, o uso do


operador OR. Porm a norma permite outras opes onde as mesmas so
apresentadas na tabela 2.4.

67

Tabela 2.4 Mtodos de acumulao.


Fonte: Adaptado de IEC 61131-7 (2000)
Nome

Palavra
chave

Frmula

Mximo

MAX

Max1 x , 2 x

Soma limitada

BSUM

Min1, 1 x 2 x

Soma normalizada

MAX

1 x 2 x
Max1, MAX 1 x 2 x

Na rea 4.3 definido o formado de defuzzyficao. No tpico 2.5.6 deste


trabalho foram apresentados os tipos de defuzzyficao compatveis com a norma,
j na tabela 2.5 apresentado um sumrio dos mtodos.

Tabela 2.5 Mtodos de acumulao.


Fonte: IEC 61131-7 (2000)
Nome

Palavra
chave

Frmula
Max

Centro de gravidade

COG

u. (u )

Min
Max

(u ) u

Min

Centro de gravidade para


elementos pontuais

COGS

U (t k )

U
i 1

ai (t k )

a (t )
i 1

Max

Centro de rea

COA

(u)

Mais esquerda

LM

U LimiteInfe rior u

Mais direita

RM

U LimiteSuperior u

Para o exemplo do cdigo, est configurado o centro para elementos individuais.

68

Na rea 4.4 definido o valor mnimo ou padro, se nenhuma regra for ativada,
no exemplo ela est configurada como zero.

Na rea 5, onde esto definidas as regras se e ento. As regras junto com


as funes de pertinncia correspondem ao conhecimento sobre como controlar o
processo. Pela norma IEC 61131-7, essa rea deve estar compreendida entre as
palavras-chave: RULEBLOCK e END_RULECLOCK. Na primeira linha dentro desta
rea ou bloco, est sendo atribuda a equivalncia do operador AND com o operador
MIN, em outras palavras, a operao E lgico o mnimo entre as pertinncias. Na
sequncia, so definidas as regras RULE 1, RULE 2, RULE 3 e RULE 4 no exemplo
da figura 2.31. Aps a palavra chave RULE e o nmero da regra; definida a prpria
regra, se utilizando das variveis e dos termos lingusticos.

Neste item foi apresentada a lgica fuzzy e o principio de retroalimentao em


lgica fuzzy. Porm para um sistema computacional, no caso o CP, entender a
linguagem FCL que declarativa e foi definida pela norma IEC 61131-7,
necessrio traduzir ou execut-la em nvel de linguagem de mquina ou assembly.
Essa tarefa feita atravs de softwares especficos que so chamados
respectivamente de compiladores e interpretadores. O prximo item chamado de
construo de linguagens artificiais que apresenta a teoria dos compiladores e
interpretadores.
2.5.10 Erro de regime em sistemas retroalimentados fuzzy
Se os sistemas de controle fuzzy retroalimentados forem montados conforme a
norma IEC 61131-7 na configurao P ou PD, isto implica que existe um plo na
origem, devido ao sistema ter um integrador puro no final do controlador, conforme
indicao da figura 2.27.

Considerando uma planta em malha aberta que seja um sistema de primeira


ordem tem-se:

F ( s)

K
s 1

(2.15)

69

Considerando a planta e controlador com o plo na origem, tm-se:

F ( s) ControladorFuzzy( s )

K
s(s 1)

(2.16)

Se as regras do controlador fuzzy so do tipo P, ou seja, apenas em funo do


erro, no se altera a ordem do sistema. Portanto valem as regras j discutidas na
tabela 2.1, tipos de sistemas. No entanto se as regras do controlador forem PD, uma
anlise mais criteriosa necessria, j que a derivada inclui um zero no sistema,
este zero poder influenciar o plo do controlador.

Nas figuras 2.32 e 2.33, apresentado um sistema fuzzy do tipo P para uma
planta de primeira ordem, onde submetido a um degrau e a uma rampa
respectivamente.
Figura 2.32 Sistema fuzzy com entrada em degrau

Figura 2.33 Sistema fuzzy com entrada em rampa

70

Conforme indicado nas figuras 2.32 e 2.33, o erro de regime zero para o caso
da entrada em degrau, e um valor constante para o caso da entrada em rampa. Os
resultados esto conforme a tabela 2.1.
2.6

CONSTRUO DE LINGUAGENS ARTIFICIAIS

A elaborao de programas para sistemas computacionais no comeo dos anos


de 1950 era uma tarefa extremamente demorada, trabalhosa e propcia a erros
(AHO et al., 2006). Pois naquela poca no existiam linguagens artificiais de alto
nvel como: C, FORTRAN, Java etc.

O desenvolvimento de programas de computador facilitado pelo uso de


linguagens de alto nvel, pois permite maior abstrao na construo dos mesmos
(APPEL,1999).

Outra vantagem em se utilizar das linguagens de alto nvel que a gerao de


cdigo ou interpretao feita de forma automtica, assim evitando erros na
codificao em linguagem de mquina (AHO et al., 2006).

A primeira linguagem artificial para computadores foi a linguagem FORTRAN,


pois o seu nome um acrnimo de FORmula TRANslation System", que
originalmente era um tradutor de frmulas matemticas para a linguagem de
mquina (GRUNE, 2001).

Ao longo dos anos 50, os compiladores foram considerados programas


notoriamente difceis de escrever. O primeiro compilador Fortran, por exemplo,
consumiu 18 homens-ano para sua construo (AHO et al., 2006).

Na tabela 2.6 apresentado o ano de lanamento de algumas linguagens de


programao de sistemas computacionais e de CPs.

71

Tabela 2.6 Momento de lanamento das linguagens de programao.


Fonte: Adaptado de GRUNE (2001) e IEC 61131-7 (2000)
Linguagem
FORTRAN
ARGOL
LISP
COBOL
BASIC
C
PASCAL
dBASE II
C++
HTML
Java
IEC 61131-3 (LD,FDB,SFC,IL,ST)
IEC 61131-7 (FCL)

Ano de lanamento
1957
1958
1960
1960
1964
1972
1975
1980
1986
1989
1991
1993
2000

No desenvolvimento desses ltimos anos surgiram inmeras linguagens de


programao, bem como tcnicas para o desenvolvimento de linguagens artificiais.
As linguagens de programao podem ser interpretadas ou compiladas.
Para GRUNE (2001) a linguagem compilada aquela em que seu ncleo ou
motor, o compilador. J para a linguagem interpretada o ncleo ou motor o
interpretador.

Posto de forma simples, um compilador um programa que l um programa


escrito numa linguagem-fonte e o traduz num programa equivalente numa outra
linguagem-alvo, esta ltima pode ser a linguagem de mquina (figura 2.34). Como
importante parte desse processo de traduo, o compilador relata a seu usurio a
presena de erros no programa fonte (AHO et al., 2006)(JOSE NETO, 1987).

Figura 2.34 Exemplo de compilador adaptado de AHO et al. (2006).

72

No final do processo, o programa alvo da figura 2.34 j estar traduzido. Se o


tipo do alvo for uma linguagem de baixo nvel de um computador, ento esse
computador pode executar este programa gerado posteriormente.

Um interpretador um programa de computador que faz a traduo, instruo


por instruo. O procedimento similar ao profissional intrprete, que traduz as
palavras de um determinado idioma para outro, por exemplo: como de ingls para
portugus em uma conferncia (GRUNE, 2001) (AHO et al., 2006) (JOSE NETO,
1987).

Segundo AHO et al. (2006) um compilador ou mesmo um interpretador possui


fases ou mdulos, estas fases ou mdulos so responsveis por alguma operao
ou ao desse mesmo compilador.

Na

tabela

2.7

so

apresentadas

as

fases

ou

mdulos

de

compilador/interpretador.

Tabela 2.7 Fases de um compilador/interpretador.


Fonte: Adaptado de AHO et al. (2006) e GRUNE (2001)
Fases
Anlise lxica

Descrio
Varredura do texto-fonte procurando palavras
chaves da linguagem, constantes, Identificadores,
ou seja, elementos bsicos da linguagem
(Lxicos).

Aplicvel em
Interpretadores e
compiladores

Anlise sinttica

A partir destes elementos lxicos construda a


rvore gramatical, no qual se pode verificar se o
texto-fonte est sintaticamente correto.

Interpretadores e
compiladores

Anlise semntica

A partir da rvore gramatical, pode-se verificar o


sentido contextual, ou seja se uma frase ou
comando faz sentido ou no.

Interpretadores e
compiladores

Gerao de cdigo
intermedirio

Uma representao da rvore gramatical em


pseudocomandos do computador.

Compiladores

Otimizao de
cdigo

Otimizao no cdigo intermedirio, visando


melhora de desempenho.

Compiladores

Gerador de cdigo

Gerao do cdigo-objeto (no caso do compilador


a linguagem de mquina).

Compiladores

Interpretao do
cdigo

A partir da representao gramatical so


executados algoritmos interativos ou recursivos
para efetuar a execuo do cdigo em tempo real

Interpretadores

um

73

A forma de execuo escolhida para a norma IEC 61131-7 neste trabalho foi a
interpretao, pois sua implementao mais simples do que o mtodo da
compilao, por possuir menos fases e tambm por no trabalhar diretamente com o
cdigo de mquina. Outra vantagem do uso de interpretadores a possibilidade de
execuo da lgica fuzzy em SOFTPLCs ou controladores programveis de
software, cujo uso cada vez mais comum na indstria, bem com o uso de sistemas
supervisrios sendo executados em computadores PC.

Analisando a tabela 2.7, as fases ou mdulos importantes para a construo


com interpretador para a linguagem FCL da norma IEC 61131-7 so: anlise lxica,
anlise sinttica, anlise semntica e interpretao de cdigo. Os prximos itens so
apresentar essas fases.
2.6.1 Anlise lxica
O analisador lxico a primeira fase do compilador ou interpretador, e tem o
objetivo de classificar os elementos de um texto estruturado por exemplo. O
analisador lxico promove uma varredura no cdigo-fonte, identificando palavraschave da linguagem (ex: IF, THEN, WHILE, etc.), identificadores (variveis),
constantes (nmeros, strings, etc.) e ignorar comentrios no cdigo (AHO et al.,
2006) (APPEL, 1999).

Este reconhecimento feito internamente atravs de uma mquina de estado


chamado autmato, o mesmo apresentado na figura 2.35.

Figura 2.35 Exemplo de autmato adaptado de AHO et al. (2006).


Um autmato tem como representao dos seus estados, os crculos, onde o
mesmo numerado. Existem transies entre os estados que so representados por
setas ou arcos e este possui um condicional para a transio entre os estados (AHO
et al., 2006) (JOSE NETO, 1987).

74

Para o exemplo da figura 2.35 o estado 1 o estado inicial, o estado 2 o


estado final porque est circulado com crculo duplo.

Do estado 1 para o estado 2 necessrio consumir um smbolo entre 0 e 9. Ao


chegar ao estado 2, pode-se consumir outros smbolos desde que sejam nmeros, e
pode-se finalizar o autmato corretamente no estado 2, se necessrio. Na tabela 2.8
demonstra-se o reconhecimento da cadeia 123 para o autmato da figura 2.35, a
fonte em negrito da coluna cadeia o estado corrente.

Tabela 2.8 Tabela de transio do automato da figura 2.35.


Cadeia
123
123
123
123

Movimento de estado
1
1 para 2
2 novamente em 2
2 novamente em 2, cadeia reconhecida

O autmato da figura 2.35 reconhece apenas nmeros.

Como comentado anteriormente, o autmato a unidade de reconhecimento


interna do compilador/interpretador, para os smbolos pertencentes linguagem.
Quando o autmato do compilador/interpretador (anlise lxica) reconhece uma
cadeia ele emite um TOKEN2, que ser usado nas outras fases do compilador. Caso
contrrio o compilador dever gerar um erro para o usurio.

Num compilador existem vrias submquinas de estado que funcionam como


uma s.

Cada submquina pode realizar um determinando tipo de reconhecimento,


como:

Palavras chaves;

Nmeros;

Identificadores (IDs).

Estrutura que contm: cdigo de identificao, valor lxico, local onde foi encontrada no
programa fonte, e o TOKEN tambm conhecido como tomo.

75

Um identificador pode ser uma varivel do programa fonte e deve comear por
alguma letra do alfabeto, continuando com letras e/ou nmeros.

Na figura 2.36 pode-se ver um exemplo de autmato que reconhece


identificadores.

Figura 2.36 Exemplo de compilador adaptado de AHO et al. (2006).


Como possvel observar na figura 2.36, uma varivel comea com uma letra, e
ento pode possuir n letras e/ou m nmeros em sua sequncia.

No momento em que se executa a anlise lxica, se for encontrado um


identificador, o mesmo deve ser inserido em uma tabela especial chamada tabela de
smbolos (APPEL, 1999).

A tabela de smbolos tem o objetivo de enumerar as variveis existentes de um


programa de computador (AHO et al., 2006) (APPEL, 1999) (JOSE NETO, 1987).

Segundo GRUNE (2001) os dois maiores objetivos da anlise lxica so:

Classificar a linguagem texto em um fluxo de TOKENS: essa classificao do


texto escrito em linguagem de programao feita atravs de mquinas de
estados, como os autmatos. Depois de reconhecido o sistema gera um
TOKEN referente ao tipo do elemento determinado (palavra-chave,
identificador, nmero etc...) e insere em uma lista. A leitura linear nesta lista
representa a prpria leitura do programa.

Gerar a tabela de smbolos: depois de reconhecida uma varivel ou


identificador, o mdulo lxico responsvel pela insero desse elemento na
tabela de smbolos.

76

Se utilizando de uma linguagem de alto nvel como a linguagem C ou mesmo


Java, relativamente fcil o desenvolvimento de um cdigo que execute uma
mquina de estado. Na figura 2.37 apresentado um trecho de cdigo em
linguagem Java que programa o reconhecimento de identificadores, ou seja, sendo a
implementao do autmato da figura 2.36.
/*
Onde: sLine o contedo da cadeia
iPosition a posio corrente na cadeia
blnResolved flag que indica que o autmato foi reconhecido
c o caractere sendo verificado pelo algoritmo
PreToken indicao do TOKEN reconhecido
*/
...
iState = 1;
iPosition = OriginalIndex;
blnResolved = false;
while (!blnResolved)
{
c = sLine.SubString(iPosition,1);
switch (iState)
{
case 1:
if (isLetter(c))
{
iState = 2;
PreToken = tkID;
iPosition++;
}
else
{
//Generate Error ...
PreToken = tkError;
blnResolved = true;
}
break;
case 2:
if ((isLetter(c)) || (isSimpleNumber(c)))
iPosition++;
else
{
iPosition--;
blnResolved = true;
}
break;
}
}
...

Figura 2.37 Exemplo de implementao de autmato


Se um identificador reconhecido no cdigo, o mesmo gera o TOKEN de
identificador (tkID), caso contrrio gerada uma condio de erro, ou seja, um
TOKEN de erro (tkError).

77

Com a tabela de smbolos e com a lista de TOKENS possvel passar essas


duas informaes para a prxima fase do compilador/interpretador, que a anlise
sinttica.
2.6.2 Anlise sinttica
A anlise sinttica o processo de verificar se o texto-fonte est escrito
sintaticamente correto, baseado em uma gramtica.

Para que esta fase/mdulo funcione necessrio que uma lista linear de
TOKENS seja processada ou consumida, sendo esta produzida pelo analisador
lxico. Lendo estes TOKENS e validando-os com as regras gramaticais, possvel
se construir uma rvore abstrata da sintaxe (abstract syntax tree (AST)) ou substituir
por outra atividade equivalente (APPEL, 1999) (GRUNE, 2001).

Para se criar esta fase/mdulo necessrio definir uma gramtica para


representar a estrutura da linguagem.

Para RAMOS et al. (2009) uma gramtica G um mecanismo para gerar as


sentenas (ou palavras) de uma linguagem e definida pela qudrupla:
G = (N,T,P,S)
Onde:
N
T
P
S

o conjunto de smbolos no terminais (variveis)


conjunto de smbolos terminais (TOKENS)
um conjunto de regras de produo (regras sintticas)
o smbolo inicial da gramtica (S N)

O conjunto de smbolos N representa o conjunto de smbolos no terminais, ou


seja, so as variveis para se construir as estruturas gramaticais de uma
linguagem, hierarquia, ordem etc. uma conveno, se utilizar letras ou palavras em
maisculo. J o conjunto de smbolos T representa os smbolos terminais da
linguagem, em outras palavras os TOKENS, que podem ser palavras-chave,
identificadores e nmeros. Para a diferenciao dos terminais em relao aos no
terminais, os terminais so escritos em minsculo. O conjunto P define as regras de

78

produo ou regras sintticas, onde definida a ordem correta da estrutura sinttica


e ento definidos os no terminais e terminais que correspondem a cada sentena.
J o smbolo S define o smbolo inicial da gramtica, logo todas as anlises ou
gerao de sentenas comeam a partir deste smbolo.

Na figura 2.38 demostrado um exemplo de gramtica.


G = ({S} , {a,b} , {S aS, S b}, S)
Figura 2.38 Exemplo de gramtica adaptado de RAMOS et al. (2009)
Alm de gerar sentenas, a gramtica pode validar cadeias de entrada para
verificar se uma cadeia est sintaticamente correta (AHO et al., 2006) (GRUNE,
2001). Aplicando derivao em uma gramtica, a partir de uma cadeia de entrada,
possvel validar sintaticamente esta entrada, este procedimento visualizado na
figura 2.39.
Dada a gramtica: G = ({S} , {a,b} , {S aS, S b}, S)
Cadeia: aaab
Derivaes: S aS aaS aaaS aaab Cadeia aceita
Figura 2.39 Exemplo de derivao adaptado de RAMOS et al. (2009)
A gramtica mostrada at agora do tipo livre de contexto.
Na forma geral de uma produo livre de contexto tm-se:
A

onde:
AN

// A pertence a N

(N U T)+

//Alfa pertence a (N unio T, mais Vazio)

Ou seja, A que um smbolo no terminal e parte , podem ser compostos por


no terminais, terminais, ambos ou vazio. Do lado esquerdo s pode haver um no
terminal, logo o no terminal A pode ser substitudo por em qualquer contexto, isto
sem depender de qualquer anlise dos smbolos que sucedem ou antecedem A.
Respeitando estas regras, a gramtica do tipo livre de contexto (AHO et al., 2006)
(APPEL, 1999).

79

J na figura 2.40, observa-se uma gramtica sensvel ao contexto.


G = ({A,B,C} , {a,b} , {AAB ,ABAC, CabA} , A)
Figura 2.40 Exemplo de gramtica sensvel ao contexto adaptado de AHO et al.
(2006)
Observando a figura 2.40, fcil notar que um dos termos das regras de
produo possui dois smbolos no terminais do lado esquerdo da produo, que no
caso ABAC, isto implica em uma gramtica sensvel ao contexto (AHO et al.,
2006) (APPEL, 1999) .

Para o estudo de compiladores/interpretadores s interessa a gramtica livre de


contexto (GLC), pois as linguagens artificiais para sistemas computacionais so do
tipo GLC (AHO et al., 2006) (APPEL, 1999).

Outro ponto importante na construo de compiladores/interpretadores que a


gramtica seja no ambgua.

A ambiguidade significa vrias interpretaes para uma mesma sentena


(GRUNE, 2001).

Num compilador/interpretador no pode existir ambiguidade, pois numa situao


dessa o compilador/interpretador no reconheceria corretamente uma cadeia logo,
acabaria interpretando a sentena de forma errada.

Na figura 2.41, apresentada uma gramtica ambgua, com uma cadeia de


entrada e suas duas rvores de derivao, demonstrando a ambiguidade. A
ambiguidade neste exemplo ocorre devido aos operadores de adio, subtrao,
multiplicao e diviso terem a mesma prioridade.

80

Gramtica:
G = ({E} , {+,-,*,/,(,),x} ,P ,E)
P = { E E + E | E E | E * E | E / E | (E) | x }
Cadeia:
x+x*x
rvores de derivao:

E
E
E
x

*
E
x

E
E

+
E
x

E
*

E
x

Figura 2.41 Demonstrao de ambiguidade de uma gramtica adaptada (GRUNE,


2001).

Para o funcionamento correto de um compilador/interpretador necessrio se


eliminar a ambiguidade. Partindo-se da gramtica da figura 2.39, possvel
transform-la numa gramtica equivalente no ambgua, conforme apresentado na
figura 2.42. Isto feito basicamente impondo-se precedncia de operadores.
Gramtica:
G = ({E} , {+,-,*,/,(,),x} ,P ,E)
P = { E E + T, | E T | T
T T * F | T T / F | F
F x | (E) }
Figura 2.42 Gramtica no ambgua adaptada (GRUNE, 2001)

Eliminar a ambiguidade, como foi comentado anteriormente, basicamente


impor a precedncia de operadores. Conforme so observados na figura 2.42, os
elementos que possuem maior precedncia se encontram nos ramos mais inferiores
da estrutura gramatical, para esse caso se tem os parnteses abrindo ( e fechando
), que esto relacionados com o no terminal F. Em uma hierarquia superior se

81

encontra a multiplicao e a diviso, vinculados ao no terminal T. e uma camada


acima, se encontra a soma e a subtrao vinculados ao no terminal E.

Alm do problema da ambiguidade das gramticas, existe tambm o problema


da recurso esquerda, que deve ser eliminado.

Segundo AHO et al.(2006) gramticas que possuem recurso a esquerda


constituem um problema no momento de efetuar a traduo do cdigo, ou de fazer
interpretao usando tcnicas de traduo dirigida sintaxe, ou mesmo na
interpretao.

Esta limitao ocorre devido s caractersticas construtivas dos analisadores


sintticos do tipo TOP-DOWN, que basicamente fazem a derivao do smbolo
inicial da gramtica at os finais, que so os TOKENS.

Para esse problema existem duas solues clssicas:

Utilizao de analisadores sintticos BOTTOM-UP;

Eliminao de recurso esquerda

Para a primeira soluo necessria construir um analisador sinttico mais


complexo do que TOP-DOWN, pois o este analisador trabalha com a derivao dos
smbolos finais ou TOKENS at o smbolo inicial da gramtica, sendo assim um
algoritmo mais complexo. Porm eliminando a recursividade esquerda e no
modificando o sentido original da representao gramatical possvel ento utilizarse

analisadores

do

tipo

TOP-DOWN

para

construo

de

compiladores/interpretadores (AHO et al., 2006) (APPEL, 1999).

Com a utilizao de analisadores do tipo TOP-DOWN facilitado o


desenvolvimento de compiladores/interpretadores.

82

Abaixo demostrado o processo de eliminao da recursividade esquerda,


considere as seguintes produes:
EE+T
ET

Eliminando a recurso esquerda tm-se:


E T E
E + TE
E

( Vazio )

Na gramtica original E pode levar E + T ou T, constituindo uma recurso a


esquerda devida j sua primeira produo. Essa mesma gramtica possui uma
expanso esquerda como: E E + T E + T + T E + T + T + T, e assim por
diante. Observando a gramtica original, em algum momento feita a substituio
do ltimo E por um T, em outras palavras, a produo E gera uma soma de Ts.
Observando novamente a gramatica original a mesma pode gerar um nico T.
Portanto a nova gramtica deve gerar apenas um T ou uma soma de Ts.
Analisando agora as novas regras de produo j feitas eliminao da
recursividade esquerda, se observa que E leva TE, onde E pode levar a nova
regra que + T E ou vazio. Neste caso utilizando as duas novas regras pode se ter
a soma de T, como no exemplo: E T E T + TE T + T + TE..., e assim desta
forma at que o no terminal E leve para vazio, configurando uma soma de Ts.
Utilizando-se a primeira e a ltima regra de produes novas, configura-se a
derivao: E T ET. Este ltimo caso prova-se que as duas gramticas so
equivalentes.

Agora j que as duas gramticas so equivalentes possvel utilizar o novo


formato para a construo de compiladores/interpretadores. Pois se utilizando de
uma gramtica sem recurso esquerda, possvel o uso de analisadores do tipo
TOP-DOWN, facilitando assim o desenvolvimento da linguagem FCL.

83

Outro processo importante na construo de linguagens artificiais a fatorao


esquerda.

O processo de fatorao esquerda tem o objetivo de simplificar a gramtica da


linguagem encontrando termos em comum, similar evidncia de expresses na
matemtica (AHO et al., 2006) (GRUNE, 2001).

Considerando-se as seguintes produes:


S if E then S else S
S if E then S

E aplicando-se a fatorao esquerda, obtm-se:


S if E then S X
X

( Vazio )

X else S

Uma gramtica fatorada facilita a construo de compiladores/interpretadores,


pois a mesma evidencia termos j existentes, simplificando a gerao de cdigo ou
interpretao (APPEL, 1999).

Todas essas transformaes so necessrias para se tentar chegar a uma


gramtica LL(0)3 , e ento usar o mtodo de anlise de descendente recursiva que
uma tcnica de anlise TOP-DOWN (AHO et al., 2006) (APPEL, 1999).

A partir da gramtica LL(0) possvel se construir um reconhecedor sinttico


que faa a anlise sinttica, permitindo tambm se fazer outras anlises e traduo
dirigida pela sintaxe ou interpretao.

Uma caracterstica das gramticas do tipo LL(0) que a anlise feita da


esquerda para a direita (Left-to-right parser) derivando-se da raiz da gramtica
3

Left-to-right parse and Leftmost derivation

84

(smbolo inicial) at os terminais (folhas), criando assim a rvore gramatical ou AST


atravs das derivaes (Leftmost derivation).

Existem outras classes gramaticais como: LR(k),SLR,LALR(1) etc.


Na figura 2.43 pode-se ver um comparativo entre as classes gramaticais, onde
possvel observar que certas classes gramaticais fazem parte de outras.

Figura 2.43 Hierarquia das classes gramaticais (APPEL, 1999)

At o momento foram discutidos o formalismo e as caractersticas das


gramticas. Porm o passo mais importante aps a montagem do formalismo da
gramtica o reconhecimento de uma cadeia de entrada, neste caso de um
programa fonte que ser submetido pela anlise da gramtica. Quem faz essa
anlise o analisador gramatical. Para esse caso, demostrado ao analisador
descendente recursivo que se trata de uma tcnica TOP-DOWN.

Na figura 2.44 demostrado um trecho de uma gramtica e um pseudocdigo


que faz a anlise gramatical, utilizando-se da tcnica de anlise descendente
recursiva. O mtodo se baseia no passeio pela lista de TOKENS de forma linear,
fornecidas pelo analisador lxico. O contedo dessa lista comparado com os
elementos gramaticais esperados.

85

Regra de produo:
R if B then R
Cdigo:
procedure ProcessR
if (token = tkIF)
call NextToken()
call ProcessIF()
else if (...)
...
endif
endprocedure
procedure ProcessIF()
call processB()
if (token = tkThen)
call NextToken()
call processR()
else
call ErrorMessage()
endif
endprocedure

Figura 2.44 Regra de produo para pseudocdigo (adaptado de AHO et al., 2006)

A tcnica da anlise descendente recursiva consiste em aplicar o seguinte


mtodo: se o smbolo da gramtica for um terminal ou simplesmente TOKEN, devese validar o mesmo com um condicional e avanar para o prximo da lista (aplicando
o comando NEXTTOKEN). Se o smbolo for um no terminal, deve-se fazer a
chamada de uma funo de mesmo nome. A tcnica tem o nome de descendente
recursiva, pois em algum momento so feitas chamadas recursivas em algumas
funes.

Neste item foram apresentados tpicos importantes para a construo do


interpretador proposto neste trabalho, que so: a gramtica livre de contexto do tipo
LL(0) e a anlise descendente recursiva. Esses tpicos so importantes, pois com
eles possvel determinar se um cdigo fonte em uma linguagem est corretamente
escrito.

No prximo item apresentada a anlise semntica. Onde sua funo verificar


se o contedo escrito na linguagem fonte est semanticamente correto.

86

2.6.3 Anlise semntica


Segundo JOSE NETO [1987]: Denomina-se, genericamente, semntica de uma
sentena, o exato significado por ela assumido dentro do texto em que tal sentena
se encontra no programa-fonte.

Ento, a anlise semntica trata o significado ou sentido que uma sentena tem
dentro de um programa-fonte.

Para demonstrao de como fundamental utilizar-se de semntica, a figura


2.45 apresenta regras gramaticais e frases em lngua portuguesa ilustrando o uso
da mesma.

Regras Gramaticais:
FRASE SUJEITO VERBO PREDICADO
SUJEITO edinei | eduardo | renato
VERBO bebe | compra
PREDICADO gua | gasolina
Exemplos:
1 edinei compra gasolina
2 eduardo bebe gua
3 renato bebe gasolina
Os exemplos (1) e (2) esto sintaticamente e semanticamente corretos.
J o exemplo (3) est sintaticamente correto, porm est errado semanticamente,
pois ningum consegue beber gasolina.

Figura 2.45 Ilustrao de semntica (adaptado de AHO et al., 2006)

A figura 2.45 demostra que certas frases podem estar sintaticamente corretas,
porm semanticamente erradas. Tudo depende do contexto ou aplicao.

conceito

apresentado

na

figura

2.45

pode

ser

aplicado

em

compiladores/interpretadores. Por exemplo, as matrizes so estruturas de dados


muito utilizadas em programao de computadores, a matriz sempre dimensionada
por um nmero inteiro, e nunca por um nmero do tipo ponto flutuante. Uma maneira
de se implementar a semntica pelas regras gramaticais, ento a semntica ser

87

efetuada pelo mdulo/fase da anlise sinttica. Para o caso da matriz possvel


definir uma regra de produo para isso. Uma possvel soluo :

DEFINICAO dim id [numint] of TIPO


TIPO integer | Real | String

Outro exemplo seria o uso de operadores entre as variveis para uma linguagem
hipottica. Por exemplo, dado:
R=A+B
As possveis aes semnticas seriam:

Se A e B so Strings, ento R a concatenao de A e B.

Se A e B so inteiros, ento R a soma de A e B.

Se A inteiro e B String, ento converta A para String e R a


concatenao de String (A) e B.

Se A inteiro e B String, ento gere um erro.

Em resumo, a anlise semntica depende muito da linguagem que est sendo


construda e o projetista da linguagem dever prever as possveis aes.

Alm de uma gramtica poder validar a semntica de uma linguagem, podem-se


usar tambm estruturas de dados como pilhas para salvar estados importantes
durante a anlise sinttica (GRUNE, 2001) (APPEL, 1999).

No prximo item apresentada a forma de interpretao de cdigo em


interpretadores.

2.6.4 Interpretao de cdigo


No tpico 2.6.3 deste trabalho, JOS NETO definiu que a semntica de uma
sentena seu significado exato em um determinado seguimento. Em outras

88

palavras, por exemplo: um cdigo que faz uma determinada operao matemtica
dentro de uma estrutura condicional, s deve executar essa conta se o condicional
for verdadeiro, caso contrario, no.

Na figura 2.44 apresentado um exemplo de alto nvel demostrando um cdigo


que possui um condicional e uma operao matemtica dentro do condicional.
...
if (VARIAVEL = 10)
VARIAVEL = VARIAVEL + 20
endif
...

Figura 2.44 Exemplo de condicional

Como observado na figura 2.44, a varivel s ser incrementada no valor de


20 se originalmente a mesma for de valor 10.

Para AHO et al. (2006) a interpretao de cdigo uma ao semntica. Em


outras palavras, aes como, determinar se um condicional verdadeiro ou falso,
efetuar operaes matemticas e provocar desvios, so aes semnticas.

As

aes

semnticas

podem

ser

executadas

por

compiladores

ou

interpretadores. No caso de compiladores feita para traduo de mquina, porm


no caso de interpretadores feita a interpretao propriamente dita.

A interpretao normalmente executada dentro do analisador sinttico, atravs


de um motor ou engine. Esse motor ou engine executa as aes semnticas
acionadas pelo analisador sinttico (GRUNE, 2001) (APPEL, 1999).

Uma forma de construo dos motores de execuo de interpretadores o uso


de estruturas de dados como pilhas, para avaliar as expresses (APPEL, 1999).

89

Para propsitos de diferenciao de compiladores e interpretadores, nas


prximas figuras sero apresentados de forma simplificada os processos a partir da
anlise sinttica executada por um compilador e um interpretador para uma mesma
linguagem ou gramtica. Para isso em 2.47 apresentado o processamento comum
entre os dois processos, e em 2.48 e 2.49 as partes complementares respectivas
dos processos compilador e interpretador.
Gramtica:
S C
C if ( B ) C endif
C print(num)
B id = num
cdigo de entrada:
if (A = 0)
print (0)
endif
rvore gramatical produzida:
S
C
if

<FIM> Marca de final de


instruo

( B ) C

endif

A = 0 print( 0 )

Figura 2.47 Anlise sinttica

Na figura 4.48 apresentada a parte complementar referente a um compilador.


Gerao do cdigo a partir da gramtica:
MOV EAX,A
Gerado pelo no-terminal B
CMP EAX,0
JNZ FIM

Desvio gerado pelo terminal IF

PUSH 0
CALL print

Gerado pelo 2 no-terminal C

FIM:
Figura 2.48 Gerao de cdigo de um compilador

90

Observando a figura 2.48 para cada elemento reconhecido pela gramtica, o


analisador sinttico emite uma ao semntica que a gerao/impresso em um
arquivo do cdigo em linguagem de mquina correspondente a cada segmento
reconhecido. Aps a execuo do compilador se tem um arquivo com instrues de
linguagem de montagem ou mquina, que em termos prticos, o arquivo
executvel de um computador. Para o exemplo da figura 2.48 gerado um cdigo
compatvel com computadores PC x86.

Na figura 2.49 apresentada a sada de um interpretador usando sistema pilha


para se avaliar uma expresso.
Interpretao do cdigo a partir gramtica:
PUSH A
Gerado pelo no-terminal B
PUSH 0
OPERAAO_IGUAL
TOPO_PILHA = VERDADEIRO
SE VERDADE:
PUSH 0
IMPRIMA_PILHA

Gerado pelo terminal IF


Gerado pelo
2 no-terminal C

Figura 2.49 Interpretao de cdigo

Um interpretador normalmente gera a sada de comandos no para um arquivo


como o caso do compilador, mas sim para estruturas em memria RAM
organizadas na forma de lista (APPEL, 1999) (GRUNE, 2001).
Essas listas possuem comandos simples como:

Operaes com pilha


o Empilhe (PUSH) e desempilhe (POP)
o Operaes matemticas com topo da pilha (+, -, *, /)
o Comparaes com o topo da pilha (=,<>,<,<=,>,>=)

Aes
o Receber informaes do teclado
o Imprimir informaes no vdeo

91

O interpretador faz uma leitura linear dessa lista se utilizando de uma mquina
de pilha para avaliar as expresses e, portanto execut-las. Na

figura

2.50

apresentado essencialmente o principio de execuo da lista com a mquina de


pilha para avaliar comandos.

Considere os comandos em uma linguagem de alto nvel:


A = (10 + 5) * 3
Convertendo em uma lista de instrues para mquina de
pilha:
PUSH 10
PUSH 5
ADD
PUSH 3
MUL
POP A
Exibindo a execuo de cada instruo e seu efeito na
pilha:

Figura 2.50 Mquina de pilha

No exemplo da figura 2.50 foi apresentado que um procedimento de clculo em


uma linguagem de alto nvel que foi convertido em uma lista de instrues simples.
Essas instrues manipulam uma pilha, e so: Insero de valores (PUSH),
Remoo de valores para uma varivel (POP), Adies (ADD), Multiplicaes (MUL)
etc. Efetuando operaes na pilha, possvel executar diversas operaes ou aes
semnticas.

92

Para a execuo de uma linguagem de programao em um ambiente


distribudo so necessrios tpicos de redes de computadores como protocolos e
estrutura de camadas de rede entre outros. Esses tpicos so apresentados no item
2.7 deste trabalho.
2.7

REDES DE COMPUTADORES

As redes de computadores so formadas por estruturas que permitem a


comunicao entre dois ou mais computadores. Essas estruturas vo alm do
cabeamento ou sinal sem fio envolvendo inmeros componentes de hardware e
software, cada um destes componentes executa uma operao especfica,
permitindo assim o funcionamento de uma rede com um todo (TANENBAUM et al.,
2010).

Essas estruturas so chamadas de camadas. Estas camadas esto presentes


na implantao de redes de computadores. O modelo comumente utilizado na
comparao de redes o modelo ISO OSI (FOROUZAN, 2012).

O modelo ISO OSI composto de sete camadas. Na figura 2.51 apresentado o


modelo ISO OSI.

Figura 2.52 Modelo ISO OSI (adaptado de TANENBAUM et al., 2010)

93

De acordo com a figura 2.52 a camada um ou fsica, onde se propaga o sinal.


Este sinal pode ser transmitido por um cabeamento metlico, fibra tica ou mesmo
por ondas de rdio (comunicao sem fio). Devido ao meio de transmisso esses
sinais devem ser modulados corretamente para a sua transmisso.

Na camada dois ou de enlace, existem: o controle de acesso ao meio e


protocolos de checagem. O controle de acesso ao meio tem o objetivo de garantir
que o elemento transmitindo na rede seja o nico no momento (ou seja, obteve o
controle do meio de transmisso de forma exclusiva da camada um) desta forma a
mensagem a ser transmitida no ser comprometida ou perdida. Para a execuo
desta operao so utilizados algoritmos do tipo deteco de coliso, token ring,
entre outros.

A camada trs ou de rede, responsvel pelo roteamento de pacotes entre


redes. Esta funo fundamental para a conexo de redes geograficamente
diferentes, desta forma redes situadas fora de um contexto local (como por exemplo,
redes de computadores entre dois pases) podem se comunicar.

A camada quatro ou de transporte, responsvel por entregar um pacote, por


exemplo, em uma rede geograficamente diferente. A conexo das redes feita pela
camada trs. No entanto, um pacote pode se perder no trnsito entre as duas redes,
devido a diversos problemas, tais como falhas de link e de equipamento. A camada
quatro tem a responsabilidade de detectar esses problemas e enviar o pacote
novamente, se assim necessrio.

A camada cinco ou de sesso; tem o objetivo de definir uma sesso ou


conversa entre as partes que se comunicam em uma rede. Um exemplo melhor
para se definir este contexto o processo de login em uma rede de computadores,
ou em um sistema de internet banking. Onde depois de informado o usurio e senha
ao sistema, o mesmo o identifica e traz apenas as informaes relevantes a esse
usurio. Outros servios so fornecidos nesta camada como, por exemplo,
sincronizao.

94

A camada seis ou de apresentao, responsvel pela converso de dados que


podem existir entre tipos diferentes de sistema. Neste contexto existem diversos
tipos de computadores que usam sistemas de codificao de caracteres diferentes
como, por exemplo, ASCII usado em computadores PC e EBCDIC usado em
computadores mainframe IBM. Portanto quando feita a comunicao entre
computadores destes tipos, necessria uma converso e a mesma pode ser feita
na camada de apresentao.

A camada sete ou de aplicao, o domnio das aplicaes. a camada dos


servios que o usurio visualiza em uma rede, como por exemplo, servidor de email, servidor de arquivos, e servidor de impresso, etc.

Normalmente um usurio comum s visualiza as pontas do modelo ISO OSI


em uma rede, pois ele enxerga o cabeamento (camada um) e suas aplicaes
(camada sete) (FOROUZAN, 2012).

O protocolo de camada basicamente um conjunto de bytes ordenados de uma


forma linear. Esta organizao deve permitir a comunicao entre as partes
comunicantes e o fornecimento de servios destinados funcionalidade da camada
em questo (TANENBAUM et al., 2010).

O conjunto de bytes ordenados para a comunicao em rede tambm


chamado de pacote de dados.

Em outras palavras, o protocolo de camada composto basicamente, de regras


de formao e transmisso de pacotes.

Uma caracterstica dos protocolos de rede a capacidade de empilhamento das


camadas, ou pilha de protocolos. Para isso, dentro da camada sete ou de aplicao,
possvel inserir um novo protocolo (FOROUZAN, 2012).

95

Protocolos industriais utilizados para propsitos de superviso e controle, como


OPC e o MODBUS TCP/IP, so encapsulados na camada sete ou de aplicao.
Portanto a aplicao o protocolo encapsulado (FOROUZAN, 2012).

No captulo dois deste trabalho demonstrada a teoria envolvida na construo


de controladores fuzzy por retroalimentao, envolvendo desde a lgica fuzzy,
sensores,

princpios

de

retroalimentao,

atuadores,

motores,

teoria

de

compiladores/interpretadores de linguagens de programao at finalmente, redes


de computadores.

No captulo trs deste trabalho est apresentado o tpico: proposta do


trabalho, descrevendo os recursos utilizados, bem como os mtodos aplicados para
a construo do software de controle fuzzy conforme a norma IEC 61131-7.

Para a demonstrao do software de controle fuzzy, foi construdo um


controlador de velocidade utilizando o mesmo. A construo do controlador envolve
a montagem fsica do prottipo, bem como a montagem das regras fuzzy para o
controle por retroalimentao.

96

3 PROPOSTA DO TRABALHO
No tpico 1.3 foi apresentada a metodologia utilizada neste trabalho.
Primeiramente foi feita uma pesquisa bibliogrfica com o objetivo de fundamentar a
teoria a aqui aplicada sendo esta descrita no captulo dois.

No captulo trs so apresentados os resultados desta pesquisa para a


construo de um software de controle fuzzy por retroalimentao baseado na
norma IEC 61131-7. No captulo trs so tambm apresentados os materiais
utilizados, bem com as etapas necessrias para a construo do software de
controle e do prottipo de testes. No captulo quatro so apresentados os resultados
obtidos, e as regras do controlador junto com suas curvas de respostas.

Os aspectos construtivos do software j foram discutidos originalmente em


(LEGASPE; DIAS et al, 2012) e o software est disponvel para download gratuito
pela internet (LEGASPE, 2012).
3.1

CONSTRUO DO SOFTWARE

O software de controle foi desenvolvido em linguagem JAVA.

A linguagem permite maior portabilidade do software entre plataformas de


hardware distintas. A portabilidade de software possvel, pois na plataforma JAVA
o cdigo executado em uma mquina virtual. Essa mquina executa cdigos de
mquina fictcios chamados bytecodes, e esses bytecodes so gerados por um
compilador JAVA (APPEL, 1999).

Portanto, existindo uma mquina virtual JAVA para uma plataforma de hardware
possvel executar um determinado programa nesse equipamento. Mquinas
virtuais JAVA ou JAVA virtual machines (JVM) esto disponveis em diversos
computadores e em software PLCs, permitindo assim que o programa de controle
fuzzy seja executado nesses equipamentos.

97

O processo do desenvolvimento do software relativamente complexo. O


mesmo ser organizado em mdulos. Esses mdulos podem ser organizados em
camadas. Algumas dessas camadas podem representar partes do software e
tambm partes fsicas de um sistema de controle.

Na figura 3.1 apresentada a arquitetura do sistema de controle proposta, onde


tanto o software de controle como os componentes fsicos, esto organizados em
camadas.

A figura 3.1 foi inspirada na organizao do modelo ISO OSI. Onde as camadas
quatro e um da figura 3.1 correspondem s pontas do modelo ISO OSI, ou seja, s
camadas, sete (aplicao) e um (fsico) da figura 2.52.

Pelo modelo de rede ISO OSI a camada sete onde est a aplicao, ou seja,
onde est funcionalidade real do ponto de vista do usurio, em outras palavras,
a interface com o usurio. Neste contexto a camada quatro da figura 3.1 prov a
mesma funcionalidade.

A camada um do modelo ISO OSI e da figura 3.1, representa a parte fsica. O


modelo de rede representa o cabeamento ou local onde ocorrer a troca de
mensagens, j para o caso da figura 3.1 onde ocorre o controle (motor e sensor
encoder), ou seja, a parte fsica do processo.

Na figura 3.1, as camadas dois e trs representam respectivamente o controle


do inversor de frequncia e o controle do CP junto lgica fuzzy. Essas camadas
tem a funo de dar suporte camada quatro (aplicao) para exibir o controle em
tempo real.

98

Figura 3.1 Arquitetura do sistema de controle proposto

Conforme apresentado na figura 3.1, na camada quatro est o software de


controle fuzzy-monitor que efetua o monitoramento. O objetivo desta camada
visualizar os controles (observar as variveis PV e CV do sistema) e tambm definir
as regras de controle conforme a norma IEC 61131-7. O fornecimento das regras de
controle feita atravs de um script na linguagem FCL.

A camada quatro conversa com a camada trs atravs de uma rede ethernet. O
componente de software localizado na camada trs chamado de fuzzyPLC.
O fuzzyPLC o programa principal dentro da arquitetura proposta e executa
diversas tarefas especiais que so:

99

Comunicao com a camada quatro: por meio dessa comunicao


recebido o script FCL com as regras do controle e tambm so enviados
para o programa fuzzy os valores em tempo real de PV, CV e SP.

Controle do CP real: o programa fuzzyPLC responsvel por escravizar


o CP que est acoplado com os sensores e atuadores de um processo
industrial. Para esse propsito, ser utilizada a rede Siemens PPI/RS485
para efetuar a leitura dos sensores e o acionamento dos atuadores.

Interpretao do arquivo FCL: ler e interpretar o arquivo na linguagem


FCL definida pela norma IEC 61131-7. Para esse objetivo necessrio
fuzzyficar as variveis de entradas, efetuar o mtodo de inferncia de
Mamdani e defuzzyficar as sadas.

O CP est contido dentro da camada trs, e conforme comentado anteriormente


o software fuzzyPLC deve efetuar a comunicao com o CP atravs do protocolo
PPI.

O CP deve enviar comandos de ao de controle para a camada dois, ou seja, o


driver de acionamento que neste caso est sendo representado por um inversor de
frequncia. Outra responsabilidade do CP a leitura dos sensores, que neste caso
est sendo representada por um encoder (camada um).

Como foi comentado anteriormente, a soluo de software proposta


basicamente constituda por dois componentes de software chamados fuzzy-monitor
e fuzzyPLC que correspondem s camadas um e dois. Nos tpicos 3.1.1 e 3.1.2 so
apresentados em detalhes esses componentes de software.
3.1.1 Programa Fuzzy monitor
O software fuzzy monitor tem como objetivo monitorar o controle de uma planta,
bem como a definio das regras atravs da linguagem FCL. Para esse intuito, foi

100

desenvolvida uma interface grfica para o software. Essa interface foi implementada
em linguagem JAVA.

Nas figuras 3.2 e 3.3 so apresentadas as telas para a parametrizao e


visualizao do controle respectivamente. A seleo desses modos feita pela aba
ou guia de janelas chamadas de: regras fuzzy e visualizao do controle.

Figura 3.2 Programa fuzzy monitor em regras fuzzy

A primeira aba ou guia (regras fuzzy) exibe o script na linguagem FCL que ser
executado. J na aba ou guia visualizao do controle, so apresentados os valores
em tempo real de PV e CV.

101

Figura 3.3 Programa fuzzy monitor em visualizao do controle

Existem duas reas comuns nas figuras 3.2 e 3.3, que correspondem parte
superior e inferior. Onde essas mesmas reas so camadas dentro do software de
regras fuzzy e controle CP.

A parte superior regras fuzzy tem o objetivo de apontar para um arquivo que
contenha instrues no formato FCL. J a parte inferior, controle CP, tem o objetivo
de efetuar configuraes gerais tais como, porta de comunicao com o CP, setpoint
aplicado, e rea na memria do CP para troca de dados e fatores de escala para
Erro e CV.

Conforme comentado anteriormente, o software fuzzy monitor apenas uma


interface grfica que facilita ao usurio a definio de um controlador pela norma IEC
61131-7. Porm quem executa de fato o controle o programa fuzzyPLC.

O componente de software fuzzyPLC apresentado em maiores detalhes no


tpico 3.1.2 deste trabalho.

102

3.1.2 Programa FuzzyPLC


O componente de software fuzzyPLC parte central do software de controle
fuzzy. Foi anteriormente comentado que as trs principais funes so: comunicao
com a camada quatro, controle do CP e a interpretao do arquivo FCL.

3.1.2.1

Comunicao com a camada quatro

O software fuzzyPLC tem o objetivo de efetuar comunicao com a camada


quatro (software fuzzy monitor) para receber o arquivo FCL que contm as regras de
controle e tambm, de enviar os dados do controle sendo efetuados em tempo real.

Para esse intuito foi desenvolvido um protocolo prprio que ser encapsulado no
protocolo EtherNet (TCP-IP). O conceito de encapsulamento foi apresentado no
tpico 2.7 deste trabalho.

Na tabela 3.1 apresentado o diagrama de bytes do protocolo.


Tabela 3.1 Diagrama de bytes do protocolo
End. Origem

End. Destino

Comando

Tamanho dados

Dados

Check Sum

4 bytes

4 bytes

1 byte

N : 2 bytes

Valor numrico N

A primeira linha define o nome do campo e a segunda linha define o tamanho de


cada campo. Os campos representados na tabela 3.1 so:

Endereo origem: define o nmero IP do computador origem, ou seja, o


computador que ir enviar a mensagem.

Endereo destino: define o nmero IP do computador que ir receber a


mensagem.

Comando: define qual comando ou mensagem ser enviada, para mais


detalhes sobre os comandos consulte a tabela 3.2.

Tamanho: define o tamanho da rea de dados em bytes.

103

Dados: chamada de carga til do protocolo, em outras palavras so as


informaes aplicveis a um comando.

Check sum: uma rea de conferncia; feito um clculo para validar se as


informaes esto corretas, como o algoritmo CRC32.

Na tabela 3.2 so apresentado os comandos implementados dentro do software


de controle fuzzy.
Tabela 3.2 Comandos protocolo camada 1
Comando

Significado

Conectar a sistema

Desconectar o sistema

Enviar arquivo FCL

Definir parmetros do sistema

Executar controle fuzzy

Parar controle fuzzy

Zerar CV (Parar motor)

Solicitar valores PV e CV

Para cada comando que o solicitante enviar, existe uma resposta. Se uma
resposta no chegar no prazo de 2 segundos, detectado um erro no sistema, e
esse erro ser notificado ao usurio.

Na figura 3.4 apresentado o fluxo de execuo do protocolo entre os


programas fuzzymonitor e fuzzyPLC, que conecta os programas, define o programa
FCL a ser executado e inicializa o controle fuzzy.

104

Figura 3.4 Fluxo de execuo do protocolo de camada quatro

No diagrama da figura 3.4, as entidades ou programas que iro efetuar uma


conversa esto na parte superior dentro de um quadro azul. O emissor o quadro
esquerdo, ou seja, fuzzyMonitor; enquanto a entidade que responde direita o
fuzzyPLC. As solicitaes sero indicadas com uma seta cheia, enquanto as
repostas sero indicadas por uma seta tracejada. Em cima da seta representada a
mensagem em si. O entendimento do diagrama o seguinte:

O programa fuzzyMonitor solicita ao programa fuzzyPLC uma conexo, em


outras palavras, o programa fuzzy vai estabelecer uma sesso ou conversa
com o programa fuzzyPLC, para ento enviar novos comandos para o
mesmo. Para fazer essa conexo o programa fuzzyMonitor enviou ao campo
comando o valor zero alm de definir que a rea de dados de tamanho zero.

O programa fuzzyPLC recebe a informao e devolve uma confirmao na


forma de outra mensagem como resposta com o mesmo comando, porm
com uma informao na rea de dados cujo valor 1, isso indica que o
sistema foi conectado com sucesso.

Depois de conectados os dois componentes de software, necessrio definir


o arquivo FCL para efetuar o controle dentro do programa fuzzyPLC. Para
isso, o emissor envia uma mensagem com o comando dois que representa o
envio do arquivo FCL. feita a leitura do arquivo e o mesmo salvo na rea
de dados do protocolo. Porm, definido no campo tamanho dados, o
tamanho do arquivo a ser enviado para propsitos de controle no envio da
mensagem.

105

O programa fuzzyPLC recebe a mensagem que possui o arquivo, processa o


mesmo e efetua a confirmao enviando outra mensagem com o mesmo
comando para o emissor original, fuzzyMonitor, onde o campo dados agora
possui 1 indicando que o recebimento ocorreu com sucesso.

Por ltimo o emissor, ou seja, o programa fuzzyMonitor envia a solicitao da


execuo do controle fuzzy, atravs do comando quatro.

O software fuzzyPLC recebe o comando quatro, inicia o controle fuzzy e envia


para o emissor original a confirmao da execuo do comando.

Para mais detalhes da implementao do protocolo da camada um, est


disponvel o cdigo fonte do mesmo no site do programa (LEGASPE, 2012).
3.1.2.2

Controle do CP

A comunicao entre o programa fuzzyPLC e o CP, um dos pontos


fundamentais para o controle fuzzy, pois a inteligncia do controle est dentro do
programa fuzzyPLC. O CP basicamente faz as tarefas de leitura dos sensores e
acionamento dos atuadores, assim funcionando como interface para a planta a ser
controlada.

Conforme apresentado na figura 3.1 existe uma arquitetura de rede entre o CP


e o software fuzzyPLC.

Essa rede chamada de PPI, que significa em lngua portuguesa interface


ponto a ponto, uma interface de rede que utiliza o cabeamento do tipo RS485, e
tem o objetivo de conectar diversos tipos de equipamentos em uma rede industrial
(SIEMENS, 2009).

A rede industrial PPI utilizada em equipamentos do fabricante SIEMENS. O


prprio fabricante comercializa drivers de software para a comunicao com esses
dispositivos, assim facilitando a comunicao entre computadores e equipamentos
atravs desse tipo de rede (SIEMENS, 2009).

106

Devido ao problema do custo do driver de comunicao, um grupo de


programadores desenvolveu um driver de cdigo aberto e disponvel para inmeras
linguagens de programao como: C/C++, JAVA, C# (LIBNODAVE, 2012).

Por ser de cdigo aberto, no existem custos para seu uso. Esse driver ou
biblioteca chamado de LIBNODAVE, o projeto de cdigo aberto tem esse nome,
pois o driver original do fabricante chamado de LIBDAVE (LIBNODAVE, 2012).

Esse driver ou biblioteca possui comandos relativamente simples, tais como:


conectar a um CP, enviar dados e receber dados. Na verdade o que esse
componente de software faz enviar pacotes de dados e receber pacotes de dados
orientados por byte, similar a tabela 3.1.

Para facilitar o desenvolvimento do software, foi desenvolvida uma classe


chamada CPSiemens, essa classe tem o objetivo de encapsular os comandos da
biblioteca LIBNODAVE e simplificar os comandos dentro do software principal.

Na tabela 3.3 esto descritos os mtodos pblicos da classe CPSiemens e sua


aplicao.
Tabela 3.3 Mtodos da classe CPSiemens
Mtodo

Aplicao

construtor - CPSiemens(String sPort)

Construtor do sistema e informa qual a


porta serial para conexo.

boolean Connect()

Efetua a conexo ao CP, retorna


verdadeiro se conseguir conectar, caso
contrrio retorna falso.

void Disconnect()

Desconecta do CP.

int ReadVar(int iPos)

L uma varivel do CP, onde iPos a


posio da varivel na memria do CP.

void WriteVar(int iPos,int iValue)

Escreve uma varivel no CP, onde iPos


a posio da varivel na memria do CP e
iValue o valor a ser escrito.

Para mais detalhes sobre a classe CPSiemens consulte o anexo A.

107

Utilizando a classe descrita na tabela 3.3, a leitura e escrita de variveis dentro


CP se torna uma tarefa simples, pois para o processo interpretao do arquivo FCL,
o uso das variveis de entrada e sada so fundamentais.
3.1.2.3

Intepretao do arquivo FCL

Para a interpretao do arquivo FCL so necessrias diversas fases para o


processamento correto do arquivo. Essas fases so chamadas respectivamente:
anlise lxica, anlise sinttica e interpretao de cdigo, visto que a teoria dos
mesmos foi apresentada no tpico 2.6 deste trabalho.

Na figura 3.5 apresentada a organizao do interpretador utilizado neste


trabalho.

Figura 3.5 Fluxo de execuo do protocolo de camada um

A primeira fase do interpretador o analisador lxico. Conforme foi apresentado


no tpico 2.6.1 deste trabalho, a menor unidade de reconhecimento existente em um
cdigo fonte o TOKEN. Para se desenvolver um analisador lxico fundamental
enumerar os TOKENS a serem utilizados em uma linguagem. Enumerando as
palavras chaves da linguagem FCL e analisando exemplos da linguagem, possvel
organizar em uma tabela a lista de TOKENS necessrios para se construir a
linguagem FCL.

108

Na tabela 3.4 apresentada a lista de TOKENS elaborada para a linguagem


FCL, a mesma organizada em quatro colunas que so: o tipo, palavra chave, ID,
nmero ou elemento de texto. Na segunda coluna apresentado o nome do TOKEN
ou contedo. A terceira coluna uma representao simples ou codificada, que ser
utilizada mais tarde na anlise sinttica. E a quarta e ltima coluna, uma breve
descrio sobre aplicao e utilidade.

109

Tabela 3.4 Lista de TOKENS


Tipo
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
P. Chave
ID
Nmero
Nmero
Elemento
Elemento
Elemento
Elemento
Elemento
Elemento

Nome Token
FUNCTION_BLOCK
END_FUNCTION_BLOCK
FUZZIFY
END_FUZZIFY
RULEBLOCK
END_RULEBLOCK
TERM
REAL
VAR_INPUT
VAR_OUTPUT
END_VAR
OR
MAX
ASUM
BSUM
AND
MIN
ACCU
NSUM
IF
THEN
NOT
IS
METHOD
COG
COGS
COA
LM
RM
DEFAULT
ID
Nmero inteiro
Nmero float
,
:
;
:=
(
)

Forma simples
tkfunction_block
tkend_function_block
Tkfuzzify
tkend_fuzzify
Tkruleblock
tkend_ruleblock
Tkterm
Tkreal
tkvar_input
tkvar_output
tkend_var
Tkor
Tkmax
Tkasum
Tkbsum
Tkand
Tkmin
Tkaccu
Tknsum
Tkif
Tkthen
Tknot
Tkis
Tkmethod
Tkcog
Tkcogs
Tkcoa
Tklm
Tkrm
Tkdefault
Tkid
tkNumint
tkNumFloat
Tkcomma
tktwo_points
Tkend
Tkassign
tkLparam
tkRparam

Aplicao/Utilidade
Incio de bloco principal
Fim de bloco principal
Incio rea de fuzzyficao
Fim rea de fuzzyficao
Incio area de regras
Fim rea de regras
Cria termo lingustico
Define que a varivel ponto flutuante
Incio rea variveis de entrada
Incio rea variveis de sada
Fim de rea de variveis
"Ou" lgico
Mximo
Soma algbrica
Soma limitada
"E" lgico
Mnimo
Mtodo de acumulao
Soma normalizada
Comando "se"
Ento
"No" lgico
Comparao ""
Define o mtodo de defuzzyficao
Centro de gravidade
Centro de gravidade para elem. pontuais
Centro de rea
Mais a esquerda
Mais a direita
Valor padro de defuzzuficao
Identificador ou nome prprio
Nmero inteiro
Nmero ponto flutuante
Vrgula
Dois pontos
Ponto e vrgula
Associao/Atribuio
Abrindo parnteses
Fechando parnteses

110

O analisador lxico construdo para esse trabalho efetua a varredura do texto de


entrada e converte esse texto na codificao da coluna trs da tabela 3.4. Essa
codificao apenas um nmero ou cdigo, em outras palavras. tkfunction_block
tem o valor zero e tkend_function_block tem o valor um e assim por diante.

Para esse propsito foi construdo um algoritmo genrico (varredura de tabela)


que atravs da entrada (arquivo fonte) com uma tabela de TOKENS (tabela 3.4
apenas as palavras chave e elementos), faz o reconhecimento a partir de uma
varredura do texto de entrada contra a tabela. Na figura 3.6 pode-se visualizar parte
da implementao da tabela de varredura.
Public static TStringToken StringToken[CountPreSimbolDef] = {
{"FUNCTION_BLOCK"
, tkfunction_Block
{"END_FUNCTION_BLOCK", tkend_Function_Block
{"FUZZIFY"
, tkfuzzify
{"END_FUZZIFY"
, tkend_fuzzify

},
},
},
},

...

Figura 3.6 Implementao da tabela de varredura

Entretanto, alguns elementos de texto no sero reconhecidos por esse mtodo,


como por exemplo: nmeros e identificadores (nomes prprios, de variveis etc.).
Para esse propsito, utilizada a mquina de estado chamada autmato finito, que
foi apresentada no tpico 2.6.1 deste mesmo trabalho. Na figura 3.7 apresentado o
autmato finito que efetua o reconhecimento dos trs itens restantes que so:
identificadores, nmeros inteiros e nmeros de ponto flutuante.

Figura 3.7 Autmato finito implementado

111

Com o analisador lxico reconhecendo todos os elementos dentro da linguagem,


esse gera ento uma lista com esses elementos ou lista de TOKENS e envia para a
prxima fase do interpretador que a anlise sinttica.

O componente do interpretador, que faz a anlise sinttica, o analisador


sinttico. Para efetuar a anlise sinttica, antes de tudo, deve-se ter a gramtica da
linguagem. Para aplicar certos mtodos de reconhecimento gramatical necessrio
que a gramtica esteja em uma determinada organizao, como se deseja utilizar a
tcnica

da

anlise

descendente

recursiva,

necessrio

aplicar

certas

transformaes em uma gramtica. Essas transformaes so: eliminao da


ambiguidade, da recurso esquerda e fatorao. Aplicando todas essas
transformaes se tem uma gramtica do tipo LL (0).

Na figura 3.8 apresentada a gramtica j aplicada s transformaes


necessrias, logo a mesma se encontra na forma LL (0). A gramtica da figura 3.8
est organizada da seguinte forma: os termos em maisculo so os no terminais e
os termos em minsculo e negrito so os terminais.

112

PROGRAMA function_block id CORPO end_function_block


CORPO
VARIAVEIS_ENTRADA VARIAVEIS_SAIDA FUZZYTERMS DEFUZZYTERMS
REGRAS
VARIAVEIS_ENTRADA Figura
var_input
LISTVAR end_var
3.8 Gramtica
do interpretador
VARIAVEIS_SAIDA var_output LISTVAR end_var
LISTVAR id : real LISTVAR
LISTVAR ; id : real LISTVAR
LISTVAR
FUZZYTERMS fuzzify id TERMS end_fuzzify
DEFUZZYTERMS defuzzify id TERMS end_fuzzify
TERMS term id := RETA TERMS
TERMS ; term id := RETA TERMS
TERMS accu : ACCUTYPES ; TERMS
TERMS method : METHODTYPES ; TERMS
TERMS default := numfloat ;
TERMS
ACCUTYPES max | bsum | nsum
METHODTYPES cog | cogs | coa | lm | rm
RETA (numfloat,numfloat) (numfloat,numfloat) RETA
RETA (numfloat,numfloat) (numfloat,numfloat) RETA
RETA
REGRAS ruleblock numint REGRASLIST end_ruleblock
REGRASLIST and : min ; if CONDICIONAL_LIST then id is id REGRASLIST
REGRASLIST if CONDICIONAL_LIST then id is id REGRASLIST
REGRASLIST ;
CONDICIONAL_LIST COMPARACAOPAR CONDICIONAL_LIST
CONDICIONAL_LIST and COMPARACAOPAR
CONDICIONAL_LIST or COMPARACAOPAR
CONDICIONAL_LIST
COMPARACAOPAR (id is id)

Figura 3.8 Gramtica desenvolvida para a FCL

Com a gramtica desenvolvida possvel aplicar o mtodo da anlise


descendente recursiva que foi apresentado no tpico 2.6.2 deste trabalho.

Utilizando-se da tabela de lista de TOKENS 3.4, da gramtica da figura 3.8 e do


mtodo da anlise descendente recursiva, possvel desenvolver um cdigo para
esse reconhecimento, uma parte desse cdigo apresentada na figura 3.9.

113

private boolean Programa()


{
boolean MyReturn = true;
if (pCurrentToken.TokenType == tkFunction_block)
{
this.GetNextToken();
if (pCurrentToken->TokenType == tkID)
{
this.GetNextToken();
//Processa corpo do texto
This.Processo_Corpo();
if (pCurrentToken.TokenType != tkEnd_Function_block)
{
MyReturn = false;
ErrorAnalize.AddError(pCurrentToken.line + 1,"No
encontrado End_Function_block");
}
Analisador sinttico.
}
else
Intrepretador
de cdigo
{
MyReturn = false;
ErrorAnalize.AddError(pCurrentToken.line + 1,"Nome do
bloco fuzzy no informado");
}
}
else
{
MyReturn = false;
ErrorAnalize.AddError(pCurrentToken.line
+ 1,"No encontrado
3.1.2.4
Unindo as partes
Function_block");
}
return MyReturn;
}

Figura 3.9 Trecho da implementao da anlise descendente recursiva

O caso apresentado na figura 3.9 a primeira linha da gramtica na figura 3.8.


A construo do cdigo da figura 3.9 conforme o mtodo descendente recursivo se
d de forma intuitiva para cada uma das regras da gramtica. Para maiores detalhes
desta construo, o cdigo fonte est disponvel na internet (LEGASPE, 2012).

Depois do reconhecimento lxico e sinttico o prximo passo a interpretao


do cdigo.

114

Com a anlise sinttica, durante o passeio recursivo das funes feito pelo
analisador descendente recursivo, foram determinados os seguintes elementos no
texto de entrada FCL:

Variveis de entrada

Variveis de sada

As pertinncias das variveis e seus termos

Regras SE

O analisador sinttico ir preencher estruturas de dados como objetos e listas


para posterior interpretao do mesmo. No trabalho proposto foi implementada a
classe TVARIABLE, que representou objetos do tipo varivel. Estes objetos so
organizados na seguinte forma:

Nome da varivel

Termos que o compem

Pertinncia sobre os termos

Para a implementao, existem duas listas de objetos do tipo TVARIABLE, uma


para variveis de entrada e outra para varveis de sada.
Na figura 3.10 apresentado o cdigo JAVA da estrutura TVARIABLE.
class TDATAXY
{
public double x;
public double y;
}
class TTERMS
{
public string NomeTermo;
public TDATAXY Dados[];
}
class TVARIABLE
{
public string NomeVariavel;
public TTERMS terms[];
}

Figura 3.10 Estrutura TVARIABLE

115

Para a implementao da tabela de regras SE, ser utilizada uma lista de


objetos TIF. Cada item da lista de objetos TIF representa uma linha no script FCL
original. Na figura 3.11 apresentada a organizao da lista de objetos TIF

Figura 3.11 Lista de objetos TIF

Onde TIF uma classe e, portanto gera objetos do tipo TIF. A classe TIF
pode ser visualizada na figura 3.12 em cdigo JAVA.
public enum eProxConector {ePC_AND, ePC_OR, ePC_NONE};
class TIF
{
public TVARIABLE v[];
public TTERMS t[];
public eProxConector pc[];
public TVARIABLE cv;
public TTERMS ct;
}

Figura 3.12 Classe TIF

Os trs primeiros elementos de TIF so matrizes, e so:

v: variveis usadas em uma linha do IF

t: termos a serem comparados com as variveis

pc: o conector entre os condicionais (AND, OR ou nenhum)

Os dois ltimos termos so:

cv: varivel consequente do IF

ct: termo consequente do IF

116

A ttulo de exemplo, considere a seguinte regra em FCL:

IF temp IS quente AND presso IS baixa THEN Vlvula IS aberta

Considerando a estrutura de dados apresentada na figura 3.12 com o exemplo


de regra acima descrito, a mesma ficaria organizada na memria conforme a figura
3.13.

Figura 3.13 Exemplo de objeto TIF na memria

Organizando os elementos de software j construdos que so: lista de objetos


TIF, lista de variveis de entrada, lista de variveis de sada e os valores das
variveis de entrada; possvel fazer o mtodo de inferncia fuzzy e ento calcular o
valor das variveis de sada.

Para que todos os componentes de software funcionem corretamente


necessrio o desenvolvimento de um ncleo integrador que ir conectar todos
esses componentes de software previamente comentados neste trabalho.

Na figura 3.14 apresentado sistema integrado como um todo, sendo que, todos
os componentes de software esto sendo coordenados pelo ncleo integrador. E
assim apresentada a arquitetura final de software montada para este trabalho.

117

Figura 3.14 Arquitetura final de software

A figura 3.14 a fuso de todos componentes de software j comentados


anteriormente.

Nessa figura so observados os programas fuzzy monitor e

fuzzyPLC com suas respectivas caractersticas e mdulos. No cdigo fonte o ncleo


integrador est sendo executado em um thread4 em separado, isto feito para que
as operaes de controle fuzzy e exibio de dados na tela no sejam
comprometidas, para que ambas possam ser executadas independentemente uma
da outra. O Nome do arquivo JAVA onde est implementado a maior parte do ncleo
integrador threadcore.java, o mesmo est apresentado no anexo B.

Neste item foram apresentados os detalhes construtivos do software de controle


fuzzy. Para validar o software, foi desenvolvido um prottipo de testes onde sero
efetuados diversos experimentos para validar o controlador fuzzy do software. No
prximo item apresentado o prottipo de testes.
3.2

Prottipo de testes

Para a validao do software de controle fuzzy foi desenvolvido um prottipo. O


prottipo um sistema de controle de velocidade de um motor assncrono acionado
por inversor de frequncia.
4

Linha de execuo usada para fazer processamento paralelo de programas

118

Foi montada fisicamente uma bancada de testes com equipamentos e softwares


descritos na tabela 3.5. Os equipamentos foram ligados conforme indicao da
figura 3.15. O experimento foi realizado na Faculdade de Engenharia de Sorocaba
(FACENS), no dia 2 de fevereiro de 2012.

A bancada de teste tem a finalidade de simular um processo industrial real, e


assim validar o software controlador.
Tabela 3.5 Lista de equipamentos e software utilizados
Tipo
Equipamentos

Item
CP SIEMENS s226
Mdulo de sada analgico EM232
Inversor de frequncia SIEMENS mm440
Motor de induo trifsico assncrono de 0,5 CV
Encoder relativo de 1000 pulsos
Computador IBM-PC

Softwares
FuzzyPLC
FuzzyMonitor

Conforme comentado anteriormente, a figura 3.15 representa o esquema de


ligao dos componentes. Na figura 3.15 tambm esto indicadas as conexes
eltricas dos componentes e acoplamento mecnico do encoder no motor, onde o
mesmo est organizado em um diagrama de blocos indicando suas interfaces.

Figura 3.15 Esquema de ligao do prottipo

119

No tpico 2.1 deste trabalho foi apresentado o motor de induo. E no tpico 2.2
deste mesmo trabalho foi apresentado o elemento para o acionamento do motor de
induo que o inversor de frequncia.

Alm do inversor de frequncia e do motor trifsico, esto tambm conectados


nesse arranjo, um CP e um sensor encoder. Neste mesmo trabalho j foram
apresentados os aspectos tericos do CP e de encoder respectivamente nos itens
2.3 e 2.3.1. O sensor encoder est acoplado mecanicamente no eixo do motor para
poder medir as velocidades. Conforme visto no tpico 2.3.1 deste trabalho o sensor
encoder envia um conjunto de pulsos proporcionais ao espao desenvolvido pelo
eixo do motor. O CP monitora esses pulsos atravs de entradas digitais,
computando, dessa forma, a velocidade.

O CP gera um sinal de tenso de 0 a 10 V, que corresponde a ao atuadora


equivalente a um sinal de 0% a 100% da varivel atuadora, que ser conectado ao
inversor de frequncia, conforme os itens 2.3.1. e 2.4 vistos nesse trabalho.

Na figura 3.16 exibida a bancada j completamente montada, baseado no


esquema da figura 3.15.

Figura 3.16 Bancada de testes montada

120

Na figura 3.17 so apresentados os detalhes da bancada de teste, tais como:


motor com encoder, inversor de frequncia e o CP com os mdulos de expanso j
conectados.

Figura 3.17 Detalhe da bancada de testes

O controlador fuzzy ser executado em um computador PC, onde o mesmo


escraviza o CP que controla o motor. A arquitetura do controle j foi apresentada no
tpico 3.1 deste mesmo trabalho.

Para auxiliar a validao do software junto com a bancada, foi desenvolvido um


conjunto de testes, que objetivam os seguintes itens:

Demostrar o desempenho do controlador na busca de um setpoint

Compensao de um controle a uma fonte de distrbio ou carga aplicada

Demonstrao do controle alm de uma nica varivel

Aplicao de diversos scripts FCL para a validao do software se o mesmo


for compatvel com a norma IEC 61131-7

Os resultados desses testes so apresentados no captulo quatro deste trabalho.

121

4 RESULTADOS OBTIDOS
Para demostrar o desempenho do controlador na busca de um setpoint; foram
desenvolvidas duas funes de pertinncia diferentes para a varivel erro. Nas
figuras 4.1 e 4.2 so apresentadas essas funes de pertinncia.

Figura 4.1 Funo de pertinncia caso um

Na figura 4.1 exibido o primeiro caso de teste. Conforme pode ser visto no
caso nessa figura, existe uma transio suave entre os termos da pertinncia.

Figura 4.2 Funo de pertinncia caso dois

J na figura 4.2, ntida a transio mais rpida entre os termos da pertinncia


se comparada figura 4.1.

Na varivel CV para cada caso, ser utilizada a mesma pertinncia do erro


apresentado.

122

O mtodo para a construo das regras de controle foi apresentado no tpico


2.5.8 deste trabalho. Para os casos um e dois sero utilizadas as mesmas bases de
regras que podem ser visualizadas na figura 4.3.
Se
Se
Se
Se
Se
Se
Se

erro
erro
erro
erro
erro
erro
erro

PG Ento cv PG;
PM Ento cv PM;
PP Ento cv PP;
Z Ento cv Z;
NP Ento cv NP;
NM Ento cv NM;
NG Ento cv NG;

Figura 4.3 Base de regras para os casos um e dois

O que diferencia o caso um do caso dois so os pontos da funo de pertinncia


representados nas figuras 4.1 e 4.2. Na figura 4.4 apresentado o script FCL
completo para o caso um.
FUNCTION_BLOCK ControleFuzzy
VAR_INPUT
erro : REAL;
END_VAR
VAR_OUTPUT
cv : REAL;
END_VAR
FUZZIFY erro
TERM NG := (-2,1) (-1,1) (-0.5,0);
TERM NM := (-1,0) (-0.75,1) (-0.25,0);
TERM NP := (-0.5,0) (-0.25,1) (0,0);
TERM Z := (-0.25,0) (0,1) (0.25,0);
TERM PP := (0,0) (0.25,1) (0.5,0);
TERM PM := (0.25,0) (0.75,1) (1,0);
TERM PG := (0.5,0) (1,1) (2,1);
END_FUZZIFY
DEFUZZIFY cv
TERM NG := (-2,1) (-1,1) (-0.5,0);
TERM NM := (-1,0) (-0.75,1) (-0.25,0);
TERM NP := (-0.5,0) (-0.25,1) (0,0);
TERM Z := (-0.25,0) (0,1) (0.25,0);
TERM PP := (0,0) (0.25,1) (0.5,0);
TERM PM := (0.25,0) (0.75,1) (1,0);
TERM PG := (0.5,0) (1,1) (2,1);
ACCU : MAX;
METHOD : COG;
DEFAULT := 0;
END_DEFUZZIFY
RULEBLOCK No1
AND : MIN;
ACT : MIN;
RULE 1 : IF
RULE 2 : IF
RULE 3 : IF
RULE 4 : IF
RULE 5 : IF
RULE 6 : IF
RULE 7 : IF
END_RULEBLOCK

erro
erro
erro
erro
erro
erro
erro

is
is
is
is
is
is
is

PG THEN cv IS PG;
PM THEN cv IS PM;
PP THEN cv IS PP;
Z THEN cv IS Z;
NP THEN cv IS NP;
NM THEN cv IS NM;
NG THEN cv IS NG;

END_FUNCTION_BLOCK

Figura 4.4 script FCL do caso um

123

Para os casos um e dois foram geradas as superfcies de regras fuzzy atravs


do software MATLAB para efeito comparativo das regras fuzzy.

Na figura 4.5 apresentada a superfcie de regras para o caso um.

Figura 4.5 Superfcie de regras para o caso um

Na figura 4.6 apresentada a superfcie de regras para o caso dois.

Figura 4.6 Superfcie de regras para o caso dois

As transies entre os conjuntos feitas de forma mais suave e rpida


apresentadas respectivamente nas figuras 4.1 e 4.2, contribuem para um modelo de
relao entre as variveis, erro e CV mais linear ou menos linear, observadas

124

nas figuras 4.5 e 4.6. Isto ir impactar a velocidade de busca do setpoint, tornando
mais rpido o tempo de acomodao.

Para fazer a comparao da busca do setpoint ao longo do tempo para os dois


casos, sero utilizados os mesmos critrios, so eles:

Setpoint de 500 RPM

Tempo de acomodao de 5% em relao ao setpoint

Na figura 4.7 apresentado o resultado do caso um, sendo visualizadas as


variveis PV e CV do processo.

Figura 4.7 Curva de resposta do setpoint do caso um

J na figura 4.8 apresentada a curva de resposta para o caso dois.

Figura 4.8 Curva de resposta do setpoint do caso dois

Conforme visto nas figuras 4.7 e 4.8, os tempos de acomodao so de


aproximadamente: 3,5 segundos para o caso um e 0,275 segundos para o caso

125

dois. Assim demostrado para esse caso, que o modelo no linear obteve um tempo
de resposta melhor que o mais prximo do linear sobre a tica do tempo de
acomodao.

Dependendo da aplicao, uma partida mais suave do motor pode ser desejvel,
devido s restries mecnicas ou corrente de um sistema, logo o caso um pode
ser altamente indicado para aplicaes desse tipo.

O caso trs o prximo a ser discutido. A figura 4.9 apresenta a resposta do


sistema, quando o mesmo est sendo submetido a uma fonte de distrbio do
processo. Onde esse distrbio faz a velocidade do sistema cair, logo o controlador
deve compensar o efeito do distrbio.

Na figura 4.9 apresentado um processo estvel em torno do setpoint de 100


RPM.

Figura 4.9 Caso trs antes do distrbio

Por volta do tempo de 8 segundos foi aplicada uma fonte de distrbio, fazendo a
velocidade cair, isso pode ser visualizado na figura 4.10. Ao mesmo tempo o
controlador provoca um aumento na ao (CV) atuadora para compensar o desvio
da varivel PV.

Conforme observado na figura 4.10 no tempo de 14 segundos, o sistema voltou


para o setpoint definido originalmente, portanto o controlador est agindo sobre o
distrbio deixando seu erro novamente em zero.

126

Figura 4.10 Caso trs depois do distrbio

Atravs dos grficos de velocidade apresentados, se visualiza a ao da varivel


atuadora que para minimizar o desvio da varivel velocidade, assim comprovando
a estabilidade do controlador para o controle da varivel em torno do setpoint, bem
como a compensao da fonte de distrbio.

O prximo caso de teste ser nomeado quatro, cujo objetivo o de demonstrar


o uso de mais de uma varivel de entrada. Nesse exemplo sero utilizadas as
variveis: erro e derivada do erro.

Na figura 4.11 apresentada a pertinncia para o caso quatro. Onde nesse


exemplo, sero utilizados apenas os termos zero(Z), positivo(P) e negativo(N).

Figura 4.11 Pertinncia do caso quatro

Para a simplificao dos dados da derivada do erro e da varivel de sada CV,


ambas tero a mesma pertinncia da figura 4.11.

127

Uma base de regras para o uso das duas variveis de entrada foi desenvolvida
utilizando o mtodo descrito no tpico 2.5.8 deste mesmo trabalho. Compilando as
pertinncias e a base de regras em um script FCL, se tem o mesmo na figura 4.12.
FUNCTION_BLOCK ControleFuzzy
VAR_INPUT
erro : REAL;
derro : REAL;
END_VAR
VAR_OUTPUT
cv : REAL;
END_VAR
FUZZIFY erro
TERM N := (-1,1) (-0.6,1) (0,0);
TERM Z := (-0.6,0) (0,1) (0.6,0);
TERM P := (0,0) (0.6,1) (1,1);
END_FUZZIFY
FUZZIFY derro
TERM N := (-1,1) (-0.6,1) (0,0);
TERM Z := (-0.6,0) (0,1) (0.6,0);
TERM P := (0,0) (0.6,1) (1,1);
END_FUZZIFY
DEFUZZIFY cv
TERM N := (-1,) (-0.6,1) (0,0);
TERM Z := (-0.6,0) (0,1) (0.6,0);
TERM P := (0,0) (0.6,1) (1,1);
ACCU : MAX;
METHOD : COG;
DEFAULT := 0;
END_DEFUZZIFY
RULEBLOCK No1
AND : MIN;
RULE
RULE
RULE
RULE
RULE
RULE
RULE
RULE
RULE

1
2
3
4
5
6
7
8
9

:
:
:
:
:
:
:
:
:

IF
IF
IF
IF
IF
IF
IF
IF
IF

erro
erro
erro
erro
erro
erro
erro
erro
erro

is
is
is
is
is
is
is
is
is

P
Z
N
P
Z
N
P
Z
N

AND
AND
AND
AND
AND
AND
AND
AND
AND

derro
derro
derro
derro
derro
derro
derro
derro
derro

is
is
is
is
is
is
is
is
is

N
N
N
Z
Z
Z
P
P
P

THEN
THEN
THEN
THEN
THEN
THEN
THEN
THEN
THEN

cv
cv
cv
cv
cv
cv
cv
cv
cv

IS
IS
IS
IS
IS
IS
IS
IS
IS

Z;
N;
N;
P;
Z;
N;
P;
P;
Z;

END_RULEBLOCK
END_FUNCTION_BLOCK

Figura 4.12 Script FCL para o caso quatro

Informadas as mesmas regras do script FCL da figura 4.12 no MATLAB, o


MATLAB gera a superfcie de regras fuzzy do caso apresentado anteriormente. A
superfcie de regras fuzzy do caso quatro apresentada na figura 4.13.

128

Figura 4.13 Superfcie de regras fuzzy para o caso quatro

Conforme observado na figura 4.13, apresentado de forma grfica e simplista,


a quantidade de energia que o controlador CV ir gerar para as condies de
entrada de erro e derivada de erro (dErro).

O script FCL da figura 4.12 foi submetido ao software de controle fuzzy para o
controle do motor. Na figura 4.14 apresentada a resposta temporal deste controle.
Para um quadro melhor de comparao, foi submetido um setpoint de 500 RPM e
colhida curva se observando o tempo de acomodao.

Figura 4.14 Curva de resposta do setpoint do caso quatro

Conforme apresentado na figura 4.14, o tempo de acomodao de


aproximadamente de 4,5 segundos. Outra caracterstica de controle do caso quatro,
que o mesmo comea com um determinado patamar de velocidade, e depois
diminui essa acelerao at alcanar o setpoint.

129

Alm dos exemplos apresentados neste trabalho, inmeros arquivos de testes


foram submetidos ao programa para verificar se o mesmo compatvel com a
linguagem FCL definida pela norma IEC 61131-7. Todos os testes executados
ocorreram de forma positiva, indicando assim, que o programa elaborado
compatvel com a norma. Alm da compatibilidade com a norma, o software
demostrou que est funcional para o controle fuzzy de processos.

130

5 CONCLUSES
Neste trabalho foi proposta a construo de um controlador fuzzy de cdigo
fonte aberto, para o seu uso em CPs. Durante a apresentao deste trabalho, foram
desenvolvidos diversos testes com o objetivo de validar o funcionamento do
controlador para o seu uso em sistemas retroalimentados. Os testes propostos
ocorreram da forma planejada, ou seja, o sistema controlou corretamente a varivel
de retroalimentao em torno do setpoint desejvel. Portanto, os testes aplicados
demostram que o software de controle fuzzy est operacional para o controle de
processos.

Outra caracterstica fundamental do software de controle fuzzy sua


compatibilidade com a norma IEC 61131-7. Essa caracterstica permite desenvolver
de uma forma mais simplificada e rpida, a construo de controladores fuzzy em
processos industriais. Isto porque a linguagem FCL definida pela IEC 61131-7 uma
linguagem declarativa, e o projetista de um sistema fuzzy apenas informa alguns
dados relevantes atravs suas sentenas que so: variveis, funes de pertinncia
e base de regras.

O software de controle fuzzy, por estar disponvel em cdigo aberto na internet,


pode ser utilizado por qualquer pessoa de forma livre e gratuita. Outro beneficio do
software que seu ncleo baseado em linguagem JAVA, logo, o software
facilmente portado para outras plataformas de hardware (mesmo estendido), como
por exemplo, em SOFTPLCs.

O software, por ser baseado na norma IEC 61131-7, permite o controle de


sistemas mais complexos do que o apresentado no prottipo de testes (o controle de
velocidade de um motor AC). Esses controles podem ser do tipo retroalimentado,
antecipativo, multivarivel e at mesmo, no linear. O projetista deve informar essas
caractersticas do controle em linguagem FCL.

131

Hoje o software possui comunicao com o protocolo PPI, assim permite


comunicao somente com os CPs s200 da SIEMENS.

A grande contribuio de fato deste trabalho, disponibilizar essa ferramenta em


cdigo fonte aberto para a construo de controladores fuzzy em CPs baseados na
norma IEC 61131-7. Isto porque existem outras solues no mercado, mas tais
solues no so compatveis com a norma e possuem alto custo por serem
solues de software proprietrio. Portanto, essa ferramenta pode ser utilizada por
engenheiros, tcnicos e estudantes que desejam aplicar lgica fuzzy em seus
projetos de controle sem maiores custos.

Como o cdigo est disponibilizado como cdigo livre ou aberto, o mesmo


permite a avaliao da conformidade da norma em sua implementao, tarefa
praticamente impossvel em cdigos proprietrios.

No entendimento do autor deste trabalho, a disponibilizao desse sistema em


cdigo livre, pode auxiliar a adoo da norma IEC 61131-7 como meio de escrever
algoritmos de controle fuzzy em ambientes industriais, isto devido s caractersticas
dos sistemas fuzzy j existentes em ambientes industriais.

Desde a disponibilizao do cdigo fonte na internet pelo autor, foram efetuados


112 downloads registrados no perodo de um ano, desde julho de 2011. Na tabela
5.1 so apresentados os pases que efetuaram os downloads, bem com o nmero
de downloads e seu percentual em relao ao todo.

132

Tabela 5.1 Lista de pases que efetuaram o download do software


Pas
China
Rssia
Sri Lanka
Estados Unidos
Coreia
frica do sul
Canad
Itlia
Brasil
Alemanha

Nmero de downloads
25
11
10
7
6
6
5
5
4
4

Percentual
22,3 %
9,8 %
8,9 %
6,3 %
5,4 %
5,4 %
4,5 %
4,5 %
3,6 %
3,6 %

A seguir listam-se alguns trabalhos futuros que possam vir a contribuir para o
desenvolvimento do trabalho atual:

Implementao de novos protocolos de comunicao para acesso a outros


CPs de fabricantes diferentes, tais como: Profibus-DP, Modbus RTU, Modbus
TCP/IP, OPC, entre outros.

Implementao de um compilador de FCL (IEC 61131-7) para IEC61131-3


IL/ST.

Construo de um toolbox para MATLAB integrado ao toolbox de fuzzy j


existente, que permita gerao de cdigo para IEC-61131-7 e IEC-61131-3
IL/ST.

133

REFERNCIAS BIBLIOGRFICAS
AHO, A. et al. Compilers - Principles, Techniques and Tools. 2d. Estados Unidos:
Addison-Wesley, 2006.
ANDRADE, M. T. C. de. Uma contribuio pesquisa em inteligncia
computacional. Tese (Livre Docncia) - Escola Politcnica da universidade de So
Paulo, So Paulo, 2002.
APPEL, A. W. Modern Compiler Implementation in Java. Estados Unidos:
Cambridge University Press,1999.
ARROFIQ, M.; SAAD N, PLC-based fuzzy logic controller for induction-motor drive
with constant V/Hz ratio, ICIAS - International Conference on Intelligent and
Advanced Systems, 2007.
ARROFIQ, M.; SAAD N. Control of induction motor drives using modified-fuzzy logic
methods. IEEE International Conference on Systems Man and Cybernetics
(SMC), 2010.
AUTONICS, Disponvel em <http://www.autonics.com.br/>, acessado em
06/03/2012.
BUTKIEWICZ, B. S. Steady-State Error of a System with Fuzzy Controller. IEEE
Transactions on systems, Man, and CyberneticsPart b: Cybernetics, Vol. 28,
n 6, 1998.
CASTRUCCI, P. L.; MORAES, C. Engenharia de Automao Industrial. So
Paulo, 2001.
DEL TORO, V. Fundamentos de mquinas eltricas, LTC, 1994.
DORF, R. C.; BISHOP R. H. Modern Control Systems. 12 ed. Estados Unidos:
Prentice Hall, 2010.
FOGEL, D.B.; FUKUDA,T.; GUAN, L. Scanning the special issue/techology on
computation intelligence. in: Proceeding of IEEE. Los Alamitos: IEEE Press, vol. 97,
n 9, p. 1414-1422, 1999.

134

FONTE, P. M. Disponvel
<http://www.deea.isel.ipl.pt/sme/docentes/pfonte/C_Girante.pdf>, acessado em
03/03/2012.
FRANKLIN,G. et al. Feedback Control of Dynamic Systems. 6 ed. Estados
Unidos: Prentice Hall, 2009.
FOROUZAN B. Data Communications and Networking. Estados Unidos. McGrawHill. 5.Edio, 2012.
FUZZYTECH. Disponvel em <http://www.fuzzytech.com/>, acessado em
05/03/2012.
GRUNE,D. et.al. Modern Compiler Design. Estados Unidos: Wiley, 2001.
GUILLEMIN, P. Fuzzy Logic Applied to Motor Control. IEEE transactions on
industry applications, Vol. 32, n 1,p. 51-56, 1996.
IEC, International Electrotechnical Comission, Programmable Controllers (IEC
61131: Part 3) Programming Languages, 2003.
IEC, International Electrotechnical Comission, Programmable Controllers (IEC
61131: Part 7) Fuzzy control programming, 2000.
JULIFER. Disponvel em
<http://www.julifer.com.br/images/produtos/pecas_motores.jpg>, acessado em
05/03/2012.
KARL-HEINZ, J.; TIEGELKAMP, M. IEC 61131-3: Programming industrial
automation system. Estados Unidos: Springer. 2001.
KINGSLEY, C. JR., MQUINAS ELTRICAS. Rio Grande do Sul, BOOKMAN,
6.Edio, 2006.
KUO,B. Automatic Control Systems. 9 ed. Estados Unidos: Wiley, 2009.
LEE, C. C. Fuzzy logic in control system: fuzzy logic controller Part I. IEEE
Transactions on System, Man and Cybernetic, Vol 20, n 2, p. 404-418, 1990.

135

LEE, C. C. Fuzzy logic in control system: fuzzy logic controller Part II. IEEE
Transactions on System, Man and Cybernetic, Vol. 20, n 2, p. 419-435, 1990.
LEGASPE E.P.; DIAS E.M. et al. Open source fuzzy controller for Programmable
Logic Controllers. 13th Mechatronics Forum Biennial International Conference,
2012.
LEGASPE E.P. Disponvel em <http://sourceforge.net/projects/fuzzyplc>, acessado
em 11/06/2012.
LIBNODAVE, Disponvel em <http://libnodave.sourceforge.net/>, acessado em
12/02/2012.
MA, S.; TAO H. Automation Professional Education and Quality Education. Second
International Conference on Education Technology and Training, Sanya, China,
2009.
MICHELL, G. Programmable Logic Controllers: Architecture and Applications.
Inglaterra: John Wiley & Sons Ltd, 2007.
MIYAGI, P.E Controle Programvel Fundamentos do Controle de Sistemas a
Eventos Discretos. So Paulo, SP: Editora Edgard Blucher Ltda, 3 reimpresso2007.
NETO JOSE, J. Introduo compilao. Rio de janeiro: LTC,1987.
OGATA, K. Modern Control Engineering. 5 ed. Estados Unidos: Prentice Hall,
2009.
PINTO, J. R. Converso eletromecnica de energia. So Paulo. Editora 24 horas.
2011.
POPA, D. D. et Al. A PI-Fuzzy controller designated for industrial motor control - ISIE
IEEE International Symposium on applications, Industrial Electronics, 2008.
QUADRADO, J.C. ; FERNANDO SILVA, J. On the Elimination of Steady-State Errors
with an "Elastic" Fuzzy Position Controller for Motor Drives. International
Conference on Industrial Electronics, Control, and Instrumentation, 1993.

136

RAMOS, M. V. M. ; JOS NETO, J. ; VEGA, I. S. . Linguagens formais - teoria,


modelagem e implementao. Bookman, 2009
REY, L. Planejar e redigir trabalhos cientfico. 3 ed. So Paulo. Editora blucher.
2011.
ROCKWELL AUTOMATION Disponvel em
<http://www.rockwellautomation.co.uk/applications/gs/emea/gsgb.nsf/pages/fuzzydes
igner_demo>, acessado em 06/03/2012.
SIEMENS, Micro Master 440 - System Manual, Alemanha, SIEMENS, 2011.
SIEMENS, S7-200 Programmable Controller - System Manual, Alemanha,
SIEMENS, 2009.
SIMES, M. G.; SHAW I. S. Controle e Modelagem Fuzzy. So Paulo. Edgard
Blucher. 2.Edio. 2007
TANENBAUM, A. S.; WETHERALL D. J. Computer Networks. Estados unidos.
Prentice Hall. 5.Edio. 2010.
TAO, C.W.; TAUR J. Flexible Complexity Reduced PID-Like Fuzzy Controllers
Member, IEEE transactions on systems, man, and cyberneticspart b:
cybernetics, Vol. 30, n. 4, 2000.
TSOUKALAS, L. H.; UHRIG,R.E. Fuzzy and neural approaches in engineering.
Estados Unidos: Wiley-Interscience, 1997.
WEG, Especificao de Motores Eltricos, So Paulo, 2009
YONEYAMA, T. Inteligncia Artificial em Controle e Automao. So Paulo.
Edgard Blucher. 2000.
ZADEH, L. A. Fuzzy Logic = Computing with Words. IEEE Transactions on Fuzzy
Systems, Vol. 4, n 2, p. 103-111, 1.996.
ZADEH, L. A., Fuzzy sets. Information and Control, Vol. 8, 1965, pp. 338-353.

137

ZADEH, L.A., Making computers think like people, IEEE Spectrum 8, pp. 26-32,
1984.

138

ANEXO A
Segue abaixo o cdigo fonte do arquivo cpsiemens.java, responsvel em fazer
a comunicao com o CP Siemens atravs do protocolo PPI.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fuzzyplc;
import
import
import
import
import

java.io.IOException;
java.io.InputStream;
java.io.OutputStream;
java.util.Enumeration;
gnu.io.*;

/**
*
* @author edinei
*/
public class CPSiemens
{
private
private
private
private
private
private

char buf[];
byte buf1[];
PLCinterface di;
PPIConnection dc;
SerialPort serialPort;
String sPort;

static CommPortIdentifier portId;


static Enumeration portList;
private byte[] by;
private OutputStream oStream = null;
private InputStream iStream = null;
public CLPSiemens(String sPort)
{
this.sPort = sPort;
}
public boolean Connect()
{
boolean myReturn = false;
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements())
{
portId = (CommPortIdentifier) portList.nextElement();

139

if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
if (portId.getName().equals(this.sPort))
{
myReturn = this.ConnectHD();
break;
}
}
}
return (myReturn);
}
private boolean ConnectHD()
{
buf = new char[Nodave.OrderCodeSize];
buf1 = new byte[Nodave.PartnerListSize];
boolean myReturn;
myReturn = false;
try
{
serialPort = (SerialPort) portId.open("SimpleReadApp",
2000);
}
catch (PortInUseException e)
{
e.printStackTrace();
}
try {
serialPort.setSerialPortParams(
9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_EVEN);
}
catch (UnsupportedCommOperationException e)
{
e.printStackTrace();
}
if (serialPort != null)
{
try
{
oStream = serialPort.getOutputStream();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
iStream = serialPort.getInputStream();
}
catch (IOException e)
{
e.printStackTrace();
}

140

di = new PLCinterface(
oStream,
iStream,
"IF1",
0,
Nodave.PROTOCOL_PPI);
if (di.initAdapter() == 0)
{
//Endereo ppi
dc = new PPIConnection(di, 2);
int res = dc.connectPLC();
if (res == 0 )
{
myReturn = true;
}
}
}
return (myReturn);
}
public void Disconnect()
{
dc.disconnectPLC();
di.disconnectAdapter();
serialPort.close();
}
public int ReadVar(int iPos)
{
int myReturn;
dc.readBytes(Nodave.DB, 1, iPos, 2, null);
myReturn = dc.getWORD();
return (myReturn);
}
public void WriteVar(int iPos,int iValue)
{
by = Nodave.bswap_16(iValue);
dc.writeBytes(Nodave.DB, 1, iPos, 2, by);
}
}

141

ANEXO B
Segue abaixo o cdigo fonte do arquivo threadcore.java, que basicamente a
poro principal do ncleo integrador.
/*
* ThreadCore.java
*
*/
package fuzzyclp;

/**
*
* @author Edinei
*/
class ThreadCore extends Thread
{
private fuzzyclp.FormPri f;
private float fltSP;
private int iSampleRate;
private int iIOPV;
private int iIOCV;
private boolean blnExecute;
private float fltCV;
private float fltCVInc;
private float fltPV;
private int iCV;
private int iPV;
private float fltTempo;
private CLPSiemens CLP;
private FIS fis;
FuzzyRuleSet fuzzyRuleSet;
private float fltRangeMinErro;
private float fltRangeMaxErro;
private float fltEscalaErro;
private float fltRangeMinCV;
private float fltRangeMaxCV;
private float fltEscalaCV;
public ThreadCore(String str,fuzzyclp.FormPri f,float fltSP,
int iSampleRate,int iIOPV,int iIOCV,CLPSiemens CLP,
FIS fis, FuzzyRuleSet fuzzyRuleSet,
float fltRangeMinErro,float fltRangeMaxErro,float
fltEscalaErro,
float fltRangeMinCV,float fltRangeMaxCV,float
fltEscalaCV)
{
super(str);
this.f = f;
this.fltSP = fltSP;
this.iSampleRate = iSampleRate;
this.iIOPV = iIOPV;
this.iIOCV = iIOCV;

142

this.blnExecute = true;
this.CLP = CLP;
this.fis = fis;
this.fuzzyRuleSet = fuzzyRuleSet;
this.fltRangeMinErro = fltRangeMinErro;
this.fltRangeMaxErro = fltRangeMaxErro;
this.fltEscalaErro = fltEscalaErro;
this.fltRangeMinCV = fltRangeMinCV;
this.fltRangeMaxCV = fltRangeMaxCV;
this.fltEscalaCV = fltEscalaCV;
}
public void RefreshRules(float fltSP,
int iSampleRate,int iIOPV,int iIOCV,CLPSiemens CLP,
FIS fis, FuzzyRuleSet fuzzyRuleSet,
float fltRangeMinErro,float fltRangeMaxErro,float
fltEscalaErro,
float fltRangeMinCV,float fltRangeMaxCV,float
fltEscalaCV)
{
this.fltSP = fltSP;
this.iSampleRate = iSampleRate;
this.iIOPV = iIOPV;
this.iIOCV = iIOCV;
this.blnExecute = true;
this.CLP = CLP;
this.fis = fis;
this.fuzzyRuleSet = fuzzyRuleSet;
this.fltRangeMinErro = fltRangeMinErro;
this.fltRangeMaxErro = fltRangeMaxErro;
this.fltEscalaErro = fltEscalaErro;
this.fltRangeMinCV = fltRangeMinCV;
this.fltRangeMaxCV = fltRangeMaxCV;
this.fltEscalaCV = fltEscalaCV;
}
public void StopControl()
{
this.blnExecute = false;
}
public void SetSetPoint(float fltSP)
{
this.fltSP = fltSP;
}
public void run()
{
float fltINCTempo;
boolean blnErro;
boolean blnDErro;
boolean blnCV;
Variable vErro;

143

Variable vDErro;
Variable vCV;
float fltErro;
float fltErroReal;
float fltDErro;
float fltOldErroReal;
float fltDT;
fltCV = 0;
fltTempo = 0;
iCV = 0;
fltOldErroReal = 0;

vErro = fuzzyRuleSet.getVariable("erro");
vDErro = fuzzyRuleSet.getVariable("derro");
vCV = fuzzyRuleSet.getVariable("cv");
blnErro = (vErro != null);
blnDErro = (vDErro != null);
blnCV = (vCV != null);
//Se tem variaveis p/ o controle
if ((blnErro) && (blnCV))
{
fltINCTempo = Float.valueOf(this.iSampleRate).floatValue();
fltINCTempo = (fltINCTempo/1000);
fltDT = Float.valueOf(this.iSampleRate).floatValue() / 1000;
while (this.blnExecute)
{
//Le RPM
iPV = this.CLP.ReadVar(iIOPV);
fltPV = Float.valueOf(this.iPV).floatValue();
//Calulando erro
fltErroReal = fltSP - fltPV;
//Escalonando o erro
fltErro = fltErroReal / this.fltEscalaErro;
if (fltErro > 1)
fltErro = 1;
else if (fltErro < -1)
fltErro = -1;
//Definindo variaveis
fuzzyRuleSet.setVariable("erro", fltErro);
//se o script tem derivada do erro
//Calcule a derivada do erro
if (blnDErro)
{
fltDErro = (fltErroReal - fltOldErroReal) / fltDT;
//Escalonando o a derivada do erro
fltDErro = fltDErro / this.fltEscalaErro;
if (fltDErro > 1)
fltDErro = 1;
else if (fltDErro < -1)
fltDErro = -1;

144

//Salvando erro anterior


fltOldErroReal = fltErroReal;
//Definindo derivada do erro
fuzzyRuleSet.setVariable("derro", fltDErro);
}

// Executa a lgica fuzzy


fuzzyRuleSet.evaluate();
//Lendo valor CV
double dblValueCalc;
dblValueCalc = vCV.defuzzify();
//Determinando incremento CV
fltCVInc = ((float)dblValueCalc) * this.fltEscalaCV;
//Computando o controle
fltCV = fltCV + fltCVInc;
if (fltCV > this.fltRangeMaxCV)
fltCV = this.fltRangeMaxCV;
if (fltCV < this.fltRangeMinCV)
fltCV = this.fltRangeMinCV;
//Atualizando CLP
iCV = Float.valueOf(fltCV).intValue();
this.CLP.WriteVar(iIOCV,iCV);
//Atualizando tela
f.RefreshForm(fltPV,fltCV,fltTempo);
//Esperando tempo
fltTempo = fltTempo + fltINCTempo;
try
{
Thread.sleep(this.iSampleRate);
}
catch(Exception ex) {}
}
}
}
}

Vous aimerez peut-être aussi