Arquivo da tag: Redes Industriais

Comunicação entre PC e Arduino com Redes RS-485

E aí, pessoal, tudo certo? Vamos realizar a comunicação entre um PC e um Arduino utilizando redes RS-485. Teremos um PC ligado na rede RS-485 através de um conversor USB/RS-485. O PC vai enviar mensagens através da rede para o Arduino. O Arduino estará conectado na rede através de um módulo RS-485/TTL. A Figura 1 apresenta a arquitetura da aplicação.

Figura 1. Arquitetura da aplicação

Aula no YouTube

Este tutorial tem um vídeo com a aula completa no meu canal do YouTube.

https://www.youtube.com/watch?v=uyfrKrxShYA

Objetivos da prática

  • Compreender conceitos de RS-485 e da sua aplicação prática;
  • Desenvolver uma aplicação simples onde o PC envia alguns comandos através da rede e o Arduino responde a esses comandos. Dependendo de qual comando for enviado através do software de terminal, o Arduino vai acionar o seu LED embutido, que é aquele LED que fica na placa, para indicar que a comunicação está funcionando;
  • Montar o circuito, apresentando detalhes e cuidados necessários para a rede funcionar corretamente;
  • Realizar a programação do Arduino;
  • Utilizar o software Termite como programa de terminal para enviar e receber os dados no PC.

Descrição da aplicação

Nesta aplicação, o PC envia um caractere pelo software terminal. Cada caractere é um comando. Se o caractere for ‘a’, vamos ligar o LED embutido do Arduino. Se o caractere for ‘b’, vamos desligar o LED. O Arduino vai responder a cada comando com uma frase: “LED ligado” ou “LED desligado”, respectivamente. Desta forma a gente sabe que a rede está funcional e o Arduino está respondendo às requisições feitas pelo PC.

De certa forma, estamos implementando um protocolo do tipo mestre-escravo, onde o computador é o mestre, enviando uma requisição (um comando), e o escravo (o Arduino) responde a esse comando.

Redes RS-485: características, topologia, módulos e conversores

O RS-485 é um padrão de meio físico usado para comunicações entre dispositivos embarcados e em automação industrial. Muitos CLPs, inversores de frequência, e módulos de entradas e saídas possuem essa porta disponível. Ele também é utilizado em alguns sistemas supervisórios para coletar dados do CLP, e é amplamente empregado nos protocolos Modbus e Profibus DP. Além disso, o RS-485 pode ser encontrado em aplicações de circuito fechado de TV e em protocolos de iluminação profissional.

As principais características do RS-485 incluem a comunicação serial, onde todos os bits das mensagens são enviados sequencialmente a uma taxa de comunicação padrão entre todos os dispositivos. A comunicação é half-duplex, o que significa que apenas um dispositivo pode enviar dados de cada vez, ou seja, não podem existir dois dispositivos transmitindo ao mesmo tempo.

É possível montar um barramento que pode ter até 1.200 metros de comprimento, em taxas de comunicação menores que 100 kbps. A rede permite até 32 dispositivos conectados ao barramento. Os dispositivos usam os sinais A e B para a comunicação, e o SG, que é a referência, ou terra de sinal. A ideia é ligar todos os fios A entre si, todos os fios B entre si, e todos os SGs entre si. A Figura 2 apresenta as conexões típicas em cada dispositivo em uma topologia barramento.

Figura 2. Barramento RS-485 e terminais de ligação dos dispositivos

Além disso, o RS-485 oferece imunidade a ruído e baixo custo de componentes. Isso torna os equipamentos mais acessíveis, já que a eletrônica necessária para fazer a comunicação funcionar é relativamente simples, exigindo poucos componentes eletrônicos. Conheça os cursos de Redes RS-485 disponíveis na Udemy.

RS-485: Topologia da rede

A topologia recomendada na rede RS-485 é a Daisy Chain, onde as emendas dos fios A e B são feitas diretamente nos terminais de ligação. Normalmente, os dispositivos possuem terminais parafusáveis, e utilizamos terminais tubulares para fazer a conexão. Nós descascamos os fios que contém o par trançado, e abrimos o cabo apenas onde for necessário fazer as emendas. A configuração básica da rede é mostrada na Figura 3.

Figura 3. Resistores de terminação e bias e conexões elétricas

Além disso, são necessários alguns resistores para o correto funcionamento da rede. Normalmente, colocam-se dois resistores de terminação (120 Ω) entre os fios A e B, nos dispositivos que estão nas extremidades da rede. Dois resistores de bias (normalmente 470 Ω) são conectados a uma fonte de 5 V e ligados aos sinais A e B, conforme a Figura 3. Os resistores de Bias ajudam a estabilizar a tensão nos sinais A e B, o que reduz a probabilidade de falhas de comunicação. Em muitos casos, esses resistores já estão integrados nos equipamentos, então precisamos dar uma conferida na real necessidade.

Módulo RS-485/TTL

O módulo RS-485 para TTL utiliza o chip MAX485. Ele é um transceiver, ou seja, um chip com a função de transmissor e receptor. Ele converte os níveis de tensão TTL, que são os níveis utilizados nos pinos do Arduino, onde as tensões são de 0 V para o bit 0 e 5 V (ou 3,3V, dependendo do microcontrolador) para o bit 1, para os níveis específicos que a RS-485 utiliza. A Figura 4 apresenta o módulo.

Figura 4. Módulo RS-485 para TTL

Além disso, esse módulo possui pinos de controle que são utilizados para gerenciar se estamos transmitindo ou recebendo dados. Como a comunicação RS-485 é half-duplex, normalmente o sistema fica em modo de recepção e só ativa a transmissão quando precisa enviar alguma informação.

O módulo também já vem com um resistor de terminação de 120 Ω soldado na placa e geralmente possui resistores de Bias com valores de 10 kΩ ou 20 kΩ. No entanto, esses valores não são os mais adequados. Como mencionei anteriormente, o valor recomendado para os resistores de Bias é em torno de 470 Ω para garantir uma melhor estabilidade e funcionamento da rede.

As conexões são apresentadas abaixo, na Tabela 1.

