Sei sulla pagina 1di 145

NDICE

Introduo ao S7 300 .................................................................................................. 3

1.1

Conceitos de memria para S7 300............................................................................ 10

1.2

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

1.3

Endereamento .......................................................................................................... 15

1.3.1

Entradas e sadas Digitais DI/DO (Digital Input/Digital Output) ................................ 15

1.3.2

Entradas e sadas Analgicas AI/AO (Analogic Input/Analogic Output) ................... 17

1.3.3

Memrias .................................................................................................................... 19

1.4

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

1.5

Endereamento indireto e Ponteiros ........................................................................... 24

1.5.1

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

2
2.1
3

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


Trabalhando com Multiproject ..................................................................................... 35
Linguagens de Programao para STEP7 300 .......................................................... 38

3.1

Instrues 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 aplicao das linguagens Ladder, STL e FBD ....................................... 40

3.1.5

Memria eltrica ......................................................................................................... 41

3.1.6

Sadas Retentivas ...................................................................................................... 42

3.1.7

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

3.1.8

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

3.1.9

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

3.2

Instrues de Temporizao....................................................................................... 46

3.2.1

Temporizador com retardo na ativao S_ODT .......................................................... 49

3.2.2

Temporizador retentivo com retardo na ativao S_ODTS ......................................... 50

3.2.3

Temporizador com retardo na desativao S_OFFDT ................................................ 51

3.2.4

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

3.3

Instrues 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

Instrues de Comparao ......................................................................................... 58

2
Programao avanada com CLP Siemens S7 300

3.4.1

Instrues de comparao em STL ............................................................................ 60

3.5

Instruo de Transferncia de dados .......................................................................... 61

3.6

Instruo de Transferncia de dados em STL ............................................................ 62

3.7

Instrues Matemticas com nmeros inteiros (INT) e reais (REAL) .......................... 62

3.7.1

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

3.7.2

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

3.7.3

Instrues matemticas em STL................................................................................. 67

3.8

Instrues lgicas operaes booleanas ................................................................. 67

3.8.1

Operaes booleanas em STL ................................................................................... 69

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

4.1

Organization Blocks OBs ........................................................................................ 70

4.2

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

4.3

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

4.4

Programao 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

Introduo linguagem de programao GRAPH para S7 300 ............................... 114

5.1

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

5.2

Instrues bsicas para S7 GRAPH ......................................................................... 123

5.3

Exemplo de aplicao............................................................................................... 123

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

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

Forando Variveis .................................................................................................. 144

Festo Didactic E320S

3
Programao avanada com CLP Siemens S7 300

PROGRAMANDO COM SIEMENS S7-300

Introduo ao S7 300

O CLP S7-300 da Siemens um controlador modular utilizado em aplicaes


centralizadas ou distribudas, interligando os mais variados dispositivos de campo atravs
de seus mdulos de entrada e sada, digitais ou analgicas. Pode ainda ser integrado a
outros dispositivos de controle atravs de rede industriais, com ampla gama de
protocolos disponveis.

Figura 1.1 Controle centralizado com S7 300 Siemens.

Festo Didactic E320S

4
Programao avanada 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 implementao de


programas em aplicaes centralizadas. Esta ferramenta no mais usual na atualidade.

Figura 1.3: Ambiente de programao do Step 7 Lite

Festo Didactic E320S

5
Programao avanada com CLP Siemens S7 300

Step 7 Manager uma ferramenta mais completa para gerenciamento de


projetos em automao, permitindo a integrao de todos os dispositivos programveis
em um nico ambiente, assim como a estruturao de projetos com redes industriais.

Figura 1.4 - Ambiente de programao do Step 7 Manager

A comunicao entre o meio de programao 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 proprietrio da
Siemens denominado MPI (Multi-Point Interface), conforme Figura 1.5. Esta comunicao
tambm pode ocorrer via rede Profibus (conforme Figura 1.7) ou Ethernet atravs da
placa de rede do computador (conforme Figura 1.8). O programa de usurio, com todos
os blocos de programa e blocos dados, quando transferido para o CLP gravado num
carto de memria denominado MMC (Micro Memory Card). Os LEDs na parte lateral do
cabo indicam o estado de comunicao entre o dispositivo programador e o CLP.

Festo Didactic E320S

6
Programao avanada com CLP Siemens S7 300

Figura 1.5 PC adapter MPI.

Figura 1.6 Programao via protocolo MPI.

Festo Didactic E320S

7
Programao avanada com CLP Siemens S7 300

Figura 1.7 - Programao via rede DP.

Figura 1.8 - Programao via rede Ethernet.

Festo Didactic E320S

8
Programao avanada com CLP Siemens S7 300

Os recursos e especificaes tcnicas do CLP, como quantidade de entradas e


sadas, interfaces de operao, interfaces de comunicao, quantidade de endereos
para temporizadores e contadores, tamanho da imagem de entradas e sadas, dentre
outras, variam de acordo com o modelo da CPU.

As CPUs Siemens S7 300 so definidas como Compactas ou Standard. Uma


CPU compacta possui entradas e sadas digitais ou analgicas integradas, enquanto uma
CPU standard no possui entradas e sadas integradas, necessitando de cartes
adicionais, mdulos de I/O, para fazer interface com os dispositivos do meio externo. A
Figura 1.9 mostra duas CPUs Siemens S7 300.

Figura 1.9 Modelos de CPU Siemens.

Os LEDs na parte superior frontal da CPU indicam o estado do CLP, ou seja, o


modo de operao da CPU. Abaixo segue a descrio das funes de cada LED.
SF System Fault: indica falha de software ou hardware;
BF Bus Fault: indica falha na rede DP;
DC5V Alimentao 5 volts: indica que a alimentao de 5 volts da CPU e dos
mdulos est ok.

Festo Didactic E320S

9
Programao avanada com CLP Siemens S7 300

FRCE Force: indica modo de trabalho forado de uma varivel.


RUN indica que o programa est em execuo.
STOP quando ligada constantemente indica a parada de execuo do
programa. Quando est piscando numa frequncia de 0,5Hz indica que a CPU necessita
de um reset em sua memria devido a algum erro ou falha do sistema.

Se a CPU solicitar um reset de memria, fazendo o STOP LED piscar lentamente,


pode-se resetar o MMC atravs da chave seletora de modo, como segue:

1. Posicione a chave para posio MRES e mantenha pressionada nesta posio


at o STOP LED parar de piscar (ficar aceso constantemente isto dever levar alguns
segundos);
2. Aps o LED STOP acender e permanecer aceso, aguarde 3 segundos, solte a
chave e volte a pression-la para a posio MRES. O LED de STOP pisca para indicar
que a formatao est em processo.

Figura 1.10 CPU Siemens S7 300.

Festo Didactic E320S

10
Programao avanada com CLP Siemens S7 300

Por meio da chave seletora possvel alterar o modo de funcionamento do CLP


para RUN (executa o programa), STOP (para a execuo do programa) ou MRES (reseta
as variveis da memria do controlador).

1.1

Conceitos de memria para S7 300

A Figura 1.11 mostra a diviso das reas de memria existentes no controlador,


contendo trs reas de memrias distintas.

Figura 1.11 Estrutura do MMC.

Load Memory (Memria de Carga): Est localizada no MMC (Micro Memory


Card). Ela armazena o programa de usurio com seus blocos de programa (OBs, DBs,
FCs, etc) assim como a configurao de hardware. O contedo desta memria influencia
diretamente no funcionamento da CPU.
System Memory (Memria do Sistema): Contm os endereos dos Bit Memories,
Timers e Counters; da imagem de processo (PI - process image) das inputs e outputs;
assim como do Local Data (variveis temporrias da pilha local, tipo TEMP). A imagem
de processo das entradas e sadas do controlador acessada atravs da memria de
sistema da CPU.

Festo Didactic E320S

11
Programao avanada com CLP Siemens S7 300

Main Memory (Memria Principal): usada para execuo do cdigo de


programa de usurio. O programa somente roda na Memria Principal, memria RAM
integrada CPU.
O MMC (Micro Memory Card) um memory card que contm a memria de carga
(Load Memory) da CPU, onde armazenado o programa de usurio com todos os
blocos de programa necessrios para sua execuo, como FCs, FBs, SFCs, etc.

Aps o download o programa de usurio armazenado permanentemente na


load memory. Porm, as partes relevantes do programa so executadas em outra rea
de memria, denominada Work Memory, que se trata da Main Memory, memria RAM
integrada a CPU.

A Figura 1.12 mostra os destinos dos dados transferidos aps um download para
o controlador.

Figura 1.12 Dados que so gravados no MMC.

Festo Didactic E320S

12
Programao avanada com CLP Siemens S7 300

1.2

Estrutura de Hardware

Os mdulos Siemens para S7 300 so montados numa estrutura perfilada de ao


denominada Rack, e interligados atravs de um conector de barramento (Bus Conector)
para comunicao entre eles e com a CPU, conforme Figura 1.13.

A montagem dos mdulos tambm pode ser feitas num rack com barramento
ativo, onde o bus conector substitudo por um rack que interliga os mdulos
paralelamente para fins de alimentao (Power supply) e comunicao, permitindo a
troca a quente dos mdulos.

Figura 1.13 Montagem dos mdulos no rack.

Festo Didactic E320S

13
Programao avanada com CLP Siemens S7 300

Os cartes Siemens para o S7 300 so divididos em trs grupos:


SM (Signal Modules) Compreendem os mdulos de entradas e sadas digitais
(DI/DO) ou analgicas (AI/AO).
CP (Communication Processor) Compreendem os mdulos de comunicao
para rede ASi, Profibus (DP, PA, FMS), Ethernet Industrial e PtP (rede ponto-a-ponto).

FM (Function Module) Compreendem os mdulos de entrada e sada com


funes especiais para dispositivos de controle de posio, entradas e sadas rpidas de
freqncia, etc.

Figura 1.14 Estrutura do rack Siemens.

Um exemplo de configurao de rack mostrado na Figura 1.15.

Figura 1.15 Exemplo de configurao do rack.

Festo Didactic E320S

14
Programao avanada com CLP Siemens S7 300

Uma CPU suporta at quatro racks com at oito mdulos cada, como mostra a
Figura 1.16.

Figura 1.16 CPU controlando at 4 racks.

A comunicao entre os racks feita por meio de um mdulo denominado IM


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

Festo Didactic E320S

15
Programao avanada com CLP Siemens S7 300

1.3

1.3.1

Endereamento

Entradas e sadas Digitais DI/DO (Digital Input/Digital Output)

As entradas digitais so capazes de detectar uma variao de estado lgico


