Você está na página 1de 57

Automação de Processos

Sistemas de Automação Discreta

Autor: Felipe Cabral, Max H. Queiroz, Marcelo E. Simon


Instituição: Universidade Federal de Santa Catarina
Data: 9 de abril de 2020
Versão: 0.1
Sumário

1 Sensores e Atuadores para Automação Discreta 1

2 Arquitetura de Controle e Automação Discreta 3

3 Introdução à Programação de CLPs 4


3.1 Realizando backup do programa do CLP . . . . . . . . . . . . . . . . . . . . . 5
3.2 Acendendo luz do botão Start ao pressioná-lo . . . . . . . . . . . . . . . . . . 6
3.3 Acendendo luz Start até ocorrência de Stop . . . . . . . . . . . . . . . . . . . 7
3.4 Tarefa anterior sem operadores Set/Reset . . . . . . . . . . . . . . . . . . . . . 7
3.5 Controle de Atuador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6 Recarregar o backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4 Temporizadores e Contadores em CLPs 10


4.1 Acender Luz Q1 por 10 segundos . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Acender luz Q1 por 10 segundos ou até acionamento de Stop . . . . . . . . . . 12
4.3 Acender luz Q2 de forma cíclica . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4 Controlar ciclo da luz Q2 por botões Start e Stop . . . . . . . . . . . . . . . . 13
4.5 Piscar luz Q1 10 vezes após comando Start . . . . . . . . . . . . . . . . . . . 13

5 Programação Sequencial de CLPs 15


5.1 MPS em diagrama de transição de estados . . . . . . . . . . . . . . . . . . . . 17
5.2 Implementar toda a máquina de estados em bloco de função ”Painel” . . . . . . 17
5.3 Implementar função Operar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.4 Implementar função Reiniciar com retorno de atuador . . . . . . . . . . . . . . 22

6 Programação de CLPs em ST e FBD 23


6.1 Baixe a solução do experimento 5 . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 Substituir bloco ”Operar” por bloco programado em FBD . . . . . . . . . . . . 24
6.3 Substituir bloco ”Painel” por bloco programado em ST . . . . . . . . . . . . . 25

7 Comunicação entre CLPs 27


7.1 Baixe a solução do experimento 5 . . . . . . . . . . . . . . . . . . . . . . . . 28
7.2 Adicionando um segundo CLP . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.3 Acionando a luz Q4 nos CLPs . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.4 Escrevendo na memória M50.0 do CLP seguinte . . . . . . . . . . . . . . . . . 29
7.5 Lendo o botão Stop do CLP seguinte . . . . . . . . . . . . . . . . . . . . . . . 31
SUMÁRIO – ii –

8 Configuração de Sinóticos em SCADA 33


8.1 Configurando a Rede de Dispositivos . . . . . . . . . . . . . . . . . . . . . . . 34
8.2 Programando o CLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.3 Monitorando a luz Q1 pela IHM . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.4 Adicionando comandos na IHM . . . . . . . . . . . . . . . . . . . . . . . . . 36
8.5 Apresentação de valores contínuos . . . . . . . . . . . . . . . . . . . . . . . . 39
8.6 Apresentação de gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

9 Configuração de Alarmes e Relatórios em SCADA 42


9.1 Baixe a solução do experimento 8 . . . . . . . . . . . . . . . . . . . . . . . . 43
9.2 Adicionando um PC à rede de dispositivos . . . . . . . . . . . . . . . . . . . . 43
9.3 Configurando tela SCADA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.4 Adição de botão de encerramento do Supervisório . . . . . . . . . . . . . . . . 44
9.5 Alarme contínuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.6 Alarme discreto de Aviso e de Erro . . . . . . . . . . . . . . . . . . . . . . . . 45
9.7 Relatório em arquivos csv e pdf . . . . . . . . . . . . . . . . . . . . . . . . . . 49

10 OPC 50
10.1 Baixe o material complementar . . . . . . . . . . . . . . . . . . . . . . . . . . 51
10.2 Inserindo variável de controle do tempo de acionamento . . . . . . . . . . . . 51
10.3 Ativando o servidor OPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
10.4 Criando programa em Python para controle do CLP . . . . . . . . . . . . . . . 53
Capítulo 1 - Sensores e Atuadores para Automação
Discreta

O objetivo desta experiência é investigar os princípios de funcionamento dos diversos


componentes da cadeia de medição e da cadeia de atuação na arquitetura de controle e automação
discreta do Sistema Modular de Produção (MPS) do LAI.
Experimento 1
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle.
*A documentação de cada estação está disponível para consulta nos PCs do LAI.
1. Desenhe um modelo diagramático da estação e, com base nesse modelo, faça uma
descrição textual do funcionamento da estação;
2. Identifique todos os sensores da estação e, para cada um deles, descreva:
a) Identificação, associando-o ao modelo diagramático;
b) Objetivo do sensor na estação;
c) Código do fabricante;
d) Tipo de sensor (ótico, indutivo, capacitivo, contato, magnético, ...);
e) Sinal de saída (digital ou analógico);
f) Padrão do sinal de saída.
3. Para cada tipo diferente de sensor identificado na estação, explique o seu princípio
de funcionamento;
4. Para cada tipo de sensor, identifique se existe algum tipo de condicionamento entre
a sua saída e o terminal de I/O. Se for o caso, apresente o componente e explique
seu princípio de funcionamento;
5. Identifique todos os atuadores da estação e, para cada um deles, descreva:
a) Identificação, associando-o ao modelo diagramático;
b) Objetivo do atuador na estação;
c) Código do fabricante;
d) Tipo de atuador;
e) Tipo de sinal de entrada (digital ou analógico, elétrico ou pneumático);
f) Padrão do sinal de entrada.
6. Para cada tipo diferente de atuador identificado na estação, explique o seu princípio
de funcionamento;
7. Para cada tipo de atuador, identifique se existe algum tipo de conversor de potência
–2–

entre a sua entrada e o terminal de I/O. Se for o caso, apresente o componente e


explique seu princípio de funcionamento.

Capítulo 2 - Arquitetura de Controle e Automação
Discreta

O objetivo desta experiência é investigar os princípios de funcionamento dos diversos


componentes da arquitetura de controle e automação discreta do Sistema Modular de Produção
(MPS) do LAI.
Experimento 2
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle.
*A documentação de cada estação está disponível para consulta nos PCs do LAI.
1. Identifique os diversos componentes do quadro de comando da estação e, para cada
um deles, descreva:
a) Tipo de componente;
b) Objetivo do componente;
c) Especificações técnicas mais importantes.
2. Explique como a energia disponível na rede elétrica em 220 VAC pode movimentar
um cilindro pneumático mediante a ativação de um sinal de saída em 24 VDC do
CLP. Identifique os componentes da estação que estão envolvidos neste processo;
3. Explique como a energia disponível na rede elétrica em 220 VAC pode movimentar
um motor elétrico DC mediante a ativação de um sinal de saída em 24 VDC do
CLP. Identifique os componentes da estação que estão envolvidos neste processo.
4. Explique o objetivo e o princípio de funcionamento do painel de interface humano-
máquina (IHM) na estação;
5. Por que a ativação do botão STOP do painel é invertida em relação aos demais
botões da IHM?
6. Faça um desenho esquemático da arquitetura do sistema de controle e automação
discreta da estação, incluindo três exemplos de sensores, três exemplos de atuado-
res, conversores de potência, condicionadores de sinal, terminal de IO, IHM, CLP,
fonte de tensão, rede de comunicação e PC. Com base nesse desenho, faça uma
descrição geral de como funciona esse sistema;
7. Explique a diferença entre o papel do PC e o papel do CLP dentro da arquitetura
de controle e automação discreta;
8. Explique como um programa em execução no PC pode acessar as informações dos
sensores e alterar o estado dos atuadores na estação.

Capítulo 3 - Introdução à Programação de CLPs

O objetivo desta experiência é aprender a usar o ambiente TIA-Portal para programação de


CLPs S7-1200 da SIEMENS, resolver alguns pequenos desafios de programação na linguagem
Ladder Diagram e configurar os CLPs para controlar o painel de interface do Sistema Modular
de Produção (MPS) do LAI.
Experimento 3
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle, tendo em anexo a programação em ladder
impressa pelo TIA-Portal.
1. Faça um ”backup” do programa instalado no CLP: criar um novo projeto, configu-
rar o CLP (modelo da CPU + módulo de IO + IP), fazer o ”upload” do programa
do CLP, salvar e fechar o projeto;
2. Programe o CLP para acender a luz do botão ”Start” quando apertá-lo e apagar
quando soltá-lo. Faça esse programa num bloco de função e ative-o no bloco
”Main”;
3. Programe o CLP para acender a luz do botão ”Start” quando apertá-lo e apagar
essa luz apenas quando apertar o botão ”Stop”. Faça esse programa num novo
bloco de função e ative-o no bloco ”Main”;
4. Resolva a Tarefa 3 sem usar as bobinas retentivas (Set e Reset). Faça esse programa
num novo bloco de função e ative-o no bloco ”Main”;
5. Em um novo bloco de função, ligue (ou ative) um atuador com o apertar do
botão ”Start” e desligue (ou retorne à posição inicial) com o botão ”Reset”.
Sempre que o botão ”Start” ou o botão ”Reset” estiverem habilitados (puderem
ser pressionados) as luzes relacionadas a eles devem estar acesas. Caso o botão
”Stop” seja pressionado, a luz Q1 deve ser acesa, os botões ”Start” e ”Reset”
devem ser desabilitados e todos os atuadores desligados (ou retornados à posição
inicial). O sistema somente pode ser reiniciado após o usuário virar a chave para
o modo manual e retornar à posição automática;
6. Salve o seu projeto e carregue o programa original (”backup” da Tarefa 1) no CLP.

