.. include:: glb_defs.txt .. |ico| image:: ../shared_img/_cmd/m7.png Acesso Randômico à Data Flash ################################ +---------------------------------------------------------------------------+ |:ref:`Bloco de Controle Padrão` | +=======+===================================================================+ |Função |Acesso Rondômico à Data Flash | +-------+-------------------------------------------------------------------+ |Código |**032** | +-------+-------------------------------------------------------------------+ |Caminho|Programa/Editor Ladder/Elementos/Especiais/Bloco de controle Padrão| +-------+-------------------------------------------------------------------+ |Grupo |Especiais | +-------+-------------------------------------------------------------------+ |Ícone ||ico| | +-------+-------------------------------------------------------------------+ .. only:: hitec +-----------------------------------+ |:ref:`compatibilidade de firmware` | +---------------------+-------------+ |Geração de Firmware |GII, GII-DUO | +---------------------+-------------+ A função deste bloco é viabilizar o acesso à estrutura de FIFO na Data-Flash. Para inseri-lo no programa, deve-se posicionar o cursor na posição desejada, selecionar no menu à esquerda o grupo "Especiais" e clicar no botão correspondente, |ico| .. note:: A execução deste comando pode levar vários ciclos de scan para ser concluído. Portanto, verifique a condição da saída do bloco para certificar-se que o processo está terminado e, avalie o valor para parâmetro P4 para identificar possíveis falhas. Ler um Registro de Dados ************************** +-------------------------------------------------------------------------------------------+ |Ler um registro de dados da FIFO da Data-Flash e transferi-lo para a base de dados do PLC. | +============+======+=========+=============================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+---------+-------------------------------------------------------------+ |P1 |K |0..Max(K)|Função do bloco SCB de acesso a DATAFLASH. Deve ser uma | | | | |constante inteira, cujo o valor deve ser 32. | +------------+------+---------+-------------------------------------------------------------+ |P2 |M |M[x + 0] |Código da função DataFlash FIFO Read = código 1. | | | +---------+-------------------------------------------------------------+ | | |M[x + 1] |Identificador da FIFO a ser acessada na data flash [0..3]. | | | +---------+-------------------------------------------------------------+ | | |M[x + 2] |Quantidade de registros R,M,D a acessar [1..255] na | | | | |FIFO da data flash. | | | +---------+-------------------------------------------------------------+ | | |M[x + 3] |Identificador da variável (R,M ou D) associada ao | | | | |campo 1 do registro,a ser lido na FIFO.da !DataFlash. | | | +---------+-------------------------------------------------------------+ | | |M[x + 4] |Identificador da variável (R,M ou D) associada ao campo 2, | | | | |se existir, do registro a ser lido na FIFO.da !DataFlash. | | | +---------+-------------------------------------------------------------+ | | |M[x + 5] |Identificador da variável (R,M ou D) associada ao campo 3, | | | | |se existir, do registro a ser lido na FIFO.da !DataFlash. | | | +---------+-------------------------------------------------------------+ | | |M[x + 6] |Identificador da variável (R,M ou D) associada ao campo 4, | | | | |se existir, do registro a ser lido na FIFO.da !DataFlash. | | | +---------+-------------------------------------------------------------+ | | |M[x + 7] |Identificador da variável (R,M ou D) associada ao campo 5, | | | | |se existir, do registro a ser lido na FIFO.da !DataFlash. | +------------+------+---------+-------------------------------------------------------------+ |P3 |M |M[y + 0] |Quantidade de registro de dados efetivamente lidos na FIFO | | | | |da data flash. A quantidade de registros lidos deve ser | | | | |menor ou igual a quantidade de registros especificados no | | | | |parâmetro de entrada P2, índice "M[x+2]". | +------------+------+---------+-------------------------------------------------------------+ |P4 |M |M[z + 0] |Código de retorno da execução da função, onde: **Igual a 0** | | | | |Indica função executada com sucesso **Diferente de 0** - | | | | |Indica condição de falha. Vide a lista de códigos de retorno.| +------------+------+---------+-------------------------------------------------------------+ Salvar um Registro de Dados ***************************** +---------------------------------------------------------------------------------------------+ |Salvar um registro de dados definido na base de dados do PLC na FIFO da Data-Flash. | +============+======+==========+==============================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+--------------------------------------------------------------+ |P1 |K |0..Max(K) |Função do bloco SCB de acesso à DATAFLASH. Deve | | | | |ser uma constante inteira, cujo o valor deve ser 32. | +------------+------+----------+--------------------------------------------------------------+ |P2 |M |M[x + 0] |Código da função DataFlash FIFO Write = código 2. | | | +----------+--------------------------------------------------------------+ | | |M[x + 1] |Identificador da FIFO a ser acessada na data flash [0..3]. | | | +----------+--------------------------------------------------------------+ | | |M[x + 2] |Quantidade de registros R,M,D a escreverr [1..255] na FIFO | | | | |da data flash. | | | +----------+--------------------------------------------------------------+ | | |M[x + 3] |Identificador da variável (R,M ou D) associada ao campo 1 | | | | |do registro a ser escrito na FIFO da DataFlash. | | | +----------+--------------------------------------------------------------+ | | |M[x + 4] |Identificador da variável (R,M ou D) associada ao campo 2, | | | | |do registro se existir, a ser escrito na FIFO da DataFlash. | | | +----------+--------------------------------------------------------------+ | | |M[x + 5] |Identificador da variável (R,M ou D) associada ao campo 3, | | | | |se existir, do registro, a ser escrito na FIFO da DataFlash. | | | +----------+--------------------------------------------------------------+ | | |M[x + 6] |Identificador da variável (R,M ou D) associada ao campo 4, | | | | |se existir, do registro a ser escrito na FIFO.da DataFlash. | | | +----------+--------------------------------------------------------------+ | | |M[x + 7] |Identificador da variável (R,M ou D) associada ao campo 5, | | | | |se existir, do registro a ser escrito na FIFO.da DataFlash. | +------------+------+----------+--------------------------------------------------------------+ |P3 |M |M[y + 0] |Quantidade de registro de dados efetivamente escritos na | | | | |FIFO da data flash. A quantidade de registros escritos deve | | | | |ser menor ou igual a quantidade de registros especificados | | | | |no parâmetro de entrada P2, índice "M[x+2]". | +------------+------+----------+--------------------------------------------------------------+ |P4 |M |M[z + 0] |Código de retorno da execução da função, onde: **Igual a 0** -| | | | |Indica função executada com sucesso **Diferente de 0** - | | | | |Indica condição de falha. Vide a lista de códigos de retorno. | +------------+------+----------+--------------------------------------------------------------+ Salvar os Dados Armazenados no Buffer Intermediário **************************************************** +-------------------------------------------------------------------------------------------+ |Salvar os dados armazenados no buffer intermediário ("flush") da FIFO na Data-Flash. | +============+======+==========+============================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+------------------------------------------------------------+ |P1 |K |0..Max(K) |Função do bloco SCB de acesso à DATAFLASH. Deve ser uma | | | | |constante inteira, cujo o valor deve ser 32. | +------------+------+----------+------------------------------------------------------------+ |P2 |M |M[x + 0] |Código da função DataFlash FIFO Flush = código 3. Salvar os | | | | |dados armazenados no buffer intermediário da Data-Flash. | | | | |Este buffer é parte da DataFlash e é automaticamente salvo | | | | |pelo controlador, a cada mudança de página da memória, ou | | | | |quando a mesma estiver completa. Deste modo, somente será | | | | |necessário utilizar esta função quando a aplicação terminou | | | | |de enviar os dados necessários para a !DataFlash e necessita| | | | |que os dados sejam efetivamente salvos na FIFO da DataFlash.| | | +----------+------------------------------------------------------------+ | | |M[x + 1] |Identificador da FIFO a ser acessada na data flash [0..3]. | +------------+------+----------+------------------------------------------------------------+ |P3 |M |M[y + 0] |Parâmetro não utilizado para esta função (parâmetro dummy). | +------------+------+----------+------------------------------------------------------------+ |P4 |M |M[z + 0] |Código de retorno da execução da função, onde: | | | | |**Igual a 0** - Indica função executada com sucesso | | | | |**Diferente de 0** - Indica condição de falha. | | | | |Vide a lista de códigos de retorno. | +------------+------+----------+------------------------------------------------------------+ Executar Função "Erase" ************************** +------------------------------------------------------------------------------------------+ |Executar função "erase" na FIFO da Data-Flash | +============+======+==========+===========================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+-----------------------------------------------------------+ |P1 |K |0..Max(K) |Função do bloco SCB de acesso à "DATAFLASH". Deve ser uma | | | | |constante inteira, cujo o valor deve ser 32. | +------------+------+----------+-----------------------------------------------------------+ |P2 |M |M[x + 0] |Código da função "DataFlash FIFO Erase" = código 4 | | | +----------+-----------------------------------------------------------+ | | |M[x + 1] |Identificador da FIFO a ser acessada na data flash [0..3]. | +------------+------+----------+-----------------------------------------------------------+ |P3 |M |M[y + 0] |Parâmetro não utilizado para esta função (parâmetro dummy).| +------------+------+----------+-----------------------------------------------------------+ |P4 |M |M[z + 0] |Código de retorno da execução da função, onde: | | | | |**Igual a 0** - Indica função executada com sucesso | | | | |**Diferente de 0** - Indica condição de falha. Vide | | | | |:ref:`tabela de códigos de erro` | +------------+------+----------+-----------------------------------------------------------+ Obter o Status da FIFO na Data-Flash ************************************** +----------------------------------------------------------------------------------------+ |Obter o status da FIFO na Data-Flash | +============+======+==========+=========================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+---------------------------------------------------------+ |P1 |K |0..Max(K) |Função do bloco SCB de acesso à "DATAFLASH". Deve | | | | |ser uma constante inteira, cujo o valor deve ser 32. | +------------+------+----------+---------------------------------------------------------+ |P2 |M |M[x + 0] |Código da função "DataFlash FIFO Status" = código 5 | | | +----------+---------------------------------------------------------+ | | |M[x + 1] |Identificador da FIFO a obter o status na data | | | | |flash [0..3] | +------------+------+----------+---------------------------------------------------------+ |P3 |M |M[x + 0] |Total de bytes escritos no bloco corrente de | | | | |escrita da FIFO. | | | +----------+---------------------------------------------------------+ | | |M[y + 1] |Total de blocos de 32K completos já escritos na FIFO. | | | +----------+---------------------------------------------------------+ | | |M[y + 2] |Capacidade em bytes do ultimo bloco corrente na FIFO. | | | +----------+---------------------------------------------------------+ | | |M[y + 3] |Capacidade em numero de blocos de 32K completos na FIFO. | +------------+------+----------+---------------------------------------------------------+ |P4 |M |M[z + 0] |Código de retorno da execução da função, onde: | | | | |**Igual a 0** - Indica função executada com sucesso | | | | |**Diferente de 0** - Indica condição de falha. Vide | | | | |:ref:`tabela de códigos de erro` . | +------------+------+----------+---------------------------------------------------------+ Códigos de Erros de P4 ************************** +---------------------------------------------------------------------------------------------------------------------+ |Códigos de Erros de P4 | +==============+======================================================================================================+ |Código de erro|Descrição | +--------------+------------------------------------------------------------------------------------------------------+ |**0** |Função executada com sucesso. Nenhuma falha identificada no processo. | +--------------+------------------------------------------------------------------------------------------------------+ |**5** |Parâmetros inválidos na chamada da função de acesso à data flash. **Exemplo**: | | |Código da função de acesso da data flash diferente de "!DataFlash Read”, "DataFlash Write", "DataFlash| | |Flush", "DataFlash Erase" ou "DataFlash Status" **Exemplo**: Chamada da função "DataFlash Read” com o | | |parâmetro de quantidade de registros a serem lidos igual a 0 (ZERO). | +--------------+------------------------------------------------------------------------------------------------------+ |**24** |Controlador não possui a !DataFlash. **Exemplo**: Chamada de uma função de acesso à !DataFlash, mas o | | |controlador não possui o hardware (opcional) associado à !DataFlash. | +--------------+------------------------------------------------------------------------------------------------------+ |**205** |Variável R, M ou D acessada na base de dados de aplicação não está definida na base de dados da | | |aplicação. **Exemplo**: Solicitar a leitura de dados da DataFlash e nem todas as variáveis R, M ou D, | | |indicadas como destino dos dados, estão alocadas na base de dados da aplicação. **Por exemplo**, | | |solicitar a leitura de 100 memórias M da data flash, que serão salvas nas memórias M200 a M299, mas | | |na base de dados da aplicação têm-se alocadas até a memória M250. **Exemplo**: Solicitar a escrita de | | |dados na DataFlash e nem todas as variáveis R, M ou D, indicadas como origem dos dados estão alocadas | | |na base de dados da aplicação. **Por exemplo**, solicitar a escrita de 50 memórias D, cujos valores | | |estão nas memórias D100 a D149, mas na base de dados da aplicação têm-se alocadas até a memória D120. | +--------------+------------------------------------------------------------------------------------------------------+ |**206** |Base de dados associada à variável R, M ou D, acessada na base de dados de aplicação, não possui | | |nenhuma variável alocada. **Exemplo**: Solicitar a leitura de dados da DataFlash e as variáveis R, M | | |ou D, indicadas como destino dos dados, não possuem nenhuma variável alocada na base de dados da | | |aplicação. Por exemplo, solicitou a leitura de um registro de dados composto por variável M e D, e não| | |existe base de variáveis D alocados na aplicação Ladder. **Exemplo**: Solicitar a escrita de dados | | |na DataFlash e as variáveis R, M ou D, indicadas como origem dos dados, não possuem nenhuma variável | | |alocada na base de dados da aplicação. **Por exemplo**, solicitou a escrita de um registro de dados | | |composto por variável R e M, e não existe base de variáveis R alocados na aplicação Ladder. | +--------------+------------------------------------------------------------------------------------------------------+ |**223** |Erro no acesso à data flash do controlador. | +--------------+------------------------------------------------------------------------------------------------------+ Entradas ========= +---------------------------------------------------------------------------------------+ |Descrição das Entradas | +=========+=========+========+==========================================================+ |Entrada |Função |Estado |Descrição | +---------+---------+--------+----------------------------------------------------------+ |A1 |Ativação |Inativo |Neste estado o bloco não executa nenhuma ação, repassando | | | | |apenas o estado inativo para a saída B1. | | | +--------+----------------------------------------------------------+ | | |Ativo |Neste estado o bloco executa a funcionalidade associada | | | | |ao mesmo. OBS: Cabe ressaltar que, para o bloco SCB, esta | | | | |entrada opera por transição ou seja, o bloco é executado | | | | |apenas quando a entrada A1 muda do estado inativo para | | | | |o estado ativo. Uma vez ativada, a entrada A1 deverá | | | | |permanecer ativa até o término da execução da função que | | | | |é sinalizado através da ativação da saida B1 do bloco. | +---------+---------+--------+----------------------------------------------------------+ Saída ======= +-----------------------------------------------------------------------------------+ |Descrição das Saídas | +=======+==============+========+===================================================+ |Saída |Função |Estado |Descrição | +-------+--------------+--------+---------------------------------------------------+ |B1 |Ativação/Falha|Inativo |A saída B1 sempre estará inativa se a entrada | | | | |A1 estiver inativa. Quando a entrada A1 for | | | | |ativada a saída B1 permanecerá inativa enquando | | | | |o bloco estiver executando o comando associado | | | | |indicando que o processo ainda não terminou. | | | +--------+---------------------------------------------------+ | | |Ativo |Indica fim de execução do processo associado ao | | | | |bloco. Para identificar se a função foi executada | | | | |com sucesso é necessário examinar o parâmetro P4, | | | | |que contém o código indicando o resultado da | | | | |execução do processo associado. Para mais | | | | |informações sobre os códigos disponíveis para | | | | |esta função consulte a `Códigos de Erros de P4`_ . | +-------+--------------+--------+---------------------------------------------------+ Nas aplicações é possível mesclar os :ref:`Tipos de Variáveis` a serem salvas na Data-Flash, de modo a permitir salvar registros de dados compostos pelas variáveis R, M e D. De maneira análoga, permite-se a leitura de registros de dados compostos por variáveis R, M e D. Para saber a capacidade de armazenamento, deve ser verificado na especificação do controlador a ser utilizado. Para utilizar a FIFO da data flash dos controladores, é necessário configurar a quantidade de FIFOS e os campos de cada FIFO. Para isso, deve-se entrar no ambiente de programação e selecionar o :ref:`Setup de Programa` Deve-se verificar a disponibilidade de Data-Flash para cada modelo de controlador utilizado, pois pode ser um item opcional, ou mesmo pode não estar disponível.