quinta-feira, 19 de setembro de 2013

ModBUS

Modbus é um Protocolo de comunicação de dados utilizado em sistemas de automação industrial. Criado originalmente na década de 1970, mais especificamente em 19791 , pela fabricante de equipamentos Modicon. É um dos mais antigos e até hoje mais utilizados2 protocolos em redes de Controladores lógicos programáveis (PLC) para aquisição de sinais de instrumentos e comandar atuadores. A Schneider Electric (atual controladora da Modicon) transferiu os direitos do protocolo para a Modbus Organization (Organização Modbus3 ) em 2004 e a utilização é livre de taxas de licenceamento4 . Por esta razão, e também por se adequar facilmente a diversos meios físicos, é utilizado em milhares de equipamentos existentes e é uma das soluções de rede mais baratas a serem utilizadas em Automação Industrial.
Características técnicas
O modbus equivale a uma camada de aplicação e pode utilizar o RS-232, RS-485 ou Ethernet como meios físicos - equivalentes camada de enlace (ou link) e camada física do modelo. O protocolo possui comandos para envio de dados discretos (entradas e saídas digitais) ou numéricos (entradas e saídas analógicas).

Modelo de comunicação

O protocolo Modbus especifica que o modelo de comunicação é do tipo mestre-escravo (ou cliente-servidor). Assim, um escravo não deve iniciar nenhum tipo de comunicação no meio físico enquanto não tiver sido requisitado pelo mestre. Por exemplo, a estação mestre (geralmente um PLC) envia mensagens solicitando dos escravos que enviem os dados lidos pela instrumentação ou envia sinais a serem escritos nas saídas, para o controle dos atuadores ou nos registradores. A imagem abaixo mostra um exemplo de rede Modbus com um mestre (PLC) e três escravos (módulos de entradas e saídas, ou simplesmente E/S). Em cada ciclo de comunicação, o PLC lê e escreve valores em cada um dos escravos.



Acesso ao meio

No entanto, ainda é possível haver colisões durante o acesso ao meio compartilhado, e o protocolo não é específico em como solucioná-las. Como ilustração de um problema possível, suponha que, em uma dada aplicação do protocolo Modbus sobre um barramento RS-485, o mestre requisita seus escravos em sequência. Suponha também que o mestre, após um tempo específico, passa a requisitar o escravo seguinte, tendo recebido ou não uma resposta do escravo anterior. Nesse caso, se o primeiro escravo demora mais tempo para responder do que o tempo que o mestre espera, pode acontecer de o primeiro escravo responder bem no período em que o mestre resolveu fazer a requisição ao escravo seguinte, ou no período em que o segundo escravo já tinha iniciado sua resposta – havendo colisão no meio. Não há nada especificado no protocolo para resolver esse tipo de problema. Cabe inteiramente à aplicação – através de hardware ou software - implementar de forma correta o acesso ao meio, os parâmetros de time-out etc.

Frames

Basicamente, uma comunicação em Modbus obedece a um frame que contém o endereço do escravo, o comando a ser executado, uma quantidade variável de dados complementares e uma verificação de consistência de dados (CRC).
Exemplo-1: Se o PLC precisa ler as 10 primeiras entradas analógicas (do endereço 0000 ao 0009) no módulo 2. Para isso é preciso utilizar o comando de leitura de múltiplos registros analógicos (comando 3). O frame de comunicação utilizado é mostrado abaixo (os endereços são mostrados em sistema hexadecimal):

endereço
comando
end. dos registros
quant. de registros
CRC
2
3
0
0
0
0A
2 caracteres

A resposta do escravo seria um frame semelhante composto das seguintes partes: O endereço do escravo, o número do comando, os dez valores solicitados e um verificador de erros (CRC). Em caso de erros de resposta (por exemplo um dos endereços solicitados não existe) o escravo responde com um código de erro.
A resposta para a pergunta acima seria a seguinte:
Mas antes uma pequena recordação!
Para se entender este frame de resposta, antes precisamos saber corretamente o que é um byte.
Cada palavra tem as seguintes formas, - bit, - nible, - byte e - word.
Segue abaixo uma tabela representação de cada formato.

Bit
Nible
Byte
Word
1
= 4 bits
= 8 bits
= 16 bits

Agora que ja sabemos o que é byte podemos então decifrar o frame da rede modbus.
Exemplo-2: Reposta da pergunta citada no exemplo-1.

RX 02 03 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (xx xx CRC)

