Você está na página 1de 51

Curso Programação de CLP e IHM

Siemens S7-300

NIKOLAS HENNEMANN BARBOSA


Luzerna, 2016
1 Introdução .................................................................................................... 6

2 Hardware S7-300 ......................................................................................... 8

3 Criando um Projeto .................................................................................... 10

4 Configurando o Hardware .......................................................................... 12

4.1 Configurando uma CPU............................................................................................ 12

4.2 Configurando módulos de expansão ........................................................................ 17

5 Project Tree ............................................................................................... 19

5.1 Symbols ................................................................................................................... 19

5.2 Blocks ...................................................................................................................... 20

6 Programação Básica.................................................................................. 23

6.1 Temporizadores ....................................................................................................... 24

6.1.1 Temporizadores S7 .......................................................................................... 25

6.1.2 Temporizadores IEC ......................................................................................... 27

6.2 Contadores .............................................................................................................. 30

6.2.1 Contadores Siemens ........................................................................................ 30

6.2.2 Contador IEC .................................................................................................... 31

6.3 Comparadores ......................................................................................................... 33

6.4 Processamento de Analógicas .................................................................................. 34

7 Programação Avançada ............................................................................ 36

7.1 Tipos de Blocos ........................................................................................................ 36

7.1.1 Functions ......................................................................................................... 37

7.1.2 Function Block ................................................................................................. 40

7.1.3 Bloco de Dados (DB) ......................................................................................... 42

7.1.3.1 Tipos Elementares ........................................................................................ 42

7.1.3.2 Tipos Complexos .......................................................................................... 43

7.1.4 Blocos de Organização (OB) ............................................................................. 44

Página | 2
7.1.4.1 OB1 – Program Cycle .................................................................................... 45

7.1.4.2 OB10x – Startup ........................................................................................... 45

7.1.4.3 OB20x – Time delay interrupt ....................................................................... 46

7.1.4.4 OB3x – Cyclic Interrupt ................................................................................. 46

7.1.4.5 OB4x – Hardware Interrupt .......................................................................... 46

7.1.4.6 OB80 – Time error interrupt ......................................................................... 46

7.1.4.7 OB82 – Diagnostic Interrupt ......................................................................... 46

7.2 User Data Type (UDT) .............................................................................................. 46

7.3 Multi-instance ......................................................................................................... 48

7.4 Linguagem SCL ......................................................................................................... 49

Página | 3
Indice de Figuras
Figura 1 - O Simatic Manager ....................................................................................................6
Figura 2 - Oferta de Controladores ............................................................................................7
Figura 3 - Tela de Abertura SIMATIC Manager ......................................................................... 10
Figura 4 - Tela principal ........................................................................................................... 11
Figura 5 - Árvore do Projeto ................................................................................................... 12
Figura 6 - Inserindo um hardware........................................................................................... 12
Figura 7 - Objeto inserido no projeto....................................................................................... 13
Figura 8 - HW Config ............................................................................................................... 13
Figura 9 - Objetos S7-300 ........................................................................................................ 14
Figura 10 - Rack inserido ......................................................................................................... 14
Figura 11 - Configuração da rede Ethernet .............................................................................. 15
Figura 12 - Hardware adicionado ao RACK............................................................................... 16
Figura 13 - Reconfigurando o endereço IP ............................................................................... 17
Figura 14 - Configuração de módulo de entradas analógicas ................................................... 18
Figura 15 - Árvore do Projeto .................................................................................................. 19
Figura 16 - Lista de Símbolos ................................................................................................... 19
Figura 17 - Lista de Simbolos ................................................................................................... 20
Figura 18 - Blocos do programa ............................................................................................... 21
Figura 19 - Propriedades OB1 .................................................................................................. 21
Figura 20 - Ambiente de Programação .................................................................................... 23
Figura 21 - Temporizador SD ................................................................................................... 26
Figura 22 - Inserindo uma DB .................................................................................................. 28
Figura 23 - Configuração da DB ............................................................................................... 29
Figura 24 - TON configurado ................................................................................................... 29
Figura 25 - Contador Crescente ............................................................................................... 31
Figura 26 - Utilização do Contador .......................................................................................... 32
Figura 27 - Conversão de entradas analógicas ......................................................................... 34
Figura 28 - Desescalonamento de variável analógica ............................................................... 35
Figura 29 - Tipos de blocos ...................................................................................................... 36
Figura 30 - Tipos de Programas ............................................................................................... 37
Figura 31 - Function ................................................................................................................ 38

Página | 4
Figura 32 - Criando uma FC ..................................................................................................... 38
Figura 33 - Variáveis da FC ...................................................................................................... 39
Figura 34 - Function Block ....................................................................................................... 40
Figura 35 - Inserindo um FB..................................................................................................... 40
Figura 36 - Variáveis FB ........................................................................................................... 41
Figura 37 - Acessando dados de uma DB global ....................................................................... 42
Figura 38 - Dados Elementares ................................................................................................ 43
Figura 39 - Dados Complexos .................................................................................................. 44
Figura 40 - Tipos de OBs .......................................................................................................... 45
Figura 41 - Blocos de Organização ........................................................................................... 45
Figura 42 - PLC Data Types ...................................................................................................... 47
Figura 43 - Declarando uma UDT............................................................................................. 47
Figura 44 - Multi-instance ....................................................................................................... 48
Figura 46 - Exemplo de código SCL .......................................................................................... 49
Figura 47 - Funções de conversão de tipos de dados ............................................................... 50
Figura 48 - Funções de conversão numérica ............................................................................ 50

