Buscar

Resumo_CAN

Prévia do material em texto

Luiz Roberto Guimarães Barbosa 
 
 
 
 
 
 
 
 
Rede CAN 
 
 
 
 
 
 
 
 
 
 
Belo Horizonte 
Escola de Engenharia da UFMG 
2003 
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 
• 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. 
 
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. 
 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. 
 
 
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.. 
- 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 consumode 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 
 
 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). 
 
 
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. 
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 
 
 
 
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 
• 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, 
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 
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.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes