Trabalhos entregues após a data estipulada perdem 10% da nota máxima
por dia de atraso, inclusive sábados e domingos.Trabalhos entregues no dia correto mas depois do horário de aula também
perdem 10% da nota máxima.
Apresentações individuais podem ser solicitadas.
Uma sugestão para quem só tem Windows em casa é usar o MinGW.
A caldeira possui instrumentação embutida e aceita os
seguintes comandos:
"sta0"
lê valor de Ta
"st-0"
lê valor de T
"sti0"
lê
valor de Ti
"sno0"
lê valor de No
"sh-0"
lê valor de H
"ani123.4" define valor de Ni como 123.4
"aq-567.8" define valor de Q como 567.8
"ana123.4" define valor de Na como 123.4
"anf123.4" define valor de Nf como 123.4
Cuidado com a formatação dos valores em ponto
flutuante.
Implementar um programa em C no Linux, usando a biblioteca de
pthreads.
O programa deve incluir as seguintes funcionalidades de controle e supervisão::
- Laço de controle como tarefa periódica para
a temperatura;
- Laço de controle como tarefa periódica para
o nível;
- Detecção de temperatura fora do intervalo de valores
válidos, geração de alarme;
- Informações na tela sobre a situação
corrente;
- Entrada através do teclado dos valores de referência
para nível e temperatura;
- Entrada através do teclado dos valores limites para o
intervalo de temperaturas válidas;
- Armazenagem periódica dos valores lidos de
temperatura e armazenagem desses dados
em arquivo.
Avaliação composta por:
- Código fonte;
- Texto explicando qual a função de
cada thread, quais variáveis compartilhadas cada uma acessa e
qual
o protocolo usado entre CONTROLADOR e SUPERVISOR;
- Apresentação individual do trabalho.
Outros requisitos:
- Usar mutex para proteger as variáveis
compartilhadas;
- Usar variáveis condição para
liberar as threads de alarme;
- Tarefas periódicas implementadas com
precisão
e não com sleep fixo (ver apostila na página da
disciplina);
- Período do controlador de temperatura deve
ser 100ms;
- Período do controlador de nível deve
ser 70ms;
- Atualização da tela pode ser com
sleep simples de 1 segundo;
- Usar buffer duplo para a gravação de
dados em arquivos, feita por thread própria.