Sei sulla pagina 1di 10

CONTROLLER AREA NETWORK - FUNDAMENTOS

Pedro Venda Instituto Superior Tcnico, Universidade Tcnica de Lisboa Portugal pjlv@mega.ist.utl.pt

Resumo
Conceitos fundamentais, arquitectura, descrio do funcionamento e aplicaes de uma rede do tipo fieldbus denominada CAN, numa perspectiva bottom-up.

remotas e para aplicaes de automao industrial de alta velocidade [2]. A rede CAN um caso particular de um fieldbus. Em geral, uma rede CAN serve para qualquer aplicao onde diversos dispositivos controlados por um micro controlador precisam de comunicar, de forma a completar uma tarefa comum sistemas distribudos. Nas aplicaes distribudas crticas, os requisitos de elevada fiabilidade, tempo-real e confinamento de faltas tornam a utilizao de CAN uma alternativa vivel de comunicao entre os diversos dispositivos do sistema, tanto em termos de segurana na utilizao como em termos de fornecimento fivel de servios crticos a humanos. Exemplos dos casos mais crticos incluem dispositivos de segurana activa em automveis ou aplicaes de sistemas distribudos na medicina [3]. Actualmente as redes CAN so utilizadas nos mais diversos ramos da tecnologia [3,4]: Indstria automvel (In-Vehicle Network (IVN) para aplicaes de funcionamento interno e, por exemplo, para comunicao com reboques); Transportes pblicos e controlo de trfego; Indstria aeronutica; Maquinaria mvel (controlo remoto e comunicao entre subsistemas internos); Automao e controlo de sistemas industriais; Dispositivos de gesto de edifcios (controlo de temperatura, portas, ventilao, elevadores, escadas rolantes, etc.); Equipamento e dispositivos utilizados em medicina; Sistemas no industriais (mquinas de vendas e de jogos, fotocopiadoras e impressoras de alta qualidade, subsistemas de mquinas de interaco bancria, comunicao entre microscpios, etc)

Palavras chave
fieldbus, CAN, Sistemas distribudos, CANOpen, CiA, Controller Area Network;

1. Introduo
Foi aps 3 anos de desenvolvimento que, no ms de Fevereiro de 1986 em Detroit, Robert Bosch apresentou um sistema de interligao de dispositivos numa rede de acesso mltiplo a um meio partilhado, denominado Controller Area Network (CAN). A primeira implementao do sistema surgiu um ano depois pela Intel e desde ento tem-se observado uma evoluo significativa do hardware e do software que suportam o funcionamento da rede.

2. Motivao
O sistema foi desenhado com vista na aplicao directa na indstria automvel, dado que, na altura, nenhum dos outros sistemas de comunicao do tipo fieldbus cumpria por si s os requisitos dos engenheiros da Bosch. As caractersticas essenciais da rede CAN, que no seu todo tornaram necessrio o seu desenvolvimento, so [1]: Difuso de mensagens transmitidas; Identificao de mensagens e no de ns; Acesso mltiplo ao bus (partilhado); Acordo mtuo, no destrutivo e sem atrasos de acesso de escrita no bus (evita colises); Definio de prioridades nas mensagens; Mltipla deteco de erros (confinamento de faltas); Retransmisso automtica de mensagens corrompidas;

3. Arquitectura do sistema de comunicao


Face ao modelo ISO Open Systems Interconnection (OSI), a especificao da rede CAN descreve apenas a camada fsica e a camada de ligao de dados (figura 1), ambas implementadas em hardware. Para facilitar a programao, e devido aos diferentes cenrios de utilizao, foram desenvolvidas diversas camadas de software que se posicionam na camada de aplicao.

Um fieldbus uma ligao mltipla de duas vias entre dispositivos de medida e/ou de controlo. uma rede de rea local - Local Area Network (LAN) geralmente utilizada para processos de controlo, entradas/sadas

Camadas do Modelo OSI 7 - Aplicao 6 - Apresentao 5 - Sesso 4 - Transporte 3 - Rede 2 Ligao de dados 1 Fsica

Camadas implementadas em redes CAN

7 - Aplicao

dos bits. Para ultrapassar este problema, recorre-se ao bit stuffing. Durante a utilizao do bus, so permitidos no mximo cinco bits consecutivos da mesma polaridade. Caso o n pretenda transmitir mais do que o permitido, so introduzidos stuff-bits de polaridade inversa (pela camada de ligao de dados), de forma a garantir que de facto no existam mais do que cinco bits com a mesma polaridade1 no bus (figura 3). No pior caso, o stuffing adiciona bits no informativos num rcio de um stuff-bit para quatro bits de informao [5].

2 Ligao de dados 1 Fsica

Figura 1 Modelo de camadas OSI e CAN.

4. Camada fsica
A camada fsica de um sistema de comunicao cobre os aspectos da transmisso fsica dos dados (bits) entre os ns da rede. Desta camada destacam-se trs sub-camadas [5]: Physical signaling (PLS), implementada no controlador CAN o Codificao/descodificao de bits; o Timing dos bits; o Sincronizao entre ns; Physical Medium Attachment (PMA) o Caractersticas do transceiver; Medium Dependent Interface (MDI) o Caractersticas do meio de transmisso (cabo, fichas, etc);
Figura 3 Exemplo de bit stuffing numa stream de bits [5].

