O documento discute blocos de dados, incluindo seus objetivos, tipos de dados, criação, edição, monitoramento e acesso. Ele fornece exemplos de como usar blocos de dados em funções de bloco, funções de chamada e programas organizadores de blocos.
ConteúdoPágina
Objetivos da aprendizagem...................................................................................................................2
Blocos de dados (DBs)..……….............................................................................................................3
Tipos de dados........…….......................................................................................................................4
Tipos de dados elementares..……........................................................................................................5
Tipos de dados complexos: DTL………….............................................................................................6
Tipos de dados complexos: ARRAY, STRUCT………..........................................................................7
Criando um bloco de dados……............................................................................................................8
Editar e monitorar um bloco de dados………….....................................................................................9
Otimizar espaço de memória para DBs...…..........................................................................................10
Bloco de dados: Retentividade…….......................................................................................................11
Retentividade em FBs do sistema.........................................................................................................12
Retentividade em DBs globais…...........................................................................................................13
Retentividade em DBs multi instance (1)..….........................................................................................14
Retentividade em DBs multi instance (2)..….........................................................................................15
Acesso aos elementos de dados......……..............................................................................................16
Exercício 8-1: Crie um bloco de dados "DB_OP" (DB99)......................................................................17
Exercício 8-2: Acesse os tags do DB no "FC_ConvMotor" (FC16)........................................................18
Exercício 8-3: Acesse tags do DB na chamada do FB_Statistic" (FB18) no OB1…..............................19
Visão geralOs blocos de dados são utilizados para armazenar dados do usuário. Os blocos de dados reservam espaço de memória na memória do usuário na CPU. Os blocos de dados contém dados de variáveis (p.ex. valores numéricos) para uso pelo programa do usuário.
O progama do usuário pode acessar os dados de um bloco de dados através de operações no formato bit, byte, word ou double word. O acesso pode ser tanto simbólico como absoluto.
Faixa de aplicação Os blocos de dados podem ser utilizados diferentemente pelo usuário dependendo de sua natureza. Uma distinção é feita entre:
•Bloco de dados global: Eles contém informações que podem ser acessadas por todos os blocos de códigos do programa do usuário.
•Bloco de dados instance: Eles são sempre atribuídos a um FB. Os dados destes DBs somente devem ser processados pelo FB associado. Os blocos de dados instance são descritos em detalhes no capítulo 6 junto com as informações referentes aos FBs.
Criação de DBsDBs globais são criados ou pelo editor de programas ou de acordo com uma UDT (tipo de dado definido pelo usuário) criada previamente.
Os blocos de dados instance são criados quando um bloco de função é chamado.
Tipos de dadosTodos os dados utilizados em um programa de usuário devem ser identificados como um determinado tipo de dado. Os seguintes tipos de dados são disponíveis:
•Tipos de dados elementares
•Tipos de dados complexos
•Tipos de parâmetros
•Tipos de dados do sistema
•Tipos de dados de hardware
As operações utilizam objetos de dados de um tamanho específico. Operações booleanas trabalham com bits, operações de transferência trabalham com bytes, com words (palavras) e com double words (palavras duplas).
Um bit é um dígito binário "0" ou "1". Um byte é composto por 8 bits, uma palavra é composta por 16 bits e uma palavra dupla é composta por 32 bits.
Operações matemáticas trabalham com tipos de dados de largura de um byte, de uma palavra ou de uma palavra dupla. As diferentes posições dos bits de um tipo de dado representam números a serem codificados em diversos formatos (p.ex. números inteiros ou números ponto flutuante).
ElementaresTipos de dados elementares.
Eles abrangem todos os tipos de dados que são automaticamente disponibilizados pela linguagem de programação.
UDTOs tipos de dados complexos definem grupos de dados que são compostos por outros tipos de dados. Você não pode utilizar quaisquer constantes como parâmetros atuais para tipos de dados complexos. Nem tampouco você pode transferir qualquer endereço absoluto como parâmetro atual para tipos de dados complexos.
DTLUm tag do tipo de dado DTL possui o comprimento de 12 bytes e salva data e hora dentro de uma estrutura pré-definida. A tabela acima fornece uma visão geral deste tipo de dado complexo.
STRINGUm tag do tipo de dado STRING salva diversos caracteres (CHAR) em um conjunto de caracteres (string) o qual pode ser composto por até 254 caracteres. O comprimento máximo de um string pode ser definido junto a palavra chave STRING entre colchetes para cada tag (p.ex. STRING[4]). Se o comprimento máximo não for especificado, o comprimento padrão de 254 caracteres será assumido para o respectivo tag. Um tag do tipo de dado STRING reserva mais dois bytes os quais especificam o comprimento máximo na memória.
ARRAYO tipo de dado ARRAY representa um campo que armazena um número fixo de componentes do mesmo tipo de dado. Em um tag ARRAY, componentes de todos os tipos de dados podem ser combinados.
O número de áreas dos componentes do campo seguem a palavra chave ARRAY entre colchetes. O valor limite inferior de uma área deve ser menor do que ou igual ao valor limite superior. Um campo pode conter uma dimensão.
STRUCTUm tag do tipo de dado STRUCT salva valores em uma estrutura que inclui um número fixo de componentes. A estrutura individual de componentes pode ser de diferentes tipos de dados. Estruturas não podem ser aninhadas em um tag STRUCT. Um tag STRUCT sempre começa em um byte de endereço par e reserva a memória até o próximo limite no formato word.
Criando um DBUm novo bloco de dados pode ser adicionado como mostrado no slide.
Um novo bloco de dados pode ser criado na vista portal bem como na vista projeto para o respectivo projeto.
DB globalOs blocos de dados globais são utilizados para salvar dados globais, isto é, dados gerais os quais podem ser acessados por blocos de códigos (OB, FC, FB).
O usuário deve editar blocos de dados globais pela declaração de tags necessários para salvar os dados neste DB.
DB instanceOs blocos de dados instance servem como “área de dados particular” ou como “memória” de um bloco de funções (FB). Os parâmetros e tags estáticos de um FB são gerenciados em seu DB instance.
Os blocos de dados instance não são geralmente editados pelo usuário, mas gerados pelo editor.
UDTBlocos de dados também podem ser gerados pelo editor de acordo com um UDT (User Defined Type). Um UDT é editado do mesmo jeito que um DB e serve para criar DBs através de seu formato pré-definido.
O UDT pode servir como um gabarito (template) para criação de outros blocos de dados e/ou para declaração de tags e parâmetros de blocos.
OffsetAutomaticamente atribuído a um endereço relativo de um tag em um bloco de dados.
Initial value(valor inicial) O valor inicial de um tag é um valor que você pode definir com o qual o tag deverá assumir durante a partida. Os tags retentivos são um caso especial. Após um "Restart (warm restart)", seus valores são mantidos e não são sobrescritos pelo valor inicial.
A especificação de um valor inicial é opcional. Se você não especificar um valor, o tag assume o valor padrão na partida (start-up). Se um valor padrão não tiver sido definido, um valor padrão aplicável ao tipo de dado será utilizado. Para BOOL, por exemplo, o valor padrão "FALSE" é definido.
Toolbar(barra de ferramentas) Você pode monitorar valores de dados atuais dos tags na CPU diretamente pelo bloco de dados.
Insert line aboveInsere uma nova linha acima da linha marcada
Insert line belowInsere uma nova linha abaixo da linha marcada
MonitorIndica o valor atual do DB continuamente
FilterPara arranjo de elementos
Otimização Através da opção "Symbolic access only“ (somente acesso simbólico), você pode salvar tags de modo otimizado no DB.
Procedimento Quando você criar um novo bloco de dados, você pode salvar os tags de modo otimizado no DB selecionando:
1.
2.
RetentividadePara previnir a perda de dados no evento de falta de energia, você pode marcar determinados dados como retentivos. Estes serão armazenados em uma área de memória retentiva. Uma área de memória retentiva é uma área na qual o conteúdo permanece disponível na partida (warm restart), ou seja, após o retorno da energia elétrica, na transição de STOP para RUN.
No caso de uma partida a frio (cold restart), os valores dos dados definidos como retentivos serão apagados.
Você pode definir os seguintes dados como retentivos:
• Memória bit: Você pode definir a largura da área de memória retentiva para memória bit precisamente na tabela de tags do PLC ou na lista de símbolos (PLC tags).
• Tags de um bloco de função (FB): Na interface de um FB, você pode definir os tags individuais como retentivos quando o endereçamento simbólico dos tags estiver ativo para este bloco. Se o endereçamento simbólico não estiver ativo para um FB, você somente pode definir os tags como retentivos no bloco de dados instance.
• Tags de um bloco de dados global: Em um bloco de dados global, dependendo do ajuste para o endereçamento simbólico, você pode ou definir tags individuais ou todos os tags de um bloco com retentivo: O atributo "Symbolic access only" do DB foi ativado: A retenção pode ser atribuída para cada tag individualmente.O atributo "Symbolic access only" do DB foi desativado: A atribuição de retentividade se aplica para todos os tags do DB; ou todos os tags serão retentivos ou nenhum tag será retentivo.
NotaApós a transferência de blocos para o dispositivo, uma partida a frio (cold restart) será realizada.
RetentividadeEm blocos de função os quais são disponibilizados pelo sistema, tais como:
• Contadores
•Temporizadores
•Data e hora, etc.,
não é possível declarar áreas de memória retentiva.
Se os dados devem ser armazenados retentivamente, existem outras possibilidades as quais serão explicados nas páginas seguintes.
RetentividadeSe os dados devem ser salvos retentivamente no bloco de funções que são disponibilizados pelo sistema, tags do tipo:
• IEC_Counter
•IEC_Timer, etc.
devem ser declarados em um bloco de dados global de alto nível.
RetentividadeA retentividade dos tags em um FB pode ser ajustada ou não ser ajustada sob certas condições:
• Endereçamento simbólico foi ativado no bloco de funções de alto nível: Para parâmetros e tags estáticos, a propriedade "Retain" pode ser ativada ou desativada individualmente.
RetentividadeA retentividade dos tags de um FB pode ser ajustada ou não ajustada sob certas condições:
• O endereçamento simbólico foi desativado no bloco de funções de alto nível: A propriedade "Retain" não pode ser ativada na interface do FB.
A propriedade "Retain" somente pode ser ativada ou desativada para o DB completo, no DB instance associado.
AcessoAcesso aos dados em um bloco de dados global:
Você acessa elementos individuais de um DB utilizando "DB_name”.Elementname.
Exemplo de acesso a um elemento de um DB
Para acessar o elemento "Act_Station" no DB "P_Data", proceda como segue:
"P_Data".Act_Station
Nome local de um tag dentro do DB
Nome global do bloco de dados
TarefaO bloco de dados "DB_OP" (DB99) deve ser criado com os tags mostrados no slide os quais deverão servir posteriormente como uma interface para o painel de operação.
Procedimento1.Insira um novo bloco de dados "DB_OP" (DB99) como um DB global.
2.Declare os tags mostrados no slide.
Nota, particularmente, o tag "TON" do tipo de dado "IEC_Timer" o qual deverá ser utilizado posteriormente para salvar os dados instance de um temporizador IEC.
3.Atribua o valor inicial 3 para o tag Set_Quant.
4.Salve seu projeto.
Função préviaO bloco "FC_ConvMotor" (FC16) controla o motor da esteira, através do qual o processo de transporte automático é controlado em tempo. A supervisão de tempo é implementada no FC16 com a função do sistema TON para o qual um bloco de dados instance foi transferido como único instance.
TarefaEm vez de seu próprio DB instance, a função do sistema TON agora no FC16 deve utilizar um tag de um DB global (ver slide).
Você irá aprender com isto como tags de blocos de dados podem ser utilizados diretamente através de marcar e arrasta-los em outros blocos.
Procedimento1.Abra o "DB_OP" (DB99).
2.Também abra o "FC_ConvMotor" (FC16).
3.Mostre ambos blocos simultaneamente (horizontalmente ou verticalmente) utilizando o botão lado-a-lado.
4.Utilizar marcar e arrastar para substituir o bloco de dados instance transferido para a função do sistema TON com o tag "DB_OP".TON.
5.Salve seu projeto.
Função préviaO bloco "FB_Statistic" (FB18) conta as peças transportadas automaticamente. Até agora uma constante tem sido transferida para o parâmetro de entrada "Set_Quant“ e o tag "MW_ACT" (MW20) para o parâmetro de saída para armazenamento do valor atual de contagem.
TarefaEm vez da constante, o tag do bloco de dados "DB_OP".Set_Quant deve ser transferido para o parâmetro de entrada "Set_Quant" e "DB_OP".Act_Quant deve ser transferido para o parâmetro de saída.
A quantidade desejada então pode ser inserida posteriormente no painel de operação e a quantidade atual pode ser mostrada posteriormente no painel. Para este propósito, o painel irá acessar estes precisos tags do bloco de dados no modo escrita e leitura.
Procedimento1.Abra o bloco "Main" (OB1).
2.Na chamada do "FB_Statistic" (FB18), transfira os tags do bloco de dados como mostrado no slide.
3.Transfira todos os blocos para a CPU e teste o seu programa.
4.Salve seu projeto.