CAN
BUSCONTROLLER AREA NETWORK BUS
By Igor Reis
"Thus Hard Synchronization forces the edge which has caused the Hard Synchronization to lie within the Synchronization Segment of the restarted bit time."
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 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.
Roteamento das Mensagens (os nodos do CAN não necessitam de nenhuma informação da configuração do sistema) então temos:
Sistema Flexível: novos nodos podem ser inseridos na rede, sem que seja necessária a reconfiguração do hardware ou software;
Filtro de Mensagens: cada conteúdo de mensagem tem um identificador, permitindo que todos os nodos da rede decidam, independetemente, se aceitam a mensagem.
Prioridades:
O identificador da mensagem define uma prioridade estática para a mesma durante o acesso ao barramento.
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.
Requisição Remota de Dado:
Determinado nodo na rede pode solicitar dado para outro nodo. A resposta do outro nodo se dará numa mensagem com o mesmo identificador do requisitor.
Estatísticas (dados da BOSCH):
O tempo entre a detecção de erro em alguma mensagem, cancelamento da mesma e o reenvio dela com a correção, é de aproximadamente 29 tempos de bit;
Com o sistema de detecção de erros do CAN, a probabilidade de ocorrer um erro não detectado em uma mensagem é de 1 em 1.000.000.000.000;
Quantidade de Nodos:
Teoricamente, não há limites de nodos na rede. A partir disso deve-se analisar os tempos de delay, e as restrições elétricas.
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 o CAN fundamentado em 3 fios, CAN_H, CAN_L, GND, dois quais apenas o GND não deve ser trançado. 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.
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
RTR bit - Remote Transmit Request: Dominante é Data Frame e Recessivo é Remote Frame;
IDE bit - Identifier Extension: Dominante é Standart Frame e Recessivo Extended;
DLC: Data Length Code
ACk: resposta do receiver - A resposta vem com sinal dominante, que se sobrepoe ao recessivo do Transmissor;
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
SRR bit - Substitute Remote Request: Bit sempre recessivo, aparece apenas para se sobrepor ao bit RTR do padrão 2.0A.
ASPECTOS DE IMPLEMENTAÇÃO: EXEMPLO DE REDE
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 que não haja 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
Detecção de Erros:
Nível de Bit:
Bit Stuffing: a cada 5 bits iguais seguidos, é colocado um bit contrário, a fim de verificar se houve alguma interferência na mensagem, tendo em vista que o erro seria detectado no caso de haver 6 bits iguais seguidos.
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.
Nível de Mensagem:
Cyclic Redundancy Checksum: parte da mensagem, composta por 15 bits, a partir da qual se fará uma checagem a fim de verificar a correção da 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.
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:
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);
Norma CAN Oficial v.2 (Publicação da BOSCH) - Arquivo PDF
Links que colaboraram:
http://www.kvaser.se/can/protocol/index.htm
http://www.semiconductors.philips.com/buses/can/
http://focus.ti.com/lit/ds/symlink/sn65hvd232q.pdf (Texas Datasheet Sample)