O primeiro byte(02) é o nó do escravo; O segundo byte(03) é a função utilizada para leitura, sendo essa um Holding Register; O terceiro byte é a quantidade de endereços que o Slave(escravo) está enviando ao Master, sendo que a cada 2 bytes se forma uma Word que significa uma palavra de 16 bit, por isso este frame tem 14 = 20 bytes que é = 10 word ou 10 palavras de 16 bits que tem seu range mínimo de -32768 ate 32767.
Com isso entendemos que o Slave(Escravo) respondeu 10 endereços a ao master e todos com o valor zero.

Comandos do MODBUS

Os principais comandos do Modbus são mostrados na tabela abaixo:

código do comando
descrição
1
Lê um número variável1 de saídas digitais (bobinas)
2
Lê um número variável1 de entradas digitais
3
Lê um número variável1 de registros retentivos (saídas analógicas ou memórias)
4
Lê um número variável1 de registros de entrada (entradas analógicas)
5
Força uma única bobina (altera o estado de uma saída digital)
6
Preset de um único registro (altera o estado de uma saída analógica)
7
Lê exceções2 (registros de erro)
8
Várias funções de diagnóstico
15
Força uma quantidade variável1 de bobinas (saídas digitais)
16
Preset de uma quantidade variável1 de registros (saídas analógicas)
1 A quantidade de variáveis a ler é definida no frame de solicitação
2 Oito bits previamente configurados. Não é necessário fornecer parâmetros de endereçamento com este comando pois o escravo vai enviar sempre os oito bits pré configurados.

Para alguns comandos de diagnóstico, tais como reinício de comunicação, reset do módulo ou sincronização de relógio, podem ser utilizados comunicações do tipo broadcast, ou seja, destinada a todos os escravos simultaneamente.

Modbus serial
Em redes seriais baseadas em RS-485 ou RS-232 o Modbus pode ter dois modos de transmissão: RTU e ASCII.

Modbus RTU

O termo RTU, do inglês Remote Terminal Unit, refere-se ao modo de transmissão onde endereços e valores são representados em formato binário. Neste modo para cada byte transmitido são codificados dois caracteres. Números inteiros variando entre -32768 e 32767 podem ser representados por 2 bytes. O mesmo número precisaria de quatro caracteres ASCII para ser representado (em hexadecimal). O tamanho da palavra no modo RTU é de 8 bits.

Formato do pacote RTU


Endereço do Escravo
Código da Função
Dados
CRC
1 byte
1 byte
0 a 252 bytes
2 bytes (CRC-16)

Modbus ASCII

Os dados são dados codificados e transmitidos através de caracteres ASCII - cada byte é transmitido através de dois caracteres. Apesar de gerar mensagens legíveis por pessoas este modo consome mais recursos da rede. Por exemplo, para transmitir o byte 0x5B este deverá ser codificado em dois caracteres ASCII: 0x35 (“5”) e 0x42 (“B”). O tamanho da palavra no modo ASCII é de 7 bits. Somente são permitidos caracteres contidos nos intervalos
·         0-9
·         A-F
Intervalo entre duas mensagens deve ser de 3,5 caracteres.

Formato do pacote ASCII


Início
Endereço
Função
Dados
LRC
Final
":" (ASCII 0x3Ah)
2 caracteres
2 caracteres
0 a 2 x 252 caracteres
2 caracteres
CR+LF (ASCII 0x0Dh + 0x0Ah)

Modbus TCP

Aqui os dados são encapsulados em formato binário em frames TCP para a utilização do meio físico Ethernet (IEEE 802.3). Quando o Modbus/TCP é utilizado, o mecanismo de controle de acesso é o CSMA-CD (Próprio da rede Ethernet) e as estações utilizam o modelo cliente-servidor.

Retrocompatibilidade e Conversores

Suponha que um PLC precisa trocar dados usando o protocolo Modbus-TCP com dispositivos antigos, que não suportam esse protocolo, e estão conectados em um barramento RS-485. Nesse caso, existem no mercado conversores Modbus-TCP<->Modbus Serial RS-232/485. Esses dispositivos diferem de um conversor puramente físico, que somente converteria os sinais elétricos de um protocolo físico para outro. Eles, em vez disso, implementam os protocolos TCP e IP, além de implementar também o protocolo Modbus.
Isso é necessário, pois é preciso haver uma conexão TCP entre o conversor e o PLC, já que essa conexão não pode existir diretamente com os equipamentos antigos. O conversor precisa, portanto, implementar o protocolo TCP e aceitar conexões através de sockets etc. Caso contrário, a comunicação não seria possível.
Além disso, o conversor precisará tirar os dados Modbus – que estão dentro do pacote IP, que por sua vez está dentro do quadro Ethernet – para enviar ao escravo correto no barramento RS-485.
Há também conversores com várias saídas seriais. Nesse caso, é possível separar os escravos em vários barramentos distintos, cada um em uma porta. No primeiro barramento, podem ser colocados os escravos cujos endereços vão de 1 ao 10; no segundo, de 11 a 20, e por aí em diante – isso é só um exemplo.
Nessa configuração, o conversor precisaria ler o pacote Modbus, interpretá-lo ao ponto de saber qual é o endereço do escravo de destino, para então enviá-lo à porta de saída correta.

