20
DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos 1 Professor: Joni da Silva Fraga Doutorando: Luciano Barreto

DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Embed Size (px)

Citation preview

Page 1: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

DAS 5315 - Sistemas Distribuídos para Automação Industrial

Trabalho1º Semestre 2014

DAS5315 - Sistemas Distribuídos 1

Professor: Joni da Silva FragaDoutorando: Luciano Barreto

Page 2: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Objetivos

• Aplicar os conceitos aprendidos na disciplina– Threads– Concorrência– Objetos remotos– Comunicação entre processos

• Implementação de uma aplicação utilizando mecanismos de invocação remota de métodos

DAS5315 - Sistemas Distribuídos 2

Page 3: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Descrição• Controle de Silos de Armazenamento e Escoamento

• Um controlador deve distribuir os abastecimentos entre os 5 silos• Esse controlador recebe informações de recebimento de grãos e faz a leitura de

sensores de quantidade nos silos para tomar a decisão de qual silo abastecer

DAS5315 - Sistemas Distribuídos 3

Silo 01Obj_S1

Silo 02Obj_S2

Silo 4Obj_S5

Controlador

Recebe abastecimento

Lê sensores dos silos

Decide em qual silo armazenar

Silo 03Obj_S4

Silo 03Obj_S3

Page 4: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Especificações

• Silos• Os silos tem uma capacidade limitada• Há uma vazão dos grãos dos silos• O abastecimento do silo deve levar em conta a sua

capacidade de armazenamento• Valor Máximo Abast = Capacidade do Silo – Utilização

• Caso a quantidade de abastecimento não caiba em um silo a mesma deve ser distribuída nos demais• O valor em espera pode ser armazenada em uma variável de

estocagem

DAS5315 - Sistemas Distribuídos 4

Page 5: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Especificações• Controlador• Recebe informações de abastecimento

• Deve distribuir o abastecimento entre os silos, de forma que o silo com menor quantidade de grãos receba esse abastecimento (total ou parcial)

• O controlador pode receber quantidades variáveis de abastecimento, dessa forma pode ocorrer de uma certa quantidade de grãos ficar em espera pois nenhum silo comporta• Aguardando escoamento

DAS5315 - Sistemas Distribuídos 5

Page 6: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Especificações

• Os sensores dos silos podem falhar, caso isso ocorra o controlador deve desativar esse silo da lista– Avisar o controlador do problema e exibir uma mensagem

• O valor que está neste silo quando ocorreu a falha no sensor é descartado

DAS5315 - Sistemas Distribuídos 6

Page 7: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Implementação

• Os silos são implementados em processos sendo executados em diferentes locais como objetos remotos• Esses processos devem oferecer um método remoto chamado:• Ler_Sensor() que irá retornar a quantidade atual armazenada no silo• Abastece_Silo() que envia uma quantidade para o abastecimento

• Os silos tem uma capacidade inteira de 50 unidades

• A variável que controla a quantidade atual do silo deve ser decrementada randomicamente em tempo e em quantidade simulando o escoamento

• Tempo variando entre 1 e 3 segundos com saída entre 5 e 50 quilos

DAS5315 - Sistemas Distribuídos 7

Page 8: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Implementação

• As leituras dos sensores devem manter um contador para saber qual a quantidade dos silos no momento das leituras– O controlador pode manter esses contadores atualizados a

cada 2 segundos

• ** Informar manualmente em qualquer um dos processos (exceto do controlador) o valor -1 na variável utilizada pelo sensor para simular defeito

DAS5315 - Sistemas Distribuídos 8

Page 9: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Implementação

• O controlador recebe as quantidades de abastecimento– O sistema deverá receber a leitura pelo teclado, podendo ser

informada diversas vezes.

• As quantidades recebidas são esporádicas (somente quando informadas manualmente), mas o processo de leitura/abastecimento deve ser automático

DAS5315 - Sistemas Distribuídos 9

Page 10: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Implementação

• A interação só será iniciada quando todos os processos tiverem registrado seus objetos remotos– Inicia-se todos os silos, depois o controlador é iniciado– Verificar utilizando a leitura das IOR

• Todos os silos começam com quantidade atual = 0

DAS5315 - Sistemas Distribuídos 10

Page 11: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Implementação

• Os abastecimentos e as leituras dos sensores devem ser armazenadas em um log– Um arquivo .txt deverá ser utilizado para isso. Sempre que

houverem leituras pelo controlador e abastecimentos pelos silos o evento deverá ser armazenado no log com a data e hora atual• Os LOGs devem ser individuais de cada processo, utilizando

estampas de tempo (14:00:00 – Leitura Silo 1 – 20; 14:00:01 – Abastecimento Silo 1 – Valor – 30)

