SET_CLOCK_CALENDAR

Programa o valor do relógio/calendario do equipamento associado a partir de uma variável do tipo LINT que especifica o número de milisegundos a partir de 1 de janeiro do ano base.

A entrada BASE_YEAR quando igual a 0 representa o ano de 2000 que é o ano de referência para todas as as variáveis de data e tempo do ambiente. Quando igual a 1 representa o ano de 1970 que é utilizado por sistema compatíveis com UNIX para representar um valor de data/hora em milisegundos.

A entrada TIME_ZONE define o fuso horário em minutos que se deseja utilizar para programar o relógio calendário do equipamento.

Atenção

O processo de atualização do relógio calendário (RTC) é lento e irá paralizar o equipamento por cerca de 1 a 2 segundos. Portanto, utilize este recurso com restrições e apenas quando necessário e considere que a aplicação irá permanecer inativa durante este período.

Bloco

          SET_CLOCK_CALENDAR
         +------------------+
LINT ----|DT_IN_MSECS       |---- INT
         |                  |
BOOL ----|BASE_YEAR         |
         |                  |
 INT ----|TIME_ZONE         |
         +------------------+

Nome

Classe

Tipo

Dim.

V. Ini.

Descrição

DT_IN_MSECS

Entrada

LINT

0

Nro de milisegundos a partir de 1 de janeiro do ano base

BASE_YEAR

Entrada

USINT

0

0: ano base = 1/jan/2000, 1: ano base = 1/jan/1970

TIME_ZONE

Entrada

INT

-180

Time zone do local em minutos (default -3:00h)

Nota

Se desejar obter a data/hora em uma variável do tipo “DATE_AND_TIME” utilize a função “GET_SYSTIME()” da biblioteca HI_STD.

Se desejar obter informação sobre o dia da semana, a mesma pode ser obtida através do recurso de Variáveis de sistema. Através da função GET_SYSVAR é possível obter todas as informações do relógio do controlador além do dia da semana corrente.

Retorno

Tipo Dado

Descrição

INT

Código de retorno da função. Se retornado o valor zero indica que a função foi executada com sucesso e os valores do RTC foram programados de acordo com os parâmetros fornecidas. Caso contrário indica falha no processo de escrita do RTC. Neste caso, o RTC permanecerá programado com os valores anteriores.

Exemplo

Declaração de Variáveis

Nome

Tipo

Valor Inicial

Descrição

prg_dt

DT

DT#2008-06-25-15:36:55

Valor a ser programado no RTC

dt_msecs

LINT

valor do RTC em segundos

ret_code

INT

Código de retorno da execução da função

Clique aqui para baixar a tabela de variáveis

Código ST

(* ... *)
(* Exemplo de utilização da função SET_CLOCK_CALENDAR na POU *)

// Converte o valor de DATE_TIME em milisegundos
dt_msecs := DT_TO_LINT(prg_dt) * 1000;

// Programa o relógio calendario com a data base de 2000 e
// fuso horário de Brasília (-3:00)
ret_code := HILS.SET_CLOCK_CALENDAR(dt_in_secs, 0, -180);
if (ret_code = HILS.SUCCESS) then
  (* Valor do RTC programado corretamente do equipamento *)
  (* ... *)

else
  (* Trata condição de erro na programacao do RTC do equipamento *)
  (* ... *)

end_if
(* ... *)