Você está na página 1de 54

UNIVERSIDADE FEDERAL DO PARAN

CURSO DE ENGENHARIA ELTRICA

EDUARDO HENRIQUE CORRA FERREIRA

AUTOMAO RESIDENCIAL UTILIZANDO PROTOCOLO CAN

CURITIBA, 2009
12
EDUARDO HENRIQUE CORRA FERREIRA

AUTOMAO RESIDENCIAL UTILIZANDO PROTOCOLO CAN

Trabalho de Concluso de Curso


elaborado por Eduardo Henrique Corra
Ferreira, sob a orientao do Professor
Eduardo Parente Ribeiro, para obteno
de grau no Curso de Engenharia Eltrica
da Universidade Federal do Paran,
UFPR.

CURITIBA, 2009
13
EDUARDO HENRIQUE CORRA FERREIRA

AUTOMAO RESIDENCIAL UTILIZANDO PROTOCOLO CAN

Trabalho de Concluso de Curso


aprovado pela Banca Examinadora para
obteno do Grau de Eduardo Henrique
Corra Ferreira, no Curso de Engenharia
Eltrica da Universidade Federal do
Paran, com Linha de Pesquisa em
Automao Residencial.

Curitiba, 15 de Novembro de 2009.

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 no s na
elaborao deste trabalho como em tudo
na minha vida.

15
AGRADECIMENTOS

Em primeiro lugar agradeo a Deus por ter me dado esta oportunidade;

Agradeo tambm Universidade Federal do Paran;

Ao orientador, professor Dr. Eduardo Parente Ribeiro, por ter ajudado na


criao deste trabalho;

Aos demais professores e colaboradores do curso de Engenharia Eltrica da


Universidade Federal do Paran;

A todos que de uma maneira ou outra contriburam para a realizao deste


trabalho.

16
RESUMO

Este trabalho tem por objetivo a aplicao do protocolo CAN em


aplicaes de automao residenciais. Primeiramente analisada a estrutura
do protocolo de comunicao CAN. Em seguida feito um pequeno resumo
sobre outros protocolos utilizados em automao residencial. E por fim
mostrado como um sistema automatizado pode ser criado utilizando um
computador pessoal como integrador da rede de dados CAN, os componentes
usados para este sistema e um exemplo de software desenvolvido para esta
finalidade.

Palavras-chave: CAN, Automao Residencial, protocolo.

17
ABSTRACT

This paper analyzes the application of CAN protocol for Home


Automation. First, the structure of the CAN communication protocol is reviewed.
Next comes a short summary on other protocols used in residential automation.
And finally is showed how can an automation system be created using a
personal computer as an integrator for the CAN network, the components used
to make this system and an example of a software built to control this data flow.

18
LISTA DE ILUSTRAES

FIGURA 1 - TOPOLOGIAS PERMITIDAS PELO PADRO ZIGBEE .................................. 25


FIGURA 2 - EXEMPLO DE TOPOLOGIA DE REDE CEBUS ........................................... 27
FIGURA 3 - EXEMPLO DE APLICAO CEBUS ......................................................... 28
FIGURA 4 - CAMADAS ISO E CAN ........................................................................ 30
FIGURA 5 - TOPOLOGIA DE BARRAMENTO CAN ...................................................... 31
FIGURA 6 - NVEL DE BARRAMENTO, SEGUNDO ISO 11898..................................... 32
FIGURA 7 - GRFICO DE TAXA DE TRANSMISSO DE BITS PELA DISTNCIA DOS NS .. 32
FIGURA 8 - MODELOS DE CONECTORES DB 9 ........................................................ 33
FIGURA 9 - ESTRUTURA DE UM QUADRO DE DADOS ................................................ 34
FIGURA 10 - CAMPOS DE ARBITRAGEM E CONTROLE DE MENSAGEM NO FORMATO CAN
2.0 A........................................................................................................... 35
FIGURA 11 - CAMPOS DE ARBITRAGEM E CONTROLE DE MENSAGEM NO FORMATO CAN
2.0 B........................................................................................................... 36
FIGURA 12 - ESTRUTURA DO PACOTE REMOTO ...................................................... 37
FIGURA 13 - ESTRUTURA DO PACOTE DE ERROS/SOBRECARGA ............................... 37
FIGURA 14 - EXEMPLO DE ARBITRAGEM ................................................................ 38
FIGURA 15 - ESTADOS DE ERRO DE NS CAN ....................................................... 40
FIGURA 16 - ESQUEMA DE FILTRAGEM .................................................................. 41
FIGURA 17 - EXEMPLO DE DICIONRIO DE PARMETROS ......................................... 42
FIGURA 18 - TRS PARTES DO PROTOCOLO CANOPEN .......................................... 42
FIGURA 19 - HEARTBEAT DO PROTOCOLO CANOPEN ............................................ 42
FIGURA 20 - REPRESENTAO DE UM SISTEMA DE AUTOMAO RESIDENCIAL .......... 43
FIGURA 21 PLACA PISO-CAN200E-D .............................................................. 46
FIGURA 22 PLACA PC276 ................................................................................ 47
FIGURA 23 - PIC18F2455 .................................................................................. 48
FIGURA 24 - DSPIC33FJ256GP710 ................................................................... 49
FIGURA 25 - FLUXOGRAMA DA FUNO SENDUSBCAN ......................................... 51
FIGURA 26 - FLUXOGRAMA DA FUNO GETUSBCAN ........................................... 52

19
LISTA DE TABELAS

TABELA 1 - QUADRO COMPARATIVO DE TECNOLOGIAS SEM-FIO ............................... 26


TABELA 2 - PINAGEM DOS CONECTORES DB9 SEGUINDO PADRO CAN................... 33
TABELA 3 - TABELA DE PLACAS DE COMUNICAO CAN ......................................... 45
TABELA 4 - COMPARATIVO DE FRAMES POR SEGUNDO ........................................... 46
TABELA 5 - NVEIS DE PRIORIDADE DOS EQUIPAMENTOS ......................................... 54
TABELA 6 - EXEMPLO DE IDENTIFICADORES DE MENSAGEM ..................................... 55

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
SUMRIO

1 INTRODUO 23
2 PROTOCOLOS UTILIZADOS EM APLICAES RESIDENCIAIS 24
2.1 ZIGBEE 24
2.1.1 Camada Fsica .................................................................................. 25
2.1.2 Camada MAC ................................................................................... 26
2.1.3 Aplicaes ........................................................................................ 26
2.2 CEBUS 26
2.2.1 Comunicao via rede eltrica .......................................................... 27
2.2.2 Aplicaes ........................................................................................ 28
2.3 CONTROLLER AREA NETWORK (CAN) 29
2.3.1 Histrico ............................................................................................ 29
2.3.2 Camada Fsica .................................................................................. 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 AUTOMAO RESIDENCIAL E REDES CAN 43
3.1 PROPOSTAS 43
3.2 ESTRUTURA DA REDE 44
3.2.1 Hardware .......................................................................................... 44
3.2.1.1 Comunicao via Placa PCI ....................................................... 44
3.2.1.2 Comunicao 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 residncias ............................................ 50
3.2.3 Exemplos de Mensagens.................................................................. 52
3.2.3.1 Equipamentos de uma residncia .............................................. 53
4 CONCLUSES 57
REFERNCIAS BIBLIOGRFICAS 58
ANEXOS 60
1. FUNES DELPHI 60
1.1 FindUSBCANTarget............................................................................. 60
1.2 getUSBCAN ......................................................................................... 61
1.3 sendUSBCAN ...................................................................................... 63

22
1 INTRODUO

A automao, ou domtica, o termo utilizado para descrever o conjunto


de tecnologias voltado para a otimizao de lares, escritrios e indstrias
visando um aumento no conforto, melhorias na comunicao e segurana e
uma diminuio no consumo de energia.
As residncias esto se tornando ambientes cada vez mais
automatizados, conseqentemente, a necessidade de sistemas mais seguros
e confiveis aumentou. Com essa necessidade desenvolveram-se sistemas
descentralizados de controle, ou seja, diversos dispositivos presentes na
residncia desempenham funes de verificao e checagem, como por
exemplo, sensores, atuadores e controles remotos.
Com o crescimento destes sistemas e suas diferenas fez-se necessrio
a padronizao de protocolos de comunicao. Na dcada de 80, dcada de
incio da popularizao dos sistemas automatizados, surgiram diversos
protocolos e com eles diversos grupos de pesquisa e desenvolvimento.
Destes protocolos criados, o protocolo CAN foi desenvolvido para a
comunicao de dados entre equipamentos eletrnicos. Este padro surgiu da
indstria automobilstica, mas logo se popularizou e atualmente um dos
protocolos mais utilizados em indstrias e escritrios onde uma rede de
comunicao simples e de baixo custo necessria para interligar diversos
dispositivos.
Este trabalho tem por objetivo principal utilizar o protocolo CAN para
interligar componentes de controle, visando automatizar uma residncia e
atravs de um software desenvolvido para computadores pessoais ter acesso a
todos os dispositivos presentes na rede.

23
2 PROTOCOLOS UTILIZADOS EM APLICAES RESIDENCIAIS

Para este projeto foram pesquisados alguns protocolos utilizados em


automao residencial a fim de comparar suas caractersticas principais.
Dentre os protocolos mais utilizados atualmente se destacam o protocolo
ZigBee (comunicao sem fios), o protocolo CEBus (utilizando a rede eltrica),
e tambm o protocolo CAN, muito utilizado em automao automobilstica, mas
com timas aplicaes residenciais.
A seguir apresentado um breve resumo sobre cada protocolo bem
como suas principais caractersticas.

2.1 ZIGBEE

ZigBee uma tecnologia wireless utilizada para comunicao de baixo


custo e baixo consumo de potncia. Baseada no padro IEEE 802.15.4, o
protocolo ZigBee voltado para a transmisso de dados em radio freqncia
com baixa taxa de transmisso de bits. As freqncias de operao so as no
licenciadas nas faixas de 868.0 a 868.6 MHz, 902 a 928 MHz e 2.400 a 2.484
GHz.
O protocolo ZigBee s definido para suas camadas mais baixas (Camada
de Rede, de Enlace e Fsica), as camadas mais altas so desenvolvidas
dependendo da aplicao.
A topologia da rede baseada em ns, e podem ser configuradas tanto
como peer-to-peer, como em estrela. Por definio, existem dois tipos de ns:
os FFD (Full-Function Devices), ou dispositivos de funcionamento completo, e
os RFD (Reduced-Function Devices), ou dispositivos de funcionamento
reduzido.
Os FFD so responsveis por controlar o envio de mensagens para qualquer
dispositivo presente na rede. Eles podem ser configurados como os
coordenadores da rede PAN (Persona-Area Network).
J os RFD so ns extremamente simples que podem apenas se comunicar
com os ns FFD, por isso seu consumo de energia extremamente pequeno.

24
As redes ZigBee por definio devem possuir pelo menos um dispositivo
FFD como mostra a figura a seguir.

Figura 1 - Topologias permitidas pelo padro ZigBee

2.1.1 Camada Fsica

Por adotar o padro IEEE 802.15.4, o protocolo ZigBee incorporou a


estrutura de camada fsica deste padro, sendo que por definio, a camada
fsica (PHY - Physical Layer) responsvel por gerenciar as funes de
seleo de canal e de energia de sinal.

Como citado anteriormente, o enlace utilizando protocolo ZigBee pode


operar numa destas trs faixas de freqncias:

868.0-868.6 MHz, com taxa de transmisso de at 20kbps em apenas


um canal;

902-928 MHz, com taxa de transmisso de at 40 kbps em 10 canais;

2400-2483.5 MHz, com taxa de transmisso de at 250 kbps em 16


canais.

A transmisso do sinal utiliza tcnicas de espalhamento espectral para


melhorar a eficincia do sinal e diminuir as interferncias.

25
2.1.2 Camada MAC

A camada MAC (Medium Access Control) responsvel pelo controle e


transmisso dos pacotes. Esta camada utilizada tambm para validao dos
pacotes e configurao e associao dos ns presentes na rede.

Nesta camada o pacote dividido em timeslots e enviado para a


