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 |
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
(* ... *)