Modbus Plus

Versão que possui vários recursos adicionais de roteamento, diagnóstico, endereçamento e consistência de dados. Esta versão ainda é mantida sob domínio da Schneider Electric e só pode ser implantada sob licença deste fabricante.


quarta-feira, 11 de setembro de 2013

PADRÃO 485

A principal diferença entre RS-485 e RS-232 está no fato do RS-485 ser um padrão diferencial, enquanto que o RS-232 é referenciado ao comum (0V). No RS-232, o nível lógico 1 é interpretado como sendo qualquer tensão no intervalo [–15V;-3V], enquanto que tensões no intervalo [3V;15V] correspondem ao nível lógico 0. Tensões entre -3V e 3V não possuem nível lógico definido. Este tipo de interface é útil em comunicações ponto-a-ponto a baixas velocidades de transmissão. Entretanto, devido à grande faixa de variação dos sinais, faz-se necessário dispor de drivers de alto slewrate para se alcançar altas velocidades de comunicação. No mais, com o aumento do comprimento do cabo de comunicação, o padrão RS-232 se torna altamente susceptível a interferência eletromagnética e a retorno de sinal.
O RS-485 utiliza um princípio diferente. Um transceptor RS-485 traduz um sinal lógico TTL em dois sinais, denominados de A e B (ver Figura 1). O sinal A possui a mesma lógica do sinal TTL, enquanto que o sinal B é complementar. A informação do sinal de entrada está codificada na forma do sinal A-B, ou seja, da diferença entre os sinais A e B. Se esta diferença for superior a 200mV, então tem-se nível lógico 1. Caso a diferença seja inferior a -200mV, então considera-se nível lógico 0. No intervalo de -200mV a 200mV o nível lógico é indefinido, servindo também como meio de detecção de cabo solto, para alguns transceptores comerciais. Entretanto, deve-se ter algum cuidado com relação ao compartilhamento de referência de 0V entre dispositivos .

Uma das vantagens da transmissão diferencial é sua robustez a interferência eletromagnética. A conexão entre dispositivos RS-485 é feita por cabos de par trançado, com resistores de terminação para balanceamento. Dessa forma se um ruído é introduzido na linha, ele é induzido nos dois fios de modo que a diferença entre A e B é quase nula. Outra vantagem da transmissão diferencial é que diferentes potenciais de terra são, até certo ponto, ignorados pelos transmissores e receptores. Isso se torna importante quando tem-se que percorrer grandes distâncias ou mesmo em sistemas com diferentes fontes de alimentação. Cabos trançados com terminações corretas que minimizam reflexão do sinal permitem taxas de transferência de 10Mbps a distâncias de até 1 km.
O RS-485 é um padrão de comunicação multiponto, permitindo-se a conexão de até 32 dispositivos num simples cabo de par trançado. Dependendo do transceptor, pode-se conectar mais de 200 dispositivos, seguindo a topologia mostrada na Figura 2. Na verdade, a Figura 2 mostra a arquitetura mais comum de utilização do RS-485. A letras D e R indicam os drivers de transmissão e recepção de cada dispositivo, respectivamente. Uma observação a ser considerada é a impedância característica do cabo. Se o cabo for utilizado para transmissões com componentes espectrais a altas frequências, podem ocorrer reflexões do sinal em sua extremidade provocando inconsistência nos dados transmitidos. Para minimizar este efeito, deve-se adicionar resistores de terminação de valores iguais à impedância característica do cabo para que ele se comporte como um cabo infinito. Os valores típicos para essa resistência é de cerca de 120 Ω para cabos trançados, e de cerca de 54 Ω para cabos blindados. Apesar de típicos, estes valores podem ser diferentes pois dependem também dos requisitos de carga mínima dos transmissores. É importante também que existam apenas dois resistores, um em cada extremidade, que podem estar também dentro do último dispositivo conectado. Na prática, porém, para pequenas distâncias e baixas velocidades, a terminação não chega a ser algo crucial e a maioria dos circuitos funciona bem. Um outro artifício para minimizar a influência da reflexão dos sinais é por meio da redução forçada da banda passante. Isto já é feito em vários transceptores por meio de uma limitação do slew-rate.

A maioria dos sistemas com RS-485 utiliza uma arquitetura mestre/escravo para comunicação, onde apenas um único dispositivo (geralmente o PC), chamado mestre, envia periodicamente mensagens endereçadas aos escravos. Cada escravo por sua vez tem um único endereço e responde apenas a pacotes endereçados a ele. Além do mais, pode-se usar USARTS half-duplex ou full-duplex, como ilustrado pela Figura 3. Para tanto, as seguintes conexões físicas devem ser feitas:
§  Half-duplex: um único par trançado em que todos os dipositivos estão conectados no mesmo cabo trançado. Dessa forma, todos eles devem possuir transceptores com saídas tri-state, incluindo o mestre. A comunicação se dá em ambas direções e é importante evitar, por software, que mais de um dispositivo tenha o seu driver da transmissão habilitado ao mesmo tempo.
§  Full-duplex: usa-se dois pares trançados em que os escravos transmitem para o mestre através do segundo par trançado. Essa solução geralmente permite comunicação multiponto em sistemas que foram originalmente projetados para RS-232 com pequenas modificações no software mestre. Outro fato é que o mestre também não precisa colocar a saída do seu transceptor em estado de alta impedância.




TRASPECTORES RS-485
É possível encontrar no mercado vários transceptores de RS-485 e até circuitos prontos para determinadas aplicações. No LCVC(LARA) tem-se utilizado os integrados DS485 e ST485, da National Semiconductor e STMicroeletronics, respectivamente. Estes dispositivos são bastante populares devido principalmente ao baixo custo. Entretanto, dispositivos mais caros como o LTC485 (Linear Technology) e o MAX485(Maxim) possuem outras características, tais como maiores taxas de comunicação e número de dispositivos. Estes mesmos fabricantes possuem uma linha mais extensa de dispositivos, com características de full-duplex, opto-isolamento, conversão RS232/485, etc.
A Figura 1 mostra o diagrama dos circuitos integrados DS485 e ST485. A diferença básica entre eles está somente nas suas características elétricas, bem como nas taxas de velocidade máxima: até 2,5 Mbps para o DS485 e até 30 Mbps para o ST485. O pino RE habilita o driver de recepção R, sendo ativo no nível 0. O pino DE habilita o driver de transmissão D (ativo em 1). Normalmente esses dois pinos são conectados juntos de forma que o transceptor esteja apenas recebendo ou transmitindo. Os pinos RO e DI representam saída da recepção e driver de entrada respectivamente, e trabalham com níveis lógicos TTL (0 a 5V). Já as saídas A e B para o barramento operam com tensão diferencial entre seus terminais. O transceptor normalmente é alimentado com 5V CC.
Para que um dispositivo transmita um dado pelo barramento é necessário elevar para 5V o pino DE, fazendo com que RE seja desabilitado, para então transmitir a informação necessária pelo pino DI. Com o final da transmissão, deve-se desabilitar DE e reabilitar RE, de forma que o transceptor volte ao modo de recepção. Esta habilitação pode ser feita via software, controlando pinos de um microcontrolador ou de uma porta de comunicação de um microcomputador; ou mesmo através de um hardware construído especialmente para detectar início de transmissão para o formato de dados utilizado (e.g., UART).
Um problema que pode ocorrer com um barramento RS-485 que dispõe apenas de resistores determinação é que, quando todos os dispositivos estão em modo de recepção, o nível lógico do barramento pode ficar indefinido [2]. Para garantir que o barramento fique sempre em nível lógico 1, que corresponde ao estado default NRZ das USARTs conectadas ao barramento, deve-se adicionar um resistor pull-up ao pino A e um de pull-down no pino B, conforme ilustra a Figura 4. Esses resistores devem ter valores iguais para não alterar o balancemento da linha de transmissão.



UM SIMPLES CONVERSOR RS-232/RS-485 PARA PC