camada fsica para sua transmisso.

2.1.3 Aplicaes

O protocolo ZigBee foi desenvolvido para atender a demanda por um


controle melhor e uma melhor segurana nas redes domsticas sem fios e
tambm foi criado para ser de baixo custo e possuir baixo consumo de energia.

ZigBee voltado para aplicaes de baixa complexidade e de curto


alcance (em mdia 100m), podendo substituir solues de maior custo como,
por exemplo, Bluetooth e WiFi.

ZigBee Wi-Fi Bluetooth


Padro
802.15.4 802.11b 802.15.1
Alcance (metros) 1 100* 1 - 100 1 10
Vida til da bateria (dias) 100 1,000 0.5 5.0 1-7
Tamanho da rede (ns) > 64,000 32 7
Taxa de transmisso (kbps) 20 250 11,000 720
Tabela 1 - Quadro comparativo de tecnologias sem-fio

2.2 CEBus

CEBus (Consumer Elctronics Bus) um protocolo de cdigo aberto,


totalmente baseado no modelo de camadas OSI, desenvolvido pela Associao
das Industrias de Eletrnicos dos Estados Unidos (EIA - Electronic Industries
Association) primeiramente para padronizar os sinais de infra-vermelho emitido
pelos controles remotos dos aparelhos eletrnicos tentando evitar
26
interferncias e incompatibilidades. Atualmente o padro CEBus se extende
dos circuitos RF at as comunicaes utilizando a rede eltrica.
Por ser de cdigo aberto o protocolo CEBus permite que a rede opere
ponto-a-ponto sem a necessidade de um n controlador. E outra grande
caracterstica do protocolo aberto a capacidade de comunicao em diversos
meios de transmisso, como ilustrado a seguir.

Figura 2 - Exemplo de topologia de rede CEBus

2.2.1 Comunicao via rede eltrica

A comunicao via rede eltrica utilizando o padro CEBus realizada


atravs de modulao por espalhamento espectral, modulando a partir da
freqncia de 100 MHZ incrementando linearmente at 400MHz em um
intervalo de 100 milissegundos. Por definio do protocolo, o bit 1 corresponde
a um pulso de 100 milissegundos e o bit 0 corresponde a um pulso de 200
milissegundos.

Devido ao fato de possuir pulsos assimtricos a taxa de transmisso de


bits varia dependendo da quantidade de bits transmitidos. Para evitar colises,
utilizado um mtodo de "escuta" de barramento, neste caso usa-se o padro
CSMA-CDR (Carrier Sense Multiple Access - Colision Detection and
Resolution), forcando ao dispositivo que quer transmitir verificar se o
barramento est livre antes de comear a comunicao.
27
O protocolo CEBus define que o endereo de destino e o endereo de
origem estejam em cada pacote enviado, assim como no protocolo TCP/IP. Os
endereos de cada componente so definidos pela empresa fabricante
seguindo as recomendaes do EIA e possuem 32 bits. Sendo assim o pacote
mnimo transmitido pela rede possui 64bits.

2.2.2 Aplicaes

Assim como o padro ZigBee, as aplicaes utilizando a tecnologia


CEBus so voltadas para a automao, seja ela residencial ou industrial.

Empresas como Microsoft, IBM, Compaq, AT&T, Panasonic e Sony vem


desenvolvendo equipamentos capazes de se comunicar utilizando o protocolo
CEBus. Em 2006, em uma feira de eletrnica em Las Vegas, EUA, foi
apresentado um aparelho de televiso com um roteador CEBus interno.
Atravs deste roteador possvel acender as luzes apenas utilizando o
controle remoto do televisor.

Figura 3 - Exemplo de aplicao CEBus

28
2.3 CONTROLLER AREA NETWORK (CAN)

Para a aplicao proposta neste projeto o protocolo utilizado foi o


protocolo CAN. Dentre os protocolos analisados este se mostrou o mais flexvel
em relao aplicao e com uma tima deteco de erros.

A seguir apresentado um histrico sobre este protocolo e em seguida


feita uma explicao terica da estrutura de rede deste padro.

2.3.1 Histrico

O formato de rede e o protocolo CAN foram desenvolvidos em 1983 por


Robert Bosch Gmb para melhorar a comunicao entre os diversos
componentes presentes em um veculo.
Com o aumento do nmero de dispositivos de controle e sensores nos
veculos a espessura dos chicotes (grupo de cabos de conexo) cresceu o que
tornava a manuteno e deteco de falhas muito complexas.
Por este motivo, em 1986, a empresa Bosch apresentou a soluo CAN
para a Sociedade de Engenheiros Automotivos (Society of Automotive
Engineers - SAE), e esta foi amplamente aceita e se tornando um dos padres
mais utilizados em automveis atualmente.
A regulamentao geral da rede CAN est presente na resoluo ISO
11898 da International Organization for Standardization e sua regulamentao
especfica para as diversas aplicaes em automveis foi padronizada pela
SAE.
A rede CAN possui diversas vantagens, o que acabou espalhando sua
utilizao para as reas industriais, como por exemplo, a indstria
aeroespacial, martima, militar e tambm em aplicaes rurais.
Dentre as principais caractersticas da rede CAN podem-se citar:

Faixa de Operao de at 1Mbps para curtas distncias;


Possui uma excelente deteco de erros;
29
Usa mensagens curtas de at 8 bytes por mensagem;
Configurao altamente flexvel;
Controle da rede por prioridades nas mensagens.

Atualmente existem dois padres de protocolo CAN. O CAN verso 2.0


A, com identificador de mensagens de 11bits e a verso 2.0B com identificador
de 29bits.
O modelo do protocolo CAN segue o padro de camadas OSI/ISO. Um
das vantagens da rede CAN que tanto a camada de enlace como a camada
fsica so implementadas diretamente no microchip de controle, deixando
apenas a camada de aplicao a ser desenvolvida.

Figura 4 - Camadas ISO e CAN

2.3.2 Camada Fsica

O barramento CAN formado por um par de fios tranados com


impedncia caracterstica de 150 ohms. O Sinal transmitido neste barramento
de forma diferencial, ou seja, a diferena de tenso entre os terminais do

30
barramento que carrega a informao, os fios deste barramento so
denominados CAN_H (High) e CAN_L (Low).
O conceito envolvido na transmisso de mensagens CAN baseado na
tcnica CSMA/CR (do ingls, Carrier Sense Multiple Access/ Colission
Resolution) onde, em caso de coliso a mensagem que apresentar o primeiro
bit dominante, ou seja, o bit que causar uma diferena de tenso entre CAN_H
e CAN_L, levar vantagem e continuar a ser enviado sem destruio ou
interferncia. Este processo ser visto mais profundamente no tpico sobre
mensagens CAN.

Figura 5 - Topologia de barramento CAN

Por conveno, o bit 1 considerado o bit recessivo e o bit 0 o bit


dominante. Para gerar um bit dominante necessrio que a tenso em CAN_H
seja cerca de 3,5V e a tenso em CAN_L seja de 1,5V (padro ISO 11898),
como mostra a figura a seguir:

31
Figura 6 - Nvel de barramento, segundo ISO 11898

A rede CAN apresenta a capacidade de monitoramento de bits para


verificao de utilizao do barramento e devido a este fato a capacidade de
transmisso de bits diminui com a distncia dos ns presentes na rede.

Figura 7 - Grfico de Taxa de Transmisso de bits pela distncia dos ns

32
A conexo dos ns ao barramento CAN geralmente realizada atravs
de conectores DB 9, a configurao dos pinos do conector est apresentada na
tabela abaixo:
Pinos Nome do Sinal Descrio
1 Reservado A ser definido
2 CAN_L Dominante nvel baixo
3 CAN_GND Terra
4 Reservado A ser definido
5 CAN_SHLD Blindagem (Opcional)
6 GND Terra
7 CAN_H Dominante nvel alto
8 Reservado A ser definido
9 CAN_V+ Fonte
Tabela 2 - Pinagem dos conectores DB9 seguindo padro CAN

Figura 8 - Modelos de conectores DB 9

33
2.3.3 Camada de Enlace

2.3.3.1 Mensagens

As mensagens transmitidas pela rede CAN, conforme apresentado


anteriormente, possuem duas verses bastante utilizadas pela indstria
atualmente. A verso 2.0 A onde o campo destinado para o identificador da
mensagem possui 11 bits, e a verso 2.0 B onde o campo de identificao de
mensagem possui 29 bits.
Uma mensagem CAN pode ser encapsulada em quatro tipos bsico de
datagramas, so eles:

Data Frames, ou quadros de dados;


Remote Frames, ou quadros remotos;
Erro Frames, ou, quadros de erros;
Overload frames, ou, quadros de sobrecargas.

Cada um destes quadros possui uma funo diferente na rede CAN. A


seguir apresentado um resumo de cada quadro e suas caractersticas:

Quadros de Dados

A seguir apresentada a estrutura de um quadro de dados:

Figura 9 - Estrutura de um quadro de dados

34
O campo de incio de quadro (Start of Frame SOF) composto por
apenas um bit dominante, este bit responsvel por informar o barramento que
uma mensagem ir comear a ser transmitida.
O campo de arbitragem (Arbitration Field) na verso 2.0 A possui um
campo de 11 bits chamado de Identificador da mensagem, e um campo de
requisio de retransmisso de dados (RTR Remote Transmission Request).
O campo Identificador de Mensagens responsvel por informar ao
barramento a prioridade da mensagem. E o campo RTR composto por
apenas um bit, se este bit for dominante, responsvel por informar aos
componentes que um quadro remoto deve ser enviado aps o recebimento
desta mensagem.

Figura 10 - Campos de arbitragem e controle de mensagem no formato CAN 2.0 A

Na verso 2.0 B, o campo de arbitragem um pouco maior, possuindo


29 bits no campo de identificao dividido em um campo de 11 bits, e um de 18
bits. Os campos que dividem o campo de identificao so um campo RTR
recessivo denominado de SRR (Subistitute Remote Request), e o campo IDE
(Identifier Extension), presente tambm no campo de controle, este bit, se
recessivo, informa se o prximo campo a extenso do identificador ou apenas
o campo de controle.

35
Figura 11 - Campos de arbitragem e controle de mensagem no formato CAN 2.0 B

O campo de controle composto por um (verso 2.0 A) ou dois (verso


2.0 B) bits reservados e um campo de 4 bits informando o comprimento da
mensagem (DLC Data Lenght Code).
Em seguida, apresentada a mensagem propriamente dita. O campo da
mensagem pode ser composto de 0 a 8 bytes.
Aps o campo da mensagem transmitido um campo de verificao de
redundncia cclica, ou checksum, de 2 bytes. Este campo usado para
verificar a integridade da mensagem. Se o CRC enviado no for idntico ao
calculado, a aplicao definir o que deve ser feito.
Em seguida, o campo de confirmao de recebimento (ACK)
dominante somente se a mensagem enviada foi recebida corretamente pelo
receptor.
E finalmente o campo de fim de transmisso (EOF End Of Frame)
enviado. Este campo de 7 bits informa o fim do pacote e caso tenha
apresentado algum erro seta bits para informar estes erros.
O campo de entre quadros (Interframe Space) compostos por 3 bits
recessivos e somente um espao definido entre dois pacote de mensagem. O
IFS s enviado aps pacotes de dados e pacotes remotos.

Quadros Remotos

A estrutura dos pacotes remotos semelhante a dos pacotes de dados e


apresentada a seguir:

36
Figura 12 - Estrutura do pacote remoto

Como mostra a figura acima, o pacote remoto composto pelos


mesmos campos do pacote de dados exceto que o pacote remoto no
apresenta mensagens.
O quadro remoto usado, por exemplo, para solicitar dados de um
componente da rede. Ou somente para informar o recebimento de uma
mensagem.

Quadros de Erros e Sobrecarga

O pacote de erros enviado por qualquer n da rede que detecte um


erro.

Figura 13 - Estrutura do pacote de erros/sobrecarga

Os seis primeiros bits do pacote so flags definidas pela aplicao. O


Delimitador do quadro composto por 8 bits recessivos.
O pacote de sobrecarga apresenta a mesma estrutura do pacote de erro
e utilizado quando se necessita um atraso maior na transmisso de pacotes.

