terça-feira, março 24, 2015

RS485 - Introdução

RS-485 é um padrão elétrico para comunicação serial assíncrona multiponto a grandes distâncias (até pouco mais de 1Km), usado principalmente em ambientes industriais. Nesta série de posts vamos ver alguns detalhes, um CI para conversão entre o padrão RS-485 e o nível lógico "TTL" e um pequeno exemplo usando o Arduino.


Vários fatores limitam a distância na comunicação serial: a resistência do cabo (que reduz o nível dos sinais), a capacitância do cabo (que impede mudanças bruscas de nível, limitando a taxa de comunicação), reflexões do sinal nas pontas dos cabos e interferências externas. Por estes motivos, a comunicação serial a níveis lógicos comuns (3.3 ou 5 volts) fica limitada a distâncias curtas (alguns centímetros). É o caso da comunicação SPI, I2C e serial assíncrona.

No padrão RS-232 utilizam-se tensões mais elevadas (+12 e -12) para compensar as perdas resistivas e interferências externas. Entretanto, o problema da capacitância fica mais acentuado e, para cabos comuns, costuma se estabelecer a distância máxima de 15 m.

Uma outra questão na comunicação serial é quanto à possibilidade de interligar mais de dois dispositivos (multiponto). No RS-232 se considera que a comunicação é exclusivamente entre dois dispositivos. SPI e I2C, por exemplo, permitem ligar vários dispositivos em um barramento ("varal").  Num dado instante a comunicação continua sendo entre dois dispositivos, convenções de hardware ou protocolo são usadas para indicar quem são estes dispositivos.

Do ponto de vista elétrico, o RS-485 utiliza sinais diferenciais, onde o nível lógico é determinado pela diferença de tensão entre dois fios ao invés de entre um fio e uma referência. Desta forma, uma interferência que afete igual os dois fios será cancelada. Além disso, o cabeamento utiliza par trançado, o que também propicia o cancelamento de interferências. Por último, o padrão estabelece o uso de resistores de terminação nas pontas do cabo, para reduzir reflexões. Para permitir a operação multiponto o transmissor RS485 deve ser capaz de entrar em um modo de alta impedância, quando não afeta os sinais presentes nos fios.

Na sua forma mais comum são usados apenas dois fios e a comunicação é half-duplex: enquando uma ponta transmite a outra recebe. Utilizando quatro fios é possível criar caminhos separados, permitindo que as duas pontas transmitam (e recebam) ao mesmo tempo.

A norma RS-485 estabelece apenas a camada física (características elétricas: tensões, impedâncias, etc). O protocolo (não especificado na norma) deve definir as condições para que apenas dois equipamentos comuniquem de cada vez e o sentido da comunicação (no caso half duplex). Muitas vezes é usado um esquema mestre/escravo por polling: apenas o mestre pode tomar a iniciativa de transmitir e fica continuamente consultado os escravos para saber se eles tem mensagem a enviar. Além disto costuma existir um esquema de endereçamento e as mensagem possuem algum código para detecção de erros na comunicação (checksum, crc, etc).

No próximo post vamos ver um componente que converte sinais lógicos normais (como a saída da UART de um microcontrolador) nos sinais elétricos apropriados.

Obs: A norma RS-485 foi inicialmente definida pela EIA (Electronic Industries Alliance), mais exatamente pelo setor TIA (Telecommunication Industry Association). O RS significa Recommend Standard. Anos mais tarde, a EIA passou a usar a nomenclatura EIA-485 ou EIA/TIA-485. Mais recentemente a EIA foi dissolvida, portanto a designação mais correta talvez seja TIA-485.


Nenhum comentário: