Pular para o conteúdo principal

Como usar rs485 e modbus com reComputer R1000

Introdução

Este artigo apresenta principalmente como usar a função de comunicação 485 do reComputer R1000 e testa as funções de comunicação RS485 e Modbus.

Começando

Antes de iniciar este projeto, você pode precisar preparar antecipadamente seu hardware e software, conforme descrito aqui.

Preparação de Hardware

reComputer R1000

Software

  • Usando modbus poll no seu PC com W10. Você também pode usar outras ferramentas de teste Modbus
  • Usando modbusmechanic no reComputer R1000 e no PC com W10. Você também pode usar outras ferramentas de teste Modbus
  • Usando mobaxterm no seu PC com W10. Você também pode usar outras ferramentas de teste de porta serial
  • Você precisa baixar a ferramenta minicom usando o seguinte comando no reComputer R1000:
sudo apt-get install minicom

Configuração de Hardware

Este teste usa um módulo RS485 para USB para conectar o reComputer R1000 e o PC com W10.

pir

Para ModbusTCP, usamos cabos Ethernet para conectar o PC com W10 e o reComputer R1000 a um switch para garantir que eles estejam no mesmo segmento de rede.

pir

Configurar minicom no reComputer R1000v1.1

NOTA: Antes de usar RS485 com minicom, instale os drivers do r1000 como aqui.

Primeiro, instale o minicom

Instale o minicom tanto no seu computador host quanto no reComputer r1000 com o comando abaixo:

sudo apt install minicom

Segundo, configure seu minicom da seguinte forma:

Abra um terminal com Ctrl+Alt+T e insira o comando como abaixo:

sudo minicom -D /dev/ttyAMA*

O ttyAMA* deve ser ttyAMA2, ttyAMA3 ou ttyAMA4 dependendo de qual RS485 você usa.

E então digite Ctal+A e depois digite Z, você verá o minicom como abaixo:

pir

Digite o para configurar o minicom e selecione Serial port setup; você verá como abaixo:

pir

E então digite F e H para colocar o minicom no modo RS485; o resultado será mostrado como abaixo:

pir

Por fim, selecione Exit e pressione Enter para sair da configuração, como abaixo:

pir

Ação necessária para reComputer R1000 v1.0

Para o reComputer R1000 v1.0, o pino DE do transceptor 485 integrado fica fora de controle por padrão, o que significa que as interfaces só podem transmitir dados de forma unidirecional (apenas receber ou apenas enviar).

nota

Para distinguir entre as revisões de hardware (v1.0 e v1.1), você pode consultar Detalhes de mudanças do produto reComputer R1000 V1.1.

Agora temos duas soluções, uma é carregar um módulo de kernel que intercepta o driver UART, que recomendamos que você utilize, e a outra é uma solução baseada em camada de aplicação que simplesmente chama o libgpiod para controlar os pinos DE. Você pode escolher uma com base em suas necessidades.

Solução com módulo de kernel (recomendado)

Instalação

Primeiro, você precisa baixar o código-fonte do módulo de kernel. É um repositório independente, então você pode cloná-lo diretamente.

git clone https://github.com/bclswl0827/r1000v1-rs485-autoflow
cd r1000v1-rs485-autoflow

Em seguida, você precisa compilar o módulo de kernel.

make

Se você estiver recebendo erros durante a compilação, talvez precise instalar os cabeçalhos do kernel correspondentes ao kernel atualmente em execução. Presumimos que você esteja usando Raspberry Pi OS, então você pode usar o seguinte comando para instalar os cabeçalhos do kernel.

sudo apt-get install linux-headers-$(uname -r)

Depois disso, você pode compilar o módulo de kernel novamente.

Carregar o módulo de kernel

Depois que ele for compilado, você pode carregar o módulo de kernel executando o seguinte comando.

sudo insmod r1000v1-rs485-autoflow.ko

Se o módulo de kernel for carregado com sucesso, você deverá ver a seguinte mensagem no log do kernel; verifique-a com o comando dmesg.

[  256.037465] r1000v1_rs485_autoflow: RS-485 interface has been hooked successfully

Agora, você pode usar a ferramenta minicom para testar a comunicação RS485. Você também pode usar outras ferramentas de teste de porta serial (por exemplo, picocom).

Para carregar o kernel na inicialização, você pode adicionar este módulo ao arquivo /etc/modules usando o seguinte comando.

echo "r1000v1_rs485_autoflow" | sudo tee -a /etc/modules

Depois que o módulo for registrado, você precisa reiniciar o sistema para que as alterações entrem em vigor.

sudo reboot

Descarregar o módulo de kernel

Para descarregar o módulo de kernel, você pode executar o seguinte comando, e a interface RS485 integrada retornará ao modo somente recepção.

sudo rmmod r1000v1-rs485-autoflow

Adicionar o módulo com DKMS

DKMS (Dynamic Kernel Module Support) é um sistema que automatiza a compilação e instalação de módulos de kernel, sendo útil para gerenciar módulos em várias versões de kernel. Usando o DKMS, você pode garantir que seus módulos permaneçam compatíveis mesmo após uma atualização de kernel.

