14
Luiz Roberto Guimarães Barbosa Rede CAN Belo Horizonte Escola de Engenharia da UFMG 2003

Resumo CAN

Embed Size (px)

Citation preview

Page 1: Resumo CAN

Luiz Roberto Guimarães Barbosa

Rede CAN

Belo Horizonte

Escola de Engenharia da UFMG

2003

Page 2: Resumo CAN

1. Interface CAN

1.1. Histórico Por volta da década de 80, ocorreu um grande aumento no número de

componentes eletrônicos de controle e telemetria usados em veículos. Cresceu

também 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 extensão, com cabos de cerca de 10cm de diâmetro, conforme visto em [17].

Reconfigurações na rede e manutenção 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 interconexão de componentes de controle em

veículos [18]. A rede proposta apresenta significativas vantagens, e vem se

tornando a opção de facto para a montagem de uma rede de dados veicular.

A rede automotiva de dados CAN é padronizada mundialmente pela

resolução ISO 11898, gerada pela International Society of Organization. A

regulamentação específica que determina os diferentes tipos de redes CAN e

aplicabilidade de cada uma em diferentes veículos é regulamentada pela Society

of Automotive Enginneers (SAE). Utilizando como referência a definição em

camadas das redes de dados ISO/OSI, toda a especificação da rede CAN diz

respeito apenas aos níveis físico e de enlace (Figura 1).

Devido às suas excelentes características, a rede CAN vem sendo utilizada

também em aplicações industriais, com alto índice de sucesso. Isso se deve às

características extremamente robustas e confiáveis da rede. Uma vez que foi

proposta para um ambiente com alto nível de ruído induzido e grandes oscilações

de alimentação, sua aplicação em ambientes industriais é evidente.

A rede CAN possibilita as seguintes características:

• Prioridade de mensagens

• Tempos de latência garantidos

• Flexibilidade de configuração

• Recepção multinodo com re-sincronização

Page 3: Resumo CAN

• Consistência dos dados

• Multimestre

• Detecção e sinalização de erro

• Distinção entre erros temporários e falhas permanentes em nodos

A rede CAN é um protocolo de múltiplo acesso com detecção de portadora

e de colisão e arbitragem na prioridade da mensagem (CSMA/CD+AMP). A

detecção de portadora especifica que todo nodo que deseja transmitir deve antes

verificar se o barramento está livre, e se o estiver, iniciar a transmissão. Colisões

são detectadas e resolvidas de forma não destrutiva (processo explicado na seção

Nível Físico, logo abaixo). A arbitragem do barramento é definida pela mensagem

e não pelos nodos. Isso garante que mensagens vitais sejam transmitidas em

detrimento de mensagens não tão importantes.

Existem atualmente três principais tipos de redes CAN em uso. As

diferenças entre elas são principalmente em taxa de transferência de dados no

barramento e em tamanho do campo de identificação. Com a versão 2.0A são

possíveis até 2048 números identificadores. Com a versão 2.0B, são possíveis até

537 milhões de números de identificação diferentes[19].

Nomenclatura Padrão Taxa máxima Identificador

CAN baixa-velocidade ISO 11519 125kbps 11 bits

Versão 2.0A ISO

11898:1993

1Mbps 11 bits

Versão 2.0B ISO

11898:1995

1Mbps 29 bits

Tabela 1– Tipos de rede CAN

O protocolo de comunicação CAN segue o padrão ISO 11898 e tem

conformidade com o modelo OSI, definido em camadas.

Page 4: Resumo CAN

Figura 1– Arquitetura padrão da rede CAN 1.2. Nível físico da rede:

Figura 2– Lógica do barramento CAN Um dos conceitos mais importantes no nível físico da rede CAN é o de

dominância de bit. A dominância de bit é semelhante à dominância genética, onde

a presença de um gene dominante inibe o efeito de um gene recessivo. Na

dominância de bit, o bit recessivo é o estado de repouso da rede. A rede CAN

utiliza um meio de transmissão diferencial, no qual é avaliada a diferença de

tensão 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. Então, sem que

seja transmitida nenhuma informação, a rede estaria recebendo um fluxo

constante de bits recessivos. Logo, é necessário um estado lógico diferente do

repouso, para marcar o início da transmissão.

Page 5: Resumo CAN

O bit recessivo possui um valor lógico alto (1) na rede CAN, enquanto o bit

dominante possui um valor baixo (0). A interface de nível físico se encarrega, a

cada tempo de transmissão de um bit, de gerar um bit dominante ao receber um

nível lógico baixo ou de não fazer nada ao receber um nível lógico alto.

Quando a interface deseja gerar um bit dominante, ela força o nível elétrico

do fio CANH para aproximadamente 3,5 volts e força o fio CANL para

aproximadamente 1,5 volts. Fica estabelecida uma diferença de potencial de

aproximadamente 2 volts. Esse estado é conhecido como bit dominante. A escrita

de um bit dominante na rede (como na contraparte genética) sobrescreve o estado

de bit recessivo na rede.

A transmissão do bit é feita de modo diferencial, o que garante a robustez

da rede CAN. Como os fios CANH e CANL são, de acordo com a especificação,

