FDB_WR

Escreve um registro de dados DATA com índice REC_NUM da tabela TAB_ID no banco de dados em flash.

Dica

Assista ao vídeo tutorial para aprender a utilizar os blocos de função relacionados a memória flash: Banco de dados em flash.

A função retorna resultado do tipo “UINT” como um valor do tipo RET_CODE, podendo este ser HILS.SUCCESS se executada com sucesso, caso contrário, indica o respectivo código de erro.

Atenção

O intervalo entre duas escritas consecutivas em um mesmo registro da tabela no banco de dados deve ser maior que 2 segundos. Caso ocorra mais de uma escrita no mesmo registro em um intervalo de 2 segundos, é retornado código de erro HILS.RE_BLOCKED, e a partir deste instante todas as operações de escrita no banco de dados são bloqueadas.

Este bloqueio refere-se apenas às operações de escrita visando preservar a vida útil associada aos acessos de escrita no banco de dados em flash rom do controlador, e desta forma não se aplica as operações de leitura no banco de dados que permanecem disponíveis para a aplicação. Uma vez bloqueada a operação de escrita, a mesma somente é debloqueada após o controlador ser reinicializado.

Bloco

             FDB_WR
        +---------------+
 INT ---|TAB_ID         |--- INT
        |               |
UINT ---|REC_NUM        |
        |               |
 ANY ---|DATA --------- |---
        +---------------+

Parâmetro

Nome

Classe

Tipo

Descrição

TAB_ID

Entrada

INT

Identificador da tabela a ser acessada.

REC_NUM

Entrada

UINT

Nro do registro de dados a ser acessado

DATA

Entrada/Saída

ANY

Data a ser atualizado na tabela do banco

Retorno

Tipo Dado

Descrição

INT

Código de retorno na execução da função, do tipo RET_CODE, onde:

  • Se for igual a 0: Função executada com sucesso, código HILS.SUCCESS

  • Se for diferente de 0: Falha na execução da função indica o respectivo código de erro. [3]

A tabela abaixo ilustra alguns dos possíveis código de retorno desta função.

RESULT

LABEL [4]

Descrição

0

HILS.SUCCESS

Função executada com sucesso.

6

HILS.RC_GL_INV_CMD

Comando inválido.

5

HILS.GL_INV_PAR

Parâmetro(s) inválido(s). Por exemplo, TAB_ID inválida, Tamanho do parâmetro DATA inválido.

41

HILS.RE_BLOCKED

Acesso de escrita ao banco de dados bloqueado.

Exemplo

Declaração de Tipos de Dados

Exemplo de declaração de uma estrutura de dados definida pelo usuário, a ser utilizada para especificar os registros de dados a serem lidos/escritos na tabela em flash.

Tipos de Dados

Derivação

Nome

Tipo

Dimensão

Descrição

DBF_DATA

Estrutura

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

Declaração de Variáveis

Nome

Tipo

Descrição

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

Clique aqui para baixar a tabela de variáveis

Código ST

(* Preenche registro de dados a ser salvo na tabela em flash *)
(* ... *)
data_base.enable    := TRUE;  (* valor do campo "enable" do registro a ser escrito na flash    *)
data_base.setpoint  := 150.0; (* valor do campo "setpoint" do registro a ser escrito na flash  *)
data_base.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, obtida da função "FDB_INIT" *)
reg_idx  := 0;  (* Indice 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 escrita do registro 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, obtida da função "FDB_INIT" *)
reg_idx  := 1;  (* Indice 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 escrita do registro com sucesso na flash *)
  (* trata registro salvo com sucesso na flash *)
  (* ... *)
end_if;
(* ... *)