DAS5306: Informática Industrial II

Trabalhos para 2007/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 do simulador de sistema a eventos discretos

Especificar e implementar um simulador a eventos discretos para uma planta
hipotética, no estilo da planta fornecida como exemplo. Requisitos:
- É necessário colocar transição nova no diagrama;
- Supor a existência de uma estação de controle de qualidade que aprova ou
não a peça produzida;
- No caso de reprovação, a peça precisa voltar para algum retrabalho, após
o que vai novamente para o controle de qualidade.

Exemplo:

Considere o problema da Linha de Produção de Cervejas, como descrito no
capítulo 3 da apostila do Prof. Cury sobre "Teoria de Controle Supervisório
de Sistemas a Eventos Discretos", página 20.

http://www.das.ufsc.br/~cury/cursos/apostila.pdf

Os seguintes arquivos estão disponíveis:

envasilhamento5.pdf    Arquivo descrevendo a máquina de estados da planta

motor5.c    Exemplo do programa controlador a ser feito

motor5.h    Descrição das rotinas disponíveis no simulador da planta

envasilhamento5.c    Simulador da planta

envasilhamento5.h    Descrição das rotinas disponíveis no simulador da planta

controlador5.c    Controlador da planta


T2 - Trabalho do controlador de sistema a eventos discretos

O objetivo deste trabalho é implementar um controlador para maximizar a
produção da planta, cujo simulador foi construído no trabalho anterior.

Escrever um novo controlador5.c que seja automático (o fornecido é manual) e que
maximize a produtividade da planta construída no trabalho anterior.

Não é permitido introduzir sensores na esteira nem sensores "mágicos" de alguma
forma.

O controlador recebe como parâmetro do programa o número de peças a serem
produzidas, ele parte com o sistema vazio e deixa ao final o sistema vazio (nenhuma
peça na esteira), após ter produzido o número de peças solicitadas.


T3 - Trabalho do controlador de sistema contínuo, monothread

Implementar o controle do sistema descrito aqui.
 
Simulador é usado para simular uma unidade de caldeira e é chamado com:
      java -jar aquecedor2006_2.jar  <número-porta-escutada>

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
 

Cuidado com a formatação dos valores em ponto flutuante.

Implementar um programa em C no Linux.

O programa CONTROLADOR deve incluir o controle em malha fechada
da temperatura da água e do nível da água.

A comunicação entre o CONTROLADOR e o simulador da caldeira será através
de sockets UDP/IP.
    
A tarefa de controle deve ser uma tarefa periódica com período de 100mS, implementada com
precisão e não com sleep fixo (ver apostila na página da disciplina).

Gerar um histograma com os valores utilizados como parâmetro do sleep.

T4 - Trabalho do banco de dados do processo

Implementar em C no Linux, utilizando a biblioteca das pthreads, um programa que
atue como banco de dados do processo (BDP). O processo vai consistir de 2 instâncias
da Caldeira usado no trabalho T3.

O BDP deverá definir uma "tag" (nome) para cada variável do chão de fábrica
que corresponde a um ponto de medição ou atuação.

O BDP atuará como servidor, recebendo "requests" pela rede de programas
clientes os quais poderão através dele acessar as variáveis do processo através
de seus tags.

Internamente, o BDP possui threads que automaticamente e periodicamente
mantém a consistência entre os valores armazenados por ele e aqueles que
são medidos na planta.

O BDP busca suas informações junto aos controladores específicos de
cada Planta. Ele NÃO acessa diretamente a instrumentação da planta.

Será necessário alterar o programa controlador do trabalho 3 para que o
mesmo forneça ao BDP os valores das variáveis, conforme suas
solicitações. Definir protocolo específico para isto, de forma semelhante
ao protocolo usado entre controlador e planta.

O mapeamento entre "tag" e
(endereço de rede, número de porta, string de comanrto )
deverá ser feito via uma tabela hash. Exemplo de tabela hash em

tabhash.c



T5 - Trabalho de supervisão do sistema completo

Implementar um supervisório que utiliza o BDP implementado no trabalho T4.

O supervisório implementado como um programa em C no Linux, usando a biblioteca de pthreads,
deverá incluir as seguintes funcionalidades:

- Alarme associado com valores das variáveis amostradas;
- Armazenagem em arquivo de leitura periódicas dos sensores (arquivo de histórico);
- Informações periódicas na tela;
- Leitura de comandos e/ou valores a partir do teclado que alteram os valores de referência.

O programa NÃO pode acessar diretamente nem os controladores nem a instrumentação
no chão da fábrica. Ele acessa tão somente o BDP.

Outros requisitos:
    - Usar mutex para proteger as variáveis compartilhadas;
    - Usar variáveis condição para liberar as threads de alarme;
    - 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.