apostila siemens
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
8
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