.. include:: glb_defs.txt .. |ico| image:: ../shared_img/_cmd/m7.png Variáveis Tipo Texto ####################### +---------------------------------------------------------------------------+ |:ref:`Bloco de Controle Padrão` | +-------+-------------------------------------------------------------------+ |Função |Variáveis Tipo Texto | +-------+-------------------------------------------------------------------+ |Código |**245** | +-------+-------------------------------------------------------------------+ |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, G3, G3S, G3R| +-------------------+--------------------------+ A função deste bloco é viabilizar o acesso um conjunto de funções de operação de texto.Este bloco é executado em um único ciclo de scan do programa Ladder. 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| Parâmetros ************ +--------------------------------------------------------------------------------+ |Função de Tamanho de Texto | +============+=======+==========+================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+-------+----------+------------------------------------------------+ |P1 |K |Max(K) |Função do bloco SCB de acesso às funções de | | | | |operações de texto. Deve ser uma constante | | | | |inteira, cujo o valor deve ser 245. | +------------+-------+----------+------------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para obter o tamanho de um texto. No caso, | | | | |deve possuir o valor numérico 1. | | | +----------+------------------------------------------------+ | | |M[x + 1] |Identificador da variável Texto (X0..Xn) a | | | | |ser obtido o tamanho. | +------------+-------+----------+------------------------------------------------+ |P3 |M |M[y + 0] |Se a função foi realizada com sucesso, | | | | |retorna o tamanho do texto. Se valor 0(zero) | | | | |indica texto NULO, caso contrario, indica o | | | | |número de caracteres do texto. | +------------+-------+----------+------------------------------------------------+ |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` . | +------------+-------+----------+------------------------------------------------+ +------------------------------------------------------------------------------+ |Função de Comparar Textos | +============+======+==========+===============================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+-----------------------------------------------+ |P1 |K | Max(K) |Função do bloco SCB de acesso às funções de | | | | |operações de texto. Deve ser uma constante | | | | |inteira, cujo o valor deve ser 245. | +------------+------+----------+-----------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para comparação de dois textos. No caso, | | | | |deve possuir o valor numérico 2. | | | +----------+-----------------------------------------------+ | | |M[x + 1] |Identificador da 1ª variável Texto | | | | |(X0..Xn) a ser comparada. | | | +----------+-----------------------------------------------+ | | |M[x + 2] |Identificador da 2ª variável Texto (X0..Xn) | | | | |a ser comparada. | +------------+------+----------+-----------------------------------------------+ |P3 |M |M[y + 0] |Se a função foi realizada com sucesso, | | | | |retorna o resultado da comparação entre as | | | | |duas variáveis texto, onde: 0: variáveis texto | | | | |são iguais. 1: variáveis texto são diferentes. | +------------+------+----------+-----------------------------------------------+ |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` . | +------------+------+----------+-----------------------------------------------+ +------------------------------------------------------------------------------------+ |Função de Concatenar textos | +============+======+==========+=====================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+-----------------------------------------------------+ |P1 |K | Max(K) |Função do bloco SCB de acesso às funções de | | | | |operações de texto. Deve ser uma constante | | | | |inteira, cujo valor deve ser 245. | +------------+------+----------+-----------------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para concatenação de dois textos. No caso, | | | | |deve possuir o valor numérico 3. | | | +----------+-----------------------------------------------------+ | | |M[x + 1] |Identificador da 1ª variável Texto (X0..Xn) | | | | |a ser concatenada. | | | +----------+-----------------------------------------------------+ | | |M[x + 2] |Identificador da 2ª variável Texto (X0..Xn) | | | | |a ser concatenada. | | | +----------+-----------------------------------------------------+ | | |M[x + 3] |Identificador da variável Texto (X0..Xn) | | | | |resultante a ser armazenada o texto concatenado. | +------------+------+----------+-----------------------------------------------------+ |P3 |M |M[y + 0] |Se a função foi realizada com sucesso, retorna | | | | |o tamanho da variável texto resultante da | | | | |operação de concatenação. | +------------+------+----------+-----------------------------------------------------+ |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` . | +------------+------+----------+-----------------------------------------------------+ +---------------------------------------------------------------------------------+ |Função de Limpar Textos | +============+======+==========+==================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+--------------------------------------------------+ |P1 |K | Max(K) |Função do bloco SCB de acesso às funções | | | | |de operações de texto. Deve ser uma | | | | |constante inteira, cujo valor deve ser 245. | +------------+------+----------+--------------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para limpar um texto. No caso,deve possuir | | | | |o valor numérico 4. | | | +----------+--------------------------------------------------+ | | |M[x + 1] |Identificador da variável Texto (X0..Xn) | | | | |a ser limpo. | +------------+------+----------+--------------------------------------------------+ |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` . | +------------+------+----------+--------------------------------------------------+ +-------------------------------------------------------------------------+ |Função de Eliminar SubTexto | +==========+=====+=========+==============================================+ |Parâmetros|Tipos|Valores |Descrição | +----------+-----+---------+----------------------------------------------+ |P1 |K | Max(K) |Função do bloco SCB de acesso às funções | | | | |de operações de texto. Deve ser uma | | | | |constante inteira, cujo valor deve ser 245. | +----------+-----+---------+----------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para eliminar um subtexto de um texto. No | | | | |caso, deve possuir o valor numérico 10 | | | +---------+----------------------------------------------+ | | |M[x + 1] |Identificador da variável Texto (X0..Xn) a | | | | |ser eliminada o subtexto. | | | +---------+----------------------------------------------+ | | |M[x + 2] |Índice da variável texto, indicando o início | | | | |do subtexto a ser eliminado. O primeiro | | | | |índice corresponde ao primeiro caractere do | | | | |texto, sendo identificado pelo índice 1. | | | +---------+----------------------------------------------+ | | |M[x + 3] |Quantidade de caracteres a serem eliminados | | | | |do texto. | +----------+-----+---------+----------------------------------------------+ |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` . | +----------+-----+---------+----------------------------------------------+ +---------------------------------------------------------------------------------+ |Função de Copia SubTexto | +============+======+===========+=================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+-----------+-------------------------------------------------+ |P1 |K | Max(K) |Função do bloco SCB de acesso às funções | | | | |de operações de texto. Deve ser uma | | | | |constante inteira, cujo valor deve ser 245. | +------------+------+-----------+-------------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para procurar um caractere em um texto. No | | | | |caso, deve possuir o valor numérico 11 | | | +-----------+-------------------------------------------------+ | | |M[x + 1] |Identificador da variável Texto (X0..Xn) | | | | |origem a ser pesquisado o caractere. | | | +-----------+-------------------------------------------------+ | | |M[x + 2] |Código ASCII do caractere a ser pesquisado | | | | |na variável Texto. | +------------+------+-----------+-------------------------------------------------+ |P3 |M |M[y + 0] |Se a função foi realizada com sucesso, retorna | | | | |o resultado da pesquisa do caractere navariável | | | | |Texto. No caso, representa o índice da variável | | | | |texto onde foi encontrado o caractere. Assim, | | | | |pode-se ter: 0: Caractere não encontrado na | | | | |variável texto. 1..N: Índice da variável | | | | |texto onde foi encontrado o caractere. | +------------+------+-----------+-------------------------------------------------+ |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`. | +------------+------+-----------+-------------------------------------------------+ +-------------------------------------------------------------------------------+ |Função de Procurar Caractere | +============+======+==========+================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+------------------------------------------------+ |P1 |K |Max(K) |Função do bloco SCB de acesso às funções de | | | | |coperações de texto. Deve ser uma onstante | | | | |inteira, cujo valor deve ser 245. | +------------+------+----------+------------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para procurar um caractere em um texto. No | | | | |caso, deve possuir o valor numérico 20. | | | +----------+------------------------------------------------+ | | |M[x + 1] |Identificador da variável Texto (X0..Xn) | | | | |origem a ser pesquisado o caractere. | | | +----------+------------------------------------------------+ | | |M[x + 2] |Código ASCII do caractere a ser pesquisado | | | | |na variável Texto. | +------------+------+----------+------------------------------------------------+ |P3 |M |M[y + 0] |Se a função foi realizada com sucesso, | | | | |retorna o resultado da pesquisa do caractere | | | | |na variável Texto. No caso, representa o | | | | |índice da variável texto onde foi encontrado o | | | | |caractere. Assim, podemos ter: 0: Caractere não | | | | |encontrado na variável texto. 1..N: Índice da | | | | |variável texto onde foi encontrado o caractere. | +------------+------+----------+------------------------------------------------+ |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` . | +------------+------+----------+------------------------------------------------+ +--------------------------------------------------------------------------+ |Função de Substituir Caractere | +============+======+=========+============================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+---------+--------------------------------------------+ |P1 |K |Max(K) |Função do bloco SCB de acesso às funções | | | | |de operações de texto. Deve ser uma | | | | |constante inteira, cujo valor deve ser 245. | +------------+------+---------+--------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para substituir um caractere em um texto. | | | | |No caso, deve possuir o valor numérico 21 | | | +---------+--------------------------------------------+ | | |M[x + 1] |Identificador da variável Texto (X0..Xn) | | | | |origem a ser substituído o caractere. | | | +---------+--------------------------------------------+ | | |M[x + 2] |Índice da variável texto, indicando a | | | | |posição do caractere a ser substituído. | | | +---------+--------------------------------------------+ | | |M[x + 3] |Código ASCII do novo caractere a ser | | | | |substituído na variável Texto. | +------------+------+---------+--------------------------------------------+ |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` . | +------------+------+---------+--------------------------------------------+ +-------------------------------------------------------------------------------+ |Função de Obter Caractere | +============+======+==========+================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+----------+------------------------------------------------+ |P1 |K | Max(K) |Função do bloco SCB de acesso às funções | | | | |de operações de texto. Deve ser uma | | | | |constante inteira, cujo valor deve ser 245. | +------------+------+----------+------------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação | | | | |para obter um caractere em um texto. No | | | | |caso, deve possuir o valor numérico 22 | | | +----------+------------------------------------------------+ | | |M[x + 1] |Identificador da variável Texto (X0..Xn) | | | | |origem a ser obtido o caractere. | | | +----------+------------------------------------------------+ | | |M[x + 2] |Índice da variável texto, indicando a | | | | |posição (1..n) do caractere a ser obtido. | +------------+------+----------+------------------------------------------------+ |P3 |M |M[y + 0] |Código do caracter obtido no índice | | | | |especificado da string. | +------------+------+----------+------------------------------------------------+ |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` . | +------------+------+----------+------------------------------------------------+ +--------------------------------------------------------------------------------------+ |Função de Ajustar Casas Decimais | +============+======+=========+========================================================+ |Parâmetros |Tipos |Valores |Descrição | +------------+------+---------+--------------------------------------------------------+ |P1 |K |Max(K) |Função do bloco SCB de acesso às funções de | | | | |operações de texto. Deve ser uma constante | | | | |inteira, cujo valor deve ser 245. | +------------+------+---------+--------------------------------------------------------+ |P2 |M |M[x + 0] |Código do subcomando associado à operação para | | | | |configurar o número de casas decimais a serem | | | | |apresentadas na conversão de variáveis do tipo D | | | | |para X. No caso, deve possuir o valor numérico 30. | | | +---------+--------------------------------------------------------+ | | |M[x + 1] |Número de casas decimais apresentadas na conversão | | | | |de um valor em ponto flutuante para string. Pode ser | | | | |um valor entre 0..10 para firmware GII e G3, e um valor | | | | |entre 0..5 para firmware G3S. A especificação do valor | | | | |0 (zero) converte o valor em ponto flutuante sem casas | | | | |decimais. O valor padrão para esta conversão são de | | | | |3 (três) casas decimais. | +------------+------+---------+--------------------------------------------------------+ |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` . | +------------+------+---------+--------------------------------------------------------+ Códigos de erros de P4 ======================== +--------------+---------------------------------------------------------------+ |Código de erro|Descrição | +--------------+---------------------------------------------------------------+ | **0** |Função executada com sucesso. Nenhuma falha identificada | | |no processo. | +--------------+---------------------------------------------------------------+ | **5** |Algum parâmetro associado à operação texto é inválido. | | |Por exemplo: O número do índice especificado de um texto é | | |invalido. Por exemplo, se uma variável texto possui tamanho 5, | | |e especifica um índice maior que 5 indica uma condição de | | |índice inválido. O código do caractere ASCII é inválido. | | |O número de casas decimais para ajuste está fora da escala | | |de (0 a 10). | +--------------+---------------------------------------------------------------+ Para mais informações sobre os códigos de erro consulte a :ref:`tabela de códigos de erro` . 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 saída 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 :ref:`tabela de códigos de erro`. | +-------+----------------+--------+----------------------------------------------------------------+ Uma variável do tipo texto é composta por 50 bytes, que podem ser mapeados em três campos: dois de controle e um de dados. Um texto pode ser assim representado: * Tamanho do Texto: [1 byte] Campo de controle que armazena o tamanho do texto. Um texto pode possuir um tamanho de 0 (zero) a 48 caracteres. Um texto com tamanho zero representa um texto NULO. Um texto com 48 caracteres representa um texto de tamanho máximo suportado pelo controlador; * Caracteres do Texto: [48 bytes] Campo de dados que armazena todos os caracteres associados ao texto. Este campo pode possuir até 48 caracteres associado ao texto; * Delimitador de Fim de Texto: [1 byte] Campo de controle que armazena o delimitador de fim de texto, representado pelo valor 0 (zero). Este delimitador sempre é armazenado no fim do texto. Se o texto possui tamanho máximo de 48 caracteres, este delimitador é armazenado no último byte (byte 49) do texto, caso contrario, é armazenado logo após o último caractere do texto. Em um texto NULO, o delimitador de fim de texto fica armazenado no byte 1 do texto, logo após o campo de controle de tamanho do texto que, neste caso, possui tamanho zero. As variáveis texto do tipo X são dinamicamente alocadas no fim do mapa de memórias M dos controladores. Como uma variável texto ocupa 50 bytes, e uma 1 variável do tipo M ocupa 2 bytes, cada variável X do tipo texto é então mapeada em 25 memórias do tipo M. As variáveis texto são alocadas em ordem decrescente no mapa de memória M. Ou seja, sempre no topo da base de memória M será mapeada a variável X0 e, a partir desta, as demais variáveis texto definidas na aplicação. Considerando que existem 3000 variáveis M (M0 a M2999) disponíveis no mapa de memórias M, a variável X0 será mapeada nas memórias M2975 a M2999, a variável X1 será mapeada nas memórias M2950 a M2974, e assim, sucessivamente. Para utilização de variáveis tipo Texto é necessário que o usuário da aplicação especifique o número de variáveis a serem alocadas no :ref:`Setup de Programa`. Observe que, cada variável texto alocada reduz em 25 o número de memórias M disponíveis na aplicação. Podemos também supervisionar as variáveis tipo texto através do :ref:`Dump de variáveis`. Cabe observar que operações que envolvam variáveis do tipo texto, principalmente as funções de conversão de valores texto para valor numérico (X => D, X => M) e vice-versa, “consomem” maior tempo de processamento, e consequentemente tendem a aumentar consideravelmente o ciclo de “scan” da aplicação ladder. Assim, recomenda-se utilizar tais funções de modo otimizado, por exemplo, ativando-as somente quando necessário, utilizando eventos gerados com variáveis do tipo R com PULSO. .. note:: As funcionalidades para manipulação de variáveis do tipo texto estão disponíveis a partir das seguintes versões: - Ambiente de programação versão 1.8.00 ou superior; - Controlador da família ZAP-900 com firmware versão 1.3.00 ou superior. .. raw:: pdf PageBreak