37
2.3.3.2 Arbitragem

A arbitragem utiliza o processo de dominncia de bits para garantir que a


prioridade entre as mensagens venha a ser mantida. A dominncia previne que
a mensagem com maior prioridade seja sobreposta ou destruda por outra
mensagem de menor prioridade.
A rede CAN utiliza o principio de deteco de portadora para verificar se
a mensagem transmitida corresponde de fato mensagem que o transmissor
enviou. E este principio utilizado tambm para verificar se o canal est
liberado para o inicio de transmisso.
A seguir apresentado um exemplo de quatro ns e o canal CAN:

Figura 14 - Exemplo de arbitragem

Neste exemplo, os ns A, B e C comeam a transmitir a mensagem no


mesmo instante, o n D detecta o inicio de transmisso e entra no modo de
recepo.
O identificador das mensagens possui os mesmos ltimos dgitos (bits
6,7,8,9 e 10). At este ponto nenhum dos ns detectou a superposio do
canal.
38
Quando o bit 5 (recessivo) enviado o n B detecta um erro e entra no
modo de recepo. O que ser feito com a mensagem B definido pela
aplicao.
O n A s percebe a sobreposio ao enviar o bit 3, neste momento ele
entra em modo de escuta de canal e o n C envia o restante da mensagem
sem perceber que ouve a sobreposio.
Percebe-se ento que a prioridade sobre a rede no do n e sim da
mensagem, e mensagens com o primeiro bit dominante enviado ter
prioridade.

2.3.3.3 Confinamento de Falhas

O CAN apresenta o confinamento de falhas que consiste no isolamento


de ns defeituosos ou no total desligamento do barramento dependendo da
gravidade do erro detectado na rede.
Fisicamente consiste em dois contadores presentes nos ns e no
barramento, um contador responsvel por detectar erros de transmisso e
outro para detectar erros de recepo.
Por definio, cada contagem equivale a um ponto. Inicialmente os ns
se encontram no estado denominado de error active. Ao detectar um erro
enviado um flag de erro ativo e o contador aumenta a pontuao para este n.
Se a prxima mensagem enviada por este n no apresentar a flag de erro os
pontos dados anteriormente so descontados. Se um n apresentar contagem
maior do que 127 pontos consecutivos o n entra no estado error passive, no
qual continua enviando mensagens com um tempo entre mensagens um pouco
maior.
Se o n no modo error passive continuar a enviar flags de erro passivo,
e sua pontuao aumentar at 255 pontos ele desligado do barramento
entrando no modo bus off at ser resetado manualmente ou at que sejam
detectados 128 pacotes de 11bits recessivos e volte para o estado de error
passive.

39
Figura 15 - Estados de erro de ns CAN

2.3.3.4 Filtragem

Por ser uma rede que no utiliza endereamento no envio e recebimento


de mensagens, a identificao de ns feita atravs de um processo simples
de filtragem de mensagens.
Todas as mensagens so transmitidas em broadcast, ou seja, a
mensagem transmitida recebida por todos os ns da rede. Ao receber uma
mensagem o equipamento faz a filtragem analisando o campo de identificao
e verifica se deve ou no completar o pedido enviado.
O exemplo a seguir mostra como a mensagem enviada pelo n A
filtrada por todos os outros ns 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

CANOpen o nome dado ao padro de protocolo desenvolvido pelo


grupo de fabricantes denominado CAN in Automation (CIA).
Este protocolo foi desenvolvido para suprir a falta de padronizao do
protocolo CAN nas camadas maiores (baseando-se no modelo OSI). O
CANOpen foi inicialmente criado para aplicaes com mquinas motoras, mas
atualmente domina grande parte dos sistemas de automao, inclusive o ramo
residencial.
O protocolo CANOpen pode ser resumido em trs partes: A aplicao, o
dicionrio de objetos e o protocolo propriamente dito. A aplicao faz apenas a
traduo dos dados recebidos e enviados para que o usurio interaja. O
dicionrio de objetos contem diversos parmetros comuns a todos os
equipamentos. Esses parmetros contm informaes sobre o estado do
equipamento, estado da rede e ainda possui valores especficos para os
fabricantes.
E por fim o protocolo que o responsvel pela padronizao dos dados
enviados na rede, lembrando que os dados a serem enviados so
encapsulados no protocolo CANOpen e em seguida no protocolo CAN e so
transmitidos na rede.

41
Figura 17 - Exemplo de dicionrio de parmetros

Figura 18 - Trs partes do protocolo CANOpen

O controle de erros do protocolo CANOpen atravez de um mtodo


chamado Heartbeat (Batida do corao) que um pacote de mensagem
enviado ciclicamente para todos os equipamentos do barramento contendo o
identificador do equipamento e seu estado. O heartbeat tambm usado como
timer de sincronismo de rede.

Figura 19 - Heartbeat do protocolo CANOpen

42
3 AUTOMAO RESIDENCIAL E REDES CAN

3.1 Propostas

O projeto visa teoricamente criar um integrador para automatizar uma


residncia utilizando como meio de comunicao entre seus componentes o
protocolo CAN. Devido ao baixo custo dos microcontroladores CAN e as timas
caractersticas j citadas no capitulo anterior (prioridade de mensagens,
flexibilidade de configurao, vrios ns mestres), a rede CAN uma rede
extremamente confivel e de fcil aplicao.

Figura 20 - Representao de um sistema de automao residencial

O sistema de automao consiste em um ou mais ns mestres e ns


atuadores ou sensores. Neste caso, os ns mestres seriam computadores
pessoais conectados ao barramento CAN atravs de conectores RS-232C ou
atravs de conectores USB dependendo da configurao dos mesmos. Os ns

43
escravos seriam sensores e atuadores que possuem microcontroladores
capazes de interpretar mensagens CAN.
Para a aplicao de controle do sistema pode se usar qualquer
linguagem de programao que tenha acesso s portas seriais do computador,
como por exemplo, C#, Java ou Delphi. Este sistema terico tambm pode ser
estendido para uma aplicao de WebService, onde a casa estaria conectada
remotamente na internet.

3.2 Estrutura da rede

A estrutura do sistema composta de componentes de controle


(alarmes, sensor de temperatura, dimmers, ares-condicionados, etc.)
espalhados por diversos pontos da residncia e um sistema de controle central
composto por um computador rodando um software de gerenciamento e
controle.

3.2.1 Hardware

Como explicado anteriormente a estrutura fsica do sistema consiste em


um (ou mais) computador principal e diversos sensores espalhados pela
residncia conforme necessidade do nvel de automao.
A interligao do computador com o barramento principal feita atravs
de uma placa de comunicao CAN, ou atravs de um dispositivo que faa
esta conexo atravs de um controlador USB.

3.2.1.1 Comunicao via Placa PCI

Para elaborao deste trabalho foram pesquisadas algumas placas PCI


capazes de realizarem a comunicao CAN de forma simplificada. As placas
encontradas so dos seguintes fabricantes:

44
Modelo Fabricante Preo

Kvaser PCIcanx HS/HS Kvaser US$ 650,00

PISO-CAN200E-D ICP DAS No fornecido

PC276 PLS No fornecido


Tabela 3 - Tabela de placas de comunicao CAN

A placa Kvaser PCIcanx HS uma placa PCI que se adapta tanto ao


padro PCI-X como ao PCI comum. Possui duas sadas D-sub 9 (RS232)
capazes de trabalhar independentes graas aos dois microcontroladores
SJA1000 da empresa Philips.
Esta placa compatvel com os protocolos CAN 2.0 A e 2.0 B. Possui
um oscilador de 16MHz para a comunicao com o barramento. E compatvel
com os sistemas operacionais: Windows Vista, Windows 2000/XP/Server 2003,
Windows 95/98/ME, Windows NT4.0 e Linux.
A placa PISO-CAN200E-D tambm possui dois canais CAN compatveis
com os padres 2.0 A e 2.0 B. Suporta taxas de transmisso de 10 Kbps a
1Mbps. Seu controlador CAN o controlador NXP SJA1000 CAN Controller
with 16MHz da Philips, assim como o da placa da empresa Kvaser. Seus
drivers so suportados pelos sistemas operacionais: Windows 2000/XP/Server
2003, Windows 95/98/ME, Windows NT4.0.
A seguir mostrada uma tabela de desempenho desta placa rodando
em um computador com sistema operacional Windows XP Service Pack 3, com
processador Intel Core 2 Duo de 2GHz e com 512 MB de memria:

CAN 2.0 A CAN 2.0 B


Baud Rate(bps)
Frame per sec. Frame per sec.
1000 k 7498 6187
800 k 5625 5154
500 k 4091 3465
250 k 2135 1809
45
125 k 1096 925
50 k 439 370
20 k 175 148
10 k 88 74
Tabela 4 - Comparativo de Frames por segundo

Figura 21 Placa PISO-CAN200E-D

A terceira placa, PC276, uma placa com maior complexidade do que


as demais, pois permite ser reconfigurada atravs de uma memria Flash-
EPRON de 1MB. Seu processador um ST10F276 da empresa
STMicroelectronics. Assim como as placas citadas acima, est tambm possui
duas sadas para barramentos CAN (2.0 A e 2.0 B) com taxa de transferncia
de at 1Mbps.
Esta placa possui a capacidade de expandir sua memria em at 2MB
atravs de mdulos de memria vendidos separadamente.
Seus Drivers so compatveis com os sistemas operacionais Windows
Vista, Windows XP and Windows 2000.

46
Figura 22 Placa PC276

3.2.1.2 Comunicao via Controlador USB

Outra maneira de interligar o computador principal ao barramento CAN


seria atravs de um dispositivo controlador USB. Este dispositivo consiste em
uma entrada USB, um ou mais microcontroladores e uma sada CAN, a
vantagem sobre os demais circuitos apresentados e seu baixo custo e sua fcil
implementao.
Existem vrios equipamentos com esta funo, mas este projeto ir
tratar apenas de um componente desenvolvido pela empresa InTRACK -
Industria e Comercio de Equipamentos Eletrnicos, uma empresa totalmente
brasileira que produz equipamentos de rastreamento e controle de veculos.
A placa desenvolvida por esta empresa tem o intuito de se comunicar
com veculos que possuem barramento CAN, como por exemplo, veculos das
montadoras Volvo, Scania, Mercedez Bens e Opel/Chevrolet. Mas por ser
apenas um componente que encapsula os pacotes CAN em pacotes USB e os
envia para o computador nada impede que esta placa seja usada em
automao residencial.

47
3.2.1.3 Topologia da Placa

A placa possui um microcontrolador PIC18F2455 responsvel por


montar os pacotes USB e um DSP DSPIC33FJ256GP710 que analisa e
gerencia os dados enviados do barramento e do microcontrolador.
O controlador PIC18F2455 um voltado para conexo e comunicao
USB, possui 24KB de memria Flash e 2KB de memria RAM. responsvel
por 12 milhes de instrues por segundo a 48MHz.
Este microcontrolador tem a capacidade de realizar operaes do
padro RS-232, o mesmo usado em controladores CAN, o que o torna uma
tima escolha para o projeto.

Figura 23 - PIC18F2455

O segundo controlador, DSPIC33FJ256GP71, um processador digital


de sinais baseado na arquitetura Harvard de 16 bits, com 256 KB de memria
de programa e 32 KB de memria RAM. Este DSP capaz de realizar 40

48
milhes de instrues por segundo e possui duas sadas Tx e Rx para
comunicao CAN.
Este processador possui ainda dois acumuladores com 40 bits cada,
cinco tipos de interrupo externa e sete nveis de prioridade totalmente
programveis.

Figura 24 - DSPIC33FJ256GP710

Resumidamente estes dois microcontroladores operam


simultaneamente, ao receber um pacote, o controlador PIC18F2455 verificar o
identificador da mensagem para confirmar se a mensagem est no formato

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

Conforme visto anteriormente, o protocolo CAN no possui qualquer


