Você está na página 1de 14

Luiz Roberto Guimares Barbosa

Rede CAN

Belo Horizonte
Escola de Engenharia da UFMG
2003

1. Interface CAN
1.1. Histrico
Por volta da dcada de 80, ocorreu um grande aumento no nmero de
componentes eletrnicos de controle e telemetria usados em veculos. Cresceu
tambm a quantidade e a espessura dos cabos de dados usados para conectar
todos esses componentes. Em certos casos, a rede de dados chegava a ter 10 km
de extenso, com cabos de cerca de 10cm de dimetro, conforme visto em [17].
Reconfiguraes na rede e manuteno nos nodos tomavam muito tempo e
mostravam-se fontes de erros.
Pensando nisso, o modelo de Controller Area Network (CAN) foi proposto
por Robert Bosch, em 1980, para interconexo de componentes de controle em
veculos [18]. A rede proposta apresenta significativas vantagens, e vem se
tornando a opo de facto para a montagem de uma rede de dados veicular.
A rede automotiva de dados CAN padronizada mundialmente pela
resoluo ISO 11898, gerada pela International Society of Organization. A
regulamentao especfica que determina os diferentes tipos de redes CAN e
aplicabilidade de cada uma em diferentes veculos regulamentada pela Society
of Automotive Enginneers (SAE). Utilizando como referncia a definio em
camadas das redes de dados ISO/OSI, toda a especificao da rede CAN diz
respeito apenas aos nveis fsico e de enlace (Figura 1).
Devido s suas excelentes caractersticas, a rede CAN vem sendo utilizada
tambm em aplicaes industriais, com alto ndice de sucesso. Isso se deve s
caractersticas extremamente robustas e confiveis da rede. Uma vez que foi
proposta para um ambiente com alto nvel de rudo induzido e grandes oscilaes
de alimentao, sua aplicao em ambientes industriais evidente.
A rede CAN possibilita as seguintes caractersticas:

Prioridade de mensagens

Tempos de latncia garantidos

Flexibilidade de configurao

Recepo multinodo com re-sincronizao

Consistncia dos dados

Multimestre

Deteco e sinalizao de erro

Distino entre erros temporrios e falhas permanentes em nodos

A rede CAN um protocolo de mltiplo acesso com deteco de portadora


e de coliso e arbitragem na prioridade da mensagem (CSMA/CD+AMP). A
deteco de portadora especifica que todo nodo que deseja transmitir deve antes
verificar se o barramento est livre, e se o estiver, iniciar a transmisso. Colises
so detectadas e resolvidas de forma no destrutiva (processo explicado na seo
Nvel Fsico, logo abaixo). A arbitragem do barramento definida pela mensagem
e no pelos nodos. Isso garante que mensagens vitais sejam transmitidas em
detrimento de mensagens no to importantes.
Existem atualmente trs principais tipos de redes CAN em uso. As
diferenas entre elas so principalmente em taxa de transferncia de dados no
barramento e em tamanho do campo de identificao. Com a verso 2.0A so
possveis at 2048 nmeros identificadores. Com a verso 2.0B, so possveis at
537 milhes de nmeros de identificao diferentes[19].

Nomenclatura

Padro

Taxa mxima

Identificador

CAN baixa-velocidade

ISO 11519

125kbps

11 bits

Verso 2.0A

ISO

1Mbps

11 bits

1Mbps

29 bits

11898:1993
Verso 2.0B

ISO
11898:1995

Tabela 1 Tipos de rede CAN


O protocolo de comunicao CAN segue o padro ISO 11898 e tem
conformidade com o modelo OSI, definido em camadas.

Figura 1 Arquitetura padro da rede CAN

1.2.

Nvel fsico da rede:

Figura 2 Lgica do barramento CAN


Um dos conceitos mais importantes no nvel fsico da rede CAN o de
dominncia de bit. A dominncia de bit semelhante dominncia gentica, onde
a presena de um gene dominante inibe o efeito de um gene recessivo. Na
dominncia de bit, o bit recessivo o estado de repouso da rede. A rede CAN
utiliza um meio de transmisso diferencial, no qual avaliada a diferena de
tenso entre dois fios, a saber CANH e CANL. O estado de bit recessivo mantido
por dois resistores de pull-up conectados aos fios CANH e CANL. Ento, sem que
seja transmitida nenhuma informao, a rede estaria recebendo um fluxo
constante de bits recessivos. Logo, necessrio um estado lgico diferente do
repouso, para marcar o incio da transmisso.

