“IMPLEMENTAÇÃO”
INTRODUÇÃO
A segunda parte deste artigo detalhou os principais conceitos do Protocolo CAN. Abordamos a forma de transmissão dos dados, explicamos a lógica de arbitragem não destrutiva e os formatos das mensagens, destacamos as diversas normas existentes e baseadas no CAN Bus e relacionamos os diversos mecanismos de detecção de falhas – por software e hardware – disponíveis no protocolo. Citamos ainda alguns aspectos da implementação de uma rede CAN, destacando o Dicionário de Dados, exemplificando uma rede atualmente aplicada em sistemas automotivos e fornecendo algumas dicas sobre a montagem do cabeamento e terminadores da rede.
Para a terceira e última parte, que aborda a eletrônica embarcada e a sua relação com o Protocolo CAN Bus, reservamos a discussão dos pontos mais relevantes no momento de se projetar e implementar uma rede de comunicação de dados.
Vamos lá !
DETERMINAÇÃO DA ARQUITETURA
Considerando uma determinada aplicação, a primeira tarefa que devemos considerar durante o projeto de sua rede de comunicação de dados é a determinação da sua arquitetura. Neste ponto podemos enfrentar duas situações: ter que estabelecer uma rede de comunicação entre ECUs prontas e que não trabalhem em rede ou, ter que projetar totalmente as ECUs, considerando a leitura das entradas, seus devidos processamentos e atuações nas saídas, além da troca de dados através da rede propriamente dita.
Se tomarmos como ponto de partida uma aplicação onde as ECUs já estiverem prontas, nossa responsabilidade será fundamentalmente disponibilizar as informações de cada ECU no formato determinado pelo Protocolo CAN, além de estabelecer as conexões necessárias à comunicação de dados entre as próprias ECUs. Este cenário pode ser complexo de se lidar uma vez que nem todas as ECUs, da forma como foram originalmente projetadas, serão capazes de, facilmente, fornecer as informações sob sua responsabilidade para que o devido empacotamento no formato CAN seja realizado. De qualquer forma o trabalho é possível.
Se considerarmos uma aplicação onde somente o escopo do sistema que se deseja controlar estiver disponível, apesar de “partir do zero”, poderemos projetar as ECUs já considerando os controladores capazes de, facilmente, estabelecer comunicação fundamentada no protocolo CAN. Seguiremos então por esta linha de raciocínio.
A aplicação sobre a qual trabalharemos será simples. A Figura 1 apresenta a arquitetura proposta.
Figura 1
Esta arquitetura mostra-se extremamente simples. De qualquer forma vale destacar:
· Serão duas ECUs conectadas por uma rede de comunicação CAN Bus, onde ambas terão as mesmas responsabilidades:
· Ler algumas entradas digitais;
· Empacotar estes dados no formato determinado pelo CAN;
· Transmitir estes dados pela rede CAN à outra ECU;
· Receber dados da outra ECU, enviados pela rede CAN, e
· Processar estes dados, comandando as saídas necessárias.
· Através de uma linha de comunicação serial RS232 e um PC, poderemos programar e monitorar o funcionamento de cada ECU.
ANÁLISE DA NORMA RELACIONADA À APLICAÇÃO
Como mencionado na segunda parte desta matéria, existem diversas normas baseadas no protocolo CAN Bus, cada qual relacionada a uma classe de aplicações. Vamos recordar algumas destas normas:
· NMEA 2000: Utilizada em aplicações navais e aéreas.
· SAE J1939: Utilizada em aplicações automotivas.
· DIN 9684 – LBS: Utilizada em aplicações agrícolas.
· ISO 11783: Utilizada em aplicações agrícolas.
Estas normas trazem informações específicas de cada classe de aplicações, como o tipo de cabeamento e conectores necessários e os tipos de mensagens requeridas, entre outras.
Neste nosso desenvolvimento, não nos preocuparemos com uma norma específica. Trataremos simplesmente de projetar uma rede CAN considerando seu padrão de empacotamente de dados e transmissão e, quando necessário, estabelecendo alguns conceitos específicos para a nossa aplicação. O primeiro conceito que deveremos estabelecer é o chamado Dicionário de Dados, já explicado na segunda parte desta matéria.
DETERMINAÇÃO DO DICIONÁRIO DE DADOS
O Dicionário de Dados (D.D.) de uma aplicação pode ser resumidamente descrito como uma tabela que relaciona as mensagens existentes nesta aplicação (seus identificadores e dados) e as ECUs responsáveis por sua transmissão e recepção.
Vamos então estabelecer um D.D. para a nossa aplicação. A Tabela 1 traz as informações importantes ao nosso trabalho.
Analisando a Tabela 1 percebemos que, no nosso Dicionário de Dados:
· A mensagem “1” é chamada de “Estado das Entradas da ECU #1”;
· Ela é transmitida pela ECU #1 (TX) e recebida pela ECU #2 (RX);
· Seu Identificador (ID) tem valor igual a “12345678 hex”;
· Seus Bytes de Dados, excluindo-se o Byte “D #1”, são iguais a “00 hex”;
· Seu Byte de Dados “D #1” depende de algumas regras específicas, onde:
· “XX” será “31 hex” caso uma determinada entrada digital seja igual a “1”
· “XX” será “30 hex” caso esta determinada entrada digital seja igual a “0”
Para as demais mensagens, vale a mesma análise. A única observação que gostaríamos de fazer é que cada Byte de Dados da tabela que tiver seu valor igual a “XX” possuirá uma regra específica, assim como explicado para o Byte de Dados “D #1” da mensagem “1”.
Apesar do nosso D.D. parecer simples, e realmente é, ele demonstra o que efetivamente ocorre em uma aplicação real. Se analisarmos uma aplicação automotiva por exemplo, teremos para ela, mensagens relacionadas ao funcionamento do motor, dos freios ABS e dos sistemas de travamento e alarme, entre outras. Além disso, pela complexidade dos sistemas envolvidos, não somente um byte de dados por mensagem será utilizado (indicando a alteração do estado de uma determinada entrada). Teremos a utilização de todos os oito bytes existentes.
Estabelecido o Dicionário de Dados pertinente à nossa aplicação, resta agora a sua implementação efetiva, que se dá através de um software instalado dentro de cada ECU. Este software é conhecido como firmware (exatamente por trabalhar dentro da ECU).
Antes de abordarmos os softwares relacionados, falaremos sobre o projeto do hardware das ECUs.
PROJETO DO HARDWARE DAS ECUs
Consideraremos ambas as ECUs baseadas no mesmo projeto de hardware - com a mesma quantidade de Entradas e Saídas e uma porta de comunicação serial RS232.
Quando projetamos uma ECU para a sua utilização em uma rede de comunicação de dados baseada no Protocolo CAN Bus, temos duas alternativas tecnológicas em relação à execução do processamento: utilizar um Micro-Controlador (sem CAN) conectado a um Controlador CAN (o que caracteriza dois CIs distintos e interligados) ou utilizar um Micro-Controlador com CAN incorporado.
Quando utilizamos um Micro-Controlador com CAN incorporado, este CI passa a ser responsável não só pela leitura e tratamento das entradas e o acionamento das saídas, como também pelo empacotamento dos dados no formato CAN (além da sua transmissão e recepção).
Quando utilizamos um Micro-Controlador sem CAN (conectando-o a um Controlador CAN específico), este ficará responsável pelo tratamento das entradas e saídas, trocando informações por portas de comunicação específicas com o Controlador CAN, responsável pelo empacotamento dos dados no formato do Protocolo (além da sua transmissão e recepção).
O que determina a utilização de um conceito ou do outro é, basicamente, a disponibilidade e o custo dos componentes. Do ponto de vista da implementação, acreditamos que a utilização de um Micro-Controlador com CAN incorporado seja mais simples, rápida e segura do ponto de vista técnico (especialmente em relação à Compatibilidade Eletro-Magnética).
Existem diversos fabricantes de CIs com vários tipos de Micro-Controladores disponíveis (com CAN e sem CAN incorporado). As Tabelas 2 e 3 mostram alguns fabricantes e seus componentes disponíveis. (ver data sheets para maiores informações)
Micro-Controladores com Controlador CAN |
|
Fabricante |
Componente |
|
|
Infineon |
C167CR-LM |
Intel |
87C196CA |
Microchip |
18Fxx8 |
Motorola |
68376 |
Philips |
P8xC591 |
Tabela 2
Controladores CAN |
|
Fabricante |
Componente |
|
|
Infineon |
81C90 |
Intel |
82527 |
Microchip |
MCP2510 |
Philips |
SJA1000 |
Tabela 3
Nosso projeto do hardware considerará o Micro-Controlador com CAN incorporado P87C591 (Philips).
Além do Micro-Controlador, uma ECU com capacidade de comunicação via CAN precisa ter o chamado Transceiver ou Transmissor-Receptor. Este componente é responsável pela compatibilização dos níveis elétricos requeridos pela rede CAN com os níveis elétricos necessários ao trabalho do Micro-Controlador e vice-versa.
Existem diversos fabricantes de Transceivers CAN. A Tabela 4 mostra alguns fabricantes e seus componentes disponíveis. (ver data sheets para maiores informações)
Transceivers CAN |
|
Fabricante |
Componente |
|
|
Bosch |
CF151 |
Infineon |
TLE6252G |
Philips |
PCA82C250 |
TJA1050 |
Tabela 4
Nosso projeto do hardware considerará o Transceiver PCA82C250 (Philips).
Definidos os dois componentes principais das nossas ECUs, passemos ao entendimento de como conectá-los. A Figura 2 ilustra esta tarefa:
Figura 2
Através de dois fios conseguimos conector o Micro-Controlador ao Transceiver. Além disso, a ECU é conectada à rede CAN por outros dois fios, CAN_H e CAN_L, já mencionados na segunda parte desta matéria. Perceba também, na Figura 2, os dois Terminadores de 124 Ohms. Eles podem estar conectados diretamente ao chicote ou, no nosso caso, onde a aplicação possui somente duas ECUs, um em cada ECU.
Obviamente, na implementação efetiva de cada uma das ECUs, serão necessários outros componentes além dos dois anteriormente mencionados – Micro-Controlador e Transceiver. A Figura 3 mostra o diagrama elétrico das nossas ECUs, agora completas (lembre-se de que o projeto de hardware de ambas é o mesmo !!!).
Figura 3
Por se tratarem de ECUs destinadas ao aprendizado do Protocolo CAN, optamos pelo projeto apresentado, onde a execução de seus programas ocorre nas memórias EPROM e RAM, ao invés da memória interna do Micro-Controlador (neste caso um OTP – “Gravável somente uma vez”). Na memória EPROM gravamos um programa de uma categoria conhecida como Monitor, enquanto que, na memória RAM, gravamos os programas Principais das ECUs.
Vamos agora falar um pouco mais sobre as memórias, suas responsabilidades e os diversos programas envolvidos.
PROJETO DO SOFTWARE DAS ECUs
São dois os tipos de firmware (software executado dentro das ECUs) utilizados no nosso projeto:
· O primeiro é chamado de Monitor. É gravado na memória EPROM, a partir do seu endereço 0000 hex, e passa a ser executado toda vez que a ECU é reinicializada. A função principal deste programa Monitor é possibilitar a gravação e operação do programa Principal da ECU em sua memória RAM. Isto é possível através da operação de comandos do programa Monitor. Para tanto, a ECU precisa estar conectada a um PC via RS232 e, por exemplo, utilizando o aplicativo Hyper Terminal do MS Windows, poderemos transferir o programa Principal da ECU para a sua memória RAM. Qualquer programa Monitor para Micro-Controladores similares ao 8051 poderá ser utilizado neste nosso projeto. Nós utilizamos um dos vários Monitores disponíveis na internet (PAULMON – www.pjrc.com/tech/8051/ - acesso em: 20 Out 2001).
· O segundo é chamado de Principal. É gravado na memória RAM pelo processo descrito anteriormente e passa a ser executado por um dos comandos existentes no programa Monitor, (este comando desvia a execução do Micro-Controlador para a primeira posição de memória ocupada pelo programa Principal – endereço 8000 hex). Este programa Principal é responsável pela leitura e processamento das entradas, ativação das saídas, controle da linha de comunicação serial RS232 e da linha de comunicação CAN Bus.
A Figura 4 mostra a distribuição dos vários programas mencionados e os endereços de início e término das memórias EPROM e RAM.
Figura 4
Ainda sobre o programa Principal, é necessário o desenvolvimento de algumas rotinas que devem realizar as seguintes operações:
· Inicialização da Porta de Comunicação Serial RS232;
· Inicialização da Porta de Comunicação CAN Bus (Baud Rate e os Filtros de Aceitação de Mensagens);
· Rotinas de Transmissão e Recepção via RS232;
· Rotinas de Transmissão e Recepção via CAN Bus;
· Rotina de leitura de uma Entrada Digital;
· Rotina de acionamento de uma Saída Digital.
As rotinas acima mencionadas podem ser escritas em linguagem C e o programa final pode ser compilado com o auxílio de qualquer compilador disponível na internet (por exemplo, o SDCC – Small Device C Compiler – www.sdcc.sourceforge.com - acesso em: 21 Nov 2001).
MONTAGEM DA REDE CAN
Na segunda parte desta matéria foram abordados vários aspectos relacionados à montagem de uma rede CAN. De qualquer forma, preste muita atenção na bitola dos cabos (secção transversal de cada um dos fios deve ser de no mínimo 0,35mm²), e na geometria da rede (medidas que devem ser observadas no desenvolvimento do chicote).
Para a realização de testes de comunicação CAN entre as ECUs descritas neste artigo, sugerimos a utilização de conectores RJ45, facilmente encontrados no mercado.
Para que você tenha uma idéia da aparência de uma ECU montada a partir do projeto aqui apresentado, veja sua foto na Figura 5.
Figura 5
CONSIDERAÇÕES FINAIS
Espero que este artigo possa auxiliar de alguma forma suas atividades profissionais ou que, simplesmente, possibilite a disseminação de alguns conhecimentos que temos sobre um dos Protocolos de Comunicação mais utilizados atualmente – o CAN Bus.