Em muitos casos, em uma rede RS-485, um dos dispositivos da rede pode ser um microcomputador PC. Vários projetos desenvolvidos no LCVC (LARA) fizeram uso de microcomputador PC como mestre do barramento RS-485. As razões para isto vão desde a necessidade de coleta de dados para análise no MATLAB [5] até o controle avançado em tempo real [6]. Para tanto, faz-se necessário dispor de um transceptor RS-232/RS-485, uma vez que as portas seriais de microcomputadores PC usam o padrão físico RS-232, inclusive para controle de fluxo. Este transceptor, cujo esquemático é mostrado na Figura 5, utiliza um circuito integrado DS485 (conversor RS-485/TTL) e um circuito integrado MAX232 (conversor RS-232/TTL). A habilitação de transmissão pelo barramento RS-485 seria feito por meio do sinal RTS da porta serial do PC, também utilizando o MAX232 como interface. Se o microcomputador ficar em uma das extremidades do barramento pode-se incluir, por meio de jumpers, o resistor de terminação, e também, se for o caso, os resistores de pull-up e pull-down. A seção seguinte discutirá um software para realizar esse controle de escrita e leitura no PC em Linux.



PROTOCOLOS E CONFIGURAÇÕES DE SOFTWARE

Pelo fato da grande maioria dos dipositivos possuírem UARTs e quando taxas de até 115200 bps são suficientes para a aplicação em questão, o formato de dados NRZ comum em UARTs é uma boa opção para sincronização de bits, quando da utilização de transmissão assíncrona (ver Figura 6). De acordo com o modelo OSI, este é ainda um aspecto da parte física de uma rede de comunicação, e que ainda não garante a idoneidade dos dados transmitidos. Para tanto, faz-se necessário empregar um protocolo de comunicação. Quando se refere a sistemas embarcados micro controlados, estes protocolos implementam em geral a camada de enlace. Um protocolo bastante empregado na indústria é o MODBUS. No LCVC (LARA), muitos trabalhos são realizados a partir do protocolo descrito em.



Considerações para o projeto de protocolos

Quando deseja implementar seu próprio protocolo, um projetista deve levar em conta alguns aspectos. Na verdade, a definição do protocolo depende fortemente da aplicação. Se for utilizada a arquitetura mestre/escravo, em que cada escravo tem um endereço único e responde apenas a pacotes endereçados a ele, o protocolo torna-se simplificado, visto que elimina a necessidade de algoritmos de detecção de colisão, re-transmissão e algoritmos complicados de controle de acesso ao meio presentes em alguns sistemas distribuídos. Mesmo assim, o formato das mensagens deve levar em conta a aplicação. Por exemplo, se as informações de interesse trafegam no sentido dos escravos para o mestre, o mestre pode apenas enviar um byte contendo o endereço e um comando para o escravo, e este poderá responder com um ou mais bytes. Uma sugestão quando se tem mensagens que variam de tamanho é a utilização de um cabeçalho de um ou dois bytes, por exemplo contendo, além do endereço e um comando, o tamanho da mensagem que está sendo transmitida. Um byte de CRC também pode ser anexado ao final da mensagem como medida da integridade da mensagem. Este é o formato usado no MODBUS.
Algumas precauções devem ser tomadas quando utliza-se a arquitetura mestre/escravo. Se for desejada a propriedade plug-and-play ao sistema, pode ser interessante que o mestre, quando não tiver solicitando informações dos escravos já detectados, possa varrer o barramento enviando mensagens de checagem para detectar (i) a retirada de um dispositivo da rede e (ii) a entrada de um novo dispositivo. Também pode-se definir mensagens de broadcast, para as quais todos os escravos recebem a mesma informação do mestre, que pode ser uma configuração geral ou sincronização de relógios. O mestre também deve sempre esperar a resposta do escravo antes de enviar outro pacote, afim de evitar colisões. O projetista deve também considerar alguma falha que possa ocorrer no sistema, seja na transmissão ou nos dispositivos da rede. Assim o mestre não pode ficar indefinidamente esperando uma resposta de um escravo, nem o escravo do mestre. Se isto ocorrer, tem-se uma situação de bloqueio do sistema. Ao invés disso, deve-se estipular um tempo de espera máximo para chegada de uma mensagem de retorno (se o mestre solicitou uma do escravo) ou de conclusão da mensagem (mestre ou escravo). Este cuidado deve ser levado em conta também caso uma mensagem chegue incompleta, devendo-se aguardar um tempo limitado por cada byte esperado. Em situações de falha na comunicação, sugere-se que o dispositivo descarte a mensagem parcialmente recebida ou com erro de CRC, sinalizando ao mestre esta situação. Em geral isto é feito por meio de uma mensagem de reconhecimento (ACK). Se tal mensagem não for enviada por quem recebeu a mensagem, então o dispositivo que a enviou pode concluir que houve falha de comunicação. Nestes casos, pode-se tentar retransmitir a mensagem até um certo número de vezes. Se a falha se mantiver, então conclui-se que o dispositivo está em falha permanente.

Controle de acesso por software ao barramento RS-485

No caso de microcontroladores ligados diretamente ao transceptor de 485 ou no caso de utilização do conversor RS-232/RS-485 com controle pelo RTS, o procedimento de acesso ao barramento para escrita é feito por software. Em ambos os casos é preciso setar o pino DE do transceptor antes da transmissão e mantê-lo em nível alto até o fim da mesma.
Em microcontroladores esse procedimento torna-se bem simples, dada a facilidade em se ativar e desativar uma das saídas digitais, e também porque a maioria dos microcontroladores com UART possuem interrupções para indicar o fim de uma transmissão, que ocorre quando o buffer de transmissão fica vazio.

Já em microcomputadores PC o procedimento é o mesmo, sendo que o controle é feito pelo pino RTS da porta serial. Se a aplicação for desenvolvida em linguagem C, por exemplo, o acesso a saída RTS pode ser feito utilizando a API do sistema operacional, inclusive para espera do fim da transmissão. Ao passar por APIs, o programa pode ter comportamento pouco determinístico, principalmente em se tratando de sistemas operacionais que não sejam tempo real. Isto ainda fica pior com o Windows, que com as versões 2000/XP impossibilitaram o acesso ao hardware por programas que se executam no modo usuário. O mesmo somente pode ser feito no modelo kernel via device drivers. Para tanto, existem alguns device drivers para acesso ao hardware tais como GiveIO1 ou PortTalk2. Entretanto, o tempo necessário para troca de informações do software do usuário com o device driver é ainda não determinístico, dificultando, por exemplo, o tempo máximo de espera por uma mensagem.

PADRÃO RS-232C

RS-232 (também conhecido por EIA RS-232C ou V.24) é um padrão para troca serial de dados binários entre um DTE (terminal de dados, de Data Terminal equipment) e um DCE (comunicador de dados, de Data Communication equipment). É comumente usado nas portas seriais dos PCs.



HISTÓRIA
Este padrão foi originalmente usado para conectar um teletipo (equipamento eletromecânico de comunicação assíncrona que usava código ASCII) a um modem. Quando terminais eletrônicos (burros ou não) começaram a ser usados, eram projetados para serem intercambiáveis com as teletypewriters, e também suportavam RS-232. A terceira revisão deste padrão (chamada de RS-232C) fora publicada em 1969, em parte para adequar-se às características elétricas destes dispositivos. Deste modo, fora utilizado em diversos tipos de comunicação remota, especialmente por modems. Posteriormente PCs (e outros equipamentos) começaram a utilizar este padrão para comunicação com equipamentos já existentes. Quando a IBM lançou computadores com uma porta RS-232, esta interface tornou-se realmente onipresente. Por muitos anos o padrão para comunicação serial em quase todos os computadores era algum tipo de porta RS-232. Continuou sendo utilizado em grande escala até o fim dos anos 90. Durante este tempo esta foi a maneira padrão para a conexão de modems.
Uma exceção eram os mainframes, que geralmente não se comunicavam diretamente com dispositivos terminais. Estes costumavam ter processadores especializados em I/O conectados a eles, por exemplo, alguns mainframes da IBM possuíam uma unidade de controle de telecomunicação (TCU - Telecommunication Control Unit, Unidade de Controle de Telecomunicação) anexados a seus canais multiplexadores. O TCU deveria suportar múltiplos terminais, às vezes centenas. Vários desses TCUs suportavam RS-232 quando necessário, assim como outras interfaces seriais.
Há alguma confusão sobre o que a EIA (Eletronics Industries Alliance) padronizou no RS-232. Este padrão apenas especifica características elétricas dos circuitos e a numeração dos pinos. Outras características como o conector em forma de "D", o uso de código ASCII, formato dos dados e comunicação assíncrona não são parte do RS-232, a palavra "padrão", porém, é utilizada geralmente quando todos estas características aparecem juntas, de modo a tornarem-se efetivamente obrigatórias. Foram construídas em torno de 100.000 teletypewriters (33-ASR) e milhares de PCs feitos toda semana, todos eles podem atuar como teletypewriters virtuais. Uma única característica que era utilizada em teletypewriters e que fora abandonada é que uma teletypewriter real requer dois bits de parada para trabalhar de modo satisfatório, deste modo um caractere ocupava 11 bits. Por isso teletypewriters de 100 palavras por minuto transmitiam a 110 bauds. Hoje em dia utiliza-se apenas um bit de parada. Sendo que trataremos aqui uma simulação de um 33-ASR, não o documento RS-232.
A IBM favoreceu o uso do código EBCDIC de oito bits ao invés do ASCII com sete bits, favoreceu também um formato de transmissão "big endian" ao invés do formato "little endian" do ASCII. A IBM ofereceu suporte a esses outros formatos de modo que, para transmitir caracteres "little endian", o mainframe precisaria somente inverter cada caractere usando uma instrução para tradução de bloco. Os primeiros teletypewriters tinham três linhas de teclas e suportavam somente letras maiúsculas. Elas utilizavam o código Baudot e, geralmente, trabalhavam a taxas de 60 palavras por minuto. Os equipamentos com teclados de quatro linhas, código ASCII e letras maiúsculas e minúsculas começaram a aparecer quando computadores pessoais se popularizaram. Os circuitos integrados de comunicação serial UART, introduzidos no início dos anos 70, continuam sendo emulados por muitos chipsets e ainda suportam os primeiros formatos, incluindo 1,5 bits de parada. Contudo tais recursos são raramente utilizados. Algumas tecnologias utilizam muito esse protocolo. A importância de portas seriais começou a decrescer gradualmente quando redes de alta velocidade tornaram-se disponíveis para comunicação PC com PC. Hoje é comum utilizar conexões Ethernet Base 10, 100 ou 1000. Num futuro próximo, velocidades ainda maiores serão comuns.