Pino do arduino unopino do módulo RS-485/ttl
5 VVCC
GND ou 0 VGND ou 0 V
TXDI
RXRO
2DE e |RE
Tabela 1. Conexões entre Arduino Uno e Módulo RS-485/TTL

Conversor USB/RS-485

O conversor USB/RS-485 apresentado na Figura 5 permite conectar o computador à rede RS-485. Alguns conversores são de baixo custo, embora a qualidade e confiabilidade possam deixar a desejar. Dentro do conversor, podemos encontrar o chip MAX485 e um conversor de USB/Serial UART, que geralmente é o chip CH340. Esses conversores já vêm com os resistores de bias soldados na placa, além de uma espera para o resistor de terminação.

Quando conectamos o conversor USB ao computador, ele aparecerá no Gerenciador de Dispositivos do Windows como uma porta COM.

Figura 5. Circuito interno de um conversor USB para RS-485

Como expliquei anteriormente, seriam necessários apenas dois resistores de bias na rede. Portanto, é importante estarmos cientes de que estes módulos podem adicionar resistores de bias na rede, o que pode influenciar ou até causar falhas na comunicação. Precisamos ficar atentos a esses detalhes. No meu conversor, eu soldei um resistor de 120 Ω para garantir que hajam dois resistores de terminação da rede montada.

Circuito elétrico

Para realizar essa prática, precisamos montar o circuito da Figura 6. Vamos conectar os pinos conforme a Tabela 1.

Figura 6. Conexões elétricas

Os pinos de controle de direção do transceiver são o |RE e o DE. Quando colocamos |RE em nível LOW, ativamos o modo de recepção. Por outro lado, ao colocar o pino DE em nível HIGH, ativamos o modo de transmissão, podendo enviar dados pela rede. Normalmente, deixamos ambos pinos em nível LOW, mantendo o modo de recepção, e só ativamos a transmissão quando precisamos enviar algo (similar a um walkie-talkie).

Adicionalmente coloquei dois resistores de bias: um resistor de 470 Ω entre o VCC e o A e outro resistor de 470 Ωentre o GND e o B, para garantir que a comunicação funcione corretamente. É possível que a comunicação funcione sem esses resistores, mas é bom testar. No meu caso, estes resistores externos foram necessários.

Outro cuidado importante: alguns módulos TTL/RS-485 podem causar falhas na programação do Arduino, pois o Arduino é programado através dos pinos TX e RX. Talvez será necessário desconectar os fios do RO e do DI para conseguir programar o Arduino.

Materiais e preparação

Para a prática, vamos precisar dos seguintes materiais:

  • PC;
  • Arduino Uno;
  • Cabo USB (para conectar o Arduino ao PC);
  • Conversor USB/RS-485;
  • Módulo RS-485/TTL;
  • Resistores de 470 Ω (dois) e 120 Ω (dois);
  • Jumpers: macho-macho e macho-fêmea;
  • Protoboard (opcional, mas recomendada para facilitar as conexões).

Programas e Drivers

  • Baixe e instale o Arduino IDE 2.X.X do site da Arduino;
  • Instale o Termite através do link fornecido ou pesquisando “Termite Serial Download” no Google;
  • Abra o Gerenciador de Dispositivos do Windows para visualizar as portas que serão utilizadas (conforme Figura 7);
  • Conecte o Arduino Uno e verifique se ele aparece na lista. Por exemplo, pode aparecer como “Arduino Uno” na porta COMxx;
  • Conecte o conversor USB/RS-485 e veja se aparece como COMxx;
  • O instalador do Arduino IDE normalmente instala os drivers necessários para as placas Arduino;
  • Para o conversor USB/RS-485, pode ser que o Windows não reconheça o dispositivo automaticamente. Nesse caso, você precisará baixar o driver do site do fabricante ou do site onde comprou o dispositivo. Certifique-se de procurar o driver específico para o chip do conversor USB que está sendo utilizado.
Figura 7. Portas COM dos dispositivos Arduino Uno (COM7) e conversor USB/RS-485 CH340 (COM 8)

Programação do Arduino

Você tem acesso ao código-fonte desta prática no link abaixo.

Comunicação com Arduino usando Módulo RS-485 (.zip)

Download

Enviar link de download para: / Send download link to:

Para fazer o download deste arquivo, inscreva-se em nossa newsletter e fique por dentro de novidades e conteúdos exclusivos! Seu apoio é fundamental para que possamos continuar oferecendo material de qualidade. Muito obrigado por contribuir com a manutenção do nosso blog!

To download this file, sign up for our newsletter and stay up to date with news and exclusive content! Your support is essential for us to continue offering quality material. Thank you very much for contributing to the maintenance of our blog!

No código de exemplo, a primeira coisa que fazemos é definir o pino de controle do módulo conversor RS-485. Vamos definir o pino 2 como RS485_ENABLE.

No setup(), configuramos a porta serial para 9600 bps (bits por segundo) com a configuração 8-N-1 (8 bits de dados, Nenhum bit de paridade, 1 bit de parada). Também configuramos o pino do LED embutido (pino 13) como saída e o pino RS485_ENABLE como saída, já colocando o pino RS485_ENABLE em nível LOW para ativar o modo de recepção.

No loop() (laço principal) checamos se o Arduino recebeu algum byte pela serial — ou seja, se no terminal enviarmos um caractere — vamos testar se chegou alguma coisa. A função Serial.available() retorna quantos bytes chegaram pela serial e ainda não foram lidos. Chamamos a função Serial.read() e guardamos o caractere recebido em uma variável do tipo char chamada c.

Utilizamos um switch para testar qual é o conteúdo do caractere recebido. Se for o caractere 'a', vamos ligar o LED e enviar uma resposta para o terminal. O procedimento para enviar a resposta na rede RS-485 utilizando o módulo RS-485/TTL é o seguinte:

  • Habilitar o modo de transmissão: Damos um digitalWrite() para colocar o RS485_ENABLE em nível lógico alto;
  • Enviar a mensagem: Usamos Serial.println() para enviar a mensagem “LED ligado”. Coloquei um \n para dar uma linha nova e facilitar a visualização das mensagens no terminal;
  • Aguardar o envio: Chamamos Serial.flush(), que aguarda até que todos os caracteres sejam enviados pela serial (aguarda esvaziar o buffer de transmissão);
  • Voltar ao modo de recepção: Em seguida, usamos digitalWrite() para colocar o módulo em modo de recepção novamente.

