DAS5306: Informática Industrial II

Trabalhos para 2011/2

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.

 

T1 - Trabalho de sincronização de relógios

Um sistema de coleta de dados é composto por um computador central e quatro instrumentos de campo.
Os instrumentos estão ligados ao computador através de uma rede local UDP/IP. Os atrasos na rede
variam de instrumento para instrumento.

Cada instrumento opera de forma autônoma, fazendo uma medição a cada segundo cheio, conforme o
seu relógio local. As medições são armazenadas temporariamente no próprio instrumento, formando um
histórico (log) local.

O simulador fornecido recebe como parâmetro o número da porta base. Cada instrumento i escuta
a porta "porta base + i".

O computador deve periodicamente acessar cada instrumento e ler cada um dos logs locais. O computador
deve entao consolidar todas as medições em um hiostórico global.

O relógio do computador está sincronizado com a UTC, mas não existe sincronização entre os relógios
dos instrumentos e a UTC.

Cada instrumento opera no modelo cliente/servidor, aceitando os seguintes comandos:

"p" - Retorna a hora local no instrumento (segundos e nanosegundos).

"a" - Apaga o último log lido pelo computador, retorna "a".

"l" - Lê o último log disponibilizado, retorna o log no formato

25453=25427.572428

25454=25428.571429

25455=25429.570430

25456=25430.569431

onde o primeiro valor (int) é o segundo local na hora do instrumento

e o segundo valor (double) é a medida obtida por aquele instrumento.



OBJETIVO:

Escrever o programa em C sobre Linux para rodar no computador central o qual deve, para cada instrumento:

- determinar o atraso na rede

- determinar a diferença entre os relógios

- esperar 10 segundos

- determinar a nova diferença entre os relógios

- calcular o drift-rate

- obter o log

- corrigir os tempos de medição para a hora padrão



Programas relacionados:

cliente2011.c

servidor2001.c

t1cliente2011.c

t1servidor2011



T2 – Controlador de um sistema contínuo

Implementar o controle e a supervisão da planta descrita abaixo. A planta possui instrumentação embutida e aceita comandos para acesso aos sensores e atuadores.

Implementar um programa em C no Linux, usando a biblioteca de pthreads.

O programa CONTROLADOR deve incluir as seguintes funcionalidades de controle e
supervisão:

- Laço de controle como tarefa periódica;
- Detecção de valores 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 a planta;


Avaliação composta por:
- Código fonte;
- Texto explicando qual a função de cada thread, quais variáveis compartilhadas cada uma acessa;
- Apresentação individual do trabalho.

Outros requisitos:
- Usar mutex para proteger as variáveis compartilhadas;
- Tarefas periódicas implementadas com clock_nanosleep e não com sleep fixo;
- Período do controlador menor que 100ms, compatível com a planta em questão;
- Atualização da tela pode ser com sleep simples de 1 segundo;


Planta:

Info2HenriqueBBehr.pdf

Para compilar:

javac -cp cp.jar CaldeiraHenriqueBehr.java

Para executar:

java -classpath .:cp.jar CaldeiraHenriqueBehr 12345

O propósito dos comandos via UDP é acessar a instrumentação da
planta simulada. Mostrar através de comandos UDP que a simulação feita
responde corretamente. Para isto, usar um programa cliente UDP como udp.c



T3 – Programação Concorrente

Cada grupo deverá escolher um problema clássico de programação concorrente e implementar usando a biblioteca das Pthreads em C no Linux.

O mesmo problema clássico poderá ser implementado por no máximo 2 (dois) grupos. Os dois grupos que manifestarem interesse primeiro por e-mail para o professor ficam com o direito de usar aquele problema.

Sugestões: