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
can0y probarla concandumpycansend.
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.shRaspberry PLC V6:
wget https://apps.industrialshields.com/main/rpi/rpiplc_v6/setup-sara.sh
chmod +x setup-sara.sh
sudo ./setup-sara.sh2. 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 ppp05. 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 ppp02.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:
- Raspberry PLC V4: instala esta imagen o ejecuta este script install.sh.
- Raspberry PLC V6: instala esta imagen o ejecuta este script install.sh.
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/ttySC0Si 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.service4. 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.serviceDespué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 > Yes2. 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=125000Para la ranura de expansión 2:
dtoverlay=mcp2515,spi0-1,oscillator=10000000,interrupt=4,speed=125000Si 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 mcpDeberí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 downEl 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 can03.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.

1. Instala las utilidades CAN:
sudo apt install can-utils2. Recibe. En un terminal del primer PLC, deja can0 escuchando:
candump can03. Envía. En el segundo PLC, envía una trama de prueba con ID 111 y datos FF:
cansend can0 111#FFSi la configuración es correcta, el primer Raspberry PLC muestra la trama con ID 111 y datos FF.
¿Qué placa para cada tarea?
| Necesidad | Placa |
|---|---|
| Llegar a una máquina remota o móvil sin red cableada | 4G/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.
No hay comentarios por ahora.