Skip to main content

Cómo usar rs485 y modbus con reComputer R1000

Introducción

Este artículo presenta principalmente cómo usar la función de comunicación 485 del reComputer R1000, y prueba las funciones de comunicación RS485 y Modbus.

Comenzando

Antes de iniciar este proyecto, es posible que necesites preparar tu hardware y software con anticipación como se describe aquí.

Preparación del Hardware

Software

  • Usando modbus poll en tu PC con W10. También puedes usar otras herramientas de prueba modbus
  • Usando modbusmechanic en reComputer R1000 y PC con W10. También puedes usar otras herramientas de prueba modbus
  • Usando mobaxterm en tu PC con W10. También puedes usar otras herramientas de prueba de puerto serie
  • Necesitas descargar la herramienta minicom usando el siguiente comando en el reComputer R1000:
sudo apt-get install minicom

Configuración de Hardware

Esta prueba utiliza un módulo RS485 a USB para conectar reComputer R1000 y PC W10.

pir

Para ModbusTCP, utilizamos cables Ethernet para conectar el PC W10 y reComputer R1000 a un switch para asegurar que estén en el mismo segmento de red.

pir

Configurar minicom en reComputer R1000v1.1

NOTA: Antes de usar RS485 con minicom, por favor instala los controladores r1000 como esto.

Primero, instalar minicom

Instala minicom tanto en tu computadora host como en reComputer r1000 con el comando a continuación:

sudo apt install minicom

Segundo, configura tu minicom de la siguiente manera:

Abre una terminal con Ctrl+Alt+T, e ingresa un comando como el siguiente:

sudo minicom -D /dev/ttyAMA*

El ttyAMA* debería ser ttyAMA2, ttyAMA3 o ttyAMA4 dependiendo de qué RS485 uses.

Y luego escribe Ctal+A después escribe Z verás minicom como se muestra a continuación:

pir

Escribe o para configurar minicom, y selecciona Serial port setup verás como se muestra a continuación:

pir

Y luego escribe F y H para hacer que minicom funcione en modo RS485, el resultado se mostrará como se muestra a continuación:

pir

Finalmente, selecciona Exit y escribe Enter para salir de la configuración, como se muestra a continuación:

pir

Acción requerida para reComputer R1000 v1.0

Para reComputer R1000 v1.0, el pin DE del transceptor 485 integrado está fuera de control por defecto, lo que significa que las interfaces solo pueden transmitir datos unidireccionalmente (solo recibir o solo enviar).

note

Para distinguir entre la revisión de hardware (v1.0 y v1.1), puedes consultar detalles de cambios del producto reComputer R1000 V1.1.

Ahora tenemos dos soluciones, una es cargar un módulo del kernel que intercepta el controlador UART, que recomendamos que uses, y la otra es una solución basada en la capa de aplicación que simplemente llama a libgpiod para controlar los pines DE. Puedes elegir una según tus necesidades.

Solución de módulo del kernel (recomendada)

Instalación

Primero, necesitas descargar el código fuente del módulo del kernel. Es un repositorio independiente, así que puedes clonarlo directamente.

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

A continuación, necesitas compilar el módulo del kernel.

make

Si obtienes errores durante la compilación, es posible que necesites instalar los encabezados del kernel correspondientes a tu kernel en ejecución actual. Asumimos que estás usando Raspberry Pi OS, por lo que puedes usar el siguiente comando para instalar los encabezados del kernel.

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

Después de eso, puedes compilar el módulo del kernel nuevamente.

Cargar el módulo del kernel

Una vez que se haya compilado, puedes cargar el módulo del kernel ejecutando el siguiente comando.

sudo insmod r1000v1-rs485-autoflow.ko

Si el módulo del kernel se cargó exitosamente, deberías ver el siguiente mensaje en el registro del kernel, verifica con el comando dmesg.

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

Ahora, puedes usar la herramienta minicom para probar la comunicación RS485. También puedes usar otras herramientas de prueba de puerto serie (por ejemplo, picocom).

Para cargar el kernel en el momento del arranque, puedes añadir este módulo al archivo /etc/modules usando el siguiente comando.

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

Después de registrar el módulo, necesitas reiniciar el sistema para que los cambios surtan efecto.

sudo reboot

Descargar el módulo del kernel

Para descargar el módulo del kernel, puedes ejecutar el siguiente comando, y la interfaz RS485 integrada volverá al modo de solo recepción.

sudo rmmod r1000v1-rs485-autoflow

Añadir el módulo con DKMS

DKMS (Dynamic Kernel Module Support) es un sistema que automatiza la construcción e instalación de módulos del kernel, lo que lo hace útil para gestionar módulos a través de múltiples versiones del kernel. Al usar DKMS, puedes asegurar que tus módulos permanezcan compatibles incluso después de una actualización del kernel.

Para añadir este módulo del kernel con DKMS, usa el siguiente comando:

sudo make dkms_install

Este comando registrará el módulo con DKMS, lo compilará e instalará para la versión actual del kernel. Cuando el kernel se actualice en el futuro, DKMS reconstruirá e instalará automáticamente el módulo para la nueva versión, por lo que no necesitarás recompilarlo manualmente.

Solución de capa de aplicación

Usando script

  • Además de los métodos mencionados en este artículo, también proporcionamos un script que puedes ejecutar usando el siguiente comando. Este script puede crear automáticamente un nuevo /dev/ttyx y luego usar el número de dispositivo recién creado para realizar comunicación rs485/modbus rtu es suficiente
    curl -sSL https://raw.githubusercontent.com/Seeed-Projects/R1000-RS485-Util/main/setup_rs485.sh | sudo bash

Configuración manual

Primero, necesitas descargar el programa en C proporcionado por nosotros, y luego consultar el contenido del ReadMe. Compila y ejecuta.

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 creará un nuevo dispositivo ttyAMAx, donde el número del dispositivo depende de los parámetros que ingreses al ejecutar el programa.

note
  • El ejemplo anterior muestra cómo usar una interfaz RS485. Si quieres usar tres interfaces 485, puedes usar el siguiente script para lograrlo:
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 corresponde uno a uno con ttyAMA2ttyAMA5. Use ttyAMA10ttyAMA12 en su aplicación para comunicación normal (ttyAMA2ttyAMA5 no se pueden usar, necesita usar el número de dispositivo recién creado por el script)

Pasos para usar la prueba Modbus RTU

Paso 1: Ingrese el siguiente script en reComputer R1000 para abrir el software minicom

minicom -D /dev/ttyAMAx -b 9600

Entre ellos, -D va seguido del número de dispositivo que deseas abrir, -b se refiere a la velocidad de baudios, y el número de dispositivo debe ser el número de dispositivo recién creado en el primer paso. Luego abre MobaXterm en la PC con W10, crea un nuevo terminal de puerto serie, selecciona el número de puerto serie, y la velocidad de baudios es 9600; finalmente, puedes realizar comunicación bidireccional con RS485. Como se muestra en la figura, el contenido ingresado en el reComputer R1000 puede enviarse a través de RS485. En la PC con W10, el contenido ingresado en la PC con W10 también puede enviarse al reComputer R1000, y la comunicación bidireccional es normal.

Paso 2: Después de probar la función RS485, puedes realizar la prueba de función Modbus. Este paso permite que el reComputer R1000 sea probado como un esclavo Modbus. Abre el software ModbusMechanic en el reComputer R1000, selecciona el número de dispositivo y la velocidad de baudios, luego haz clic en la función de esclavo simulado en la esquina superior izquierda para agregar dos bobinas; luego abre Modbus poll en W10 como la estación maestra para leer las bobinas de la estación esclava. Luego abre la ventana de visualización de Modbus poll, y puedes ver que los mensajes de envío y recepción de Modbus RTU son normales.

Paso 3: Este paso permite que el reComputer R1000 sea probado como un maestro Modbus. Abre el software ModbusMechanic tanto en el reComputer R1000 como en la PC con W10, y selecciona el número de dispositivo y la velocidad de baudios. La PC con W10 se refiere a la configuración del tercer paso. Selecciona Read Coils(0x01) en el reComputer R1000 para leer la bobina del esclavo, establece Slave Node en 1, Register selecciona la dirección que deseas leer, y finalmente haz clic en Transmit packet.

Pasos para usar las pruebas TCP de Modbus

Paso 1: Abre modbusmechanic en la PC con Win10 y en R1000

Paso 2: R1000 actúa como el host TCP de modbus. Haz clic en Tool => Start Slave Simulator en la PC con W10, selecciona TCP para TYPE, selecciona 1 para Slave ID, y luego agrega Coils; luego ingresa IP en R1000, y selecciona Read Coil para Scan group. Ingresa Slave Node y Register, y finalmente haz clic en Transmit packet. Puedes ver que los datos del esclavo han sido leídos exitosamente.

Paso 3: R1000 actúa como un esclavo TCP de modbus. Consulta el segundo paso para la configuración. Puedes ver que R1000 puede leer datos normalmente como un esclavo.

Ejecutar el programa esclavo TCP de Modbus en R1000 necesita escuchar en el puerto 502, lo cual puede requerir permisos sudo. Si tu aplicación no puede escuchar en el puerto 502, por favor intenta agregar permisos a la misma.

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...