Ir al contenido

Placas de expansión: conectividad 4G/LTE y bus CAN

Lección 3: Placas de expansión en un Raspberry PLC

Las placas de expansión añaden interfaces de comunicación a un Raspberry PLC sin cambiar el controlador. Se pueden usar hasta 2 placas de expansión a la vez. Esta lección cubre las dos que resuelven las necesidades de conectividad más habituales en campo: 4G/LTE, para llegar a una máquina sin red cableada, y bus CAN, para comunicarte con variadores, sensores y vehículos que usan CAN.

Al final de esta lección sabrás:

  • Instalar una placa de expansión 4G/GPRS y levantar la conexión ppp0.
  • Diagnosticar problemas en los puertos serie y en el servicio pppd.
  • Configurar la placa de bus CAN, levantar can0 y probarla con candump y cansend.

1. Placas de expansión

Las placas de expansión (también llamadas módulos de expansión) son componentes de hardware que se añaden a un PLC para ampliar sus capacidades. La ranura 1 es la ranura por defecto y la ranura 2 es la segunda.

2. 4G/GPRS

La placa GPRS Click se basa en el módulo u-blox SARA-R412M. Un enlace celular es la solución habitual para supervisar máquinas remotas o móviles (estaciones de bombeo, generadores, maquinaria agrícola) donde no hay red cableada.

  • Modelo: SARA-R412M.
  • Tecnologías: LTE Cat M1 (4G), NB-IoT y GPRS / eGPRS.
  • Características clave: GSM cuatribanda, IPv4 / IPv6, doble pila.
  • Aplicaciones: supervisión remota, seguimiento de activos, vigilancia y seguridad, terminales de punto de venta.

Nota de seguridad: una conexión celular sitúa el PLC en una red pública. Usa preferiblemente un APN privado o una VPN, no expongas servicios como SSH o MQTT a Internet y usa autenticación en todos los servicios.

2.1 Instalación

Inserta la GPRS Click en una de las ranuras de expansión y sigue estos pasos.

1. Descarga el script de configuración, hazlo ejecutable y ejecútalo para tu versión de Raspberry PLC.

Raspberry PLC V4:

wget https://apps.industrialshields.com/main/rpi/rpiplc_v4/setup-gprs.sh
chmod +x setup-gprs.sh
sudo ./setup-gprs.sh

Raspberry PLC V6:

wget https://apps.industrialshields.com/main/rpi/rpiplc_v6/setup-sara.sh
chmod +x setup-sara.sh
sudo ./setup-sara.sh

2. Introduce los datos que pide el script:

  • Credenciales del APN: APN, usuario del ISP y contraseña del ISP (te las proporciona tu operador móvil).
  • RAT (Radio Access Technology), una de estas: LTE Cat M1 (4G), NB-IoT (banda estrecha) o GPRS / eGPRS.

3. Servicio creado por el script. El script crea un servicio llamado pppd (/lib/systemd/system/pppd.service) que ejecuta un archivo de Python, network-setup.py, cada vez que arranca el Raspberry PLC, así que la conexión se recupera sola tras un corte de alimentación. Sigue el registro con tail -f /var/log/syslog o journalctl -f. Al cabo de 50 a 120 segundos debería aparecer una interfaz llamada ppp0.

4. Verifica que la interfaz existe:

ip a show ppp0

5. Prueba la conexión haciendo ping a través de ppp0:

ping 8.8.8.8 -c4 -I ppp0
ping www.google.com -c4 -I ppp0

2.2 Resolución de problemas

1. Comprueba que los puertos serie están disponibles. Los puertos /dev/ttySC0 y /dev/ttySC1 deben ser visibles:

ls /dev/ttySC*

/dev/ttySC0 corresponde a la ranura de expansión 1 (por defecto) y /dev/ttySC1 a la ranura de expansión 2.

Si los puertos no aparecen, instala una imagen nueva o ejecuta el script install.sh. Los pasos dependen de tu versión:

Después reinicia el PLC y vuelve a comprobarlo.

2. Comprueba si el puerto serie está en uso. Si no puedes comunicarte con el módulo, mira qué proceso ocupa el puerto:

sudo lsof /dev/ttySC0

Si está ocupado, detén el proceso con sudo kill [PID], donde PID es el ID del proceso que muestra lsof. Asegúrate también de que el puerto serie está configurado para uso de hardware y no como consola de inicio de sesión: sudo raspi-config → Interface Options → Serial Port → login shell: No → serial port hardware: Yes.

