Você está na página 1de 40

Tutorial

SIMULINK / STATEFLOW
Simulao de funes veiculares e
desenvolvimento de software






2 Software Engineering

Sumrio
1. OBJETIVO ................................................................................................................... 3
2. MATLAB ..................................................................................................................... 3
2.1 O que o MATLAB .................................................................................................................. 3
2.2 MATLAB Tela inicial .............................................................................................................. 3
2.2.1 Menu Superior ......................................................................................................................... 4
2.2.2 Barra de Ferramentas............................................................................................................... 6
2.2.3 Barra de Atalhos ....................................................................................................................... 6
2.2.4 Pasta Corrente .......................................................................................................................... 7
2.2.5 Tela de Comandos .................................................................................................................... 8
2.2.6 Tela de Parmetros Workspace ............................................................................................ 8
2.2.7 Histrico de Comandos ............................................................................................................ 9
3. SIMULINK................................................................................................................... 9
3.1 Menu Superior ...................................................................................................................... 10
3.1.1 FILE ......................................................................................................................................... 10
3.2 Barra de Ferramentas ............................................................................................................ 12
3.3 Biblioteca do Simulink ........................................................................................................... 12
3.3.1 Insero de blocos no Modelo ............................................................................................... 13
3.3.2 Propriedades dos Blocos ........................................................................................................ 14
3.3.3 Interligao de Blocos ............................................................................................................ 15
3.3.4 Blocos e suas utilizaes ........................................................................................................ 16
4. STATEFLOW ................................................................................................................ 23
4.1 Inserindo um Diagrama (Chart Tabela Verdade) ................................................................. 24
4.2 Tabela Verdade (TruthTable) ................................................................................................. 24
4.3 Diagrama de estados ............................................................................................................. 25
4.3.1 Estados e transies ............................................................................................................... 28
4.3.2 Temporizadores ..................................................................................................................... 30
4.3.3 Eventos ................................................................................................................................... 32
4.3.4 Funes .................................................................................................................................. 34
4.3.5 Funes do Matlab ................................................................................................................. 35
4.3.6 Tempo Real no Matlab ........................................................................................................... 36
4.3.7 Diferenas entre Simulao e desenvolvimento de Software. .............................................. 36
4.3.8 Observaes ........................................................................................................................... 37
4.3.9 Atalhos utilizados para facilitar o desenvolvimento .............................................................. 38
5. SUGESTES DE REFERNCIAS .............................................................................. 39
6. EXERCCIOS PROPOSTOS ........................................................................................ 39
6.1 Observaes .......................................................................................................................... 40



3 Software Engineering

1. OBJETIVO
Este tutorial tem como objetivo prover as informaes bsicas para o desenvolvimento de
simulaes e softwares atravs das ferramentas SIMULINK e STATEFLOW. Este documento
fornecer informaes de como utilizar blocos, construir funes e diagramas e configurar
modelos no SIMULINK.
Ferramentas especficas utilizadas para gerao de cdigo, testCase, bem como instalao
e ativao dos programas no sero abordados nesse documento, sendo importante, caso
necessrio, de instruo especfica para sua utilizao.
2. MATLAB
2.1 O que o MATLAB

O Matlab um software matemtico que possibilita o modelamento de diversos sistemas,
seja matemtico, lgico, mecnico e tambm possibilita outras diversas funcionalidades
matemticas e lgicas.
O diagrama abaixo mostra algumas aplicaes possveis para o Matlab e Simulink.

2.2 MATLAB Tela inicial
Ao abrir o MATLAB aparecer uma tela inicial, composta na parte superior por um
menu, uma barra de ferramentas e uma barra de atalhos. Abaixo da barra de atalhos h
uma tela de visualizao de pasta esquerda, uma tela de comandos central, uma tela de

4 Software Engineering

parmetros carregados direita na parte superior e um histrico de comandos na parte
inferior direita.


2.2.1 Menu Superior

O menus superior do MATLAB semelhante a qualquer outro programa, contendo
opes gerais encontradas em todos os programas (abrir, novo, fechar, copiar, colar,
ajuda) e alguns especficos. Segue um breve descritivo sobre cada item:
FILE:


Menu Superior
Barra de
atalhos
Barra de
ferramentas
Visualizao
de Pasta
corrente
Tela de
Comandos
Parmetros
carregados
Histrico
de comandos
Criar novo arquivo - opes
Script
Matlab
Interface
Grfica Matlab
Arquivo
Simulink
Abrir arquivos
Fechar pasta corrente (referencia)
Importar dados de outros arquivos
Salva as variveis e seus valores
Incluir pasta para inicializao do
Matlab
Preferncias e opes do Matlab
Arquivos recentes
Fechar o Matlab

5 Software Engineering


EDIT:

DEBUG:

DESKTOP:



WINDOWS:
Desfazer comandos
Refazer comandos
Recortar
Copiar
Colar
Colar na workspace (tela de parmetros)
Selecionar tudo
Deletar
Localizar
Localizar arquivos
Limpar tela de comandos
Limpar histrico de
Limpar parmetros
Abrir arquivos quando debugar (Script Matlab)
Executar um passo (Script Matlab)
Avanar um passo (Script Matlab)
Retornar um passo (Script Matlab)
Continuar o Debug (Script Matlab)
Limpar BreakPoints definidos nos arquivos
Parar quando houver aviso ou erro (Script
Sair do modo de Debug (Script Matlab)
Reconfigurar tela de comandos
Reconfigurar rea
de trabalho do MATLAB
Exibir ou ocultar ferramentas e barras

6 Software Engineering



2.2.2 Barra de Ferramentas
A barra de ferramentas possui atalho para as funes mais utilizadas no MATLAB com
o objetivo de facilitar o uso das ferramentas.









2.2.3 Barra de Atalhos
Os atalhos servem para facilitar execuo de um comando ou arquivo. possvel
adicionar um atalho a partir dos passos a seguir:

1 PASSO: Clique com boto direito sobre a barra de Atalhos
2 PASSO: Clique sobre a opo New Shortcut
OBS: Aparecer uma tela de criao de atalhos com vrios campos
Navegar na rea de trabalho, acessar telas e
ferramentas
Novo arquivo -
Abrir arquivo
Recor
Copia
Colar
Desfa
Refaz
Abrir o
Criar interface
Profiler
Ajuda
Definir pasta corrente pasta de trabalho

7 Software Engineering



3 PASSO: Escrever o nome do atalho no campo Label
4 PASSO: Escrever o comando desejado no campo Callback
5 PASSO: Selecionar a categoria e o cone desejados para o atalho
6 PASSO: Clicar em Salvar
Aps criado o atalho estar disponvel na barra para ser usado quando desejado
2.2.4 Pasta Corrente
A tela de visualizao de pasta mostra o contedo que h dentro da pasta de trabalho
selecionada.
importante lembrar que sempre quando se executa um arquivo que tem outros
vnculos (EX: modelo contendo arquivo .m de parametros), normalmente se configura o
vnculo diretamente, ou seja, sem caminho definido. Isso implica que o arquivo principal e
os vnculos estejam em uma mesma pasta e que ela esteja aberta no MATLAB quando o
arquivo for chamado.
Escrever nome do atalho
Escrever o comando a ser executado.
Ex:
clear all %limpa parametros
run C:\MATLAB\arquivo.m %roda arquivo.m
Selecionar categoria se desejado
Selecionar cone se desejado

8 Software Engineering


2.2.5 Tela de Comandos
A tela de comandos a tela principal onde sero executados os comandos chamados e
tambm exibidos as respostas para cada um deles.
Para executar um comando diretamente, basta digitar a linha de comando
diretamente.
Ex:
clear all - limpar tela
s = 1 - atribui o valor 1 varivel s
2*s*sin(45) Calcula a expresso 2 x s (1) x seno 45
A cada comando executado ser gerada uma resposta logo aps a execuo, e caso
no seja especificado varivel para receber a resposta, ser armazenado em uma varivel
padro com o nome de ans. Caso no queira que essa resposta seja exibida, deve-se
colocar ; aps o comando.
OBS: O uso do ; para esse fim ser possvel ao digitar comandos na tela de comandos,
ao criar um script ou at mesmo durante a utilizao do simulink e stateflow.
2.2.6 Tela de Parmetros Workspace
A cada execuo do Matlab, seja atravs da tela de comandos ou atravs de outras
ferramentas como Scripts, Modelos Simulink, stateflows, so carregados os parmetros e
variveis criadas atravs das mesmas. Essas variveis e parmetros so armazenados na
tela Workspace, onde possvel visualizar seu nome e valor.
Arquivo
Vinculado
A pasta deve
conter todos os
arquivos
vinculados e estar
aberta nessa tela
Arquivo
Principal

9 Software Engineering


2.2.7 Histrico de Comandos

O histrico de comandos armazena os ltimos comandos executados na tela de
comandos. Atravs dele possvel verificar comandos efetuados e executar novamente os
mesmos, clicando duas vezes sobre o comando desejado.

3. SIMULINK
O SIMULINK uma ferramenta associada ao Matlab utilizada pra as aplicaes mostradas
acima. Ele tem como objetivo principal a criao de diagramas e modelo de sistemas utilizando
blocos.
possvel abrir o simulink atravs do MATLAB na barra de ferramentas.

Aps a abertura, aparecer tela inicial do simulink, contendo os blocos do simulink e das
demais toolboxes instaladas no Matlab.
A figura abaixo exemplifica a tela inicial do Simulink. possvel observar que h toolbox de
Coder, do Altia, Stateflow, dSPACE TargetLink, tendo seus blocos e ferramentas especficas.
A tela inicial do Simulink, semelhante ao Matlab possui um menu superior e uma barra
de ferramentas, sendo a parte inferior dividida em uma tela de navegao das bibliotecas de
blocos do simulink e toolboxes e uma tela de visualizao dos blocos.

10 Software Engineering


3.1 Menu Superior

3.1.1 FILE



Preferences...
A tela de preferncias contm algumas configuraes importantes para o uso do
simulink e tambm para executar modelos.
A tela inicial (Simulink Preferences) contm opo de exibio das janelas (Window
reuse) e configuraes de exibio de notificao, salvamento automtico do arquivo e
sobre verso do arquivo. A opo de exibio de janelas (Windows reuse) inclui trs modos
bsicos de exibio:
Reuse: Ser aberta uma tela e a cada mudana de nvel, ser mantida a tela
com o caminho atual (mostra o subnvel selecionado)
Replace: Ser aberta uma tela e a cada mudana de nvel, ser fechada a tela
atual e aberta uma nova tela mostrando o nvel selecionado
Mixed: Este modo um modo intermedirio entre o modo Replace e o Reuse
None: Ser aberta uma nova tela a cada mudana de nvel.

Visualizao de
blocos
Menu
Barra de Ferramentas
Navegao de
Bibliotecas
Criar um novo modelo
Criar biblioteca (blocos personalizadodos)
Abrir um arquivo
Fechar um arquivo
Definir

11 Software Engineering


Solver
Na tela Solver possvel configurar o passo e tempo de simulao que sero utilizados
como padro.



Geralmente para a execuo de softwares e simulaes no simulink, esses parmetros
so configurados de forma diferente, porm mais comum que esses parmetros sejam
alterados para o prprio arquivo. Isso possvel atravs de um novo menu Simulation
que aparece ao abrir um modelo simulink (vide item xxx).
Diagnostics
A tela Diagnostics onde esto configurados os reports de erros e alertas dependendo
dos problemas encontrados. Atravs dessa tela possvel configurar para que o Matlab

12 Software Engineering

exiba ou oculte um alerta ou mensagem de erro. importante observar que qualquer
modificao nessa tela deve ser feita com cuidado, pois pode ocultar um possvel erro no
cdigo e atrapalhar o seu diagnstico. Por outro lado, pode-se ocultar alguns alertas que
s vezes se fazem incmodos ao usurio.
Caso queira ocultar algum alerta, observe sua descrio e encontre a descrio
equivalente na tela Diagnostics, lembrando que h diferentes abas para serem analisadas.


3.2 Barra de Ferramentas
A barra de ferramentas possui funes bsicas com o intuito de facilitar o uso do
Simulink.



A pesquisa facilita a encontrar um bloco do simulink, basta digitar o nome do bloco ou
parte dele e clicar no boto de pesquisa.
3.3 Biblioteca do Simulink
A biblioteca do simulink possui todos os blocos inerentes do Simulink e est dividido
por suas funes.
Conmonly Used Blocks Principais blocos utilizados na construo de um modelo
Continuous Blocos usados em sistema contnuos e controles P, PI, PID.
Discontinuities Sistemas com descontinuidades e tendendo a limites ou com
saturao
Discrete Blocos para sistemas discretos e clculos discretos
Novo modelo
Criar modelo
Pesquisar blocos na biblioteca
Opes de Pesquisa

13 Software Engineering

Logic and Bit Operations Blocos de funes lgicas e binrias, como portas
lgicas, etc.
Lookup Tables Blocos referentes a tcnica de lookup tables
Math Operations Blocos com operadores aritmticos
Model Verification Blocos para verificao de sada de um modelo matemtico.
Ports & Subsystems Blocos para criao de subsistemas, entradas e sadas
Signal Attributes Blocos para converso de tipos de sinais e definio de outros
atributos de sinais
Signal Routing Blocos para rotear sinais como seletores, tags, memria de dados
Sinks Blocos para visualizao de sinais, tanto valores como formas de onda
geradas
Sources Fontes de entrada de sinais (onda quadrada, senoidal, clock, sinal digital)
User-Defined Functions Blocos a serem personalizados por uma funo a ser
inserida pelo usurio.

3.3.1 Insero de blocos no Modelo

Para utilizar um bloco da biblioteca do simulink no modelo, devemos incluir esse bloco no
modelo. Isso pode ser feito arrastando o bloco desejado da biblioteca at o modelo.
possvel utilizar os recursos copiar (CTRL + C) e colar (CTRL + V) para duplicar blocos
quando j h um bloco existente no modelo. Esse recurso evita o trabalho de abrir a biblioteca
para inserir um novo bloco




14 Software Engineering

3.3.2 Propriedades dos Blocos

Cada bloco possui propriedades a serem configuradas para serem utilizados. Seja seu valor
de entrada, especificao do tipo de sada, configurao de nome, link, etc.
Para abrir as propriedades dos blocos e configur-las, basta dar um duplo clique sobre o
bloco desejado. Aps o procedimento ser aberta uma tela de propriedades relacionada ao
bloco em questo.



Os blocos possuem configuraes a respeito de suas funcionalidades e configuraes,
quando existentes, das propriedades dos sinais de entrada e sada. Essas configuraes esto
separadas por abas, sendo as principais na aba Main e as configuraes de sinais na aba Signal
Attributes.
Na Aba Signal Attributes importante lembrar a importncia de definir o tipo de sinal a ser
gerado. O tipo de sinal influncia para os blocos que iro receber e fazer uso do sinal. Caso
voc defina um tipo de entrada para um bloco, de extrema importncia que sua entrada
receba o mesmo tipo de sinal, ou seja, voc deve sempre definir os tipos de sinais para as
entradas e sadas dos blocos.

15 Software Engineering



Abaixo segue a lista dos tipos de sinais mais comuns e suas propriedades.

double Valor real flutuante de dupla preciso
single Valor real flutuante de simples preciso
int8 Valor inteiro de 8 bits (-128 a 127)
uint8 Valor inteiro positivo de 8 bits (0 a 255)
int16 Valor inteiro de 16 bits (-32768 a 32767)
uint16 Valor inteiro positive de 16 bits(0 a 65535)
int32 Valor inteiro de 32 bits
uint32 Valor inteiro positivo de 32 bits
boolean Valor binrio

3.3.3 Interligao de Blocos

Para interligar blocos no Simulink basta clicar na sada do bloco desejado e arrastar at a
entrada do bloco desejado.
importante notar que muitas vezes se faz necessrio nomear essas ligaes para facilitar
sua identificao, como no caso do uso de barramentos de entrada (bus creator), onde a
identificao prover o nome do sinal no barramento de sada.

16 Software Engineering



3.3.4 Blocos e suas utilizaes



Na tela Commonly Used Block temos alguns blocos de utilizao comum, apesar de
haverem outros que so muito utilizados tambm em outros grupos.
Constant
O bloco Constant utilizado como uma entrada para o modelo, fornecendo um valor fixo
de entrada, definido pelo usurio.
Clicar na sada do bloco constant e segurar.
arrastar at a entrada do bloco gain

17 Software Engineering



Logical Operator
O bloco Operador lgico possibilita a utilizao de portas lgicas (NOT, OR, AND, XOR,
NOR, NAND, NXOR), configurando o nmero de entradas a serem utilizadas para a operao e
tambm o tipo de sada a ser transmitida.



Data Type Converter
O bloco Converter serve para converter o tipo de dado a ser enviado. Caso uma sada
esteja definida como uint8 e necessrio que um outro bloco processe esse sinal mas recebe
suas entradas como double, possvel converter esse sinal de uint8 para double utilizando
esse bloco.

Valor da constante
(Valor desejado)
Valor de amostragem
(geralmente configurado como
inf)
Seleciona o tipo
de sinal que ser
enviado como sada
Seleciona o tipo de
operao lgica
Seleciona o
nmero de entradas
Seleciona o tipo de sada

18 Software Engineering



Display e Scope

O display e o Scope esto agrupados em Sink, onde h vrios blocos com o propsito de
visualizar um sinal de sada seja seu valor atual, se sua variao e grfico.
O display usado para mostrar o valor atual do sinal. possvel visualizar o valor de uma
varivel comum como de um vetor.
O Scope demonstra um grfico (forma de onda) do sinal em questo, mostrando seu valor
atual e valores assumidos na faixa de tempo selecionada para visualizao.

Seleciona o tipo de sada
(sinal convertido)
Mostra o valor atual do sinal
Mostra o grfico (forma
de onda) do sinal

19 Software Engineering

Ports e Subsystem

O Subsystem um bloco onde possvel criar um subsistema, um bloco macro para a
agrupar outros elementos do simulink. O subsistema funciona como uma caixa preta,
contendo entradas e sadas e dentro dele (clicando duas vezes) possvel inserir os elementos
que forem necessrios.
Para especificar as entradas e sadas necessrio utilizar os blocos in e out. a numerao
automtica, porm possvel defini-la manualmente entrando nas propriedades (vide xxx) do
bloco.

From e Go to

O From e o Go to so blocos que servem para organizao do modelo. Atravs desses
blocos possvel rotear um sinal, ou seja, voc pode lig-lo a um bloco Goto e nomear esse
sinal (propriedades do bloco Goto). Onde for necessrio usar o sinal no modelo, basta colocar
um bloco From, inserir o mesmo nome colocado no bloco Goto (propriedades do bloco) e
depois interligar a sua entrada do bloco desejada. O sinal ser chamado automaticamente.
Isso evita o uso de vrias interligaes e facilita a compreenso das ligaes efetuadas, sem a
necessidade de seguir linhas de ligao.
Ports
Entradas de
um subsystem
Ports
Sadas de
um subsystem
Subsystem

20 Software Engineering



Data Memory, Data read, Data write

O Data Memory uma forma de criar uma memria temporria para armazenar o valor de
uma varivel durante a execuo de um modelo / software. A varivel criada pode ser
chamada por um outro elemento e setada a qualquer momento. Os blocos Data read servem
para ler o valor de um bloco Data Memory. Os blocos Data write servem para gravar um valor
em um Data Memory.


Inserir o nome
do sinal de
origem
Definir o nome
do sinal para a
utilizao
Inserir o nome
do sinal Data
Memory de
referncia
Inserir o nome
do sinal Data
Memory de
referncia

21 Software Engineering

O bloco Data Memory muito til em situaes onde h vrias situaes e lgicas
diferentes que modificam uma s varivel, sendo assim, ao invs de criar uma lgica para
gerenciar todos os sinais das lgicas para atualizar a varivel, modifica-se o valor da varivel
em cada lgica, sem problemas de conflito, onde o ltimo que modificar a varivel ser o valor
que permanecer at que haja um novo comando de escrita.




OBS: necessrio retirar os alertas atravs das propriedades para que no aparea mensagens
de alerta no Matlab.


Selecionar o
tipo de sinal a
ser armazenado
Selecionar como
sinal real.
Opo = real
Definir o nome
da varivel a ser
armazenada
Definir valor de
inicializao
Definir como None (sem alerta)
Definir como None (sem alerta)
Definir como None (sem alerta)

22 Software Engineering


Bus Creator e Bus Selector



Muitas vezes necessrio transmitir vrias sadas de um bloco, sendo que esses sinais
sero enviados a vrios blocos. Para facilitar o envio e a seleo desses sinais, possvel criar
um barramento e disponibilizar todos os sinais atravs de um s sinal. Esse recurso possvel
atravs do bloco Bus Creator. Nele possvel configurar (propriedades) o nmero de entradas
a serem inseridas no barramento.

A parte da seleo dos sinais inseridos no barramento feita atravs do bloco Bus
Selector. Esse bloco, em suas propriedades, permite a escolha de quais sinais sero utilizados.
A seleo desses sinais criar ento o nmero de sadas de acordo com os sinais selecionados.

Bus Creator
Bus Selector
Seleciona o nmero de entradas do bloco
Visualiza as entradas inseridas com seus nomes
(caso a conexo no tenha nome ser gerado o
nome automaticamente como signalx)

23 Software Engineering





OBS: importante que na entrada do Bus Creator todas as interligaes (linhas) de
entradas sejam nomeadas de acordo com o sinal a ser transmitido. Isso facilitar a
identificao dos sinais para sua eventual utilizao atravs do Bus Selector.
4. STATEFLOW
O Stateflow uma toolbox do Matlab que utilizada no Simulink para a criao de
diagramas de estado, diagramas de fluxo e tabelas verdade dentro do Simulink. Esse recurso
auxilia a programao e o desenvolvimento de lgicas de controle de forma visual.
importante lembrar que para ter acesso ao Stateflow necessrio que a licena do
Matlab inclua o Stateflow com toolbox. Se no estiver inclusa, necessria a aquisio parte
dessa ferramenta.

Remover sinais (selecionar sinais
desejados e clicar em remove)
Adiciona sinais
(selecionar os
sinais desejados e
clicar no boto
select)

24 Software Engineering

4.1 Inserindo um Diagrama (Chart Tabela Verdade)

O Stateflow aparece na biblioteca do Simulink em uma Aba prpria com o nome de
Stateflow. Dentro da aba possvel utilizar dois blocos: Chart e TruthTable. Para utilizar esses
blocos, assim como os blocos do Simulink, basta clicar segurar e arrastar o bloco para o
Modelo aberto.


4.2 Tabela Verdade (TruthTable)

A tabela verdade utilizada para fazer lgicas que podem ser reduzidas facilmente a uma
tabela verdade. Utilizando ela possvel simplesmente identificar as entradas e condies para
que sejam verdadeiras ou falsas e definir aes de acordo com a tabela verdade identificada.
A tabela verdade possui entradas do tipo double, onde possvel definir, dentro de seu
bloco, o nome da varivel, condio para que seja verdadeira e suas aes de acordo com o
valor das entradas.

25 Software Engineering


4.3 Diagrama de estados

O diagrama de estados uma referncia de como uma funo lgica opera a partir de um
diagrama de estado, onde cada varivel influi na seleo do estado de operao atual da
lgica.

O diagrama de estados tambm depende de entradas e sadas, sendo esses configurados
em uma tela de configurao.
Para acessar essa tela, h duas maneiras diferentes: Atravs do boto explorer ou atravs
do menu Tools -> Explorer


A tela de configurao permite a criao de entradas, sadas variveis locais e eventos.
No campo Name a varivel nomeada.
No campo Scope possvel definir o tipo de dado que ser:

26 Software Engineering

o Input Define uma entrada para o diagrama
o Output Define uma sada para o diagrama
o Local Define uma varivel interna do diagrama
o Constant Define um parmetro local
o Parameter Define um parmetro do modelo (vinculado a um arquivo .m)
o Data Store Memory Chama uma varivel de um bloco Data Memory
No campo port definido o nmero da porta de entrada ou sada (ordem que
aparece no bloco chart as entradas e sadas). Ele numerado automaticamente
quando um item criado, mas possvel redefinir a numerao desejada.
No campo Data Type definido o tipo de sinal a ser utilizado (vide item xxx)
No campo size possvel definir o tamanho da varivel. Como padro deixado
em branco ou preenchido com -1 em alguns casos, mas caso a varivel seja do tipo
vetor ou matriz necessrio especificar o tamanho dessa varivel.
Ex: [3 7] - matriz contendo 3 linhas e 7 colunas
6 - vetor de 6 posies (0 1 2 3 4 5)
No campo InitialValue possvel configurar o valor inicial desejado para que a
varivel assuma.



Para criar um diagrama possvel utilizar algumas ferramentas como estados,
transies, pontos de deciso, funes entre outras. Elas sero descritas
detalhadamente em seguida.

27 Software Engineering



Estado: Os estados mantm a execuo daquele objeto, enquanto as condies
que a mantm no estado forem verdadeiras.
Histrico: O histrico funciona atravs do armazenamento do ltimo estado em
execuo dentro do ambiente (local onde o histrico foi inserido). Quando o
ambiente for executado novamente, ser direcionado para o ltimo estado que
estava ativo ao invs de voltar ao estado inicial.
Transies: Transies podem ser utilizadas tanto em diagramas de estado como
diagramas de fluxo, especificando as condies para que haja uma transio de um
estado para outro ou uma deciso de fluxo a ser seguido.
Ponto de Deciso: Objeto onde pode-se inserir vrias transies de entrada e
sada, sendo sua deciso tomada a partir das condicionais presentes em cada
transio. OBS: necessrio sempre ter um caminho padro (sem condicional)
para caso nenhuma condicional seja vlida. O diagrama no aceita ficar parado
em um ponto de deciso esperando alguma condio se tornar verdadeira.
Tabela Verdade: Pode ser inserida uma tabela verdade dentro de um stateflow. A
tabela verdade pode ter utilidades como abordado no item anterior.
Inserir um estado
Inserir estado
com histrico
Inserir uma
transio
Inserir um ponto
de deciso
Inserir uma
tabela verdade
Inserir uma
funo
Inserir uma funo
do matlab
Inserir uma caixa
(organizar a logica)
Inserir uma funo
do simulink
zoom

28 Software Engineering

Funo: A funo pode ser usada e criada como um diagrama de fluxo, onde a
cada vez que for chamada executar aquele fluxo ou ao desejada.
Funo do Matlab: Atravs da funo do Malab possvel inserir um cdigo
MATLAB a ser executado a cada chamada da mesma.
Caixa: A caixa serve para organizar a lgica e para aglomerar vrios estados em um
s ambiente.
funo do Simulink: Permite criar uma funo com blocos e objetos do simulink
dentro do prprio stateflow.

4.3.1 Estados e transies
Os estados podem ser inseridos conforme descrito anteriormente. Ao trabalhar com
estados, podemos utilizar alguns comandos de execuo. Os principais so:
entry: Esse comando executado na entrada do estado.
During: Esse comando executado constantemente, enquanto estiver dentro do
estado
Exit: Esse comando executado quando h uma sada do estado.

O exemplo abaixo mostra a criao de um modelo para a visualizao dessas diferenas e
alguns outros pontos tambm:


29 Software Engineering




Ao criar esse exemplo, foi feito trs estados que funcionam em paralelo. possvel fazer isso
clicando no local onde esto os estados que quer que execute em paralelo e clicando com o
boto direito. No menu que aparecer deve-se clicar em: Decomposition -> Paralel

Em cada estado principal foi utilizado uma forma diferente de escrever as condies.
No estado ENTRY foi usado a forma booleana de Verdadeiro ou Falso.
No estado DURING foi utilizado a especificao direta de valores da varivel, onde caso
seja igual ao valor designado a condio se tornar verdadeira. Nessa metodologia
pode-se utilizar tambm os sinais >, < ou =! para avaliar se a varivel maior, menor
ou diferente do valor estipulado.
No estado EXIT utilizado um mtodo parecido ao usado no DURING porm ao invs
de utilizar os valores reais, so utilizados Constantes ou pode-se utilizar Parmetros.
Isso permite que, caso seja mudado o valor respectivo, seja atualizado a lgica

30 Software Engineering

facilmente somente alterando o valor estipulado para a Constante ou Parmetro, sem
precisar mudar todas as condies onde o valor utilizado.

Ao executar o exemplo criado (clicar no boto Play) nota-se que apesar da entrada IN3
modificar as duas sadas, somente a sada OUT1 ser realmente alterada, isso porque
enquanto o comando entry executado s uma vez para mudar o valor da sada OUT1, o
comando during ficar sempre atualizando o valor de OUT2, fazendo com que mesmo que seja
enviado um novo valor para OUT2 atravs da transio de IN3 (mudana de valor, muda os
estados e executa comando ex: OUT2 = x), o valor de OUT2 ser imediatamente atualizado
pelo comando During, dando a impresso de que nada aconteceu.

4.3.2 Temporizadores
Quando h necessidade de realizar alguma temporizao possvel utilizar algumas formas
diferentes para este fim, so elas:
possvel definir funes de temporizao atravs de transies, para isso utilizam-se duas
formas distintas:
After(quantidade de iteraes, referncia) Esse comando permite que aps uma
contagem de n iteraes o comando seja executado. necessrio definir qual a quantidade de
iteraes sero necessrias e qual a referncia, ou seja, o que ser definido como iterao.
Geralmente a iterao equivale a um ciclo de amostragem, que definido internamente como
tick. Ou seja, um exemplo comum a se utilizar seria:
After(100, tick). Isso equivale dizer que depois de 100 ciclos de amostragem a transio vai
ser tornar verdadeira.
Muitas vezes, para determinar um tempo comum a se utilizar so definidos parmetros
equivalentes a quantidade de ciclos necessrios para formar uma unidade comum como
segundos: Ex: com amostragem de 0.02 seg, para se formar um segundo o parmetro segundo
ter o valor de s = 50 (50x0.02 == 1). Nesse caso, para esperar 2 segundos, o comando ficaria:
After(2*s,tick).
No comum utilizar outras referncias alm de tick(ciclo de execuo) porm pode ser
utilizado outras referncias caso seja necessrio. Um exemplo seria quando se deseja que aps
n eventos que a condio se torne verdadeira, ento poderamos criar o comando:
After(n,evento) onde n seria a quantidade desejada e evento seria o nome do evento.


31 Software Engineering

Como foi dito o After utilizado para que a condio se torne verdadeira aps o tempo
determinado, mas s vezes necessrio que a condio seja verdadeira antes de um tempo
decorrido. Para isso podemos utilizar o comando Before.
Before(n,tick) o Before equivale a deixar vlida a condio at que se tenha decorrido o
tempo estipulado. Depois do tempo a condio se tornar falsa. Sua estrutura similar ao
after e pode ser utilizado das mesmas maneiras, lembrando que a lgica ser invertida, ou
seja, ele verdadeiro antes do tempo estipulado e no depois como no after.
O exemplo abaixo demonstra o uso desses temporizadores e suas utilidades.



O exemplo mostra a utilizao do after e do before, tanto contando ciclos de execuo (tick)
como atravs de um evento especfico gerado.


32 Software Engineering

4.3.3 Eventos
Os eventos podem ser utilizados para diversos fins. Podem ter funes diferentes tambm
dentro de um diagrama de estados. H trs maneiras com que se pode definir um evento,
assim com demais variveis: Como entrada, local ou sada.
Entrada: Ao definir um evento como entrada, todo o diagrama de estados estar
condicionado execuo do diagrama quando o evento for verdadeiro. No
haver execuo constate do diagrama, sendo limitado pelo evento definido. Isso
pode ser utilizado para evitar execuo demasiada e desnecessria de um
diagrama.
Local: Ao definir um evento como local voc dever gerar e utilizar esse evento
dentro do diagrama de estados. O evento pode ser gerado em algum estado ou
durante alguma transio para ser utilizado da mesma forma.
Sada: Quando definido um evento como uma sada, esse evento dever ser
gerado dentro do diagrama de estados e ser enviado a uma sada do diagrama,
sendo a cada vez que o evento gerado o valor da sada comutado de 0 para 1
ou vice versa.
O exemplo abaixo mostra a utilizao dos trs tipos de evento e sua utilizao.



33 Software Engineering















No diagrama acima foi configurado um evento de entrada e um evento de sada, possvel
observar que ao criar esses eventos um novo campo foi habilitado: Trigger. O campo trigger vai
definir como sero tratados os eventos, como bordas de subida, descida, ambos ou no caso de
um evento, pode-se configurar como uma chamada de funo.
Na chamada de funo o nome do evento deve ser igual ao nome da funo a ser
executada.












No diagrama acima, h um estado para avaliar a entrada e outro para setar a sada, onde a
cada mudana da entrada ser chamado o evento ativar que ser usado para trocar os
estados da parte da lgica e assim, definir o valor da sada.

34 Software Engineering


4.3.4 Funes
Utilizar uma funo permite que voc execute uma rotina a cada vez que a funo for
chamada. Uma rotina pode ser definida como um caminho normal, um fluxo habitual. Como
um fluxo, no se h estados ou funes temporais, sendo sempre implementada uma funo
como um diagrama de fluxo, onde todas as aes devem ser imediatas, por isso o uso de {} e
tambm deve-se lembrar que sempre haver um caminho comum, sem condies para que a
funo tenha um final.
O exemplo abaixo demonstra a utilizao de uma funo para avaliao das entradas e
configurao da sada conforme as mesmas.


Quando h alguma entrada ativa ir habilitar a condio e ser executada a transio de
estados de OFF para ON.

35 Software Engineering

A funo ser executada na transio entre os estados OFF e ON e tambm durante o
estado ON, se houver alguma mudana no valor das entradas.
O comando hasChanged(variavel) avalia a varivel e torna a condio verdadeira somente
quando h uma mudana no valor da varivel. Esse comando pode ser usado em outras
formas tambm, so elas:
hasChangedTo(varivel, valor) Se torna verdadeiro somente quando a varivel
muda para o valor definido.
hasChangedFrom(varivel, valor) Se torna verdadeiro somente quando a varivel
est com o valor definido e muda para outro valor.
4.3.5 Funes do Matlab
A funo do Matlab permite-se criar um script em linguagem do Matlab possibilitando
utilizar funes do Matlab para processamento e clculos matemticos. A funo do Matlab
deve conter sempre as informaes de entrada e sada da funo, sendo colocado no quadro
da funo as variveis enviadas e dentro da funo as variveis que sero usadas de forma
local. necessrio observar que, diferente da funo do stateflow, a funo do Matlab
processada dentro do script usando as variveis definidas dentro do mesmo, no sendo
possvel reutilizar as que foram especificadas no diagrama, como acontece com uma funo
comum.
O exemplo mostra a utilizao de uma funo do Matlab para uma lgica de clculo de
rea de figuras.


36 Software Engineering




O clculo da rea ser feito pela funo do Matlab assim como a verificao das entradas,
atravs da lgica de switch case do Matlab.
4.3.6 Tempo Real no Matlab
Os modelos criados no simulink possuem uma configurao de tempo de simulao, assim
como o perodo de amostragem e tipo de amostragem que ser feito, como descrito
anteriormente. Para se utilizar uma base de tempo equivalente ao tempo real necessrio que
seja inserido um clock e referenciado com uma base de tempo real.
Ao desenvolver um modelo para o intuito de validar requisitos ou demonstrar o
funcionamento de uma pea ou lgica, muitas vezes se faz necessrio o vnculo com o tempo
real. Para isso foi criado uma funo em c e uma dll chamadas Sfun_time que fazem a
referncia. No Matlab foi criado um bloco contendo um clock e chamando a funo Sfun_time
e atravs disso consegue-se a referncia com o tempo real.
4.3.7 Diferenas entre Simulao e desenvolvimento de Software.
Quando desenvolvemos uma simulao para validar requisitos ou demonstrar uma funo
utilizamos elementos diferentes e temos uma viso diferente de quando vamos desenvolver
um software.
Enquanto ao criar uma simulao h uma necessidade de criar tanto a lgica da funo
quanto as lgicas referentes ao ambiente grfico, no desenvolvimento de software no
pensamos em desenvolver nada para ser demonstrado, somente ferramentas para teste, mas
por outro lado temos que atender os requisitos da funo estritamente e desenvolver de

37 Software Engineering

modo especfico, utilizando somente os blocos designados e preocupando com a performance
final do seu software.
A tabela abaixo mostra algumas diferenas visveis entre os dois desenvolvimentos:
Simulao Desenvolvimento de software
Objetivo Demonstrar o funcionamento
da funo e melhorar a
documentao descritiva.
Implementar a funo e gerar o
cdigo para o fornecedor
Limitaes Utilizao de todas as
ferramentas disponveis
Utilizao de somente funes
que possibilitem a gerao do
cdigo corretamente
(Orientaes passadas pelo
coordenador da equipe)
Base Base em um modelo de
simulao anterior contendo
blocos Logic, Boundary e Real
Time
Gerada casca com utilizao de
software (MTP) ou seguido
padres ATPP para configurao
do AUTOSAR.
Gerao de Cdigo Utilizado MATLAB Coder e
gerado arquivo executvel
(.exe)
Utilizado TargetLink ou
Embedded coder e gerado
arquivos fonte (.c) cabealho
(.h) e XML (.arxml)

4.3.8 Observaes
Ao construir um diagrama de estados necessrio de lembrar alguns detalhes:
1) O diagrama de estados deve sempre conter um estado inicial, para que ao incio da
execuo haja um estado padro para ser executado em primeiro lugar.
2) possvel trabalhar com estados em dois tipos de execuo: Exclusive ou Paralel. No
modo Exclusive todos os estados vo ser executados conforme as transies colocadas
de forma exclusiva, ou seja um por um. No modo Paralel os estados sero executados
de modo paralelo todos ao mesmo tempo ( importante lembrar que isso no
significa que o processamento ser paralelo e sim que a cada ciclo uma parte de cada
um dos estados ser executado).
3) Cada estado pode conter subestados e assim por diante. importante lembrar de que
quando voc desejar que haja um subestado, este deve estar inteiramente dentro do
estado que o comporta.
4) Em execuo paralela, como possvel prever, no aceitvel criar transies entre
dois estados em paralelo.
5) Quando se utilizar /ao a ao ser executada ao se chegar ao prximo estado
enquanto quando se utiliza {ao} a ao executada imediatamente.
6) Em diagramas de fluxo no possvel utilizar ao como /ao por no haver estado
subsequente, sendo ento utilizada para cada ao a forma {ao}.

