You are on page 1of 15

Fernando Henrique Gomes Zucatelli

Projeto de software embarcado para um forno


de micro-ondas em C

Santo Andr
2014

Fernando Henrique Gomes Zucatelli

Projeto de software embarcado para um forno de


micro-ondas em C

Este trabalho parte dos requisitos necessrios a aprovao da disciplina em Programao Software Embarcado da Engenharia de
Instrumentao, Automao e Robtica da
Universidade Federal do ABC

Universidade Federal do ABC UFABC


Centro de Engenharia e Cincias Sociais CECS
Engenharia de Automao, Instrumentao e Robtica

Orientador: Prof. Amaury Kruel Budri

Santo Andr
2014

Sumrio
1

INTRODUO

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2.1
2.2
2.3

ESPECIFICAO DO PROJETO . . . . . . . . . . . . . . .
Especificao Textual . . . . . . . . . . . . . . . . . . . . . . .
Diagramas Use Case e/ou Diagramas de Sequncia . . . . . .
Interface com o ambiente externo (Hardware) . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

3
3.1
3.2
3.3

PROJETO DO SISTEMA . .
Arquitetura . . . . . . . . . .
Diagramas de Estado . . . .
Descrio dos arquivos fonte

.
.
.
.

.
.
.
.

.
.
.
.

. 9
. 9
. 10
. 11

4
4.1
4.2

TESTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Diagramas de sequncia dos casos de teste . . . . . . . . . . . . . . 13
Resultado dos testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

. . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .

3
4
4
4
5

1 Introduo
O projeto realizado do forno micro-ondas foi realizado utilizando mquinas de
estado desenvolvidas no ambientede desenvolvimento de software embarcado denominado
QPC e programas utilizando linguagem C na interface Elipse Luna. O projeto consiste
na confeco de uma mquina de estados que permita executar as funes do forno
micro-ondas conforme cada tipo de situao que este possa se encontrar durante o seu
funcionamento.

2 Especificao do projeto
2.1 Especificao Textual
O projeto do forno micro-ondas deve operar utilizando trs botes, porta, +1
Min, Cancela, de forma que quando a porta estiver aberta, a luz interna dever
estar acesa, mas sem emisso de micro-ondas, nesta situao o tempo pode ser ajustado
livremente, quando com a porta estiver fechada, a luz interna dever estar apagada e o
ajuste de tempo tambm pode ser feito, todavia quando houver tempo maior que zero o
forno dever ligar a emisso de micro-ondas e tambm a luz interna e ratifica-se que a
emisso de radiao de micro-ondas deve ocorrer somente com a porta fechada.
O usurio pode pressionar o boto +1 a qualquer instante e adicionar mais tempo
de cozimento, tal como ele tambm pode pressionar o boto cancelar e parar o processo a
qualquer instante. Fica facultativo a escolha dessas funes no momento em que o tempo
de cozimento estiver finalizado, considerando o tempo de aviso de trmino de operao do
forno.

2.2 Diagramas Use Case e/ou Diagramas de Sequncia


A Figura 1 exibe o diagrama de casos de comandos inseridos pelo usurio no sistema
e como ele recebe algumas informaes do sistema.

Figura 1 Diagrama de casos de uso


Diagrama de casos de interao sistema e usurio

2.3. Interface com o ambiente externo (Hardware)

Figura 2 Diagrama de casos de uso


Exemplo de uma sequncia de interao entre usurio e sistema considerrando abertura e
fechamento de porta, entrada de tempo e cancelamento antes de finalizar e nova entrada
de tempo at o fim do ciclo de operao

2.3 Interface com o ambiente externo (Hardware)


O sistema do micro-ondas possui os seguintes componentes que simulam o seu
hardware e as respectivas bandeiras (Flags) de sinalizao e funes que trabalham com
seus comandos :
a) Sensor de porta, possui um boto no hardware que utiliza as Flags:
OPEN_SIG- Indica que a porta abriu.
CLOSE_SIG - Indica que a porta fechou.
b) Luz interna, visualizada como fundo amarelo no hardware e comandado com
a funo.
void BSP_luz(int i)
i == 0 => desliga luz interna.
i == 1 => liga luz interna.
c) Um visor com quatro displays de 7 segmentos comandado pela funo.
void BSP_digito(int seg, int num) Mostra o nmero num (0 a 9) no
display seg (0 a 3). O display 0 o menos significativo e o 3 o mais
significativo

Captulo 2. Especificao do projeto

Devido a natureza da operao de exibio do tempo no display foi criada


uma nova funo que j exibe o tempo correto nos displays de 7 segmentos
tendo como parmetro de entrada o tempo em segundos.

void BSP_digito_tempo(int tempo){


BSP_digito(0, (tempo % 60) % 10);
//digito menos significativo segundo = tempo mod 60
BSP_digito(1, (tempo % 60) / 10);
//digito mais significativo segundo = tempo mod 60
BSP_digito(2, (tempo / 60) % 10);
//digito menos significativo minuto = tempo div 60
BSP_digito(3, (tempo / 60) / 10);
//digito mais significativo minuto = tempo div 60
}

d) Um boto + 1 min no hardware que utiliza as Flags.


PLUS1_SIG - Indica que o boto + 1 min foi pressionado.
e) Um boto Cancelar (denotado diversas vezes apenas por cancel) no hardware
que utiliza as Flags.
CANCEL_SIG - Indica que o boto cancel foi pressionado.
f) Um emissor de micro-ondas visualizada como marcas azuis no hardware (logo
abaixo do boto +1 Min) e comandado com a funo
void BSP_forno(int i).
i == 0 => desliga micro-ondas.
i == 1 => liga micro-ondas.
As figuras de 3 7 apresentam todas as possibilidades de combinaes visveis pelo
usurio do sistema.

2.3. Interface com o ambiente externo (Hardware)

Figura 3 Hardware para estado porta aberta, na situao sem tempo definido
Neste estado temos a luz interna acesa (fundo amarelo) e o forno desligado

Figura 4 Hardware para estado porta aberta, na situao com tempo definido
Neste estado temos a luz interna acesa (fundo amarelo) e o forno desligado, independente
de haver tempo definido no painel

Figura 5 Hardware para estado porta fechada, na situao sem tempo definido
Neste estado temos a luz apagada (fundo azul) e o forno desligado

Captulo 2. Especificao do projeto

Figura 6 Hardware para estado porta fechada e ligado


Neste estado temos a luz interna acesa (fundo amarelo) mesmo com a porta fechada e o
nico estado com o forno ligado (marcas em azul abaixo do boto +1 Min), neste estado
h sempre indicao de tempo maior que zero no painel

Figura 7 Hardware para estado porta fechada e uso da mensagem de trmino


Neste estado temos a luz interna acesa (fundo amarelo) e o forno desligado, a representao
da mensagem de informe ao usurio de que a tarefa est concluda feita atravs do painel
apagado.

3 Projeto do sistema
3.1 Arquitetura
O sistema contm os seguintes partes constituintes:
a) Estrutura do Micro contm objeto ativo e um evento temporal.
typedef struct MicroTag {
/* protected: */
QActive super;
/* private: */
QTimeEvt timeEvt;
} Micro;
b) Global objects
QActive * const AO_Micro = { &l_micro.super };
c) Pseudo-Construtor
void Micro_ctor(void) {
Micro *me;
me = &l_micro;
QActive_ctor(&me->super,Q_STATE_CAST(&Micro_initial));
QTimeEvt_ctor(&me->timeEvt, TIMEOUT_SIG);
}
d) Estados e sua entrada para eventos.
static
static
static
static
static

QState
QState
QState
QState
QState

Micro_initial (Micro * const me, QEvt const * const e);


Micro_pa (Micro * const me, QEvt const * const e);
Micro_pf (Micro * const me, QEvt const * const e);
Micro_pf_l (Micro * const me, QEvt const * const e);
Micro_pf_msg (Micro * const me, QEvt const * const e);

Sendo a transferncia entre estados dado por status = Q_TRAN(&"NomeEstado")


sendo status o retorno para a navegao na mquina de estados com QState status.
e) Objetos locais
static Micro l_micro;

10

Captulo 3. Projeto do sistema

3.2 Diagramas de Estado


A Figura 8 exibe o diagrama de estados base utilizado no desenvolvimento do
projeto, nela h 4 estados. Consideramos que o sistema comea no estado PA, que sofre
transio para o PF quando a porta estiver fechada, e quando houve tempo diferente de
zero o micro-ondas deve passar para o estado PF_L, nesses trs estados, toda a vez que o
boto de +1 Min for pressionado, o tempo ser acrescido com o valor de 60 segundos,
caso seja pressionada a tecla de cancelar, ento o tempo ser definido como zero. No
estado PA, nenhuma ao de transio de estado ser tomada com estes dois comandos, se
estivermos no estado PF, o sistema identificar que o tempo diferente de zero e passar
para o estado ligado PF_L, neste estado +1 aumenta o tempo sem sair do estado, se
cancelado o tempo volta a ser zero e retorna a PF e, se a porta for aberta o micro-ondas
passa para o estado PA mas conserva o valor do tempo remanescente.
Caso o sistema proceda at o fim do tempo de cozimento este entrar no estado
PF_MSG, nele o forno ser desligado e algum tipo de aviso ser dado ao usurio, ao
trmino o forno volta ao estado com a porta fechada.

Figura 8 Diagrama de estados de referncia


Diagrama de estados usado para o nicio da construo do mquina de estados e do
programa para o forno micro-ondas

Aps o incio da implementao do esboo inicial da mquina de estados percebi


a necessidade de alterar ligeiramente algumas transies e adicionar uma nova condio
de sada para o estado da mensagem, assim cheguei na mquina de estados descrita na
Figura 9, ela representa o diagrama final de funcionamento do micro-ondas com variveis
e notao de acordo com o hardware e com os comandos internos do ambiente QPC, alm
de ter as funes de controle do hardware apresentadas em cada estado. As condies de

3.3. Descrio dos arquivos fonte

11

transio e deciso de ao baseadas em cada evento esto descritas em Figura 9.


Neste novo diagrama da mquina de estados o estado que ocorre aps iniciar o
micro-ondas o estado micro_pf, e sempre nele a luz e o micro-ondas esto desligados.
Agora a transio para o estado micro_pf_l ocorre quando ocorre uma borda de transio
do temporizador, dado pelo sinal TIME_TICK_SIG, e a varivel TEMPO maior que zero,
como a varivel TEMPO preservado mesmo nos outros estados, me especial com a porta
aberta micro_pa, ento caso a porta seja aberta durante a operao do forno, ele desligar
o emissor de micro-ondas mas no zerar o TEMPO, assim quando a porta for fechada ele
continuar de onde parou.
O TEMPO decrescido apenas no estado micro_pf_l, sendo que quando houver o
evento TIME_TICK_SIG e o TEMPO chegar em zero, haver a transio para o estado de
mensagem micro_pf_msg, no qual a luz se mantm acesa, mas a emisso de micro-ondas
no. Esse estado sair automaticamente para o estado micro_pf aps o tempo de exibio
da mensagem de trmino, ou caso a porta seja aberta, neste estado a varivel TEMPO
sempre igual a zero, caso sejam apertadas as teclas +1 ou Cancel, nenhuma ao ser
tomada, isso s ocorrer quando o sistema sair desse estado.
A exibio da mensagem de trmino aps alguns testes foi definida como sendo o
display exibindo nada, para isso usamos o comando BSP_digito_tempo(-1111), a escolha
do nmero 1111 foi feita apenas para garantir que todos os displays receberiam um
nmero negativo, o que interpretado como nenhum digito para ser exibido, e todos os
digitos iguais simplificava o entendimento. Este estado fico ativo por dois ciclos do clock
definido em BSP_TICKS_PER_SEC, i.e., dois segundos, o display apagado aps o primeiro
segundo no estado.

