Até agora já foram apresentados as camadas de rede, arquitetura e o formatos de mensagem de uma rede CAN. Nesta seção serão esclarecidos como essas mensagens são transmitidas ao barramento, aceitas ou rejeitadas pelos nós e como é feito o controle de múltiplos acessos.
Alocação no barramento [5]
Como foi visto na seção de arquitetura, o barramento é meio físico pelo qual os dispositivos de uma rede CAN se comunicam. Qualquer nó pode enviar mensagens aos outros nós, para que a transmissão seja iniciada, é necessário que o barramento esteja vazio, em estado idle. Ao enviar um bit dominante, um nó indica que quer iniciar transmissão. Em seguida, os bits do identificador são enviados e, simultaneamente, o nó responsável pela transmissão fica monitorando o barramento para detectar colisões.
Múltiplos acessos [1][7]
Uma das características do CAN é ser multimestre, ou seja, mais de um nó pode transmitir mensagens ao barramento.
Para não haver colisão de mensagens é preciso utilizar um mecanismo de controle, o CAN utiliza o protocolo
Carrier-Sense Multiple Access/Collision Detection with Non-Destructive Arbitration
(CSMA/CD with NDA),
em português, acesso múltiplo com detecção de portadora e com detecção de colisão com "arbitragem não destrutiva". O que faz o CSMA/CD?
A resposta para essa pergunta pode ser vista abaixo.
O CD indica detecção de colisão. Nesta situação, o nó que está transmitindo consegue escutar o canal,
quando percebe que um outro nó está tentando acessar o meio com uma mensagem de maior prioridade,
a transmissão atual é interrompida e o canal fica livre para mensagem de maior prioridade.
Simultaneamente a isso, o protocolo CSMA entra em ação para determinar em qual momento deve tentar
transmitir a mensagem interrompida, novamente.
Obs.: Existem diversas variações do CSMA e CSMA/CD, no livro do
KUROSE [7]
são indicadas outras referências sobre assunto,
como: Kleinrock, 1975b; Metcalfe, 1976; Lam, 1980; Rom, 1990.
Endereçamento e prioridade das mensagens
O quadro identificador do protocolo CAN tem duas funções essenciais: endereçamento e a indicação da prioridade das mensagens. Diferente de outros tipos redes, no CAN o endereço está disponível apenas nas mensagens e não nos dispositivos. Por exemplo, se nó um estiver transmitindo uma informação sobre a temperatura de um ambiente ou rotação de um motor, através do identificador o barramento tem a informação do endereço e qual das mensagens deve ser transmitida primeiro.
A tabela abaixo apresenta a comparação dos quadros dos identificadores (ID) de duas mensagens que serão transmitidas ao barramento, o ID do nó 15 é o vetor 000 0000 1111 e ID do nó 16 é o vetor 000 0001 1010. Após a comparação bit a bit entre os bits do ID4 ao ID10, observa-se que no ID4 o nó 16 está enviando 1 (recessivo) e o nó 15 está enviando 0 (dominante), por detecção de colisão, a transmissão do nó 16 é interrompida e o barramento fica livre para a mensagem do nó 15, com maior prioridade. O processo é análogo para redes CAN com N nós.
Filtros de aceitação, máscaras e buffers [5][9]
Nesta seção será apresentado a função dos filtros, máscaras e buffers do módulo CAN, o local de processamento de todas as mensagens transmitidas e recebidas no barramento. O módulo CAN é um dos 3 blocos principais do controlador CAN, são eles:
Protocolo SPI: Interface entre o microcontrolador e o controlador CAN.
Lógica de controle e registradores: São utilizados em operações e configuração de dispositivos.
Módulo CAN: É composto pelo CAN protocol engine, máscaras, filtros e buffers de transmissão e recepção.
A figura abaixo apresenta o diagrama de blocos do controlador CAN 2515.
No processo de aceitação, os filtros e máscaras são utilizados para determinar se a mensagem que está no barramento deve ser recebida pelo nó. Em caso de validação, a mensagem será carregada para o buffer de recepção. Em resumo, a máscara irá determinar quais bits do ID da mensagem do barramento serão comparados com o filtro. Após esta etapa, os bits selecionados pela máscaras são comparados com o vetor de bits do filtro. A figura abaixo é uma exemplificação desse processo.
Universidade Federal do Rio de Janeiro - UFRJ
Departamento de Engenharia Eletrônica e de Computação - DEL
Autores: Marina Lacerda, Tamine Alves e Yan Nascimento