especificao para as camadas de aplicao, o que o torna um padro
extremamente flexvel em relao linguagem de programao.
Para este projeto foi escolhida a linguagem Object Pascal atravs do
ambiente de desenvolvimento Borland Delphi verso sete. A escolha desta
linguagem levou em conta sua grande biblioteca voltada a objetos e o grande
nmero de componentes desenvolvidos para este ambiente de programao.

3.2.2.1 Sistema de controle de residncias

A principal funo do sistema informar ao usurio o estado de toda a


residncia bem como permitir que o mesmo possa interagir com os diversos
componentes presentes na rede, como por exemplo, acender luzes ou verificar
os sensores de presena.
Para o projeto foram usados vrios componentes comuns de
desenvolvimento Delphi e um componente especifico, chamado COMport
(gratuito at a verso 1.3), para realizar a comunicao com a porta serial
virtual criada pelo microcontrolador.
Com este componente possvel ler e escrever na porta serial utilizando
simplesmente as respectivas funes read() e write() do componente,
passando como parmetros o pacote a ser escrito e seu tamanho.
Devido a essa facilidade na comunicao a interpretao das
mensagens se torna dinmica fazendo com que o programa consiga interpretar
de trs a quatro mensagens por segundo, que para automao residencial
um timo valor, levando em considerao que para acionar um alarme ou
50
iniciar a gravao de uma cmera demora-se em mdia 200 a 500
milissegundos.
O sistema desenvolvido possui trs funes principais: a funo
findUSBCANTarget, a funo getUSBCAN e a funo sendUSBCAN. O cdigo
destas funes se encontra anexo a este trabalho.
A funo findUSBCANTarget tem por objetivo localizar um componente
CAN atravs de mensagens definidas. Por exemplo, o sistema enviaria um
Remote Frame com o identificador da mensagem e em seu campo RTR um bit
dominante para informar que o componente que receber esta mensagem e
possuir o mesmo identificador dever enviar outro Remote Frame para o
barramento. Esta funo ento responsvel por enviar um remote frame e
escutar a porta at que outro quadro com a mesma identificao seja recebido,
se for recebido corretamente o componente est presente no barramento.
As funes getUSBCAN e sendUSBCAN so responsveis por ler e
escrever respectivamente pacotes CAN no barramento. Estas funes so
usadas para a interao com toda a rede. Atravs de procedimentos definidos
basta utilizarmos as funes descritas acima para interpretar os dados
recebidos e mostrar na tela o estado dos componentes.
A seguir so apresentados os fluxogramas de funcionamento das
funes getUSBCAN e sendUSBCAN:

Figura 25 - Fluxograma da funo sendUSBCAN

51
Figura 26 - Fluxograma da funo getUSBCAN

Como em automao residencial os dados enviados por equipamentos


pode ser maior do que 8 bytes, necessrio que haja uma funo que verifique
o tamanho dos dados e os fracione em pacotes menores. Para isso
necessrio utilizar alguns bytes da rea de dados para indicar qual frao do
pacote est sendo encaminhado.
Esta funo seria muito til no caso de cmeras de vigilncia, ou ento
em um sistema distribudo de udio, onde os pacotes multimdia possuem
tamanhos de alguns quilobytes.

3.2.3 Exemplos de Mensagens

Como em uma residncia o nmero de ns presentes na rede


pequeno, optou-se por desenvolver uma aplicao simples e que se comunique
de forma direta utilizando o protocolo CAN 2.0A com 11 bits de identificao. A
seguir analisado um exemplo de rede residencial CAN, mostrando como a
identificao do n atua como forma de priorizao de mensagens.

52
3.2.3.1 Equipamentos de uma residncia

Uma residncia comum no Brasil possui pelo menos quatro cmodos,


sendo estes: uma sala, um quarto, uma cozinha e um banheiro. Para
exemplificar a utilizao dos identificadores a distribuio de eletrodomsticos
nesta residncia se dar da seguinte forma:

Na sala existem um aparelho de som, uma televiso, um computador


pessoal, cinco tomadas de 110V e uma lmpada.
Na cozinha esto presentes a geladeira, um fogo eltrico, um forno
micro-ondas, cinco tomadas e uma lmpada.
No quarto existem uma televiso, quatro tomadas e uma lmpada.
E no banheiro apenas duas tomadas.
A residncia tambm possui um sistema de alarme (juntamente com o
integrador CAN) e controle eletrnico de portas.

A partir do perfil de cada equipamento possvel dividir os


equipamentos em grupos de controle.
Neste caso optou-se por dividir os eletrodomsticos por cmodos e
funcionalidade.
Deste modo obteve-se a seguinte configurao:

53
Cmodo Equipamento Nvel de Prioridade
Televiso Mdio
Aparelho de Som Mdio
Sala Computador Pessoal Mdio
Tomadas Baixo
Lmpada Alto
Geladeira Mdio
Fogo Eltrico Mdio
Cozinha Forno Microondas Mdio
Tomadas Baixo
Lmpada Alto
Televiso Mdio
Quarto Tomadas Baixo
Lmpada Alto
Tomadas Baixo
Banheiro
Lmpada Alto
Controle de Portas Alto
Sistema de Alarme Alto
Tabela 5 - Nveis de prioridade dos equipamentos

54
Seguindo a lgica 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 Nvel
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
Lmpada Sala 0 0 0 0 0 0 0 1 0 0 0 0
Lmpada Cozinha 0 0 0 0 0 0 0 1 1 0 0 0
Lmpada Quarto 0 0 0 0 0 0 0 1 1 1 0 0
Lmpada 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
Televiso 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 Mdio
Fogo eltrico 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
Televiso 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 mtodo de priorizao de
mensagens, e deteco de erros a partir de seu identificador. Seguindo o
princpio de dominncia de bits, as mensagens com baixo nvel de prioridade
possuem um bit recessivo logo no comeo do seu identificador, e conforme
aumenta o nvel de prioridade o cdigo binrio do identificador diminui. Cada
equipamento ira filtrar somente as mensagens contendo seu prprio
identificador, mostrando que a comunicao utilizando o protocolo CAN uma
comunicao totalmente segura, pois cada equipamento s opera se seu
identificador foi reconhecido.
O protocolo CAN permite muitas outras configuraes, o exemplo
acima poderia ser refeito de modo que cada nvel de prioridade possusse um
identificador fixo e cada equipamento possuiria um identificador passado como
um dado no pacote.
A escolha do padro de mensagens feita de modo singular levando em
conta as prioridades desejadas, a freqncia de uso de cada equipamento e a
funo deste na rede.