Timing: Cada n CAN opera em sincronia com um oscilador que gera um sinal de frequncia prprogramada. A cada conjunto de n perodos dessa frequncia d-se o nome de time-quantum (Tq), sendo o tempo de transmisso de cada bit (bit-time) definido como mltiplo de Tq. De facto, o bit-time subdivide-se em quatro segmentos distintos, cada um deles com durao mltipla de Tq. Existe um segmento de sincronizao com durao de 1 Tq, um segmento de propagao com 1 a 8 Tq e dois segmentos de fase com 1 a 8 Tq cada (figura 4) [5,6].

Codificao: Uma stream (figura 2) de bits num bus CAN codificada em non return to zero (NRZ), ou seja, na banda de base. Durante o tempo em que um n transmite um bit, o bus pode estar num estado recessivo ou dominante, de acordo com o bit a ser transmitido. De facto, o bus tem trs nveis lgicos: o estado dominante, o estado recessivo e o estado idle, onde nenhum n est a transmitir [5].
V 5V Bit 1 0V Bit 2 Bit 3 Bit 4 Nivel recessivo Bit 5 Bit 6 t

Figura 4 Esquema do timing de um bit.

O comprimento dos segmentos de propagao e de fase programvel, onde o dos segmentos de fase pode ser reajustado durante resincronizaes. No total o bit-time dura entre 8 a 25 Tq. Finalmente, o transceiver do n CAN amostra o nvel do bus aproximadamente a do bit-time [5,6]. Sincronizao de ns: Um n sincronizado com o bus est dessincronizado com o emissor devido aos tempos de propagao. Numa rede CAN, um transmissor que envia um bit recessivo tem que ter a possibilidade de receber um bit dominante enviado por um n sincronizado com o bus (e.g. ACK bit). Para tal, necessrio estender o bittime ao longo destes quatro segmentos para garantir a coerncia entre todos os ns da rede [7].

Nivel dominante

Figura 2 Exemplo de stream de bits transmitidos, codificados em NRZ.

A no implicao de uma mudana de estado no bus para cada bit transmitido dificulta a sincronizao entre os ns, devido codificao utilizada. No caso de uma sequncia de bits iguais (recessivos ou dominantes), os ns podem ter dificuldades na sincronizao entre si podem no reconhecer os limites

Existem partes da trama, que vem da camada superior (ligao de dados), que no tm de obedecer regra de stuffing.

O segmento de sincronizao utilizado pelos vrios ns para uma sincronizao inicial se existirem, as variaes de estado do bus ocorrem durante este segmento. O segmento de propagao prev a existncia de um atraso de propagao e de processamento entre os vrios ns da rede, que medeia a chegada do bit a cada um dos ns, e usado para compensar esses atrasos. O instante entre os dois segmentos de fase (segmentos finais) define o instante de amostragem do bus [7]. Este elaborado esquema de timing serve para cada um dos ns esperar pelos atrasos dos sinais e pela estabilizao do bit antes de amostrar o bus e determinar que tipo de bit est no canal [6]. No caso de um n detectar uma variao do nvel do bus fora do segmento de sincronizao, as duraes dos segmentos de fase so reprogramadas na altura, de forma a variar o instante de amostragem e garantir uma amostragem mais fivel. Em caso de avano do bit, a durao do primeiro segmento de fase encurtada num valor programado Resyncronization Jump Width (RJW), e no caso de um atraso da transio, a durao do segundo segmento de sincronizao alargada em RJW. A este mecanismo chama-se soft-syncronization e s ocorre uma vez em cada bit [5]. Em qualquer caso, a soma de todos os atrasos (processamento e propagao) do n mais distante tem que ser menor do que o segmento de propagao. Este detalhe de sincronizao vem limitar a relao ritmo de transmisso/comprimento do bus (figura 5) [5].

estados de actividade: idle, bit recessivo e bit dominante. Estes estados so definidos pelas tenses diferenciais introduzidas/medidas na linha (VCAN_H VCAN_L) pelos ns. Esta natureza diferencial da medida minimiza interferncias electromagnticas, dado que os dois fios do bus estaro fisicamente perto um do outro e, na presena de interferncia, os efeitos sentidos em ambos sero semelhantes. Como a tenso medida diferencialmente, o valor dessa interferncia desaparece [5].

Figura 6 Topologia de uma rede CAN [6].

Dentro de um n CAN, o transceiver (figura 7) responsvel pela deteco e sinalizao ao controlador de vrios tipos de falhas no bus. Existem transceivers tolerantes a falhas que permitem um modo de operao single-wire a uma relao sinal-rudo reduzida, de forma a tolerar vrias faltas do bus, como curto-circuitos entre as linhas CAN_H e CAN_L, entre as tenses de alimentao e as linhas ou ainda circuitos abertos em alguma linha [5].