Página | 5
1 Introdução

A presente apostila tem como objetivo auxiliar os alunos do curso de programação de CLP, e
IHM na criação de um projeto novo utilizando o software Step 7 V5.5, destinado a
programação de Controladores Lógicos Programáveis da linha S7-300 e S7-400 da Siemens
entre outras.

Neste documento também estão descritos procedimentos para utilização de temporizadores,


contadores, entradas e saídas analógicas, criação de FC, FB e DB, programação estruturada,
programação em SCL e STL.

É importante salientar que diferentemente da mais nova plataforma de programação Siemens,


o TIA Portal, o STEP 7 V5.5 trata-se de um software descentralizado, onde seu principal
executor é o SIMATIC MANAGER. Desta forma, a figura 1 mostra a estrutura organizacional do
programa.

Figura 1 - O Simatic Manager

Neste caso é importante salientar alguns dos principais produtos gerenciados pelo SIMATIC
MANAGER, são eles:

 Simatic Manager: Gerenciador de programas do STEP 7;


 HW Config: Software para configuração de hardware;
 LAD: Software de programação LADDER;

Página | 6
 WinCC Flex: Programador de IHM
 WinCC SCADA: Supervisório baseado em PC
 NetPRO: Configurador de redes industriais

A oferta de produtos de automação, atualmente compreende diversas familias de


controladores, indo dos indicados a automações de pequeno/médio porte com o S7-1200, até
projetos de grande porte com o S7-1500 e S7/400. A figura 2 mostra os controladores
disponíveis.

Figura 2 - Oferta de Controladores

Página | 7
2 Hardware S7-300

Focando diretamente no hardware S7-300, podemos elencar algumas características que o


fazem um CLP a ser utilizado em médias/grandes aplicações.

 Sistema modular;
 CPU's com diferentes níveis de performance;
 Extensa gama de módulos;
 Expansível até 32 módulos;
 Bus traseiro integrado aos módulos;
 Módulos de comunicação em diversos protocolos;

Dependendo do modelo da CPU, a performance da mesma pode variar drasticamente,


bem como tamanho de memória. Para se ter um exemplo, uma CPU 312, a mais básica,
possui 32KB de memória e um poder de processamento de 0.1ms/1000 instruções. Já a
CPU mais avançada, modelo 319 3 PN/DP possui 2MB de memória de programa e
processamento de 0.004ms/1000 instruções.

Tratando-se de um sistema expansível, existem diversos tipos de módulos que podem ser
acoplados a CPU. A figura 3 mostra todos os tipos de módulos existentes e suas respectivas
posições no RACK de montagem.

Figura 3 - Rack do hardware

Página | 8
SLOT 1 - FONTE: Obrigatoriamente, o primeiro slot do rack é reservado para fonte de
alimentação, porém, não é obrigatorio seu uso sendo da marca Siemens. Utilizando uma
fonte da familia SITOP, é possível buscar algumas informações através da CPU como:
estado das baterias, diagnósticos e etc. Caso a fonte utilizada não seja da familia siemens,
o sistema irá funcionar da mesma forma, porém, sem diagnósticos.

SLOT 2 - CPU: Reservado exclusivamente para a CPU da familia S7-300

SLOT 3 - IM: Os IM (interface Modules) permitem uma configuração multi-rack , conectado


um rack a outro quando necessária expansão.

SLOT 4 em diante - GERAL: A partir do slot 4, podem ser colocadas quaisquer tipos de
módulos sendo entrada digital (DI), saida digital (DO), entradas e saídas analógicas (AI/AO)
e também módulos especiais como de contagem rápida, PID entre outros.

Página | 9
3 Criando um Projeto

Na área de trabalho, de um duplo clique no ícone SIMATIC Manager. A seguinte tela


abrirá

Figura 4 - Tela de Abertura SIMATIC Manager

Após aberto o software, a tela da Figura 5 irá aparecer. Nela mostram as principais funções do
software, tais como:
 Novo Projeto;
 Abrir Projeto;
 Dispositivos acessíveis;
 Cartão de memória
 Filtros;
 Simulador
 Ajuda;

Página | 10
Figura 5 - Tela principal

Clicando no icone de novo projeto , a tela da Figura 6 irá abrir. Nela é possíve visualizar
projetos existentes, nomear o novo projeto, selecionar o local onde o mesmo será salvo e
dizer qual é o tipo de arquivo (Projeto, biblioteca ou multiprojeto).

Figura 6 - Criando novo projeto


Após nomeado o novo projeto, será aberta uma nova janela, com o nome do projeto (Aula01),
contendo o inicio da árvore do projeto.

Figura 7 - Árvore do Projeto

4 Configurando o Hardware
Para adicionar o hardware que será utilizado na aplicação, é necessário clicar com o botão
direito do mouse em qualquer área disponível da janela do projeto, abrindo opções conforme
a Figura 8.