O bit recessivo possui um valor lgico alto (1) na rede CAN, enquanto o bit
dominante possui um valor baixo (0). A interface de nvel fsico se encarrega, a
cada tempo de transmisso de um bit, de gerar um bit dominante ao receber um
nvel lgico baixo ou de no fazer nada ao receber um nvel lgico alto.
Quando a interface deseja gerar um bit dominante, ela fora o nvel eltrico
do fio CANH para aproximadamente 3,5 volts e fora o fio CANL para
aproximadamente 1,5 volts. Fica estabelecida uma diferena de potencial de
aproximadamente 2 volts. Esse estado conhecido como bit dominante. A escrita
de um bit dominante na rede (como na contraparte gentica) sobrescreve o estado
de bit recessivo na rede.
A transmisso do bit feita de modo diferencial, o que garante a robustez
da rede CAN. Como os fios CANH e CANL so, de acordo com a especificao,
um par tranado, a induo de um rudo que eleve o nvel eltrico em um dos fios
tambm eleva o nvel eltrico no outro fio pelo mesmo valor de tenso. O
balanceamento garante que a corrente fluindo em cada fio durante a transmisso
igual e oposta em direo, gerando um cancelamento de efeito de campo (e
conseqentemente, do rudo gerado).
Todas as interfaces controladoras de rede CAN utilizam uma verificao de
erro baseada na consistncia entre o bit escrito na rede e o estado lgico lido
imediatamente aps a escrita. A deteco da inconsistncia tem diferentes efeitos
sobre a interface controladora, que so dependentes de qual campo da
mensagem a ser transmitida foi escrito.

Figura 3 Nveis eltricos de barramento


Com os dois fios no mesmo nvel eltrico, no existe gasto de potncia na
rede quando um bit recessivo transmitido, apenas quando o bit dominante
transmitido. Isso reduz o gasto de energia para o transporte dos dados.
O padro CAN permite ainda a insero de novos nodos com a rede em
operao (hot-plugging). Com o uso de protocolos de alto nvel, possvel gerar
sistemas com um mestre reconfigurvel ou reconfigurar toda a rede para
balancear a carga, por exemplo.

1.3. Interfaces CAN de nvel fsico


As interfaces de nvel fsico atualmente no mercado permitem vrias
funcionalidades interessantes.
-

Proteo contra curto-circuito: A interface deve ser resistente contra


curtos entre os fios de dados (CANH com CANL), entres estes e a
alimentao ou entre estes e o terra. O valor atual de 36V a +36V,
que a faixa de alimentao de uma bateria de caminho comum..

Descarga Eletro-esttica: A interface deve suportar descargas eletroestticas por induo ou por descarga direta (quando a interface
descarregada ou carregada eletroestaticamente). Atualmente so
suportadas tenses de at 16Kv.

Rudo de modo comum: a diferena de potencial entre os potenciais


de terra dos nodos transmissor e receptor na rede. A faixa atualmente
suportada de 7V a +12V.

Alta impedncia de entrada: Determina o mximo de nodos que a rede


suporta. Nodos desligados so desligados eletricamente da rede e
portanto no perturbam o processo de transmisso.

Tempos de transio controlados: Limitam o tempo de transio dos


nveis, melhorando a qualidade do sinal.

Modos de baixa corrente e sleep: Minimizam o consumo de potncia das


interfaces.

Proteo trmica: Desligar a interface quando esta for exposta a certos


nveis de temperatura. Isso no apenas impede que a lgica interna
tenha comportamento errneo como evita que um curto-circuito
extremamente grave danifiquem a interface.

Ligamento e desligamento livre de pulsos: Permite conexo a quente na


rede, por manter um nvel recessivo seguro at atingir regime de
operao.

Comprimento do barramento

Taxa de transferncia

(m)

(Kbps)

30

1000

100

500

250

250

500

125

1000

62.5

Tabela 2 Relao comprimento do cabo vs. taxa

O cabo utilizado um par tranado,blindado ou no, com impedncia


caracterstica de 120 e resistores de terminao de 120.

1.4. Formatos dos datagramas:

Figura 4 Datagrama CAN normal


SOF Incio de quadro. Um nico bit dominante.
Identificador Quanto maior a prioridade da mensagem, menor o valor
lgico desse campo.
RTR Bit dominante quando requisita dados de outro(s) nodo(s)
especificado(s) pelo campo identificador.
IDE Bit dominante quando o campo identificador de tamanho normal.
r0 Reservado pela especificao [18].
DLC 4 bits indicando o total de bytes usados no campo de dados.
Data at 64 bits de dados.
CRC Teste de redundncia cclica de 16 bits dos dados anteriores. Utiliza
um polinmio identificador simples (X15+X12+X1).
ACK Campo de 2 bits que permite a todo e qualquer nodo validar a
mensagem. 1 bit para escrita e outro como delimitador.
EOF 7 bits que indicam o final do quadro e verificam erros de bit stuffing.
IFS 7 bits que indicam o tempo para o controlador disponibilizar o dado
para a aplicao.
Durante o processo de transmisso, qualquer nodo pode validar a
mensagem (escrevendo um bit dominante do campo ACK, mantido recessivo pelo
transmissor) ou invalidar a mensagem (violando o princpio de bit-stuffing da
mensagem nos campos EOF ou IFS).

Figura 5 Datagrama CAN estendido


SRR 1 bit recessivo que substitui o RTR convencional no datagrama
estendido.
IDE Bit recessivo que indica a extenso do identificador com mais 18 bits.
r1 Bit reservado adicional.
Para os datagramas CAN normais, o tamanho total varia entre 44 e 108 bits.
Com os 23 possveis bits adicionais de bit-stuffing (explicado no item 1.8,
Verificao de erros) o tamanho mximo sobe para 131 bits.
Para os datagramas estendidos, o tamanho varia entre 64 e 128 bits,
subindo para 156 mximo com os 28 bits de bit-stuffing.
Os bits de controle so transmitidos ainda que o pacote de dados seja vazio.

1.5. Processo de Arbitragem


O processo de arbitragem utiliza o conceito de dominncia para garantir
no apenas que somente a mensagem

mais importante tenha prioridade no

barramento, como garante que a mensagem no destruda durante o processo


de arbitragem.
Uma vez que a rede utiliza sistema de deteco de portadora, os nodos
sempre verificam se existe algum dado sendo trafegado antes de tentar enviar
suas prprias mensagens. Supondo a rede inicialmente em repouso (bits
recessivos) e dois nodos (A e B) desejando transmitir ao mesmo tempo. Ambos
escutam o barramento e, no detectando nenhuma transmisso em progresso,
iniciam sua prpria transmisso. Como o incio de quadro igual, nenhum dos
dois nodos percebe a coliso e continua no processo de transmisso. A seguir,
cada nodo inicia o processo de escrita do identificador da mensagem que deseja
transmitir. Vale observar que no o nodo que tem a prioridade no barramento e
sim a mensagem.

Durante o processo de escrita do identificador, a verificao de consistncia


de bit muda de funo. Supondo que o prximo bit a ser escrito pela interface A
dominante e o bit a ser escrito pela interface B recessivo, quando ambas
escreverem os seus respectivos bits na rede, o bit da interface A sobrescreve o bit
da interface B. A interface A verifica o bit escrito e determina que compatvel,
passando para o bit seguinte. A interface B, ao perceber a diferena entre o bit lido
e o escrito, entra em modo de escuta, pois sua mensagem tem uma prioridade
menor (valor maior) do que a mensagem de A. Assim que B detecta o campo IFS,
ela tentar retransmitir a sua mensagem.
Vale notar que a interface A nem percebe que ganhou a arbitragem e que a
sua mensagem continua intacta, sem ter sofrido alterao decorrente do processo
de arbitragem.
Um exemplo do processo de arbitragem ilustrado abaixo:

Figura 6 Arbitragem no barramento, dois nodos

Figura 7 Outro exemplo de Arbitragem no Barramento


Ainda que existam normas classificando os tipos de identificadores,
possvel que um programador de dispositivo CAN crie um nodo com seu prprio
sistema de identificadores. Assim, possvel selecionar alguns bits do
identificador para estabelecer no um identificador de mensagem, mas de
dispositivo,

criando

uma

comunicao

ponto-a-ponto.

Entretanto,

isso

desaconselhvel, uma vez que tornar o dispositivo incompatvel com dispositivos


que sigam as normas e padres.

1.6. Reconhecimento de mensagens


Como ocorre com o campo de arbitragem, o campo de reconhecimento da
mensagem modifica a verificao de consistncia de bit. Aqui, o nodo que
transmite a mensagem escreve um bit recessivo, enquanto o nodo que a recebe
escreve um bit dominante. O nodo emissor ento fica notificado do recebimento da
mensagem.

1.7. Nvel de enlace


No nvel de enlace, so realizadas as seguintes funes:

Confinamento de falha

Deteco e sinalizao de erro

Confirmao

Arbitragem

Enquadramento da mensagem (framing)

Taxa de transferncia e temporizao

1.8. Verificao de erros


O esquema de deteco de erros na rede CAN possui 5 mtodos
distribudos em dois nveis.

Nvel de mensagem:
-

CRC de 16 bits (polinmio X15+X12+X1), usando 15 bits efetivamente e 1


como delimitador

ACK com 1 bit de confirmao e 1 de delimitador

Verificao de quadro, identificando bits recessivos onde s pode haver


bits dominantes, como SOF, EOF e os delimitadores CRC e ACK.

Nvel de bit:
-

Consistncia de bit, onde a interface avalia se o bit transmitido igual ao


bit lido aps a escrita, caso contrrio gera um frame de erro. A
verificao ocorre por toda a mensagem exceto para os campos de
identificao (onde o processo de arbitragem tem lugar) e o de
confirmao (que valida a mensagem).

Bit-stuffing, determina que aps 5 bits consecutivos de mesmo valor, o


6 o complemento dos anteriores. Isso garante ainda uma mudana
constante no nvel lgico na rede, que permite uma sincronizao entre
os nodos. Esse esquema no avaliado para o EOF e o IFS.

Com o sistema de bit-stuffing, qualquer nodo que detecte um erro na


mensagem CAN pode avisar aos outros, simplesmente escrevendo 6 bits
dominantes na mensagem, tornando-a inerentemente errada e forando o
transmissor a reenviar. Isso uma violao forada do protocolo de bit-stuffing,

criado para que qualquer nodo que tenha percebido um erro de quadro ou de CRC
avise a todos os outros que o datagrama est corrompido.
Especificamente na parte de erros de mensagens, o nvel de enlace da rede
CAN verifica erros de Teste de Redundncia Cclica (CRC), de Quadro da
Mensagem e realiza enchimento de bits (bit stuffing).
Graas a essas medidas, todos os erros globais so percebidos, todos os
erros locais (nodo) nos transmissores so percebidos, at 5 bits aleatoriamente
errados so percebidos e total mpar de erros (todos) so percebidos em uma
mensagem.

1.9. Interface CAN de nvel de enlace


As interfaces controladoras de barramento CAN apresentam vrias
funcionalidades, conforme citado abaixo:
- Filtro de mensagem: possvel configurar a interface controladora para
aceitar apenas mensagens cujo campo identificador satisfaa um certo critrio,
definido um identificador nico (ou uma faixa de identificadores) que fornecero o
dado camada de aplicao.
- Mltiplos buffers de transmisso: Com o uso de vrios buffers de
transmisso de dados, possvel ter diferentes nveis de prioridade para as
mensagens transmitidas.
- Funcionalidades de nodo defeituoso: Atualmente, toda a parte de gerncia
dos erros de transmisso fica a cargo da controladora de barramento, liberando a
camada de aplicao. Em caso de defeito no sistema de transmisso do nodo, a
prpria controladora se encarrega de avisar a aplicao sobre a confiabilidade da
transmisso e, em situaes extremas, desabilitar completamente a transmisso
de dados para aquele nodo. De um modo simplista, cada mensagem errada
incrementa o contador de erro de 8 unidades, cada mensagem correta
decrementa o contador de 1 unidade. Quando o limite de 96 mensagens erradas
atingido, uma interrupo (normalmente) enviada para a camada de aplicao.
Vencendo o limite de 127 erros, o nodo no mais capaz de gerar mensagens de
erro. Vencendo o limite de 256 erros, o nodo impedido de transmitir ou de

receber mensagens. Entretanto, se ele receber 128 ocorrncias de 11bits


recessivos no barramento, os contadores de erro so limpos. Novamente, toda
essa funcionalidade implementada em nvel de camada de enlace, liberando a
camada de aplicao.
- Amostragem do barramento: Outra funcionalidade interessante da
controladora a capacidade de amostrar sucessivas vezes o barramento, usando
depois uma mdia simples para determinar o nvel lgico do mesmo.
A principal funcionalidade da controladora de interface CAN gerenciar
todo o processo de bit-stuffing, verificao de quadros, reconhecimento de
mensagem e a consistncia de bit em nvel de hardware. A camada de aplicao
apenas ser interrompida em casos especiais, como requisio de reenvio e
recebimento de requisio de transmisso. Isso libera muito do processamento da
camada de aplicao, que geralmente ser um outro processador.