
Nesta lição, examinaremos o uso de variáveis personalizadas do sistema para vincular a interface de configuração baseada na Web e o design do projeto. Também tentamos configurar a sincronização do relógio do sistema do controlador com os servidores de horário exato.
Esta lição foi criada para a versão 3.1.4, que agora está em teste de pré-lançamento. Você pode baixá-lo aqui . Você pode aprender mais sobre o projeto FLProg no blog da empresa no hub , no site do projeto e no fórum . Além disso, no canal ArduinoProm , você pode assistir a uma enorme variedade de vídeo aulas.Usaremos o
projeto criado na
última lição como base.
Para começar, criaremos três parâmetros de usuário do sistema nos quais serão armazenados o horário atual do controlador, o fuso horário e o endereço do servidor de horário exato com o qual seremos sincronizados. Para fazer isso, encontramos o ramo "
Adicionar parâmetro " na árvore do projeto, no nó "
Parâmetros do usuário ".

A caixa de diálogo para adicionar um novo parâmetro do sistema será aberta. Preencha.

No campo "
Nome ", digite o nome do parâmetro. Vamos escolher o tipo de parâmetro - "
String ". O valor deste parâmetro será alterado dinamicamente durante a operação, portanto, desativaremos o salvamento do valor do parâmetro na EEPROM. Portanto, não definimos um valor padrão. O comprimento máximo da linha é 20 (a saída será no formato
01:01:01 01-01-2018, ou seja, 19 caracteres).
Adicione o segundo parâmetro da mesma maneira.

Apenas deixe o save na EEPROM, para que o controlador se lembre do servidor que inserimos e defina o servidor por padrão.
Por fim, crie o terceiro parâmetro, o valor do fuso horário, para a exibição correta da hora.

Tipo de parâmetro
inteiro , salve na EEPROM, o valor padrão de sua escolha (eu tenho 4 horas).
Como resultado, temos três parâmetros de usuário

Passamos para o esquema de firmware.
Na biblioteca de blocos funcionais, encontramos o bloco "
Obtendo tempo de um servidor NTP " e o arrastamos para a área de trabalho do circuito

Clicar duas vezes neste bloco abre o editor de parâmetros do bloco.

Vamos considerar as configurações com mais detalhes.
Servidor NTP - o endereço do servidor a partir do qual a hora exata será usada. Pode ser definido como uma constante. Você pode escolher entre uma lista de padrões. Eu verifiquei tudo - eles funcionam. Para selecionar, clique no botão "
Servidor Padrão ".

Mas como queremos definir o endereço do servidor "
de um adulto " na interface da web, marque a caixa de seleção "
Login "
O período da solicitação antes de receber a primeira resposta é a frequência com a qual o controlador "
bata " no servidor até receber tempo pela primeira vez. Deixamos um valor constante a cada 30 segundos. Também é possível definir a entrada e, em seguida, será necessário aplicar um valor em milissegundos.
O período da solicitação após o recebimento da primeira resposta é a frequência com que o controlador verifica a hora no servidor. Partimos por padrão, uma vez a cada meia hora. Você também pode definir através da entrada, em milissegundos.
Fuso horário - Como o servidor fornece a hora no GMT, esse parâmetro define o deslocamento do fuso horário em horas. Decidimos definir esse parâmetro através da interface da web, então marcamos a caixa de seleção "
Login "
Sair de "Ano" ,
Sair de "Mês" ,
Sair de "Dia" ,
Sair de "Hora" ,
Sair de "Minuto" ,
Sair de "Segundo" - não precisamos deles nesta lição, portanto, não marque as caixas.
Saída
"Unix Time" - não precisamos dessa saída, não colocamos uma marca (para ser sincero, ainda não inventei um caso de usuário para isso. Mas, caso o tenha feito, é útil para alguém)
Total, temos uma configuração de bloco

Consequentemente, o bloco no esquema do firmware também mudou.

