Sabéis que me gustan los relojes radiocontrolados, eso de que corrijan su hora casi diariamente, y que cambien automáticamente entre el horario de verano y de invierno, me parece una gran comodidad.

Con los GPS actuales, el sistema DCF, puede parecer algo anticuado, son señales de radio moduladas, aunque si lo piensas, hoy en día todo son señales de radio. La ventaja que tiene, es que la recepción y decodificación de estas señales, es mucho más sencillo que una señal GPS, y por tanto más barato, y con menor consumo energético.

El inconveniente, es que tiene un alcance limitado, 2.000 Km desde la antena emisora en el mejor de los casos, lo que puede causar que a veces la recepción sea complicada, y además, requiere que el mantenimiento de las antenas de emisión, que se dedican exclusivamente a este fin.

Tal vez en algunos años, con tecnología de 1 nanómetro o menos, descodificar una señal GPS por hardware sea tan barato, y tan eficiente energéticamente que DCF quede en desuso, pero hasta que llegue ese día, es mi tecnología favorita para tener siempre la hora correcta. Como decían hace algunos años los señores de Diskeeper, Set it and forget it. Es decir, ponlo, y olvídate de él, porque siempre va a estar en hora.

No debería extrañaros que entre el elenco de relojes de pulsera que tengo radiocontrolados (Citizen Pilot, Casio PRW-3100, Casio MTG-M900, Casio MTG-M930, Casio GW-M5610, Casio GW-5000 o Casio GW-6900), un reloj de pared (Technoline WS 8009), un reloj de cocina (Hama PG-300), y varios relojes de sobremesa (Technoline WS 8005).

Después de esta extensísima introducción, por la que os pido disculpas, pero que deberéis entender que combina mi pasión por lo relojes, con mi pasión por los bits, y la informática, pasemos a describir el protocolo DCF-77.

La antena de Alemania (Mainfligen), con una potencia efectiva de 25 kW, emite una señal continua de 77,5 Khz. La señal consta de una manera muy bien pensada, de 59 bits, es decir, que se repite a cada minuto. La información que transporta, es la siguiente:



Si lo analizamos más en detalle, podemos referirnos a esta tabla:

BitPMAMDescripción
001MMinuto inicial. Siempre vale cero
011Reservado para alertas civiles del Bundesamt für Bevölkerungsschutz und Katastrophenwarnung (Oficina Federal de Protección Civil), y previsiones metereológicas.
021
031
041
051
061
071
081
091
100
110
120
130
140
15RVale 1 si la emisión está siendo anormal, por ejemplo con la antena de reserva.
16A1Vale 1 durante la hora anterior al cambio a horario de verano (DST o CET a CEST).
17Z1Vale 1 si es horario de verano (Central European Summer Time), 0 en caso contrario.
18Z2Vale 1 si es horario de invierno (Central European Time), 0 en caso contrario.
19A2Segundo intercalar. Si vale 1, se agregará un segundo más al día a las 12 de la noche.
20SInicio de la hora. Siempre vale 1.
211Minutos (00-59).
222
234
248
2510
2620
2740
28P1Bit de paridad de los minutos (bits 21-28).
291Horas (00-23).
302
314
328
3310
3420
35P2Bit de paridad de las horas (bits 29-35).
361Día del mes (01-31).
372
384
398
4010
4120
421Día de la semana (01:Lunes; 07:Domingo).
432
444
451Mes (01-12).
462
474
488
4910
501Año en el siglo actual (00-99).
512
524
538
5410
5520
5640
5780
58P3Bit de paridad de la fecha completa (bits 36-58).
590Vacío para llenar los 59 segundos.

Como veréis, no tiene demasiado misterio, mayormente, si ya estabais al corriente de lo que significa DST (Daylight Saving Time, o mal denominado en español como Horario de Verano); los Leap Seconds (Segundos intercalar), o la paridad.