4.1 Configurando uma CPU

Figura 8 - Inserindo um hardware

Página | 12
Neste procedimento, serão abertos todos os objetos disponíveis para serem inseridos em um
projeto. Tem-se a família S7-400, S7-300, Sistemas Redundantes, Estações de PC, IHM, Familia
S5 entre outros.

Será inserida uma estação S7-300. Logo após selecionada a opção, a estação estará disponível
no lado direito da janela do projeto e será inserida na árvore do projeto ao lado esquerdo.
Inicialmente ele virá com o some padrão de SIMATIC300(1), mas este pode ser renomeado,
conforme mostra a Figura 9.

Figura 9 - Objeto inserido no projeto

Um duplo clique em qualquer uma das estações irá abrir a opção de configuração de

. Outro duplo clique abrira o programa HW Config. A figura 10, mostra o


ambiente.

Figura 10 - HW Config

Ao lado direito da tela, tem-se o catálogo de componentes Siemens. Separado por família,
você pode navegar através das pastas buscando o código referente ao seu produto.

Primeiramente, para a configuração de hardware do S7-300, é necessário inserir um RACK


(RAIL) para depois inserir os módulos e CPU. A figura 11 representa a pasta de navegação do
S7-300.

Página | 13
Figura 11 - Objetos S7-300

Após entrar na pasta RACK-300 e selecionar RAIL, um duplo clique irá inserir o RACK a
configuração, ficando como mostra a figura 12.

Figura 12 - Rack inserido

Abrindo a pasta CPU-300 todos os modelos referente a familia S7-300 serão mostrados.
Através do código MFLB é necessário localizar os componentes e arrastá-los para o RACK.
Assim que selecionado, o slot que este módulo deverá ser inserido já fica em verde indicando
o local correto.

Será utilizado o modelo de CPU compacta, que já trás algumas entradas e saídas, digitais e
analógicas e também conexões de rede Profibus e Ethernet.

 CPU 314C-2 PN/DP - 6ES7 314-6EH04-0AB

Página | 14
Assim que inserida a CPU, uma janela se abrirá solicitando a configuração da rede ethernet,
conforme mostra a Figura 13.

Figura 13 - Configuração da rede Ethernet

Neste caso iremos manter os endereços de IP e mascara de sub-rede. Além disso, deve-se
clicar no botão NEW para que de fato seja criada uma nova rede, conforme mostra a figura
11.

Após inserida a conexão, o hardware adicionado será mostrado no RACK com todas as
informações referentes a este controlador, como mostra a figura 14.

Página | 15
- Conexão MPI/DP
- Conexão Profinet
-Porta 1 (RJ45)
-Porta 2 (RJ45)
- Quantidade de entradas e saídas digitais
- Quantidade de entradas e saídas analógicas
- Contadores
- Posicionamento

Endereçamento das entradas e


Figura 14 - Hardware adicionado ao RACK
saídas
Caso seja necessário trocar o endereço IP após adicionar a conexão no passo anterior, basta
um duplo clique na linha X2-PN-IO do rack e as seguintes janelas se abrirão.
Figura 15 - Reconfigurando o endereço IP

Após finalizada a configuração do hardware basta clicar em OK nas opções e então Salvar e
compilar a configuração , clicando no icone

Caso haja algum erro de configuração do hardware, neste momento irá acusar o erro. Caso
clique apenas no botão salvar, ele não irá fazer a verificação por erros na configuração.

Com o hardware configurado, pode-se fechar a janela do HW Config.

4.2 Configurando módulos de expansão

Quando adicionado um módulo de expansão de entradas analógicas, este nos permite


configurá-lo de acordo com a aplicação. Dependendo do módulo, pode-se configurar cada
canal de forma diferente quanto a sinal de entrada, tipo de medição, tempo de ciclo e filtro de
leitura.

Estas configurações estão disponíveis nas propriedades (duplo clique no módulo) de cada
módulo. Entradas digitais também possuem suas configurações, assim como saídas analógicas,
módulos especiais e etc.
Figura 16 - Configuração de módulo de entradas analógicas

Página | 18
5 Project Tree

Voltando ao SIMATIC Manager, a configuração do hardware terá resultado em mais opções


dentro da árvore do projeto, conforme indica a figura 17.

Figura 17 - Árvore do Projeto

Selecionando a opção S7 Program (1), aparecerão as seguintes opções

Figura 18 - Lista de Símbolos

Source: São as fontes dos programas desenvolvidas em outras linguagens de programação.

Blocks: São os blocos desenvolvidos do programa.

Symbols: É a lista de entradas e saídas a serem declaradas.

5.1 Symbols

Com um duplo clique em Symbols, uma janela se abrirá e será possível entrar com o nome
simbólico de cada entrada, bem como seu endereço físico (i0.0/Q0.0). Os endereços devem
respeitar a seguinte lógica:

Página | 19
Figura 19 - Lista de Simbolos

 Entradas digitais: IX.x


 Saídas digitais: QX.x
 Entradas analógicas: PIW X
 Saídas analógicas: PQW X

Neste caso o X maiúsculo deve ser substituido pelo número do byte correspondente e o x
minúsculo por seu respctivo bit.

