Un Raspberry PLC responde en 10.10.10.20 por eth0 y en 10.10.11.20 por eth1. En la imagen de Industrial Shields, estas direcciones de fábrica se definen en /etc/network/interfaces.d/eth0_1 y eth1_1: para cambiar una, edita su línea address y reinicia. Para dar al PLC una dirección de la red de tu planta, usa nmcli en Bookworm, o dhcpcd.conf en imágenes anteriores, y comprueba el resultado con ip a.
Esta guía es específica del Raspberry PLC y de sus dos puertos Ethernet. Para un TouchBerry Pi Panel PC o cualquier Raspberry Pi, el método general está en cómo fijar una IP estática con nmcli, nmtui o dhcpcd.conf.
La primera versión de este post solo editaba dhcpcd.conf. Ese método funciona en imágenes hasta Bullseye, pero el Raspberry PLC actual viene con Debian Bookworm de 64 bits, donde dhcpcd no se usa.
- Paso 1ConéctateTeclado y pantalla, o SSH a 10.10.10.20
- Paso 2CompruebaDirecciones y versión del sistema
- Paso 3CambiaDirección de fábrica o de planta
- Paso 4Vuelve a conectarteSSH a la nueva dirección e ip a
Las direcciones de fábrica de un Raspberry PLC
| Puerto | Dirección de fábrica | Definida en |
|---|---|---|
eth0 | 10.10.10.20/24 | /etc/network/interfaces.d/eth0_1 |
eth1 | 10.10.11.20/24 | /etc/network/interfaces.d/eth1_1 |
Estas direcciones son alias llamados eth0:1 y eth1:1: una segunda dirección en cada puerto. El script install.sh de Industrial Shields crea los dos archivos.
La dirección principal de cada puerto es otro ajuste. La gestiona NetworkManager en Bookworm, y dhcpcd en imágenes anteriores. Por defecto pide una dirección por DHCP.
Así, un mismo puerto puede tener dos direcciones: la de fábrica, para conectarte desde un portátil, y una de tu red. Puedes cambiar cualquiera de las dos.
Paso 1: conéctate al Raspberry PLC
Hay dos formas:
- Teclado y pantalla. Conecta un teclado USB y una pantalla HDMI, inicia sesión y abre un terminal.
- SSH. Da a tu PC una dirección de la misma red, pero no la misma dirección, por ejemplo
10.10.10.10con máscara255.255.255.0. Conecta el cable del PC aeth0y abre un terminal en el PC.
ssh [email protected]
Inicia sesión con el usuario y la contraseña de tu imagen. En la imagen de la captura son pi y raspberry, y el propio sistema avisa de que es un riesgo de seguridad. Cambia la contraseña con passwd.
Paso 2: comprueba las direcciones y el sistema
ip a show eth0
cat /etc/os-release
ls /etc/network/interfaces.d/
En la salida de ip a, la dirección de fábrica aparece con la etiqueta eth0:1. Una dirección 169.254.x.x indica que ningún servidor DHCP ha respondido en ese puerto, algo normal con un cable directo a un PC.
La línea VERSION_CODENAME de /etc/os-release te dice qué método se aplica:
| Versión | Dirección principal del puerto | Dirección de fábrica |
|---|---|---|
| Bookworm (Debian 12) | NetworkManager: nmcli | eth0_1 y eth1_1 |
| Bullseye (Debian 11) y anteriores | dhcpcd: /etc/dhcpcd.conf | eth0_1 y eth1_1 |
Paso 3, opción A: cambia la dirección de fábrica
Úsala cuando solo necesitas otra dirección fija en el puerto, por ejemplo 10.10.10.19 para un segundo PLC en la misma red del portátil. Funciona igual en Bookworm y en imágenes anteriores, porque el archivo lo lee ifupdown, no NetworkManager ni dhcpcd.
sudo nano /etc/network/interfaces.d/eth0_1
Cambia la línea address y mantén la máscara:
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 10.10.10.19
netmask 255.255.255.0
Guarda con Ctrl+O, sal con Ctrl+X y reinicia:
sudo reboot
Para eth1, edita eth1_1 de la misma forma. Apunta la nueva dirección: la necesitas para conectarte por SSH.
Paso 3, opción B: una dirección de la red de tu planta (Bookworm)
Úsala cuando el PLC va a una red con un router, un SCADA u otros PLC. En Bookworm, NetworkManager gestiona la dirección principal de cada puerto. Lista las conexiones:
nmcli connection show
La conexión de eth0 suele ser Wired connection 1, y la de eth1, Wired connection 2. Mira la columna DEVICE y usa el nombre que veas.
Fija la dirección, la puerta de enlace y el servidor DNS, y reinicia:
sudo nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1
sudo reboot
El cambio se guarda en la conexión y se mantiene en cada reinicio. Después del reinicio, comprueba con ip a show eth0 que el puerto tiene la nueva dirección y, si mantienes el archivo eth0_1, también la 10.10.10.20.
Pon puerta de enlace solo en el puerto que va al router. Para el segundo puerto, por ejemplo una red de máquina, fija solo la dirección:
sudo nmcli connection modify "Wired connection 2" ipv4.method manual ipv4.addresses 192.168.2.50/24
sudo reboot
Si la red de tu planta usa 10.10.10.0/24 o 10.10.11.0/24, cambia o desactiva antes la dirección de fábrica (opción A), para que la misma subred no esté en dos puertos. Para usar el menú nmtui o volver a DHCP, consulta la guía general.
Imágenes anteriores (Bullseye y antes): dhcpcd.conf
Las imágenes del Raspberry PLC hasta Bullseye usan dhcpcd. Este es el método de la primera versión de este post, y solo funciona ahí: en Bookworm, editar dhcpcd.conf no tiene ningún efecto.
sudo nano /etc/dhcpcd.conf
El archivo trae un ejemplo comentado:
Quita el # de las líneas que necesites y escribe tus valores. La primera versión de este post fijaba 10.10.10.19 en eth0:
Solo hacen falta dos líneas:
interface eth0
static ip_address=10.10.10.19/24
static routers es la puerta de enlace de tu red: añádela solo si hay un router, con su dirección real. static domain_name_servers es el servidor DNS, y la línea de IPv6 puede quedar comentada.
En este ejemplo la nueva dirección está en la misma red que la de fábrica, así que la primera versión desactivaba la 10.10.10.20 comentando todas las líneas de eth0_1:
Guarda los archivos y reinicia con sudo reboot.
Paso 4: vuelve a conectarte y comprueba
Conéctate a la nueva dirección. El PC debe estar en la misma subred:
ssh [email protected]
La primera vez, SSH pregunta si confías en el equipo de la nueva dirección. Escribe yes.
Si SSH muestra REMOTE HOST IDENTIFICATION HAS CHANGED, otro equipo usó antes esa dirección. Borra la clave antigua y vuelve a conectarte:
ssh-keygen -R 10.10.10.19
Después comprueba la dirección en el PLC:
ip a show eth0
Si no puedes conectarte, usa el teclado y la pantalla. Revisa las direcciones con ip a y corrige el archivo o la conexión.
Preguntas frecuentes sobre la dirección IP de un Raspberry PLC
¿Puedo quitar la dirección de fábrica 10.10.10.20?
Sí. Comenta todas las líneas de eth0_1 y reinicia. Antes, asegúrate de tener otra forma de llegar al PLC: una dirección de tu red, o un teclado y una pantalla.
¿Por qué mi cambio en dhcpcd.conf no hace nada?
Porque el PLC funciona con Bookworm, donde dhcpcd no se usa. Usa nmcli para la dirección principal, o el archivo eth0_1 para la dirección de fábrica.
¿Se sigue usando /etc/network/interfaces?
Solo para las direcciones de fábrica, mediante los archivos de /etc/network/interfaces.d/ que instala la imagen de Industrial Shields. La dirección principal del puerto se fija con NetworkManager o con dhcpcd.
¿Puede el PLC recibir la dirección de un servidor DHCP?
Sí, es lo que hace por defecto con la dirección principal. En una planta es más seguro una dirección fija o una reserva DHCP en el router, porque un SCADA o un cliente encuentra el PLC por su dirección.
Guías relacionadas
- IP estática en un TouchBerry Pi o un Raspberry PLC con nmcli, nmtui o dhcpcd.conf
- Instalar un sistema operativo en el Raspberry PLC
- Servidor TCP con Node.js y cliente TCP con Node.js
La familia Raspberry PLC tiene dos puertos Ethernet y Debian Bookworm de 64 bits preinstalado.
Para ir más allá
Con dos puertos Ethernet, un Raspberry PLC puede estar entre una red de máquina y la red de planta. Estas páginas lo muestran en proyectos reales.
Caso de estudio
Pasarela de datos de seguidores solares con un Raspberry PLC
Un Raspberry PLC por bloque recoge los datos de las filas de seguidores y los pasa al SCADA de la planta.
Leer el caso de estudio
PLC Solution Library
Socket TCP entre Python y Node-RED en un Raspberry PLC
Un proceso de control en Python y un dashboard de Node-RED intercambian datos de un encoder y órdenes de marcha, paro y salida por TCP.
Ver el ejemplo