Pulsa ESC para cerrar · Ctrl+K para abrir

Servidor de hora para PLC Siemens S7-1500 con NTP

Sincronización horaria desde un servidor local Windows, configurada en TIA Portal y comprobada con Wireshark.

Servidor NTP Siemens para sincronizar la hora de un PLC

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.

Hora del PLC tomada desde el PG/PC en TIA Portal

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.

1,73 s/día

Una desviación pequeña ya empieza a notarse en diagnósticos cruzados.

52 s/mes

En un mes, los eventos pueden quedar casi un minuto fuera de sitio.

10,5 min/año

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:

  1. Abrir Device configuration.
  2. Seleccionar la CPU, en este ejemplo una CPU 1515-2 PN.
  3. Entrar en Properties > General > Time of day.
  4. En Time-of-day synchronization, seleccionar Set NTP server in the project.
  5. Introducir la IP del servidor NTP, configurar el intervalo, compilar y descargar la configuración hardware.
Configuracion Time of day en TIA Portal para servidor NTP

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:

PowerShell
w32tm /query /source
w32tm /query /status
Consulta de origen y estado horario con w32tm

Activamos Windows como servidor NTP y lo anunciamos como fuente horaria válida:

PowerShell
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:

PowerShell
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
Configuracion de Windows como servidor NTP para PLC

Comprobamos que el servicio está arrancado:

PowerShell
Get-Service W32Time
Servicio W32Time arrancado en Windows

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:

PowerShell
w32tm /stripchart /computer:192.168.1.134 /samples:5 /dataonly
Prueba stripchart contra servidor NTP local

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.

Seleccion de servidor NTP definido en el proyecto TIA Portal
IP del servidor NTP local configurada en TIA Portal

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.

Cambio manual de hora en el servidor Windows y hora de módulo en TIA Portal

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.

Captura Wireshark de tramas NTP entre PLC Siemens y servidor Windows

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.

Artículos relacionados



¿Te ha servido este articulo?

Compartir en LinkedIn