Se o caractere recebido for ‘b’, fazemos o mesmo procedimento: desligamos o LED, habilitamos o modo de transmissão, enviamos a mensagem “LED desligado”, aguardamos o buffer de transmissão esvaziar com Serial.flush(), e voltamos para o modo de recepção.

Se recebermos outro valor de caractere, simplesmente o descartamos. O loop então retorna ao início, testando se há outro caractere e repetindo o processo de checagem.

Se você quiser adicionar outras funcionalidades, como piscar o LED ou realizar outras ações, basta criar novos casos no switch e implementar a lógica necessária para controlar as saídas ou ler entradas e enviar as respostas para o terminal.

Compreendido o código, podemos compilar e programar o Arduino. As luzes do TX e RX vão piscar no Arduino, indicando que ele está sendo programado. Observe se não houveram problemas durante a programação. Neste caso, remova a conexão de TX e RX com o módulo RS-485/TTL e tente novamente.

Testes no Termite

Agora podemos ir para o Termite, o software onde realizaremos a comunicação. A primeira coisa que vamos fazer é acessar as configurações, clicando em Settings para configurar as comunicações. As configurações são apresentadas na Figura 8.

Figura 8. Configuração das comunicações no Termite.

No menu de configurações, eu vou selecionar o número da porta COM onde está o CH340 (no meu caso, COM8). Vou definir a taxa de comunicação para 9600, com a configuração 8-N-1 (8 bits de dados, nenhum bit de paridade, 1 bit de parada).

Deixarei a opção Append nothing, para que, ao enviar os caracteres ‘a’ ou ‘b’, não seja enviado nenhum caractere extra, como uma nova linha. Vou ativar o Local echo para que possamos ver no terminal os caracteres que estamos enviando. Após configurar tudo, pressione OK. Agora, na parte inferior da janela, posso enviar os caracteres, conforme testes apresentados na Figura 9.

Figura 9. Testes de comunicação no Termite. Enviar os caracteres com comandos no campo inferior.

Quando eu enviar o caractere ‘a’, vocês verão que o LED no Arduino vai ligar. O TX (possivelmente) vai piscar, indicando que houve comunicação. Na janela do Termite, aparecerá a mensagem “LED ligado”, confirmando que o Arduino está recebendo e respondendo adequadamente. Ao enviar o caractere ‘b’, o LED vai desligar, o TX (possivelmente) vai ficar ligado por um tempo, e na janela do Termite, aparecerá a mensagem “LED desligado”, indicando que a comunicação funcionou corretamente. O LED embutido (L) é apresentado na Figura 10.

Figura 10. Led embutido (pino 13) ativo.

Exercícios adicionais

Seguem alguns exercícios para você adicionar novos comandos para leituras de entradas e escrita de saídas:

  • Colocar um potenciômetro em uma entrada analógica e fazer a leitura do valor. Enviar um caractere pelo terminal e receber como resposta o valor atual do potenciômetro.
  • Adicionar um sensor de temperatura, como o LM35, e configurar o Arduino para enviar o valor da temperatura lida quando receber um caractere específico.
  • Utilizar botões para simular comandos de acionamento, onde o Arduino responde com mensagens como “botão acionado” ou “botão desativado” ao pressionar os botões.
  • Acionar saídas como motores de passo ou servo motores e controlá-los a partir de comandos enviados pelo terminal.
  • Conectar um display LCD para exibir mensagens ou valores, controlados pelos caracteres enviados pelo terminal.
  • Criar comandos para fazer o LED piscar. Por exemplo, ao enviar os caracteres ‘1’, ‘2’, ‘3’, etc., o LED pode piscar um número correspondente de vezes.

Essas práticas permitem explorar diferentes dispositivos e expandir o controle do Arduino pela rede RS485.

    Saiba +

    Conheça os cursos que ofereço na Udemy. Existe um curso específico de Redes RS-485 que elaborei especialmente para domínio desta rede e de comunicações com este tipo de rede.

    Referências principais

    1. Bailey, D. and Wright, E. (2003) Practical scada for industry. London: Elsevier.
    2. Boyer, S.A. (2010) SCADA: Supervisory Control and Data Acquisition. Research Triangle Park, NC: International Society of Automation.
    3. Galloway, B. and Hancke, G.P. (2013) ‘Introduction to industrial control networks’, IEEE Communications Surveys & Tutorials, 15(2), pp. 860–880. doi:10.1109/surv.2012.071812.00124.
    4. Tanenbaum, A.S. and Wetherall, D.J. (2011) Redes de Computadores. São Paulo: Pearson Prentice Hall.
    5. Arduino. Serial – Arduino Reference. Disponível em: <https://www.arduino.cc/reference/tr/language/functions/communication/serial/>. Acesso em: 22 out. 2024.
    6. ‌WIKIPEDIA CONTRIBUTORS. RS-485. Disponível em: <https://en.wikipedia.org/wiki/RS-485>.

    RS-485 Networks: Features, Applications and Overview

    RS-485 networks, also known as EIA-485 or EIA/TIA-485, are widely used in various industry applications due to their versatility and efficiency in data communication. This article provides an overview of the main features of these networks, their practical applications, and the benefits they provide.

    If you want to deepen your knowledge and specialize in this topic with certification, I invite you to check out this course on RS-485 networks on Udemy.

    The RS-485 Standard

    RS-485 is a standard defined by the ANSI/TIA/EIA-485-A standard, initially established on March 13, 1998, and reaffirmed on December 7, 2012. This standard specifies the electrical and mechanical parameters for balanced serial communication in multipoint systems. Electronic component manufacturers acquire this standard to develop circuits that are compatible with the established requirements, ensuring interoperability and compliance in the market.

    Main Features

    Network Topologies

    RS-485 networks support two main topologies, shown in Figure 1. In all cases, signals A and B are used for transmitting differential voltages according to the data bits and, optionally, a ground reference wire (SG) is used. All signals A are connected together on the bus, as well as all signals B. The same is true for devices that have the SG available.

    • Point-to-Point: Direct connection between two devices, such as Device 1 and Device 2. This configuration is simple and effective for direct communications without sharing the physical medium with other devices.
    • Multipoint (Bus): Several devices are connected on a common bus. This topology is ideal for systems that require communication between multiple devices, allowing up to 32 devices on a single standard bus, which can be expanded to up to 256 with special transceivers.
    Figure 1. a) Point-to-point and b) multipoint

    Versatility

    One of the great advantages of RS-485 is its flexibility:

    • Connectors: The standard does not define a specific type of connector, allowing the use of different models according to the application needs. Some types are shown in Figure 2.
    • Communication Protocols: RS-485 only specifies the physical layer, that is, how electrical signals behave. It does not define communication protocols, leaving this choice to the developer. Protocols such as Modbus, Profibus, DMX-512 and others can be implemented over RS-485.
    Figura 2. Conectores tipicamente utilizados em redes RS-485
a) Bornes parafusáveis b) Barra de pinos c) RJ-45 d) DB-9
    Figure 2. Connector used in RS-485 networks
    a) Screw terminals b) pin headers c) RJ-45 d) DB-9

    Low Cost

    RS-485 requires few electronic hardware components for its implementation:

    • Microcontroller: Responsible for processing and controlling communication. Usually it has a UART (Serial) port which is connected to the RS-485 transceiver.
    • Transceiver: Component that converts voltage levels between the microcontroller and the RS-485 network, ensuring signal compatibility and integrity.
    • Termination resistors and fail-safe bias: Used to reduce the effect of noise and balance the voltage level of signals A and B on the network.

    This simplicity results in a reduced cost, making RS-485 an economical option for several applications. Equipment with this type of network is more affordable when compared to those with protocols such as EtherNet/IP, ProfiNet and others.

    Communication Rates and Range

    RS-485 offers an excellent relationship between communication speed and distance:

    • Up to 1,200 meters: At rates below 100 kbps, it is possible to reach distances of up to 1,200 meters, ideal for large industrial installations.
    • High Speeds: For shorter distances, such as 50 meters, it is possible to reach rates of up to 2 Mbps, and at 6 meters, up to 10 Mbps. These use cases require a certain amount of care and are normally found in Profibus DP networks.

    This flexibility allows RS-485 to be adapted to the specific needs of each project.

    High Noise Immunity

    RS-485’s robustness in noisy environments is achieved through:

    • Twisted Pair Cable: Uses twisted wires to reduce electromagnetic interference, since induced noise affects both wires in a similar manner, allowing them to be canceled in the cable.
    • Differential Communication: Transmits signals with differential voltages in signals A and B, which facilitates the elimination of common noise in the receiver circuit.
    • Ground Reference (SG): The use of a ground wire as a voltage reference for transceivers improves signal stability and reduces problems caused by potential differences between devices.
    • Shielding and Grounding: Additional cable shielding and proper grounding techniques provide an extra layer of protection against external interference.

    Network Topology

    The recommended topology is Daisy Chain, where the connections of signals A, B and SG in the bus devices are made close to the connection terminals. Figure 3 shows one of the recommended installation methods to maintain high reliability.

    Figure 3. Recommended topology for RS-485 networks: Daisy Chain
    Source: https://know.innon.com/howtowire-non-optoisolated

    Half Duplex Communication

    In RS-485, communication is half duplex, which means that only one device can transmit on the bus at a time. To coordinate access and avoid collisions, it is necessary to implement a control mechanism, such as:

    • Master-Slave Protocol: A master device initiates communications, sending requests to slaves, which respond as requested. Protocols such as Modbus RTU and Profibus DP use this model. This approach ensures organized and efficient communication between connected devices.

    Applications in Industrial Automation

    RS-485 is widely used in automation devices and systems due to its favorable characteristics:

    • Programmable Logic Controllers (PLCs): Many PLCs have integrated RS-485 ports or expansion modules, facilitating communication with other devices.
    • Human-Machine Interfaces (HMIs): HMIs use RS-485 to exchange information with PLCs and other control equipment.
    • Frequency Inverters: Allow precise control of electric motors through commands sent via RS-485.
    • Remote Input and Output Modules: Sensors, actuators and other field devices can be connected to the control system using RS-485, simplifying the infrastructure and reducing costs.

    Other Protocols and Applications

    • DH-485: Used in Allen-Bradley equipment, it is a protocol that operates over RS-485 in specific industrial applications.
    • DMX-512: Widely used in professional lighting to control luminaires and special effects devices. Each piece of equipment receives an address and is controlled by a central panel via RS-485.
    • Closed Circuit TV (CCTV): In systems that do not use Ethernet, RS-485 is used to control PTZ (Pan-Tilt-Zoom) cameras, allowing focus, movement and zoom adjustments from a control center.

    Conclusion

    RS-485 remains a solid choice for many industrial and commercial applications, offering a balance between performance, cost, and robustness. Its ability to operate in harsh environments and support long communication distances still make it attractive in many systems.

    If you want to master RS-485 and apply it effectively in your projects, I offer a course on Udemy that introduces you to the necessary knowledge and skills. Learn about the technical details, best installation practices, communication protocols, and develop practices using low-cost components such as Arduino and RS-485 modules. Learn more about the RS-485 Networks Course by accessing the Course Link on Udemy.

    References

    The course is based on a vast bibliography which includes, among others:

    CONTROL SOLUTIONS. RS-485 FAQ – Control Solutions. www.csimn.com. Disponível em: <https://www.csimn.com/CSI_pages/RS-485-FAQ.html>. Acesso em: 23 out. 2023.

    EEP – ELECTRICAL ENGINEERING PORTAL. 9 rules for correct cabling of the Modbus RS485 communication systems. EEP – Electrical Engineering Portal. Disponível em: <https://electrical-engineering-portal.com/correct-cabling-modbus-rs485>.

    EVERY CONTROL SOLUTIONS. Every Control – Controladores de temperatuta, umidade, pressão e tempo – Boletins. www.everycontrol.com.br. Disponível em: <https://www.everycontrol.com.br/portal/index.php/boletins>. Acesso em: 23 out. 2023.

    IF TOOLS. Serial Analyzers for RS232 and RS485. www.iftools.com. Disponível em: <https://www.iftools.com/analyzer/index.en.php>. Acesso em: 23 out. 2023.

    INNON. How do I wire RS485 devices? know.innon.com. Disponível em: <https://know.innon.com/howtowire-non-optoisolated>. Acesso em: 23 out. 2023.

    MACKAY, Steve ; AL, Et. Practical industrial data networks : design, installation and troubleshooting. Oxford ; Burlington: Newnes, 2004.

    MAXIM. Full Guide to Serial Communication Protocol and Our RS-485 |. www.maximintegrated.com. Disponível em: <https://www.maximintegrated.com/en/design/technical-documents/app-notes/3/3884.html>.

    MAXIM. General Description PART NUMBER HALF/FULL DUPLEX DATA RATE (Mbps). [s.l.: s.n.], 2014. Disponível em: <https://datasheets.maximintegrated.com/en/ds/MAX1487-MAX491.pdf>.

    MAXIM. HOW FAR AND HOW FAST CAN YOU GO WITH RS-485? [s.l.: s.n.], 2014. Disponível em: <https://pdfserv.maximintegrated.com/en/an/AN3884.pdf>.

    MAXIM. RS-485 Cable Specification Guide | Maxim Integrated. www.maximintegrated.com. Disponível em: <https://www.maximintegrated.com/en/design/technical-documents/tutorials/7/763.html>.

    NOVUS. NOVUS PRODUTOS ELETRONICOS LTDA RS485 & RS422 Basics. [s.l.: s.n., s.d.]. Disponível em: <https://www.novusautomation.com/downloads/Arquivos/rs485%20&%20rs422%20basics%20-%20english.pdf>.

    SOLTERO, Manny; ZHANG, Jing; COCKRIL, Chris; et al. Application Report RS-422 and RS-485 Standards Overview and System Configurations. [s.l.: s.n.], 2002. Disponível em: <https://www.ti.com/lit/an/slla070d/slla070d.pdf>.

    TEXAS INSTRUMENTS. SN75176B data sheet, product information and support | TI.com. www.ti.com. Disponível em: <https://www.ti.com/product/SN75176B>. Acesso em: 23 out. 2023.

    WIKIPEDIA CONTRIBUTORS. RS-485. Wikipedia. Disponível em: <https://en.wikipedia.org/wiki/RS-485>.

    Redes RS-485: características, aplicações e visão geral

    As redes RS-485, também conhecidas como EIA-485 ou EIA/TIA-485, são amplamente utilizadas em diversas aplicações industriais devido à sua versatilidade e eficiência na comunicação de dados. Este artigo oferece uma visão geral sobre as principais características dessas redes, suas aplicações práticas e os benefícios que elas proporcionam. Se você deseja aprofundar seus conhecimentos e se especializar nesse tema com certificação, convido você a conhecer este curso sobre redes RS-485 no Udemy.

    O Padrão RS-485

    O RS-485 é um padrão definido pela norma ANSI/TIA/EIA-485-A, estabelecida inicialmente em 13 de março de 1998 e reafirmada em 7 de dezembro de 2012. Essa norma especifica os parâmetros elétricos e mecânicos para comunicação serial balanceada em sistemas multiponto. Fabricantes de componentes eletrônicos adquirem essa norma para desenvolver circuitos compatíveis com as exigências estabelecidas, garantindo interoperabilidade e conformidade no mercado.

    Principais Características

    Topologias de Rede

    As redes RS-485 suportam duas principais topologias, apresentadas na Figura 1. Os sinais A e B são utilizados para transmitir tensões diferenciais de acordo com os bits e, opcionalmente um sinal de referência de terra SG (Signal Ground). Todos os terminais A são ligados em um mesmo fio, enquanto que todos os sinais B em outro fio. O mesmo vale para os dispositivos que possuem o SG disponível.

    • Ponto a Ponto: Conexão direta entre dois dispositivos, como um dispositivo (Device 1) e um (Device 2). Essa configuração é simples e eficaz para comunicações diretas sem o compartilhamento do meio físico com outros dispositivos.
    • Multiponto (Barramento): Vários dispositivos são conectados em um barramento comum, utilizando um par de fios para os sinais A e B e, opcionalmente, um fio de referência de terra (SG). Essa topologia é ideal para sistemas que requerem comunicação entre múltiplos equipamentos, permitindo até 32 dispositivos em um único barramento padrão, podendo ser expandido para até 256 com transceivers especiais.
    Figura 1. Topologias a) Ponto a Ponto e b) Multiponto

    Versatilidade

    Uma das grandes vantagens do RS-485 é sua flexibilidade:

    • Conectores: O padrão não define um tipo específico de conector, permitindo o uso de diferentes modelos conforme a necessidade da aplicação. Alguns tipos são apresentados na Figura 2.
    • Protocolos de Comunicação: O RS-485 especifica apenas a camada física, ou seja, como os sinais elétricos se comportam. Ele não define protocolos de comunicação, deixando essa escolha para o desenvolvedor. Protocolos como Modbus, Profibus, DMX-512 e outros podem ser implementados sobre o RS-485.
    Figura 2. Conectores tipicamente utilizados em redes RS-485