3.1 Realizando backup do programa do CLP –5–

3.1 Realizando backup do programa do CLP

Para realizar o backup do programa presente no CLP é necessário inicialmente criar um


novo projeto no TIA Portal. Para isto, na tela inicial, preencha os dados do projeto e selecione
Create, conforme Figura 3.1.

Figura 3.1: Página inicial do TIA Portal.

Em seguida selecione Configure a device em ’First step’. Feito isto você será encaminhado
para a tela da Figura 3.2, nesta em ’Add new device’ selecione o dispositivo do tipo ’PLC’,
podendo-se seguir o caminho PLC > SIMATIC S7-1200 > CPU > Unspecified CPU 1200 >
6ES7 2XX-XXXX-XXXX. Selecione o equipamento e clique em adicionar. Após isso, é necessário
detectar o CLP via rede e, para isso, é necessário que o computador esteja conectado à rede wifi
CLP-LAI. Uma vez que todos os dispositivos encontrados na rede sejam listados, selecione o
CLP que corresponde à sua bancada.

Figura 3.2: Seleção de dispositivo.

Por fim selecione o módulo I/O do seu dispositivo em Devices & networks e na aba I/O
addresses altere o endereço de I/O do dispositivo de 8 para 2, conforme demonstrado na Figura
3.3.
3.2 Acendendo luz do botão Start ao pressioná-lo –6–

Figura 3.3: Alteração de endereço e upload de programa.

Feito este processo, o seu projeto esta criado. Para garantir o backup do programa atual
do CLP, selecione o ícone superior destacado na Figura 3.3 para executar upload do conteúdo
armazenado no dispositivo e então salve o projeto e o feche. Em seguida repita este processo
para criar um novo projeto para realização da sequência do experimento 3.

3.2 Acendendo luz do botão Start ao pressioná-lo

Conforme solicitado, utilize um bloco de função para atrelar o estado do botão ”Start” a sua
luz correspondente (%Q2.0). Para isso, na aba PLC tags crie as tags referentes ao Botão_Start
(%I2.0) e à Luz_Start (%Q2.0) e crie um bloco function_1 com a lógica da Figura 3.4.

Figura 3.4: Acionamento de luz Start.

Em seguida, no bloco main, arraste o bloco function_1 criado para a Network desejada de
forma como é apresentado na Figura 3.5.
3.3 Acendendo luz Start até ocorrência de Stop –7–

Figura 3.5: Acionamento de função no bloco main.

3.3 Acendendo luz Start até ocorrência de Stop

Nesta etapa, adicionamos uma tag de entrada referente ao Botão_Stop (%I2.1) e criamos
duas Networks para ligar e desligar a luz. Atrelamos então o Botão_Start à Luz_Start com um
operador do tipo ’Set’, e o Botão_Stop à Luz_Start por meio de um operador do tipo ’Reset’.
Esta lógica pode ser interpretada na Figura 3.6.

Figura 3.6: Acionamento de luz Start.

3.4 Tarefa anterior sem operadores Set/Reset

Para replicarmos o sistema da etapa anterior sem o uso dos operadores ’Set’ e ’Reset’
devemos criar uma retenção conforme apresentado na Figura 3.7.

Figura 3.7: Acionamento de luz Start por retenção.


3.5 Controle de Atuador –8–

3.5 Controle de Atuador

Para esta última etapa abordaremos quatro entradas (’Start’, ’Stop’, ’Reset’ e ’Chave’), quatro
saídas (’Luz_Start’, ’Luz_Reset’, ’Luz_Q1’ e ’Atuador’) e uma memória, conforme apresentado
na Tabela 3.1.
Tabela 3.1: Variáveis utilizadas.
Name Address Data Type
Luz_Start %Q2.0 Bool
Luz_Reset %Q2.1 Bool
Luz_Q1 %Q2.2 Bool
Atuador %Q0.0 Bool
Start %I2.0 Bool
Stop %I2.1 Bool
Reset %I2.3 Bool
Chave %I2.2 Bool
temp %M0.0 Bool

Conforme a descrição desta tarefa, o controle de um atuador, representado por %Q0.0, deve
ser realizado pelos comandos ”Start” e ”Reset” e estes devem estar habilitados somente caso o
botão ”Stop” não esteja pressionado. Para realizar garantir tal comportamento é necessária a
lógica demonstrada nas primeiras duas Networks da Figura 3.8. Além disto, é solicitado que ao
pressionarmos o botão ”Stop” o sistema acenda a luz Q1 e desligue o atuador, o que é garantido
pelos operadores Set e Reset utilizados na Network 3, observe que foi utilizado o próprio contato
referente à luz como bloqueio dos botões ”Start” e ”Reset”.

Figura 3.8: Acionamento de atuador e parada controlada por Stop.


3.6 Recarregar o backup –9–

Também é solicitado que sejam utilizados indicadores luminosos para indicar se os botões
”Start” e ”Reset” estão habilitados. Observe pela Network 4, apresentada na Figura 3.9, que
a ”Luz_Reset” fica habilitada somente caso o atuador esteja ligado E ”Stop” não tenha sido
acionado (”Luz_Q1”). De forma semelhante, a ”Luz_Start” fica acesa quando o atuador estiver
desligado E ”Stop” não tenha sido acionado.

Figura 3.9: Condições de comandos e chave de segurança.

Por fim, é garantida a segurança do sistema por meio de uma chave responsável por reabilitar
o sistema na decorrência do acionamento do botão ”Stop”. Para isto foi feito uso de um contato
do tipo ”borda de descida” o qual realiza a energização do operador Reset de ”Luz_Q1” somente
com o desligamento da chave, sendo necessário atrelar uma memória auxiliar para seu uso.

3.6 Recarregar o backup

Feitas todas estas tarefas, basta salvar o programa desenvolvido e fecha-lo, e então abrir o
backup inicialmente feito e gravar seu conteúdo novamente no CLP utilizado.
Capítulo 4 - Temporizadores e Contadores em CLPs

O objetivo desta experiência é introduzir o uso de contadores e temporizadores na progra-


mação de um CLP S7-1200 na linguagem Ladder Diagram, atuando sobre o painel de interface
de uma estação do Sistema Modular de Produção (MPS) do LAI.
Experimento 4
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle, tendo em anexo a programação em ladder
impressa pelo TIA-Portal.
*Cada programa deve ser implementado num novo bloco de função e ativado no bloco
”Main” apenas no momento em que for testado.
1. Programe o CLP para acender a luz Q1 por 10 s quando apertar o botão ”Start”
usando os seguintes temporizadores:
(a) TP (Pulse Timer);
(b) TOF (OFF-Delay Timer);
(c) TON (ON-Delay Timer).
2. Programe o CLP para acender a luz Q1 por 10 s quando apertar o botão ”Start”,
de modo que essa luz seja apagada antes desse prazo assim que o botão ”Stop” for
apertado;
3. Programe um bloco de função que faça a luz Q2 acender e apagar a cada segundo
indefinidamente;
4. Programe um bloco de função que faça a luz Q2 acender e apagar a cada segundo
sempre que o botão ”Start” for pressionado. A luz Q2 deve parar de piscar e
permanecer desligada quando o botão ”Stop” for pressionado;
5. Programe um bloco de função que faça a luz Q1 piscar rapidamente por 10 vezes
sempre que o botão ”Start” for pressionado.

4.1 Acender Luz Q1 por 10 segundos – 11 –

4.1 Acender Luz Q1 por 10 segundos

Com o objetivo de apresentar diferentes tipos de temporizadores é solicitado o uso dos ope-
radores TP, TOF, e TON. Estes podem ser obtidos no menu lateral direito em Basic Instructions
» Timer operations e apresentam as seguintes funções:
TP - Time Pulse: energiza a saída do operador por um tempo programado;
TOF - Timer Off: tem a desenergização da saída retardada pelo tempo programado;
TON - Timer On: tem a energização da saída retardada pelo tempo programado;
Para garantir que a luz Q1 permaneça acesa somente por 10 segundos com qualquer um dos
temporizadores é necessário utilizar diferentes padrões de acionamento de tais operadores. Na
Figura 4.4 são apresentadas abordagens que fornecem ao sistema o funcionamento desejado.

Figura 4.1: Delay de pulso TP.

Figura 4.2: Delay de desenergização TOF.

Figura 4.3: Delay de energização TON.


Figura 4.4: Luz Q1 acionada por 10 s com diferentes temporizadores.
4.2 Acender luz Q1 por 10 segundos ou até acionamento de Stop – 12 –

4.2 Acender luz Q1 por 10 segundos ou até acionamento de Stop

Para esta tarefa basta adaptar uma das abordagens anteriores adicionando o ”Botão_Stop”
paralelo ao sistema atrelado ao comando Reset da ”Luz_Q1”. Na Figura 4.5 é apresentada a
adaptação feita à abordagem com TON.

Figura 4.5: Luz temporizada com prioridade de Stop para desligamento.

4.3 Acender luz Q2 de forma cíclica

Para introduzir um ciclo de acionamento de uma saída basta utilizar contatos NA e NF que
representam o seu status e utilizar estes como seu próprio acionamento. Por exemplo, contato
NF de ”Luz_Q1” acionando operador Set de ”Luz_Q1” e contato NF acionando o Reset. Como
se pretende um ciclo fixo de 1 segundo, é necessário introduzir temporizadores nesta lógica, com
a configuração da Figura 4.6 o sistema passa ter um ciclo em que a Luz Q1 fica 400 ms ligada e
600 ms desligada de forma ciclica conforme especificado.

Figura 4.6: Acionamento cíclico de luz Q2.


4.4 Controlar ciclo da luz Q2 por botões Start e Stop – 13 –

4.4 Controlar ciclo da luz Q2 por botões Start e Stop

Basta inserir em um contato de controle em série ao ciclo para tornar possível controlar seu
funcionamento. Observe na Figura 4.7 que utilizamos uma memória auxiliar que define o se o
ciclo deve ocorrer. Para isso, tal memória é acionada pelo contato ”Botão_Start” e desligada por
”Botão_Stop”.

Figura 4.7: Controle de ciclo.

4.5 Piscar luz Q1 10 vezes após comando Start

Por fim é solicitado que façamos uma função em que o botão Start inicie um ciclo em que
luz Q1 pisque 10 vezes. Como é solicitado que o ciclo seja executado exatamente 10 vezes,
necessitamos inserir um bloco contador nesta etapa. Operadores contadores podem ser obtidos
no menu ao lado direito em Basic instructions » Counter operations, onde estão disponíveis
contadores crescente (CTU), decrescente (CTD) e ambos (CTUD). Observe na Figura 4.8 que
estes operadores apresentam os seguintes parâmetros:
4.5 Piscar luz Q1 10 vezes após comando Start – 14 –

CU - Counter Up: onde é atrelada a variável a ser contada de forma crescente;


R - Reset: controle de reinicialização da contagem;
PV - Previous Value: valor de acionamento da saída para o tipo CTU, e valor inicial para
o tipo CTD;
CD - Counter Down: onde é atrelada a variável a ser contada de forma decrescente;
LD - Load: carrega no contador o valor definido em PV;
Q - Output: saída do contador, para o CTU esta saída é acionada quando o contador atinge
PV, já para o cotador CTD esta é acionada ao zerar o contador;
CV - Current Value: fornece o valor atual da contagem, podendo atrela-lo a uma memória
auxiliar.

Figura 4.8: Tipos de contadores. Crescente, decrescente e .

Portanto, para garantir a lógica proposta, podemos aproveitar as Networks 1 e 2 da tarefa


anterior e alterar somente o funcionamento do desligamento do ciclo. Este pode ocorrer por
meio do botão Stop ou então pelo contador adicionado, limitando a ocorrência de apenas 10
ciclos, conforme Figura 4.9.

Figura 4.9: Contador controlando quantidade de ciclos.


Capítulo 5 - Programação Sequencial de CLPs

O objetivo desta experiência é começar a programação na linguagem Ladder Diagram de


um CLP S7-1200 para controlar o painel de interface e os acionamentos eletropneumáticos de
uma estação do Sistema Modular de Produção (MPS) do LAI.
Experimento 5
Para todas as estações do MPS, a programação dos painéis deve respeitar o seguinte
padrão:
A lógica de operação dos painéis deve ser baseada numa máquina de estados com
os seguintes estados: Parado, Reiniciando, Pronto, Operando e Parando;
A luz do botão ”Reset” deve estar acesa apenas no estado Parado e, quando botão
”Reset” for pressionado, o sistema deve ir para o estado Reiniciando;
A luz Q1 deve ficar acesa apenas no estado Reiniciando e, após o final da sequência
de reinício (evento ”reiniciou”), o sistema deve evoluir para o estado Pronto;
A luz do botão ”Start” deve estar acesa apenas no estado Pronto e, quando pressi-
onado, esse botão deve levar o sistema para o estado Operando;
A luz Q2 deve ficar acesa apenas no estado Operando, no qual o sistema deve
executar indefinidamente a lógica sequencial de operação cíclica do CLP;
A partir de qualquer estado, o botão ”Stop” deve levar o sistema ao estado Parando,
a partir do qual, após apagar todas as luzes do painel e atualizar as saídas do CLP
para valores seguros, o sistema evolui para o estado Parado.

Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle, tendo em anexo a programação em ladder
impressa pelo TIA-Portal.
1. Desenhe um diagrama de transição de estados para o padrão definido acima,
indicando as ações associadas a cada estado e as condições para cada transição;
2. Programe um bloco de função ”Painel” para controlar o painel da estação conforme
o padrão definido acima. Na sequência de reinício, o sistema deve apenas esperar
por 5 s, e nenhuma ação deve ser executada sobre a estação durante operação
cíclica. Utilize um bloco do tipo ”Startup” para iniciar o programa no estado
Parando sempre que o CLP for ligado;
3. Programe um bloco de função “Operar” que seja ativado apenas no estado Ope-
rando e faça algum atuador da estação ficar ligando e desligando continuamente a
cada segundo;
– 16 –

4. Programe um bloco de função “Reiniciar” que faça um atuador da estação ficar


acionado por 10 s, ou até que algum sensor seja ativado, e então gere o evento
”reiniciou” para o bloco ”Painel”.

5.1 MPS em diagrama de transição de estados – 17 –

5.1 MPS em diagrama de transição de estados

O funcionamento de cada estação do MPS pode ser representado por uma máquina de
estados conforme a apresentada na Figura 5.1. Podemos notar cinco estados bem definidos que
representam as possíveis condições de funcionamento do sistema e tem sua dinâmica controlada
pelos botões Reset, Start e Stop e por eventos internos Reiniciou e Parou. Cada estado é
representado pelas seguintes características:
Parado: sistema com todos atuadores desligados e ”luz_Reset” acesa;
Reiniciando: sistema executando sequência de reinicialização, sinalizando esta mantendo
a ”luz_Q1” acesa;
Pronto: sistema em condições necessárias para início da operação e ”luz_Start” acesa;
Operando: sistema executando ciclo de operação, sinalizando esta por meio da ”luz_Q2”
acesa;
Parando: sistema desliga todas as luzes do painel e garante condições seguras de parada
do sistema.

Figura 5.1: Máquina de Estados que representa o funcionamento do Sistema Modular de Produção.

5.2 Implementar toda a máquina de estados em bloco de função


”Painel”

Nesta etapa é solicitado que implementemos a sequência da máquina de estados acima por
meio de um bloco de função. Para isto é interessante primeiramente configurarmos as Tags a
serem utilizadas, conforme a Tabela 5.1. Observe que utilizamos cinco memórias auxiliares que
nos permitem controlar e monitorar o estado atual do sistema e outras duas para representar os
eventos internos ”Reiniciou” e ”Parou”.
5.2 Implementar toda a máquina de estados em bloco de função ”Painel” – 18 –

Tabela 5.1: Variáveis auxiliares para implementação da Máquina de Estados.


Name Address Data Type
Parando %M10.0 Bool
Parado %M10.1 Bool
Reiniciando %M10.2 Bool
Pronto %M10.3 Bool
Operando %M10.4 Bool
reiniciou %M11.0 Bool
parou %M11.1 Bool
Botão_Reset %I2.3 Bool
Botão_Start %I2.0 Bool
Botão_Stop %I2.1 Bool
Luz_Reset %Q2.1 Bool
Luz_Start %Q2.0 Bool
Luz_Q1 %Q2.2 Bool
Luz_Q2 %Q2.3 Bool

Criamos então um bolco função denominado ”Painel” e para programarmos a lógica pro-
posta podemos começar considerando que sistema esteja em algum estado específico e avaliar
quais as possíveis alterações a partir deste. Se optarmos pelo estado Parando, por exemplo,
podemos avaliar que neste estado é possível que ocorra o evento ”Parou” e como consequência o
sistema passa para o estado Parado. A troca de estado pode ser representada pelos operadores
Set/Reset atribuídos às memórias auxiliares correspondentes aos estados, assim como foi feito
na Figura 5.2. Setamos o novo estado e resetamos o anterior. Além disto, devemos lembrar de
finalizar o evento interno ”Parou” já que o estado já foi alterado.

Figura 5.2: Ações permitidas no Estado Parando.

Em seguida, conforme demonstrado na Figura 5.3, podemos utilizar a mesma lógica acima
para monitorar as transições:
Parado » Reiniciando ao acionar o ”Reset”;
Reiniciando » Pronto ao ocorrer o evento ”reiniciou”;
Pronto » Operando ao acionar o ”Start”.
Para completarmos o ciclo da máquina de estado ainda é necessário garantirmos que em
qualquer estado o acionamento do botão ”Stop” encaminhe o sistema ao estado Parando. Isto é
5.2 Implementar toda a máquina de estados em bloco de função ”Painel” – 19 –

Figura 5.3: Ações permitidas nos estados Parado, Reiniciando e Pronto.

feito setando a memória ”Parando” e resetando as demais, conforme demonstrado na Figura 5.4.

Figura 5.4: Alteração de estado causada pelo acionamento de Stop.

Feito isto temos a sequência de funcionamento da máquina de estados completa. No


entanto ainda é necessário atrelarmos a cada estado o acionamento das luzes que sinalizam as
ações permitidas. Para isto basta fazer com que a memória referente a cada estado energize a
respectiva luz habilitada, assim como foi feito na Figura 5.5. Além de acionar as luzes, o estado
Reiniciando deve aguardar 5 segundos para então finalizar sua execução por meio do evento
”reiniciou”.
5.3 Implementar função Operar – 20 –

Figura 5.5: Acionamento das luzes conforme o estado atual.

Por fim, conforme solicitado, devemos garantir que o sistema inicialize no estado Parando.
Para tal, criamos um bloco startup e neste setamos o estado inicial do sistema assim como foi
feito na Figura 5.6. Para testar o funcionamento do programa, adicione o bloco função ”Painel”
criado no bloco ”main” e carregue o programa no CLP.

Figura 5.6: Inicialização do sistema no estado Parando.

5.3 Implementar função Operar

Nesta etapa é solicitado que seja adicionado ao sistema um bloco função "Operar"no qual é
implementada a sequência de trabalho produtivo do sistema, representado por um ciclo continuo
de acionamento de um dos atuadores da bancada sendo utilizada. Para o controle deste ciclo
geramos duas novas Tags denominadas ”AtuadorOFF” e ”AtuadorON” para controlarmos o ciclo
em execução por meio de dois timers, conforme a lógica demonstrada a na Figura 5.7.
5.4 Implementar função Reiniciar com retorno de atuador – 21 –

