SET_CLOCK_CALENDAR

Programa o relógio/calendário (RTC) do equipamento a partir de um valor LINT em milissegundos contados desde 1 de janeiro do ano base; é uma função (retorna um código de execução, não mantém estado entre scans).

Biblioteca: HI_STD · Namespace: HILS · Tipo: função

Função

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

A entrada BASE_YEAR seleciona o ano de referência do valor em milissegundos: 0 usa 1/jan/2000 (referência de todas as variáveis de data e hora do ambiente) e 1 usa 1/jan/1970 (época compatível com sistemas UNIX). A entrada TIME_ZONE define o fuso horário, em minutos, a ser gravado no relógio/calendário.

Atenção

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

Nota

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

Para obter o dia da semana e demais informações do relógio do controlador, use o recurso de Variáveis de sistema através da função GET_SYSVAR.

Parâmetros

Nome

Direção

Tipo

Padrão

Faixa / Unidade

Descrição

DT_IN_MSECS

IN

LINT

0

ms

Número de milissegundos a partir de 1 de janeiro do ano base.

BASE_YEAR

IN

USINT

0

0 ou 1

Ano base: 0 = 1/jan/2000; 1 = 1/jan/1970 (época UNIX).

TIME_ZONE

IN

INT

-180

minutos

Fuso horário do local, em minutos (default -180 = -3:00h).

Retorno / Saídas

Retorna INT. O valor 0 (HILS.SUCCESS) indica que o RTC foi programado com sucesso conforme os parâmetros fornecidos. Qualquer valor diferente de zero indica falha na escrita do RTC; nesse caso o relógio/calendário permanece com os valores anteriores. Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.

Pré-condições

  • O valor em DT_IN_MSECS deve estar coerente com o ano base selecionado em BASE_YEAR.

  • A aplicação deve tolerar a paralisação de 1 a 2 segundos causada pela escrita do RTC.

Observações

  • A escrita do RTC é uma operação lenta; evite executá-la em ciclos frequentes.

Ver também

GET_SYSTIME

Exemplo

Clique aqui para baixar a tabela de variáveis

Código ST

VAR
    prg_dt   : DT := DT#2008-06-25-15:36:55; (* Valor a ser programado no RTC *)
    dt_msecs : LINT;                         (* Valor do RTC em milissegundos *)
    ret_code : INT;                          (* Código de retorno da execução da função *)
END_VAR

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

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

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

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

end_if;
(* ... *)