La hora del PLC no es un detalle menor. Se usa en diagnósticos, alarmas, registros de eventos, históricos y trazabilidad. Si cada equipo de la red OT tiene una hora distinta, después cuesta reconstruir qué ha pasado y en qué orden.
En este ejemplo vamos a crear un servidor NTP local en Windows, apuntar un PLC Siemens S7-1500 a ese servidor desde TIA Portal y verificar las tramas con Wireshark.
1. Qué es la hora del PLC
El PLC mantiene una hora interna que sirve como referencia para fechar eventos. En TIA Portal podemos ajustar esa hora desde el PG/PC, por ejemplo al poner en marcha una CPU o después de cargar una configuración.
Ajustar la hora una vez desde el PG/PC es útil para arrancar, pero no es una sincronización continua. Si el PLC no vuelve a consultar una fuente horaria, su reloj queda trabajando solo.
2. Por qué se acaba desviando
La CPU mantiene la hora con un oscilador interno. Ese oscilador nunca es matemáticamente perfecto y su frecuencia puede variar por tolerancia de fabricación, temperatura, envejecimiento y condiciones de alimentación.
Una desviación pequeña ya empieza a notarse en diagnósticos cruzados.
En un mes, los eventos pueden quedar casi un minuto fuera de sitio.
Sin resincronización, el error se acumula durante la vida de la instalación.
3. Sincronizar con un servidor horario
La solución buena es que el PLC consulte periódicamente un servidor horario NTP. Así todos los equipos importantes de la red trabajan con la misma referencia.
Opciones habituales:
- Servidor interno de red: por ejemplo, un controlador de dominio o un servidor central de OT. Es lo más recomendable en planta.
- Equipo dedicado NTP/PTP: usado cuando se necesita más precisión o una referencia GPS.
- Servidor externo de Internet: válido en laboratorios, pero menos habitual en redes OT aisladas.
En TIA Portal V20, la ruta del ajuste es:
- Abrir Device configuration.
- Seleccionar la CPU, en este ejemplo una CPU 1515-2 PN.
- Entrar en Properties > General > Time of day.
- En Time-of-day synchronization, seleccionar Set NTP server in the project.
- Introducir la IP del servidor NTP, configurar el intervalo, compilar y descargar la configuración hardware.
4. Ejemplo: Windows como servidor NTP local
Para una prueba de laboratorio vamos a convertir un PC Windows de la red en servidor de hora. En producción, lo normal es usar un servidor central de OT o de dominio.
Preparar Windows
Ejecuta PowerShell como administrador. Primero comprobamos de dónde obtiene la hora el PC:
w32tm /query /source
w32tm /query /status
Activamos Windows como servidor NTP y lo anunciamos como fuente horaria válida:
Set-ItemProperty `
-Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" `
-Name "Enabled" `
-Value 1
Set-ItemProperty `
-Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Config" `
-Name "AnnounceFlags" `
-Value 5
Después dejamos el servicio estable, lo reiniciamos y abrimos el puerto UDP 123 solo para la subred local:
sc.exe triggerinfo w32time delete
Set-Service -Name W32Time -StartupType Automatic
Stop-Service -Name W32Time -Force
Start-Service -Name W32Time
New-NetFirewallRule `
-DisplayName "Servidor NTP para PLC" `
-Direction Inbound `
-Protocol UDP `
-LocalPort 123 `
-RemoteAddress LocalSubnet `
-Action Allow
Comprobamos que el servicio está arrancado:
Get-Service W32Time
Probar desde otro equipo
Desde otra máquina de la misma red, por ejemplo la máquina donde está TIA Portal, probamos contra la IP del PC servidor. En el ejemplo es 192.168.1.134:
w32tm /stripchart /computer:192.168.1.134 /samples:5 /dataonly
Configurar el PLC
Ahora el PLC debe apuntar a ese servidor de hora. El PLC y el servidor tienen que estar en la misma red o tener enrutamiento permitido hasta UDP 123.
En este ejemplo el servidor se define directamente en el proyecto de TIA Portal. También podría venir por otros mecanismos de la instalación, como DHCP o configuración desde el display, según el caso.
Descargamos la configuración al PLC. Para comprobar que el PLC se corrige, cambiamos manualmente la hora del servidor Windows y vemos cómo el módulo queda referenciado a esa fuente horaria.
Validar con Wireshark
La comprobación final es mirar el tráfico. En Wireshark filtramos por ntp o por udp.port == 123. Deben verse las consultas del PLC al servidor y la respuesta NTP del PC.
La captura confirma que el PLC está consultando el servidor NTP local por UDP 123.
Resumen práctico: no dejes la hora del PLC dependiendo solo de una carga desde PG/PC. Define una fuente NTP común para toda la red OT y valida que el tráfico llega antes de darlo por bueno.