Clicando em a lista será salva para ser utilizada na programação.

5.2 Blocks

Retornando a lista principal, com um duplo clique em Blocks, uma nova janela abrirá ao lado
direito da árvore de projeto, mostrando todos os blocos inseridos até o momento. Como é um
projeto feito do zero, aparecerá apenas o bloco OB1. Este é o bloco principal de execução do
CLP. Todos os demais blocos que forem desenvolvidos, deverão ser chamados dentro do OB1
ou dentro de um bloco que é chamado pelo OB1.

Página | 20
Figura 20 - Blocos do programa

Ao dar um duplo clique no bloco OB1, uma nova janela é aberta. Nela será configurada a
linguagem de programação que será utilizada no projeto. A figura 21 mostra as opções.

Figura 21 - Propriedades OB1

Na opção Created in Language tem-se as opções:

 STL: Lista de Instrução


 LAD: Diagrama Ladder
 FBD: Diagrama de blocos de funções.

Página | 21
Será selecionada a linguagem Ladder para inicio dos desenvolvimentos. Assim que
confirmarmos a escolha da opção, a extensão LAD/STL/FBD será aberta pelo Simatic Manager.
Este será o local onde será desenvolvido o software do CLP.

Página | 22
6 Programação Básica

Neste tópico será dada ênfase na utilização de temporizadores, contadores e comparadores de


entradas analógicas. Operações simples, porém de grande importância durante a programação
de CLP’s. Como mostra a Figura 22, estão destacadas as principais ferramentas que serão
utilizadas na programação.

Figura 22 - Ambiente de Programação

O primeiro quadro, a esquerda da figura, mostra as pastas com todas as instruções que podem
ser utilizadas para a programação. Cada pasta contém uma série de instruções relacionadas ao
seu titulo. Por exemplo: na pasta bit logic, existem instruções referentes a manipulação de bits
como: contatos abertos, fechados, bobinas simples, set/reset e etc. Já na pasta Timers,
existem uma série de temporizadores, de diferentes utilizações que podem ser utilizadas na
programação.

O segundo quadro, da esquerda para a direita, é o botão para download do programa ao CLP.
Quando aberto, o mesmo abre uma janela com as informações de quais CLP deverá ser
encaminhada aquela alteração.

Página | 23
O terceiro quadro refere-se a colocar o programa no modo on-line, ou seja, neste modo você
pode visualizar o que está acontecendo dentro do CLP em tempo real. Este modo facilita na
hora de procura e resolução de problemas.

Por fim, o ultimo quadro representa uma caixa de atalho para as instruções mais comuns.

A seguir será visto o funcionamento de cada um deles.

Instrução Descrição Simbolo


NA Contato Normalmente Aberto
NF Contato Normalmente Fechado
Bobina Simples Bobina Simples
Bobina SET – Atribui o valor 1 ao endereço
Bobina SET
de forma retentiva
Bobina Reset – Atribui o valor 0 ao
Bobina RESET
endereço de forma retentiva
Flanco Positivo – Atua como um filtro de
entrada, lendo apenas o instante em que o
P
nível lógico passa de 0 para 1, durante um
ciclo de scan.
Flanco Negativo - Atua como um filtro de
entrada, lendo apenas o instante em que o
N
nível lógico passa de 1 para 0, durante um
ciclo de scan.
Contato de Negação – Inverte o nível
NOT lógico da entrada da instrução em sua
saída

6.1 Temporizadores

Existem duas famílias de temporizadores que podem ser utilizados no STEP 7 V5.5. Uma delas
são os temporizadores criados pela própria Siemens e que possuem um funcionamento
diferente da outra família de temporizadores desenvolvida com base na norma IEC 11131-3,
que rege as normativas quanto a programação de CLPs.

Página | 24
6.1.1 Temporizadores S7

Estes temporizadores foram desenvolvidos pela Siemens e possuem vários meios de


funcionamento. Uma particularidade de cada um é a forma como é inserido o tempo de
contagem. A tabela abaixo demonstra os temporizadores e a função de cada um.

Instrução Descrição Símbolo

Temporizador de Pulso com


S_PULSE bloco para associação de
parametros

Temporizador de Pulso
S_PEXT extendido com bloco para
associação de parametros

Temporizador com retardo na


S_ODT
energização

Página | 25
Temporizador retentivo com
S_ODTS
retardo na energização

Temporizador com retardo na


S_OFFDT
desernegização

Os demais temporizadores, tem o mesmo funcionamento dos descritos acima, porém,


estão no formato de bobina, como mostra o exemplo de um temporizador com retardo na
energização na Figura 20.

O mesmo deve seguir a seguinte sintaxe: S5t#1s, caso deseje temporizar 1 segundo e deve
ser acompanhado do número do temporizador, como mostra a figura 23.

Figura 23 - Temporizador SD

Página | 26
6.1.2 Temporizadores IEC

Os temporizadores IEC são desenvolvidos conforme a norma IEC 1131-3, que rege os meios de
programação para os CLPs. Esta norma visa padronizar o método de programação de todos os
controladores, independente da marca. Assim, a utilização do temporizador é exatamente
igual em todas as marcas existentes.

