FDB_INIT

Cria uma tabela de dados no banco de dados em flash do controlador, alocando espaço para MAX_RECS registros do tipo DATA, para posterior acesso de leitura/escrita de registros; é uma função.

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

Função

            FDB_INIT
         +----------------+
         |                |
UINT ----|MAX_RECS        |---- INT
         |                |
 ANY ----|DATA            |
         |                |
         +----------------+

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 cada chamada desta função é alocado um espaço no banco de dados em flash para uma tabela com capacidade para MAX_RECS registros de dados do tipo DATA. Nesta tabela podem ser armazenados diversos tipos de registros de dados, por exemplo: configuração de setup da máquina, configuração de operação do processo, receitas para produtos da máquina, etc.

Importante

Para cada tipo de registro de dados é necessário criar uma tabela distinta, sendo que em cada tabela é possível armazenar vários registros do mesmo tipo de dados.

Quando realizada com sucesso, a função retorna um identificador TAB_ID para a tabela alocada. Este identificador deve ser utilizado posteriormente pelas funções de leitura (FDB_RD) e escrita (FDB_WR) de registros no banco de dados em flash. Se a função falhar, retorna o valor -1. Os motivos de falha são:

  • número máximo de tabelas disponíveis no equipamento foi atingido;

  • sem espaço disponível no banco de dados para alocar a tabela solicitada;

  • quantidade de registros a serem alocados na tabela inválida, por exemplo, igual a 0;

  • estrutura de dados de especificação do registro de dados inválida ou vazia.

Nota

O banco de dados em flash do controlador suporta um número de tabelas de dados a serem reservadas para leitura/escrita de registros de dados. O número máximo de tabelas suportadas é função do firmware do equipamento associado e pode ser obtido no manual do controlador.

Parâmetros

Nome

Direção

Tipo

Padrão

Faixa / Unidade

Descrição

MAX_RECS

IN

UINT

—

> 0 registros

Quantidade de registros de dados a serem alocados nesta tabela em flash.

DATA

IN_OUT

ANY

—

—

Variável cujo tipo de dado será utilizado como registro de dados da tabela.

Retorno / Saídas

Retorna um valor do tipo UINT: o identificador TAB_ID da tabela alocada no banco de dados em flash do controlador. Em caso de sucesso, o identificador vai de 0 até a capacidade máxima de tabelas disponibilizada em cada família de controlador. Se a função falhar, retorna o valor -1.

Pré-condições

  • Deve haver espaço e slots de tabela disponíveis no banco de dados em flash.

  • MAX_RECS deve ser maior que 0.

  • DATA deve referenciar uma estrutura de registro de dados válida e não vazia.

Observações

  • Para cada tipo de registro de dados crie uma tabela distinta; cada tabela armazena vários registros do mesmo tipo.

  • O número máximo de tabelas depende do firmware/família do controlador.

Ver também

FDB_RD, FDB_WR

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
    tot_rec   : UINT;     (* Número de registros a serem alocados na tabela em flash *)
    data_user : DBF_DATA; (* Variável do tipo estrutura "DBF_DATA" definida pelo usuário *)
    tab_code  : UINT;     (* Identificador da tabela criada no banco dados em flash *)
END_VAR

(* Exemplo de criação de uma tabela na flash com 2 registros do tipo "data_user" *)
tot_rec  := 2;  (* total de registros a serem alocados nesta tabela em flash *)
tab_code := HILS.FDB_INIT(MAX_RECS := tot_rec, DATA := data_user);
IF (tab_code <> -1) THEN
    (* Tabela criada com sucesso na flash *)
    (* ... *)
END_IF;