3. Verifica que el servicio pppd se está ejecutando:

systemctl status pppd.service

4. Prueba manualmente si falta ppp0. Primero detén el servicio pppd (y check-ppp0 si existe):

sudo systemctl stop check-ppp0.service   # if it exists
sudo systemctl stop pppd.service

Después ejecuta el script de Python creado por la instalación, donde RAT es gprs, nb-iot o lte-m:

python3 /usr/local/bin/network-setup.py [RAT]

3. Bus CAN

CAN (Controller Area Network) es un bus robusto, diferencial y multimaestro diseñado para entornos ruidosos. Se usa en maquinaria móvil, variadores, sistemas de baterías y muchos sensores industriales, y es la base sobre la que funcionan protocolos de nivel superior como CANopen. La placa de expansión CAN usa el controlador MCP2515:

  • Modelo: MCP2515, CAN 2.0B.
  • Velocidad: hasta 1 Mb/s.
  • Características: buffer de recepción, máscaras y filtros, filtrado sobre los dos primeros bytes de datos, tres buffers de transmisión con priorización y aborto.
  • Interfaz: SPI de alta velocidad (10 MHz).
  • Aplicaciones: comunicación con cualquier dispositivo CAN y con los protocolos basados en CAN.

3.1 Configuración

1. Activa SPI:

sudo raspi-config   # Interface Options > SPI > Yes

2. Edita el archivo de configuración de arranque según la versión de tu sistema operativo: sudo nano /boot/config.txt para Bullseye, o sudo nano /boot/firmware/config.txt para Bookworm. Asegúrate de que estas líneas están presentes.

Para la ranura de expansión 1:

dtoverlay=spi1-3cs
dtoverlay=mcp2515,spi1-2,oscillator=10000000,interrupt=4,speed=125000

Para la ranura de expansión 2:

dtoverlay=mcp2515,spi0-1,oscillator=10000000,interrupt=4,speed=125000

Si faltan las líneas, añádelas al final del archivo, guárdalo y reinicia el PLC.

3. Verifica que el MCP2515 se ha inicializado:

dmesg | grep mcp

Deberías ver algo como mcp251x spi1.2 can0: MCP2515 successfully initialized.

4. Configura la interfaz de red CAN. Asegúrate de que existe un archivo llamado can0 en /etc/network/interfaces.d/ con este contenido (si falta, créalo y reinicia):

auto can0
iface can0 inet manual
	pre-up /sbin/ip link set can0 type can bitrate 500000 triple-sampling on restart-ms 100
	up /sbin/ifconfig can0 up
	down /sbin/ifconfig can0 down

El bitrate (aquí 500000 bit/s) debe ser el mismo en todos los nodos del bus. Cámbialo para que coincida con tu red.

5. Comprueba que aparece la interfaz can0:

ip a show can0

3.2 Prueba

Conecta dos nodos CAN como se muestra en la imagen (CANH con CANH, CANL con CANL) y sigue los pasos para una prueba sencilla. En un bus real, usa cable de par trenzado y una resistencia de terminación de 120 Ω en cada extremo de la línea.

Conexión de dos placas de bus CAN de Raspberry PLC

1. Instala las utilidades CAN:

sudo apt install can-utils

2. Recibe. En un terminal del primer PLC, deja can0 escuchando:

candump can0

3. Envía. En el segundo PLC, envía una trama de prueba con ID 111 y datos FF:

cansend can0 111#FF

Si la configuración es correcta, el primer Raspberry PLC muestra la trama con ID 111 y datos FF.

¿Qué placa para cada tarea?

NecesidadPlaca
Llegar a una máquina remota o móvil sin red cableada4G/GPRS (LTE Cat M1, NB-IoT, GPRS)
Comunicarte con dispositivos CAN (variadores, sensores, redes CANopen)Bus CAN (MCP2515)

Siguiente paso

La siguiente lección usa estas comunicaciones para intercambiar datos con Modbus y construir un SCADA con Node-RED. Descubre la gama Raspberry PLC en www.industrialshields.com.

Calificación
0 0

No hay comentarios por ahora.

para ser el primero en comentar.

1. Una estación de bombeo no tiene red cableada. ¿Qué placa de expansión da conectividad remota al Raspberry PLC?
2. Después de ejecutar el script de configuración 4G no hay interfaz ppp0. ¿Qué es lo primero que debes comprobar?
3. Dos nodos de un bus CAN no se entienden aunque el cableado es correcto. ¿Cuál es la causa más probable?