ABRANGENCIA DO PADRÃO
A Eletronics Industries Association (EIA), que padronizou o RS-232-C em 1969 define:
·         Características elétricas como níveis de tensão, taxa de sinalização, taxa de rotação dos sinais, nível máximo de tensão, comportamento de curto-circuito e carga máxima da capacitância.
·         Características mecânicas da interface, conectores "plugáveis" e identificação dos pinos.
·         Funções de cada circuito no conector da interface
·         Subconjuntos padrões de circuitos de interface para aplicações selecionadas de telecomunicação
O padrão não define elementos como:
·         Codificação de caracteres (por exemplo, ASCII, código Baudot ou EBCDIC)
·         Enquadramento dos caracteres no fluxo de dados (bits por caractere, bits de início e parada, paridade)
·         Protocolos para detecção de erros ou algoritmos para compressão de dados
·         Taxas de bit para transmissão, apesar de o padrão dizer ser destinado para taxas de bits menores que 20.000 bits por segundo. Muitos dispositivos modernos suportam velocidade de 115.200 bit/s
·         Fornecimento de energia para dispositivos externos

Detalhes do padrão

No protocolo de comunicação RS-232, caracteres são enviados um a um como um conjunto de bits. A codificação mais comumente usada é o "start-stop assíncrono" que usa um bit de início, seguido por sete ou oito bits de dados, possivelmente um bit de paridade, e um, 1,5 ou dois bits de paragem sendo então necessários pelo menos 10 bits para enviar um único caractere. Tal facto acarreta a necessidade em dividir por um fator de dez a taxa de transmissão para obter a velocidade de transmissão. A alternativa mais comum ao "start-stop assíncrono" é o HDLC. O padrão define os níveis elétricos correspondentes aos níveis lógicos um e zero, a velocidade de transmissão padrão e os tipos de conectores.