a) Bornes parafusáveis b) Barra de pinos c) RJ-45 d) DB-9
    Figura 2. Conectores tipicamente utilizados em redes RS-485
    a) Bornes parafusáveis b) Barra de pinos c) RJ-45 d) DB-9

    Baixo Custo

    O RS-485 requer poucos componentes eletrônicos de hardware para sua implementação:

    • Microcontrolador: Responsável pelo processamento e controle da comunicação. Normalmente possui uma porta UART (Serial) conectada ao transceiver.
    • Transceiver: Componente que converte os níveis de tensão entre o microcontrolador e a rede RS-485, garantindo compatibilidade e integridade dos sinais.
    • Resistores de terminação e fail-safe bias: Utilizados para reduzir o efeito de ruídos e equilibrar o nível de tensão dos sinais A e B na rede.

    Essa simplicidade resulta em um custo reduzido, tornando o RS-485 uma opção econômica para diversas aplicações. Equipamentos com este tipo de rede são mais acessíveis quando comparados àqueles com protocolos como o EtherNet/IP, ProfiNet e outros.

    Taxas de Comunicação e Alcance

    O RS-485 oferece uma excelente relação entre velocidade de comunicação e distância:

    • Até 1.200 metros: A taxas inferiores a 100 kbps, é possível alcançar distâncias de até 1.200 metros, ideal para instalações industriais extensas, onde diversos painéis contendo controladores e inversores estão distribuídos pelo chão de fábrica.
    • Velocidades Elevadas: Para distâncias menores, como 50 metros, é possível atingir taxas de até 2 Mbps, e a 6 metros, até 10 Mbps. Estes casos de uso demandam um certo cuidado e normalmente são encontrados em redes Profibus DP.

    Essa flexibilidade permite que o RS-485 seja adaptado conforme as necessidades específicas de cada projeto.

    Alta Imunidade a Ruídos

    A robustez do RS-485 em ambientes ruidosos é alcançada através de:

    • Cabo de Par Trançado: Utiliza fios trançados para reduzir interferências eletromagnéticas, já que ruídos induzidos afetam ambos os fios de maneira similar, permitindo que sejam cancelados no par trançado.
    • Comunicação Diferencial: Transmite sinais com tensões diferenciais nos sinais A e B, que facilitam a eliminação de ruídos comuns no circuito do receptor.
    • Referência de Terra (SG): O uso de um fio de terra como referência de tensão para os transceivers melhora a estabilidade dos sinais e reduz problemas causados por diferenças de potencial entre dispositivos.
    • Blindagem e Aterramento: Técnicas adicionais de blindagem dos cabos e aterramento adequado proporcionam uma camada extra de proteção contra interferências externas.

    Topologia de rede

    A topologia recomendada é a Daisy Chain, onde as conexões dos sinas A, B e SG nos dispositivos do barramento são feitas próximas aos terminais de conexão. A Figura 3 apresenta uma das formas de instalação recomendadas para manter uma alta confiabilidade e imunidade a ruídos.

    Figura 3. Topologia recomendada para uma rede RS-485: Daisy Chain
    Fonte: https://know.innon.com/howtowire-non-optoisolated

    Comunicação Half Duplex

    No RS-485, a comunicação é half duplex, o que significa que apenas um dispositivo pode transmitir por vez no barramento. Para coordenar o acesso e evitar colisões, é necessário implementar um mecanismo de controle em protocolo, como por exemplo:

    • Protocolo Mestre-Escravo: Um dispositivo mestre inicia as comunicações, enviando requisições aos escravos, que respondem conforme solicitado. Protocolos como Modbus RTU e Profibus DP utilizam esse modelo.

    Essa abordagem garante uma comunicação organizada e eficiente entre os dispositivos conectados.

    Aplicações na Automação Industrial

    O RS-485 é amplamente utilizado em diversos dispositivos utilizados na automação de processos:

    • Controladores Lógicos Programáveis (CLPs): Muitos CLPs possuem portas RS-485 integradas ou módulos de expansão, facilitando a comunicação com outros dispositivos.
    • Interfaces Homem-Máquina (IHMs): IHMs utilizam o RS-485 para trocar informações com CLPs e outros equipamentos de controle.
    • Inversores de Frequência: Permitem o controle de motores elétricos trifásicos através de comandos enviados via RS-485.
    • Módulos de Entradas e Saídas Remotas: Sensores, atuadores e outros dispositivos distribuídos pelo chão de fábrica podem ser conectados ao sistema de controle usando o RS-485, simplificando a infraestrutura e reduzindo custos de cabeamento.

    Outros Protocolos e Aplicações

    • DH-485: Utilizado em equipamentos Allen-Bradley, é um protocolo que opera sobre o RS-485 em aplicações industriais específicas.
    • DMX-512: Amplamente empregado em iluminação profissional para controle de luminárias e dispositivos de efeitos especiais. Cada equipamento recebe um endereço e é controlado por uma mesa central através do RS-485.
    • Circuitos Fechados de TV (CFTV): Em sistemas que não utilizam Ethernet, o RS-485 é usado para controlar câmeras PTZ (Pan-Tilt-Zoom), permitindo ajustes de foco, movimento e zoom a partir de uma central de controle.

    Conclusão

    O RS-485 continua sendo uma escolha para diversas aplicações industriais e comerciais, oferecendo um equilíbrio entre desempenho, custo e robustez. Sua capacidade de operar em ambientes adversos e suportar longas distâncias de comunicação ainda o tornam atraentes em muitos sistemas.

    Se você deseja dominar o RS-485 e aplicá-lo de forma eficaz em seus projetos, ofereço um curso no Udemy que introduz você aos conhecimentos e habilidades necessárias. Aprenda sobre os detalhes técnicos, melhores práticas de instalação, protocolos de comunicação e desenvolve práticas utilizando componentes de baixo custo como Arduino e módulos RS-485. Conheça o conteúdo do Curso de Redes RS-485 acessando Link do curso no Udemy.

    Conteúdos de Comunicação de Dados e Redes

    Referências

    O curso e este artigo é pautado em uma vasta bibliografia que engloba, entre outras:

    CONTROL SOLUTIONS. RS-485 FAQ – Control Solutions. www.csimn.com. Disponível em: <https://www.csimn.com/CSI_pages/RS-485-FAQ.html>. Acesso em: 23 out. 2023.

    EEP – ELECTRICAL ENGINEERING PORTAL. 9 rules for correct cabling of the Modbus RS485 communication systems. EEP – Electrical Engineering Portal. Disponível em: <https://electrical-engineering-portal.com/correct-cabling-modbus-rs485>.

    EVERY CONTROL SOLUTIONS. Every Control – Controladores de temperatuta, umidade, pressão e tempo – Boletins. www.everycontrol.com.br. Disponível em: <https://www.everycontrol.com.br/portal/index.php/boletins>. Acesso em: 23 out. 2023.

    IF TOOLS. Serial Analyzers for RS232 and RS485. www.iftools.com. Disponível em: <https://www.iftools.com/analyzer/index.en.php>. Acesso em: 23 out. 2023.

    INNON. How do I wire RS485 devices? know.innon.com. Disponível em: <https://know.innon.com/howtowire-non-optoisolated>. Acesso em: 23 out. 2023.

    MACKAY, Steve ; AL, Et. Practical industrial data networks : design, installation and troubleshooting. Oxford ; Burlington: Newnes, 2004.

    MAXIM. Full Guide to Serial Communication Protocol and Our RS-485 |. www.maximintegrated.com. Disponível em: <https://www.maximintegrated.com/en/design/technical-documents/app-notes/3/3884.html>.

    MAXIM. General Description PART NUMBER HALF/FULL DUPLEX DATA RATE (Mbps). [s.l.: s.n.], 2014. Disponível em: <https://datasheets.maximintegrated.com/en/ds/MAX1487-MAX491.pdf>.

    MAXIM. HOW FAR AND HOW FAST CAN YOU GO WITH RS-485? [s.l.: s.n.], 2014. Disponível em: <https://pdfserv.maximintegrated.com/en/an/AN3884.pdf>.

    MAXIM. RS-485 Cable Specification Guide | Maxim Integrated. www.maximintegrated.com. Disponível em: <https://www.maximintegrated.com/en/design/technical-documents/tutorials/7/763.html>.

    NOVUS. NOVUS PRODUTOS ELETRONICOS LTDA RS485 & RS422 Basics. [s.l.: s.n., s.d.]. Disponível em: <https://www.novusautomation.com/downloads/Arquivos/rs485%20&%20rs422%20basics%20-%20english.pdf>.

    SOLTERO, Manny; ZHANG, Jing; COCKRIL, Chris; et al. Application Report RS-422 and RS-485 Standards Overview and System Configurations. [s.l.: s.n.], 2002. Disponível em: <https://www.ti.com/lit/an/slla070d/slla070d.pdf>.

    TEXAS INSTRUMENTS. SN75176B data sheet, product information and support | TI.com. www.ti.com. Disponível em: <https://www.ti.com/product/SN75176B>. Acesso em: 23 out. 2023.

    WIKIPEDIA CONTRIBUTORS. RS-485. Wikipedia. Disponível em: <https://en.wikipedia.org/wiki/RS-485>.

    Cliente Modbus RTU em Linguagem C – Windows e Porta COM

    Um Cliente Modbus RTU desenvolvido em Linguagem C para Windows, utilizando Porta COM.

    Download do código fonte

    Cliente Modbus RTU em Linguagem C no Windows (.zip)

    Download

    Enviar link de download para: / Send download link to:

    Para fazer o download deste arquivo, inscreva-se em nossa newsletter e fique por dentro de novidades e conteúdos exclusivos! Seu apoio é fundamental para que possamos continuar oferecendo material de qualidade. Muito obrigado por contribuir com a manutenção do nosso blog!

    To download this file, sign up for our newsletter and stay up to date with news and exclusive content! Your support is essential for us to continue offering quality material. Thank you very much for contributing to the maintenance of our blog!

    Link de Download do Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe

    Aula no YouTube

    Escravo Modbus RTU desenvolvido com Arduino Uno/Mega

    No post de hoje eu vou mostrar como pode ser implementado um Escravo Modbus RTU desenvolvido com Arduino Uno/Mega. O projeto também pode ser implementado no Mega e em outras versões do Arduino.

    Os objetivos desta aula prática são:

    • Utilizar um Arduino Uno/Mega como escravo/servidor Modbus RTU;
    • Montar um circuito de testes utilizando potenciômetros, botões, LEDs e resistores. Os potenciômetros e botões vão representar entradas que podem ser lidas, e os LEDs vão representar saídas digitais que podem ser escritas no escravo;
    • Mapear as entradas e saídas como endereços de registradores que serão utilizados para acesso aos dados do escravo;
    • Utilizar bibliotecas do próprio site oficial da Arduino: ArduinoModbus e ArduinoRS485;
    • Apresentar um código de exemplo (bem didático) para a configuração do escravo;
    • Testar a comunicação do escravo com o Elipse E3. O Elipse E3 é um software de supervisão, que vai agi como mestre/cliente. A partir do driver modbus.dll, vamos acessar os registradores configurados.

    No nosso canal no YouTube eu já fiz uma aula sobre o Protocolo Modbus (visão geral) e também sobre o Protocolo Modbus RTU (que detalha mais protocolo). Neste artigo, não vamos entrar em detalhes sobre os quadros e bytes que estão sendo enviados. Estaremos simplesmente aplicando esse protocolo em um nível mais abstrato.

    Aula em vídeo no YouTube

    Arquitetura da aplicação

    A Arquitetura é apresentada na Figura 1. Os dispositivos vão estar ligados pela USB/Serial. É possível também, a partir da porta Serial do Arduino Uno, utilizar módulos para montar uma rede RS-485 ou RS-232.

    Figura 1. Arquitetura da Aplicação com Escravo Modbus RTU e Arduino UNO
    Figura 1. Arquitetura da Aplicação com Escravo Modbus RTU e Arduino Uno

    Um computador rodará o Elipse E3. Este programa vai agir como o mestre/cliente. No Modbus RTU, o mestre/cliente é o único dispositivo que pode fazer requisições para os escravos/servidores. Os escravos só podem responder às requisições do mestre. O mestre faz uma requisição solicitando o estado de uma entrada ou solicitando para alterar o valor de uma saída, e o escravo vai responder confirmando ou não a essa requisição (vou, a partir daqui, utilizar apenas os termos mestre e escravo no texto).

    Definição de entradas, saídas e registradores

    O circuito que foi montado é apresentado na Figura 2. Na lista abaixo, são apresentados os componentes, as entradas, as saídas e os registradores que serão configurados na aplicação.

    • 2 botões representam entradas digitais. O tipo de dados Modbus para entradas digitais é Discrete Inputs;
    • 2 potenciômetros representam entradas analógicas. O tipo de dados para entradas analógicas é Input Registers;
    • 2 LEDs são utilizados para representar saídas digitais. O tipo de dados Modbus para saídas digitais é Coils;
    • 2 LEDs são utilizados para representar saídas analógicas. O valor escrito nestas variáveis, entre 0 e 255, será utilizado para o valor do PWM do pino. O tipo de dados Modbus para saídas analógicas é Holding Registers;
    • O LED embutido (pino 13) é controlado por uma variável interna do tipo Holding Register. Toda vez que o valor do registrador estiver acima de 1000, o LED é ativado;
    • O tempo decorrido desde a inicialização do Arduino Uno é armazenado em uma variável do tipo Holding Register que pode ser lida pelo mestre;
    • Resistores de 330 ohms são utilizados para limitar a corrente dos LEDs.
    Figura 2. Esquema Elétrico - Escravo Modbus RTU com Arduino UNO no TinkerCAD
    Figura 2. Esquema Elétrico – Escravo Modbus RTU com Arduino Uno no TinkerCAD

    A biblioteca ArduinoModbus

    No Arduino Uno vai rodar um servidor (ModbusRTUServer). Esse é um objeto que vem da biblioteca ArduinoModbus e atende às requisições que vão chegar na porta Serial. Qualquer requisição que chegar será respondida automaticamente. Além disso, o servidor mantém o valor atual de cada registrador que foi configurado na inicialização do ModbusRTUServer.

    Periodicamente, teremos que atualizar no servidor o estado das entradas, e utilizar as informações atuais no servidor para atualizar as saídas. Como usuários da biblioteca, nós precisamos chamar funções para fazer a leitura e escrita dos registradores que nós configuramos.  Em outras palavras, vamos sincronizar o estado das entradas e saídas com o ModbusRTUServer.

    As bibliotecas ArduinoModbus e ArduinoRS485 são constantemente atualizadas, e as versões atuais não têm mais compatibilidade garantida com o Arduino Uno e ao Mega. Elas estão sendo desenvolvidas para outros modelos e as versões que eu utilizei (que não dão Warnings de compilação) são a versão 1.0.7 (ArduinoModbus) e 1.0.4 (ArduinoRS485).

    Você pode instalar as bibliotecas através do Gerenciador de Bibliotecas da Arduino IDE.

    Definição dos Endereços de Registradores

    Será necessário definir os endereços de registradores para as entradas e saídas do Escravo Modbus RTU desenvolvido com Arduino Uno/Mega. A Figura 3 apresenta um resumo das configurações de pinos, tipos de dados e endereços de registradores. Os endereços estão apresentados no formato hexadecimal.

    Figura 3. Endereços de registradores configurados
    Figura 3. Endereços de registradores configurados

    Códigos-Fonte e diagramas

    Download dos arquivos de código-fonte, diagrama elétrico e configuração do driver Modbus.dll para o Elipse E3.

    Escravo Modbus RTU com Arduino UNO (.zip)

    Download

    Enviar link de download para: / Send download link to:

    Para fazer o download deste arquivo, inscreva-se em nossa newsletter e fique por dentro de novidades e conteúdos exclusivos! Seu apoio é fundamental para que possamos continuar oferecendo material de qualidade. Muito obrigado por contribuir com a manutenção do nosso blog!

    To download this file, sign up for our newsletter and stay up to date with news and exclusive content! Your support is essential for us to continue offering quality material. Thank you very much for contributing to the maintenance of our blog!

    Explicação do Código fonte

    Inicialmente, são feitas diversas definições de bibliotecas, pinos, quantidades de entradas e saídas, endereços iniciais de registradores e outras relacionadas à comunicação Serial.

    Em seguida, no setup(), configuramos os pinos como entradas e saídas. Além disso, o ModbusRTUServer precisa ser configurado com o endereço de escravo, taxa de comunicação e codificação da Serial. Por fim, configuramos os tipos de registradores que serão utilizados, bem como os endereços de cada tipo de dados e a quantidade de registradores.

    Em seguida, no loop(), faremos a atualização do ModbusRTUServer, escrevendo o estado das entradas. Depois, atualizamos os pinos de saída com os valores armazenados no ModbusRTUServer. Também acessamos o valor atual do Holding Register do LED embutido e atualizamos no ModbusRTUServer o tempo decorrido.

    Teste de comunicação com o Elipse E3

    O driver de comunicação modbus.dll, obtido diretamente do site da Elipse, foi utilizado para os testes de comunicação. O driver foi configurado para acessar a porta COM onde está ligado o Arduino Uno. Em seguida, foram configuradas as tags que conseguem acessar os dados. A Figura 4 apresenta a configuração e os parâmetros utilizados.

    Figura 4. Configuração de tags e endereços de registradores Modbus no Elipse E3
    Figura 4. Configuração de tags e endereços de registradores Modbus no Elipse E3

    Preste atenção em algumas configurações adicionais do driver modbus.dll nas Figuras 5 e 6. Na Figura 6, verifique se a taxa de comunicação (baud rate) configurada é igual à do código no Arduino. O recomendável é usar 9600 8-N-2.

    Figura 5. Configuração do driver modbus.dll no Elipse E3
    Figura 6. Configuração do driver modbus.dll no Elipse E3

    Considerações finais

    O protocolo Modbus é muito utilizado em aplicações de comunicação industrial, principalmente por ser um protocolo aberto. Sua facilidade de implementação em relação a outros protocolos, a compatibilidade com diversos equipamentos e a disponibilidade de bibliotecas e exemplos facilitam seu uso.

    Porém, ele não é um protocolo determinístico, o que significa que em aplicações hard real-time e controle crítico não é adequada a sua utilização. Ele é mais indicado em aplicações soft real-time e para aplicações de supervisão de processos.

    É importante também compreender o funcionamento das bibliotecas, suas limitações, e quais recursos do microcontrolador serão utilizados pela biblioteca, para que o uso não interfira em outras funcionalidades e bibliotecas utilizadas na aplicação.

    Referências

    Modbus (2023) Wikipedia. Available at: https://en.wikipedia.org/wiki/modbus (Acessado em 17 Jul 2023).

    Modbus Application Protocol Specification V1. Available at: https://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf (Acessado em 17 Jul 2023).

    Modbus Tools (no date) Modbus Protocol. Available at: http://www.modbustools.com/modbus.html (Acessado em 17 Jul 2023).

    Hard and soft real-time operating system – javatpoint (no date) www.javatpoint.com. Available at: https://www.javatpoint.com/hard-and-soft-real-time-operating-system (Acessado em 17 Jul 2023).

    Comunicação de Dados