correspondente a uma variao de tenso discreta, proveniente de dispositivos de
sinais como botoeiras, sensores de proximidade, chaves fim-de-curso, dentre outros. Da
mesma forma, as sada digitais enviam sinais discretos de tenso para os dispositivos
que devero ser acionados, como sinalizadores luminosos ou sonoros, rels, solenides,
etc. A variao de estado lgico entre os nveis 0 e 1 neste texto ser representada
pela sigla RLO, cujo significado Resultado Lgico do Operador.

Figura 1.17 Sinais digitais

Para enderear pontos de entrada e sadas digitais o S7 300 usa o modelo


Byte.Bit, onde cada mdulo dividido em 1 Byte de dados e endereado bit-a-bit,
conforme Figura 1.18. As interfaces de entrada so identificadas pela letra I (input),
enquanto as interfaces de sada so identificadas pela letra Q (output). Fisicamente, elas
so distribudas nos mdulos conforme Figura 1.20.

Figura 1.18 Endereamento de entradas digitais.

Festo Didactic E320S

16
Programao avanada com CLP Siemens S7 300

Uma representao mais completa de endereos de I/O mostrada na Figura


1.19.

Figura 1.19 Endereamento de entradas e sadas digitais.

Figura 1.20 Endereamento de entradas e sadas digitais nos cartes Siemens.

O acesso aos endereos de entrada e sada ocorre numa rea da memria de


sistema denominada Imagem de Processo (PI Process Image) do CLP, corresponde
a uma regio na memria do controlador onde a escrita e a leitura dessas interfaces

Festo Didactic E320S

