HISTÓRICO
O CAN Bus (ou Barramento
Controller Area Network) foi desenvolvido pela empresa alemã Robert BOSCH e
disponibilizado em meados dos anos 80. Sua aplicação inicial foi realizada em
ônibus e caminhões. Atualmente, é utilizado na indústria, em veículos
automotivos, navios e tratores, entre outros.
CONCEITUAÇÃO BÁSICA
O CAN é um protocolo de
comunicação serial síncrono. O sincronismo entre os módulos conectados a rede é
feito em relação ao início de cada mensagem lançada ao barramento (evento que
ocorre em intervalos de tempo conhecidos e regulares).
Trabalha baseado no conceito
multi-mestre, onde todos os módulos podem se tornar mestre em determinado
momento e escravo em outro, além de suas mensagens serem enviadas em regime
multicast, caracterizado pelo envio de toda e qualquer mensagem para todos os
módulos existentes na rede.
Outro ponto forte deste protocolo
é o fato de ser fundamentado no conceito CSMA/CD with NDA (Carrier Sense
Multiple Access/Collision Detection with Non-Destructive Arbitration). Isto
significa que todos os módulos verificam o estado do barramento, analisando se
outro módulo está ou não enviando mensagens com maior prioridade. Caso isto
seja percebido, o módulo cuja mensagem tiver menor prioridade cessará sua
transmissão e o de maior prioridade continuará enviando sua mensagem deste
ponto, sem ter que reiniciá-la.
Outro conceito bastante
interessante é o NRZ (Non Return to Zero), onde cada bit (0 ou 1) é transmitido
por um valor de tensão específico e constante.
A velocidade de transmissão dos
dados é inversamente proporcional ao comprimento do barramento. A maior taxa de
transmissão especificada é de 1Mbps considerando-se um barramento de 40 metros.
A Figura 1 representa a relação entre o comprimento da rede (barramento) e a
taxa de transmissão dos dados.
Figura 1
Considerando-se fios elétricos
como o meio de transmissão dos dados, existem três formas de se constituir um
barramento CAN, dependentes diretamente da quantidade de fios utilizada.
Existem redes baseadas em 1, 2 e 4 fios. As redes com 2 e 4 fios trabalham com
os sinais de dados CAN_H (CAN High) e CAN_L (CAN Low). No caso dos barramentos
com 4 fios, além dos sinais de dados, um fio com o VCC (alimentação) e outro
com o GND (referência) fazem parte do barramento, levando a alimentação às duas
terminações ativas da rede. As redes com apenas 1 fio têm este, o fio de dados,
chamado exclusivamente de linha CAN.
Considerando o CAN fundamentado
em 2 e 4 fios, seus condutores elétricos devem ser trançados e não blindados.
Os dados enviados através da rede devem ser interpretados pela análise da
diferença de potencial entre os fios CAN_H e CAN_L. Por isso, o barramento CAN
é classificado como Par Trançado Diferencial. Este conceito atenua fortemente
os efeitos causados por interferências eletro-magnéticas, uma vez que qualquer
ação sobre um dos fios será sentida também pelo outro, causando flutuação em
ambos os sinais para o mesmo sentido e com a mesma intensidade. Como o que vale
para os módulos que recebem as mensagens é a diferença de potencial entre os
condutores CAN_H e CAN_L (e esta permanecerá inalterada), a comunicação não é
prejudicada.
No CAN, os dados não são
representados por bits em nível “0” ou nível “1”. São representados por bits
Dominantes e bits Recessivos, criados em função da condição presente nos fios
CAN_H e CAN_L. A Figura 2 ilustra os níveis de tensão em uma rede CAN, assim
como os bits Dominantes e Recessivos.
Figura 2
Como mencionado no início, todos
os módulos podem ser mestre e enviar suas mensagens. Para tanto, o protocolo é
suficientemente robusto para evitar a colisão entre mensagens, utilizando-se de
uma arbitragem bit a bit não destrutiva. Podemos exemplificar esta situação,
analisando o comportamento de dois módulos enviando, ao mesmo tempo, mensagens
diferentes. Após enviar um bit, cada módulo analisa o barramento e verifica se
outro módulo na rede o sobrescreveu (vale acrescentar que um bit Dominante
sobrescreve eletricamente um Recessivo). Um módulo interromperá imediatamente
sua transmissão, caso perceba que existe outro módulo transmitindo uma mensagem
com prioridade maior (quando seu bit recessivo é sobrescrito por um dominante).
Este módulo, com maior prioridade, continuará normalmente sua transmissão.
FORMATOS DAS MENSAGENS
Existem dois formatos de
mensagens no protocolo CAN:
CAN 2.0A – Mensagens com
identificador de 11 bits. É possível ter até 2048 mensagens em uma rede
constituída sob este formato, o que pode caracterizar uma limitação em
determinadas aplicações. A Figura 3 apresenta o quadro de mensagem do CAN 2.0A.
Figura 3
CAN 2.0B – Mensagens com
identificador de 29 bits. É possível ter, aproximadamente, 537 milhões de
mensagens em uma rede constituída sob este formato. Percebe-se que a limitação
em virtude da quantidade de mensagens não mais existe. Por outro lado, o que
pode ser observado em alguns casos é que, os 18 bits adicionais no
identificador aumentam o tempo de transmissão de cada mensagem, o que pode
caracterizar um problema em determinadas aplicações que trabalhem em tempo-real
(problema conhecido como overhead). A Figura 4 apresenta o quadro de mensagem
do formato CAN 2.0B.
Figura 4
PADRÕES EXISTENTES
Os fundamentos do CAN são
especificados por duas normas: a ISO11898 e a ISO11519-2. A primeira, ISO11898,
determina as características de uma rede trabalhando com alta velocidade de
transmissão de dados (de 125Kbps a 1Mbps). A segunda, ISO11519-2, determina as
características de uma rede trabalhando com baixa velocidade (de 10Kbps a
125Kbps).
Ambos os padrões especificam as
camadas Física e de Dados, respectivamente 1 e 2 se considerado o padrão de
comunicação OSI de 7 camadas (ISO7498). As demais camadas, da 3 à 7, são
especificadas por outros padrões, cada qual relacionado a uma aplicação
específica.
Existem diversos padrões
fundamentados no CAN, dentre os quais podemos destacar:
- NMEA 2000: Baseado no CAN 2.0B e utilizado em aplicações navais e aéreas.
- SAE J1939: Baseado no CAN 2.0B e utilizado em aplicações automotivas, especialmente ônibus e caminhões.
- DIN 9684 – LBS: Baseado no CAN 2.0A e utilizado em aplicações agrícolas.
- ISO 11783: Baseado no CAN 2.0B e também utilizado em aplicações agrícolas.
Estes padrões especificam o
equivalente às camadas de Rede (3), Transporte (4), Sessão (5), Apresentação
(6) e Aplicação (7), do padrão OSI, incluindo-se as mensagens pertinentes ao
dicionário de dados de cada aplicação em especial.
DETECÇÃO DE FALHAS
Algumas das maiores vantagens do
CAN é a sua robustez e a capacidade de se adaptar às condições de falha,
temporárias e/ou permanentes. Podemos classificar as falhas de uma rede CAN em
três categorias ou níveis: Nível de Bit, Nível de Mensagem e Nível Físico.
Nível de Bit – Possui dois tipos
de erro possíveis:
Bit Monitoring: Após a escrita de
um bit dominante, o módulo transmissor verifica o estado do barramento. Se o
bit lido for recessivo, significará que existe um erro no barramento.
Bit Stuffing: Apenas cinco bits
consecutivos podem ter o mesmo valor (dominante ou recessivo). Caso seja
necessário transmitir seqüencialmente seis ou mais bits de mesmo valor, o
módulo transmissor inserirá, imediatamente após cada grupo de cinco bits
consecutivos iguais, um bit de valor contrário. O módulo receptor ficará
encarregado de, durante a leitura, retirar este bit, chamado de Stuff Bit. Caso
uma mensagem seja recebida com pelo menos seis bits consecutivos iguais, algo
de errado terá ocorrido no barramento.
Nível de Mensagem – São três os
tipos de erro possíveis:
CRC ou Cyclic Redundancy Check:
Funciona como um checksum. O módulo transmissor calcula um valor em função dos
bits da mensagem e o transmite juntamente com ela. Os módulos receptores
recalculam este CRC e verificam se este é igual ao transmitido com a mensagem.
Frame Check: Os módulos
receptores analisam o conteúdo de alguns bits da mensagem recebida. Estes bits
(seus valores) não mudam de mensagem para mensagem e são determinados pelo
padrão CAN.
Acknowledgment Error Check: Os
módulos receptores respondem a cada mensagem íntegra recebida, escrevendo um
bit dominante no campo ACK de uma mensagem resposta que é enviada ao módulo
transmissor. Caso esta mensagem resposta não seja recebida (pelo transmissor
original da mensagem), significará que, ou a mensagem de dados transmitida
estava corrompida, ou nenhum módulo a recebeu.
Toda e qualquer falha acima
mencionada, quando detectada por um ou mais módulos receptores, fará com que
estes coloquem uma mensagem de erro no barramento, avisando toda a rede de que
aquela mensagem continha um erro e que o transmissor deverá reenviá-la.
Além disso, a cada mensagem
erroneamente transmitida ou recebida, um contador de erros é incrementado em
uma unidade nos módulos receptores, e em oito unidades no transmissor. Módulos
com estes contadores iguais a zero são considerados Normais. Para os casos em
que os contadores contêm valores entre 1 e 127, os módulos são considerados
Error Active. Contadores contendo valores entre 128 e 255 colocam os módulos em
condição de Error Passive. Finalmente, para contadores contendo valores
superiores a 255, os módulos serão considerados em Bus Off e passarão a não
mais atuar no barramento. Estes contadores também são decrementados a medida
que mensagens corretas são recebidas, o que reduz o grau de incerteza em
relação a atividade dos módulos ora com contadores contendo valores diferentes
de zero e possibilita novamente a plena participação deles no barramento.
Nível Físico – Para os
barramentos com 2 e 4 fios, caso algo de errado venha a ocorrer com os fios de
dados CAN_H e CAN_L, a rede continuará operando sob uma espécie de modo de
segurança. Seguem abaixo algumas das condições de falha nas linhas de
comunicação que permitem a continuidade das atividades da rede:
- Curto do CAN_H (ou CAN_L) para GND (ou VCC);
- Curto entre os fios de dados CAN_H e CAN_L;
- Ruptura do CAN_H (ou CAN_L);
ASPECTOS DE IMPLEMENTAÇÃO:
DICIONÁRIO DE DADOS
É a parte mais dedicada à
aplicação quando se trabalha com um protocolo como o CAN. O Dicionário de Dados
(ou Data Dictionary) é o conjunto de mensagens que podem ser transmitidas
naquela determinada rede.
A forma mais interessante de se
organizar um dicionário de dados é criando uma matriz com todos os módulos da
rede. Esta matriz mostrará cada mensagem sob a responsabilidade de cada módulo,
relacionando quem a transmite e quem a recebe. Outros dados importantes nesta
matriz são: o tempo de atualização dos valores da mensagem, o intervalo de
transmissão da mesma e o valor relativo ao seu identificador. Além desta
matriz, a documentação referente ao Dicionário de Dados deverá conter uma
descrição detalhada de cada mensagem, bit a bit.
O Dicionário de Dados é
implementado numa rede CAN via software e deverá ser o mesmo (ter a mesma
versão de atualização, inclusive) em todos os módulos conectados à rede. Isto
garantirá total compatibilidade entre os participantes do barramento.
ASPECTOS DE IMPLEMENTAÇÃO:
EXEMPLO DE REDE
Uma rede CAN, dependendo da sua
aplicação, poderá ter até centenas de módulos conectados. O valor máximo para a
conexão de módulos em um barramento depende da norma que se utiliza na dada
aplicação.
Toda rede CAN possui 2
Terminadores. Estes terminadores nada mais são que resistores com valores entre
120 e 124 ohms, conectados à rede para garantir a perfeita propagação dos
sinais elétricos pelos fios da mesma. Estes resistores, um em cada ponta da
rede, garantem a reflexão dos sinais no barramento e o correto funcionamento da
rede CAN.
Outra característica de
determinadas aplicações fundamentadas no CAN é que estas poderão ter duas ou
mais sub-redes trabalhando, cada qual, em uma velocidade diferente. Os dados
são transferidos de uma sub-rede para a outra através de módulos que atuam nas
duas sub-redes. Estes módulos são chamados de Gateways.
A Figura 5 ilustra a rede CAN de
um sistema automotivo, com duas sub-redes e dois terminadores. O Gateway desta
aplicação é o Painel de Instrumentos.
Figura 5
ASPECTOS DE IMPLEMENTAÇÃO:
MONTAGEM DA REDE
Barramento é o termo técnico que
representa os condutores elétricos das linhas de comunicação e a forma como
eles são montados. Apesar de parecer simples, o ato de interligar os módulos
requer bastante atenção.
Sobre o cabeamento necessário,
considerando-se uma aplicação CAN de dois fios, deve-se utilizar par trançado
onde a secção transversal de cada um dos fios deve ser de no mínimo 0,35mm².
As duas terminações (resistores
de aproximadamente 120 ohms), do ponto de vista teórico, podem ser instaladas
nas extremidades do chicote, diretamente nos fios de dados CAN_H e CAN_L. Do
ponto de vista prático isto é extremamente complexo. O que deve ser feito é
adicionar as terminações nas duas ECUs (Unidades Eletrônicas de Controle)
conectadas aos extremos da rede. Se as ECUs forem montadas dependendo dos
opcionais do veículo, deve-se procurar instalar as terminações nas ECUs que
sempre estarão presentes nele (veículo). As terminações são mandatórias numa
rede CAN.
No momento de se projetar o
roteamento do barramento, algumas regras em relação ao comprimento dos chicotes
devem ser observadas. O sincronismo das operações das ECUs no CAN é
fundamentado no tempo de propagação física das mensagens no barramento. Assim,
a relação do comprimento de determinados intervalos do chicote no barramento
são fundamentais ao bom funcionamento da rede.
A Figura 6 mostra um diagrama que
ilustra as medidas que devem ser observadas no desenvolvimento do chicote.
Figura 6
Destacamos que, após o barramento
ser montado, caso seja necessário qualquer retrabalho no mesmo, é aconselhável
a troca do chicote elétrico danificado. Emendas poderão alterar a impedância
característica da rede e com isso afetar o seu funcionamento.
Nenhum comentário:
Postar um comentário