apostila siemens

Upload: jmarcelopit

Post on 07-Jul-2018

283 views

Category:

Documents


11 download

TRANSCRIPT

  • 8/18/2019 Apostila Siemens

    1/145

    ÍNDICE

    1  Introdução ao S7 300 .................................................................................................. 3 

    1.1 

    Conceitos de memória para S7 300 ............................................................................ 10 

    1.2  Estrutura de Hardware ................................................................................................ 12 

    1.3  Endereçamento .......................................................................................................... 15 

    1.3.1  Entradas e saídas Digitais – DI/DO (Digital Input/Digital Output) ................................ 15 

    1.3.2  Entradas e saídas Analógicas – AI/AO (Analogic Input/Analogic Output) ................... 17 

    1.3.3  Memórias .................................................................................................................... 19 

    1.4  Tipo de dados ............................................................................................................. 23 

    1.5  Endereçamento indireto e Ponteiros ........................................................................... 24 

    1.5.1  Tipo de dado ANY ...................................................................................................... 27 

    2  Criando um novo projeto no SIMATIC Manager ........................................................ 28 

    2.1  Trabalhando com Multiproject ..................................................................................... 35 

    3  Linguagens de Programação para STEP7 300 .......................................................... 38 

    3.1  Instruções Booleanas ................................................................................................. 38 

    3.1.1  Ladder ........................................................................................................................ 38 

    3.1.2  Statement List (STL) ................................................................................................... 39 

    3.1.3 

    Function Blocks Diagram (FBD).................................................................................. 39 

    3.1.4  Exemplos de aplicação das linguagens Ladder, STL e FBD ....................................... 40 

    3.1.5  Memória elétrica ......................................................................................................... 41 

    3.1.6  Saídas Retentivas ...................................................................................................... 42 

    3.1.7  Contatos Impulsionais ................................................................................................ 43 

    3.1.8  Flanco Positivo ........................................................................................................... 44 

    3.1.9  Flanco Negativo .......................................................................................................... 45 

    3.2  Instruções de Temporização ....................................................................................... 46 

    3.2.1 

    Temporizador com retardo na ativação S_ODT .......................................................... 49 

    3.2.2  Temporizador retentivo com retardo na ativação S_ODTS ......................................... 50 

    3.2.3  Temporizador com retardo na desativação S_OFFDT ................................................ 51 

    3.2.4  Temporizador de pulso estendido S_PEXT ................................................................ 53 

    3.3  Instruções de Contagem de Pulsos ............................................................................ 53 

    3.3.1  Contador Crescente e Decrescente S_CUD ............................................................... 54 

    3.3.2  Contador Crescente S_CU ......................................................................................... 55 

    3.3.3  Contador Decrescente S_CD ..................................................................................... 56 

    3.3.4 

    Counters em STL ....................................................................................................... 57 

    3.4  Instruções de Comparação ......................................................................................... 58 

  • 8/18/2019 Apostila Siemens

    2/145

     

    Festo Didactic •  ••  •   E320S  

    2Programação avançada com CLP Siemens S7 300  

    3.4.1  Instruções de comparação em STL ............................................................................ 60 

    3.5  Instrução de Transferência de dados .......................................................................... 61 

    3.6 

    Instrução de Transferência de dados em STL ............................................................ 62 

    3.7  Instruções Matemáticas com números inteiros (INT) e reais (REAL) .......................... 62 

    3.7.1  Integer function ........................................................................................................... 62 

    3.7.2  Floating point function ................................................................................................. 64 

    3.7.3  Instruções matemáticas em STL................................................................................. 67 

    3.8  Instruções lógicas – operações booleanas ................................................................. 67 

    3.8.1  Operações booleanas em STL ................................................................................... 69 

    4  Estruturas de Programa ............................................................................................. 70 

    4.1  Organization Blocks – OB’s ........................................................................................ 70 

    4.2  Data Blocks – Blocos de Dados (DB) ......................................................................... 70 

    4.3  Criando um Data Block Shared .................................................................................. 71 

    4.4  Programação Orientada – Blocos de Programa .......................................................... 75 

    4.5  Criando uma FC – Function ........................................................................................ 76 

    4.6   Criando um FB – Function Block  ................................................................................ 90 

    4.6.1  Instance FB ................................................................................................................ 90 

    4.6.2  Multi-Instance FB ...................................................................................................... 102 

    4.6.3  Criando uma FB em Statement List – STL ................................................................ 109 

    5  Introdução à linguagem de programação GRAPH para S7 300 ............................... 114 

    5.1  Criando um bloco de programa em linguagem grafcet - GRAPH .............................. 116 

    5.2  Instruções básicas para S7 GRAPH ......................................................................... 123 

    5.3  Exemplo de aplicação ............................................................................................... 123 

    6  Source File – Utilizando atributos para proteger um bloco de programa .................. 131 

    7  Referencia Cruzada no S7 300 – Cross References  ............................................... 138 

    Forçando Variáveis .................................................................................................. 144 

  • 8/18/2019 Apostila Siemens

    3/145

     

    Festo Didactic •  ••  •   E320S  

    3Programação avançada com CLP Siemens S7 300  

    PROGRAMANDO COM SIEMENS S7-300

    1 Introdução ao S7 300

    O CLP S7-300 da Siemens é um controlador modular utilizado em aplicações

    centralizadas ou distribuídas, interligando os mais variados dispositivos de campo através

    de seus módulos de entrada e saída, digitais ou analógicas. Pode ainda ser integrado a

    outros dispositivos de controle através de rede industriais, com ampla gama de

    protocolos disponíveis.

    Figura 1.1 – Controle centralizado com S7 300 Siemens.

  • 8/18/2019 Apostila Siemens

    4/145

     

    Festo Didactic •  ••  •   E320S  

    4Programação avançada com CLP Siemens S7 300  

    Figura 1.2 – Controle descentralizado por meio de rede industrial com S7 300.

    O S7 300 possui interface com os seguintes softwares:

    Step 7 Lite   – trata-se de uma ferramenta mais simples para implementação de

    programas em aplicações centralizadas. Esta ferramenta não é mais usual na atualidade.

    Figura 1.3: Ambiente de programação do Step 7 Lite

  • 8/18/2019 Apostila Siemens

    5/145

     

    Festo Didactic •  ••  •   E320S  

    5Programação avançada com CLP Siemens S7 300  

    Step 7 Manager   – É uma ferramenta mais completa para gerenciamento de

    projetos em automação, permitindo a integração de todos os dispositivos programáveis

    em um único ambiente, assim como a estruturação de projetos com redes industriais.

    Figura 1.4 - Ambiente de programação do Step 7 Manager

    A comunicação entre o meio de programação usando um computador pessoal

    (PC) e o CLP ocorre por meio de um conversor serial de RS 232 para RS 485

    denominado PC adapter , que se comunica por meio de um protocolo proprietário da

    Siemens denominado MPI (Multi-Point Interface ), conforme Figura 1.5. Esta comunicação

    também pode ocorrer via rede Profibus (conforme Figura 1.7) ou Ethernet   através da

    placa de rede do computador (conforme Figura 1.8). O programa de usuário, com todos

    os blocos de programa e blocos dados, quando transferido para o CLP é gravado num

    cartão de memória denominado MMC  (Micro Memory Card ). Os LED’s na parte lateral do

    cabo indicam o estado de comunicação entre o dispositivo programador e o CLP.

  • 8/18/2019 Apostila Siemens

    6/145

     

    Festo Didactic •  ••  •   E320S  

    6Programação avançada com CLP Siemens S7 300  

    Figura 1.5 – PC adapter MPI.

    Figura 1.6 – Programação via protocolo MPI.

  • 8/18/2019 Apostila Siemens

    7/145

     

    Festo Didactic •  ••  •   E320S  

    7Programação avançada com CLP Siemens S7 300  

    Figura 1.7 - Programação via rede DP.

    Figura 1.8 - Programação via rede Ethernet.

  • 8/18/2019 Apostila Siemens

    8/145

  • 8/18/2019 Apostila Siemens

    9/145

     

    Festo Didactic •  ••  •   E320S  

    9Programação avançada com CLP Siemens S7 300  

    FRCE – Force : indica modo de trabalho forçado de uma variável.

    RUN – indica que o programa está em execução.

    STOP  – quando ligada constantemente indica a parada de execução do

    programa. Quando está piscando numa frequência de 0,5Hz indica que a CPU necessita

    de um reset em sua memória devido a algum erro ou falha do sistema.

    Se a CPU solicitar um reset de memória, fazendo o STOP LED piscar lentamente,

    pode-se resetar o MMC através da chave seletora de modo, como segue:

    1. Posicione a chave para posição MRES e mantenha pressionada nesta posição

    até o STOP LED parar de piscar (ficar aceso constantemente – isto deverá levar alguns

    segundos);

    2. Após o LED STOP acender e permanecer aceso, aguarde 3 segundos, solte a

    chave e volte a pressioná-la para a posição MRES. O LED de STOP pisca para indicar

    que a formatação está em processo.

    Figura 1.10 – CPU Siemens S7 300.

  • 8/18/2019 Apostila Siemens

    10/145

     

    Festo Didactic •  ••  •   E320S  

    10Programação avançada com CLP Siemens S7 300  

    Por meio da chave seletora é possível alterar o modo de funcionamento do CLP

    para RUN  (executa o programa), STOP  (para a execução do programa) ou MRES  (reseta

    as variáveis da memória do controlador).

    1.1 Conceitos de memória para S7 300

    A Figura 1.11 mostra a divisão das áreas de memória existentes no controlador,

    contendo três áreas de memórias distintas.

    Figura 1.11 – Estrutura do MMC.

    Load Memory  (Memória de Carga): Está localizada no MMC (Micro Memory

    Card). Ela armazena o programa de usuário com seus blocos de programa (OBs, DBs,

    FCs, etc) assim como a configuração de hardware. O conteúdo desta memória influencia

    diretamente no funcionamento da CPU.

    System Memory (Memória do Sistema): Contém os endereços dos Bit Memories,

    Timers e Counters; da  imagem de processo (PI - process image) das  inputs   e outputs;

    assim como do Local Data (variáveis temporárias da pilha local, tipo TEMP). A imagem

    de processo das entradas e saídas do controlador é acessada através da memória de

    sistema  da CPU.

  • 8/18/2019 Apostila Siemens

    11/145

     

    Festo Didactic •  ••  •   E320S  

    11Programação avançada com CLP Siemens S7 300  

    Main Memory  (Memória Principal):  É usada para execução do código de

    programa de usuário. O programa somente roda na Memória Principal , memória RAM

    integrada à CPU.

    O MMC (Micro Memory Card ) é um memory card que contém a memória de carga  

    (Load Memory) da CPU, onde é armazenado o programa de usuário com todos os

    blocos de programa necessários para sua execução, como FCs, FBs, SFCs, etc.

    Após o download o programa de usuário é armazenado permanentemente na

    load memor y. Porém, as partes relevantes do programa são executadas em outra área

    de memória, denominada Work Memory , que se trata da Main Memory , memória RAM

    integrada a CPU.

    A Figura 1.12 mostra os destinos dos dados transferidos após um download para

    o controlador.

    Figura 1.12 – Dados que são gravados no MMC.

  • 8/18/2019 Apostila Siemens

    12/145

     

    Festo Didactic •  ••  •   E320S  

    12Programação avançada com CLP Siemens S7 300  

    1.2 Estrutura de Hardware

    Os módulos Siemens para S7 300 são montados numa estrutura perfilada de aço

    denominada Rack , e interligados através de um conector de barramento  (Bus Conector )

    para comunicação entre eles e com a CPU, conforme Figura 1.13.

    A montagem dos módulos também pode ser feitas num rack com barramento

    ativo , onde o bus conector é substituído por um rack que interliga os módulos

    paralelamente para fins de alimentação (Power supply) e comunicação, permitindo a

    “troca a quente” dos módulos.

    Figura 1.13 – Montagem dos módulos no rack.

  • 8/18/2019 Apostila Siemens

    13/145

     

    Festo Didactic •  ••  •   E320S  

    13Programação avançada com CLP Siemens S7 300  

    Os cartões Siemens para o S7 300 são divididos em três grupos:

    SM  (Signal Modules ) – Compreendem os módulos de entradas e saídas digitais

    (DI/DO) ou analógicas (AI/AO).

    CP  (Communication Processor ) – Compreendem os módulos de comunicação

    para rede ASi, Profibus (DP, PA, FMS), Ethernet Industrial e PtP (rede ponto-a-ponto).

    FM  (Function Module ) – Compreendem os módulos de entrada e saída com

    funções especiais para dispositivos de controle de posição, entradas e saídas rápidas de

    freqüência, etc.

    Figura 1.14 – Estrutura do rack Siemens.

    Um exemplo de configuração de rack é mostrado na Figura 1.15.

    Figura 1.15 – Exemplo de configuração do rack.

  • 8/18/2019 Apostila Siemens

    14/145

     

    Festo Didactic •  ••  •   E320S  

    14Programação avançada com CLP Siemens S7 300  

    Uma CPU suporta até quatro racks com até oito módulos cada, como mostra a

    Figura 1.16.

    Figura 1.16 – CPU controlando até 4 racks.

    A comunicação entre os racks é feita por meio de um módulo denominado IM 

    (interface module ). Esta montagem utiliza uma fonte por rack.

  • 8/18/2019 Apostila Siemens

    15/145

     

    Festo Didactic •  ••  •   E320S  

    15Programação avançada com CLP Siemens S7 300  

    1.3 Endereçamento

    1.3.1 Entradas e saídas Digitais – DI/DO (Digital Input/Digital Output)

    As entradas digitais são capazes de detectar uma variação de estado lógico

    correspondente a uma variação de tensão “discreta”, proveniente de dispositivos de

    sinais como botoeiras, sensores de proximidade, chaves fim-de-curso, dentre outros. Da

    mesma forma, as saída digitais enviam sinais discretos de tensão para os dispositivos

    que deverão ser acionados, como sinalizadores luminosos ou sonoros, relés, solenóides,

    etc. A variação de estado lógico entre os níveis “0” e “1” neste texto será representadapela sigla RLO , cujo significado é Resultado Lógico do Operador .

    Figura 1.17 – Sinais digitais

    Para endereçar pontos de entrada e saídas digitais o S7 300 usa o modelo

    “Byte.Bit” , onde cada módulo é dividido em 1 Byte de dados e endereçado bit-a-bit,

    conforme Figura 1.18. As interfaces de entrada são identificadas pela letra I (input),

    enquanto as interfaces de saída são identificadas pela letra Q (output). Fisicamente, elas

    são distribuídas nos módulos conforme Figura 1.20.

    Figura 1.18 – Endereçamento de entradas digitais.

  • 8/18/2019 Apostila Siemens

    16/145

     

    Festo Didactic •  ••  •   E320S  

    16Programação avançada com CLP Siemens S7 300  

    Uma representação mais completa de endereços de I/O é mostrada na Figura

    1.19.

    Figura 1.19 – Endereçamento de entradas e saídas digitais.

    Figura 1.20 – Endereçamento de entradas e saídas digitais nos cartões Siemens.

    O acesso aos endereços de entrada e saída ocorre numa área da memória de

    sistema  denominada Imagem de Processo (PI – Process Image)  do CLP, corresponde

    a uma região na memória do controlador onde a escrita e a leitura dessas interfaces

  • 8/18/2019 Apostila Siemens

    17/145

     

    Festo Didactic •  ••  •   E320S  

    17Programação avançada com CLP Siemens S7 300  

    ocorre dentro do cycle scan  (ciclo de varredura) do CPU. Cada modelo de CPU possui

    um limite de tamanho de imagem. As CPU’s da família S7-300 normalmente reservam

    128 bytes de imagem, ou seja, os endereços de input e output podem ser endereçados

    neste caso de IB0 a IB127 no caso de entradas e de QB0 a QB127 no caso de saídas.

    Fora da imagem de processo da CPU os endereços são lidos na área periférica (PI -

    peripheral input e PQ - peripheral output ) consumindo um tempo maior de varredura. O

    acesso à periferia do CLP é feito somente em unidades de Byte e Word, por exemplo:

    PIB256, PQW268.

    1.3.2 Entradas e saídas Analógicas – AI/AO (Analogic Input/AnalogicOutput)

    As entradas analógicas são capazes de detectar uma variação de sinal contínuo

    de tensão nas faixas de -10V a +10V e de 0V a 10V, ou de corrente nas faixas de 0mA a

    20mA ou 4mA a 20mA, em função da variação de uma grandeza física medida por meio

    de um transdutor, como termopares, sensores analógicos de pressão, células de carga,

    etc. As saídas analógicas são capazes de gerar uma variação de tensão de 0V a 10V ou

    de corrente de 0mA a 20mA para controlar dispositivos externos como drives de potência,por exemplo.

    Figura 1.21 – Sinal analógico

    O endereçamento das entradas e saídas analógicas no S7 300 é feito através das

    variáveis periféricas, ou seja, fora da imagem de entradas e saídas do controlador. PIW  

    (Peripheral Input Word ) para entradas analógicas e PQW  (Peripheral Output Word ) para

  • 8/18/2019 Apostila Siemens

    18/145

     

    Festo Didactic •  ••  •   E320S  

    18Programação avançada com CLP Siemens S7 300  

    saídas analógicas. Essas variáveis têm o tamanho de uma Word   e trabalham com

    valores inteiros (INT ) de 16 bits. As variáveis analógicas normalmente começam a ser

    endereçadas a partir do endereço 256 para entradas e saídas, conforme Figura 1.22.

    Figura 1.22 – Entradas e saídas analógicas.

    Um mapa completo com os endereços de entradas e saídas digitais e analógicas

    sugeridos é mostrado na Figura 1.23.

    Figura 1.23 – Mapeamento de entradas e saídas digitais nos racks.

  • 8/18/2019 Apostila Siemens

    19/145

     

    Festo Didactic •  ••  •   E320S  

    19Programação avançada com CLP Siemens S7 300  

    1.3.3 Memórias

    Conforme mostrado no item 1.1, a CPU do S7 300 trabalha com três áreas de

    memória: Load Memory (MMC), System Memory e Main Memory.

    Mas podemos simplificar descrevendo apenas duas áreas de memória para o

    controle das informações na CPU: Work Memory e Load Memory , conforme Figura 1.24.

    Figura 1.24 – Simplificação das áreas de memória da CPU.

    •  Work Memory: corresponde à memória RAM do controlador, para

    armazenamento das variáveis não-retentivas.

    •  Load Memory: corresponde à memória EEPROM (MMC) do controlador,

    para armazenar o programa de usuário e também as variáveis retentivas.

    O S7 300 possui ainda três variáveis de memórias distintas: M (bit Memories) , D

    (Data Block)  e L (Variáveis temporárias, Local Data – pilha local)  para leitura e escrita

    de dados do programa de usuário, além dos acumuladores  ACCU1 e ACCU2 (área de

    transferência de dados usada pelo programa para o fluxo de informações) e Area

    Registers AR1 e AR2 (registradores de endereço para ponteiros).

  • 8/18/2019 Apostila Siemens

    20/145

     

    Festo Didactic •  ••  •   E320S  

    20Programação avançada com CLP Siemens S7 300  

    As memórias do tipo M (Bit Memories)  são memórias de uso geral, para

    armazenamento de dados do programa de usuário. Elas podem ser acessadas por

    qualquer bloco de programa, para escrita ou para leitura de dados. Essas memórias

    podem ser retentivas ou não. Esta condição pode ser estabelecida durante a

    configuração do hardware.

    As variáveis do tipo L são  definidas como temporárias no programa (variáveis

    temporárias, tipo TEMP ) e são variáveis não-retentivas, portanto, os valores

    armazenados nessas variáveis são apagados no ato da saída do bloco de programa.

    No S7 300 essas memórias são alocadas em áreas de 8 bits, ou seja, cada

    alocação de memória do tipo M possui tamanho de um 1 Byte, e são denominadas como

    MB  (Memory Byte ) conforme Figura 1.25.

    Figura 1.25 – Alocações de memórias no S7 300.

    Os MB’s  podem ser endereçados por Byte (8 bits), Word (16 bits), Double Word

    (32 bits) ou bit-a-bit, como mostra a Figura 1.26.

  • 8/18/2019 Apostila Siemens

    21/145

     

    Festo Didactic •  ••  •   E320S  

    21Programação avançada com CLP Siemens S7 300  

    Figura 1.26 – Formatos das memórias.

    Quando endereçadas bit-a-bit elas poder ser utilizadas como “flags ” ou “saídas

    auxiliares” nos blocos de programa, como mostra o exemplo de programa da Figura 1.27.

    Figura 1.27 – Exemplo de aplicação das memórias como “Flags”.

    É possível a ocorrência de conflito de dados quando o usuário utiliza no mesmo

    programa memórias com tamanhos e endereços diferentes, mas que possuem bits em

    comum entre elas, como mostra a Figura 1.28.

  • 8/18/2019 Apostila Siemens

    22/145

     

    Festo Didactic •  ••  •   E320S  

    22Programação avançada com CLP Siemens S7 300  

    Figura 1.28 – Conflito de dados.

    É recomendável, para o exemplo acima, que o usuário enderece essas memórias

    com números pares, ou seja, a cada dois bytes: MW0, MW2, MW4...Afim de evitar

    conflito de dados.

    As memórias do tipo L (Stack) são destinadas ao armazenamento temporário de

    variáveis. No S7 300 essas áreas de memória são denominadas TEMP . Variáveis do tipoTEMP podem ser declaradas no programa de usuário, dentro de OB’s, FC’s e FB’s, como

    será mostrado adiante.

    Existem ainda áreas de memórias denominadas ACC1 e ACC2  (acumuladores ),

    onde os resultados de operações lógicas são armazenados provisoriamente.

    É possível carregar essas memórias por meio dos comandos L  (Load) e T  

    (Transfer), comuns na linguagem STL de programação, como será abordado nos tópicos

    seguintes. O conteúdo desses registros pode ser visualizado através do comando View

     PLC Register na barra de menus, conforme Figura 1.29.

  • 8/18/2019 Apostila Siemens

    23/145

     

    Festo Didactic •  ••  •   E320S  

    23Programação avançada com CLP Siemens S7 300  

    Figura 1.29 – Memória L temporária (stack).

    As memórias do tipo D (Data Blocks)   são áreas de memória utilizadas para o

    armazenamento de dados que são processados dentro de blocos de programas, aos

    quais elas são vinculadas quando criadas. Mas também podem ser utilizadas para

    armazenamento de dados de qualquer outro bloco de programa, como as memórias deuso geral. Mais detalhes sobre essas memórias, os Data Blocks, serão abordados no

    item 4.2.

    1.4 Tipos de dados

    Todos os dados e variáveis declaradas no programa de usuário devem ser

    identificados por um tipo de dado específico. O S7 300 possui uma grande gama de tipode dados sendo eles divididos em três grupos distintos:

    Elementares  – são tipos de dados mais básicos utilizados para a declaração de

    constantes e variáveis simples. A tabela a seguir mostra os tipos de dados elementares

    mais usuais no S7 300.

    Complexas   – Consistem da combinação dos tipos de dados elementares em

    estruturas mais complexa de dados. Variáveis complexas são normalmente declaradasem Data Blocks (DB’s). Compreende as seguintes estruturas de dados:

  • 8/18/2019 Apostila Siemens

    24/145

     

    Festo Didactic •  ••  •   E320S  

    24Programação avançada com CLP Siemens S7 300  

    Parâmetros  – Compreendem as variáveis locais criadas para transferência de dadosem FC’c e FB’s.

    •  DATE_AND_TIME – Variáveis tipo tempo e data.

    Exemplo: DT#1993-12-25-8:12:34.567 

    •  STRING[n] - Variáveis tipo ASCII (caracteres)

    Exemplo: STRING[7] ‘SIMATIC’

    •  ARRAY – Estrutura tipo matriz de dados

    Exemplo: ARRAY[1..10]

    As variáveis complexas podem ainda ser do tipo:

    •  STRUCT•  UDT (user-defined data types)•  FBs and SFBs

    1.5 Endereçamento indireto e Ponteiros

    O endereçamento indireto de variáveis é feito através de ponteiros. Um ponteiro é

    utilizado para apontar o endereço de uma variável, permitindo que a mesma variável seja

    acessa com endereços diferentes repetidas vezes a cada varredura de programa.

  • 8/18/2019 Apostila Siemens

    25/145

     

    Festo Didactic •  ••  •   E320S  

    25Programação avançada com CLP Siemens S7 300  

    No Step7 os ponteiros são descritos pela letra “P” seguida de “#”, conforme

    mostra a Figura 1.30.

    Exemplo: P#23.7 – Este ponteiro aponta para o endereço Byte=23 e Bit=7 de uma

    variável qualquer.

    Quando uma variável é carregada com um ponteiro ela recebe o conteúdo

    daquele endereço, apontado pelo ponteiro. O ponteiro pode ser incrementado e

    decrementado no programa, permitindo acessar o conteúdo de outras variáveis. A Figura

    1.31 mostra um diagrama com as possibilidades de endereçamento indireto que são

    possíveis de ser efetuados no SIMATIC Step7.

    Os tipos de ponteiro para o Step7 são:

    •  Ponteiro 16-bit para Endereçamento Indireto de Memória

    Para acesso indireto de memória de temporizadores, contadores e DBs abertos.

      Ponteiro 32-bit p/ Endereçamento Indireto de Memória e RegistradorPonteiro 32 bit de área interna para acesso indireto de memória e registrador de

    endereços em PI, PQ, I, Q, M, DB, DI e L (pilha local).

    Ponteiro 32 bit de área cruzada para acesso indireto do registrador de endereços

    PI, PQ, I, Q, M, DB, DI, L e V (Pilha de dados locais do bloco chamado).

    •  Ponteiro 48-bit (Tipo de Dado POINTER)

    Tipo de dado próprio para passagem de parâmetros para blocos (FBs e FCs)

    Contém, em adição ao ponteiro 32-bit de área-cruzada, a declaração do número do DB.

    •  Ponteiro 80-bit (Tipo de Dado ANY)

    Tipo de dado próprio para passagem de parâmetros para blocos (FBs e FCs).

    Contém, em adição ao ponteiro 32-bit de área-cruzada, a declaração do número do DB,

    tipo de dado e fator de repetição.

    A Figura 1.30 mostra a estrutura de um ponteiro de 16 bit e 32 bit. A Figura 1.31

    mostra todas as possibilidades de acesso direto e indireto à memória do controlador.

  • 8/18/2019 Apostila Siemens

    26/145

     

    Festo Didactic •  ••  •   E320S  

    26Programação avançada com CLP Siemens S7 300  

    Figura 1.30 – Estrutura do ponteiro

    Figura 1.31 – Tipos de endereçamento: Direto e Indireto.

  • 8/18/2019 Apostila Siemens

    27/145

     

    Festo Didactic •  ••  •   E320S  

    27Programação avançada com CLP Siemens S7 300  

    Exemplo de aplicação de endereçamento indireto e ponteiros:

    1.5.1 Tipo de dado ANY  

    Os data types   tipo ANY   são ponteiros de 80 bits utilizados para passagem de

    parâmetros para blocos de programas, como FCs e FBs.

    As variáveis do tipo ANY podem assumir qualquer formato de variável e são

    endereçadas com ponteiros que permitem o acesso indireto a memórias, para fins de

    escrita e leitura.

    Exemplo:

    P#M40.0 BYTE 10

    Neste exemplo deseja-se acessar uma área de memória com extensão de 10Bytes que vai de MB40 até MB49.

  • 8/18/2019 Apostila Siemens

    28/145

     

    Festo Didactic •  ••  •   E320S  

    28Programação avançada com CLP Siemens S7 300  

    2 Criando um novo projeto no SIMATIC Manager

    Como foi dito anteriormente, o software SIMATIC Manager trata-se de um

    ambiente integrado para criação de projetos em automação. Ele permite a integração de

    todos os dispositivos e softwares da Siemens em um único ambiente de programação. O

    ambiente inicial do software é mostrado na Figura 2.1.

    Na estrutura do SIMATIC Manager, todos os blocos de programas são criados

    dentro de um projeto . Portanto, para criar um programa é necessário antes criar um

    projeto novo, conforme Figura 2.2.

    Figura 2.1 – Tela inicial do SIMATIC Manager

  • 8/18/2019 Apostila Siemens

    29/145

     

    Festo Didactic •  ••  •   E320S  

    29Programação avançada com CLP Siemens S7 300  

    Figura 2.2 – Criando um novo projeto no S7 300.

    Uma janela se abrirá solicitando o nome do projeto a ser criado (Figura 2.3. Deve-

    se inserir o nome do projeto e clicar em ok.

    Figura 2.3 – Inserindo o nome do projeto.

  • 8/18/2019 Apostila Siemens

    30/145

     

    Festo Didactic •  ••  •   E320S  

    30Programação avançada com CLP Siemens S7 300  

    O projeto com o nome escolhido é então criado e mostrado, conforme Figura 2.4.

    Figura 2.4 – Criando um novo projeto.

    Dentro desse projeto será criado um programa baseado numa CPU modelo S7

    300. É necessário inserir o modelo CPU, através do comando:

    Insert Station  2 SIMATIC 300 Station 

    Conforme Figura 2.5 ou clicando com o botão direito sobre o ícone do projeto,

    conforme Figura 2.6.

    Figura 2.5 – Inserindo uma Estação da família 300.

  • 8/18/2019 Apostila Siemens

    31/145

     

    Festo Didactic •  ••  •   E320S  

    31Programação avançada com CLP Siemens S7 300  

    Figura 2.6 - Inserindo uma Estação da família 300.

    Uma vez inserido o modelo da estação com a qual se vai trabalhar deve-se

    configurar o hardware para ela, ou seja, informar ao programa o modelo da CPU e os

    módulos existentes no rack fisicamente. Para isso deve-se abrir o ícone com o nome do

    projeto onde foi inserido o tipo de estação (Figura 2.7) e abrir a janela de configuração de

    hardware (Hardware Configuration, Figura 2.8) com um duplo click sobre o ícone

    mostrado na Figura 2.7.

    Figura 2.7 – Abrindo o configurador de hardware.

  • 8/18/2019 Apostila Siemens

    32/145

     

    Festo Didactic •  ••  •   E320S  

    32Programação avançada com CLP Siemens S7 300  

    Dentro da janela de configuração de hardware deve-se primeiramente inserir o

    rack, conforme Figura 2.8.

    Uma vez inserido o rack, basta selecionar cada módulo correspondente ao

    hardware físico e “arrastar” até o seu respectivo slot conforme a Figura 2.8 e Figura 2.9,

    seguindo a ordem mostrada no item 1 e na Figura 1.14. O hardware completo

    configurado é mostrado na Figura 2.10 com 1 e com 2 racks.

    Figura 2.8 – Inserindo o rack.

    Figura 2.9 – Inserindo a CPU no rack.

  • 8/18/2019 Apostila Siemens

    33/145

     

    Festo Didactic •  ••  •   E320S  

    33Programação avançada com CLP Siemens S7 300  

    Figura 2.10 – Hardware configurado com 1 rack sem fonte Siemens (a) e com 2

    racks interligados por meio do IM e com fonte Siemens (b).

    As CPU’s compactas trazem como configuração padrão (default ) os endereços de

    entrada e saídas com valor inicial referente ao último slot do último rack.

    É possível alterar os endereços das entradas e saídas do CLP clicando duas

    vezes sobre o ícone DI/DO no slot onde está a CPU para o respectivo rack. Uma janela

    deverá abrir e o usuário poderá alterar o inicio dos endereços das entradas e saídas,

    desmarcando a opção System default da CPU compacta conforme mostra a Figura 2.11.

  • 8/18/2019 Apostila Siemens

    34/145

     

    Festo Didactic •  ••  •   E320S  

    34Programação avançada com CLP Siemens S7 300  

    Figura 2.11 – Alterando os endereços de entradas e saídas. 

    As alterações feitas deverão ser salvas e o hardware deve ser compilado, para

    isto basta clicar sobre o ícone Salvar, como mostra a Figura 2.12.

    Figura 2.12 – Salvando e compilando o hardware.

    Após salvar e compilar a configuração de hardware uma nova pasta contendo os

    blocos de programa fica disponível, com o primeiro bloco de programa de usuário, OB1 

    (Organization Block 1), que é o Main Program  do S7 300, como mostra a Figura 2.13.

  • 8/18/2019 Apostila Siemens

    35/145

     

    Festo Didactic •  ••  •   E320S  

    35Programação avançada com CLP Siemens S7 300  

    Figura 2.13 – Estrutura de um projeto criado para S7 300.

    2.1 Trabalhando com Multiproject  

    Usando o conceito Multiproject do SIMATIC STEP 7 Professional é possível criar

    vários projetos dentro de uma única pasta, ajudando na organização dos programas de

    usuário.

    Após criar um novo arquivo, na janela “New File ” clique sobre a aba Multiproject ,conforme figura Figura 2.14. Insira um nome no campo “Name ” e clique em “OK ”

  • 8/18/2019 Apostila Siemens

    36/145

     

    Festo Didactic •  ••  •   E320S  

    36Programação avançada com CLP Siemens S7 300  

    Figura 2.14 – Criando um “Multiproject ”

    Clique com o botão direito sobre a pasta com o nome do projeto e escolha a

    opção “Creat in Multiproject”  para inserir um novo projeto dentro desta pasta, conforme

    Figura 2.15.

    Figura 2.15 – Inserindo um projeto.

  • 8/18/2019 Apostila Siemens

    37/145

     

    Festo Didactic •  ••  •   E320S  

    37Programação avançada com CLP Siemens S7 300  

    Insira um nome ao projeto e clique em “OK”, conforme mostra a Figura 2.16

    Figura 2.16 – Inserindo um projeto.

    A Figura 2.17 mostra como fica estrutura Multiproject  criada. A partir deste ponto

    deve-se configurar o hardware conforme mostrado nos itens anteriores, a partir da Figura

    2.5.

    Figura 2.17 – Estrutura na forma de Multiproject .

  • 8/18/2019 Apostila Siemens

    38/145

     

    Festo Didactic •  ••  •   E320S  

    38Programação avançada com CLP Siemens S7 300  

    3 Linguagens de Programação para STEP7 300

    O Step7 300 permite a criação de programas em quatro linguagens: LADDER,

    FBD (Function Blocks Diagram), STL (Statement List) e GRAPH (Grafcet).

    O set de instruções básicas do Step7 300 é dividido nos seguintes grupos:

    •  Bit logic  - instruções Booleanas, cujo o tratamento das informações bit a bit

    •  Comparator  – instruções de comparação para variáveis no formato INT (16 bits),

    DWORD (32 bits) e REAL (32 bits)

    •  Converter – Instruções de conversão de formato de dados

    •  Counter  – Instruções de contagem de pulsos

    •  DB call  – Instruções de chamada de Data Blocks

    •  Jumps  – instruções de salto de programa

    •  Integer function  – instruçõoes matemáticas com números inteiros de 16 bits

    •  Floating point function  – instruções matemáticas com números reais de 32 bits

    •  Move  – instrução de transferência de dados

    •  Program control  – instruções de controle de programa

    •  Shift/Rotate  – instruções para “rotacionar” dados

    •  Status bit  – bits com funções especiais do registro status

    •  Timers – instruções de temporização

    •  Word logic  – instruções para operações booleanas entre dados do tipo Word e

    DWord.

    3.1 Instruções Booleanas

    3.1.1 Ladder

    Linguagem de programação baseada em lógica de comando elétrico.

  • 8/18/2019 Apostila Siemens

    39/145

  • 8/18/2019 Apostila Siemens

    40/145

     

    Festo Didactic •  ••  •   E320S  

    40Programação avançada com CLP Siemens S7 300  

    3.1.4 Exemplos de aplicação das linguagens Ladder, STL e FBD

    Para inserir uma instrução em linguagem Ladder ou FBD, basta clicar sobre a

    instrução no catálogo à esquerda e arrastar até o ambiente de programação, como

    mostrado na Figura 3.1.

    Figura 3.1 – Instruções booleanas.

  • 8/18/2019 Apostila Siemens

    41/145

     

    Festo Didactic •  ••  •   E320S  

    41Programação avançada com CLP Siemens S7 300  

    Neste exemplo, o RLO da saída Q0.0 será igual a “1” quando o RLO da entrada

    I0.0 também for igual a “1”.

    3.1.5 Memória elétrica

    Neste exemplo é mostrado como colocar contatos NA e NF em paralelo na

    linguagem Ladder, conforme Figura 3.2.

    Figura 3.2 – Memórias elétricas.

  • 8/18/2019 Apostila Siemens

    42/145

     

    Festo Didactic •  ••  •   E320S  

    42Programação avançada com CLP Siemens S7 300  

    Neste exemplo, o RLO da saída Q0.0  será igual a “1” quando o RLO das duas

    entradas I0.0  e I0.1  forem iguais a “1”, simultaneamente. A saída permanece ligada

    mesmo quando os contatos endereçados em I0.0 e I0.1 seja abertos, devido o contato de

    “selo” de Q0.0 em paralelo com os dois contatos NA. O contato NF I0.2 abre quando seu

    RLO é igual a “1”, interrompendo a passagem do sinal e desenergizando a saída Q0.0,

    que permanece desacionada.

    3.1.6 Saídas Retentivas

    Outra solução possível para o circuito mostrado no exemplo anterior é mostradoneste exemplo, usando as saídas retentivas, S (set) e R (reset).

    A Figura 3.3 mostra a aplicação das saídas retentivas em um circuito.

    Quando o RLO de I0.0 é igual a “1” a saída Q0.0 é setada e permanece ligada

    (RLO=1).

    Quando o RLO de I0.1  é igual a “1” a saída Q0.0  é resetada e permanece

    desligada (RLO=0).

  • 8/18/2019 Apostila Siemens

    43/145

     

    Festo Didactic •  ••  •   E320S  

    43Programação avançada com CLP Siemens S7 300  

    Figura 3.3 – Saídas retentivas.

    3.1.7 Contatos Impulsionais

    Também denominados como flancos , estes contatos são instruções capazes de

    detectar a borda de subida ou a borda de descida de um sinal, na mudança do RLO de

    um operando booleano, como uma instrução NA ou NF, transferindo para a saída um

    pulso com período de duração muito curto, igual a um scan (período de uma varredura)

    do CLP.

  • 8/18/2019 Apostila Siemens

    44/145

     

    Festo Didactic •  ••  •   E320S  

    44Programação avançada com CLP Siemens S7 300  

    É necessário um memory bit (M Byte.bit ) para registrar o estado anterior do RLO

    da entrada.

    3.1.8 Flanco Positivo

    Em STL:

     A I0.0 //Testa se RLO de I0.0 = 1

    FP M0.0 //Flanco positivo, detecta borda de subida

    = Q0.0 //RLO de Q0.0 = 1 por um período de um scan.

  • 8/18/2019 Apostila Siemens

    45/145

     

    Festo Didactic •  ••  •   E320S  

    45Programação avançada com CLP Siemens S7 300  

    3.1.9 Flanco Negativo

    Em STL:

     A I0.0 //Testa se RLO de I0.0 = 1

    FN M0.0 //Flanco negativo, detecta borda de descida

    = Q0.0 //RLO de Q0.0 = 1 por um período de um scan.

  • 8/18/2019 Apostila Siemens

    46/145

     

    Festo Didactic •  ••  •   E320S  

    46Programação avançada com CLP Siemens S7 300  

    3.2 Instruções de Temporização

    As instruções de temporização têm a função gerar um retardo na ativação ou

    desativação de um determinado dispositivo.

    Elas são divididas em cinco tipos para os controladores da família S7 300 da

    Siemens, são eles:

    S_ODT: Siemens On Delay Timer  – Temporizador com retardo na ativação.

    S_OFFDT: Siemens OFF Delay Timer   – Temporizador com retardo na

    desativação.

    S_PULSE: Siemens Pulse  – Temporizador de pulso

    S_PEXT: Siemens Extended Pulse  – Temporizador de pulso estendido

    S_ODTS: Siemens Retentive On Delay Timer   – Temporizador retentivo com

    retardo na ativação.

    Os temporizadores têm uma área de memória reservada na CPU de 16 bits, ou

    seja, uma WORD para cada endereço de temporizador. A quantidade de endereços

    disponíveis para temporizadores depende da CPU utilizada, para a maioria delas são 256

    endereços disponíveis, de T0  a T255 .

    A Figura 3.4 mostra a configuração de um bloco temporização em linguagem

    Ladder.

    Figura 3.4 – Parâmetros de um temporizador em linguagem ladder.

  • 8/18/2019 Apostila Siemens

    47/145

     

    Festo Didactic •  ••  •   E320S  

    47Programação avançada com CLP Siemens S7 300  

    Na parte superior do bloco é atribuído o seu endereço (Timer Address ), à

    esquerda do bloco estão suas entradas e à direita estão suas saídas.

    A entrada S  é uma entrada do tipo booleana para o acionamento do temporizador,

    quando o RLO de S  sofre uma mudança de 0 para 1 o temporizador é iniciado.

    A entrada TV   (timer Value ) armazena o valor de tempo a ser contado. O

    parâmetro de tempo para o S7 300 tem a seguinte sintaxe,

    S5T#aH _bM _cS _dMS

    onde:

    a , b, c , d  são constantes definidas pelo usuário;

    H = horas, M = minutos, S = segundos, MS = milisegundos.

    O valor de tempo máximo que pode ser atribuído ao temporizador é 9990

    segundos , ou 2H_46M_30S .

    A base de tempo é selecionada automaticamente em função do valor de tempo

    atribuído. A divisão dos bit’s da memória dos temporizadores é mostrada na Figura 3.5.

    Figura 3.5 – Registro de armazenamento dos valores de tempo.

  • 8/18/2019 Apostila Siemens

    48/145

     

    Festo Didactic •  ••  •   E320S  

    48Programação avançada com CLP Siemens S7 300  

    O parâmetro de tempo em TV pode também ser atribuído conforme a sintaxe

    abaixo:

    W#16#

    Onde:

    t  é a base de tempo;

    b, c, d = valor de tempo em BCD (HEX).

    Exemplo: W#16#13FF

    3FFHEX = 1023DEC 

    Base tempo x valor  = 0.1 segundo x 1023 = 102,3 segundos

  • 8/18/2019 Apostila Siemens

    49/145

     

    Festo Didactic •  ••  •   E320S  

    49Programação avançada com CLP Siemens S7 300  

    3.2.1 Temporizador com retardo na ativação S_ODT

    A saída Q do temporizador será acionada (RLO=1) depois de decorrido o tempo

    parametrizado em TV (S5T#...), a partir do instante em que a entrada S  do bloco for

    ativada (RLO=1). A entrada deve permanecer ativa para que o bloco conte o tempoprogramado e ligue a saída. Ao desacionar sua entrada (RLO=0) a saída será resetada

    também (RLO=0).

    Um exemplo de aplicação deste temporizador é mostrado na Figura 3.6.

  • 8/18/2019 Apostila Siemens

    50/145

     

    Festo Didactic •  ••  •   E320S  

    50Programação avançada com CLP Siemens S7 300  

    Figura 3.6 – Exemplo de temporizadores em linguagem Ladder, STL e FBD.

    3.2.2 Temporizador retentivo com retardo na ativação S_ODTS

  • 8/18/2019 Apostila Siemens

    51/145

     

    Festo Didactic •  ••  •   E320S  

    51Programação avançada com CLP Siemens S7 300  

    A saída Q do temporizador será acionada (RLO=1) depois de decorrido o tempoparametrizado em TV a partir do instante em que o RLO da entrada S do bloco for “1”. A

    saída permanecerá ativa mesmo se a entrada S for desacionada, e será desligada

    somente no instante em que o RLO da entrada R (reset) for “1”.

    3.2.3 Temporizador com retardo na desativação S_OFFDT

  • 8/18/2019 Apostila Siemens

    52/145

     

    Festo Didactic •  ••  •   E320S  

    52Programação avançada com CLP Siemens S7 300  

    Quando o RLO da entrada S for “1” a saída Q  do temporizador será acionada

    (RLO=1). Enquanto o RLO da entrada S permanecer em “1” o temporizador não inicia a

    contagem. A saída Q só será desligada depois de decorrido o tempo parametrizado em

    TV, a partir do instante em que o RLO da entrada S mudar de “1” para “0”.

    Temporizador de pulso S_PULSE

    Quando o RLO da entrada S for “1” a saída Q  do temporizador será acionada

    (RLO=1) e a contagem de tempo iniciada. Enquanto o RLO da entrada S permanecer em

    1 o temporizador continua contando até que se atinja o tempo programado em TV, e

    então a saída Q será desligada. A saída também será resetada caso quando o RLO da

    entrada for “0”.

  • 8/18/2019 Apostila Siemens

    53/145

     

    Festo Didactic •  ••  •   E320S  

    53Programação avançada com CLP Siemens S7 300  

    3.2.4 Temporizador de pulso estendido S_PEXT

    Quando o RLO da entrada S for “1” o bloco liga a saída (RLO=1) e inicia a

    contagem de tempo. Mesmo que o RLO da entrada mude de “0” para “1” o bloco continua

    a contagem. A saída será desligada depois de decorrido o tempo programado em TV.

    3.3 Instruções de Contagem de Pulsos

    Os blocos contadores são utilizados para registrar pulsos elétricos.

    São três os tipos de contadores para o S7 300 da Siemens:

    S_CU: Siemens Counter Up  – Contador Crescente

    S_CD: Siemens Counter Down  – Contador Decrescente

    S_CUD: Siemens Counter Up and Down  – Contador Crescente e Decrescente

  • 8/18/2019 Apostila Siemens

    54/145

     

    Festo Didactic •  ••  •   E320S  

    54Programação avançada com CLP Siemens S7 300  

    Os contadores têm uma área de memória reservada na CPU de 16 bits, assim

    como os temporizadores, ou seja, uma WORD para cada endereço de contador. A

    quantidade de endereços disponíveis para contadores depende da CPU utilizada, para a

    maioria delas são 256 endereços disponíveis, de C0  a C255 .

    3.3.1 Contador Crescente e Decrescente S_CUD

    O valor de contagem em PV tem a seguinte sintaxe: C# .

    As entradas CU e CD recebem e registram os pulsos para contagem crescente e

    decrescente respectivamente.

    A entrada S (set) carrega o valor de contagem armazenado em PV no registro do

    contador C0. Ao receber um pulso na entrada CD o contador decrementa uma unidadeno valor de contagem e ao receber um pulso na entrada CU o contador incrementa uma

  • 8/18/2019 Apostila Siemens

    55/145

     

    Festo Didactic •  ••  •   E320S  

    55Programação avançada com CLP Siemens S7 300  

    unidade no valor de contagem. O limite superior de contagem é 999 e o limite inferior é

    zero.

    O RLO da saída Q será igual a 1 sempre que o valor de contagem for maior que

    zero. A saída do contador só será resetada quando o valor da contagem for igual a zero.

    O valor de contagem será atualizado em memórias através das saídas CV  e

    CV_BCD.

    O contador será resetado quando o RLO da entrada R  for igual a 1. O valor de

    contagem é zerado e a saída terá seu RLO = 0.

    3.3.2 Contador Crescente S_CU

    A entrada S (set) carrega o valor de contagem armazenado em PV no registro do

    contador C0. Ao receber um pulso na entrada CU o contador incrementa uma unidade no

    valor de contagem, a partir do valor pressetado em PV, até o limite superior de contagem

    (999). O RLO da saída Q será igual a 1 sempre que o valor de contagem for maior que

    zero. A saída do contador só será resetada quando o valor da contagem for igual a zero.

    O valor de contagem será atualizado em memórias através das saídas CV  eCV_BCD.

  • 8/18/2019 Apostila Siemens

    56/145

     

    Festo Didactic •  ••  •   E320S  

    56Programação avançada com CLP Siemens S7 300  

    O contador será resetado quando o RLO da entrada R  for igual a 1. O valor de

    contagem é zerado e a saída terá seu RLO = 0.

    3.3.3 Contador Decrescente S_CD

    A entrada S (set) carrega o valor de contagem armazenado em PV no registro docontador C0. Ao receber um pulso na entrada CD o contador decrementa uma unidade

    no valor de contagem a partir do valor presetado até zero. O RLO da saída Q será igual a

    1 sempre que o valor de contagem for maior que zero. A saída do contador só será

    resetada quando o valor da contagem for igual a zero.

    O valor de contagem será atualizado em memórias através das saídas CV  e

    CV_BCD.

    O contador será resetado quando o RLO da entrada R for igual a 1. O valor de

    contagem é zerado e a saída terá seu RLO = 0.

    Um exemplo de programa utilizando contadores é mostrado na Figura 3.7.

  • 8/18/2019 Apostila Siemens

    57/145

     

    Festo Didactic •  ••  •   E320S  

    57Programação avançada com CLP Siemens S7 300  

    Figura 3.7 – Exemplo de programa com contador decrescente.

    3.3.4 Counters em STL

    Em STL os contadores são representados por CU  (counter up) e CD  (Counter

    Down). Outras instruções como L, R e S são utilizadas para o controles dos contadores.

    L – carrega os valores em ACCU1.

    R – Reseta o contador.

    S – Seta o contador com o valor carregado em ACCU1.

  • 8/18/2019 Apostila Siemens

    58/145

     

    Festo Didactic •  ••  •   E320S  

    58Programação avançada com CLP Siemens S7 300  

    Exemplo:

    L C#14 //Carrega o valor C#14 em ACCU1; A I 0.1 //Checa o RLO de I0.1, se RLO = 1, então;

    S C1 //Carrega o contador C1 com o valor de ACCU1;

     A I 0.0 //Checa o RLO de I0.0, se RLO = 1, então

    CD C1 //Decrementa o contador C1

     AN C1 //Quando C1=0, então;

    = Q 0.0 //O RLO de Q0.0 será igual a 1 

    3.4 Instruções de Comparação

    Essas instruções realizam uma comparação matemática entre o conteúdo de

    registros e valores constantes quando o RLO de sua entrada é “1”. Se o resultado da

    comparação matemática retornar verdadeiro, uma saída será acionada (RLO=1).

    No catálogo de instruções os comparadores aparecem divididos em tres grupos,

    que são os comparadores para valores inteiros de dezesseis bits (INT), para valores

    inteiros de 32 bits (DINT) e para valores reais (REAL) também de 32 bits, conforme

    mostra a Figura 3.8.

    Figura 3.8 – Instruções de comparação.

  • 8/18/2019 Apostila Siemens

    59/145

     

    Festo Didactic •  ••  •   E320S  

    59Programação avançada com CLP Siemens S7 300  

    Exemplos de aplicação:

    Quando o RLO da entrada for “1” a comparação será realizada. O bloco compara

    se o conteúdo de MW0 é maior ou igual ao conteúdo de MW2, se o resultado da

    comparação matemática retornar verdadeiro a saída Q4.0 será setada.

    Quando o RLO da entrada for “1” a comparação será realizada. O bloco compara

    se o conteúdo de MD0 é maior ou igual ao conteúdo de MD4, se o resultado da

    comparação matemática retornar verdadeiro a saída Q4.0 será setada.

  • 8/18/2019 Apostila Siemens

    60/145

     

    Festo Didactic •  ••  •   E320S  

    60Programação avançada com CLP Siemens S7 300  

    Quando o RLO da entrada for “1” a comparação será realizada. O bloco compara

    se o conteúdo de MD0 é maior ou igual ao conteúdo de MD4, se o resultado da

    comparação matemática retornar verdadeiro e o RLO da entrada for igual a “1” a saída

    Q4.0 será setada.

    3.4.1 Instruções de comparação em STL

    Em STL as comparações também são feitas entre variáveis do tipo INT, DINT e

    REAL. Os valores a serem comparados são carregados temporariamente dentro dos

    acumuladores ACCU1 e ACCU2 por meio das instrução L (Load).

    As comparações matemáticas possíveis são:

    == igual

    ACCU1 diferente de ACCU2

    > ACCU1 maior que ACCU2

    < ACCU1 menor que ACCU2

    >= ACCU1 maior ou igual a ACCU2

    I //Compara se ACCU2 (MW10) é maior (>) que ACCU1 (W#16#FF)

    = M 2.0 //RLO = 1 se MW10 > W#16#FF

  • 8/18/2019 Apostila Siemens

    61/145

     

    Festo Didactic •  ••  •   E320S  

    61Programação avançada com CLP Siemens S7 300  

    Exemplo de comparação do tipo DINT:

    L MD10 //Carrega o conteúdo de MD10 (32-bit)

    L MD14 //Carrega o conteúdo de MD14 (32-bit)>D //Compara se ACCU2 (MD10) é maior (>) que ACCU1 (MD14)

    = M 2.0 //RLO = 1 se MD10 > MD14

    Exemplo de comparação do tipo REAL:

    L MD10 //Carrega o conteúdo de MD10L 1.36E+02 //Carrega a constante 1.36E+02

    >R //Compara se ACCU2 (MD10) é maior (>) que ACCU1 (1.36E+02)

    = M 2.0 //RLO = 1 se MD10 > 1.36E+02

    3.5 Instrução de Transferência de dados

    Esta instrução é utilizada para transferir valores constantes ou conteúdo de

    registros para outros registros.

    Exemplo de aplicação:

  • 8/18/2019 Apostila Siemens

    62/145

     

    Festo Didactic •  ••  •   E320S  

    62Programação avançada com CLP Siemens S7 300  

    Quando o RLO da entrada I0.0 for igual a “1” o conteúdo de MW10 é transferido

    para DW12 e a saída Q4.0 é igual a “1” para confirmar a execução da operação. 

    3.6 Instrução de Transferência de dados em STL

    A tranferência de dados em STL PE realizada por meio das instruções L (Load) e 

    T  (Transfer). A instrução L carrega o valor em ACCU1 e a instrução T transfere o

    conteúdo de ACCU1 para uma memória.

    Exemplo:L B#16#3F //Carrega o valor B#16#3F HEXA em ACCU1;

    T MB10 //Transfere o conteúdo de ACCU1 (B#16#3F) para MB10.

    3.7 Instruções Matemáticas com números inteiros (INT) e reais (REAL)

    As operações matemáticas no S7 300 são divididas em dois grupos:

    Integer function  – Operações matemáticas com números inteiros: correspondemas operações aritméticas básicas para números inteiros de 16 bits ou 32 bits.

    Floating point function   – Operações matemáticas com valores reais: além das

    operações básicas são incluídas também as operações logarítimicas, trigonométricas,

    dentre outras.

    3.7.1 Integer function

  • 8/18/2019 Apostila Siemens

    63/145

     

    Festo Didactic •  ••  •   E320S  

    63Programação avançada com CLP Siemens S7 300  

    Os blocos matemáticos para operações com números inteiros possuem três

    entradas e duas saídas. A entrada EN quando acionada (RLO=1) permite a execução da

    operação, realizando a respectiva operação entre as entradas IN1 e IN2. O resultado da

    operação é transferido para um registro declarado em OUT. Quando a operação é

    realizada a saída ENO é acionada (RLO=1).

    Operações Básicas:

    Exemplo de aplicação:

    Quando o RLO de I0.0 for “1” o conteúdo da memória MW0 é somado ao

    conteúdo de MW2. O resultado desta operação é armazenado em MW10 e a saída Q4.0

    será setada.

  • 8/18/2019 Apostila Siemens

    64/145

     

    Festo Didactic •  ••  •   E320S  

    64Programação avançada com CLP Siemens S7 300  

    Como essas operações trabalham apenas com valores inteiros, existe uma função

    complementar à função de divisão denominada MOD_DI, capaz de recuperar o valor

    “restante” de uma divisão entre dois números inteiros de 32 bits e armazenar numa

    memória.

    Quando I0.0 é acionado, o valor restante da divisão entre MD0 e MD4 (MD0/MD4)

    será armazenado em MD10.

    3.7.2 Floating point function

  • 8/18/2019 Apostila Siemens

    65/145

     

    Festo Didactic •  ••  •   E320S  

    65Programação avançada com CLP Siemens S7 300  

    As funções matemáticas com ponto flutuante executam operações com números

    reais de 32 bits.

    Operações Básicas:

    Exemplo:

    Quando o RLO de I0.0 for “1” o conteúdo da memória MD0 é somado ao conteúdo

    de MD2. O resultado desta operação é armazenado em MD10 e a saída Q4.0 será

    setada.

  • 8/18/2019 Apostila Siemens

    66/145

     

    Festo Didactic •  ••  •   E320S  

    66Programação avançada com CLP Siemens S7 300  

    Operações Trigonométricas:

    Demais Operações:

  • 8/18/2019 Apostila Siemens

    67/145

     

    Festo Didactic •  ••  •   E320S  

    67Programação avançada com CLP Siemens S7 300  

    3.7.3 Instruções matemáticas em STL

    As operações matemáticas podem ser realizadas entre números inteiros e reais.

    Para números inteiros (INT) usa-se a sintaxe: +I, -I, *I, /I

    Para números Reais (REAL): +R, -R, *R, /R

    Neste exemplo será realizada a soma entre dois valores inteiros.

    L IW10 //Carrega o valor de IW10 em ACCU1

    L MW14 //Carrega o valor de ACCU1 em ACCU2 e o valor de MW14 em ACCU1.

    +I //Soma o valor de ACCU2 com ACCU1 e armazena o resultado em ACCU1

    T MW20 //Armazena o valor de ACCU1 em MW20. 

    3.8 Instruções lógicas – operações booleanas

    Estas instruções realizam a comparação de um par de words (16 bits) ou Double

    Word (32 bits) bit a bit de acordo com a lógica booleana do bloco.

    As instruções lógicas são divididas em dois grupos de acordo com o tamanho da

    informação: W – WORD (16 bits) e DW – DWORD (32 bits).

    Até três tipos de operações lógicas podem ser realizadas: AND, OR e XOR.

  • 8/18/2019 Apostila Siemens

    68/145

     

    Festo Didactic •  ••  •   E320S  

    68Programação avançada com CLP Siemens S7 300  

    Exemplo:

    Quando o RLO de I0.0 for “1” o bloco efetua a operação lógica AND  entre o

    conteúdo de MW0 e o valor FFHEX. O resultado desta operação é armazenado em MW2 e

    a saída Q4.0 será setada.

    MW2 = (MW0) AND (FFHEX)

  • 8/18/2019 Apostila Siemens

    69/145

     

    Festo Didactic •  ••  •   E320S  

    69Programação avançada com CLP Siemens S7 300  

    Esta operação, em particular, é denominada “mascara ” e é bastante comum e

    usual em programação quando se deseja “filtrar” uma informação a fim de coletar apenas

    os bits que são relevantes para uma determinada operação. Neste exemplo foram

    aproveitados apenas os oito primeiros bits da Word MW0.

    3.8.1 Operações booleanas em STL

    O exemplo à seguir demonstra como é realizado a lógica AND entre dois

    registros. O mesmo conceito pode ser aplicado às demais operações lógicas.

    L IW20 //Carrega o conteúdo de IW20 em ACCU1.L IW22 //Carrega o conteúdo de ACCU1 em ACCU2 e IW22 em ACCU1.

     AW //ACCU2 AND ACCU1 = ACCU1

    T MW 8 //Armazena o resultado de ACCU1 em MW8.

  • 8/18/2019 Apostila Siemens

    70/145

     

    Festo Didactic •  ••  •   E320S  

    70Programação avançada com CLP Siemens S7 300  

    4 Estruturas de Programa

    4.1 Organization Blocks – OB’s

    Os Organizations Blocks (Blocos de Organização) são a interface entre o sistema

    operacional da CPU e o programa de usuário. OB's são utilizados para organizar o

    programa de usuário.

    Os OB’s são executados de forma cíclica seguindo uma ordem de prioridade.

    No Step7 300 cada OB  tem uma função específica, sendo o OB1 o Main Program  

    e portanto o primeiro na lista de prioridade de execução. O OB1 é executado ciclicamente

    pela CPU. Através do OB1 podem-se chamar outros blocos de programa, como as

    Functions – FC’s  e os Functions Block’s – FB’s , como subrotinas dentro de OB1.

    Além de OB1 existem outras OB’s com funções específicas na CPU 31x. Elas são

    divididas de acordo com suas funções: OB’s de inicialização (OB100, 101, 102), OB’s deinterrupção de tempo e data (OB10 a OB17), OB’s de interrupção cíclicas programadas

    (OB30 a OB38), OB’s de interrupção de hardware (OB40 a OB47), OB’s de diagnóstico

    de falhas (OB80 a OB87), dentre outras.

    4.2 Data Blocks – Blocos de Dados (DB)

    Os data blocks   (DB’s)  ou blocos de dados   são blocos utilizados apenas para

    armazenar dados, como memórias. Diferentemente dos blocos de programas, como os

    que serão apresentados a seguir, os blocos de dados não possuem instruções e portanto

    não executam rotinas de programa, eles apenas armazenam dados das variáveis dos

    blocos de programas, como OB’s, FC’s e FB’s.

    Os data blocks podem ser criados em dois formatos: Instance Data Blocks (DB

    instance)  ou Shared Data Blocks (DB Shared) .

  • 8/18/2019 Apostila Siemens

    71/145

     

    Festo Didactic •  ••  •   E320S  

    71Programação avançada com CLP Siemens S7 300  

    Uma DB shared  é um DB que pode ser acessado e compartilhado por qualquer

    bloco de programa criado pelo usuário. Qualquer bloco de programa pode ler e escrever

    dados nas variáveis da DB shared. Esta DB é também denominada como DB Global .

    Uma DB instance  é um DB dedicado a um Function Block  FB . Todos os dados

    e parâmetros das variáveis locais do FB são armazenados no seu DB instance, que

    passa a ser uma “memória particular” deste FB. A denominação ‘instance’ representa um

    bloco FB chamado, por exemplo, se um bloco FB10 for chamado 3 vezes haverá 3

    instâncias deste bloco, cada uma com um Data Block.

    A Figura 4.1 mostra as duas estruturas aplicadas. No exemplo da figura [] foi

    criada um DB Shared (DB 20) que é compartilhada por três blocos de programas: FC10,

    FC11 e FB12. Uma outra DB foi criada (DB 112) como Instance de FB12, essa DB é

    acessada apenas por FB12, que escreve dados nela.

    Figura 4.1 – Diferentes estruturas de um Data Block.

    4.3 Criando um Data Block Shared

    Um DB Shared pode ser criado através da barra de menus em Insert    S7

    Block    Data Block , conforme Figura 4.2, ou clicando com o botão direito em

    Blocks    Insert New Object    Data Block , conforme Figura 4.3.

  • 8/18/2019 Apostila Siemens

    72/145

     

    Festo Didactic •  ••  •   E320S  

    72Programação avançada com CLP Siemens S7 300  

    Figura 4.2 – Inserindo um Data Block.

    Figura 4.3 - Inserindo um Data Block.

    Uma janela deverá abrir, onde será configurado o tipo do Data Block a ser criado,

    conforme mostra a Figura 4.4. Neste exemplo será mostrado como criar um DB shared

    para ser usada por qualquer bloco de programa.

  • 8/18/2019 Apostila Siemens

    73/145

     

    Festo Didactic •  ••  •   E320S  

    73Programação avançada com CLP Siemens S7 300  

    Figura 4.4 – Escolhendo o formato de um Data Block.

    As informações que devem ser atribuídas a DB, conforme a Figura 4.5, são:

    Figura 4.5 – Configurando variáveis em um DB.

    No exemplo mostrado na Figura 4.6 foram criadas 6 variáveis de tipos

    diferentes, consequentemente com tamanhos diferentes dentro da DB, cada uma alocada

    num endereço próprio criado automaticamente no momento da criação da variável.

  • 8/18/2019 Apostila Siemens

    74/145

     

    Festo Didactic •  ••  •   E320S  

    74Programação avançada com CLP Siemens S7 300  

    Figura 4.6 - Configurando variáveis em um DB.

    Para acessar estas variáveis e ler o seu conteúdo ou escrever um dado deve-se

    utilizar a seguinte sintaxe:

    Exemplo: ler os dados das variáveis criadas na DB da Figura 4.6.

    Para ler 1 BIT: DB1.DBX0.0 Acessa os dados de VAR_1 (BIT = 1)

    Para ler 1 BYTE: DB1.DBB1  Acessa os dados de VAR_2 (39 HEX)Para ler 1 WORD: DB1.DBW2  Acessa os dados de VAR_3 (C4 HEX)

    Para ler 1 DWORD: DB1.DBD4  Acessa os dados de VAR_4 (FF HEX)

    Número Inteiro (16 bits) : DB1.DBW8  Acessa os dados de VAR_5 (10)

    Número Real (32 bits): DB1.DBD10  Acessa os dados de VAR_6 (5,6)

    Exemplo de Programa para ler e escrever dados numa DB:

  • 8/18/2019 Apostila Siemens

    75/145

     

    Festo Didactic •  ••  •   E320S  

    75Programação avançada com CLP Siemens S7 300  

    Figura 4.7 – Acessando as informações de um DB.

    4.4 Programação Orientada – Blocos de Programa

    O Step7 300 permite a criação de blocos de programas orientados como

    subrotinas de um programa principal. Eles estão abaixo dos organization blocks (OB’s) na

    hierarquia de programa e podem ser chamados como subrotinas de OB1 quantas vezes

    for necessário.

    A utilização de subrotinas torna o programa de usuário mais organizado evitando

    a repetição de lógicas de controle dentro do programa principal, facilitando sua criação

    bem como sua interpretação.

    No Step7 300 existem duas estruturas distintas de blocos de programas,

    denominadas como Functions (FC’s)  e Functions Blocks (FB’s) . Ambas estão abaixo

    das OB’s na hierarquia de programa e devem ser acessadas por meio uma instrução dechamada dentro de OB1, por exemplo.

  • 8/18/2019 Apostila Siemens

    76/145

     

    Festo Didactic •  ••  •   E320S  

    76Programação avançada com CLP Siemens S7 300  

    As Functions ou FC’s   são blocos de programas que não possuem uma área de

    memória própria designada para ela. Os dados de suas variáveis são armazenados na

    pilha (L stack) do controlador e são perdidos ao fim de sua execução.

    Os Functions Blocks ou FB’s  são blocos de programas que possuem uma área de

    memória dedicada do tipo Data Block   ou DB   designado para armazenar

    permanentemente os dados de suas variáveis durante e após a sua execução. Essas

    memórias são do tipo Instance Data Block , pois são dedicadas ao bloco de programa a

    que estão associadas.

    4.5 Criando uma FC – Function  

    Neste exemplo será mostrado como implementar um bloco de programa do tipo

    FC  como rotina padrão para partida de motores. O bloco deverá ser criado e chamado

    quantas vezes forem necessárias dentro de OB1 possibilitando o acionamento de vários

    motores diferentes usando a mesma rotina.

    Para isto o bloco deverá ser criado com variáveis locais , que permitem atransferência dos sinais dos endereços absolutos  de OB1 para o bloco, assim como do

    bloco para OB1.

    As variáveis locais das FC’s podem ser do tipo IN , OUT , IN/OUT  ou TEMP . Essas

    variáveis podem ainda ter o formato BOOL  (booleanas, variáveis discretas 0 ou 1),

    informações do tipo BYTE , WORD , DWORD   (Double Word), INT   (números inteiros),

    REAL  (números reais com ponto flutuante), S5TIME   (variáveis de tempo no formato

    Siemens), dentre outras, conforme Figura 4.8.

  • 8/18/2019 Apostila Siemens

    77/145

     

    Festo Didactic •  ••  •   E320S  

    77Programação avançada com CLP Siemens S7 300  

    Figura 4.8 – Criando as variáveis locais de um bloco de programa FC.

    As variáveis do tipo IN   permitem a entrada de sinais que serão processadas

    dentro do bloco. OUT  são variáveis de saída utilizadas para retornar o valor processado

    pelo bloco. Variáveis do tipo IN/OUT são usadas para passar informações para o bloco,

    processá-las e armazenar o resultado na mesma variável.

    As variáveis do tipo TEMP  são variáveis temporárias armazenadas na pilha (L –

    stack) da CPU apenas durante a execução do bloco.

    RETURN permite o retorno de um valor (RET_VAL) ao término da execução do

    bloco.

    No exemplo sugerido o bloco de programa será criado usando uma FC. Foram

    criadas para este bloco três variáveis do tipo IN , sendo S1 para ligar o motor, S0   para

    desligar o motor e RT   como contato do relé térmico de segurança em caso de

    superaquecimento do motor. Como variável do tipo OUT  foi criada apenas uma saída K  

    para o acionamento do contator de potencia, conforme mostra a Figura 4.9.

  • 8/18/2019 Apostila Siemens

    78/145

     

    Festo Didactic •  ••  •   E320S  

    78Programação avançada com CLP Siemens S7 300  

    A entrada EN  é utilizada para habilitar o bloco e a saída ENO  é setada quando o

    bloco chega ao término de sua execução, podendo ser utilizada para habilitar outra

    instrução ou outro bloco de programa na sequência.

    Figura 4.9 – Bloco de programa para partida direta de motores.  

    Pode-se inserir uma FC através da barra de menus em Insert    S7

    Block    Function , como mostra a Figura 4.10 ou clicando com o botão direito do mouse

    sobre a pasta Blocks na árvore do projeto e seguindo os passos da Figura 4.11 para

    inserir uma FC.

    Figura 4.10 – Inserindo uma FC. 

  • 8/18/2019 Apostila Siemens

    79/145

     

    Festo Didactic •  ••  •   E320S  

    79Programação avançada com CLP Siemens S7 300  

    Figura 4.11 - Inserindo uma FC. 

    Uma vez inserido um FC, como mostrado na Figura 4.11, deve-se selecionar a

    linguagem de programação desejada para implementar a rotina de programa, neste

    exemplo será usada a linguagem Ladder de programação, conforme Figura 4.12.

    Ao criar o bloco pode-se inserir um nome simbólico (Symbolic Name ) e

    comentários para este, porém não é possível alterar a identificação do bloco de FC1 para

    outro nome simbólico.

    Na aba General – Part 2   podem-se inserir informações do criador do bloco e

    versão do mesmo. O espaço mínimo ocupado pelo bloco na memória do controlador é

    mostrado conforme Figura 4.13.

  • 8/18/2019 Apostila Siemens

    80/145

     

    Festo Didactic •  ••  •   E320S  

    80Programação avançada com CLP Siemens S7 300  

    Figura 4.12 – Selecionando a linguagem do bloco de programa. 

    Figura 4.13 – Propriedades do bloco de programa. 

  • 8/18/2019 Apostila Siemens

    81/145

     

    Festo Didactic •  ••  •   E320S  

    81Programação avançada com CLP Siemens S7 300  

    Na aba Calls  é mostrado se outros blocos de programas foram chamados dentro

    deste como subprogramas, conforme mostra a Figura 4.14, neste exemplo, um function

    block   FB1 foi declarado como variável multiple instance   dentro de um function block  

    FB10. Este método de estruturação de programa será mais bem detalhado

    posteriormente neste texto.

    Figura 4.14 – Descrição da estrutura dos blocos de programa criados num projeto. 

    Por fim, na aba attributes , Figura 4.15, podem ser inseridos atributos específicos

    de controle dos blocos de programa, como por exemplo a ferramenta S7-pdiag , para que

    o bloco seja capaz de processar diagnóstico de erros. 

  • 8/18/2019 Apostila Siemens

    82/145

     

    Festo Didactic •  ••  •   E320S  

    82Programação avançada com CLP Siemens S7 300  

    Figura 4.15 – Configuração dos atributos de um bloco de programa.

    Ao abrir o bloco devem-se declarar as variáveis locais   conforme mostram as

    Figura 4.16 até Figura 4.19. Em seguida basta inserir uma network e fazer o programa

    que deverá executar a rotina proposta, Figura 4.20. Neste exemplo, a rotina proposta

    deverá executar a função de partida direta de motores, com um botão para ligar o motor

    (S1), um para desligar (S0) e o contato de um rele térmico de segurança e uma saída

    para o acionamento do contator (RT), todas estas variáveis deverão ser declaradas como

    booleanas  (BOOL). As variáveis locais criadas dentro de uma FC ficam limitadas a 127

    endereços no total.

  • 8/18/2019 Apostila Siemens

    83/145

     

    Festo Didactic •  ••  •   E320S  

    83Programação avançada com CLP Siemens S7 300  

    Figura 4.16 – variáveis locais de entrada do bloco. 

    Figura 4.17 – variáveis locais de saída do bloco. 

    Figura 4.18 – inserindo as instruções. 

  • 8/18/2019 Apostila Siemens

    84/145

     

    Festo Didactic •  ••  •   E320S  

    84Programação avançada com CLP Siemens S7 300  

    Figura 4.19 – inserindo as variáveis locais.

    O programa finalizado em FC1 é mostrado na Figura 4.20 com todas as suas

    variáveis declaradas. A sintaxe “#” indica uma variável do bloco, e indica que esta

    variável não  se trata de um endereço absoluto .

    Figura 4.20 – Programa para partida direta de motores. 

  • 8/18/2019 Apostila Siemens

    85/145

     

    Festo Didactic •  ••  •   E320S  

    85Programação avançada com CLP Siemens S7 300  

    Após finalizar o programa, o mesmo deverá ser salvo e compilado, para isto,

    basta clicar no ícone salvar , conforme Figura 4.21, e fechar o bloco.

    Figura 4.21 – Salvando e compilando um FC.

    O bloco de programa criado deverá ser chamado dentro de OB1 como rotina

    padrão. Para isto, basta abrir o conteúdo de FC blocks  dentro de OB1 e “arrastá-lo” para

    a network  criada, como mostram a Figura 4.22.

    Figura 4.22 – Chamando o bloco FC criado em OB1. 

    Os dados a serem processados pelo bloco serão fornecidos através de endereços

    absolutos   em OB1. Os endereços absolutos podem ser relacionados a “nomessimbólicos”  por meio do Symbol Table . Para acessar o Symbol Table basta clicar sobre

  • 8/18/2019 Apostila Siemens

    86/145

  • 8/18/2019 Apostila Siemens

    87/145

     

    Festo Didactic •  ••  •   E320S  

    87Programação avançada com CLP Siemens S7 300  

    Figura 4.25 – Symbol Table: lista de alocação de variáveis. 

    Uma vez declaradas as variáveis no Symbol Table, deve-se relacionar

    cada uma a sua respectiva entrada ou saída no bloco, conforme Figura 4.26.

    Figura 4.26 – Relacionando as variáveis locais com as variáveis absolutas.

  • 8/18/2019 Apostila Siemens

    88/145

     

    Festo Didactic •  ••  •   E320S  

    88Programação avançada com CLP Siemens S7 300  

    Figura 4.27 – Bloco de programa para partida de motores criado.

    Uma vez criada, a Function   FC1 pode ser chamada quantas vezes forem

    necessárias dentro de OB1, conforme o programa da Figura 4.28.

  • 8/18/2019 Apostila Siemens

    89/145

     

    Festo Didactic •  ••  •   E320S  

    89Programação avançada com CLP Siemens S7 300  

    Figura 4.28 – Programa final usando a rotina criada em FC1.

  • 8/18/2019 Apostila Siemens

    90/145

     

    Festo Didactic •  ••  •   E320S  

    90Programação avançada co

    4.6 Criando um

    4.6.1 Instance F

     

    Assim como os F 

    subrotinas de OB1 ou d

    “chamado” dentro de OB

    armazenamento temporár

    resumo, nessa estrutura c

    e dedicada a ele, conform

    Fi

    CLP Siemens S7 300  

    B – Function Block

    nctions   (FC), os FB’s são blocos de progr

    e outros blocos. Cada Instance Functio 

      1, por exemplo, necessita de um Data

    io ou permanente dos dados processad

    da FB tem uma área de memória do tipo D

    mostram a Figura 4.29 e Figura 4.30.

    gura 4.29 – Estrutura Instance FB no S7 30

     

    Figura 4.30 – Estrutura Instance FB. 

    ama criados como

    s Block   criado e

    lock   (DB) para o

    s pelo bloco. Em

    ta Block reservada

    .

  • 8/18/2019 Apostila Siemens

    91/145

     

    Festo Didactic •  ••  •   E320S  

    91Programação avançada com CLP Siemens S7 300  

    Como exemplo de aplicação será criado um bloco de programa com a função de

    contagem de pulsos externos para ligar uma saída qualquer do CLP, um contador do tipo

    crescente, que será denominado Counter Up , conforme mostra a Figura 4.31.

    Como padrão, estes blocos devem ter uma entrada para receber os pulsos

    externos, denominada C_UP   e declarada como variável BOOL, uma entrada SET  

    (BOOL) para carregar o valor de contagem registrado em PRESET   (INT) na memória

    interna do contador, uma entrada RESET   (BOOL) para resetar a saída Q   (BOOL) do

    contador e zerar sua memória interna de registros de pulsos e uma saída para

    monitoramento do valor da contagem atual VALOR   (INT), além da entrada EN   para

    habilitar o bloco e uma saída ENO , padrões do bloco.

    Figura 4.31 – Bloco de programa do contador crescente criado como Function

    Block.

    Os procedimentos para inserir um FB são os mesmos para inserir uma FC,

    conforme mostrado na Figura 4.32 e Figura 4.33

  • 8/18/2019 Apostila Siemens

    92/145

     

    Festo Didactic •  ••  •   E320S  

    92Programação avançada com CLP Siemens S7 300  

    Figura 4.32 – Inserindo um FB.

    Figura 4.33 – Inserindo um FB. 

    Ao criar a FB deve-se escolher a linguagem na qual o programa será

    implementado e escolher se essa FB será do tipo Instance ou Multi-instance, marcando

    ou desmarcando a opção indicada na Figura 4.34.

  • 8/18/2019 Apostila Siemens

    93/145

     

    Festo Didactic •  ••  •   E320S  

    93Programação avançada com CLP Siemens S7 300  

    Figura 4.34 – Configurando uma FB. 

    As variáveis locais de entrada e saída do bloco são declaradas conforme mostra

    Figura 4.35 e Figura 4.36. Uma diferença que pode ser observada em relação ao bloco

    do tipo FC é que as variáveis declaradas são automaticamente alocadas num endereço

    do Data Block (DB) da FB.

    Figura 4.35 – Declarando variáveis locais de um bloco FB. 

  • 8/18/2019 Apostila Siemens

    94/145

     

    Festo Didactic •  ••  •   E320S  

    94Programação avançada com CLP Siemens S7 300  

    Figura 4.36 - Declarando variáveis locais de um bloco FB. 

    Além das variáveis de entrada IN   e saída OUT , as FB’s possuem também

    variáveis do tipo estáticas,  STATIC   VARIABLES , que são variáveis locais restritas

    apenas para processamento de dados internos ao bloco e que possuem espaço

    reservado dentro do seu Data Block (DB).

    Para esta aplicação existem três variáveis estáticas, uma denominada MEMORIA

    (INT), onde é registrada a contagem de pulsos, essa memória é incrementada conformeo contador recebe os sinais em sua entrada C_UP. Há também uma variável denominada

    REF  (INT) que recebe o valor de referencia limite da contagem por meio da variável de

    entrada PRESET (INT). Por último há uma variável denominada FLAG   (BOOL) para

    registro da borda de subida do sinal no flanco positivo (P) utilizado neste programa. A

    declaração destas variáveis é mostrada na Figura 4.37.

    Estas variáveis internas do bloco poderiam também ser declaradas como

    variáveis do tipo TEMP  (Temporary Data), porém elas não teriam uma área reservadadentro da DB deste bloco e seus dados seriam então armazenados temporariamente na

    pilha (L stack)  apenas durante a execução do Function Block .

  • 8/18/2019 Apostila Siemens

    95/145

  • 8/18/2019 Apostila Siemens

    96/145

     

    Festo Didactic •  ••  •   E320S  

    96Programação avançada com CLP Siemens S7 300  

    Na network 1 ao acionar a entrada #set do bloco o valor armazenado em #preset

    é transferido para a variável interna #ref do bloco.

    Na network 2 , através da entrada #c_up o bloco recebe os pulsos. Ao ser

    acionada a entrada #c_up a variável #memoria é comparada com o valor de referencia

    (limite da contagem). Enquanto #memoria for menor que #ref o resultado da comparação

    retorna verdadeiro e a saída da instrução de comparação retorna verdadeiro, gerando um

    pulso na entrada da instrução de soma ADD, que soma 1 ao conteúdo do registro

    #memoria e armazena no mesmo registro #memoria (variável tipo STAT). Toda vez que

    que #c_up é acionado o registro memória é incrementado em uma unidade. O flanco

    positivo antes da instrução ADD permite a passagem de apenas um pulso na borda de

  • 8/18/2019 Apostila Siemens

    97/145

     

    Festo Didactic •  ••  •   E320S  

    97Programação avançada com CLP Siemens S7 300  

    subida do sinal, não permitindo que o registro memória seja incrementado em mais de

    uma unidade.

    A variável #memória é incrementada e logo na sequência transferida para a

    variável #valor do tipo OUT, que poderá ser lida pelo usuário.

    Conforme ocorrem os incrementos, o registro #memoria torna-se igual a #ref,

    portanto o resultado da comparação retorna falso na network 2, e o registro #memoria

    deixa de ser incrementado. Na network 3  o resultado da comparação retorna verdadeiro

    para igual (#memoria = #ref) e desta forma a saída #Q do bloco é setada e assim

    permanece, até que a entrada #reset seja acionada na network 4 , resetando #Q e

    transferindo o valor 0 (zero) para os registros #memoria e #valor simultaneamente. Desta

    forma, uma nova contagem poderá ser iniciada.

    A rotina do bloco de programa FB1 deverá ser salvar afim de compilar o bloco.

    Por se tratar de um Function Block  é necessário associar a ele uma memória do

    tipo DB (Data Block ) que irá armazenar os dados de suas variáveis. Para inserir uma DB

    basta selecionar a pasta blocks  na árvore de projeto abrir a guia Insert    S7 Block    4

    Data Block na barra de menus, conforme mostra Figura 4.38.

    Figura 4.38 – Criando um DB para o FB1.

  • 8/18/2019 Apostila Siemens

    98/145

     

    Festo Didactic •  ••  •   E320S  

    98Programação avançada com CLP Siemens S7 300  

    Para associar esta DB a um Instance FB  selecione esta opção conforme Figura

    4.39 e escolha o bloco ao qual a DB será associada, em seguida clique em OK .

    Figura 4.39 – Vinculando o DB ao