56
4 CONCLUSES

Os sistemas de automao residencial necessitam ser seguros,


confiveis e principalmente possurem um baixo custo de instalao. Assim
sendo, cada projeto deve realizar a melhor combinao destas caractersticas,
para que haja maior conforto e economia para o usurio.
Para a realizao deste trabalho foi escolhido uso do protocolo CAN
para a comunicao de dados entre os diversos componentes do sistema. Esta
escolha levou em considerao a flexibilidade na camada de aplicao do
protocolo, a possibilidade da rede CAN ser controlada por diversos ns, e seu
excelente cdigo de deteco e correo de erros.
A rede CAN tambm se mostrou econmica no quesito cabeamento por
necessitar apenas de pares de fio tranados, que possuem baixo custo no
mercado.
A implementao do integrador tambm foi realizada visando s
caractersticas principais de um sistema de automao. Para isto, foi utilizado
um computador pessoal rodando uma aplicao desenvolvida em linguagem
Object Pascal.
A interface entre o computador e o barramento foi desenvolvida atravs
de uma placa desenvolvida pela empresa InTRACK, para utilizar portas de
comunicao USB do computador. Esta placa utiliza componentes de baixo
custo comparado com placas desenvolvidas para se comunicarem diretamente
com a rede CAN.
Atravs deste trabalho foi possvel perceber que aplicaes residenciais
de controle podem ser realizadas utilizando-se componentes de baixo custo e
protocolos flexveis. Isso aumenta a popularizao de casas inteligentes. Mas
para que esta popularizao se d de forma correta, necessrio investimento
na criao de componentes simples e seguros e na padronizao de estruturas
de rede de alto desempenho.

57
REFERNCIAS BIBLIOGRFICAS

VOSS, Winfred, 2002. Comprehensible Guide To Controller Area Network.


Copperhill Technologies Corporation.

PINHEIRO, Jos Maurcio Santos, 2006. ZigBee em Home Area Network.


Projeto de Redes. Disponvel em: http://www.projetoderedes.com.br. Acesso
em 25/02/2006.

INTILLE, S., Designing a Home of the Future. Massachusetts Institute of


Technology. Pervasive Computing.

MESSIAS, A. R. Porta Paralela. Disponvel em:


<http://www.rogercom.com/index.htm>. Acesso em 07/09/2009.

ZigBee Wireless Standard. Disponvel em: <http://www.digi.com/technology/rf-


articles/wireless-zigbee.jsp Acesso em 15/09/2009>.

ZigBee Tutorials. Disponvel em: <http://www.tutorial-


reports.com/wireless/zigbee/zigbee-architecture.php> Acesso em 15/09/2009.

CEBus. Disponvel em:


<http://www.hometoys.com/htinews/aug97/articles/kwacks/kwacks.htm> Acesso
em: 17/09/2009

ICP DAS, Placa PISO-CAN 200-E. Disponvel em:


<http://www.icpdas.com/products/Remote_IO/can_bus/piso-can200e.htm>
Acesso em: 20/09/2009

PLS, Placa PC276, Disponvel em: <http://www.pls-


mc.com/content/view/32/47/> Acesso em: 20/09/2009

58
Kvaser, Placa PCIcanx HS/HS. Disponvel em:
<https://secure.assurebuy.com/98057/98057.htm> Acesso em 25/09/2009

Microchip, Datasheet PIC18F2455. Disponvel em:


<http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId
=1480>. Acesso em: 28/09/2009

Microchip, Datasheet DSPIC33FJ256GP710. Disponvel em:


<http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en024679
> Acesso em: 28/09/2009

Leo, Marcelo, 2003. Curso Completo Borland Delphi 7. Axcel Books do


Brasil.

Aureside. Disponvel em: <http://www.aureside.org.br/> Acesso em: 07/09/2009

Saber Eletrnica, Rede CAN: a troca de dados em aparelhos eletrnicos.


Disponvel em: <http://www.sabereletronica.com.br/secoes/leitura/1301>
Acesso em: 04/10/2009

CAN in Automation. Disponvel em: <http://www.can-cia.org> Acesso em:


09/11/2009

59
ANEXOS

1. Funes 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;

txdata[0] := $40; // START


txdata[1] := Make8($FEAD1234,3); // MID01
txdata[2] := Make8($FEAD1234,2); // MID02
txdata[3] := Make8($FEAD1234,1); // MID03
txdata[4] := Make8($FEAD1234,0); // MID04
txdata[5] := $1; // EXTENDED IDENTIFIER
txdata[6] := $0; // RETURN REQUEST
txdata[7] := $0; // NUMBER OF DATA BYTES
txdata[8] := $0; // DB00
txdata[9] := $0; // DB01
txdata[10] := $0; // DB02
txdata[11] := $0; // DB03
txdata[12] := $0; // DB04
txdata[13] := $0; // DB05
txdata[14] := $0; // DB06
txdata[15] := $0; // DB07
txdata[16] := CheckSum; // CHECKSUM

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);

serverResponse := Make32(rxdata[8], rxdata[9], rxdata[10], rxdata[11]);

if (serverResponse = porta) then


begin
mmCAN.Lines.Add('Dispositivo CAN Encontrado e Conectado.');
mmCAN.Lines.Add('');
SendUSB($FEAD1000, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
btCal.Enabled := True;
btnDesconectar.Enabled := True;
btnConectar.Enabled := False;
Exit;
end;

Port.ClearBuffer(True,True);
end;
end;

1.2 getUSBCAN

function TfrmPrincipal.getUSBCAN(mensagem: LongWord; EXT, RTR, NB,


DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7: Byte):Boolean;
var i: Integer;
begin

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 No 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

procedure TfrmPrincipal.sendUSB(mensagem: LongWord; EXT,RTR, NB,


DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7: Byte);

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 No Conectado!');
Port.ClearBuffer(True,True);
end;

64
65

Você também pode gostar