Escolar Documentos
Profissional Documentos
Cultura Documentos
Projeto Residencial PDF
Projeto Residencial PDF
CURITIBA, 2009
12
EDUARDO HENRIQUE CORRÊA FERREIRA
CURITIBA, 2009
13
EDUARDO HENRIQUE CORRÊA FERREIRA
BANCA EXAMINADORA
__________________________________________________
Professor Dr. Eduardo Parente Ribeiro – Orientador
_________________________________________________
Professor M.Sc Ademar Luiz Pastro
_________________________________________________
Professor Dr. Gideon Villar Leandro
14
À minha noiva, Marciany, meus pais,
Haroldo e Solange, e minha avó Maria
José por terem me apoiado não só na
elaboração deste trabalho como em tudo
na minha vida.
15
AGRADECIMENTOS
16
RESUMO
17
ABSTRACT
18
LISTA DE ILUSTRAÇÕES
19
LISTA DE TABELAS
20
LISTA DE ABREVIATURAS E SIGLAS
ACK – Acknowledge
CAN – Controller Area Network
CEBus – Consumer Electronic Bus
CSMA/CR - Carrier Sense Multiple Access / Colision Resolution
DLC – Data Length Code
DSP – Digital Signal Processor
EOF – End Of Frame
FFD - Full-Function Devices
IDE - Identifier Extension
IEEE - Institute of Electrical and Electronics Engineers
ISO - International Organization for Standardization
MAC - Medium Access Control
PAN – Personal Area Network
PCI - Peripheral Component Interconnect
RFD – Reduced-Function Devices
RTR – Remote Transmission Request
SAE – Society of Automotive Engineers
SOF – Start of Frame
SRR – Subistitute Remote Request
USB – Universal Serial Bus
21
SUMÁRIO
1 INTRODUÇÃO 23
2 PROTOCOLOS UTILIZADOS EM APLICAÇÕES RESIDENCIAIS 24
2.1 ZIGBEE 24
2.1.1 Camada Física .................................................................................. 25
2.1.2 Camada MAC ................................................................................... 26
2.1.3 Aplicações ........................................................................................ 26
2.2 CEBUS 26
2.2.1 Comunicação via rede elétrica .......................................................... 27
2.2.2 Aplicações ........................................................................................ 28
2.3 CONTROLLER AREA NETWORK (CAN) 29
2.3.1 Histórico ............................................................................................ 29
2.3.2 Camada Física .................................................................................. 30
2.3.3 Camada de Enlace ........................................................................... 34
2.3.3.1 Mensagens ................................................................................. 34
Quadros de Dados ........................................................................... 34
Quadros Remotos ............................................................................ 36
Quadros de Erros e Sobrecarga ...................................................... 37
2.3.3.2 Arbitragem .................................................................................. 38
2.3.3.3 Confinamento de Falhas............................................................. 39
2.3.3.4 Filtragem..................................................................................... 40
2.3.3.5 CANOpen ................................................................................... 41
3 AUTOMAÇÃO RESIDENCIAL E REDES CAN 43
3.1 PROPOSTAS 43
3.2 ESTRUTURA DA REDE 44
3.2.1 Hardware .......................................................................................... 44
3.2.1.1 Comunicação via Placa PCI ....................................................... 44
3.2.1.2 Comunicação via Controlador USB ............................................ 47
3.2.1.3 Topologia da Placa ..................................................................... 48
3.2.2 Software............................................................................................ 50
3.2.2.1 Sistema de controle de residências ............................................ 50
3.2.3 Exemplos de Mensagens.................................................................. 52
3.2.3.1 Equipamentos de uma residência .............................................. 53
4 CONCLUSÕES 57
REFERÊNCIAS BIBLIOGRÁFICAS 58
ANEXOS 60
1. FUNÇÕES DELPHI 60
1.1 FindUSBCANTarget............................................................................. 60
1.2 getUSBCAN ......................................................................................... 61
1.3 sendUSBCAN ...................................................................................... 63
22
1 INTRODUÇÃO
23
2 PROTOCOLOS UTILIZADOS EM APLICAÇÕES RESIDENCIAIS
2.1 ZIGBEE
24
As redes ZigBee por definição devem possuir pelo menos um dispositivo
FFD como mostra a figura a seguir.
25
2.1.2 Camada MAC
2.1.3 Aplicações
2.2 CEBus
2.2.2 Aplicações
28
2.3 CONTROLLER AREA NETWORK (CAN)
2.3.1 Histórico
30
barramento é que carrega a informação, os fios deste barramento são
denominados CAN_H (High) e CAN_L (Low).
O conceito envolvido na transmissão de mensagens CAN é baseado na
técnica CSMA/CR (do inglês, Carrier Sense Multiple Access/ Colission
Resolution) onde, em caso de colisão a mensagem que apresentar o primeiro
bit dominante, ou seja, o bit que causar uma diferença de tensão entre CAN_H
e CAN_L, levará vantagem e continuará a ser enviado sem destruição ou
interferência. Este processo será visto mais profundamente no tópico sobre
mensagens CAN.
31
Figura 6 - Nível de barramento, segundo ISO 11898
32
A conexão dos nós ao barramento CAN geralmente é realizada através
de conectores DB 9, a configuração dos pinos do conector está apresentada na
tabela abaixo:
Pinos Nome do Sinal Descrição
1 Reservado A ser definido
2 CAN_L Dominante nível baixo
3 CAN_GND Terra
4 Reservado A ser definido
5 CAN_SHLD Blindagem (Opcional)
6 GND Terra
7 CAN_H Dominante nível alto
8 Reservado A ser definido
9 CAN_V+ Fonte
Tabela 2 - Pinagem dos conectores DB9 seguindo padrão CAN
33
2.3.3 Camada de Enlace
2.3.3.1 Mensagens
Quadros de Dados
34
O campo de início de quadro (Start of Frame – SOF) é composto por
apenas um bit dominante, este bit é responsável por informar o barramento que
uma mensagem irá começar a ser transmitida.
O campo de arbitragem (Arbitration Field) na versão 2.0 A possui um
campo de 11 bits chamado de Identificador da mensagem, e um campo de
requisição de retransmissão de dados (RTR – Remote Transmission Request).
O campo Identificador de Mensagens é responsável por informar ao
barramento a prioridade da mensagem. E o campo RTR é composto por
apenas um bit, se este bit for dominante, é responsável por informar aos
componentes que um quadro remoto deve ser enviado após o recebimento
desta mensagem.
35
Figura 11 - Campos de arbitragem e controle de mensagem no formato CAN 2.0 B
Quadros Remotos
36
Figura 12 - Estrutura do pacote remoto
37
2.3.3.2 Arbitragem
39
Figura 15 - Estados de erro de nós CAN
2.3.3.4 Filtragem
Por ser uma rede que não utiliza endereçamento no envio e recebimento
de mensagens, a identificação de nós é feita através de um processo simples
de filtragem de mensagens.
Todas as mensagens são transmitidas em broadcast, ou seja, a
mensagem transmitida é recebida por todos os nós da rede. Ao receber uma
mensagem o equipamento faz a filtragem analisando o campo de identificação
e verifica se deve ou não completar o pedido enviado.
O exemplo a seguir mostra como a mensagem enviada pelo nó A é
filtrada por todos os outros nós presentes na rede. Somente o nó D possui o
filtro capaz de receber as mensagens de A.
40
Figura 16 - Esquema de Filtragem
2.3.3.5 CANOpen
41
Figura 17 - Exemplo de dicionário de parâmetros
42
3 AUTOMAÇÃO RESIDENCIAL E REDES CAN
3.1 Propostas
43
escravos seriam sensores e atuadores que possuem microcontroladores
capazes de interpretar mensagens CAN.
Para a aplicação de controle do sistema pode se usar qualquer
linguagem de programação que tenha acesso às portas seriais do computador,
como por exemplo, C#, Java ou Delphi. Este sistema teórico também pode ser
estendido para uma aplicação de WebService, onde a casa estaria conectada
remotamente na internet.
3.2.1 Hardware
44
Modelo Fabricante Preço
46
Figura 22 – Placa PC276
47
3.2.1.3 Topologia da Placa
Figura 23 - PIC18F2455
48
milhões de instruções por segundo e possui duas saídas Tx e Rx para
comunicação CAN.
Este processador possui ainda dois acumuladores com 40 bits cada,
cinco tipos de interrupção externa e sete níveis de prioridade totalmente
programáveis.
Figura 24 - DSPIC33FJ256GP710
49
CAN, em caso afirmativo o pacote é enviado para o DSP que se encarrega de
processar e enviar a mensagem ao barramento.
O caminho inverso ocorre da mesma forma, ao receber um pacote do
barramento CAN o processador filtra as mensagens CAN, se alguma
mensagem for destinada ao computador, o DSP envia o pacote para o PIC que
encapsula a mensagem no pacote USB e envia ao computador.
3.2.2 Software
51
Figura 26 - Fluxograma da função getUSBCAN
52
3.2.3.1 Equipamentos de uma residência
53
Cômodo Equipamento Nível de Prioridade
Televisão Médio
Aparelho de Som Médio
Sala Computador Pessoal Médio
Tomadas Baixo
Lâmpada Alto
Geladeira Médio
Fogão Elétrico Médio
Cozinha Forno Microondas Médio
Tomadas Baixo
Lâmpada Alto
Televisão Médio
Quarto Tomadas Baixo
Lâmpada Alto
Tomadas Baixo
Banheiro
Lâmpada Alto
Controle de Portas Alto
Sistema de Alarme Alto
Tabela 5 - Níveis de prioridade dos equipamentos
54
Seguindo a lógica de arbitragem foram escolhidos os identificadores de
cada equipamento como mostra a tabela a seguir:
Identificador (bits)
Equipamento b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 Nível
Alarme 0 0 0 0 0 0 0 0 0 1 0 0 Alto
Controle de Portas12 0 0 0 0 0 0 0 0 0 1 1 1
Lâmpada Sala 0 0 0 0 0 0 0 1 0 0 0 0
Lâmpada Cozinha 0 0 0 0 0 0 0 1 1 0 0 0
Lâmpada Quarto 0 0 0 0 0 0 0 1 1 1 0 0
Lâmpada Banheiro 0 0 0 0 0 0 0 1 1 1 1 0
Computador Pessoal 0 0 0 0 0 1 0 0 0 0 0 0
Televisão da Sala 0 0 0 0 0 1 1 0 0 0 0 0
Aparelho de Som 0 0 0 0 0 1 1 1 0 0 0 0
Geladeira 0 0 0 0 0 1 1 1 1 0 0 0 Médio
Fogão elétrico 0 0 0 0 0 1 1 1 1 1 0 0
Microondas 0 0 0 0 0 1 1 1 1 1 1 0
Televisão do Quarto 0 0 0 0 0 1 1 1 1 1 1 1
Tomada 1 da Sala (TS1) 1 0 0 0 0 0 0 0 0 0 0 0
TS2 1 0 1 0 0 0 0 0 0 0 0 0
TS3 1 0 1 1 0 0 0 0 0 0 0 0
TS4 1 0 1 1 1 0 0 0 0 0 0 0
TS5 1 0 1 1 1 1 0 0 0 0 0 0
Tomada 1 da Cozinha
(TC1) 1 0 1 1 1 1 1 0 0 0 0 0
TC2 1 0 1 1 1 1 1 1 0 0 0 0
TC3 1 1 0 0 0 0 0 0 0 0 0 0
TC4 1 1 1 0 0 0 0 0 0 0 0 0 Baixo
TC5 1 1 1 1 0 0 0 0 0 0 0 0
Tomada 1 do Quarto (TQ1) 1 1 1 1 1 0 0 0 0 0 0 0
TQ2 1 1 1 1 1 1 0 0 0 0 0 0
TQ3 1 1 1 1 1 1 1 0 0 0 0 0
TQ4 1 1 1 1 1 1 1 1 0 0 0 0
TQ5 1 1 1 1 1 1 1 1 1 0 0 0
Tomada 1 do Banheiro
(TB1) 1 1 1 1 1 1 1 1 1 1 0 0
TB2 1 1 1 1 1 1 1 1 1 1 1 0
Tabela 6 - Exemplo de identificadores de mensagem
12
Para o controle de portas cada porta possui um identificador passado juntamente com os dados do pacote.
55
Este exemplo serve para mostrar o método de priorização de
mensagens, e detecção de erros a partir de seu identificador. Seguindo o
princípio de dominância de bits, as mensagens com baixo nível de prioridade
possuem um bit recessivo logo no começo do seu identificador, e conforme
aumenta o nível de prioridade o código binário do identificador diminui. Cada
equipamento ira filtrar somente as mensagens contendo seu próprio
identificador, mostrando que a comunicação utilizando o protocolo CAN é uma
comunicação totalmente segura, pois cada equipamento só opera se seu
identificador foi reconhecido.
O protocolo CAN permite muitas outras configurações, o exemplo
acima poderia ser refeito de modo que cada nível de prioridade possuísse um
identificador fixo e cada equipamento possuiria um identificador passado como
um dado no pacote.
A escolha do padrão de mensagens é feita de modo singular levando em
conta as prioridades desejadas, a freqüência de uso de cada equipamento e a
função deste na rede.
56
4 CONCLUSÕES
57
REFERÊNCIAS BIBLIOGRÁFICAS
58
Kvaser, Placa PCIcanx HS/HS. Disponível em:
<https://secure.assurebuy.com/98057/98057.htm> Acesso em 25/09/2009
59
ANEXOS
1. Funções Delphi
1.1 FindUSBCANTarget
procedure TfrmPrincipal.findUSBCANTarget;
var i,j: Integer;
serverResponse, porta: LongWord;
begin
if not Port.Connected then
begin
Port.Timeouts.ReadInterval := 50;
porta:= $FEAD1234;
60
txdata[17] := $0D; // STOP <CR>
Port.Open;
for i:=0 to 17 do
Port.Write(txdata[i],1);
sleep(60);
for i:=0 to 17 do
Port.Read(rxdata[i],1);
Port.ClearBuffer(True,True);
end;
end;
1.2 getUSBCAN
61
try
for i:=0 to 17 do
rxdata[i] := $0
Port.Timeouts.ReadInterval := 250;
txdata[0] := $40; // START
txdata[1] := Make8(mensagem,3); // MID01
txdata[2] := Make8(mensagem,2); // MID02
txdata[3] := Make8(mensagem,1); // MID03
txdata[4] := Make8(mensagem,0); // MID04
txdata[5] := EXT; // EXTENDED IDENTIFIER
txdata[6] := RTR; // RETURN REQUEST
txdata[7] := NB; // NUMBER OF DATA BYTES
txdata[8] := DB0; // I2C DB00
txdata[9] := DB1; // I2C DB01
txdata[10] := DB2; // I2C DB02
txdata[11] := DB3; // I2C DB03
txdata[12] := DB4; // I2C DB04
txdata[13] := DB5; // I2C DB05
txdata[14] := DB6; // I2C DB06
txdata[15] := DB7; // I2C DB07
txdata[16] := CheckSum(); // CHECKSUM
txdata[17] := $0D; // STOP <CR>
if Port.Connected then
begin
for i:=0 to 17 do
Port.Write(txdata[i],1);
sleep(60);
for i:=0 to 17 do
Port.Read(rxdata[i],1);
if (rxdata[1] = $0) and (rxdata[2] = $0) and (rxdata[3] = $0) and (rxdata[4] =
62
$0) then
begin
Result := False;
Port.ClearBuffer(True,True);
Exit;
end;
if ((rxdata[1] = 0) and (rxdata[2] = 0) and (rxdata[3] = 0))then
Result:= False;
Result:= True;
end
else
begin
TimerRun.Enabled := False;
btRun.Caption := 'Run';
ShowMessage('Dispositivo Não Conectado!');
Result:= False;
end;
Port.ClearBuffer(True,True);
except
on E : Exception do
begin
Result:= False;
Port.ClearBuffer(True,True);
Log.AdicionarErroCritico(E, 'Erro ao ler dados USB.');
end;
end;
end;
1.3 sendUSBCAN
63
var i:Integer;
begin
Sleep(25);
txdata[0] := $40; // START
txdata[1] := Make8(mensagem,3); // MID01
txdata[2] := Make8(mensagem,2); // MID02
txdata[3] := Make8(mensagem,1); // MID03
txdata[4] := Make8(mensagem,0); // MID04
txdata[5] := EXT; // EXTENDED IDENTIFIER
txdata[6] := RTR; // RETURN REQUEST
txdata[7] := NB; // NUMBER OF DATA BYTES
txdata[8] := DB0; // I2C DB00
txdata[9] := DB1; // I2C DB01
txdata[10] := DB2; // I2C DB02
txdata[11] := DB3; // I2C DB03
txdata[12] := DB4; // I2C DB04
txdata[13] := DB5; // I2C DB05
txdata[14] := DB6; // I2C DB06
txdata[15] := DB7; // I2C DB07
txdata[16] := CheckSum(); // CHECKSUM
txdata[17] := $0D; // STOP <CR>
if Port.Connected then
begin
for i:=0 to 17 do
Port.Write(txdata[i],1);
end
else
ShowMessage('Dispositivo Não Conectado!');
Port.ClearBuffer(True,True);
end;
64
65