Figura 5.7: Lógica de funcionamento do bloco função ”Operar”.

Observe na Figura 5.7, que o funcionamento desta parte do sistema esta controlado pela
variável #IN. Esta se trata de uma entrada criada para o bloco função, permitindo a este receber
comandos externos no momento da sua chamada. Para criação de entradas e saídas de uma
função, basta estender o painel apresentado na Figura 5.8 (posicionado logo acima da Network
1) e configurar as variáveis desejadas. Feito isto, ao adicionar este bloco função no bloco ”main”,
este apresentara uma entrada capaz de controlar o seu acionamento.

Figura 5.8: Adicionando variáveis à função.


5.4 Implementar função Reiniciar com retorno de atuador – 22 –

5.4 Implementar função Reiniciar com retorno de atuador

Para esta ultima etapa do experimento 5 é solicitada a criação de um bloco função para o
processo de reinicialização em que o o atuador deve permanecer acionado por 10 segundos ou até
algum sensor ser ativo, para então gerar o evento ”reiniciou”. Para isto é necessário primeiramente
que no bloco ”Painel” seja removido o controle do evento ”reiniciou” anteriormente criado e
apresentado na Figura 5.5.
Em seguida, criamos um bloco função ”Reiniciar” e neste criamos variáveis internas do
tipo ”IN” e ”OUT” no painel demonstrado na Figura 5.8. Além disto, criamos duas novas Tags
”R0” e ”R1” para distinguir o momento em que o atuador é mantido acionado da finalização da
reinicialização por meio do evento ”reiniciou”.
Então, pela lógica apresentada na Figura 5.9, garantimos que a memória ”R0” sempre
inicie ativa no momento que a função for iniciada pela entrada #IN e que esta seja desativada
com o acionamento do timer ou do ”Sensor_vacuo”. Para finalizar a reinicialização, no mesmo
momento que desligamos ”R0” ativamos ”R1” e por consequência ocorre o evento #OUT. O
Atuador ”Ventosa” é mantido ativo sempre que ”R0” também estiver, durante a reinicialização.

Figura 5.9: Lógica de funcionamento do bloco função ”Reiniciar”.


Capítulo 6 - Programação de CLPs em ST e FBD

O objetivo desta experiência é introduzir as linguagens de programação Diagrama de Blocos


de Função (FBD) e Texto Estruturado (ST) da norma IEC61131, usando um CLP S7-1200 para
controlar o painel de interface e os acionamentos eletro-pneumáticos de uma estação do Sistema
Modular de Produção (MPS) do LAI.
Experimento 6
Para todas as estações do MPS, a programação dos painéis deve respeitar o padrão
definido no roteiro da Experiência 5. Os alunos de cada turma deverão se organizar em
seis equipes, uma para cada estação de manufatura do MPS. Cada equipe deve executar
a sequência de tarefas a seguir e entregar em forma de relatório pelo Moodle, tendo em
anexo a programação em ladder impressa pelo TIA-Portal.
1. Baixe do Moodle a solução do professor para a Experiência 5, configure o hardware
para o CLP da sua estação e carregue o programa do professor;
2. Substitua o bloco de função “Operar” por um novo bloco “Operar_FBD” que
execute a mesma função, mas seja programado na linguagem FBD;
3. Substitua o bloco de função “Painel” por um novo bloco “Painel_ST” que execute
a mesma função, mas seja programado na linguagem ST.

6.1 Baixe a solução do experimento 5 – 24 –

6.1 Baixe a solução do experimento 5

Faça o download da solução da experiência 5, disponível no moodle, e carregue o projeto.


Em seguida altere as configurações do CLP para o equipamento referente à sua bancada, definindo
o IP correspondente a este. Verifique também se os endereços de I/O estão corretamente
configurados como 2.

6.2 Substituir bloco ”Operar” por bloco programado em FBD

Recordando, a função do bloco ”Operar” é gerar um ciclo contínuo de período 1 s para


algum atuador da bancada enquanto a máquina de estados estiver no estado Operando. Neste
momento o objetivo é então alterarmos o código anterior para o formato de Diagrama de Blocos
de Função. Para isso, adicione um novo bloco de função com o nome ”Operar_FBD” e em
Language altere a linguagem de LAD para FBD. Feito isto, você irá notar que a janela principal
e os operadores básicos foram alterados para a nova linguagem e então já pode programar o
funcionamento do bloco conforme desejado.

Figura 6.1: Bloco função ”Operar” convertido para linguagem FBD.


6.3 Substituir bloco ”Painel” por bloco programado em ST – 25 –

Como o nosso objetivo é reescrever a lógica FBD com base em uma função já disponível
em nosso documento, temos a opção de converter este já existente para a linguagem FBD. Para
isto, faça uma cópia da função ”Operar” anteriormente utilizada, altere o nome e faça o mesmo
processo explicado no parágrafo anterior para alterar o tipo de linguagem. Como já haverá uma
lógica definida para o bloco criado, o próprio Software já realiza a conversão. O resultado desta
ação pode ser verificado na Figura 6.1.

6.3 Substituir bloco ”Painel” por bloco programado em ST

Nesta etapa o objetivo é utilizarmos a programação por Texto Estruturado. Para isto vamos
refazer a lógica de controle da Máquina de Estados realizada no bloco ”Painel” em um novo
bloco função denominado ”Painel_ST”. Para utilizar a linguagem ST na criação do novo bloco
de função definimos a linguagem para o tipo SCL. Criado o bloco deverá abrir uma janela vazia
em que é possível inserir o código de controle desejado. Nesta há disponível exemplos dos
comandos básicos apresentados na Figura 6.2.

Figura 6.2: Exemplo de novo bloco para programação em Texto Estruturado.

Neste novo bloco inserimos então a lógica necessária para controlar a Máquina de Estados.
Uma possível abordagem é apresentada na Figura 6.3, onde foi utilizado o comando CASE ...
OF para controlar o os eventos permitidos em cada um dos estados do sistema através de uma
nova variável (Tag) chamada ”Estado_Painel”. Observe que após a linha 34 são atreladas as
6.3 Substituir bloco ”Painel” por bloco programado em ST – 26 –

Figura 6.3: Lógica do Painel em Texto Estruturado.

Tags em utilização no restante do sistema com relação ao estado atual de ”Estado_Painel”. Além
disto, nas linhas 42-45 é feito o controle das luzes do painel conforme o status de cada estado.
Para que seja possível utilizar este sistema, é necessário adicionar um novo operador no
bloco ”Startup” para inicializar a variável ”Estado_Painel” com o valor 0. Isto pode ser feito
por meio do operador MOVE, configurado conforme a Figura 6.4, de forma a mover o valor
determinado em IN para nossa variável de controle de estado.

Figura 6.4: Operador MOVE.

*Lembre-se de atualizar os blocos utilizados no ”main” para os criados neste experimento


no momento de testa-los.
Capítulo 7 - Comunicação entre CLPs

O objetivo desta experiência é introduzir os conceitos de comunicação entre CLPs em redes


industriais através da configuração de uma aplicação de controle e automação simples para o
Sistema Modular de Produção (MPS) do LAI, envolvendo dois CLPs S7-1200 da SIEMENS,
interligados por uma rede Profinet / Industrial Ethernet.
Experimento 7
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle, tendo em anexo a programação em ladder
impressa pelo TIA-Portal.
1. Baixe do Moodle a solução do professor para a Experiência 5, configure o IP do
projeto para o CLP da sua estação e teste o sistema;
2. Adicione um segundo CLP ao projeto, configurando-o para o IP da estação seguinte
e interligando-o com o outro CLP via rede Profinet;
3. Adicione a cada um dos dois CLPs uma lógica que ative a Luz Q4 da respectiva
estação conforme o valor do bit de memória M50.0;
4. Através do operador PUT, programe o primeiro CLP para escrever o valor da Luz
Q1 na memória M50.0 do CLP seguinte, sempre que a Luz Q1 acender ou apagar;
5. Através do operador GET, programe o primeiro CLP para, a cada 500ms, ler o
valor da entrada associada ao botão Stop do CLP seguinte e mostrá-lo através da
Luz Q6.

7.1 Baixe a solução do experimento 5 – 28 –

7.1 Baixe a solução do experimento 5

A solução deve ser usada com o objetivo de se ter um ponto de partida. É importante notar
que o IP do CLP do projeto deve ser alterado para corresponder ao da bancada de cada equipe.

7.2 Adicionando um segundo CLP

Para adicionar um segundo CLP ao seu projeto basta selecionar ’Add new device’. Na aba
aberta selecione o dispositivo do tipo ’PLC’, podendo-se seguir o caminho PLC > SIMATIC
S7-1200 > CPU > Unspecified CPU 1200 > 6ES7 2XX-XXXX-XXXX. Selecione o equipamento
e clique em adicionar. Após isso, é necessário detectar o CLP via rede e, para isso, é necessário
que o computador esteja conectado à rede wifi CLP-LAI. Uma vez que todos os dispositivos
encontrados na rede sejam listados, selecione o CLP que corresponde à bancada adjacente à sua.
Não esqueça de alterar o endereço de I/O do novo dispositivo de 8 para 2.
Após adicionado o segundo CLP, é necessário interligar ambos via rede Profinet. Para tal,
acesse o menu ‘Devices & networks’, localizado abaixo da opção ‘Add new device’ já utilizada
anteriormente. Nesse ponto, deve-se interligar as saídas Ethernet dos dois CLPs utilizando a
conexão ‘S7-Connection’. Feito isso, a conexão entre os CLPs deve corresponder ao padrão
apresentado na Figura 7.1.