Figura 7 N CAN [5].

Figura 5 Limitao da relao ritmo de transferncia/comprimento do bus [5].

Finalmente, e para terminar a descrio da camada fsica, existe a possibilidade de que o bus seja ligado a transmissores RF ou infra-vermelhos como meio de estabelecimento de ligaes de/ou para outras redes CAN [5].

5. Implementao em hardware:
Quanto maior for o bus, mais significativos so os atrasos de propagao e maior tem que ser o bit-time, reduzindo o ritmo de transmisso mximo. ainda possvel a utilizao de bridges e repetidores para estender o comprimento mximo do bus imposto [5]. O standard ISO 11898-2 define o bus como uma linha bifilar simples para minimizar as reflexes, terminada nas extremidades com resistncias (figura 6). A linha tem trs A implementao de um n CAN em hardware cobre a camada fsica, como j foi referido, e tambm a camada de ligao de dados. O hardware presente em cada n pode ser dividido em trs blocos funcionais (figura 8): o transceiver, o controlador CAN e o micro-processador.

Figura 8 Blocos funcionais de um n CAN [8].

verses. Para isso foram diferenciadas trs especificaes do protocolo da ligao de dados: protocolo 2.0A, 2.0B passivo e 2.0B activo. Destes, apenas o protocolo 2.0B activo consegue receber e transmitir de forma transparente as mensagens das duas verses. O protocolo 2.0B passivo consegue receber as mensagens das duas verses mas apenas transmite mensagens standard, enquanto que o protocolo 2.0A descarta todas as mensagens extended recebidas porque as reconhece como erros [9]. Filtro de aceitao de mensagens: Na subcamada LLC da DLL existe um mecanismo que filtra as mensagens que recebe, ou seja, existe uma ou vrias mscaras de bits de comprimento varivel que so sobrepostas (AND) com os n primeiros bits do identificador da mensagem, de forma a decidir se a mensagem entregue camada acima ou descartada. Este mecanismo programvel pelas camadas superiores ou, em ultima anlise, pelo utilizador [9]. Funcionalidades adicionais: Na implementao do controlador, existe a possibilidade de incluir funes no previstas na espeficicao, tais como: contadores (adicionais) de erros, timestamps nas mensagens, limites de aviso programveis, gerao de pedidos de interrupo, estado de consumo reduzido e contadores de mensagens sem erros [9]. Serializao/encapsulamento, desserializao/desencapsulamento: Ao receber informao da camada superior, a subcamada MAC da DLL tem que serializar e encapsular a informao, ou seja, preciso transformar cada byte recebido numa sequncia de bits, para possibilitar a transmisso em srie no bus. Essa sequncia de bits ento segmentada e cada segmento inserido numa mensagem criada para o receber [9]. Stuffing/destuffing: Sempre que o transmissor detectar a presena de 5 bits consecutivos da mesma polaridade numa stream de bits (aps a serializao), introduz um bit de polaridade inversa que vai ser automaticamente removido pelos receptores (figura 3) [9]. Esta regra de stuffing pode ser utilizada para uma verificao de integridade. Na construo de uma mensagem, o n transmissor preenche o cabealho e a terminao, executa o processo de stuffing em determinadas zonas da mensagem e calcula o CRC (referido mais tarde). Nesta altura, a mensagem est pronta para ser enviada. Nos ns receptores o processo inverso. Aps a recepo da mensagem sem erros detectados no bus, ela destuffed, os campos de correco de erros so verificados, passa pelo filtro de aceitao e, caso seja essa a deciso, os bits podem ser novamente agrupados em bytes e enviados camada acima.

Em particular, a camada fsica implementada no transceiver e no exterior do n (tomada, ficha, cabo, etc) e a camada de ligao de dados est no controlador. O papel do micro-controlador no protocolo de comunicaes a implementao das camadas superiores pretendidas pelo utilizador atravs da programao do software adequado. Este bloco (micro-controlador) pode ser dedicado ao interface de comunicao do n ou partilhado por outros perifricos, enquanto que todos os outros blocos se dedicam exclusivamente s suas funes no protocolo de comunicao. Um n CAN pode ter os trs blocos funcionais implementados separadamente ou integrados em diversas formas. Cada soluo de integrao tem vantagens e desvantagens face s outras, mas a que parece ser mais popular aquela em que o controlador CAN est integrado no micro-controlador, com o transceiver independente [8].

6. Camada de ligao de dados


A camada de ligao de dados - Data Link Layer (DLL) impe o formato das mensagens que viajam no bus e fornece mecanismos de deteco e preveno de falhas. Existe uma subdiviso desta camada de forma a distinguir nveis de servio fornecidos [9]: Logical Link Control (LLC) o Filtro de aceitao de mensagens; o Notificao de overload; o Gesto de recuperao de mensagens ou de situaes de erro; Medium Access Control (MAC) o Encapsulamento/desencapsulamento dos dados nas mensagens; o Codificao das mensagens (stuffing/destuffing); o Gesto de acesso ao meio; o Deteco e sinalizao de erros; o Confirmao da integridade das mensagens (acknowledge); o Serializao/Desserializao da informao;

Verses: Actualmente existem duas verses de mensagens especificadas: mensagens standard e extended. Por este motivo, o hardware pode eventualmente ser implementado tendo em conta as duas

Difuso: O conceito de difuso da rede CAN significa que todos os ns vem as mensagens transmitidas por qualquer um deles (figura 9). Aps a recepo de cada mensagem, cabe aos ns a deciso de descarte ou entrega da mensagem [9].

transceiver garante que um bit dominante permanece no bus em detrimento de um bit recessivo [9] (figura 10).

Figura 10 Ausncia de colises por utilizao de CSMA/DCR [6]. Figura 9 Difuso de mensagens [9].

Remote frame handling: A maioria das implementaes com armazenamento de objectos transmitidos (FullCAN) integra um mecanismo de retransmisso de mensagens Remote Transmission Request (RTR) - por pedido de outros ns. Dependendo da arquitectura do controlador, esta retransmisso pode ser feita por autorizao do CPU, sem conhecimento do CPU ou com conhecimento/autorizao opcional do CPU [9]. O mtodo utilizado para a retransmisso semelhante a um processo de pergunta/resposta: o n interessado envia uma trama do tipo remote frame request (pergunta) onde especifica a mensagem em que est interessado. Esta trama ser eventualmente recebida por algum n que ainda tenha a mensagem. Este n responde ento com a mensagem pretendida. A mensagem reenviada pode tambm ser recebida por outros ns interessados. Os remote frame requests so claramente distinguveis das mensagens de dados por uma flag explicitamente assinalada e pelo facto de no conterem dados [9]. Acesso mltiplo: Um dos requisitos de uma rede CAN a possibilidade de acesso mltiplo ao bus, ou seja, vrios ns podem ler do bus ao mesmo tempo mas, para evitar colises (dois ou mais ns a enviar ao mesmo tempo uma mensagem diferente, o que resultaria numa mensagem invlida), preciso um mecanismo de prioridades. O mecanismo utilizado o Carrier Sense Multiple Access/Deterministic Collision Resolution (CSMA/DCR) [9]. Cada mensagem leva consigo um identificador, uma identidade que atrbuida pelo n. Quando o bus est em estado idle, vrios ns podem iniciar as suas transmisses ao mesmo tempo. Cada n l do bus a cada bit que envia e compara os valores. Caso o bit que o n tenha tentado escrever seja recessivo, ser lido do bus um bit recessivo se e s se todos os ns que esto a transmitir na altura estiverem a enviar um bit recessivo. Por definio, o

Durante a transmisso do identificador da mensagem, o algoritmo CSMA/DCR decide de forma unvoca, no destrutiva e sem atrasos ou retransmisses quem transmite ou no a mensagem. No funcionamento do algoritmo CSMA/DCR em que n ns tentam escrever no bus, e assumindo que todos tentam enviar mensagens diferentes, n-1 ns vo desistir de transmitir a mensagem para que o restante n possa transmitir a dele. Depois da transmisso da mensagem do n que ganhou o bus, os outros ns tentam novamente transmitir as suas mensagens. Com a utilizao do algoritmo CSMA/DCR, possvel estabelecer ordens de prioridade nas mensagens, porque estas tm identificadores programveis [6,9]. A figura 10 mostra um exemplo de funcionamento do algoritmo CSMA/DCR. O caso descrito mostra trs ns (1,k,n) a tentar enviar uma mensagem a dada altura. No bit 7, o n 1 percebe que enviou um bit recessivo mas leu do bus um bit dominante e desiste de enviar a sua mensagem fica em modo de escuta apenas. No bit 3, o n n tambm entende que enviou um bit recessivo mas leu um bit dominante. Tambm este n desiste de transmitir a mensagem. Desta forma, o n k prevalece e transmite a sua mensagem. Servios de comunicao fornecidos pelo protocolo CAN: O protocolo CAN especifica dois servios de comunicao: o servio write-object e o servio readobject. O servio write-object o servio que escreve uma mensagem de um n (emissor) para o bus e, consequentemente, para todos os ns a ele ligados (servio bsico do protocolo). Este servio no implica que algum n esteja interessado na mensagem [9]. O servio read-object o complementar do anterior e iniciado pelo facto de um receptor interessado numa trama transmitir uma mensagem de RTR com a identificao dessa trama. Se algum n tiver os dados pretendidos, envia de volta a trama correspondente [9].

Data frame: At agora referenciadas genericamente como mensagens, as tramas de dados (data frames) so as unidades de comunicao entre as camadas de ligao de dados dos vrios ns [9] (figura 11).

Figura 11 Trama de dados [9].