17
Programao avanada 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 CPUs da famlia S7-300 normalmente reservam
128 bytes de imagem, ou seja, os endereos de input e output podem ser endereados
neste caso de IB0 a IB127 no caso de entradas e de QB0 a QB127 no caso de sadas.
Fora da imagem de processo da CPU os endereos so lidos na rea perifrica (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 sadas Analgicas AI/AO (Analogic Input/Analogic


Output)

As entradas analgicas so capazes de detectar uma variao de sinal contnuo


de tenso 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 funo da variao de uma grandeza fsica medida por meio
de um transdutor, como termopares, sensores analgicos de presso, clulas de carga,
etc. As sadas analgicas so capazes de gerar uma variao de tenso de 0V a 10V ou
de corrente de 0mA a 20mA para controlar dispositivos externos como drives de potncia,
por exemplo.

Figura 1.21 Sinal analgico

O endereamento das entradas e sadas analgicas no S7 300 feito atravs das


variveis perifricas, ou seja, fora da imagem de entradas e sadas do controlador. PIW
(Peripheral Input Word) para entradas analgicas e PQW (Peripheral Output Word) para

Festo Didactic E320S

18
Programao avanada com CLP Siemens S7 300

sadas analgicas. Essas variveis tm o tamanho de uma Word e trabalham com


valores inteiros (INT) de 16 bits. As variveis analgicas normalmente comeam a ser
endereadas a partir do endereo 256 para entradas e sadas, conforme Figura 1.22.

Figura 1.22 Entradas e sadas analgicas.

Um mapa completo com os endereos de entradas e sadas digitais e analgicas


sugeridos mostrado na Figura 1.23.

Figura 1.23 Mapeamento de entradas e sadas digitais nos racks.

Festo Didactic E320S

19
Programao avanada com CLP Siemens S7 300

1.3.3

Memrias

Conforme mostrado no item 1.1, a CPU do S7 300 trabalha com trs reas de
memria: Load Memory (MMC), System Memory e Main Memory.

Mas podemos simplificar descrevendo apenas duas reas de memria para o


controle das informaes na CPU: Work Memory e Load Memory, conforme Figura 1.24.

Figura 1.24 Simplificao das reas de memria da CPU.

Work Memory: corresponde memria RAM do controlador, para


armazenamento das variveis no-retentivas.

Load Memory: corresponde memria EEPROM (MMC) do controlador,


para armazenar o programa de usurio e tambm as variveis retentivas.

O S7 300 possui ainda trs variveis de memrias distintas: M (bit Memories), D


(Data Block) e L (Variveis temporrias, Local Data pilha local) para leitura e escrita
de dados do programa de usurio, alm dos acumuladores ACCU1 e ACCU2 (rea de
transferncia de dados usada pelo programa para o fluxo de informaes) e Area
Registers AR1 e AR2 (registradores de endereo para ponteiros).

Festo Didactic E320S

20
Programao avanada com CLP Siemens S7 300

As memrias do tipo M (Bit Memories) so memrias de uso geral, para


armazenamento de dados do programa de usurio. Elas podem ser acessadas por
qualquer bloco de programa, para escrita ou para leitura de dados. Essas memrias
podem ser retentivas ou no. Esta condio pode ser estabelecida durante a
configurao do hardware.

As variveis do tipo L so definidas como temporrias no programa (variveis


temporrias, tipo TEMP) e so variveis no-retentivas, portanto, os valores
armazenados nessas variveis so apagados no ato da sada do bloco de programa.
No S7 300 essas memrias so alocadas em reas de 8 bits, ou seja, cada
alocao de memria do tipo M possui tamanho de um 1 Byte, e so denominadas como
MB (Memory Byte) conforme Figura 1.25.

Figura 1.25 Alocaes de memrias no S7 300.

Os MBs podem ser endereados por Byte (8 bits), Word (16 bits), Double Word
(32 bits) ou bit-a-bit, como mostra a Figura 1.26.

Festo Didactic E320S

21
Programao avanada com CLP Siemens S7 300

Figura 1.26 Formatos das memrias.


Quando endereadas bit-a-bit elas poder ser utilizadas como flags ou sadas
auxiliares nos blocos de programa, como mostra o exemplo de programa da Figura 1.27.

Figura 1.27 Exemplo de aplicao das memrias como Flags.

possvel a ocorrncia de conflito de dados quando o usurio utiliza no mesmo


programa memrias com tamanhos e endereos diferentes, mas que possuem bits em
comum entre elas, como mostra a Figura 1.28.

Festo Didactic E320S

22
Programao avanada com CLP Siemens S7 300

Figura 1.28 Conflito de dados.

recomendvel, para o exemplo acima, que o usurio enderece essas memrias


com nmeros pares, ou seja, a cada dois bytes: MW0, MW2, MW4...Afim de evitar
conflito de dados.

As memrias do tipo L (Stack) so destinadas ao armazenamento temporrio de


variveis. No S7 300 essas reas de memria so denominadas TEMP. Variveis do tipo
TEMP podem ser declaradas no programa de usurio, dentro de OBs, FCs e FBs, como
ser mostrado adiante.

Existem ainda reas de memrias denominadas ACC1 e ACC2 (acumuladores),


onde os resultados de operaes lgicas so armazenados provisoriamente.

possvel carregar essas memrias por meio dos comandos L (Load) e T


(Transfer), comuns na linguagem STL de programao, como ser abordado nos tpicos
seguintes. O contedo desses registros pode ser visualizado atravs do comando View
PLC Register na barra de menus, conforme Figura 1.29.

Festo Didactic E320S

23
Programao avanada com CLP Siemens S7 300

Figura 1.29 Memria L temporria (stack).

As memrias do tipo D (Data Blocks) so reas de memria utilizadas para o


armazenamento de dados que so processados dentro de blocos de programas, aos
quais elas so vinculadas quando criadas. Mas tambm podem ser utilizadas para
armazenamento de dados de qualquer outro bloco de programa, como as memrias de
uso geral. Mais detalhes sobre essas memrias, os Data Blocks, sero abordados no
item 4.2.

1.4

Tipos de dados

Todos os dados e variveis declaradas no programa de usurio devem ser


identificados por um tipo de dado especfico. O S7 300 possui uma grande gama de tipo
de dados sendo eles divididos em trs grupos distintos:

Elementares so tipos de dados mais bsicos utilizados para a declarao de


constantes e variveis simples. A tabela a seguir mostra os tipos de dados elementares
mais usuais no S7 300.

Complexas Consistem da combinao dos tipos de dados elementares em


estruturas mais complexa de dados. Variveis complexas so normalmente declaradas
em Data Blocks (DBs). Compreende as seguintes estruturas de dados:

Festo Didactic E320S

24
Programao avanada com CLP Siemens S7 300

Parmetros Compreendem as variveis locais criadas para transferncia de dados


em FCc e FBs.

DATE_AND_TIME Variveis tipo tempo e data.


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

STRING[n] - Variveis tipo ASCII (caracteres)


Exemplo: STRING[7]

SIMATIC

ARRAY Estrutura tipo matriz de dados


Exemplo: ARRAY[1..10]
As variveis complexas podem ainda ser do tipo:

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

1.5

Endereamento indireto e Ponteiros

O endereamento indireto de variveis feito atravs de ponteiros. Um ponteiro


utilizado para apontar o endereo de uma varivel, permitindo que a mesma varivel seja
acessa com endereos diferentes repetidas vezes a cada varredura de programa.

Festo Didactic E320S

25
Programao avanada com CLP Siemens S7 300

No Step7 os ponteiros so descritos pela letra P seguida de #, conforme


mostra a Figura 1.30.

Exemplo: P#23.7 Este ponteiro aponta para o endereo Byte=23 e Bit=7 de uma
varivel qualquer.

Quando uma varivel carregada com um ponteiro ela recebe o contedo


daquele endereo, apontado pelo ponteiro. O ponteiro pode ser incrementado e
decrementado no programa, permitindo acessar o contedo de outras variveis. A Figura
1.31 mostra um diagrama com as possibilidades de endereamento indireto que so
possveis de ser efetuados no SIMATIC Step7.

Os tipos de ponteiro para o Step7 so:

Ponteiro 16-bit para Endereamento Indireto de Memria

Para acesso indireto de memria de temporizadores, contadores e DBs abertos.

Ponteiro 32-bit p/ Endereamento Indireto de Memria e Registrador

Ponteiro 32 bit de rea interna para acesso indireto de memria e registrador de


endereos em PI, PQ, I, Q, M, DB, DI e L (pilha local).
Ponteiro 32 bit de rea cruzada para acesso indireto do registrador de endereos
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 prprio para passagem de parmetros para blocos (FBs e FCs)
Contm, em adio ao ponteiro 32-bit de rea-cruzada, a declarao do nmero do DB.

Ponteiro 80-bit (Tipo de Dado ANY)

Tipo de dado prprio para passagem de parmetros para blocos (FBs e FCs).
Contm, em adio ao ponteiro 32-bit de rea-cruzada, a declarao do nmero do DB,
tipo de dado e fator de repetio.

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 memria do controlador.

Festo Didactic E320S

26
Programao avanada com CLP Siemens S7 300

Figura 1.30 Estrutura do ponteiro

Figura 1.31 Tipos de endereamento: Direto e Indireto.

Festo Didactic E320S

27
Programao avanada com CLP Siemens S7 300

Exemplo de aplicao de endereamento indireto e ponteiros:

1.5.1

Tipo de dado ANY

Os data types tipo ANY so ponteiros de 80 bits utilizados para passagem de


parmetros para blocos de programas, como FCs e FBs.

As variveis do tipo ANY podem assumir qualquer formato de varivel e so


endereadas com ponteiros que permitem o acesso indireto a memrias, para fins de
escrita e leitura.

Exemplo:
P#M40.0 BYTE 10

Neste exemplo deseja-se acessar uma rea de memria com extenso de 10


Bytes que vai de MB40 at MB49.

Festo Didactic E320S

28
Programao avanada com CLP Siemens S7 300

Criando um novo projeto no SIMATIC Manager

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


ambiente integrado para criao de projetos em automao. Ele permite a integrao de
todos os dispositivos e softwares da Siemens em um nico ambiente de programao. O
ambiente inicial do software mostrado na Figura 2.1.
Na estrutura do SIMATIC Manager, todos os blocos de programas so criados
dentro de um projeto. Portanto, para criar um programa necessrio antes criar um
projeto novo, conforme Figura 2.2.

Figura 2.1 Tela inicial do SIMATIC Manager

Festo Didactic E320S

29
Programao avanada 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. Devese inserir o nome do projeto e clicar em ok.

Figura 2.3 Inserindo o nome do projeto.

Festo Didactic E320S

30
Programao avanada com CLP Siemens S7 300

O projeto com o nome escolhido ento 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. necessrio inserir o modelo CPU, atravs do comando:
Insert

Station

2 SIMATIC 300 Station

Conforme Figura 2.5 ou clicando com o boto direito sobre o cone do projeto,
conforme Figura 2.6.

Figura 2.5 Inserindo uma Estao da famlia 300.

Festo Didactic E320S

31
Programao avanada com CLP Siemens S7 300

Figura 2.6 - Inserindo uma Estao da famlia 300.

Uma vez inserido o modelo da estao com a qual se vai trabalhar deve-se
configurar o hardware para ela, ou seja, informar ao programa o modelo da CPU e os
mdulos existentes no rack fisicamente. Para isso deve-se abrir o cone com o nome do
projeto onde foi inserido o tipo de estao (Figura 2.7) e abrir a janela de configurao 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.

Festo Didactic E320S

32
Programao avanada com CLP Siemens S7 300

Dentro da janela de configurao de hardware deve-se primeiramente inserir o


rack, conforme Figura 2.8.

Uma vez inserido o rack, basta selecionar cada mdulo correspondente ao


hardware fsico 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.


Festo Didactic E320S

33
Programao avanada 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 CPUs compactas trazem como configurao padro (default) os endereos de


entrada e sadas com valor inicial referente ao ltimo slot do ltimo rack.

possvel alterar os endereos das entradas e sadas 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 usurio poder alterar o inicio dos endereos das entradas e sadas,
desmarcando a opo System default da CPU compacta conforme mostra a Figura 2.11.

Festo Didactic E320S

34
Programao avanada com CLP Siemens S7 300

Figura 2.11 Alterando os endereos de entradas e sadas.

As alteraes feitas devero 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.

Aps salvar e compilar a configurao de hardware uma nova pasta contendo os


blocos de programa fica disponvel, com o primeiro bloco de programa de usurio, OB1
(Organization Block 1), que o Main Program do S7 300, como mostra a Figura 2.13.

Festo Didactic E320S

35
Programao avanada 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 possvel criar


vrios projetos dentro de uma nica pasta, ajudando na organizao dos programas de
usurio.

Aps 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

Festo Didactic E320S

36
Programao avanada com CLP Siemens S7 300

Figura 2.14 Criando um Multiproject

Clique com o boto direito sobre a pasta com o nome do projeto e escolha a
opo Creat in Multiproject para inserir um novo projeto dentro desta pasta, conforme
Figura 2.15.

Figura 2.15 Inserindo um projeto.

Festo Didactic E320S

37
Programao avanada 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.

Festo Didactic E320S

38
Programao avanada com CLP Siemens S7 300

Linguagens de Programao para STEP7 300

O Step7 300 permite a criao de programas em quatro linguagens: LADDER,


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

O set de instrues bsicas do Step7 300 dividido nos seguintes grupos:

Bit logic - instrues Booleanas, cujo o tratamento das informaes bit a bit

Comparator instrues de comparao para variveis no formato INT (16 bits),


DWORD (32 bits) e REAL (32 bits)

Converter Instrues de converso de formato de dados

Counter Instrues de contagem de pulsos

DB call Instrues de chamada de Data Blocks

Jumps instrues de salto de programa

Integer function instruoes matemticas com nmeros inteiros de 16 bits

Floating point function instrues matemticas com nmeros reais de 32 bits

Move instruo de transferncia de dados

Program control instrues de controle de programa

Shift/Rotate instrues para rotacionar dados

Status bit bits com funes especiais do registro status

Timers instrues de temporizao

Word logic instrues para operaes booleanas entre dados do tipo Word e
DWord.

3.1
3.1.1

Instrues Booleanas
Ladder

Linguagem de programao baseada em lgica de comando eltrico.

Festo Didactic E320S

39
Programao avanada com CLP Siemens S7 300

Instruo NA o contato normal aberto ser fechado quando o valor do bit


<address> for igual a 1 (RLO=1).

Instruo NF o contato normal fechado ser aberto quando o valor do bit


<address> for igual a 1 (RLO=1).

3.1.2

Statement List (STL)

Linguagem de programao baseada em texto estruturado.


A

<Bit, Word, DWord> - Operao lgica AND

AN

<Bit, Word, DWord> - Operao lgica AND NOT

<Bit, Word, DWord> - Operao lgica OR

ON

<Bit, Word, DWord> - Operao lgica OR NOT

<Output Bit> - Sada booleana

<Bit, Word, DWord> - Carrega valor em ACC1

<Bit, Word, DWord> - Transfere de ACC1 para uma memria

JU

<Label> - Salto incondicional para outra linha de programa definida por um

JC

<Label> - Salto condicional se o resultado de uma operao lgica resultar

JCN

<Label> - Salto condicional se o resultado de uma operao lgica resultar

3.1.3

Function Blocks Diagram (FBD)

Label.

em 1.

em 0.

Linguagem de programao baseada em lgica digital booleana. Sua estrutura


baseada em blocos lgicos, como mostrado a seguir:

Festo Didactic E320S

40
Programao avanada com CLP Siemens S7 300

3.1.4

Exemplos de aplicao das linguagens Ladder, STL e FBD

Para inserir uma instruo em linguagem Ladder ou FBD, basta clicar sobre a
instruo no catlogo esquerda e arrastar at o ambiente de programao, como
mostrado na Figura 3.1.

Figura 3.1 Instrues booleanas.


Festo Didactic E320S

41
Programao avanada com CLP Siemens S7 300

Neste exemplo, o RLO da sada Q0.0 ser igual a 1 quando o RLO da entrada
I0.0 tambm for igual a 1.

3.1.5

Memria eltrica

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


linguagem Ladder, conforme Figura 3.2.

Figura 3.2 Memrias eltricas.

Festo Didactic E320S

42
Programao avanada com CLP Siemens S7 300

Neste exemplo, o RLO da sada Q0.0 ser igual a 1 quando o RLO das duas
entradas I0.0 e I0.1 forem iguais a 1, simultaneamente. A sada permanece ligada
mesmo quando os contatos endereados 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 sada Q0.0,
que permanece desacionada.

3.1.6

Sadas Retentivas

Outra soluo possvel para o circuito mostrado no exemplo anterior mostrado


neste exemplo, usando as sadas retentivas, S (set) e R (reset).

A Figura 3.3 mostra a aplicao das sadas retentivas em um circuito.

Quando o RLO de I0.0 igual a 1 a sada Q0.0 setada e permanece ligada


(RLO=1).
Quando o RLO de I0.1 igual a 1 a sada Q0.0 resetada e permanece
desligada (RLO=0).

Festo Didactic E320S

43
Programao avanada com CLP Siemens S7 300

Figura 3.3 Sadas retentivas.

3.1.7

Contatos Impulsionais

Tambm denominados como flancos, estes contatos so instrues capazes de


detectar a borda de subida ou a borda de descida de um sinal, na mudana do RLO de
um operando booleano, como uma instruo NA ou NF, transferindo para a sada um
pulso com perodo de durao muito curto, igual a um scan (perodo de uma varredura)
do CLP.

Festo Didactic E320S

44
Programao avanada com CLP Siemens S7 300

necessrio um memory bit (MByte.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 perodo de um scan.

Festo Didactic E320S

45
Programao avanada 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 perodo de um scan.

Festo Didactic E320S

46
Programao avanada com CLP Siemens S7 300

3.2

Instrues de Temporizao

As instrues de temporizao tm a funo gerar um retardo na ativao ou


desativao de um determinado dispositivo.
Elas so divididas em cinco tipos para os controladores da famlia S7 300 da
Siemens, so eles:

S_ODT: Siemens On Delay Timer Temporizador com retardo na ativao.


S_OFFDT: Siemens OFF Delay Timer Temporizador com retardo na
desativao.
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 ativao.

Os temporizadores tm uma rea de memria reservada na CPU de 16 bits, ou


seja, uma WORD para cada endereo de temporizador. A quantidade de endereos
disponveis para temporizadores depende da CPU utilizada, para a maioria delas so 256
endereos disponveis, de T0 a T255.

A Figura 3.4 mostra a configurao de um bloco temporizao em linguagem


Ladder.

Figura 3.4 Parmetros de um temporizador em linguagem ladder.

Festo Didactic E320S

47
Programao avanada com CLP Siemens S7 300

Na parte superior do bloco atribudo o seu endereo (Timer Address),


esquerda do bloco esto suas entradas e direita esto suas sadas.

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


quando o RLO de S sofre uma mudana de 0 para 1 o temporizador iniciado.
A entrada TV (timer Value) armazena o valor de tempo a ser contado. O
parmetro de tempo para o S7 300 tem a seguinte sintaxe,

S5T#aH_bM_cS_dMS

onde:
a, b, c, d so constantes definidas pelo usurio;
H = horas, M = minutos, S = segundos, MS = milisegundos.

O valor de tempo mximo que pode ser atribudo ao temporizador 9990


segundos, ou 2H_46M_30S.

A base de tempo selecionada automaticamente em funo do valor de tempo


atribudo. A diviso dos bits da memria dos temporizadores mostrada na Figura 3.5.

Figura 3.5 Registro de armazenamento dos valores de tempo.

Festo Didactic E320S

48
Programao avanada com CLP Siemens S7 300

O parmetro de tempo em TV pode tambm ser atribudo conforme a sintaxe


abaixo:
W#16#<tbcd>

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

Festo Didactic E320S

49
Programao avanada com CLP Siemens S7 300

3.2.1

Temporizador com retardo na ativao S_ODT

A sada 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 tempo
programado e ligue a sada. Ao desacionar sua entrada (RLO=0) a sada ser resetada
tambm (RLO=0).

Um exemplo de aplicao deste temporizador mostrado na Figura 3.6.

Festo Didactic E320S

50
Programao avanada 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 ativao S_ODTS

Festo Didactic E320S

51
Programao avanada com CLP Siemens S7 300

A sada Q do temporizador ser acionada (RLO=1) depois de decorrido o tempo


parametrizado em TV a partir do instante em que o RLO da entrada S do bloco for 1. A
sada 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 desativao S_OFFDT

Festo Didactic E320S

52
Programao avanada com CLP Siemens S7 300

Quando o RLO da entrada S for 1 a sada Q do temporizador ser acionada


(RLO=1). Enquanto o RLO da entrada S permanecer em 1 o temporizador no inicia a
contagem. A sada 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 sada 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
ento a sada Q ser desligada. A sada tambm ser resetada caso quando o RLO da
entrada for 0.

Festo Didactic E320S

53
Programao avanada 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 sada (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 sada ser desligada depois de decorrido o tempo programado em TV.

3.3

Instrues de Contagem de Pulsos

Os blocos contadores so utilizados para registrar pulsos eltricos.

So trs 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

Festo Didactic E320S

54
Programao avanada com CLP Siemens S7 300

Os contadores tm uma rea de memria reservada na CPU de 16 bits, assim


como os temporizadores, ou seja, uma WORD para cada endereo de contador. A
quantidade de endereos disponveis para contadores depende da CPU utilizada, para a
maioria delas so 256 endereos disponveis, de C0 a C255.

3.3.1

Contador Crescente e Decrescente S_CUD

O valor de contagem em PV tem a seguinte sintaxe: C# <N Inteiro>.

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 unidade
no valor de contagem e ao receber um pulso na entrada CU o contador incrementa uma
Festo Didactic E320S

55
Programao avanada com CLP Siemens S7 300

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


zero.
O RLO da sada Q ser igual a 1 sempre que o valor de contagem for maior que
zero. A sada do contador s ser resetada quando o valor da contagem for igual a zero.
O valor de contagem ser atualizado em memrias atravs das sadas 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 sada 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 sada Q ser igual a 1 sempre que o valor de contagem for maior que
zero. A sada do contador s ser resetada quando o valor da contagem for igual a zero.

O valor de contagem ser atualizado em memrias atravs das sadas CV e


CV_BCD.

Festo Didactic E320S

56
Programao avanada 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 sada 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 do


contador 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 sada Q ser igual a
1 sempre que o valor de contagem for maior que zero. A sada do contador s ser
resetada quando o valor da contagem for igual a zero.
O valor de contagem ser atualizado em memrias atravs das sadas 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 sada ter seu RLO = 0.

Um exemplo de programa utilizando contadores mostrado na Figura 3.7.

Festo Didactic E320S

57
Programao avanada com CLP Siemens S7 300

Figura 3.7 Exemplo de programa com contador decrescente.

3.3.4

Counters em STL

Em STL os contadores so representados por CU (counter up) e CD (Counter


Down). Outras instrues como L, R e S so 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.

Festo Didactic E320S

58
Programao avanada com CLP Siemens S7 300

Exemplo:
L C#14
A I 0.1
S C1

//Carrega o valor C#14 em ACCU1;


//Checa o RLO de I0.1, se RLO = 1, ento;
//Carrega o contador C1 com o valor de ACCU1;

A I 0.0
CD C1

//Checa o RLO de I0.0, se RLO = 1, ento


//Decrementa o contador C1

AN C1
= Q 0.0

//Quando C1=0, ento;


//O RLO de Q0.0 ser igual a 1

3.4

Instrues de Comparao

Essas instrues realizam uma comparao matemtica entre o contedo de


registros e valores constantes quando o RLO de sua entrada 1. Se o resultado da
comparao matemtica retornar verdadeiro, uma sada ser acionada (RLO=1).

No catlogo de instrues os comparadores aparecem divididos em tres grupos,


que so os comparadores para valores inteiros de dezesseis bits (INT), para valores
inteiros de 32 bits (DINT) e para valores reais (REAL) tambm de 32 bits, conforme
mostra a Figura 3.8.

Figura 3.8 Instrues de comparao.

Festo Didactic E320S

59
Programao avanada com CLP Siemens S7 300

Exemplos de aplicao:

Quando o RLO da entrada for 1 a comparao ser realizada. O bloco compara


se o contedo de MW0 maior ou igual ao contedo de MW2, se o resultado da
comparao matemtica retornar verdadeiro a sada Q4.0 ser setada.

Quando o RLO da entrada for 1 a comparao ser realizada. O bloco compara


se o contedo de MD0 maior ou igual ao contedo de MD4, se o resultado da
comparao matemtica retornar verdadeiro a sada Q4.0 ser setada.

Festo Didactic E320S

60
Programao avanada com CLP Siemens S7 300

Quando o RLO da entrada for 1 a comparao ser realizada. O bloco compara


se o contedo de MD0 maior ou igual ao contedo de MD4, se o resultado da
comparao matemtica retornar verdadeiro e o RLO da entrada for igual a 1 a sada
Q4.0 ser setada.

3.4.1

Instrues de comparao em STL

Em STL as comparaes tambm so feitas entre variveis do tipo INT, DINT e


REAL. Os valores a serem comparados so carregados temporariamente dentro dos
acumuladores ACCU1 e ACCU2 por meio das instruo L (Load).
As comparaes matemticas possveis so:

== igual
<> ACCU1 diferente de ACCU2
> ACCU1 maior que ACCU2
< ACCU1 menor que ACCU2
>= ACCU1 maior ou igual a ACCU2
<= ACCU1 menor ou igual a ACCU2

Em STL pode-se carregar valores do tipo HEX para comparao com nmeros
inteiros tipo INT.

Exemplo de comparao do tipo INT:


L MW10
L W#16#FF
>I
= M 2.0

Festo Didactic E320S

//Carrega
//Carrega
//Compara
//RLO = 1

o contedo de MW10 (16-bit)


o valor FF Hexa (16-bit)
se ACCU2 (MW10) maior (>) que ACCU1 (W#16#FF)
se MW10 > W#16#FF

61
Programao avanada com CLP Siemens S7 300

Exemplo de comparao do tipo DINT:


L MD10
L MD14
>D
= M 2.0

//Carrega
//Carrega
//Compara
//RLO = 1

o contedo de MD10 (32-bit)


o contedo de MD14 (32-bit)
se ACCU2 (MD10) maior (>) que ACCU1 (MD14)
se MD10 > MD14

Exemplo de comparao do tipo REAL:


L MD10
L 1.36E+02
>R
= M 2.0

3.5

//Carrega
//Carrega
//Compara
//RLO = 1

o contedo de MD10
a constante 1.36E+02
se ACCU2 (MD10) maior (>) que ACCU1 (1.36E+02)
se MD10 > 1.36E+02

Instruo de Transferncia de dados

Esta instruo utilizada para transferir valores constantes ou contedo de


registros para outros registros.

Exemplo de aplicao:

Festo Didactic E320S

62
Programao avanada com CLP Siemens S7 300

Quando o RLO da entrada I0.0 for igual a 1 o contedo de MW10 transferido


para DW12 e a sada Q4.0 igual a 1 para confirmar a execuo da operao.

3.6

Instruo de Transferncia de dados em STL

A tranferncia de dados em STL PE realizada por meio das instrues L (Load) e


T (Transfer). A instruo L carrega o valor em ACCU1 e a instruo T transfere o
contedo de ACCU1 para uma memria.

Exemplo:
L B#16#3F

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

T MB10

//Transfere o contedo de ACCU1 (B#16#3F) para MB10.

3.7

Instrues Matemticas com nmeros inteiros (INT) e reais (REAL)

As operaes matemticas no S7 300 so divididas em dois grupos:

Integer function Operaes matemticas com nmeros inteiros: correspondem


as operaes aritmticas bsicas para nmeros inteiros de 16 bits ou 32 bits.

Floating point function Operaes matemticas com valores reais: alm das
operaes bsicas so includas tambm as operaes logartimicas, trigonomtricas,
dentre outras.

3.7.1

Integer function

Festo Didactic E320S

63
Programao avanada com CLP Siemens S7 300

Os blocos matemticos para operaes com nmeros inteiros possuem trs


entradas e duas sadas. A entrada EN quando acionada (RLO=1) permite a execuo da
operao, realizando a respectiva operao entre as entradas IN1 e IN2. O resultado da
operao transferido para um registro declarado em OUT. Quando a operao
realizada a sada ENO acionada (RLO=1).

Operaes Bsicas:

Exemplo de aplicao:

Quando o RLO de I0.0 for 1 o contedo da memria MW0 somado ao


contedo de MW2. O resultado desta operao armazenado em MW10 e a sada Q4.0
ser setada.

Festo Didactic E320S

64
Programao avanada com CLP Siemens S7 300

Como essas operaes trabalham apenas com valores inteiros, existe uma funo
complementar funo de diviso denominada MOD_DI, capaz de recuperar o valor
restante de uma diviso entre dois nmeros inteiros de 32 bits e armazenar numa
memria.

Quando I0.0 acionado, o valor restante da diviso entre MD0 e MD4 (MD0/MD4)
ser armazenado em MD10.

3.7.2

Floating point function

Festo Didactic E320S

65
Programao avanada com CLP Siemens S7 300

As funes matemticas com ponto flutuante executam operaes com nmeros


reais de 32 bits.

Operaes Bsicas:

Exemplo:

Quando o RLO de I0.0 for 1 o contedo da memria MD0 somado ao contedo


de MD2. O resultado desta operao armazenado em MD10 e a sada Q4.0 ser
setada.

Festo Didactic E320S

66
Programao avanada com CLP Siemens S7 300

Operaes Trigonomtricas:

Demais Operaes:

Festo Didactic E320S

67
Programao avanada com CLP Siemens S7 300

3.7.3

Instrues matemticas em STL

As operaes matemticas podem ser realizadas entre nmeros inteiros e reais.


Para nmeros inteiros (INT) usa-se a sintaxe: +I, -I, *I, /I
Para nmeros 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

Instrues lgicas operaes booleanas

Estas instrues realizam a comparao de um par de words (16 bits) ou Double


Word (32 bits) bit a bit de acordo com a lgica booleana do bloco.

As instrues lgicas so divididas em dois grupos de acordo com o tamanho da


informao: W WORD (16 bits) e DW DWORD (32 bits).

At trs tipos de operaes lgicas podem ser realizadas: AND, OR e XOR.

Festo Didactic E320S

68
Programao avanada com CLP Siemens S7 300

Exemplo:

Quando o RLO de I0.0 for 1 o bloco efetua a operao lgica AND entre o
contedo de MW0 e o valor FFHEX. O resultado desta operao armazenado em MW2 e
a sada Q4.0 ser setada.

MW2 = (MW0) AND (FFHEX)

Festo Didactic E320S

69
Programao avanada com CLP Siemens S7 300

Esta operao, em particular, denominada mascara e bastante comum e


usual em programao quando se deseja filtrar uma informao a fim de coletar apenas
os bits que so relevantes para uma determinada operao. Neste exemplo foram
aproveitados apenas os oito primeiros bits da Word MW0.

3.8.1

Operaes booleanas em STL

O exemplo seguir demonstra como realizado a lgica AND entre dois


registros. O mesmo conceito pode ser aplicado s demais operaes lgicas.
L IW20
L IW22

//Carrega o contedo de IW20 em ACCU1.


//Carrega o contedo de ACCU1 em ACCU2 e IW22 em ACCU1.

AW

//ACCU2 AND ACCU1 = ACCU1

T MW 8

//Armazena o resultado de ACCU1 em MW8.

Festo Didactic E320S

70
Programao avanada com CLP Siemens S7 300

Estruturas de Programa

4.1

Organization Blocks OBs

Os Organizations Blocks (Blocos de Organizao) so a interface entre o sistema


operacional da CPU e o programa de usurio. OB's so utilizados para organizar o
programa de usurio.

Os OBs so executados de forma cclica seguindo uma ordem de prioridade.

No Step7 300 cada OB tem uma funo especfica, sendo o OB1 o Main Program
e portanto o primeiro na lista de prioridade de execuo. O OB1 executado ciclicamente
pela CPU. Atravs do OB1 podem-se chamar outros blocos de programa, como as
Functions FCs e os Functions Blocks FBs, como subrotinas dentro de OB1.

Alm de OB1 existem outras OBs com funes especficas na CPU 31x. Elas so
divididas de acordo com suas funes: OBs de inicializao (OB100, 101, 102), OBs de
interrupo de tempo e data (OB10 a OB17), OBs de interrupo cclicas programadas
(OB30 a OB38), OBs de interrupo de hardware (OB40 a OB47), OBs de diagnstico
de falhas (OB80 a OB87), dentre outras.

4.2

Data Blocks Blocos de Dados (DB)

Os data blocks (DBs) ou blocos de dados so blocos utilizados apenas para


armazenar dados, como memrias. Diferentemente dos blocos de programas, como os
que sero apresentados a seguir, os blocos de dados no possuem instrues e portanto
no executam rotinas de programa, eles apenas armazenam dados das variveis dos
blocos de programas, como OBs, FCs e FBs.

Os data blocks podem ser criados em dois formatos: Instance Data Blocks (DB
instance) ou Shared Data Blocks (DB Shared).

Festo Didactic E320S

71
Programao avanada com CLP Siemens S7 300

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


bloco de programa criado pelo usurio. Qualquer bloco de programa pode ler e escrever
dados nas variveis da DB shared. Esta DB tambm denominada como DB Global.

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


e parmetros das variveis locais do FB so armazenados no seu DB instance, que
passa a ser uma memria particular deste FB. A denominao instance representa um
bloco FB chamado, por exemplo, se um bloco FB10 for chamado 3 vezes haver 3
instncias 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 trs 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 atravs da barra de menus em Insert S7


Block Data Block, conforme Figura 4.2, ou clicando com o boto direito em
Blocks Insert New Object Data Block, conforme Figura 4.3.

Festo Didactic E320S

72
Programao avanada 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.

Festo Didactic E320S

73
Programao avanada com CLP Siemens S7 300

Figura 4.4 Escolhendo o formato de um Data Block.

As informaes que devem ser atribudas a DB, conforme a Figura 4.5, so:

Figura 4.5 Configurando variveis em um DB.

No exemplo mostrado na Figura 4.6 foram criadas 6 variveis de tipos


diferentes, consequentemente com tamanhos diferentes dentro da DB, cada uma alocada
num endereo prprio criado automaticamente no momento da criao da varivel.

Festo Didactic E320S

74
Programao avanada com CLP Siemens S7 300

Figura 4.6 - Configurando variveis em um DB.


Para acessar estas variveis e ler o seu contedo ou escrever um dado deve-se
utilizar a seguinte sintaxe:

Exemplo: ler os dados das variveis 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)

Nmero Inteiro (16 bits) :

DB1.DBW8

Acessa os dados de VAR_5 (10)

Nmero Real (32 bits):

DB1.DBD10

Acessa os dados de VAR_6 (5,6)

Exemplo de Programa para ler e escrever dados numa DB:

Festo Didactic E320S

75
Programao avanada com CLP Siemens S7 300

Figura 4.7 Acessando as informaes de um DB.

4.4

Programao Orientada Blocos de Programa

O Step7 300 permite a criao de blocos de programas orientados como


subrotinas de um programa principal. Eles esto abaixo dos organization blocks (OBs) na
hierarquia de programa e podem ser chamados como subrotinas de OB1 quantas vezes
for necessrio.

A utilizao de subrotinas torna o programa de usurio mais organizado evitando


a repetio de lgicas de controle dentro do programa principal, facilitando sua criao
bem como sua interpretao.

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


denominadas como Functions (FCs) e Functions Blocks (FBs). Ambas esto abaixo
das OBs na hierarquia de programa e devem ser acessadas por meio uma instruo de
chamada dentro de OB1, por exemplo.

Festo Didactic E320S

76
Programao avanada com CLP Siemens S7 300

As Functions ou FCs so blocos de programas que no possuem uma rea de


memria prpria designada para ela. Os dados de suas variveis so armazenados na
pilha (L stack) do controlador e so perdidos ao fim de sua execuo.

Os Functions Blocks ou FBs so blocos de programas que possuem uma rea de


memria

dedicada

do

tipo

Data

Block

ou

DB

designado

para

armazenar

permanentemente os dados de suas variveis durante e aps a sua execuo. Essas


memrias so do tipo Instance Data Block, pois so dedicadas ao bloco de programa a
que esto associadas.

4.5

Criando uma FC Function

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


FC como rotina padro para partida de motores. O bloco dever ser criado e chamado
quantas vezes forem necessrias dentro de OB1 possibilitando o acionamento de vrios
motores diferentes usando a mesma rotina.

Para isto o bloco dever ser criado com variveis locais, que permitem a
transferncia dos sinais dos endereos absolutos de OB1 para o bloco, assim como do
bloco para OB1.

As variveis locais das FCs podem ser do tipo IN, OUT, IN/OUT ou TEMP. Essas
variveis podem ainda ter o formato BOOL (booleanas, variveis discretas 0 ou 1),
informaes do tipo BYTE, WORD, DWORD (Double Word), INT (nmeros inteiros),
REAL (nmeros reais com ponto flutuante), S5TIME (variveis de tempo no formato
Siemens), dentre outras, conforme Figura 4.8.

Festo Didactic E320S

77
Programao avanada com CLP Siemens S7 300

Figura 4.8 Criando as variveis locais de um bloco de programa FC.

As variveis do tipo IN permitem a entrada de sinais que sero processadas


dentro do bloco. OUT so variveis de sada utilizadas para retornar o valor processado
pelo bloco. Variveis do tipo IN/OUT so usadas para passar informaes para o bloco,
process-las e armazenar o resultado na mesma varivel.

As variveis do tipo TEMP so variveis temporrias armazenadas na pilha (L


stack) da CPU apenas durante a execuo do bloco.
RETURN permite o retorno de um valor (RET_VAL) ao trmino da execuo do
bloco.

No exemplo sugerido o bloco de programa ser criado usando uma FC. Foram
criadas para este bloco trs variveis do tipo IN, sendo S1 para ligar o motor, S0 para
desligar o motor e RT como contato do rel trmico de segurana em caso de
superaquecimento do motor. Como varivel do tipo OUT foi criada apenas uma sada K
para o acionamento do contator de potencia, conforme mostra a Figura 4.9.

Festo Didactic E320S

78
Programao avanada com CLP Siemens S7 300

A entrada EN utilizada para habilitar o bloco e a sada ENO setada quando o


bloco chega ao trmino de sua execuo, podendo ser utilizada para habilitar outra
instruo ou outro bloco de programa na sequncia.

Figura 4.9 Bloco de programa para partida direta de motores.

Pode-se inserir uma FC atravs da barra de menus em Insert S7


Block Function, como mostra a Figura 4.10 ou clicando com o boto 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.

Festo Didactic E320S

79
Programao avanada 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 programao desejada para implementar a rotina de programa, neste
exemplo ser usada a linguagem Ladder de programao, conforme Figura 4.12.

Ao criar o bloco pode-se inserir um nome simblico (Symbolic Name) e


comentrios para este, porm no possvel alterar a identificao do bloco de FC1 para
outro nome simblico.

Na aba General Part 2 podem-se inserir informaes do criador do bloco e


verso do mesmo. O espao mnimo ocupado pelo bloco na memria do controlador
mostrado conforme Figura 4.13.

Festo Didactic E320S

80
Programao avanada com CLP Siemens S7 300

Figura 4.12 Selecionando a linguagem do bloco de programa.

Figura 4.13 Propriedades do bloco de programa.

Festo Didactic E320S

81
Programao avanada 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 varivel multiple instance dentro de um function block
FB10. Este mtodo de estruturao de programa ser mais bem detalhado
posteriormente neste texto.

Figura 4.14 Descrio da estrutura dos blocos de programa criados num projeto.

Por fim, na aba attributes, Figura 4.15, podem ser inseridos atributos especficos
de controle dos blocos de programa, como por exemplo a ferramenta S7-pdiag, para que
o bloco seja capaz de processar diagnstico de erros.

Festo Didactic E320S

82
Programao avanada com CLP Siemens S7 300

Figura 4.15 Configurao dos atributos de um bloco de programa.

Ao abrir o bloco devem-se declarar as variveis 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 funo de partida direta de motores, com um boto para ligar o motor
(S1), um para desligar (S0) e o contato de um rele trmico de segurana e uma sada
para o acionamento do contator (RT), todas estas variveis devero ser declaradas como
booleanas (BOOL). As variveis locais criadas dentro de uma FC ficam limitadas a 127
endereos no total.

Festo Didactic E320S

83
Programao avanada com CLP Siemens S7 300

Figura 4.16 variveis locais de entrada do bloco.

Figura 4.17 variveis locais de sada do bloco.

Figura 4.18 inserindo as instrues.

Festo Didactic E320S

84
Programao avanada com CLP Siemens S7 300

Figura 4.19 inserindo as variveis locais.

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


variveis declaradas. A sintaxe # indica uma varivel do bloco, e indica que esta
varivel no se trata de um endereo absoluto.

Figura 4.20 Programa para partida direta de motores.

Festo Didactic E320S

85
Programao avanada com CLP Siemens S7 300

Aps 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
padro. Para isto, basta abrir o contedo 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 sero fornecidos atravs de endereos


absolutos em OB1. Os endereos absolutos podem ser relacionados a nomes
simblicos por meio do Symbol Table. Para acessar o Symbol Table basta clicar sobre

Festo Didactic E320S

86
Programao avanada com CLP Siemens S7 300

a pasta S7 Program na rvore de projeto, conforme Figura 4.23 ou na barra de menus


em Options Symbol Table dentro de qualquer bloco de programa do projeto, conforme
Figura 4.24.

As variveis declaradas so endereos absolutos do CLP, ou seja, so endereos


de entradas e sadas fsicas do equipamento, conforme mostra a Figura 4.25.

Figura 4.23 Criando tabela de variveis.

Figura 4.24 - Criando tabela de variveis.

Festo Didactic E320S

87
Programao avanada com CLP Siemens S7 300

Figura 4.25 Symbol Table: lista de alocao de variveis.

Uma vez declaradas as variveis no Symbol Table, deve-se relacionar


cada uma a sua respectiva entrada ou sada no bloco, conforme Figura 4.26.

Figura 4.26 Relacionando as variveis locais com as variveis absolutas.

Festo Didactic E320S

88
Programao avanada 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
necessrias dentro de OB1, conforme o programa da Figura 4.28.

Festo Didactic E320S

89
Programao avanada com CLP Siemens S7 300

Figura 4.28 Programa final usando a rotina criada em FC1.

Festo Didactic E320S

90
Programao avanada com CLP Siemens S7 300

4.6

4.6.1

Criando um FB Function Block

Instance FB

Assim como os Functions (FC), os FBs so blocos de programa criados como


subrotinas de OB1 ou de outros blocos. Cada Instance Function
ons Block criado e
chamado dentro de OB1, por exemplo, necessita de um Data Block (DB) para o
armazenamento temporrio ou permanente dos dados processados pelo bloco.
bloco Em
resumo, nessa estrutura cada FB tem uma rea de memria do tipo Data Block reservada
e dedicada a ele, conforme mostram a Figura 4.29 e Figura 4.30.

Figura 4.29 Estrutura Instance FB no S7 300.

Figura 4.30 Estrutura Instance FB.

Festo Didactic E320S

91
Programao avanada com CLP Siemens S7 300

Como exemplo de aplicao ser criado um bloco de programa com a funo de


contagem de pulsos externos para ligar uma sada qualquer do CLP, um contador do tipo
crescente, que ser denominado Counter Up, conforme mostra a Figura 4.31.

Como padro, estes blocos devem ter uma entrada para receber os pulsos
externos, denominada C_UP e declarada como varivel BOOL, uma entrada SET
(BOOL) para carregar o valor de contagem registrado em PRESET (INT) na memria
interna do contador, uma entrada RESET (BOOL) para resetar a sada Q (BOOL) do
contador e zerar sua memria interna de registros de pulsos e uma sada para
monitoramento do valor da contagem atual VALOR (INT), alm da entrada EN para
habilitar o bloco e uma sada ENO, padres do bloco.

Figura 4.31 Bloco de programa do contador crescente criado como Function


Block.

Os procedimentos para inserir um FB so os mesmos para inserir uma FC,


conforme mostrado na Figura 4.32 e Figura 4.33

Festo Didactic E320S

92
Programao avanada 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 opo indicada na Figura 4.34.

Festo Didactic E320S

93
Programao avanada com CLP Siemens S7 300

Figura 4.34 Configurando uma FB.


As variveis locais de entrada e sada do bloco so declaradas conforme mostra
Figura 4.35 e Figura 4.36. Uma diferena que pode ser observada em relao ao bloco
do tipo FC que as variveis declaradas so automaticamente alocadas num endereo
do Data Block (DB) da FB.

Figura 4.35 Declarando variveis locais de um bloco FB.

Festo Didactic E320S

94
Programao avanada com CLP Siemens S7 300

Figura 4.36 - Declarando variveis locais de um bloco FB.

Alm das variveis de entrada IN e sada OUT, as FBs possuem tambm


variveis do tipo estticas, STATIC VARIABLES, que so variveis locais restritas
apenas para processamento de dados internos ao bloco e que possuem espao
reservado dentro do seu Data Block (DB).

Para esta aplicao existem trs variveis estticas, uma denominada MEMORIA
(INT), onde registrada a contagem de pulsos, essa memria incrementada conforme
o contador recebe os sinais em sua entrada C_UP. H tambm uma varivel denominada
REF (INT) que recebe o valor de referencia limite da contagem por meio da varivel de
entrada PRESET (INT). Por ltimo h uma varivel denominada FLAG (BOOL) para
registro da borda de subida do sinal no flanco positivo (P) utilizado neste programa. A
declarao destas variveis mostrada na Figura 4.37.

Estas variveis internas do bloco poderiam tambm ser declaradas como


variveis do tipo TEMP (Temporary Data), porm elas no teriam uma rea reservada
dentro da DB deste bloco e seus dados seriam ento armazenados temporariamente na
pilha (L stack) apenas durante a execuo do Function Block.

Festo Didactic E320S

95
Programao avanada com CLP Siemens S7 300

Figura 4.37 Variveis locais declaradas como STAT.

A seguir, ser mostrado o programa detalhado com a rotina de contagem de


pulsos implementada para este bloco.

Festo Didactic E320S

96
Programao avanada com CLP Siemens S7 300

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


transferido para a varivel interna #ref do bloco.

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


acionada a entrada #c_up a varivel #memoria comparada com o valor de referencia
(limite da contagem). Enquanto #memoria for menor que #ref o resultado da comparao
retorna verdadeiro e a sada da instruo de comparao retorna verdadeiro, gerando um
pulso na entrada da instruo de soma ADD, que soma 1 ao contedo do registro
#memoria e armazena no mesmo registro #memoria (varivel tipo STAT). Toda vez que
que #c_up acionado o registro memria incrementado em uma unidade. O flanco
positivo antes da instruo ADD permite a passagem de apenas um pulso na borda de

Festo Didactic E320S

97
Programao avanada com CLP Siemens S7 300

subida do sinal, no permitindo que o registro memria seja incrementado em mais de


uma unidade.

A varivel #memria incrementada e logo na sequncia transferida para a


varivel #valor do tipo OUT, que poder ser lida pelo usurio.

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


portanto o resultado da comparao retorna falso na network 2, e o registro #memoria
deixa de ser incrementado. Na network 3 o resultado da comparao retorna verdadeiro
para igual (#memoria = #ref) e desta forma a sada #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 necessrio associar a ele uma memria do


tipo DB (Data Block) que ir armazenar os dados de suas variveis. 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.

Festo Didactic E320S

98
Programao avanada com CLP Siemens S7 300

Para associar esta DB a um Instance FB selecione esta opo 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 FB1.

O procedimento para criar uma DB instance de um FB pode tambm ser realizado


dentro de OB1 aps o bloco ter sido chamado, para isto basta escrever o nome da DB no
cabealho do bloco, e se esta ainda no foi criada o programa o far, conforme Figura
4.40.
Uma janela aparecer afirmando que esta DB ainda no existe e perguntando se
o usurio deseja cri-la.

Festo Didactic E320S

99
Programao avanada com CLP Siemens S7 300

Figura 4.40 Criando o DB dentro de OB1.

Abra a pasta FB Blocks no catlogo de instrues, selecione o bloco e arraste-o


at a network criada, conforme Figura 4.41.

Figura 4.41 Chamando o FB1 dentro de OB1.


No Symbol Table atribua os nomes simblicos das variveis aos endereos
absolutos que iro fazer interface com o bloco, conforme Figura 4.42, salve e feche a
aplicativo.

Festo Didactic E320S

100
Programao avanada com CLP Siemens S7 300

Figura 4.42 Tabela de variveis criada para o bloco FB.

Associe a DB instance criada ao bloco e relacione as variveis locais do


bloco aos endereos absolutos, conforme Figura 4.43.

A Figura 4.44 mostra o programa finalizado com o FB1 implementado


como rotina de programa de OB1. Este bloco poder ser chamado quantas vezes o
usurio desejar dentro de OB1 ou dentro de outros blocos de programas.

Figura 4.43 Parametrizando o bloco FB criado.

Festo Didactic E320S

101
Programao avanada com CLP Siemens S7 300

Figura 4.44 Programa final.

Conforme a rotina de programa implementada, este bloco de programa dever


contar uma quantidade de 10 pulsos aplicados na entrada C_UP, isso dever ocorrer
aps o acionamento da entrada SET, que carrega a memria interna do bloco com o
valor de PRESET. Aps serem registrados 10 pulsos na entrada C_UP do contador sua
sada Q setada e permanece nesse estado indefinidamente, at que a entrada RESET
seja acionada desligando a sada e possibilitando uma nova contagem. Durante a
contagem o valor da contagem ser atualizado na sada VALOR do contador e poder
ser lido em MW12.

Festo Didactic E320S

102
Programao avanada com CLP Siemens S7 300

4.6.2

Multi-Instance
Instance FB

A estrutura de Multiplas instancias (Multi-Instance) permite


ermite que vrios blocos
bloco de
programa FB compartilhem o mesmo Data Block dentro de outro FB criado,
criado otimizando a
estrutura de programa criado apenas como instance, mostrada anteriormente.
Apesar de compartilharem
artilharem o mesmo DB, os blocos de programa possuem
diferentes reas de memria dentro desta DB. Como cada varivel de cada bloco possui
uma alocao diferente dentro do mesmo data block, portanto no h o risco de conflito
de informaes.

A estrutura multi-instance
instance (Figura 4.45) consiste em chamar um bloco de
programa FB (FB1 por exemplo) dentro de outro FB (FB10 por exemplo) como varivel
esttica deste. Desta forma,
forma cada FB1 passa a ser uma varivel interna de FB10
FB1 e ocupa
uma rea especfica dentro do data block que ser criado apenas para FB10 e
compartilhado com cada bloco FB1 chamado.
chamado

Festo Didactic E320S

103
Programao avanada com CLP Siemens S7 300

Figura 4.45 Estrutura Multi-Instance FB.

Para criar uma FB multi-instance insira


a uma nova FB, conforme Figura 4.46, e
marque a opo Mul.
Mul. Inst. Cap.
Cap. ao lado da identificao
o do bloco, conforme Figura
4.47.

A primeira FB criada ser chamada de FB10 e dentro dela sero chamados os


blocos FB1 como variveis estticas. Ambas as FBs criadas devem ser multi-instance.
multi

Festo Didactic E320S

104
Programao avanada com CLP Siemens S7 300

Figura 4.46 Inserindo uma FB.

Figura 4.47 Criando um FB Multi-instance.

Festo Didactic E320S

105
Programao avanada com CLP Siemens S7 300

A rotina de programa que ser implementada dentro de FB1 ser a mesma usada
no exemplo dado para a criao da FC, um programa criado para comando de partida
direta de motores. A Figura 4.48 mostra o programa implementado.

Figura 4.48 Bloco de programa para partida direta de motores criado em FB1.

Dentro de FB10, em interface, crie uma varivel tipo STAT com o nome de
motor_1 e no Data Type digite FB1, desta forma, o bloco de programa FB1 ser uma
varivel esttica dentro de FB10 e ocupar uma rea dentro da DB que ser criada para
este bloco, conforme Figura 4.49.

Festo Didactic E320S

106
Programao avanada com CLP Siemens S7 300

Figura 4.49 FB1 como varivel esttica de FB10.

No catlogo de instrues, os dois blocos FB1 mult-instance criados aparecem


dentro da pasta Multiple instances. Para chamar estas rotinas de programa basta clicar e
arrast-las para as networks criadas em FB10, conforme Figura 4.50.

Figura 4.50 FB1 como varivel Multi Instance de FB10.

Festo Didactic E320S

107
Programao avanada com CLP Siemens S7 300

Pode-se criar a tabela de variveis (Symbol Table) para alocar os endereos


absolutos do CLP s variveis locais do bloco criado, como mostra a Figura 4.51

Figura 4.51 Criando uma tabela de variveis para o bloco de programa multiinstace.

O programa final dentro de FB10 mostrado na Figura 4.52.

Festo Didactic E320S

108
Programao avanada com CLP Siemens S7 300

Figura 4.52 Bloco de programa FB10 criado com a estrutura multi-instance.

Depois de criado, o bloco de programa FB10 pode ento ser chamado dentro de
OB1 e um Data Block dever ser criado para ele, conforme Figura 4.53.

Figura 4.53 Chamando o bloco de programa FB10 Multi-instance em OB1.

Festo Didactic E320S

109
Programao avanada com CLP Siemens S7 300

4.6.3

Criando uma FB em Statement List STL

Alm da linguagem Ladder os Function Blocks podem ser criados tambm em


liguagem STL (Statement List), FBD (Function Block Diagram), e GRAPH (Graficet).

Os procedimentos a seguir mostram como implementar um bloco de programa FB


em linguagem STL.

No momento da criao do bloco escolha a opo STL para implementao do


bloco, conforme Figura 4.54.

Figura 4.54 Criando um bloco de programa FB em linguagem STL.

Para o comando de partida de motores deve-se criar as mesmas variveis locais


conforme mostrado no 4.5, como mostra a Figura 4.55. O program em linguagem STL
mostrado na Figura 4.56.
Festo Didactic E320S

110
Programao avanada com CLP Siemens S7 300

Figura 4.55 Criando as variveis locais do bloco.

Figura 4.56 Rotina do bloco criada na linguagem STL.

Festo Didactic E320S

111
Programao avanada com CLP Siemens S7 300

Figura 4.57 Relao entre as linguagens Ladder e STL.

Uma vez criado o bloco de programa ele dever ser chamado como subrotina de
OB1, que tambm ser implementado em linguagem STL, conforme mostrado na Figura
4.58.

Figura 4.58 Criando OB1 tambm em linguagem LADDER.

Festo Didactic E320S

112
Programao avanada com CLP Siemens S7 300

Para chamar uma FB ou FC em linguagem STL deve-se utilizar a instruo CALL


e inserir o nome do bloco seguido de , (vrgula) e do seu respectivo Data Block,
pressionando Enter em seguida, conforme mostra a Figura 4.59. Uma janela solicitando
a criao da DB dever aparecer (caso o usurio no tenha criado uma DB instance
previamente para o bloco).

Figura 4.59

As variveis locais criadas para este FB devero aparecer como segue e o


usurio dever relaciona-la a endereos absolutos, conforme Figura 4.60

Figura 4.60 Relacionando as variveis locais e as variveis absolutas.

Festo Didactic E320S

113
Programao avanada com CLP Siemens S7 300

O programa finalizado mostrado na Figura 4.61. A rotina implementada em FB1


foi chamada por duas vezes em OB1, cada bloco chamado com o seu respectivo
Instance Data Block, para o acionamento de dois motores distintos.

Figura 4.61 Rotina de partida de motores implementada em linguagem STL.

Festo Didactic E320S

114
Programao avanada com CLP Siemens S7 300

Introduo linguagem de programao GRAPH para S7 300

A linguagem de programao GRAPH ou Grafcet est disponvel em toda linha de


controladores S7 300 e 400.

O grafcet da Siemens desenvolvido dentro de um bloco de programa FB, que


ser executado em OB1 como subprograma.

O grafcet foi desenvolvido para o controle de comandos sequenciais. A linguagem


baseada na execuo sequencial de blocos com tarefas predefinidas, ao contrrio da
execuo cclica da linguagem Ladder ou STL, permitindo que os blocos sejam
executados um por vez, etapa por etapa do processo, tornando a estrutura de programa
mais simples e eficiente.

A estrutura de programa em grafcet constituda de trs elementos bsicos:

Etapa

Ao

Transio

Figura 5.1 Estrutura bsica da linguagem GRAPH.

Dentro de cada etapa sero executadas as aes, que representam o


acionamento ou desacionamento de dispositivos, temporizao, etc. O programa s
muda de uma etapa para outra quando houver uma condio de transio, que pode ser

Festo Didactic E320S

115
Programao avanada com CLP Siemens S7 300

representada por uma operao lgica booleana, o resultado de uma comparao


matemtica ou uma condio de tempo.

O exemplo da figura [] mostra uma aplicao simples da linguagem grafcet para


ligar e desligar uma sada Q0.0 atravs de duas entradas. O endereo de entrada I0.0
liga Q0.0, enquanto I0.1 desliga Q0.0.

Figura 5.2

No exemplo mostrado o programa comea executando a etapa inicial e


permanece nesta etapa at que a condio de transio T1 seja verdadeira, ou seja,
quando o RLO de I0.0 for 1. Se a condio de transio T1 for verdadeira, o programa
deixa a etapa inicial e executa a etapa 1 E1, setando a sada Q0.0. O programa
novamente permanece nesta etapa at que a condio de transio T2 seja verdadeira.
Quando o RLO de I0.1 for 1 o programa sai da etapa E1 e executa a etapa E2,
resetando a sada Q0.0.

Festo Didactic E320S

116
Programao avanada com CLP Siemens S7 300

5.1

Criando um bloco de programa em linguagem grafcet - GRAPH

Para criar um programa em grafcet primeiros deve-se criar um novo FB e escolher


a na opo de linguagens GRAPH, conforme Figura 5.3.

Figura 5.3 Criando um programa em graph.

O ambiente para a criao do programa em GRAPH mostrado na Figura 5.4.

Festo Didactic E320S

117
Programao avanada com CLP Siemens S7 300

Figura 5.4 Ambiente de programao em GRAPH.

No S7 300 as etapas so denominadas como Step. O step1 (S1) normalmente


o inicial. Para definir que o step1 ser a etapa inicial basta clicar sobre o ele com o boto
direito e escolher a opo object properties, conforme Figura 5.5.

Festo Didactic E320S

118
Programao avanada com CLP Siemens S7 300

Figura 5.5 Configurando uma etapa inicial.

Podemos atribuir um nome e comentrios para este step, assim como defini-lo
como sendo a etapa inicial, conforme Figura 5.6.

Figura 5.6 Definindo uma etapa inicial.

Festo Didactic E320S

119
Programao avanada com CLP Siemens S7 300

Figura 5.7 Definindo uma etapa inicial.

Na barra de ferramentas esquerda temos todos os elementos necessrios para


compor a estrutura do Grafcet. A Figura 5.8 mostra as principais ferramentas utilizadas.

Festo Didactic E320S

120
Programao avanada com CLP Siemens S7 300

Figura 5.8 Ferramentas do ambiente GRAPH.

A seleo das instrues tambm pode ser feita atravs da barra de menu usando
o comando Insert.

Festo Didactic E320S

121
Programao avanada com CLP Siemens S7 300

Exemplo de estruturas de programas em linguagem GRAPH:

Figura 5.9 GRAPH com sequncia direta linear com salto.

Figura 5.10 GRAPH com ramo alternativo e ramo simultneo

Festo Didactic E320S

122
Programao avanada com CLP Siemens S7 300

Figura 5.11 GRAPH com duas sequncias

Festo Didactic E320S

123
Programao avanada com CLP Siemens S7 300

5.2

Instrues bsicas para S7 GRAPH

N <address: I, Q, M, D> Non Holding - Enquanto o passo estiver ativo o


endereo setado em 1
S < address: I, Q, M, D> Set output - Set: assim que o passo ativado o
endereo colocado em 1 e permanece em 1.
R < address: I, Q, M, D> Reset output - Reset: assim que o passo ativado o
endereo colocado em 0 e permanece em 0.
D < address: I, Q, M, D> On Delay n segundos aps o passo ser ativado, o
endereo recebe sinal 1.
L < address I, Q, M, D> Limited Pulse - Se o passo est ativo, o endereo
recebe 1 por n segundos.
CALL <FC, FB, SFC, SFB> Chamada de bloco de programa.

5.3

Exemplo de aplicao

Desenvolver um programa em S7 GRAPH para o comando sequencial do


dispositivo pneumtico de furao de peas mostrado na figura [] conforme as condies
de processo descritas abaixo.

Figura 5.12 Dispositivo de furao de peas.

Festo Didactic E320S

124
Programao avanada com CLP Siemens S7 300

Condies de processo

1 Etapa: Etapa inicial E1 (sem ao).


2 Etapa: Ao acionar o boto START, o cilindro 1A dever avanar e prender a
pea, desde que seja confirmado sua posio de recuo por meio do fim de curso 1S1.
3 Etapa: Quando houver a confirmao de avano de 1A e que a pea est
presa, por meio de 1S2 o cilindro 2A dever avanar e furar a pea e permanecer por 2
segundos avanado.
4 Etapa: Cilindro 2A aguarda 2 segundos aps a confirmao de avano por
meio de 2S2, para recuar e sair da pea.
5 Etapa: Depois de 2 segundos da confirmao de avano do cilindro 2A, o
mesmo dever recuar.
6 Etapa: Quando for confirmada a posio de recuo de 2A por meio de 2S1 o
cilindro 1A dever recuar soltando a pea.
Caso um boto RESET seja acionado a sequencia dever retornar para a etapa
inicial E1.

Sequencia de movimentos

Representao grfica dos movimentos

Festo Didactic E320S

125
Programao avanada com CLP Siemens S7 300

Circuito Eletropneumtico

Lista de alocao de variveis:

Festo Didactic E320S

126
Programao avanada com CLP Siemens S7 300

Programa

Uma vez finalizado o programa necessrio salv-lo e compil-lo para


gerar os arquivos necessrios para a execuo do S7 GRAPH e o seu respectivo Data

Festo Didactic E320S

127
Programao avanada com CLP Siemens S7 300

Block DB. Para isso basta clicar no cone Salvar na barra de menu, conforme mostra a
Figura 5.13.

Figura 5.13 Salvando e compilando um programa em linguagem GRAPH.

Caso no haja nenhum erro que impea a execuo da rotina do bloco de


programa S7 GRAPH ser mostrado conforme Figura 5.14.

Figura 5.14 Mensagens de compilao.

Festo Didactic E320S

128
Programao avanada com CLP Siemens S7 300

Figura 5.15 Blocos criados automaticamente para a execuo do


GRAPH.

Depois de criado, o bloco de programa FB1 criado em S7 GRAPH pode ento ser
chamado dentro de OB1, conforme Figura 5.16.

Figura 5.16 Bloco de programa criado em S7 GRAPH.

Festo Didactic E320S

129
Programao avanada com CLP Siemens S7 300

O bloco de programa em GRAPH traz entradas e sadas default com funes


especficas. Como por exemplo, a entrada OFF_SQ usada para parar a sequncia e a
entrada INIT_SQ usada nesta aplicao para reiniciar a sequncia no step1, definido
como inicial. possvel reduzir a quantidade de entradas e sadas do bloco atravs da
barra de menus em options

Block settings, selecionando a opo Minimum na caixa

de configuraes, conforme a Figura 5.17 e Figura 5.18.

Figura 5.17 Configurando os recursos do bloco GRAPH.

Figura 5.18 - Configurando os recursos do bloco GRAPH.

Festo Didactic E320S

130
Programao avanada com CLP Siemens S7 300

O bloco minimizado deve ser atualizado em OB1 conforme mostrado na Figura


5.19. Apenas a entrada INIT_SQ mostrada.

Figura 5.19 Bloco de programa GRAPH com entradas e sadas reduzidas.

Festo Didactic E320S

131
Programao avanada com CLP Siemens S7 300

Source File Utilizando atributos para proteger um bloco de programa

Em alguns casos necessrio proteger os blocos de programa criados a fim de


restringir o acesso de pessoas no autorizadas pelo programador ao cdigo criado. O
objetivo deste procedimento evitar alteraes indevidas no cdigo de programa por
razes de segurana do equipamento controlado e at mesmo de quem est operando.

Para proteger um bloco de programa deve-se atribuir a ele uma espcie de


chave ou senha na forma de um arquivo referente ao bloco a ser protegido. Esse
arquivo chave denominado Source File.

O Source file um arquivo criado com o cdigo do bloco de programa a ser


protegido que dever funcionar como uma chave para abrir ou fechar o bloco. Uma vez
protegido, s ter acesso ao bloco quem possuir o seu source file.

A seguir esto os procedimentos para a criao do source file. Abra o bloco criado
(FB1, por exemplo) e v a File

Generate Source, conforme Figura 6.1.

Figura 6.1 Inserindo um source file para um bloco de programa criado.


Festo Didactic E320S

132
Programao avanada com CLP Siemens S7 300

Uma janela se abrir, insira o nome do source file que ser criado em Object
name e clique em ok, como mostra a Figura 6.2.

Figura 6.2 Nomeando o source file.


Uma nova janela se abrira para que sejam selecionados os blocos de programa
que devero ser protegidos pelo source file a ser criado. Selecione os blocos que deseja
proteger e clique em ok, a Figura 6.3.

Figura 6.3 Escolhendo os blocos de programa a serem protegidos.

Festo Didactic E320S

133
Programao avanada com CLP Siemens S7 300

O Source file ser criado, conforme Figura 6.4.

Figura 6.4 Arquivo gerado.

Abra

source

file

digite

chave

de

proteo

do

bloco

KNOW_HOW_PROTECT na ltima linha do cabealho, logo antes do cdigo fonte do


programa, como mostrado na Figura 6.5. Feito isso, v em File

Compile para compilar

o arquivo e salve logo em seguida. Agora o bloco FB1 est protegido. O arquivo fonte
(source file) fica gravado na guia souce.

Figura 6.5 Inserindo KNOW_HOW_PROTECT

Festo Didactic E320S

134
Programao avanada com CLP Siemens S7 300

Figura 6.6 Representao do bloco de programa protegido.

Para desproteger o bloco novamente, abra o source file e modifique


KNOW_HOW_PROTECT para comentrios, adicionando duas barras esquerda do
nome, como mostra a Figura 6.7. Compile e salve o arquivo. O bloco ser ento
desprotegido.

Figura 6.7 Removendo a proteo do bloco.

Festo Didactic E320S

135
Programao avanada com CLP Siemens S7 300

possvel salvar o source file em outro lugar para poder delet-la da guia source
do projeto e garantir que ningum tenha acesso ao programa. Para isto basta clicar com
o boto direito sobre o bloco e mandar export-lo para qualquer outra unidade de disco,
conforme Figura 6.8.

Figura 6.8 Exportando o source file para outra unidade de disco.

Para abrir o bloco novamente necessrio importar o source file. Para isso v em
source e clique com o boto direito. Clique em Insert new object

External Source e

busque o arquivo fonte na unidade de disco onde ela foi gravada, conforme Figura 6.9 e
Figura 6.10.

Festo Didactic E320S

136
Programao avanada com CLP Siemens S7 300

Figura 6.9 Importando o Source File.

Abra o arquivo fonte e siga os procedimentos mostrados anteriormente.

Figura 6.10 Importando o Source File.

Festo Didactic E320S

137
Programao avanada com CLP Siemens S7 300

Figura 6.11 - Importando o Source File.

Festo Didactic E320S

138
Programao avanada com CLP Siemens S7 300

Referencia Cruzada no S7 300 Cross References

A referncia cruzada um recurso do CLP que permite o detalhamento das


variveis utilizadas no programa. Funciona como uma espcie de mapeamento de
memria.

Torna-se um recurso fundamental para as equipes de manuteno, pois permite a


visualizao de todas as variveis de entrada e sada em uso do CLP, alm das
memrias.

Este recurso mostra tambm a estrutura do programa com todos os blocos e onde
cada varivel est alocada.
Este recurso est na barra de menus em Options

Reference Data

Display

(Figura 7.1Selecione a opo update para gerar uma nova tabela de referencias e em
seguida clique em Yes para confirmar, conforme Figura 7.2.

Figura 7.1 Criando referncias cruzadas.

Festo Didactic E320S

139
Programao avanada com CLP Siemens S7 300

Figura 7.2 - Criando referncias cruzadas.

Selecione a opo Cross-reference e clique em ok.

Figura 7.3 - Criando referncias cruzadas.

Festo Didactic E320S

140
Programao avanada com CLP Siemens S7 300

Clicando no cone Cross-refences, como mostrado na Figura 7.4. Uma lista com
todas as variveis utilizadas nos programas e sua localizao nos blocos de programa
ser mostrada.

Figura 7.4 - Criando referncias cruzadas.

No cone Assignment of inputs/output, bit memory, timers and counters possvel


identificar todos os pontos de ocupao dos endereos de entrada e sada, memrias,
contadores e temporizadores, bit-a-bit ocupados, como mostra a Figura 7.5. Esse recurso
permite ao manutentor identificar todos os endereos utilizados para realizar a
substituio de algum dispositivo de campo sem afetar outros endereos.

Festo Didactic E320S

141
Programao avanada com CLP Siemens S7 300

Figura 7.5 mostrando a estrutura de memria do CLP.

Usando o comando Rewire, possvel fazer a realocao imediata de endereos,


afetando todos os blocos de programa simultaneamente. A Figura 7.6 mostra esse
procedimento.

Festo Didactic E320S

142
Programao avanada com CLP Siemens S7 300

Figura 7.6 Realocando endereos absolutos.

Uma janela se abrir mostrando todas as ocorrncias de endereos substitudos.

Festo Didactic E320S

143
Programao avanada com CLP Siemens S7 300

O cone Program structure mostra a estrutura de programa de usurio com todos


os blocos de programas e seus subprogramas. A Figura 7.7 mostra um exemplo de
estrutura Multi-instance implementada.

Figura 7.7 Estrutura de programa mostrada no reference data.

Festo Didactic E320S

144
Programao avanada com CLP Siemens S7 300

Forando Variveis

Outro recurso muito usado por equipes de manuteno o Force and Modify
Variables.

Este recurso permite forar uma varivel para um determinado estado lgico a fim
de testar os dispositivos de campo nas entradas e sadas do CLP.

A varivel forada assume o valor desejado pelo usurio sem sofrer interferncia
do programa, ela passa a responder apenas ao comando de Force.
Este recurso encontra-se na barra de menus em PLC
(Figura 8.1).

Figura 8.1 Forando variveis.

Festo Didactic E320S

Display Force Values

145
Programao avanada com CLP Siemens S7 300

Uma janela se abrir permitindo que as variveis que se deseja forar sejam
inseridas, assim como o estado que ela deve assumir, conforme Figura 8.2.

Figura 8.2 - Forando variveis.

Em seguida, na barra de menus, deve-se ir em Variable

Force para efetivar a

operao. A varivel forada agora no mais responde ao programa de usurio, mas


apenas a tabela de Force.

Para parar o Force, v em Variable

Stop forcing.

Festo Didactic E320S