Figura 7.1: Topologia de rede de comunicação entre dois CLPs.

7.3 Acionando a luz Q4 nos CLPs

Nesta etapa é necessário criar, em cada um dos CLPs, uma TAG referenciada à variável
de memória %M50.0 e outra associada ao endereço %Q2.4 representando a variável de saída
”luzQ4”. Assim que adicionadas as TAGs, atrelamos a ativação da ”luzQ4” ao valor da memória
%M50.0 conforme apresentado na Figura 7.2.

Figura 7.2: Acionamento da Luz Q4 a partir do endereço de memória %M50.0.


7.4 Escrevendo na memória M50.0 do CLP seguinte – 29 –

7.4 Escrevendo na memória M50.0 do CLP seguinte

7.4.1 Adicionando um operador PUT

Para alterar o valor de uma variável de outro CLP usamos o bloco PUT. Para adicionar
esse bloco, deve-se pesquisá-lo na biblioteca de comunicação que fica ao lado direito em:
Instructions> Communication > S7 communication. Uma vez encontrado, arraste o operador
PUT da biblioteca para uma linha do ladder. Note que quando um operador PUT é adicionado,
um ‘Data block’ é criado e associado a esse bloco cuja configuração é feita por uma janela pop-up
(tipicamente não é necessário fazer modificações, bastando apenas clicar em “OK”).
O operador PUT possui o formato apresentado na Figura 7.3. Após inseri-lo é necessário
acessar suas configurações e definir o segundo CLP como ’partner’ em Configuration > Con-
nection parameter. Lembrando que é necessário energizar o operador por meio dos contatos
’EN’ e ’ENO’.

Figura 7.3: Bloco de operador PUT.

Do lado direito do operador, temos a saída DONE, que está relacionado com o término
ou não do envio sem que tenha ocorrido erro; e as saídas ERROR e STATUS que apresentam
valores referentes aos possíveis erros. Quanto aos parâmetros do lado esquerdo, suas funções
são:
REQ: parâmetro de controle de troca de dados na transição positiva, ou borda de subida
do sinal de entrada (rising edge);
ID: gerado automaticamente ao realizar a definição do ’partner’ nas configurações do
bloco (passo que é explicado mais adiante);
ADDR_X: ponteiro para a memória do ’partner’ em que os dados serão escritos;
SD_X: ponteiro para a memória dos dados que queremos enviar.

7.4.2 Programação em ladder para o envio de uma variável

Para escrever a programação responsável por enviar o valor da variável correspondente


ao estado da luz Q1 na memória M50.0 do CLP seguinte, deve-se criar as variáveis auxiliares
apresentadas na Tabela 7.1 conforme as TAGs apresentadas em cada linha. Estas são necessárias
7.5 Lendo o botão Stop do CLP seguinte – 30 –

para garantir que seja feita a atualização da memória do dispositivo secundário tanto ao ligar a
’luz Q1’ como ao desliga-la.

Tabela 7.1: Variáveis auxiliares adicionadas ao CLP 1.


Name Address Data Type
Tag_a_enviar_Q1 %M60.0 Bool
temp1 %M60.1 Bool
temp2 %M60.2 Bool
Envia %M60.3 Bool

A Figura 7.4 apresenta a lógica responsável pela atualização da memória %M50.0 do


segundo CLP. Observe que a requisição de envio do operador PUT é acionada na ocorrência de
borda de subida e descida da memória %M60.0, garantindo a atualização sempre que ocorra uma
alteração no valor de %M60.0. %M60.0 replica o valor da variável ’Luz Q1’.

Figura 7.4: Programação em ladder para envio de informação usando o bloco PUT.
7.5 Lendo o botão Stop do CLP seguinte – 31 –

7.5 Lendo o botão Stop do CLP seguinte

7.5.1 Adicionando o operador GET

Para realizarmos a leitura de um valor da memória de outro dispositivo fazemos uso do


operador GET, este se encontra disponível no mesmo menu que o operador PUT, apresentado
na seção 7.4.1. Assim como ocorre com o bloco PUT, quando o operador GET é adicionado,
cria-se um Data block correspondente (o TIA-Portal cria automaticamente, basta clicar em ”OK”
na janela referente a isso).
O operador GET possui o formato apresentado na figura 7.5. Assim como no operador
anterior, é necessário definir o segundo CLP como ’partner’ em Configuration > Connection
parameter e energizar o operador.

Figura 7.5: Bloco de operador GET.

Do lado direito do operador, temos a saída NDR, que está relacionado com o término ou não
da leitura sem que tenha ocorrido erro; e as saídas ERROR e STATUS que apresentam valores
referentes aos possíveis erros. Quanto aos parâmetros do lado esquerdo, suas funções são:
REQ: parâmetro de controle de troca de dados na transição positiva, ou borda de subida
do sinal de entrada (rising edge);
ID: gerado automaticamente ao realizar a definição do ’partner’ nas configurações do
bloco (passo que é explicado mais adiante);
ADDR_X: ponteiro para a memória do partner de onde os dados serão lidos;
RD_X: ponteiro para a posição da memória em que os dados recebidos serão salvos.

7.5.2 Programação em ladder para receber uma variável

Para que a cada 500ms seja feita a leitura do valor da variável associada ao botão Stop
do CLP seguinte (e mostrá-lo utilizando-se a luz Q6) é necessário adicionarmos as variáveis
auxiliares apresentadas na Tabela 7.2.
O trecho lógico responsável pelo recebimento periódico das informações do segundo CLP
é apresentado na Figura 7.6. Observe que foi feito uso de um temporizador TON configurado
para gerar um atraso de 500 ms na saída em relação à entrada. Na saída do temporizador
encontramos a tag ”Recebe”, a qual é responsável por solicitar a leitura do segundo CLP. ”Recebe”
7.5 Lendo o botão Stop do CLP seguinte – 32 –

Tabela 7.2: Variáveis a serem adicionadas no CLP 1 para uso do GET.


Name Address Data Type
Recebe %M0.0 Bool
GET_OK %M0.1 Bool
GET_NOK %M0.2 Bool
Tag_a_Receber_Q6 %M51.0 Bool
Luz_Q6 %Q2.6 Bool

é reiniciada assim que for recebido alguma mensagem de retorno, seja de erro (”GET_NOK”) ou
de confirmação (”GET_OK”). Por fim, é associado o valor recebido (”Tag_a_Receber”) à saída
responsável pela Luz Q6.

Figura 7.6: Programação em ladder para recebimento de informação usando o bloco GET.
Capítulo 8 - Configuração de Sinóticos em SCADA

O objetivo desta experiência é aprender a usar o ambiente TIA-Portal para configuração de


interface humano-máquina no painel de operação inteligente (IHM) KTP700 Basic da SIEMENS.
Para isso deve-se construir um sinótico básico para monitorar e controlar os botões e luzes do
painel de operação das estações do Sistema Modular de Produção (MPS) do LAI.
Experimento 8
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle, tendo em anexo a programação em ladder
impressa pelo TIA-Portal.
1. Configure um projeto com o CLP e a IHM da respectiva estação interligando-os
pela rede Profinet/Industrial Ethernet;
2. Programe o CLP para acender a luz Q1 por 10 s quando apertar o botão ”Start”,
de modo que essa luz seja apagada antes desse prazo assim que o botão ”Stop” for
apertado;
3. Configure uma tela de supervisão que permita monitorar na IHM o estado da luz
Q1;
4. Adicione um botão na tela da IHM para comandar remotamente o acionamento do
botão ”Start”;
5. Configure um sinótico na IHM que represente um painel remoto que emule o
comportamento dos botões ”Start” e ”Stop” e da luz Q1;
6. Adicione um campo que mostre o valor do tempo em que a luz Q1 está acesa, com
atualização a cada centésimo de segundo;
7. Crie um gráfico de tendência para o tempo em que a luz Q1 permanece acesa.

8.1 Configurando a Rede de Dispositivos – 34 –

8.1 Configurando a Rede de Dispositivos

Primeiramente, criamos um novo projeto e adicionamos os dispositivos a serem utilizados.


Insira primeiramente o CLP S7-1200 conforme nos experimentos anteriores, lembrando de alterar
os endereços I/O, e em seguida adicione também a IHM do modelo KTP700 pelo caminho HMI >
Sismatic Basic Panel > 7” Display > KTP700 Basic > 6AV2 123-2GB03-0AX0. Após adicionar
ambos, vá a aba Devices & network e insira uma conexão entre os dispositivos conforme a Figura
8.1.

Figura 8.1: Comunicação entre CLP e IHM.

8.2 Programando o CLP

Feita a configuração dos dispositivos, programamos um simples programa no CLP para


posteriormente interagirmos com a IHM. Como se trata de um programa simples podemos cria-
lo diretamente no bloco ’main’ do CLP. Para este programa inserimos inicialmente 3 tags para as
entradas dos botões ”Start” e ”Stop” e para a saída ”luz_Q1”. Em seguida implementamos o uso
de algum temporizador para garantir que, após acionarmos ”Start”, a saída permaneça acionada
somente por 10 segundos ou até o acionamento do botão ”Stop”. Uma possível abordagem a
fazer com que ”Start” energize o contato Set da saída e que está por efeito cascata acione um
temporizador do tipo ”TON”, o qual ao energizar a sua saída realiza o Reset de ”Luz_Q1”,
conforme a Figura 8.2. Adicionamos também em paralelo ao temporizador o comando do botão
”Stop”.
Tabela 8.1: Variáveis adicionadas ao CLP.
Name Address Data Type
Botao_Start %I2.0 Bool
Botao_Stop %I2.1 Bool
Luz_Q1 %Q2.2 Bool

8.3 Monitorando a luz Q1 pela IHM