Sempre que um n pretende enviar dados para o bus, f-lo atravs do encapsulamento da informao em uma ou mais tramas, em que cada uma pode transportar 1 a 8 bytes de informao. O data frame comea com um bit Start of Frame (SoF) para hard synchronization em todos os ns. Depois do SoF est o campo de identificao (arbitration field) que identifica a prioridade e o contedo da mensagem. O campo de controlo (control field) especifica o comprimento em bytes da mensagem. O campo de dados (data field) contm a informao propriamente dita e o campo de CRC (cyclic redundancy check) guarda informao redundante para deteco de erros em determinadas zonas da trama. O campo de confirmao (Acknowledge field - ACK) utilizado para o transmissor entender se pelo menos um n recebeu a mensagem sem erros de bus. A mensagem terminada pelo End of Frame (EoF). Actualmente, existem dois tipos de tramas: standard data frames e extended data frames. Os dois tipos diferem no significado de algumas flags e no comprimento do campo de identificao. Entre duas mensagens sequenciais existe um conjunto de trs bits recessivos a que se chama Intermission Frame Space [9]. O bit SoF foi em tempos utilizado para uma sincronizao forada, mas as especificaes mais recentes tornam essa sincronizao desnecessria. O campo de identificao (figura 12) utilizado pelo algoritmo CSMA/DCR para determinar o n a transmitir a mensagem. O bit final do campo de identificao Remote Transmission Request (RTR) utilizado no estado recessivo para marcar as mensagens como RTRs. O bit seguinte Identifier Extension (IDE) serve para distinguir mensagens standard de extended. A mensagem standard tem o bit IDE dominante para que, em caso de transmisso simultnea, a mensagem standard prevalea [9].
Trama standard
Arbitration Field 12 bit

dominante, o n entende-o como o bit rv1 do campo de controlo de uma mensagem standard. Se o bit for recessivo, ento a trama extended e o bit o bit IDE do arbitration field aps o Substitute Remote Request (SRR), que transmitido recessivo. Para terminar o campo de identificao das mensagens extended, existe ainda um campo de identificao extra de 18 bits e 1 bit RTR (verdadeiro), totalizando 32 bits de comprimento para este campo (11+SRR+IDE+18+RTR). O campo de controlo (figura 13) semelhante nos dois tipos de mensagem. Os dois primeiros bits so dominantes e os ltimos quatro especificam o comprimento do campo de dados (em bytes) Data Length Code (DLC). Dado que o campo de dados tem de 1 a 8 bytes, os restantes valores do DLC (9F) podem ser usados livremente (como o controlador for programado) [9].
Control Field
6 bit

rv1
1 bit

rv0
1 bit

DLC
4 bit

Figura 13 Campo de controlo.

O campo de dados Data Field leva a informao na mensagem num comprimento entre 0 e 8 bytes (64 bits). O campo de CRC composto por uma sequncia CRC de 15 bits e um bit limitador recessivo (CRC delimiter). A sequncia CRC usada provm de um cdigo de hamming de distncia mnima de 6, o que significa que possibilita a deteco de 15 erros no mximo ou a correco de 1 a 5 erros espalhados aleatoriamente dentro dos bits protegidos pelo CRC [9]. O campo de ACK (figura 14) utilizado para que o emissor saiba se pelo menos um n na rede recebeu a mensagem livre de erros at ao momento. Este composto por dois bits: ACK Slot e ACK delimiter. O transmissor envia ambos os bits recessivos e cada receptor que tenha recebido a mensagem correctamente at ao campo de ACK, envia um ACK slot dominante. Se o transmissor percebe que enviou um ACK delimiter recessivo mas detectou um bit dominante no bus, sabe que pelo menos um n enviou um ACK delimiter dominante esse n recebeu a mensagem correctamente at a. Finalmente, o campo EoF composto por sete bits recessivos e foi introduzido para garantir que, se algum n enviar uma error flag, essa flag fica contida dentro da mensagem [9].
CRC Field
16 bit

CRC Sequence
15 bit

CRC Delimiter
1 bit

Base identifier
11 bit

RTR
1 bit

Figura 14 Campo de CRC. Tratamento de erros: Cabe aos dispositivos fsicos e s camadas de hardware a introduo de mecanismos de tolerncia a falhas na comunicao. Num dado n (n k), o tratamento de erros processa-se da seguinte forma [9]: 1. o n k detecta o erro local; 2. enviada uma error flag para globalizar o erro 6 bits da mesma polaridade para forar um erro de stuffing nos outros ns;

Trama extended
Arbitration Field 32 bit

Base Identifier
11 bit

SRR
1 bit

IDE
1 bit

Identifier extension
18 bit

RTR
1 bit

Figura 12 Diferena entre tramas de dados standard e extended.

At ocorrncia do bit IDE, o n no sabe ainda se a trama extended ou standard. Se o bit IDE for

3. 4. 5. 6.

depois da error flag enviada uma overlapping error flag, seguida de um error delimiter; a mensagem descartada em todos os ns; os contadores de erro so incrementados em todos os ns; a transmisso repetida automaticamente;

Figura 17 rea da trama em que ocorre monitorizao de bits [9].