Las particularidades, es que los datos de hora y de fecha, van codificados en BCD (Binary Coded Decimal), y que cómo podéis ver, se necesita cierta inteligencia para detectar el inicio y el final de la señal, pues en efecto, no hay marca alguna que lo indique, salvo el primer bit que vale siempre 0.

Pensemos en lo difícil que sería interceptar esa ristra de unos y ceros, en cualquier momento del tiempo, y saber qué significa qué. La primera cosa que se puede hacer, será aprovecharse que los bits 1 a 14, están de momento reservados, y valen siempre 1 (1-9), y siempre 0 (10-14), pero tampoco podemos confiar mucho en eso, porque desde el año 2003 se están llevando a cabo pruebas para transmitir alertas de protección civil, o previsiones metereológicas.

Así que jugando con los 3 bits de paridad que hay, y aplicando la consistencia a los datos, por ejemplo que los minutos o segundos no sean superiores a 59, llegaremos a discernir donde comienza, y donde termina el paquete. El proceso normal en un reloj, es que escuche la información recibida durante 2 o más minutos, para así cotejar las diferentes recepciones.

A partir de ahí, usando los bits de paridad, podemos comprobar la integridad de la señal, no es un método fiable, y no cubre toda la información transmitida, pero es mejor que nada. De nuevo, como se habrán almacenado las dos o más transmisiones anteriores, podemos volver a comparar su consistencia, que los datos coincidan, y que haya transcurrido no más de 60 segundos entre las horas retornadas.

Aunque todas emiten 59 bits, y lo hacen durante un minuto, para hacerlo más difícil todavía, el resto de antenas, usan un concepto similar, pero no envían la misma información, ni en el mismo orden que DCF:
DCF: 77,5kHz, 25 kW. Mainfligen (Alemania).
MSF: 60 kHz, 17 kW, Anthorn (Inglaterra).
HGB: 70 kHz, 20 kW, Prangins (Suiza).
JJY-40: 40 kHz, 13 kW, Fukushima (Japón).
JJY-60: 60 kHz, 23 kW, Fukuaka, Saga (Japón).
WWVB: 60 kHz, 70 kW, Fort Collins, Colorado (EE.UU.).
BPC: 68,5 kHz, 40 kW, Shangqiu, Henan (China).
RBU: 66,6 kHz, 10 kW, Moscú (Rusia).

Por ello, o bien los relojes son capaces de entender solamente una señal, como el href=”http://www.javiergutierrezchamorro.com/casio-mtg-930/1961″ target=”_blank”>MTG-M930, con variantes Waveceptor MTG-930DE o Pilot Radiocontrolado para DCF-77, o son capaces de interpretar diferentes señales. En Casio, lo llaman Multiband, y existen los Multiband 5 (DCF-77, MSF-60, HGB-70, JJY-40, JJY-60 y WWVB-60), o los Multiband 6 (que añaden al 5 BPC-68,5.

Sin embargo, no conozco ningún modelo que reciba señales RBU-66,6, y la lista de emisores es inmensa, pudiendo citar también:
TDF: 162 kHz, Allouis (Francia).
BBC: 198 kHz, Worcestershire (Inglaterra).
RJH77: 25 kHz, Arkhangelsk (Rusia).
RAB99: 25 kHz, Khabarovsk (Rusia).
RJH63: 25 kHz, Krasnodar (Rusia).
RJH90: 25 kHz, N. Novgorov (Rusia).
RJH66: 25 kHz, Chaldybar (Kazajistán).
RJH69: 25 kHz, Vileyka (Bielorusia).
RJH63: 25 kHz, Krasnodar (Rusia).
RTZ: 50 kHz, Irkutsk (Rusia).

Así que el problema es de volumen. Con señales que ofrecen un alcance limitado, y que cada una codifica la información como le viene en gana, el proceso se torna más y más complejo, pero a estas alturas, ya no es fácil unificarlo. Acabaríamos rompiendo todos los receptores que ya son capaces de entender esas señales.