Tendo o CLP programada, implementaremos então na IHM algo que nos permita monitorar
o estado atual da saída ”Luz_Q1”. Para isto, insira uma nova tela em HMI > Screens > Add
8.3 Monitorando a luz Q1 pela IHM – 35 –

Figura 8.2: Lógica de controle da Luz_Q1 inserida no CLP.

new screen. Nesta nova tela insira algum objeto básico que nos permita apresentar o estado da
”Luz_Q1”, pode sem um círculo ou um retângulo presentes em Toolbox > basic objects. Para
sinalizar o significado deste objeto podemos inserir um bloco de texto neste objeto, também
presente em basic objects.

Figura 8.3: Objeto para monitorar a Luz_Q1 inserida pela IHM.

Neste momento já temos implementada a parte gráfica do nosso objeto, algo semelhante
8.4 Adicionando comandos na IHM – 36 –

à Figura 8.3. No entanto, este ainda não se encontra configurado para que sinalize alterações
geradas pelo programa anteriormente implementado no CLP. Para isto precisamos primeiramente
criar uma Tag que atrelaremos a este objeto. Então, na aba tags criamos a tag ”Luz_Q1” com
a configuração da Tabela 8.2 relacionando ela à saída do CLP. Observe que a tag da IHM é
configurada para receber diretamente o valor da tag do CLP.
Tabela 8.2: Variável adicionadas à IHM.
Name Data Type Connection PLC name PLC tag
Luz_Q1 Bool HMI_Connection_1 PLC_1_Distributing Luz_Q1

Por fim, devemos atrelar o objeto criado a esta tag. Para isto, retornamos a aba Screens,
selecionamos o objeto em Animation > Display adicionamos uma nova animação do tipo Ap-
pearance. Atrelamos a esta animação a tag ”Luz_Q1”, inserimos dois estados possíveis (0 e
1) e configuramos para cada um destes a cor que desejamos que o objeto assuma. No exemplo
da Figura 8.4 configuramos o objeto para apresentar preenchimento na cor branca quando a luz
estiver desligada e cor amarela para representar o acionamento da Luz Q1.

Figura 8.4: Configuração de efeito para o objeto da Luz_Q1.

8.4 Adicionando comandos na IHM

Na etapa anterior inserimos um objeto para tornar possível monitorarmos o estado de uma
variável do sistema real. Agora vamos fazer o oposto, utilizar um elemento da IHM para controlar
o comportamento do sistema real. Para isto podemos inserir um botão em nossa tela, disponível
em Toolbox > Elements no menu à direita. Insira este na posição desejada da tela e então e
configure o seu texto e dimensões desejadas. Ao selecionar o botão, na aba propriedades, é
possível também definir configurações quanto à aparência deste, como por exemplo, definir uma
cor sólida ou gradientes de cor. Uma possível configuração para os botões ”Start” e ”Stop” é
apresentada na Figura 8.5.
Assim como foi feito com o sinótico da Luz_Q1, para os botões também é necessário
configurarmos Tags a serem associadas aos elementos inseridos na tela, possibilitando assim
8.4 Adicionando comandos na IHM – 37 –

Figura 8.5: Objetos do tipo botão para acionamentos via IHM.

a sua utilização para o controle de variáveis. Conforme a Tabela 8.3, criamos duas novas
Tags chamadas ”Botão_Remoto_Start” e ” Botão_Remoto_Stop” e associamos com variáveis de
mesmo nome também configuradas na memória do CLP, vide Tabela 8.4.

Tabela 8.3: Variável dos botões adicionados à IHM.


Name Data Type Connection PLC name PLC tag
Botao_Remoto_Start Bool HMI_Conn... PLC_1_Dis... Botao_Remoto_Start
Botao_Remoto_Stop Bool HMI_Conn... PLC_1_Dis... Botao_Remoto_Stop

Tabela 8.4: Variáveis dos botões de comando remoto no CLP.


Name Address Data Type
Botao_Remoto_Start %M10.0 Bool
Botao_Remoto_Stop %M0.0 Bool

Feita a configuração das Tags, precisamos associa-las aos botões inseridos na nossa tela.
Desta vez, por serem elementos de saída, a configuração é feita na aba Events, onde é possível
adicionarmos diversos tipos de eventos atrelados ao botão. No nosso caso desejamos que seja
feita a troca do valor de um bit ao pressionar o botão, então uma possível opção é, na aba Press,
adicionarmos uma nova função System functions > Edit bits > SetBitWhileKeyPressed e então
8.5 Apresentação de valores contínuos – 38 –

configurar a Tag correspondente ao botão selecionado. A Figura 8.6 destaca o painel para estas
configurações.

Figura 8.6: Configuração do botão Start.

Por fim, para que o acionamento destes botões afetem o comportamento do sistema real,
ainda é necessário implementarmos a ação destes no programa do CLP. Portanto, selecionamos
novamente o bloco ”main” do CLP e adicionamos os comandos oriundos da IHM em paralelo
aos seus respectivos contatos dos botoes físicos, semelhante ao apresentado na Figura 8.7.

Figura 8.7: Lógica de controle com controle pela IHM.


8.5 Apresentação de valores contínuos – 39 –

8.5 Apresentação de valores contínuos

Nesta etapa o objetivo é monitorar o tempo em que a Luz_Q1 permanece acessa, sendo
portanto necessário utilizarmos variáveis contínuas. Para tal, vamos primeiramente obter tal
informação do CLP por meio de uma variável auxiliar atrelada ao nosso contador. Criamos
então uma Tag do tipo DInt, atrelada à memória %MD20 e com o nome ”tempo”. Então
inserimos esta à saída do contador, conforme a Figura 8.8.

Figura 8.8: Lógica de controle com controle pela IHM.

Em seguida, adicionamos uma cópia desta variável na memória da IHM e na coluna


Aquisition cycle alteramos o ciclo te atualização para 100 ms. Já na nossa tela, inserimos um
novo elemento do tipo I/O field, conforme Figura 8.9, e configuramos este com a quantidade de
casas decimais desejadas.

Tabela 8.5: Variável dos botões adicionados à IHM.


Name Data Type Connection PLC name PLC tag Aquisition cycle
temp DInt HMI_Conn... PLC_1_Dis... tempo 100 ms

Para atrelar este elemento à nossa Tag ”tempo” é necessário configurarmos esta em Pro-
perties > General > Process > Tag, assim como em Annimations > Tag connections > Process
value. A Figura 8.10 apresenta esta configuração para a utilização da variável ”tempo” criada.
8.6 Apresentação de gráficos – 40 –

Figura 8.9: Campo de variável contínua na IHM.

Figura 8.10: Configuração da variável contínua ”tempo” na IHM.


8.6 Apresentação de gráficos – 41 –

8.6 Apresentação de gráficos

Como última tarefa deste experimento, vamos inserir em nossa IHM um gráfico para melhor
visualização do comportamento da Luz_Q1 com o passar do tempo. para isto, vá na aba Toolboc
> Control à direita, e selecione elemento Trend view e o adicione à nossa tela, veja a Figura
8.11.

Figura 8.11: Elemento para visualização de gráfico na IHM.

Então, altere as propriedades do gráfico conforme achar interessante e associe a variável


”tempo” como tendência a ser apresentada no gráfico. Para isto, selecione Properties > Trend >
Add new e configure conforme apresentado a seguir na Figura 8.12.

Figura 8.12: Configuração do gráfico de tendências da IHM.


Capítulo 9 - Configuração de Alarmes e Relatórios em
SCADA

O objetivo desta experiência é aprender a usar o ambiente TIA-Portal para configuração de


um Sistema Supervisório (SCADA) através do ambiente WinCC da SIEMENS e construir um
sinótico, uma interface para monitoramento de alarmes, armazenamento em banco de dados e
geração de relatórios para o Sistema Modular de Produção (MPS) do LAI.
Experimento 9
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle, tendo em anexo a programação em ladder
impressa pelo TIA-Portal.
1. Baixe do Moodle a solução do professor para a Experiência 8, configure os IPs do
projeto para a IHM e o CLP da sua estação, e teste o sistema;
2. Adicione ao projeto um PC com um sistema supervisório WinCC RT Advanced
interligando-o com os demais dispositivos pela rede Profinet/Industrial Ethernet;
3. Configure uma tela do SCADA semelhante ao sinótico feito para a IHM;
4. Adicione à tela um botão ”X” que encerre a aplicação de supervisão;
5. Crie uma interface de monitoramento que apresente uma mensagem de alarme
analógico de aviso (Warning) para indicar que faltam 2 segundos para apagar a
luz automaticamente;
6. Adicione um alarme discreto de aviso (Warning) para indicar que a luz Q1 está
acesa;
7. Adicione um alarme discreto de erro (Error) para chamar a atenção do operador
quando a luz for desligada antes do tempo. Esse alarme deve permanecer ativo até
que o operador faça o seu reconhecimento (Acknowledgement) pela interface do
SCADA;
8. Crie um arquivo (log) do tipo ”.csv” que armazene as informações dos 500 últimos
alarmes ocorridos no sistema. Visualize os dados num editor de planilhas;
9. Adicione um botão no SCADA que imprima um relatório em arquivo ”.pdf” com
todos os alarmes registrados no log.

9.1 Baixe a solução do experimento 8 – 43 –

9.1 Baixe a solução do experimento 8

A solução do experimento 8 deve ser usada com o objetivo de se ter um ponto de partida. É
importante notar que o IP do CLP do projeto deve ser alterado para corresponder ao da bancada
de cada equipe.

9.2 Adicionando um PC à rede de dispositivos