Os erros so portanto assinalados e globalizados assim que so detectados. Atravs deste processo de tratamento de erros, caso nenhum n esteja em estado passivo ou em bus off, a coerncia dos dados garantida, parte de um efeito pernicioso no bit final da mensagem [6]. Na ocorrncia de um erro, enviada uma trama de erro activa (active error frame) (figura 15). A error flag uma sequncia de 6 bits dominantes (para um n no estado activo) e seguida de sobreposies de error flags dos outros ns, pois possvel que nem todos detectem o erro exactamente no mesmo bit. Finalmente, existe o delimitador do erro error delimiter que composto por 8 bits recessivos e permite aos ns recomear a transmisso aps a ocorrncia de um erro. Depois da active error frame, esperado um interframe space de 3 bits como se a trama de erro fosse uma mensagem [9].

erro de CRC: o transmissor calcula o campo de CRC sobre as zonas da trama protegidas e envia essa informao na mensagem. Os receptores voltam a calcular o CRC e comparam o resultado com o campo que receberam. Nos ns em o resultado no corresponda ao CRC recebido na mensagem, esta descartada (no h correco de erros) e uma trama de erro activa gerada a seguir ao ACK delimiter (figura 18) [9];

Figura 18 rea da trama protegida pelo campo de CRC [9].

Figura 15 Trama de erro activa [9].

Os erros que podem surgir e que causar a gerao de uma trama de erro so: erros de stuffing: quando um receptor detecta uma sequncia de mais do que 5 bits da mesma polaridade nas zonas da mensagem protegidas pela regra de stuffing [9] (figura 16);

erro de ACK: quando o transmissor envia a mensagem e monitoriza o bus, envia um bit recessivo no ACK delimiter e espera receber um bit dominante do bus (no mesmo bit-time), pois qualquer receptor que tenha recebido a mensagem correctamente envia um bit dominante. Caso o transmissor no detecte este bit recessivo, nenhum receptor recebeu a mensagem sem erros e gerada uma trama de erro activa a seguir ao ACK delimiter [9]; erro de forma (form error): Se o transmissor encontra um bit dominante no CRC delimiter, um bit recessivo no ACK delimiter ou um bit dominante ao longo de todo o EoF, ocorreu um erro que viola o formato da trama em bits cujo estado no varia entre mensagens. Tambm neste caso gerada uma trama de erro activa [9];

Figura 16 rea da trama a ser stuffed [9].

erros de bit: quando um n escreve uma sequncia de bits no bus, ele l o estado do bus ao mesmo tempo. Quando o n l do bus um estado diferente do estado do bit que ele tenta transmitir, detecta um erro de bit. Se este erro de bit ocorrer nas zonas da mensagem em que no podem haver colises, o erro assinalado e globalizado no bus [9] (figura 17);

Apesar destes mtodos de deteco de erros, possvel que existam erros no detectados no bus. Estima-se que a probabilidade da ocorrncia de erros no detectados em tramas standard seja dada pela seguinte frmula emprica: < 4.7 1011 error _ rate . Por exemplo, com um erro a cada 0.7s e um ritmo de transmisso de 500kbps, obtmse um erro no detectado por cada mil anos. Esta probabilidade aumenta para tramas extended [9]. Para distinguir entre falhas temporrias (interferncias ou outros erros temporrios) e falhas permanentes (n defeituoso ou ligao defeituosa ao n, etc), so utilizados os contadores de erro (Transmit Error Counter (TEC) e Receive Error Counter (REC)) para alterar o estado do n [9] (figura 19):

Todos os ns iniciam a actividade no estado activo; Os contadores so incrementados e decrementados respectivamente na deteco de erros e nas transmisses ou recepes correctas; Quando um dos contadores passa por um threshold (programado ou no), muda para o estado passivo; No estado passivo, os contadores continuam a ser incrementados ou decrementados e, se forem novamente inferiores ao threshold, o n volta a estar no estado activo. Neste caso existe uma elevada taxa de erros, mas aparentemente o n em questo consegue enviar e receber correctamente as mensagens. Neste estado passivo, os ns apenas conseguem enviar tramas de erro passivas (passive error frames), em que os bits da error flag e sobreposies so recessivos, e portanto no conseguem interromper outras transmisses. Alm disso, os ns em estado passivo tm que esperar um tempo adicional de 8 bits entre transmisses sucessivas. Quando um n entra em estado passivo, a coerncia dos dados deixa de ser garantida; No caso de falha da ligao ao bus ou de falha do controlador CAN, ou at no caso de acumulao extrema de erros, os contadores aumentam acima de um outro threshold e a entram num estado de bus off em que apenas conseguem receber informao. Para sair deste estado, preciso impor um reset e receber uma sequncia de 128 11 bits recessivos;