Para adicionar este módulo de kernel com DKMS, use o seguinte comando:

sudo make dkms_install

Este comando registrará o módulo no DKMS, irá compilá-lo e instalá-lo para a versão atual do kernel. Quando o kernel for atualizado no futuro, o DKMS irá automaticamente reconstruir e instalar o módulo para a nova versão, então você não precisará recompilá-lo manualmente.

Solução em camada de aplicação

Usando script

  • Além dos métodos mencionados neste artigo, também fornecemos um script que você pode executar usando o comando a seguir. Este script pode criar automaticamente um novo /dev/ttyx e então usar o número de dispositivo recém-criado para realizar comunicação rs485/modbus rtu, o que é suficiente
    curl -sSL https://raw.githubusercontent.com/Seeed-Projects/R1000-RS485-Util/main/setup_rs485.sh | sudo bash

Configuração manual

Primeiro, você precisa baixar o programa em C que fornecemos e, em seguida, consultar o conteúdo do ReadMe. Compile e execute.

git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays
cd seeed-linux-dtoverlays/tools/rs485_control_DE/
sudo apt-get install libgpiod-dev
gcc -o rs485_DE rs485_DE.c -lgpiod
sudo ./rs485_DE /dev/ttyAMA2 /dev/gpiochip0 6 /dev/ttyAMA10

Este programa criará um novo dispositivo ttyAMAx, onde o número do dispositivo depende dos parâmetros que você insere ao executar o programa.

nota
  • O exemplo acima mostra como usar uma interface RS485. Se você quiser usar três interfaces 485, pode usar o seguinte script para consegui-lo:
sudo ./rs485_DE /dev/ttyAMA2 /dev/gpiochip0 6 /dev/ttyAMA10 &
sudo ./rs485_DE /dev/ttyAMA3 /dev/gpiochip0 17 /dev/ttyAMA11 &
sudo ./rs485_DE /dev/ttyAMA5 /dev/gpiochip0 24 /dev/ttyAMA12 &

ttyAMA10ttyAMA12 correspondem a ttyAMA2ttyAMA5 um a um. Use ttyAMA10ttyAMA12 em sua aplicação para comunicação normal (ttyAMA2ttyAMA5 não podem ser usados; você precisa usar o número de dispositivo recém-criado pelo script)

Etapas para usar o teste Modbus RTU

Etapa 1: Insira o seguinte script no reComputer R1000 para abrir o software minicom

minicom -D /dev/ttyAMAx -b 9600

Entre eles, -D é seguido pelo número do dispositivo que você deseja abrir, -b se refere à taxa de baud, e o número do dispositivo precisa ser o número de dispositivo recém-criado na primeira etapa. Em seguida, abra o MobaXterm no PC com W10, crie um novo terminal de porta serial, selecione o número da porta serial e a taxa de baud é 9600; por fim, você pode realizar comunicação bidirecional com RS485. Como mostrado na figura, o conteúdo inserido no reComputer R1000 pode ser enviado via RS485. No PC com W10, o conteúdo inserido no PC com W10 também pode ser enviado para o reComputer R1000, e a comunicação bidirecional é normal.

Passo 2: Após testar a função RS485, você pode realizar o teste da função Modbus. Esta etapa permite que o reComputer R1000 seja testado como um escravo Modbus. Abra o software ModbusMechanic no reComputer R1000, selecione o número do dispositivo e a taxa de baud, depois clique na função de escravo simulado no canto superior esquerdo para adicionar duas bobinas; em seguida, abra o Modbus poll no W10 como estação mestre para ler as bobinas da estação escrava. Depois abra a janela de exibição do Modbus poll, e você verá que as mensagens de envio e recebimento do Modbus RTU estão normais.

Passo 3: Esta etapa permite que o reComputer R1000 seja testado como um mestre Modbus. Abra o software ModbusMechanic tanto no reComputer R1000 quanto no PC W10, e selecione o número do dispositivo e a taxa de baud. O PC W10 se refere ao terceiro passo de configuração. Selecione Read Coils(0x01) no reComputer R1000 para ler a bobina do escravo, defina Slave Node como 1, em Register selecione o endereço que você deseja ler e, por fim, clique em Transmit packet.

Etapas para usar o teste Modbus TCP

Passo 1: Abra o modbusmechanic no PC Win10 e no R1000

Passo 2: O R1000 atua como host Modbus TCP. Clique em Tool => Start Slave Simulator no PC W10, selecione TCP para TYPE, selecione 1 para Slave ID e depois adicione Coils; em seguida, insira o IP no R1000 e selecione Read Coil para Scan group. Insira Slave Node e Register e, por fim, clique em Transmit packet. Você pode ver que os dados do escravo foram lidos com sucesso.

Passo 3: O R1000 atua como um escravo Modbus TCP. Consulte o segundo passo para a configuração. Você pode ver que o R1000 pode ler dados normalmente como escravo.

Executar o programa de escravo Modbus TCP no R1000 precisa escutar a porta 502, o que pode exigir permissões sudo. Se o seu aplicativo não conseguir escutar a porta 502, tente adicionar permissões a ele.

Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...