Na solução do experimento 8 temos presente em nossa rede somente o CLP e a IHM, sendo
necessário para este experimento a inclusão de um PC com sistema supervisório. Para tal, utilize
a aba Add new device e selecione o dispositivo PC Systems > PC general > PC station e o
adicione ao sistema.
Para utilizarmos este dispositivo é necessário incluirmos dois módulos, PROFINET/Ether-
net para a comunicação e o softwareWinCC RT Advanced para funcionamento do Supervisó-
rio. Estes estão disponíveis na aba Hardware catalog à direita em Communication modules >
PROFINET/Ethernet > IE general e em SIMATIC HMI application > WinCC RT Advanced res-
pectivamente. Insira estes conforme a Figura 9.1 e realize aconexão com os demais dispositivos
da rede de como apresentado na Figura 9.2.

Figura 9.1: Inserção de módulos no dispositivo PC.

Figura 9.2: Configuração da rede de dispositivos.


9.3 Configurando tela SCADA – 44 –

9.3 Configurando tela SCADA

Para inserir uma nova tela em nosso supervisório SCADA, o processo é o mesmo de criação
de telas para a IHM. Basta selecionar o dispositivo PC-System e adicionar uma nova tela em HMI
RT(WinCC RT Advanced) > Screens. Nesta adicione os botões, os sinalizadores de estado e de
tempo de acionamento da Luz_Q1 e o gráfico. O resultado deve ser algo semelhante à Figura
9.3. Insira as Tags e configure os elementos da mesma forma que foi feito no Capítulo anterior.

Figura 9.3: Supervisório SCADA.

9.4 Adição de botão de encerramento do Supervisório

Observe na Figura 9.3 que inserimos no canto superior direito um botão ”sair” para permitir
ao usuário finalizar a execução do supervisório SCADA. Para realizar tal objetivo, insira um
elemento do tipo Button e configure um novo evento do tipo StopRuntime na aba de eventos
tipo Press.

9.5 Alarme contínuo

Criados os elementos necessários para controlar e monitorar o funcionamento padrão do


sistema, vamos agora adicionar um visualizador de alarmes que nos permita identificar condições
indesejadas. Para isto, selecione o elemento Alarm view presente em Toolbox > Controls e o
posicione na tela de forma que facilite a visualização do usuário, veja a Figura 9.4. Em seguida,
configure os tipos de alarmes que gostaria de apresentar em Display, presente na aba Properties
> Generals.
Agora que já possibilitamos a visualização dos alarmes identificados pelo supervisório,
9.6 Alarme discreto de Aviso e de Erro – 45 –

Figura 9.4: Visualizador de alarmes.

vamos criar os tipos de alarmes que desejamos atrelar ao funcionamento do sistema. Comecemos
por criar um alarme variável responsável por sinalizar que restam apenas 2 segundos até que a
Luz Q1 seja desligada. Para tal, podemos seguir os seguintes passos:
1. Crie uma Tag ”tempo” de tipo DInt e atrele ela à variável ”tempo” do CLP;
2. Nas opções do supervisório SCADA, abra o Editor de Alarmes clicando em "HMI alarms";
3. Na Aba "Analog alarms"crie um alarme conforme a Figura 9.5, observe que foi configurado
um limite de do tipo Higher com valor 8000. Portanto o alarme é acionado assim que a
variável ”tempo” apresentar valores superiores a 8000;

Figura 9.5: Configuração de alarme analógico.

4. Teste a implementação realizando uma simulação e verificando se o alerta de que faltam 2


segundos para terminar o tempo é mostrado no bloco Alarm View.

9.6 Alarme discreto de Aviso e de Erro

Nessa sessão vamos exemplificar a criação de dois tipos de alarmes discretos, um com
"reconhecimento"(acknowledgement) do operador e outro sem reconhecimento. O alarme de
aviso (sem reconhecimento) será responsável por sinalizar que a luz Q1 se encontra acesa e o
alarme de erro (com reconhecimento) sinalizará que a luz Q1 foi desligada antes do decorrer de
10 segundos.
9.6 Alarme discreto de Aviso e de Erro – 46 –

9.6.1 Variáveis de alarme

Para gerenciar a ocorrência dos alarmes discretos é necessária a utilização duas variáveis
auxiliares de tipo Word (16 bits)), apresentadas na Tabela 9.1. Chamamos uma destas de
ALARMES, responsável por desencadear a ocorrência de alarmes, cada bit representando um
possível alarme. A outra variável criada chamamos de RECONHECIMENTOS, permitindo
assim transmitir ao CLP interações do usuário com o supervisor por uma única variável.

Tabela 9.1: Variáveis de controle de Alarmes (SCADA).


Name Data Type Connection PLC name PLC tag
ALARMES Word HMI_Con.. PLC_1. ALARMES
RECONHECIMENTOS Word HMI_Con.. PLC_1 RECONHECI..

Para que possamos realizar a interação entre o CLP e os alarmes do supervisório, é necessário
adicionarmos também as seguintes variáveis na tabela de Tags do CLP:

Tabela 9.2: Variáveis de controle de Alarmes (CLP).


Name Address Data Type
ALARMES %MW50 Word
Alarme_Q1 %M51.0 Bool
Alarme_Stop %M51.1 Bool
RECONHECIMENTOS %MW52 Word
Rec_Stop %M53.1 Bool

9.6.2 Posicionamento dos endereços de memória

Agora que essas variáveis foram criadas, vamos explicar a lógica que justifica o endereça-
mento das memórias escolhidas. Considere que escolhemos o endereço de memória X (MWX)
para a variável ALARMES (no exemplo anterior, o endereço escolhido foi 50, MW50). Como se
trata de uma variável do tipo word, 16 bits (2 bytes) de memória são reservados a essa variável,
ou seja, os bits X.0, X.1, X.2, . . ., X.6, X.7, X+1.0, X+1.1, . . ., X+1.7 (50 no lugar de X e 51 no
lugar de X+1 no exemplo anterior) são reservados a essa variável.
Como dito anteriormente, para a construção de alarmes discretos no ecossistema SIEMENS
é necessário escolher variáveis do tipo word (ou também int ou Uint) de 16 bits. Nestas,
configuramos os alarmes para ocupar posições (bits) específicas, onde se dará o sinal de alarme.
Para que a posição correta seja escolhida, é necessário entender como esses espaços de
memória são organizados no ambiente SIEMENS. Para tanto, considere a Tabela 9.3. A primeira
coluna representa um dos bytes e as demais os endereços de memória booleanos associados a
cada byte.
Observe que ao separarmos os a variável em dois bytes, o primeiro (X) possui representa
a parcela mais significativa, enquanto o segundo byte (X+1) equivale à parte menos significa-
9.6 Alarme discreto de Aviso e de Erro – 47 –

Tabela 9.3: Posições de memória.


0 1 2 3 4 5 6 7
X m8 m9 m10 m11 m12 m13 m14 m15
X+1 m0 m1 m2 m3 m4 m5 m6 m7

tiva. A ordem crescente do índice das variáveis mi , i ∈ {0, . . . , 15} corresponde à ordem de
“significância” dos bits que formam a palavra X, ou seja, a palavra X é escrita da seguinte forma:

X.7 X.6 X.5 X.4 X.3 X.2 X.1 X.0


m15 m14 m13 m12 m11 m10 m9 m8

(X+1).7 (X+1).6 (X+1).5 (X+1).4 (X+1).3 (X+1).2 (X+1).1 (X+1).0


m7 m6 m5 m4 m3 m2 m1 m0

Assim, a posição dos bits que ocupam a palavra X vai de 0 a 15. Por exemplo, a posição 2
corresponde ao endereço (X+1).2, enquanto que a posição 14 corresponde ao endereço X.6 (no
exemplo anterior, endereços 51.2 e 50.6, respectivamente).

9.6.3 Programação em Ladder

Uma vez criadas as Tags, é necessário alterarmos a programação do CLP de forma a


sinalizarmos os alarmes ao sistema supervisório. Para isto, adicionamos a lógica apresentada na
Figura 9.6 ao bloco principal do CLP.

Figura 9.6: Lógica ladder para implementação de alarmes discretos.


9.7 Relatório em arquivos csv e pdf – 48 –

É importante notar que, diferentemente do alarme analógico, que simplesmente compara


os valores de uma variável “analógica”, a lógica dos alarmes discretos precisa ser adicionada à
programação em Ladder do código de controle, como foi ilustrado nesta seção.

9.6.4 Configuração dos alarmes discretos na IHM

Após criados os alarmes discreto e suas respectivas variáveis na tabela de Tags, é necessário
configurar esses alarmes na interface SCADA. Isto pode ser feito no editor de alarmes, em HMI
Alarms. Neste experimento, vamos criar dois alarmes, um com reconhecimento do operador,
correspondendo à parada forçada do sistema (pressionar do botão Stop) e outro sem reconheci-
mento do operador, alarme que indica que a luz Q1 foi acionada. Assim, a tabela de criação de
alarmes fica como a que é apresentada a seguir.

ID Alarm Text Alarm class Trigger Tag Trigger bit Trigger address
1 Luz acesa Warning ALARMES 0 ALARMES.x0
2 Parada Forçada Error ALARMES 1 ALARMES.x1

ID HMI ack.. tag HMI ack.. bit HMI ack.. address


1 <no tag> 0
2 RECONHECIMENTOS 1 RECONHECIMENTOS.x1

É importante que se marque a opção de mostrar essas variáveis no relatório, selecionando-se


a opção Report em ambos alarmes. Para que o reconhecimento do alarme discreto de parada
forçada seja implementado, é necessário configurar o botão de reconhecimento do Visualizador
de Alarmes (Alarm view). Isso é feito nas propriedades desse elemento, em Properties > Toolbar
> Acknowledge. Uma vez que a caixa correspondente seja preenchida, o botão de reconhecimento
é adicionado ao Visualizador de Alarmes na posição inferior direita, como ilustrado na Figura
9.7.