se prepare para enviar uma mensagem tem que atrasar o incio da sua transmisso [9]. Erros locais no EoF: Na ocorrncia de erros durante a transmisso/recepo do EoF (neste campo da mensagem apenas podem ocorrer erros de bit), os ns procedem da seguinte forma: O transmissor considera a mensagem vlida se no houver erros de bit at ao fim do EoF. O receptor considera a mensagem vlida se no encontrar erros de bit at ao penltimo bit do EoF (inclusive). Um receptor que tenha detectado um erro no stimo bit do EoF no transmite a trama de erro nem incrementa os contadores de erro (no considera o erro), mas envia uma trama de overload que comea no interframe space [9]. Duplicao de mensagens: No caso da ocorrncia de um erro local no ltimo bit do EoF no transmissor ou no penltimo bit do EoF num receptor, existe a possibilidade da duplicao da mensagem. Em particular, existe um caso pernicioso em que num n receptor k existe de facto um erro local no penltmo bit do EoF. No ltimo bit do EoF, este n inicia a transmisso de uma trama de erro activa que vista pelo transmissor t como tal. Entretanto, um outro receptor n no sofreu a interferncia que deu origem ao erro no penltimo bit do EoF e v este bit recessivo (como devia ser), embora receba no ltimo bit do EoF o incio da trama de erro activa, iniciada pelo n k. Como este erro ignorado (pelo receptor n), o n acaba por ficar com a mensagem intacta e inicia a transmisso de uma trama de overload. No cenrio final, o n t transmite duas vezes a mensagem, o n n recebe a mensagem duas vezes e o n k recebe-a uma vez. Para evitar problemas relacionados com a duplicao de mensagens, a especificao da CiA aconselha a no utilizao de mensagens do tipo toggle (muda de estado), a no utilizao de mensagens de comando relativas (varia 10 graus,avana 10 metros, etc) e, para prevenir inverses de ordem, aconselha tambm a utilizao de nmeros de sequncia nas mensagens [9]. Estes conselhos tero que ser postos em prtica nas camadas superiores do protocolo e podem vir a garantir, por exemplo, difuso FIFO (FIFO broadcasting).

Figura 19 Diagrama de estados de um n CAN, face ocorrncia de erros temporrios ou permanentes [9].

7. Camada de aplicao
A famlia de protocolos CANOpen especifica standards para mecanismos de comunicao e funcionalidades dos dispositivos. A especificao cobre na sua maior parte a camada de aplicao, definindo a um perfil de comunicaes e frameworks para a programao dos dispositivos, mas define tambm recomendaes para as camadas fsica (cabos e fichas) e ligao de dados [10]. Desenvolvida pela CiA, a camada CANOpen foi implementada originalmente para utilizao em sistemas de controlo industrial. Neste momento, CANOpen tem

Overload flag: A trama de overload em tudo igual trama de erro activa, mas no incrementa os contadores de erro e enviada quando um n no est pronto para iniciar a recepo da prxima mensagem, ou se durante o intermission space um dos primeiros dois bits dominante. A outra condio de overload quando um receptor recebe um bit dominante na stima posio do EoF; este bit no considerado um erro mas o receptor pode ter perdido a sincronizao e inicia a transmisso de uma trama de overload. Neste caso, um transmissor que

um leque variado de campos de aplicao, como equipamento mdico, automao de edifcios, electrnica na aeronutica, etc [10]. O sistema de comunicao definido pela sigla CANOpen pode ser descrito de forma semelhante ao modelo OSI, em que existe uma camada de aplicao e um perfil de comunicaes standard, apoiada nas camadas fsica e de ligao de dados de uma rede CAN [10]. Ao nvel da camada de aplicao, o protocolo CANOpen troca entre si objectos de comunicao e aplicao (figura 20) [10].

Service Data Objects (SDO): acesso de leitura e escrita em dicionrios remotos; Objectos de funo especfica: mensagens de sincronizao, de temporizao e de emergncia; Network Management Objects (NMT): fornecem servios para a inicializao da rede, controlo de erros e controlo de status dos ns;

A comunicao por PDOs do tipo difuso (figura 22) em que, por deciso prpria ou por pedido de outro n, o transmissor difunde um PDO para o bus. O PDO consiste numa s trama de dados da DLL (pode transportar at 8 bytes de informao) e no disponibiliza confirmao de entrega [10].

Figura 22 Esquema de transmisso de um PDO [10].

Figura 20 Topologia dos dados trocados na camada de


aplicao [10].

Um dispositivo CANOpen est dividido em trs blocos fundamentais (figura 21): [10] Protocolo e interface de comunicao; Dicionrio de objectos; Interface e programa de aplicao;

O SDO utilizado para o acesso remoto de entradas do dicionrio de objectos. A topologia da comunicao do tipo cliente-servidor, em que o cliente pede o acesso (de leitura e/ou escrita) ao dicionrio remoto com um SDO e o servidor responde com outro SDO (figura 23). Um SDO pode transferir dados de qualquer tamanho atravs de sequncias de segmentos [10].

O interface de comunicao fornece os servios de transmisso e recepo de objectos entre ns do bus. O dicionrio de objectos descreve todos os tipos de dados, objectos de comunicao e objectos de aplicao utilizados numa implementao. O programa de aplicao disponibiliza a funcionalidade de controlo interno e o interface com o hardware dos dispositivos [10].

Figura 23 Esquema de transmisso de um SDO [10].

Figura 21 Blocos funcionais da camada CANOpen [10].