um par trançado, a indução de um ruído que eleve o nível elétrico em um dos fios

também eleva o nível elétrico no outro fio pelo mesmo valor de tensão. O

balanceamento garante que a corrente fluindo em cada fio durante a transmissão

é igual e oposta em direção, gerando um cancelamento de efeito de campo (e

conseqüentemente, do ruído gerado).

Todas as interfaces controladoras de rede CAN utilizam uma verificação de

erro baseada na consistência entre o bit escrito na rede e o estado lógico lido

imediatamente após a escrita. A detecção da inconsistência tem diferentes efeitos

sobre a interface controladora, que são dependentes de qual campo da

mensagem a ser transmitida foi escrito.

Page 6: Resumo CAN

Figura 3– Níveis elétricos de barramento Com os dois fios no mesmo nível elétrico, não existe gasto de potência 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 padrão CAN permite ainda a inserção de novos nodos com a rede em

operação (hot-plugging). Com o uso de protocolos de alto nível, é possível gerar

sistemas com um mestre reconfigurável ou reconfigurar toda a rede para

balancear a carga, por exemplo.

1.3. Interfaces CAN de nível físico As interfaces de nível físico atualmente no mercado permitem várias

funcionalidades interessantes.

- Proteção contra curto-circuito: A interface deve ser resistente contra

curtos entre os fios de dados (CANH com CANL), entres estes e a

alimentação ou entre estes e o terra. O valor atual é de –36V a +36V,

que é a faixa de alimentação de uma bateria de caminhão comum..

Page 7: Resumo CAN

- Descarga Eletro-estática: A interface deve suportar descargas eletro-

estáticas por indução ou por descarga direta (quando a interface é

descarregada ou carregada eletroestaticamente). Atualmente são

suportadas tensões de até 16Kv.

- Ruído de modo comum: É a diferença de potencial entre os potenciais

de terra dos nodos transmissor e receptor na rede. A faixa atualmente

suportada é de –7V a +12V.

- Alta impedância de entrada: Determina o máximo de nodos que a rede

suporta. Nodos desligados são desligados eletricamente da rede e

portanto não perturbam o processo de transmissão.

- Tempos de transição controlados: Limitam o tempo de transição dos

níveis, melhorando a qualidade do sinal.

- Modos de baixa corrente e sleep: Minimizam o consumo de potência das

interfaces.

- Proteção térmica: Desligar a interface quando esta for exposta a certos

níveis de temperatura. Isso não apenas impede que a lógica interna

tenha comportamento errôneo como evita que um curto-circuito

extremamente grave danifiquem a interface.

- Ligamento e desligamento livre de pulsos: Permite conexão a quente na

rede, por manter um nível recessivo seguro até atingir regime de

operação.

Comprimento do barramento

(m)

Taxa de transferência

(Kbps)

30 1000

100 500

250 250

500 125

1000 62.5

Tabela 2– Relação comprimento do cabo vs. taxa

Page 8: Resumo CAN

O cabo utilizado é um par trançado,blindado ou não, com impedância

característica de 120Ω e resistores de terminação de 120Ω.

1.4. Formatos dos datagramas:

Figura 4– Datagrama CAN normal

SOF – Início de quadro. Um único bit dominante.

Identificador – Quanto maior a prioridade da mensagem, menor o valor

lógico 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 especificação [18].

DLC – 4 bits indicando o total de bytes usados no campo de dados.

Data – até 64 bits de dados.

CRC – Teste de redundância cíclica de 16 bits dos dados anteriores. Utiliza

um polinômio 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 aplicação.

Durante o processo de transmissão, qualquer nodo pode validar a

mensagem (escrevendo um bit dominante do campo ACK, mantido recessivo pelo

transmissor) ou invalidar a mensagem (violando o princípio de bit-stuffing da

mensagem nos campos EOF ou IFS).

Page 9: Resumo CAN

Figura 5– Datagrama CAN estendido

SRR – 1 bit recessivo que substitui o RTR convencional no datagrama

estendido.

IDE – Bit recessivo que indica a extensão 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 possíveis bits adicionais de bit-stuffing (explicado no item 1.8,

Verificação de erros) o tamanho máximo sobe para 131 bits.

Para os datagramas estendidos, o tamanho varia entre 64 e 128 bits,

subindo para 156 máximo com os 28 bits de bit-stuffing.

Os bits de controle são transmitidos ainda que o pacote de dados seja vazio.

1.5. Processo de Arbitragem O processo de arbitragem utiliza o conceito de dominância para garantir

não apenas que somente a mensagem mais importante tenha prioridade no

barramento, como garante que a mensagem não é destruída durante o processo

de arbitragem.

Uma vez que a rede utiliza sistema de detecção de portadora, os nodos

sempre verificam se existe algum dado sendo trafegado antes de tentar enviar

suas próprias 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, não detectando nenhuma transmissão em progresso,

iniciam sua própria transmissão. Como o início de quadro é igual, nenhum dos

dois nodos percebe a colisão e continua no processo de transmissão. A seguir,

cada nodo inicia o processo de escrita do identificador da mensagem que deseja