Figura 9.7: Botão de reconhecimento de alarmes.


9.7 Relatório em arquivos csv e pdf – 49 –

9.7 Relatório em arquivos csv e pdf

É possível criar relatórios acerca dos alarmes que foram disparados durante a operação do
sistema. Esses relatórios podem ser salvos em uma tabela, como um banco de dados, ou em um
arquivo em PDF de resumo da operação. Para produzir relatórios dos alarmes identificados pelo
sistema supervisório, basta seguir o seguinte passo a passo:.
1. No editor de dados históricos do supervisório SCADA (WinCC RT Advanced > Historical
Data) crie um registro de alarmes (Alarm log) com a seguinte configuração:

Name Number of data records per log Storage location


Alarm_log_1 500 CSV file (ASCII)

Path Log event text and error location Logging method


C:\Logs Circular log

2. No editor de alarmes (HMI alarms) certifique-se de que os alarmes errors/warnings devem


estar com o Report selecionados a fim de que os alarmes sejam logados;
3. Para que o relatório seja criado, é necessário configurá-lo no editor de relatórios (Reports);
4. Crie um novo relatório e neste, adicione o Alarm View que fica na biblioteca de controles,
controls e configure-o para que esse relatório seja formado com base no registro de alarmes
criado no passo 1. Isso é feito seguindo-se o caminho Properties > General > Settings e
selecionando como fonte Source o Alarm log e em Alarm log deve ser inserido o registro
de alarmes criado no passo 1, que, caso o nome padrão não tenha sido modificado, é
chamado de Alarm_log_1. A Figura 9.8 demonstra tal configuração:

Figura 9.8: Configuração do histórico de alarmes.

5. Em seguida, na tela do supervisório, adicione um botão com o texto Relatório de alarmes;


6. Crie para esse botão um evento do tipo Press da seguinte forma: Press > Print > Print
Report e selecione o relatório criado no passo 3.
Capítulo 10 - OPC

O objetivo desta experiência é introduzir os conceitos de comunicação entre o CLP e


aplicativos do PC através do protocolo OPC.
Experimento 10
Os alunos de cada turma deverão se organizar em seis equipes, uma para cada estação
de manufatura do MPS. Cada equipe deve executar a sequência de tarefas a seguir e
entregar em forma de relatório pelo Moodle, tendo em anexo a programação em ladder
impressa pelo TIA-Portal.
1. Baixe do Moodle a solução do professor para a Experiência 9 e o arquivo
opc_start_wait_stop.py, configure os IPs do projeto para o CLP da sua estação
e para o seu PC, e teste o sistema;
2. Edite o programa do CLP, adicionando uma Tag para definir o tempo de referência
(PT) de acendimento da luz Q1. Essa Tag deve iniciar com o valor de 10s. A seguir,
insira um I/O Field para editar essa Tag a partir da tela do SCADA;
3. Ative o servidor OPC no Runtime do SCADA e visualize os dados pelo programa
MatrikonOPCExplorer;
4. A partir do programa de exemplo (opc_start_wait_stop.py) crie um programa que,
mostre o tempo de referência atual no console do Python, solicite ao usuário um
novo tempo de referência e, então, acenda a Luz Q1 automaticamente, mostrando o
tempo restante de 100ms em 100ms no console do Python até que a luz se apague.

10.1 Baixe o material complementar – 51 –

10.1 Baixe o material complementar

Para termos um ponto de partida, baixe do moodle a solução do experimento 9 e o arquivo


opc_start_wait_stop.py. Lembre-se de alterar as configurações de IP para as referentes ao CLP
da sua bancada e de seu Computador.
Juntamente aos arquivos estão também disponibilizados um instalador para utilização de
Python em Windows e o instalador do pacote OpenOPC para a utilização do protocolo OPC entre
o programa desenvolvido em Python e o nosso sistema supervisório.

10.2 Inserindo variável de controle do tempo de acionamento

Nesta etapa, vamos alterar o programa do experimento 9 para que seja possível controlar o
tempo de acionamento da luz Q1 através de uma variável. Para tal, primeiramente adicionamos
uma nova Tag à memória do CLP contendo a configuração da Tabela 10.1.

Tabela 10.1: Variável de referência para tempo de acionamento da lu Q1.


Name Address Data Type
Referencia %MD30.0 DInt

Para que está variável inicie com o valor de 10 segundos é necessário criarmos um novo
bloco do tipo Startup e por meio desta realizar a atribuição do valor. Está atribuição pode ser
feita de diferentes formas, é possível utilizar o operador MOVE caso o bloco Startup seja criado
na linguagem Ladder. Outra opção seria criar este bloco com a linguagem de Texto Estruturado
(SCL) e inserir o comando:
"Referencia" := 10000;

Por fim, é solicitado que seja adicionado ao supervisório SCADA a opção de definir o valor
de referência. Portanto, também criamos a Tag ”Referencia” no supervisório e atrelamos esta
a sua semelhante do CLP. Feito isto, inserimos à tela do supervisório um elemento I/O Field
conforme destacado na Figura 10.1. Nas propriedades do elemento adicionado, em Properties
> General > Type, alteramos seu modo de funcionamento para Input/Output permitindo a
este tanto, realizar alterações da variável do CLP, assim como, visualizar alterações realizadas
diretamente no CLP. É necessário também, em Animations > Tag connections, criar uma nova
animação do tipo Process value e configurar esta com a tag ”Referencia”.

10.3 Ativando o servidor OPC

Para ativar a utilização do protocolo OPC pelo supervisório SCADA, utilize o menu PC-
System > HMI_RT_2 > Runtime Settings. Neste, na aba Services, selecione a opção Operate as
OPC server, conforme a Figura 10.2.
10.3 Ativando o servidor OPC – 52 –

Figura 10.1: Campo para visualização de alteração da Referência de tempo.

Figura 10.2: Configurando utilização do protocolo OPC.

Após configurar o supervisório SCADA para funcionar com o protocolo OPC, execute todo
o sistema e pelo programa MatrikonOPC Explorer visualize os dados sendo transmitidos. Este
programa pode ser obtido em MatrikonOPC Downloads. Instale-o e o execute em paralelo ao
sistema supervisório SCADA. Observe na Figura 10.3, que encontra-se disponível a conexão
OPCSimaticHMI, selecione esta e siga os seguintes passos:
1. Se conecte ao servidor OPC;
2. Clique me ”Adicionar itens ao servidor OPC selecionado”;
3. Defina um nome ao grupo, por exemplo, ”SCADA”;
10.4 Criando programa em Python para controle do CLP – 53 –

4. Selecione as variáveis que deseja visualizar;


Feitas estas configurações, realize alterações da variável ”Referencia” pelo supervisório
SCADA, assim como comandos ”Start” e ”Stop”, e verifique pelo programa Matrikon a alteração
das variáveis atreladas ao protocolo OPC.

Figura 10.3: Monitorando protocolo OPC pelo Matrikon OPC explorer.

10.4 Criando programa em Python para controle do CLP

Por meio do protocolo OPC é possível realizarmos a troca de dados entre programas
desenvolvidos em diferentes plataformas, como por exemplo, entre um script Python e o CLP
anteriormente configurado. Conforme solicitado, nesta atividade tem-se o objetivo de realizar
a visualização do atual tempo de referência, atualiza-lo, inicializar a execução da Luz Q1 e
por fim acompanhar seu tempo restante de acionamento, tudo isto por meio de um programa
desenvolvido em Python.
Para o desenvolvimento de tal programa, foi disponibilizado no moodle um código inicial
(opc_start_wait_stop.py). Neste está disponível um exemplo de como realizar a inicialização
de um cliente OPC, escrita de uma variável e finalização do cliente. Com base neste código é
possível desenvolvermos a interface desejada. A seguir apresentamos uma possível solução em
script desenvolvido em Python para realizar tal interface com o sistema supervisório.
# TEST OPC - START, WAIT AND STOP FUNCTION

import OpenOPC
from time import sleep
10.4 Criando programa em Python para controle do CLP – 54 –

opc = OpenOPC.client()

opc.connect(’OPC.SimaticHMI.CoRtHmiRTm’)

pt = opc.read(’Referencia’)
print(’Tempo␣de␣Preset:␣’+str(pt[0]))

npt = input(’Digite␣o␣novo␣tempo␣em␣ms:’)
opc.write((’Referencia’,npt))
opc.write((’Botao_Remoto_Start’,1))
sleep(0.1)
opc.write((’Botao_Remoto_Start’,0))
sleep(0.1)
et = opc.read(’tempo’)
while et[0] > 0:
print(’Tempo␣decorrido:␣’+str(et[0]))
sleep(0.1)
et = opc.read(’tempo’)
opc.close()

Após desenvolvido o código, inicialize todo o sistema envolvendo CLP, IHM e supervisório
SCADA e em seguida execute o script em Python. Então basta verificar se é apresentado no
prompt de comando o valor da variável ”referencia”, definir um novo valor e conferir se a luz Q1
se mantém acessa pelo tempo atribuido.

10.4.1 Instalando Python e package OpenOPC

Caso não tenha o interpretador Python instalado em seu computador, basta seguir o passo
a passo disponível em Python3 for Windows. Após realizar todos os passos e verificar que o
Python e pip foram adequadamente instalados, temos de instalar o pacote referente ao protocolo
OPC.
pip install OpenOPC-Python3x
pip install pywin32

É indicado desativar seu antivírus, pois este pode gerar erro durante a instalação do pacote.
Para que o pacote OpenOPC funcione corretamente, é necessário também instalar o pywin32 e
então copiar os arquivos gerados em pywin32_system32 para a pasta C:/
Após instalado o pacote OpenOPC, pode ser necessária a reinicialização do computador
para que este seja reconhecido pelo sistema.

Você também pode gostar