• Mostrar na tela do controlador quando um sensor está com problema

DAS5315 - Sistemas Distribuídos 11

Page 12: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Implementação

• Os valores dos sensores, abastecimentos e leituras devem ser mostrados no dispositivo de saída padrão (tela)

• Utilizar threads para leituras e escritas tanto nos sensores quanto no controlador

• Lembrar que objetos podem ser concorrentes– Usar métodos que levem em conta a sincronização

DAS5315 - Sistemas Distribuídos 12

Page 13: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Ferramentas

• Linguagem de programação Java.– Core Java, Vol. I (Fundamentals). Cay S.

Horstmann, Gary Cornell.– Core Java, Vol. II (Advanced Features). Cay S.

Horstmann, Gary Cornell.

• CORBA– Java Programming With Corba. Andreas Vogel,

Keith Duddy.

DAS5315 - Sistemas Distribuídos 13

Page 14: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Dicas

• Utilizar estruturas de dados do Java tais como – ArrayList para métodos que a sincronia não importa– Vector para métodos que a sincronia é importante

• Thread-safe

– TreeSet/TreeMap já armazena ordenado• Bom quando se precisa saber qual o maior ou menor valor, por

exemplo

http://www.caelum.com.br/apostila-java-orientacao-objetos/collections-framework/#16-11-mapas-java-util-map

DAS5315 - Sistemas Distribuídos 14

Page 15: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Dicas

DAS5315 - Sistemas Distribuídos 15

Utilizar diferentes Threads para Diferentes Operações

Threads em Java são classes que implementam Runnable ou estendem Thread

Lembrar de utilizar semáforos, singleton, etc....

http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/sincronizacao.htmlhttp://www.javacodegeeks.com/2011/09/java-concurrency-tutorial-semaphores.htmlhttp://wmagician.wordpress.com/2008/01/02/padrao-singleton-em-java/

Page 16: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Dicas

• Interface gráfica não é obrigatório, mas é bem vinda– NetBeans ou IntelliJ IDEA ajudam a desenvolver interfaces

gráficas– Interfaces SCADA são interessantes

• Modo texto é aceitável– Se feita de forma que se entenda o processo

• Log em txthttp://www.devmedia.com.br/criando-e-gravando-dados-em-txt-com-java/23060http://mballem.wordpress.com/2011/03/21/manipulando-arquivo-txt-com-java/

DAS5315 - Sistemas Distribuídos 16

Page 17: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Dicas

• Utilizar computadores diferentes não é obrigatório– Mas utilizar diferentes processos é

• Não utilizar uma mesma classe Main para tudo

• Fazer somente um código para o Silo– Utilizar a identificação do silo através de argumento

java –jar silo.jar [1..N]

public static void main (String[] args){String id_Silo = args[0];....}

DAS5315 - Sistemas Distribuídos 17

Page 18: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Dicas

• Tentem apresentar fora da ferramenta que usaram para desenvolver (fica mais rápido e da menos confusão com os projetos)

– Gerando pacotes jar • Netbeanshttp://dicaetuto.blogspot.com.br/2011/03/criando-um-arquivo-jar-no-

netbenas-9x.html

• Eclipsehttp://maguscode.blogspot.com.br/2010/08/gerar-jar-no-eclipse-e-executar.html

• Para executar um jar use– java –jar pacote.jar [argumentos]

DAS5315 - Sistemas Distribuídos 18

Page 19: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Dicas

• Verificar se todos os objetos já foram registradosprivate static boolean isSynchronized(NamingContext nc) throws Exception {

BindingListHolder bl = new BindingListHolder();BindingIteratorHolder bi = new BindingIteratorHolder();nc.list(99, bl, bi);Binding[] bindings = bl.value;return bindings.length == 5;

}.....

org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");NamingContext nc = NamingContextHelper.narrow(objRef);...while (!isSynchronized(nc));...}....

DAS5315 - Sistemas Distribuídos 19

Page 20: DAS 5315 - Sistemas Distribuídos para Automação Industrial Trabalho 1º Semestre 2014 DAS5315 - Sistemas Distribuídos1 Professor: Joni da Silva Fraga Doutorando:

Avaliação

• Grupo de 2 alunos• Enviar o nome da dupla e a data de apresentação o quanto

antes• Os dois devem saber o que foi feito, um explica como

funciona o controlador e outro o silo• Entrega até 18/07/2014• Enviar código fonte em uma pasta com o nome da dupla

• Mandar e-mail para marcar dia e horário• Apresentação será no LTIC

• Dúvidas: [email protected]• www.das.ufsc.br/~lucianobarreto/

DAS5315 - Sistemas Distribuídos 20