Encontre o bloco “
Reading system parameter ” na biblioteca e arraste-o para o diagrama.

Clique duas vezes neste bloco e comece a configurar seus parâmetros.
Primeiro, pressione o botão de seleção de parâmetro do sistema.

Uma janela para selecionar um parâmetro do sistema é aberta. Selecione o parâmetro "
Time server "

Isso completa a configuração do bloco.
Colocamos convenientemente os blocos e conectamos a saída do bloco "
Read system parameter " à entrada "
Server " do bloco "
Receive time from NTP server "

Arraste outro bloco "
Ler parâmetro do sistema " para o diagrama e configure-o para ler o parâmetro "
Fuso horário ".

Conectamos a saída desse bloco à entrada "
TimeZone " do bloco "
Receive time from NTP server "

Adicione uma nova placa ao circuito. Para fazer isso, clique no botão "
Adicionar painel "

Desligamos o primeiro painel, não precisaremos mais dele. Para fazer isso, clique na seta no cabeçalho do primeiro quadro.

Retiramos o bloco “
Recebendo dados do relógio exato ” no circuito na segunda placa

Clique duas vezes nele para acessar a caixa de diálogo de configurações do bloco. Ao pressionar o botão "
Novo ", acessamos a caixa de diálogo de seleção do relógio e selecionamos "
Relógio do sistema do controlador ".


Em seguida, colocamos um visto "
Saída" Relógio " "

E terminamos de editar o bloco.
Em seguida, copiamos esse bloco mais cinco vezes, reorganizando nas configurações de cada um deles uma marca de seleção da saída na sequência
Minuto - Segundo - Dia - Mês - Ano .

Agora puxamos o bloco "
Conversão de string " para o diagrama da biblioteca.

E nas configurações dele, selecione o tipo de conversão "
Time "

Copiamos o bloco mais cinco vezes e coletamos o esquema

Transferir para o diagrama da biblioteca o bloco "
Adição de linhas "

Nas configurações do bloco, definimos 11 entradas.

E conectamos os blocos de acordo com o esquema

Nas entradas livres do bloco, definimos as constantes
Entrada 2 - ":"
Entrada 4 - ":"
Entrada 6 - Espaço
Entrada 8 - "-"
Entrada 10 - "-"
Para definir uma constante, clique com o botão direito do mouse em uma entrada livre e selecione "
Inserir constante " no menu suspenso.

A janela de entrada constante é aberta, onde no campo "
Valor padrão " é inserida a constante necessária

Agora, retiramos o bloco "
Gravando um parâmetro do sistema " da biblioteca para o circuito

Nas configurações do bloco, desmarque a caixa de seleção "
Entrada de permissão de gravação " e selecione o parâmetro "
Data - hora "

Conectamos a saída do bloco "
Line Addition " com a entrada do bloco "
System Parameter Record "

Como resultado, devemos obter esse esquema (para maior clareza, implante a primeira placa).

Com o esquema do firmware finalizado, retornamos à árvore do projeto.
Adicionaremos três parâmetros à página principal da interface da Web (veja como fazer isso na
lição anterior ).
Parâmetro 1 - Parâmetro do sistema "
Data - Hora ", tipo de parâmetro - "
Texto ", etiqueta - "
Hora "
Parâmetro 2 - Parâmetro do sistema "
Servidor de hora exata ", tipo de parâmetro - "
Campo de entrada ", etiqueta - "
Servidor "
Parâmetro 3 - Parâmetro do sistema "
Fuso horário ", tipo de parâmetro - "
Campo de entrada ", etiqueta - "
Fuso horário "

Ligue o botão "
Salvar " na página

Coloque o programa no controlador e veja o que aconteceu na página principal (como fazer isso, consulte a
lição anterior )
Imediatamente após a conexão - o servidor de horário ainda não foi sincronizado

Após um minuto (atualize a página) - a sincronização passou

Altere o fuso horário e clique em salvar

O projeto criado na lição pode ser baixado
aqui .