
En esta lección, examinaremos el uso de variables de sistema personalizadas para vincular la interfaz de configuración basada en la web y el diseño del proyecto. También intentamos configurar la sincronización del reloj del sistema del controlador con los servidores de hora exactos.
Esta lección fue creada para la versión 3.1.4, que ahora está en pruebas previas al lanzamiento. Puedes descargarlo aquí . Puede obtener más información sobre el proyecto FLProg en el blog de la compañía en el centro , el sitio web del proyecto y el foro . Además, en el canal ArduinoProm , puede ver una gran variedad de lecciones en video.Utilizaremos el
proyecto creado en la
última lección como base.
Para comenzar, crearemos tres parámetros de usuario del sistema en los que se almacenará la hora actual del sistema del controlador, la zona horaria y la dirección del servidor horario exacto con el que nos sincronizaremos. Para hacer esto, encontramos la rama "
Agregar parámetro " en el árbol del proyecto en el nodo "
Parámetros de usuario ".

Se abrirá el cuadro de diálogo para agregar un nuevo parámetro del sistema. Rellenarlo

En el campo "
Nombre ", ingrese el nombre del parámetro. Elija el tipo de parámetro - "
Cadena ". El valor de este parámetro cambiará dinámicamente durante la operación, por lo tanto, deshabilitaremos el almacenamiento del valor del parámetro en EEPROM. Por lo tanto, no establecemos un valor predeterminado. La longitud máxima de la línea es 20 (la salida tendrá el formato
01:01:01 01-01-2018, es decir, 19 caracteres).
Agregue el segundo parámetro de la misma manera.

Simplemente deje el guardado en EEPROM, para que el controlador recuerde el servidor que ingresamos y configure el servidor de forma predeterminada.
Finalmente, cree el tercer parámetro, el valor de zona horaria, para la visualización correcta de la hora.

Tipo de parámetro
entero , asegúrese de guardar en EEPROM, el valor predeterminado de su elección (tengo 4 horas).
Como resultado, obtuvimos tres parámetros de usuario

Pasamos al esquema de firmware.
En la biblioteca de bloques de funciones, encontramos el bloque "
Obtener tiempo de un servidor NTP " y lo arrastramos al área de trabajo del circuito

Al hacer doble clic en este bloque, se abre el editor de parámetros de bloque.

Consideremos la configuración con más detalle.
Servidor NTP : la dirección del servidor desde la cual se tomará la hora exacta. Se puede establecer como una constante. Puede elegir de una lista de estándares. Revisé todo, funcionan. Para seleccionar, haga clic en el botón "
Servidor estándar ".

Pero como queremos establecer la dirección del servidor "
desde un adulto " desde la interfaz web, marque la casilla "
Iniciar sesión "
El período de la solicitud antes de recibir la primera respuesta es la frecuencia con la que el controlador "
golpeará " en el servidor hasta que reciba tiempo por primera vez. Dejamos un valor constante cada 30 segundos. También es posible configurar la entrada, luego será necesario aplicarle un valor en milisegundos.
El período de la solicitud después de recibir la primera respuesta es con qué frecuencia el controlador verificará la hora en el servidor. Salimos por defecto, una vez cada media hora. También puede configurar a través de la entrada, en milisegundos.
Zona horaria : dado que el servidor proporciona la hora en GMT, este parámetro establece el desplazamiento de la zona horaria en horas. Decidimos establecer este parámetro a través de la interfaz web, por lo que marcamos la casilla de verificación "
Iniciar sesión "
Salir de "Año" ,
Salir de "Mes" ,
Salir de "Día" ,
Salir de "Hora" ,
Salir de "Minuto" ,
Salir de "Segundo" : no los necesitamos en esta lección, así que no marcamos las casillas.
Salida
"Unix Time" : no necesitamos esta salida, no marcamos (para ser sincero, todavía no he inventado un caso de usuario para ello. Pero por si acaso, lo hice, es útil para alguien)
Total tenemos una configuración de bloque

En consecuencia, el bloque en el esquema de firmware también ha cambiado.

Busque el bloque "
Parámetros del sistema de lectura " en la biblioteca y arrástrelo al diagrama.

Haga doble clic en este bloque y comience a configurar sus parámetros.
Primero, presione el botón de selección de parámetros del sistema.

Se abre una ventana para seleccionar un parámetro del sistema. Seleccione el parámetro "
Servidor de hora "

Esto completa la configuración del bloque.
Colocamos los bloques convenientemente y conectamos la salida del bloque "
Leer parámetros del sistema " a la entrada "
Servidor " del bloque "Tiempo de
recepción del servidor NTP "

Arrastre otro bloque "
Leer parámetro del sistema " al diagrama y configúrelo para leer el parámetro "
Zona horaria ".

Conectamos la salida de este bloque a la entrada "
TimeZone " del bloque "
Tiempo de
recepción del servidor NTP "

Agregue una nueva placa al circuito. Para hacer esto, haga clic en el botón "
Agregar tablero "

Apagamos el primer tablero, ya no lo necesitaremos. Para hacer esto, haga clic en la flecha en el encabezado del primer tablero.

Extraemos el bloque "
Recepción de datos del reloj de tiempo exacto " en el circuito de la segunda placa

Haga doble clic en él para abrir el cuadro de diálogo de configuración de bloque. Al presionar el botón "
Nuevo ", activamos el diálogo de selección de reloj y seleccionamos "
Reloj del sistema controlador ".


Luego ponemos una marca "
Salida" Reloj "

Y terminamos de editar el bloque.
Luego copiamos este bloque cinco veces más, reorganizando en la configuración de cada uno de ellos una marca de verificación de la salida en la secuencia
Minuto - Segundo - Día - Mes - Año .

Ahora sacamos el bloque "
Conversión de cadenas " en el diagrama de la biblioteca.

Y en su configuración, seleccione el tipo de conversión "
Tiempo "

Copiamos el bloque cinco veces más y recopilamos el esquema

Transfiera al diagrama desde la biblioteca el bloque "
Adición de líneas "

En la configuración de bloque, establecemos 11 entradas.

Y conectamos los bloques según el esquema

En las entradas libres del bloque establecemos las constantes
Entrada 2 - ":"
Entrada 4 - ":"
Entrada 6 - Espacio
Entrada 8 - "-"
Entrada 10 - "-"
Para establecer una constante, haga clic derecho en una entrada libre y seleccione "
Insertar constante " en el menú desplegable.

Se abre la ventana de entrada constante, donde en el campo "
Valor predeterminado " se ingresa la constante requerida

Ahora sacamos el bloque "
Grabar un parámetro del sistema " de la biblioteca en el circuito

En la configuración de bloque, desmarque la casilla de verificación "
Grabar entrada de permiso " y seleccione el parámetro "
Fecha - Hora "

Conectamos la salida del bloque "
Adición de línea " con la entrada del bloque "
Registro de parámetros del sistema "

Como resultado, deberíamos obtener dicho esquema (para mayor claridad, implemente la primera placa).

Con el esquema de firmware terminado, volvemos al árbol del proyecto.
Agregaremos tres parámetros a la página principal de la interfaz web (vea cómo hacerlo en la
lección anterior ).
Parámetro 1 - Parámetro del sistema "
Fecha - Hora ", tipo de parámetro - "
Texto ", etiqueta - "
Hora "
Parámetro 2 : parámetro del sistema "
Servidor de hora exacta ", tipo de parámetro: "
Campo de entrada ", etiqueta: "
Servidor "
Parámetro 3 - Parámetro del sistema "
Zona horaria ", tipo de parámetro - "
Campo de entrada ", etiqueta - "
Zona horaria "

Active el botón "
Guardar " en la página

Vierta el programa en el controlador y vea lo que sucedió en la página principal (cómo hacer esto, vea la
lección anterior )
Inmediatamente después de la conexión, el servidor horario aún no se ha sincronizado

Después de un minuto (actualice la página): la sincronización ha pasado

Cambie la zona horaria y haga clic en guardar

El proyecto creado en la lección se puede descargar
aquí .