3.3 Descrio dos arquivos fonte


Os arquivos fontes possuem os cabealhos:
a) bsp.h - Cabealho que contm a incluso do cabealho de sinais.h, a definio do
tempo de clock da mquina em 1 segundo, do tempo de incremento da varivel
TEMPO, denominada INC_TEMPO o que permite alterar o valor de 60 segundos
usado no modo operacional para nmero menor para ser usado nos testes das
funcionalidade (usado 3 segundos). Tambm contm a declarao da varivel
TEMPO e os prottipos das funes BSP... usadas na interao entre programa
e hardware simulado.
b) sinais.h - Possui a definio dos sinais ..._SIG que controlam informam
sobre os eventos que ocorreram, a definio da estrutura do evento micro-ondas
MicroEvtTag funcionando como uma classe se fosse em C++. Contm tambm

12

Captulo 3. Projeto do sistema

Figura 9 Diagrama de estados final


Diagrama de estados final utilizando a notao dos sinais, estados e variveis conforme o
programa desenvolvido e com as condies de transio combinadas

o construtor do micro-ondas e o respectivo evento ativo externo.


Os arquivos fontes em C so:
a) main.c - Arquivo que inicia a mquina de estados, garante que a luz e o forno
estaro desligados
b) micro.c - Arquivo que contm o funcionamento da mquina de estado descrevendo como cada estado processa os sinais de entrada, decide sobre suas
transies e como os eventos manipulam o TEMPO.
c) bsp.c - Arquivo que contm o corpo das funes declaradas no cabealho bsp.h.
As funes QF da mquina de estados e a instruo de como trabalhar com os
eventos QEvt e trabalhar com os sinais declarados em sinais.h

13

4 Testes
4.1 Diagramas de sequncia dos casos de teste
Aps definirmos como a mquina de estados opera conforme a Figura 9 e quais
sinais so enviados ao meio externo para cada estado, os testes so feitos analisando se
os percursos projetados na mquina de estados esto de fato sendo executados e se as
variveis manipuladas dentro de cada estado esto sendo processadas de forma correta.
Inclusive segue em anexo a este relatrio um vdeo demonstrando os casos de operao e
navegao ao longo da mquina de estados, neste vdeo, conforme citado anterioremente,
ressalta-se o uso experimental do boto +1 Min adicionando apenas 3 segundos em
vez de 60, apenas para facilitar a simulao reduzindo a espera para a transio entre os
estados.

4.2 Resultado dos testes


A mquina de estados funcionou adequadamente para todas as possveis trajetrias
percorridas dentro da mquina.
O tempo sempre pode ser acrescido e cancelado quando fora do estado de mensagem,
pois neste foi projetado a espera de 2 segundos com exibio de display apagada para
indicar que o preparo est concludo.
A emisso de micro-ondas ocorreu apenas no estado de porta fechada e ligado e
sempre foi desligada quando fora de estado, inclusive ao se abrir a porta dentro dessa
estado.
Quando o sistema est em funcionamento, com tempo maior que zero, e a porta
aberta a emisso de micro-ondas interrompida mas o tempo conservado, podendo ser
aumentado ou cancelado mesmo com a porta aberta, e retorna a ser contado quando a
porta fechada, caso tenha sido cancelado e a porta fechada ento o micro-ondas no ser
religado.
Quando no estado de exibio de mensagem de trmino, caso a porta seja aberta
antes da transio automtica de 2 segundos de volta ao estado de porta fechada, o
tempo exibido nos displays volta a ser zero e um novo ciclo de funcionamento poder ser
programado normalmente.

You might also like