Técnicas de Implementação de Sistemas Automatizados

Trabalho para 2019

O trabalho deve ser feito preferencialmente em C no Linux.
O trabalho deve ser apresentado pelos alunos no computador.
Uma sugestão para quem só tem Windows em casa é usar Virtualbox.



Trabalho do controlador de sistema contínuo

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.

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, implementada com precisão e não com sleep fixo.

Implementar um programa usando a biblioteca de pthreads que inclua as seguintes funcionalidades:

- Laços de controle como tarefa periódica para temperatura e nível;
- Alarme associado com valores das variáveis amostradas;
- Armazenagem em arquivo de leitura periódicas dos sensores (arquivo de histórico) com buffer duplo;
- 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 em si deve ficar no arquivo "controle.c" e deve ser composto por várias threads que colaboram entre si através de variáveis compartilhadas.

A planta será simulada por um outro programa, cujo código executável será fornecido. A comunicação entre o controle e o simulador será através de sockets UDP/IP.

Avaliação composta por:
    - Código fonte;
    - Texto explicando qual a função de cada thread e quais variáveis compartilhadas cada uma acessa;
    - Apresentação 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;
    - Período do controlador de temperatura deve ser 150ms;
    - Período do controlador de nível deve ser 200ms;
    - Atualização da tela pode ser com sleep simples de 1 segundo;