Na IEC existem apenas 3 tipos de temporizadores, são eles: Temporizador com retardo na
energização, Temporizador com retardo na desenergização e temporizador de pulso.

Para inserir um temporizador IEC, deve-se adicionar uma caixa em branco a uma network e
digitar o seguinte código:

 SFB3: TP
 SFB4: TON
 SFB5: TOF

Instrução Descrição Símbolo

Temporizador com
TON
retardo na energização

Temporizador com
TOF retardo na
desenergização

Página | 27
TP Temporizador de pulso

Importante salientar que a estrutura do bloco de temporizador da IEC é diferente da


estrutura do bloco da Siemens, pois na estrutura IEC é utilizado um Function Block (visto no
próximo capitulo) como base de desenvolvimento, sendo assim, após inserir o bloco, deve-se
seguir o seguinte procedimento:

 Inserir a SFB4 na network desejada;


 Retornar no simatic manager->Blocks e inserir um Data Block conforme a figura abaixo

Figura 24 - Inserindo uma DB

 Após inserida a DB, a mesma deve ser configurada para fazer parte do TON
adicionado no Ladder.

Página | 28
Figura 25 - Configuração da DB

 Por fim, esta DB configurada deve ser associada ao TON do Ladder, como mostra a
Figura 26.

Figura 26 - TON configurado

OBS.: Para temporizadores IEC a sintaxe correta de configuração do tempo é T#5s, para 5
segundos.

Página | 29
Inserido o temporizador o mesmo possui duas entradas e duas saídas:

 IN: Quando habilitada, inicia a contagem do tempo;


 PT: Preset do tempo a ser contado. Sua sintaxe deve ser T#xxs;
 Q: Saída do temporizador que é ativada quando a contagem chega aopreset;
 ET: Tempo decorrido da contagem. Geralmente utilizado para mostrar em IHM.

6.2 Contadores

Assim como os temporizadores, os contadores também são divididos em duas famílias, a da


IEC e a própria da Siemens. Abaixo segue uma tabela com a descrição de cada um dos
contadores.

6.2.1 Contadores Siemens

Os contadores Siemens e IEC possuem as mesmas funções: Contagem Crescente, Decrescente


e Crescente/Decrescente no mesmo bloco, porém diferem em seu funcionamento.

Estes contadores trabalham da seguinte forma: Possuem uma entrada de contagem (CU), uma
entrada para configuração da contagem (S), uma para configuração do número de contagem
(PV) e um reset (R). Como saídas, possui uma saída Q, uma saída CV, que mostra o valor atual
da contagem em decimal e uma saída CV_BCD que mostra o valor atual de contagem em
formato BCD.

O grande detalhe é que a saída Q ativa quando a contagem for maior que ZERO. Ou seja, se
você quiser fazer uma lógica de contagem e comparação, não é possível fazer tudo no mesmo
componente, sendo necessário utilizar uma instrução de comparação juntamente com a saida
CV do contador, para então prosseguir seu programa. Além de ser necessário nomear o
contador (C0, C1, C2...) nunca repetindo o mesmo número.

 S_CU: contador crescente;


 S_CD: contador decrescente;
 S_CUD: contador crescente/decrescente.

Página | 30
A figura 27 mostra a utilização do contador crescente.

Figura 27 - Contador Crescente

6.2.2 Contador IEC

Os contadores IEC estão disponíveis na biblioteca de instruções sob o caminho: Libraries-


>Standard Library->System Function Blocks.

Os códigos para chamar a função diretamente no programa são:

 SFB0: CTU - Contador Crescente


 SFB1: CTD - Contador Decrescente
 SFB2: CTUD - Contador Crescente/Decrescente

O procedimento para inserir o contador em uma network é o mesmo de um temporizador IEC,


onde deve-se puxá-lo para uma network, inserir uma DB, configurar a DB para ser instanciada
no contador que você adicionou (SFB0) e depois dar o nome da DB inserida para o bloco de
contagem no ladder. A figura 28 mostra a configuração final.

Vale lembrar que o principio de funcionamento destes contadores são que a saída Q só ativa
depois que o número da contagem for igual ou maior que o configurado em PV, não sendo
necessária a utilização de um comparador para complementar a lógica.

Página | 31
Ao inserir o contador, o mesmo possui três entradas e duas saídas, conforme mostra a figura
abaixo:

 CU: Cada pulso nesta entrada, incrementa a contagem do contador;


 R: Um pulso nesta entrada reinicia a contagem;
 PV: Preset de contagem para acionar a saída Q;
 Q: Saída ativada quando a contagem chega no número pré-determinado;
 CV: Contagem decorrida até o momento. Normalmente utilizada para IHM.

Figura 28 - Utilização do Contador

Página | 32
6.3 Comparadores

Os comparadores são inseridos na forma de bloco e devem ser selecionados conforme o tipo
de dado que será comparado (inteiro, duplo ou real). porém devem ser buscados na aba ao
lado, conforme mostra a figura acima:

Os comparadores estão divididos da seguinte maneira:

Instrução Descrição Símbolo

EQ Igual (EQual)

NE Diferente (Not Equal)

GT Maior que (Grater Then)

LT Menor que (Less Then)

GE Maior ou Igual (Grater or Equal)

LE Menor ou Igual (Less or Equal)

Página | 33
Em todos estes blocos, é muito importante a distinção dos tipos de dados a serem
comparados, pois não é possível a comparação de duas variáveis diferentes, como por
exemplo: Comparar uma variável do tipo INT com uma variável do tipo REAL.

A ordem de processamento da comparação é dada pelo elemento acima do contato com o


elemento abaixo do mesmo, logo, comparamos o primeiro com o segundo.

6.4 Processamento de Analógicas

Num processo de produção, existe uma variedade de grandezas físicas (pressão, temperatura,
velocidade, velocidade de rotação, valor de pH, viscosidade, etc.) que necessitam ser
processadas no PLC para implementação da automação.

O S7-300 possui uma área especial de endereçamento para entradas e saídas analógicas, as
quais estão separadas das tabelas de imagem de processo de entrada e saída para os módulos
digitais (PII/PIQ). Esta área de endereçamento se estende do byte 256 até o byte 767. Cada
canal analógico ocupa 2 bytes.

O nível de um tanque deve ser medido em litros. O sensor foi dimensionado de forma que 500
litros possuem um nível analógico de 10 V. O módulo analógico codifica o valor analógico de
10 V como o valor inteiro +27648. Esse valor agora deve ser convertido na grandeza física
“litros”. Isso é conhecido como “conversão para a escala” (“scaling”) do valor analógico.

O bloco padrão FC 105 é utilizado para a conversão de valores analógicos. O bloco FC 105 é
fornecido juntamente com o software STEP 7 dentro da biblioteca "Standard Library“ -> "TI-S7
Converting Blocks".

Figura 29 - Conversão de entradas analógicas

Página | 34
Existe ainda o bloco para desescalonar (FC106) uma variável analógica. Ele faz exatamente o
contrário da FC105. A Figura 30 mostra sua utilização.

Figura 30 - Desescalonamento de variável analógica

Página | 35
7 Programação Avançada

Para o desenvolvimento de um programa estruturado, organizado e que facilite futuras


manutenções ou então futuras expansões de hardware/software, faz-se necessária a utilização
de métodos avançados de programação. Estes métodos visam a melhoria da interpretação do
programa, bem como sua estruturação. Tais técnicas também podem ser utilizadas em
programas mais simples, pois quanto mais organizado o programa, melhor...

Figura 31 - Tipos de blocos

7.1 Tipos de Blocos

Os blocos de programação estão subdivididos em 5 áreas:

 FC [Function];
 FB [Function Block];
 DB [Data Block];
 OB [Organization Block];

Dependendo do tipo de bloco a ser utilizado na aplicação, o programa pode ser dividido nas
seguintes áreas:

Página | 36
Figura 32 - Tipos de Programas

Programa Linear: Tem sua estrutura marcada pela ausência de qualquer bloco. Todo o
programa é escrito dentro do OB1, que é o bloco principal de programação.

Programa Particionado: Tem sua estrutura fracionada em vários blocos. Facilita a organização
e manutenção do programa. Normalmente utilizados com FC’s.

Programa Estruturado:Programação estruturada através da utilização de FB’s.

7.1.1 Functions (FC)

Os elementos Functions são funções que executam determinadas ações e não possuem
armazenamento de memória. Todos os dados são perdidos após a função chegar ao fim da
chamada.

Quando são utilizados blocos do tipo function é necessária a utilização de variáveis globais
para o armazenamento de dados.

Página | 37
Figura 33 - Function

Para criação de uma function, seguem-se os passos conforme descrito na figura:

Figura 34 - Criando uma FC

Após inserida a FC, ela ficará armazenada juntamente com o OB1, na pasta Blocks da árvore do
projeto.

Para criar a programação dentro da FC, devemos levar em consideração as variáveis de


entradas, saídas e temporárias que constituem a mesma.

Página | 38
Figura 35 - Variáveis da FC

Input: São dados de entrada do sistema, como por exemplo: sensores, botões, fins-de-curso e
etc. Geralmente são variáveis apenas de leitura do sistema

Output: São as variáveis de saída do bloco, como por exemplo: válvula para acionamento de
um cilindro, contatora para acionamento de um motor e etc. Geralmente são variáveis
somente de escrita do sistema, onde pode-se alterar o valor do estado atual do equipamento.

InOut: São variáveis onde podem ser feitas leituras e escritas simultaneamente. Geralmente
variáveis que possam comunicar com algum sistema de supervisão para alteração de setpoint’s
de um processo.

Temp: São as variáveis temporárias da função. Estas variáveis temporárias que auxiliam na
programação dentro da FC. Ao invés de se utilizar de uma memória M (globais) do CLP,
podem-se utilizar as memórias L (locais). Estas variáveis estarão disponíveis apenas dentro do
bloco que elas foram criadas. Deve-se levar em consideração que ao utilizar memórias Locais,
SEMPRE, deve-se primeiramente escrever um valor nela, para depois poder fazer uma leitura.
Isto justifica o porque de a FC perder os dados após o término do processamento do bloco. As
Fc’s, não possuem uma área para armazenar os dados após a primeira varredura do software,
ou seja, caso uma leitura seja realizada antes de uma escrita, corre-se o risco de ler um valor
que não seja coerente com o processo.

