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: |
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_MSECSdeve estar coerente com o ano base selecionado emBASE_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
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;
(* ... *)