CONECTORES
O padrão especifica 20 diferentes sinais de conexão, e um conector em forma de D é comumente usado. São utilizados conectores machos e fêmeas - geralmente os conectores dos cabos são machos e os conectores de dispositivos são fêmeas - e estão disponíveis adaptadores m-m e f-f. Há também os chamados "null modems" para conectar unidades utilizando-se ambas como terminais de dados (ou modems). Para configuração e diagnóstico de problemas com cabos RS-232 pode-se utilizar uma "breakout box". Este dispositivo possui um conector macho e um conector fêmea e deve ser anexado em linha. Além disso, possui luzes para cada pino e meios de interconectar os pinos com diferentes configurações.
A maioria dos pinos são inutilizados pela maioria dos dispositivos sendo, então, comum que máquinas economizem espaço e dinheiro, utilizando conexões menores. A segunda geração dos IBM PC AT foi disponibilizada com um conector em forma de D com apenas 9 pinos, tornando-se o padrão. Grande parte dos dispositivos utilizam conectores de 25 pinos. Consequentemente, cabos com 9 pinos em uma extremidade e 25 em outra são comuns. O Apple Macintosh utilizava um sistema similar, mas posteriormente mudou para um novo conector com apenas 8 pinos, menos que o necessário para um modem.
Os cabos para RS-232 podem ser construídos com conectores disponíveis em qualquer loja de eletrônicos. Os cabos podem ter de 3 a 25 pinos. Cabos "Flat RJ" (cabos de telefone) podem ser usados com conectores RJ-RS232 e são os de mais fácil configuração. A razão pela qual é possível criar uma interface mínima com apenas três fios é que todo sinal RS-232 utiliza o mesmo fio terra para referência. O uso de circuitos desbalanceados deixa o RS-232 altamente suscetível a problemas devido a diferenças de potencial entre os sinais de terra dos dois circuitos. Este padrão também tem um pobre controle dos tempos de picos e descidas do sinal, levando a potenciais problemas de comunicação.
O RS-232 é recomendado para conexões curtas (quinze metros ou menos). Os sinais variam de 3 a 15 volts positivos ou negativos, valores próximos de zero não são sinais válidos. O nível lógico um é definido por ser voltagem negativa, a condição de sinal é chamada marca e tem significado funcional de OFF (desligado). O nível lógico zero é positivo, a condição de sinal é espaço, e a função é ON (ligado). Níveis de sinal +-5, +-10, +- 12 e +-15 são vistos comumente, dependendo da fonte elétrica disponível.
Marca e espaço são termos herdados das teletypewriters. O modo de comunicação nativo destas eram simples séries de circuitos de corrente contínua que são interrompidos, muito similar aos telefones que possuíam as "rodas de discagem" que interrompiam o sinal telefônico. A condição de marca é quando o circuito está fechado e a condição de espaço, quando o circuito está aberto. O início de um caractere é sinalizado por um espaço e os bits de parada são marcas. Quando a linha é interrompida, a teletypewriter entra num ciclo contínuo mas nada é impresso porque tudo o que é recebido são zeros, o caractere NULL.
Três são os sinais carregados por esses fios: terra, transmissão/recepção e "handshake". Existem códigos para estes sinais, por exemplo:
Sinal
Significado
SG ou GND
Terra
TD ou TX
Transmissão de dados
RD ou RX
Recepção de dados
DTR
Terminal de dados pronto
DSR
Conjunto de dados pronto
RTS
Pronto para enviar(computador)
CTS
Envie os dados (modem)
DCD
Portadora detectada
RI
Indicador de telefone tocando
FG
(Frame Ground)
Os dispositivos RS-232 podem ser classificados em DTE e DCE. Essa classificação permite definir quais fios irão mandar e/ou enviar sinais de dados. De qualquer modo, estas definições nem sempre seguidas. Normalmente é necessário consultar a documentação ou testar as conexões com uma "breakout box" para determinar os sinais necessários.
O sinal de terra tem a função de aterrar as outras conexões e é necessário. Se os equipamentos estiverem muito longe, com diferentes fontes de eletricidade, o terra se degradará entre os dois dispositivos e a comunicação irá falhar, sendo esta uma condição difícil de traçar. Em conectores de 25 pinos, o pino 7 geralmente é o terra (pino 1 e terra do chassis são raramente usados). Neste mesmo conector, os pinos 2 e 3 são os pinos de transmissão e recepção, um dispositivo deve enviar no 2 e receber no 3; o outro deve ser o contrário (se não, essa inversão deve ser feita no fim do cabo, como num cabo para null modem, também chamado crossover). No caso de desenvolver cabos para uma conexão, pode-se testá-lo com uma breakout box qual pino está transmitindo. Estritamente falando, apenas um dispositivo precisa estar transmitindo (se não for necessária comunicação duplex ou um handshake), por exemplo uma impressora simples que não responde seu estado para o computador. Necessariamente, deve-se utilizar tanto o pino TX quanto o pino RX.

Outros handshakes podem ser necessários por um ou por outro dispositivo. Por exemplo, o pino 20 é comumente usado para indicar "dispositivo pronto". Os pinos também podem ser curto-circuitados. Por exemplo, um pino que pergunte "você está pronto?" que parte do dispositivo A pode ser ligado diretamente no pino referente a resposta "estou pronto" no dispositivo A se o dispositivo A não transmitir tal sinal. Os pinos normalmente utilizados para handshake são os pinos 20, 8, 4 e 6.

Device Net

DeviceNet é uma rede de campo que executa facilmente as conexões entre dispositivos de controle mútuo, tais como CLPs, computadores e sensores, bem como dispositivos de dados, como leitores de código de barras e sistemas RFID.
DeviceNet é uma rede padronizada que permite o controle inteligente de dispositivos de campo e melhora a produtividade do sistema.