38 Software Engineering

7) Em funes ou pontos de deciso deve haver sempre, como falado anteriormente, um
caminho padro, sem condicional.
8) possvel fazer cpia de objetos arrastando o(s) objeto(s) selecionado(s) com o boto
direito do mouse ou atravs do menu editar.
9) Ao clicar com o boto direito do mouse sobre um objeto possvel exibir opes
referentes a ele como torn-lo em um agrupamento (Make Contents -> Subcharted),
trocar a ordem de execuo isso ser importante sobre as prioridades de transio e
at ordem quando h execuo em paralelo (Execution Order -> x) e definir outras
propriedades como tamanho das letras, setas, breakpoints, etc.
4.3.9 Atalhos utilizados para facilitar o desenvolvimento
Alguns atalhos facilitam o processo de desenvolvimento no simulink e no StateFlow.
Alguns deles so descritos abaixo:

Espao Enquadra a tela no(s) objeto(s) selecionado
1 reduz a tela para o tamanho original zoom == 100%
R Aumentar o Zoom
V Diminuir o Zoom
Esc Muda a janela para o nvel superior
CTRL + C Copiar objetos selecionados
CTRL + V Colar objetos selecionados
CTRL + Seleo de 2 objetos Cria conexo entre os dois objetos
Arraste com boto direito do mouse Copiar objeto