transmitir. Vale observar que não é o nodo que tem a prioridade no barramento e

sim a mensagem.

Page 10: Resumo CAN

Durante o processo de escrita do identificador, a verificação de consistência

de bit muda de função. Supondo que o próximo 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 é compatível,

passando para o bit seguinte. A interface B, ao perceber a diferença 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 alteração decorrente do processo

de arbitragem.

Um exemplo do processo de arbitragem é ilustrado abaixo:

Figura 6– Arbitragem no barramento, dois nodos

Page 11: Resumo CAN

Figura 7– Outro exemplo de Arbitragem no Barramento

Ainda que existam normas classificando os tipos de identificadores, é

possível que um programador de dispositivo CAN crie um nodo com seu próprio

sistema de identificadores. Assim, é possível selecionar alguns bits do

identificador para estabelecer não um identificador de mensagem, mas de

dispositivo, criando uma comunicação ponto-a-ponto. Entretanto, isso é

desaconselhável, uma vez que tornará o dispositivo incompatível com dispositivos

que sigam as normas e padrões.

1.6. Reconhecimento de mensagens Como ocorre com o campo de arbitragem, o campo de reconhecimento da

mensagem modifica a verificação de consistência 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 então fica notificado do recebimento da

mensagem.

1.7. Nível de enlace No nível de enlace, são realizadas as seguintes funções:

• Confinamento de falha

• Detecção e sinalização de erro

Page 12: Resumo CAN

• Confirmação

• Arbitragem

• Enquadramento da mensagem (framing)

• Taxa de transferência e temporização

1.8. Verificação de erros O esquema de detecção de erros na rede CAN possui 5 métodos

distribuídos em dois níveis.

Nível de mensagem:

- CRC de 16 bits (polinômio X15+X12+X1), usando 15 bits efetivamente e 1

como delimitador

- ACK com 1 bit de confirmação e 1 de delimitador

- Verificação de quadro, identificando bits recessivos onde só pode haver

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

Nível de bit:

- Consistência de bit, onde a interface avalia se o bit transmitido é igual ao

bit lido após a escrita, caso contrário gera um frame de erro. A

verificação ocorre por toda a mensagem exceto para os campos de

identificação (onde o processo de arbitragem tem lugar) e o de

confirmação (que valida a mensagem).

- Bit-stuffing, determina que após 5 bits consecutivos de mesmo valor, o

6º é o complemento dos anteriores. Isso garante ainda uma mudança

constante no nível lógico na rede, que permite uma sincronização entre

os nodos. Esse esquema não é 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 forçando o

transmissor a reenviar. Isso é uma violação forçada do protocolo de bit-stuffing,

Page 13: Resumo CAN

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 nível de enlace da rede

CAN verifica erros de Teste de Redundância Cíclica (CRC), de Quadro da

Mensagem e realiza enchimento de bits (bit stuffing).

Graças a essas medidas, todos os erros globais são percebidos, todos os

erros locais (nodo) nos transmissores são percebidos, até 5 bits aleatoriamente

errados são percebidos e total ímpar de erros (todos) são percebidos em uma

mensagem.

1.9. Interface CAN de nível de enlace As interfaces controladoras de barramento CAN apresentam várias

funcionalidades, conforme citado abaixo:

- Filtro de mensagem: É possível configurar a interface controladora para

aceitar apenas mensagens cujo campo identificador satisfaça um certo critério,

definido um identificador único (ou uma faixa de identificadores) que fornecerão o

dado à camada de aplicação.

- Múltiplos buffers de transmissão: Com o uso de vários buffers de

transmissão de dados, é possível ter diferentes níveis de prioridade para as

mensagens transmitidas.

- Funcionalidades de nodo defeituoso: Atualmente, toda a parte de gerência

dos erros de transmissão fica a cargo da controladora de barramento, liberando a

camada de aplicação. Em caso de defeito no sistema de transmissão do nodo, a

própria controladora se encarrega de avisar a aplicação sobre a confiabilidade da

transmissão e, em situações extremas, desabilitar completamente a transmissão

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 interrupção (normalmente) é enviada para a camada de aplicação.

Vencendo o limite de 127 erros, o nodo não é mais capaz de gerar mensagens de

erro. Vencendo o limite de 256 erros, o nodo é impedido de transmitir ou de

Page 14: Resumo CAN

receber mensagens. Entretanto, se ele receber 128 ocorrências de 11bits

recessivos no barramento, os contadores de erro são limpos. Novamente, toda

essa funcionalidade é implementada em nível de camada de enlace, liberando a

camada de aplicação.

- Amostragem do barramento: Outra funcionalidade interessante da

controladora é a capacidade de amostrar sucessivas vezes o barramento, usando

depois uma média simples para determinar o nível lógico do mesmo.

A principal funcionalidade da controladora de interface CAN é gerenciar

todo o processo de bit-stuffing, verificação de quadros, reconhecimento de

mensagem e a consistência de bit em nível de hardware. A camada de aplicação

apenas será interrompida em casos especiais, como requisição de reenvio e

recebimento de requisição de transmissão. Isso libera muito do processamento da

camada de aplicação, que geralmente será um outro processador.