A comunicação RS232 é muito utilizada para comunicação entre computadores e máquinas CNC e é a forma mais popular de comunicação entre um CLP (controlador lógico programável) e um dispositivo externo.
Neste artigo, vamos desvendar cada parte desta comunicação a fim de mostrar o quão simples ela pode ser quando realmente temos o entendimento de como ela é estruturada.
O RS 232 utiliza o sistema binário (1 e 0) para transmitir dados em formato ASCII (American Standard Code for Information Interchange).
E este código é capaz de traduzir um código legível pelos humanos (letras e números) em códigos legível pelos computadores (1 e 0). A maioria dos CLPs de mercado possuem porta serial que são utilizadas para transmitir/receber dados em forma de tensão (+/-15 volts), onde a tensão positiva é chamada de MARK e a tensão negativa é chamada de SPACE.
Existem 2 tipos de dispositivos rs232. O primeiro é chamado de dispositivo DTE (Data Terminal Equipment) e um exemplo típico deste dispositivo é o computador.
O outro tipo é o DCE (Data Communications Equipment) e um exemplo típico é o antigo modem. O CLP pode tanto ser tratado como DTE, quanto DCE, dependendo do fabricante.
A porta serial opera ligando alguns pinos enquanto desliga outros e cada um destes pinos possuem uma finalidade específica. A porta serial por sua vez possui 2 tipos (9 pinos ou 25 pinos).
Abaixo podemos ver um figura com os 2 tipos.
Agora que entendemos como funciona o hardware na RS232, vamos entender como funciona o software. Para tanto, vamos olhar cada parte do quebra cabeças e definir alguns termos. Vamos lá:
human-readable to computer-readable translation code ou traduzindo leitura humana para leitura máquina. No padrão ASCII cada letra/número é traduzido em 0’s e 1’s. Como cada letra ou numero é composta por 7 bits no ASCII, podemos obter 128 combinações ou caracteres (2^7 = 128). Abaixo, podemos ver a representação humana onde tipicamente referimos aos caracteres utilizando a terminologia hexadecimal. “0” é 30h, “5” é 35h, “E” é 45h, etc, onde o h significa simplesmente hexadecimal.
Em rs-232 a primeira coisa que temos que enviar é o start bit. O start bit foi inventado na primeira guerra mundial por Kleinschmidt, é um bit de sincronização adicionado justamente antes de cada caractere que nós enviamos. Ele é considerado um espaço (SPACE) ou voltagem negativa ou 0.
A última coisa que enviamos é chamado de stop bit. Este bit nos diz que o último caractere foi enviado e devemos pensar nisso como um ponto final do caractere. É chamado de MARK, ou tensão positiva, ou 1. Os Start e Stop bit são comummente chamados de framing bits devido ao fato de cercarem o caractere que está sendo enviado.
Como a maioria dos CLPs e dispositivos externos são orientados por byte ( 8 bits = 1 byte) parece natural tratar dados como bytes. Embora o ASCII seja um código com 7 bits, raramente ele é transmitido desta forma e tipicamente o bit 8 é utilizado como um bit de paridade ou em outras palavras, checagem de erro. Este método de checagem de erro recebeu este nome baseando-se na ideia de paridade na matemática. Em temos simples, paridade significa que todos os caracteres terão um número par de 1’s ou número impar de 1’s. Exemplos comuns de formas de paridade são None (Nenhum), Even (Par) e Odd (Ímpar). Considere os exemplos abaixo:
Envio do “E” (45h ou 1000101b (binário))
Durante a transmissão na RS232, o emissor calcula o bit de paridade e envia ele. O receptor por sua vez calcula a paridade para os 7 bits do caractere recebido e compara o resultado calculado com o bit 8 recebido.
Se o valor calculado for igual ao real, é sinal de que nenhum erro ocorreu e a transmissão segue normalmente. Veja que é estranho que o método da paridade seja tão popular e o motivo é que ele é efetivo somente em partes.
Explicando melhor, a paridade pode encontrar somente erros que afetam números ímpares de bit e se erros ocorrerem em números pares de bits (2, 4 ou 6), o método não é eficaz.
Tipicamente, os erros são causados por ruídos que raramente afetam somente 1 bit e para tratar isto, podem ser utilizados blocos de checagem em redundância;
Pense no baud rate como referencia ao número de bits por segundo que está sendo transmitido. Então 1200 significa 1200 bits enviados por segundo e 9600 significa que podem ser enviados 9600 bits a cada segundo. As velocidades comuns que podem ser configuradas no RS232 são: 1200, 2400, 4800, 9600, 19200 e 38400;
(baud rate-data bits-parity-stop bits). Este é o formado de dado típico na comunicação RS232. Por exemplo: 9600-8-N-1 significa um baud rate de 9600, 8 data bits, paridade None e stop bit “1”.
A Figura abaixo mostra como o dado deixa a porta serial para o caractere “E” (45h 1000101b) e paridade Even (par):
Outra ferramenta importante que é utilizada em alguns casos chama-se sofware negociador (como exempo cito o software CIMCO Edit) responsável pelo controle do fluxo para Comunicação RS232 com as Máquinas CNC.
Da mesma forma que ele existe no hardware (RTS), o software negociador é utilizado para garantir que ambos os dispositivos estão prontos para enviar/receber dados. O controlador de fluxo mais popular é chamado XON/XOFF e é muito simples de entender.
Simplesmente coloque o receptor para enviar o caractere XOFF quando ele precisar que o transmissor pare de mandar dados.
Quando o receptor estiver pronto novamente, basta ele mandar ao transmissor o caractere XON. Comumente, XOFF é chamado de caractere de parada de comunicação e XON de caractare de liberação.
A última coisa que precisamos saber sobre os delimitadores é: Um delimitador é simplesmente adicionado ao final da mensagem a fim de dizer ao receptor para processar o dado recebido. Os mais comuns são o CR ou o par CR e LF. O CR (carriage return) é como as antigas máquinas de escrever.
Quando você chega no final da linha que está sendo escrita, um sinal toca e então você deve puxar a alavanca da máquina para posicionar na linha de baixo e continuar escrevendo.
Em outras palavras, você retorna ao início e isto é o que o delimitador CR faz na tela de um computador. Um CLP/dispositivo recebe este caractere e sabe que tem que colocar este dado em um buffer (onde o dado é armazenado temporariamente antes de ser processado).
Às vezes, um par STX e ETX é utilizado para transmissão/recepção na rs232, onde STX significa “start of text” ou inicio do texto e ETX “end of text” ou fim do texto. O STX é enviado antes do dado e fala para o dispositivo externo que o dado está vindo. Após todos os dados serem enviados, um caractere ETX é enviado.
Finalmente, preciso falar dos caracteres ACK/NAK. Este par raramente é utilizado mas pode ser útil e funciona da seguinte forma: o transmissor envia o dado e se o receptor recebe o dado sem erro, ele envia de volta um caractere ACK. Por outro lado, caso houver um erro, o caractere que retorna é o NAK e o transmissor reenvia o dado.
Abaixo apresentamos diversos tipos de conectores que pode ser utilizados para Comunicação RS232 com as Máquinas CNC:
Por fim, a comunicação rs232 possui bastante informação para ser absorvida. Mas com alguma prática você verá que não é tão difícil entender a mesma.