39 Software Engineering

5. SUGESTES DE REFERNCIAS
http://www.mathworks.com/videos/getting-started-with-stateflow-
70063.html
http://www.mathworks.com/videos/getting-started-with-stateflow-
81647.html?form_seq=conf1092
http://www.mathworks.com/videos/getting-started-with-stateflow-part-2-
81670.html?form_seq=conf924&confirmation_page&wfsid=5750711
http://www.mathworks.com/videos/getting-started-with-stateflow-part-3-
81671.html?form_seq=conf966
MATLAB - help
6. EXERCCIOS PROPOSTOS
Exerccio 1: Implementar o seguinte sistema no matlab e demonstrar graficamente
atravs do altia.
Semforo para organizar o trnsito entre um cruzamento de uma avenida. O semforo possui
uma temporizao de 1:30 min quando aberto, 7 segundos como ateno (sinal amarelo) e permanece 2
min com sinal fechado.
Em horrio noturno, entre 20:00 h e 00:00 o sinal possui temporizao diferente, sendo 2:00
min quando aberto, 10 seg como ateno (sinal amarelo ) e permanece 1:30 fechado.
Aps a meia Noite o sinal permanece desligado, com o sinal amarelo intermitente, numa
frequncia de 1Hz e duty Cycle de 50% e permanecer nessa condio at s 04:59h.
Durante o horrio normal de funcionamento, h um boto de pedestre, cujo funcionamento
ocorre da seguinte forma:
Caso seja pressionado o boto de pedestre e o sinal esteja aberto, se o tempo para o
fechamento do sinal for maior do que 20 segundos, o temporizador ser alterado para o fechamento do
sinal em 20 segundos.
Ex 1: sinal verde tempo decorrido == 0:50 min / 40 seg para a abertura
Pressionado o boto de pedestre novo tempo decorrido = 1:10 min / 20 seg para a abertura do
sinal
Ex 2: sinal verde tempo decorrido == 1:12 min / 18 seg para a abertura
Pressionado o boto de pedestre no h ao / 18 seg para a abertura do sinal

2 PARTE:
Implemente uma forma visual de mostrar o tempo decorrido de cada temporizador.


40 Software Engineering

Exerccio 2: Implementar o seguinte sistema no matlab e demonstrar graficamente
atravs do altia.
Fazer a implementao de um ar condicionado. Como entrada ele possui um boto instvel
com a funo de ligar / desligar o aparelho.
O aparelho tambm possui mais dois botes de set de temperatura, onde a ultima
temperatura setada mantida. Os dois botes aumentam e diminuem a temperatura (T+ / T-).
O ar condicionado trabalha com potncia varivel conforme a diferena entre a
temperatura ambiente e a temperatura selecionada conforme a tabela abaixo:
Diferena de Temperatura (|Tamb - Tset|) Potncia
30 100
25 80
20 65
15 50
10 35
5 20

Caso a diferena de temperatura seja menor ou igual a 1 grau, o ar condicionado ser
desligado e mantido desligado por pelo menos um minuto. O ativamento ser automtico
quando a temperatura exceder 3 graus e houver passado 10 minutos de ele estar desligado ou
a temperatura exceder 6 graus.
Quando o ar condicionado for desligado atravs do boto de liga e desliga ele dever ser
desligado imediatamente e no considerar o ativamento automtico.
Um led deve ser mostrado para exibir o estado (ligado / desligado) do ar condicionado.
6.1 Observaes
Os exerccios acima devem ser desenvolvidos procurando sempre manter as seguintes
caractersticas:
Simplicidade Procurar manter um diagrama simples e funcional
Organizao Manter o diagrama organizado, de forma a ser facilmente
indentificado
Comentrios Manter comentrio a respeito da forma de implementao da
lgica
Utilizao de elementos adequados e diversos Utilizar diagrama de estados,
diagrama de fluxo, funes, e outros de acordo com a necessidade,
OBS: indicado tentar desenvolver a lgica em duas formas de implementao: Lgica
cclica (uso de mais diagramas de estados) e por evento (uso de mais diagramas de fluxo).