Página | 39
7.1.2 Function Block (FB)

O FB possui uma área de armazenamento de memória. Toda vez que a FB for chamada, deverá
ser associada a ela um novo data block (DB). Nesta DB, são salvos todos os tipos de dados do
bloco, como: entradas, saídas, variáveis temporárias, locais..

Figura 36 - Function Block

Todos os dados contidos dentro de cada DB, podem ser acessados pela chamada da FB.

Figura 37 - Inserindo um FB

Após criada a FB, ela ficará armazenada juntamente com o OB1, na pasta Blocks juntamente
com a árvore do projeto.

Importante perceber que para FBs, pode-se selecionar outras linguagens de programação
como GRAFCET.

Página | 40
Para criar a programação dentro da FB, devemos levar em consideração as variáveis de
entradas, saídas e temporárias que constituem a mesma.

Figura 38 - Variáveis FB

Input: São dados de entrada do sistema, como por exemplo: sensores, botões, fins-de-curso e
etc. Geralmente são variáveis apenas de leitura do sistema

Output: São as variáveis de saída do bloco, como por exemplo: válvula para acionamento de
um cilindro, contatora para acionamento de um motor e etc. Geralmente são variáveis
somente de escrita do sistema, onde pode-se alterar o valor do estado atual do equipamento.

InOut: São variáveis onde podem ser feitas leituras e escritas simultaneamente. Geralmente
variáveis que possam comunicar com algum sistema de supervisão para alteração de setpoint’s
de um processo.

Temp: São as variáveis temporárias da função. Estas variáveis temporárias que auxiliam na
programação dentro da FB. Ao invés de se utilizar de uma memória M (globais) do CLP,
podem-se utilizar as memórias L (locais). Estas variáveis estarão disponíveis apenas dentro do
bloco que elas foram criadas. Deve-se levar em consideração que ao utilizar memórias Locais,
SEMPRE, deve-se primeiramente escrever um valor nela, para depois poder fazer uma leitura.

Static:Variáveis estáticas que são salvas dentro da DB instanciada da FB. Desta maneira, estes
dados são salvos ao final do processamento do bloco, podendo ser utilizados no próximo ciclo
de scan do sistema.

Página | 41
7.1.3 Bloco de Dados (DB)

Blocos de dados são elementos utilizados na organização e estruturação do programa. Eles


dividem-se basicamente em duas estruturas. DB’s globais e DB’s instanciadas.

DB’s globais podem ser acessados de qualquer parte do programa. Um exemplo claro de
funcionamento de uma DB global é quando ela não está associada a nenhum FB, por
exemplo...uma DB onde estarão todos os dados que serão utilizados na IHM ou supervisório.

Desta maneira, entende-se que o DB não é uma ferramenta de programação, pois


internamente ele não possui lógicas, apenas armazena dados de todos os tipos para serem
acessados posteriormente.

Figura 39 - Acessando dados de uma DB global

DB’s instanciadas são aquelas que são delcaradas juntamente com alguma FB, por exemplo:
TON, CTU ou qualquer outra FB que for criada dentro do programa.

Existem dois grupos de dados que podem ser trabalhados dentro das DB. São os tipos
elementares e os tipos complexos, aos quais iremos ver a seguir.

7.1.3.1 Tipos Elementares

Página | 42
Dados elementares são utilizados com frequência em programações básicas, pois possuem os
tipos de dados básicos:

Figura 40 - Dados Elementares

7.1.3.2 Tipos Complexos

Variáveis de tipo complexo são utilizados quando o programa desenvolvido exige um nível de
controle ou estruturação maior, pois em sua maioria são unidos vários tipos de dados
elementares em uma única estrutura, de fácil acesso e entendimento.

Página | 43
Figura 41 - Dados Complexos

7.1.4 Blocos de Organização (OB)

Os blocos de organização são a interface entre o sistema operacional do CLP e o programa do


usuário, elas podem ser programadas pelo usuário, isto permite controlar a reação da CPU, os
blocos de organização chamados pelo sistema operacional para os seguintes eventos.

 Comportamento de partida – Definem como a CPU se porta no momento da


passagem de STOP para RUN.
 Processamento de programa cíclico – Execução normal do programa.
 Execução de programas dirigidos à interrupção – Partes do código que
necessitam de processamento interrupto em sua execução, como exemplo pode-
se citar um calculo PID.
 Manipulação de erros – Diagnósticos do sistema, monitoração e tratamento de erros.

Todas as OB’s têm funções especiais, a próxima imagem descreve a numeração


correspondente a OB’s específicas e logo se descreve algumas OB’s para tratamento e
diagnósticos de erros.

Página | 44
Figura 42 - Tipos de OBs

Os blocos de organização podem ser divididos da seguinte forma:

Figura 43 - Blocos de Organização

7.1.4.1 OB1 – Program Cycle


O Program Cycle é executado ciclicamente no bloco principal do programa. Todos os blocos
criados (FC,FB) devem ser chamados nele para serem executados.

7.1.4.2 OB10x – Startup


O OB de startup é executado apenas uma vez quando o modo de operação do CLP passa de STOP para RUN.
Somente após a execução deste OB, é que o OB Program Cycle será executado.