O objecto de sincronizao (SYNC) difundido por um n sincronizador com o fim de conseguir realizar tarefas periodicamente ou em instantes definidos. Para garantir a sincronizao, o SYNC difundido numa trama de ligao de dados com uma prioridade muito alta. Uma aplicao que envolve a utilizao de SYNCs , por exemplo, a transmisso peridica de PDOs de um n que recolhe dados de um sensor (polling) [10]. O timestamp um objecto transmitido em difuso e tambm utilizado para obter sincronizao entre ns. Em redes grandes com ritmos de transmisso reduzidos, algumas aplicaes crticas requerem sincronizaes muito precisas, necessitando ento de timestamps. A prioridade deste objecto tambm elevada, para minimizar o atraso de transmisso [10].

Interface de comunicao: Os vrios tipos de objectos de comunicao utilizados esto classificados por funcionalidade [10]: Process Data Objects (PDO): transferncia de dados em tempo real;

As mensagens de emergncia so difundidas uma s vez, com alta prioridade, pelos ns nos quais ocorrem situaes de erro fatais, de forma a avisar os restantes ns [10]. A utilizao dos NMTs prende-se com a gesto da rede e adopta uma topologia do tipo cliente-servidor, com servidor fixo. A gesto da rede envolve servios de controlo de erros, servios de configurao de ns remotos e servios de inicializao [10]. Dicionrio de objectos: O bloco mais importante de um dispositivo CANOpen o dicionrio de objectos, composto por um grupo ordenado de definies de objectos acessveis pela rede. Cada n da rede tem o seu dicionrio que utiliza para interagir com os outros ns, atravs dos objectos de comunicao j descritos. Cada dicionrio tem grupos de objectos standard, grupos de objectos definidos para o ambiente de utilizao pretendido (geralmente definidos pelos fabricantes em standards pblicos), e ainda grupos de objectos a definir pelo utilizador [10]. No dicionrio, esto os objectos de comunicao, os tipos de dados que os ns podem trocar entre si, os objectos de erro, etc. Sempre que um n pretende executar uma tarefa, qualquer que ela seja, tem de retirar a informao a tratar do dicionrio, chamar o objecto de comunicao adequado do dicionrio e, opcionalmente, verificar o sucesso da sua tarefa atravs de um outro acesso ao seu dicionrio ou a um dicionrio remoto. Interface de aplicao: Este o bloco da camada CANOpen mais prxima do hardware. Neste nvel, os fabricantes definem perfis de objectos aplicveis aos diversos cenrios de utilizao. Os perfis so compostos por conjuntos de objectos de aplicao suportados, objectos de erro (cdigos e mensagens) e tipos de dados. Cada perfil aplicado no dicionrio de objectos e define de forma grosseira a funo da rede no ambiente em que esta se insere. Por exemplo, existem perfis de servos e controlo de movimento, interface pessoa-mquina, dispositivos de medida, codificadores, etc. [10]. Atravs da utilizao da famlia de protocolos CANOpen e da escolha adequada do perfil de objectos, a comunicao entre os ns de rede torna-se muito simplificada e permite a interaco de dispositivos desenvolvidos separadamente.

abertura de vidros elctricos num automvel at aplicaes crticas utilizadas, por exemplo, em medicina, a rede CAN mostra-se verstil e tolerante a erros de forma a garantir o seu funcionamento fivel. A rede CAN o fieldbus preferido pela indstria (figura 24), tornando natural o desenvolvimento de dispositivos, no porque moda mas sim para garantir a compatibilidade face aos que j existem.
P-Net WorldFIP PROFIBUS Interbus-S LONWORKS BITBUS CAN 0 1000000 2000000 3000000 4000000 5000000 6000000

Number of Units

Figura 24 Utilizao do fieldbus CAN face a concorrentes.

Atravs da utilizao da camada de aplicao CANOpen, torna-se fcil, numa rede CAN, a interaco entre os dispositivos do mesmo ambiente de funcionamento. Alm disso, a camada CANOpen permite tambm facilitar a integrao de novos dispositivos na rede, possivelmente desenvolvidos por entidades alheias rede, atravs da utilizao do perfil de aplicao adequado.

9. Agradecimentos
Ao Professor Jos Rufino pelo material gentilmente cedido.

10. Referncias
[1] CiA, CANOpen@space, CANSpace december 5th, 2002 Noordwijk (Netherland). [2] http://www.dspclips.com/fieldbus.htm [3] CiA, CAN Application Fields [4] http://www.canopen.org/applications/ [5] CiA, CAN Physical Layer [6] J. Rufino, Controller Area Network an overview, 1997 [7] F. Hartwich, A. Bassemir, The configuration of the CAN bit timing, 6th International CAN Conference, Turin (Italy) [8] CiA, CAN Implementation [9] CiA, CAN Data Link Layer [10] CiA, CAN CANOpen

8. Concluses
O funcionamento aparentemente complexo das duas primeiras camadas do n CAN justifica-se pelos rigorosos requisitos utilizados na sua especificao. O campo de aplicao das redes CAN praticamente ilimitado. Desde aplicaes triviais como o controlo da

Potrebbero piacerti anche