FDB_WR
Escreve o registro de dados DATA de índice REC_NUM na tabela TAB_ID do
banco de dados em memória flash; escritas consecutivas no mesmo registro exigem
intervalo maior que 2 segundos. É uma função.
Biblioteca: HI_STD · Namespace: HILS · Tipo: função
Função
FDB_WR
+---------------+
INT ---|TAB_ID |--- INT
| |
UINT ---|REC_NUM |
| |
ANY ---|DATA --------- |---
+---------------+
A função retorna um valor do tipo RET_CODE: 0 ( HILS.SUCCESS ) quando a
escrita é concluída com sucesso, ou o respectivo código de erro caso contrário.
Atenção
O intervalo entre duas escritas consecutivas em um mesmo registro da tabela
deve ser maior que 2 segundos. Caso ocorra mais de uma escrita no mesmo
registro dentro de 2 segundos, é retornado o código HILS.RE_BLOCKED e, a
partir desse instante, todas as operações de escrita no banco de dados são
bloqueadas.
O bloqueio refere-se apenas às operações de escrita, preservando a vida útil associada aos acessos de escrita na flash rom do controlador; não se aplica às operações de leitura, que permanecem disponíveis para a aplicação. Uma vez bloqueada, a escrita só é desbloqueada após o controlador ser reinicializado.
Dica
Assista ao vídeo tutorial para aprender a utilizar os blocos de função relacionados à memória flash: Banco de dados em flash.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
TAB_ID |
IN |
INT |
— |
— |
Identificador da tabela a ser acessada (obtido em FDB_INIT). |
REC_NUM |
IN |
UINT |
— |
— |
Número do registro de dados a ser escrito. |
DATA |
IN_OUT |
ANY |
— |
— |
Dado a ser atualizado na tabela do banco de dados. |
Códigos de retorno
A função retorna um valor do tipo RET_CODE. Use os identificadores com o
namespace HILS (ex.: HILS.RE_BLOCKED). Códigos mais comuns desta função:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Função executada com sucesso. |
5 |
GL_INV_PAR |
Parâmetro(s) inválido(s) (ex.: |
6 |
GL_INV_CMD |
Comando inválido. |
41 |
RE_BLOCKED |
Acesso de escrita ao banco de dados bloqueado. |
Lista completa dos códigos de retorno: RET_CODE - Códigos de retorno do firmware G5.
Retorno / Saídas
INT — código de retorno do tipo
RET_CODE: 0 (HILS.SUCCESS) em caso de sucesso; diferente de 0 indica o respectivo código de erro.
Pré-condições
A tabela
TAB_IDdeve ter sido inicializada por FDB_INIT.O tipo/tamanho de
DATAdeve corresponder ao registro definido para a tabela.
Observações
Respeite o intervalo mínimo de 2 segundos entre escritas no mesmo registro para evitar o bloqueio permanente da escrita (
HILS.RE_BLOCKED).
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
TYPE
DBF_DATA : STRUCT (* Estrutura de especificação do registro de dados *)
enable : BOOL; (* Habilitação do controle *)
setpoint : REAL; (* Valor do set point *)
histerese : REAL; (* Histerese do set point *)
tempoON : TIME; (* Tempo de operação da máquina *)
END_STRUCT;
END_TYPE
VAR
data_user : DBF_DATA; (* Variável com tipo de dados do usuário *)
reg_idx : INT; (* Índice do registro dentro da tabela em flash *)
tab_code : UINT; (* Identificador da tabela a ser acessada *)
ret_code : INT; (* Código de retorno da execução da função *)
END_VAR
(* Preenche registro de dados a ser salvo na tabela em flash *)
data_user.enable := TRUE; (* valor do campo "enable" do registro a ser escrito na flash *)
data_user.setpoint := 150.0; (* valor do campo "setpoint" do registro a ser escrito na flash *)
data_user.histerese := 1.5; (* valor do campo "histerese" do registro a ser escrito na flash *)
(* Salva o primeiro registro de dados do tipo "data_user" na tabela em flash *)
tab_code := 0; (* identificador da tabela acessada na flash, obtido da função "FDB_INIT" *)
reg_idx := 0; (* Índice do primeiro registro dentro da tabela em flash *)
ret_code := HILS.FDB_WR(TAB_ID := tab_code, REC_NUM := reg_idx, DATA := data_user);
if (ret_code = HILS.SUCCESS) then (* testa se registro escrito com sucesso na flash *)
(* trata registro salvo com sucesso na flash *)
;
end_if;
(* Salva o segundo registro de dados do tipo "data_user" na tabela em flash *)
tab_code := 0; (* identificador da tabela acessada na flash, obtido da função "FDB_INIT" *)
reg_idx := 1; (* Índice do segundo registro dentro da tabela em flash *)
ret_code := HILS.FDB_WR(tab_code, reg_idx, data_user);
if (ret_code = HILS.SUCCESS) then (* testa se registro escrito com sucesso na flash *)
(* trata registro salvo com sucesso na flash *)
;
end_if;