Página | 45
7.1.4.3 OB20x – Time delay interrupt
Este OB irá interromper o programa ciclico quando um tempo específico de execução expirar. Por exemplo,
uma vez por semana, uma vez por mês. Este tempo é especificado através da entrada de parâmetro da
instrução “SRT_DINT”

7.1.4.4 OB3x – Cyclic Interrupt


O OB de interrupção ciclica é executado em tempos específicos de intervalos. É muito utilizado
para executar blocos de controle PID e ele é definido na janela de diálogo do OB

7.1.4.5 OB4x – Hardware Interrupt


O OB de interrupção de hardware interrompe a execução do programa cíclico quando alguma
anomalia de hardware é encontrada, por exemplo, a retirada de algum módulo da CPU ou
danificação de algum equipamento de hardware.

7.1.4.6 OB80 – Time error interrupt


A interrupção de tempo ocorre quando o tempo de ciclo máximo é atingido. Este tempo geralmente é de
150ms e interrompe imediatamente a execução do programa cíclico.

7.1.4.7 OB82 – Diagnostic Interrupt


A interrupção de diagnostic interrompe a execução do programa cíclico quando a opção de
diagnóstico é habilitada em algum módulo que tenha essa função em específico.

7.2 User Data Type (UDT)

User data types são utilizados muito especificamente quando se fala em programação
estruturada. Através deles, podemos definir um tipo de dado que reúna mais de uma
informação, por exemplo, podemos criar uma estrutura que contenha dados booleanos,
inteiros, reais e etc...tais tipos de dados, são utilizados e acessados em nosso programa de
usuário através da utilização do “.”, como podemos ver na figura 48.

Página | 46
Figura 44 - PLC Data Types

Neste exemplo, foi criada uma estrutura para se trabalhar com valores analógicos. Todos estes
valores serão lidos e utilizados num sistema de supervisão, logo, reunimos todas as
informações necessárias em um único tipo de dado, chamado ANALÓGICO.

Para acessar estar informações, temos que declarar uma variável do tipo ANALÓGICO em
nossa DB principal.

Figura 45 - Declarando uma UDT

Note que o software criou uma estrutura em cima do tipo de dado analógico. Neste estrutura
estão todos os dados contidos no tipo de dado criado anteriormente. Para acessar estes
dados, devemos primeiro acessar a DB depois a estrutura da UDT para então acessar a
informação final.

Outra utilização da UDT é na criação de tipos de dados para comunicação com protocolos
específicos, por exemplo DNP3.0, um protocolo muito utilizado em Usinas Hidrelétricas e
Subestações. Também pode ser utilizado para criar tipos de dados que facilitem a
comunicação com equipamentos externos.

Página | 47
7.3 Multi-instance

O multi-instance é muito utilizado quando falamos em programação estruturada, pois ele


permite declarar diversos tipos de dados e blocos dentro de um Data Block. Para se utilizar do
multi-instance é indispensável que se faça a utilização de Function Block, pois apenas nela está
disponível a área de memória STATIC, ao qual é utilizada na declaração do multi instance,
conforme indica a figura 46.

Figura 46 - Multi-instance

Neste caso, declaramos um temporizador IEC na aba static de uma FB. Como já visto
anteriormente, os temporizadores IEC se utilizam de DB’s para armazenamento de seus dados,
sendo assim, a partir deste momento, será possível acessar seus dados internamente dentro
de uma DB, pois dentro da DB principal da minha FB1, inserimos mais uma DB, que é a DB do
temporizador. Desta forma, note que agora existe um sustenido “#”

Outra maneira de instanciar a DB é quando o bloco é chamado na network do programa.

O multi-instance funciona para qualquer tipo de DB, não podendo ser utilizada em FC’s

Página | 48
7.4 Linguagem SCL

SCL é uma linguagem de programação que segue os padrões de utilização do VB script da


Microsoft e também do Delphi da Borland. Através de uma linguagem alto nível, pode-se
chegar a resultados lógicos de operações com métodos muito mais ágeis e simples do que
através da linguagem convencional Ladder.

Nos CLP’s S7-1200 e S7-1500, o SCL já está incorporado na criação de FC’s e FB’s. Nas versões
do Simatic Manager V5.5, é necessária a utilização de um pacote de software adquirido
separadamente.

Figura 47 - Exemplo de código SCL

Através da programação de alto nível, é possível a utilização de funções como IF, ELSE, CASE,
FOR, WHILE e etc, que auxiliam na criação de blocos, principalmente quando se tratam de
cálculos numéricos e conversões de tipos de dados.

A figura abaixo monstra algumas funções de conversão de dados:

Página | 49
Figura 48 - Funções de conversão de tipos de dados

Exemplo de funções numéricas:

Figura 49 - Funções de conversão numérica

Estas são as principais funções utilizadas para a programação SCL, de acordo com a norma IEC
61131-1.

Página | 50
Outras linguagens de programação de acordo com a norma são:

 Ladder;
 FBD;
 Grafcet;
 STL;
 SCL;

Demais dúvidas podem ser encontradas no manual do equipamento.

Página | 51

Você também pode gostar