Baixe o app para aproveitar ainda mais
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.
Compartilhar