Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Engenharia
Engenharia de Controle e Automação
CADERNO DE ANOTAÇÕES
Outubro de 2017
SUMÁRIO
Anotações:
Aula 1
História da Informática Industrial
Anotações:
• Primeiros Controladores Lógico–Programáveis (CLPs)
⇒ Eram grandes e relativamente caros.
· Competitivos apenas para substituir pelo menos 150 relés.
Anotações:
• Pergunta Anotações:
⇒ Imagine esse mecanismo encapsulado em uma caixa plástica.
· Quantos terminais elétricos essa caixa possui?
Anotações:
• Representações Esquemáticas
⇒ Nos projetos de sistemas elétricos, duas formas são usadas:
⇒ Exemplo:
Anotações:
• Resposta
⇒ Existe uma grande variedade de relés no mercado.
· De diversos tamanhos e com diversas configurações
de contatos.
Anotações:
• Diagramas para Lógicas de Controle Automático
⇒ Sı́mbolos padronizados são usados para representar diferentes
elementos, como:
• Exemplo Anotações:
⇒ Um reservatório deve ser automatizado por meio de um
circuito de controle On/Off. Considere a vazão de entrada
constante e os materiais disponı́veis listados a seguir:
· LS1 – Chave de nı́vel baixo [NF]; · SS1 – Chave seletora;
· LS2 – Chave de nı́vel alto [NF]; · VS1 – Válvula de saı́da [NF];
· CR1 – Relé (com um contato NA e um contado NF);
· CR2 – Relé (com um contato NA e um contado NF);
· CR3 – Relé (com um contato NA e um contado NF).
• Solucionando... Anotações:
Considerar
Não Sim como
impossı́vel
Manter
Sim Não último
estado
• Solucionando... Anotações:
• Resposta Anotações:
Anotações:
• Considerações Finais
⇒ Os relés eletromecânicos são utilizados a bastante tempo na
implementação de sistemas industriais de controle On/Off.
⇒ Entretanto, alguns pontos negativos sempre existiram:
· Grande complexidade da fiação em sistemas com muitos
relés (tanto para o projeto como para manutenção);
· Pouca flexibilidade para mudanças (qualquer modificação
implica refazer projetos, testes e documentação);
· Ocupam um grande espaço dentro dos painéis.
⇒ Assim, a partir de 1970, os relés vêm perdendo cada vez
mais espaço para os CLPs e outros tipos de controladores
microprocessados.
Anotações:
• Considerações Finais
⇒ No entanto, CLPs substituem apenas os Circuitos de Controle.
⇒ Os relés continuam sendo utilizados nos Circuitos de Potência.
· Se pensarmos no último cenário mostrado:
Anotações:
Anotações:
Aula 2
Conceitos Fundamentais Sobre CLPs
• Hardware
Anotações:
⇒ A maioria dos CLPs possui hardware modular.
· Mais comuns: fonte, CPU e cartões de entradas e saı́das.
⇒ Além disso, existem módulos mais especializados, por exemplo:
· Módulos que permitem a comunicação por protocolos
não previstos originalmente (incluindo SMS e GPRS).
Anotações:
• Entradas e Saı́das (Input e Output, ou simplesmente I/O)
⇒ Os sinais de I/O podem ser binários ou decimais.
⇒ As denominações a seguir são bastante comuns:
· Entradas Digitais – Para sensores como chaves de nı́vel
e fluxostatos ou interfaces como botoeiras e seletores;
· Saı́das Digitais – Para atuadores como solenóides e
contatores ou interfaces como lâmpadas e sirenes;
· Entradas Analógicas – Para medidores contı́nuos como
de nı́vel e vazão ou interfaces como potenciômetros;
· Saı́das Analógicas – Para atuadores como válvulas
proporcionais e inversores de frequência ou interfaces
como displays do tipo bargraph;
Anotações:
• Exemplo
⇒ Considere o programa a seguir e responda: quando tivermos
a situação IN P 1 = IN P 2 = 1, qual será o comportamento
do sinal elétrico na saı́da OU T 1?
· Trecho 1 (8ms)
· Se (IN P 1 = 1) → Set(OU T 1)
· Trecho 2 (4ms)
· Se (IN P 2 = 1) → Reset(OU T 1)
· Trecho 3 (8ms)
Anotações:
• Aplicações
⇒ Atualmente, pode-se dizer que os CLPs “movem” os processos
produtivos na maioria das indústrias do planeta.
⇒ Pode-se encontrá-los em plantas de pequeno à grande porte e
em diversos tipos de indústria, como:
· Têxtil · Farmacêutica
· Alimentı́cia · Metalúrgica e Siderúrgica
· Celulose · Quı́mica e Petroquı́mica
· Vidreira · etc
Anotações:
• Vantagens
⇒ O vasto uso dos CLPs pode ser explicado pelas diversas
vantagens oferecidas por esses equipamentos, dentre elas:
· São relativamente pequenos e consomem pouca energia;
· Ótima confiabilidade (poucos defeitos);
· São expansı́veis, permitindo a inclusão de novos módulos;
· Fácil reprogramação (reaproveitamento de hardware);
· Comunicam via rede com diversos outros dispositivos;
· Pode-se fazer alterações no programa sem interromper
o processo produtivo;
· Desenvolvedores podem acumular trechos de programas
e formar uma biblioteca.
Anotações:
Anotações:
• Memória RAM
⇒ Como mencionado anteriormente, o uso é compartilhado:
· Algumas áreas são exclusivamente utilizadas pelo S.O.
· Outras são exclusivas para o armazenamento de valores
produzidos e consultados pelo programa do usuário.
⇒ Existem ainda áreas de interação entre os dois:
· O S.O. disponibiliza valores para o programa do usuário.
· Vice–versa.
⇒ Veja o exemplo a seguir...
Anotações:
• Exemplo
⇒ Algumas subdivisões da memória RAM dos CLPs S7–1200,
fabricado pela Siemens, são identificas como:
· I – Entradas (digitais e analógicas);
· Q – Saı́das (digitais e analógicas);
· M – Exclusiva do usuário.
⇒ Pergunta: em quais áreas de memória ocorrem as interações
entre S.O. e programa do usuário citadas no slide anterior?
⇒ Dica: lembre-se do ciclo de funcionamento dos CLPs.
Formato
Unsigned Signed
Byte 0 a 255 −128 a 127
Word 0 a 65.535 −32.768 a 32.767
Double Word 0 a 4.294.967.295 −2.147.483.648 a 2.147.483.647
Formato
Floating Point
−3, 402823 · 10 a −1, 175495 · 10−38
38
Double Word
+1, 175495 · 10−38 a +3, 402823 · 1038
Anotações:
Aula 3
Programação com Diagrama Ladder:
Instruções Binárias e Decimais
Anotações:
• Relés Eletromecânicos (e uma Possı́vel Forma de Representação)
⇒ O sı́mbolo para a bobina é um cı́rculo.
· A letra “c” (de coil) pode estar presente ou não.
⇒ O sı́mbolo para o contato NA são duas linhas paralelas.
· Indicando um circuito aberto.
⇒ Para o contato NF, acrescenta-se a linha transversal.
· Indicando o fechamento dos terminais.
Anotações:
Anotações:
Anotações:
• Vantagens
⇒ O uso de um Diagrama Ladder virtual possibilita:
· Número praticamente irrestrito de contatos por relé;
· Ocupação de um pequeno espaço fı́sico;
· Diminuição dos cabos elétricos (as lógicas são virtuais);
· Fácil manutenção (monitorações amplas);
· Documentação simplificada (o programa é a própria documentação);
· Uso de outros elementos, além de bobinas e contatos.
Anotações:
• Caracterı́sticas
⇒ Uma bobina de Reset leva o bit associado a ela a nı́vel lógico 0
sempre que a lógica que a precede for verdadeira.
⇒ Para que esse bit seja levado a nı́vel lógico 1, outra instrução, como
uma bobina de Set, deve ser utilizada em outra parte do programa.
⇒ Os sı́mbolos para essas bobinas aparecem no exemplo a seguir.
· Controle de nı́vel com válvula de saı́da:
Anotações:
• Analogia com Linguagens Textuais
· Bobina de Set:
if I0.0 = 1 then
Q0.0 = 1;
· Bobina de Reset:
if I0.0 = 1 then
Q0.0 = 0;
· Bobina Simples:
if I0.0 = 1 then
Q0.0 = 1;
else
Q0.0 = 0;
Anotações:
• Outro Exemplo Simples
⇒ O motor M1 deve ser ligado pelo botão L1 e desligado por D1:
· Note que os endereços são simbólicos (e não posições de memória);
· Usa-se uma tabela para associar os sı́mbolos aos endereços.
• Conceitos Anotações:
⇒ Algumas vezes, além de se saber o estado de uma variável, é importante
detectar o instante em que ela muda de valor.
⇒ A detecção desse instante de comutação é denominada detecção de borda.
⇒ Borda de Subida:
· Ocorre quando a variável comuta de nı́vel baixo para nı́vel alto.
⇒ Borda de Descida:
· Ocorre quando a variável comuta de nı́vel alto para nı́vel baixo.
Anotações:
• Exemplo
⇒ O motor M1 deve ser ligado e desligado pelo botão B1:
· Se estiver desligado, um toque deverá ligar;
· Se estiver ligado, um toque deverá desligar.
Anotações:
• Comparadores
⇒ Dois valores são parametrizados na entrada.
· Esses valores podem estar contidos em duas posições de
memória ou um deles pode ser apenas uma constante.
⇒ Se o resultado da comparação for verdadeiro, a saı́da é ativada.
⇒ Em geral, existe um conjunto de instruções para cada tipo de
dado (e suas representações gráficas podem variar):
Anotações:
• Reflexão sobre Comparadores e Diagrama Ladder
⇒ Normalmente, os 6 tipos usuais de comparação estão
disponı́veis:
A == B A>B A >= B
A <> B A<B A <= B
Anotações:
• Conversores de Tipos de Dados
⇒ O bloco mostrado abaixo é o B I (Byte–To–Integer).
· O valor contido no byte especificado na entrada
é transferido para a word especificada na saı́da.
⇒ Existem diversos blocos similares, por exemplo:
Byte–To–Integer Integer–To–Byte
Integer–To–Double Double–To–Integer
Double–To–Real Real–To–Double (ROUND)
Anotações:
Anotações:
Aula 4
Programação com Diagrama Ladder:
Sub-Rotinas e Funções
Anotações:
• Na Aula Passada...
⇒ Instruções binárias:
· Bobinas;
· Contatos;
· Instruções “Set” e “Reset”;
· Detecção de borda.
⇒ Instruções para manipulação de valores decimais;
· Move;
· Comparadores;
· Conversores de tipos de dados;
· Operações matemáticas.
Anotações:
• Na Aula de Hoje...
⇒ Técnicas para estruturação de programas:
· Subrotinas;
· Funções.
Anotações:
• Subrotinas
⇒ Destinam-se à organização do programa.
⇒ Podem ser chamadas:
· A partir do programa do usuário (hierarquicamente);
p(k) = KP · e(k)
e(k)+e(k−1)
i(k) = i(k − 1) + KI · 2
· Ts
e(k)−e(k−1)
d(k) = TD · Ts
Anotações:
• Funções Anotações:
⇒ Destinam-se à organização e encapsulamento de código.
⇒ A principal diferença em relação às subrotinas é que, além
das variáveis temporárias, pode-se declarar variáveis:
· De entrada;
· De saı́da;
· De entrada/saı́da.
Anotações:
• Funções
⇒ Podem ser chamadas a partir:
· Do bloco principal;
· De subrotinas;
· De outras funções.
⇒ Devido aos parâmetros de entrada e saı́da, não podem ser
chamadas diretamente a partir de eventos.
· Mas um evento pode disparar uma subrotina que,
por sua vez, pode chamar uma ou mais funções.
⇒ Geralmente, a principal classificação é quanto a origem:
· Criadas pelo fabricante do CLP;
· Criadas pelo usuário.
• Funções do Usuário
Anotações:
⇒ Outro recurso interessante é que o usuário também pode criar
suas funções. Ou seja, é possı́vel encapsular funções como:
Anotações:
Aula 5
Programação com Diagrama Ladder:
Contadores e Temporizadores
Anotações:
• Conceitos
⇒ Contam os pulsos que ocorrem em suas respectivas entradas.
⇒ Podem ser dos seguintes tipos:
· Crescente.
· Decrescente.
· Crescente/Decrescente.
Anotações:
Anotações:
• Exemplo Anotações:
⇒ Uma bobinadeira deve preencher carretéis com 150 voltas.
· O operador inicia o processo por meio da botoeira “Liga”;
· O sensor emite um pulso elétrico quando detecta a haste;
· Ao final, o motor deve desligar automaticamente.
Anotações:
• Conceitos
⇒ Surgiram para substituir os temporizadores eletromecânicos.
⇒ Cada instrução possui dois registros principais:
· Tempo pré-selecionado (PT): a ser definido pelo usuário.
· Tempo decorrido (ET): inicia-se após a habilitação.
Anotações:
• Temporizador com Retardo na Energização (TON)
⇒ Quando a entrada é ativada, nada acontece na saı́da,
mas inicia-se a contagem de tempo.
⇒ Quando o tempo decorrido (ET) for superior ao tempo
pré-selecionado (PT), a saı́da é ativada.
⇒ Após esse momento, a saı́da continuará ativada até que
a entrada seja desativada.
Anotações:
Anotações:
Anotações:
• Exemplo de Aplicação
⇒ Desligamento sequencial de motores.
Anotações:
• Exercı́cio
⇒ Implemente uma lógica com as seguintes caracterı́sticas:
· Uma chave seletora conectada à entrada I0.0 ativa
e desativa a lógica;
· Quando a lógica está desativada, a posição de memória
M 0.0 deve permanecer em nı́vel lógico 0;
· Quando a lógica está ativada, M 0.0 deve ser um sinal
cı́clico, permanecendo 3s em 0 e 6s em 1.
• Resposta Anotações:
• Exercı́cio Anotações:
• Resposta Anotações:
Anotações:
Aula 6
Conceitos Fundamentais Sobre
Sistemas Supervisórios
⇒ Componentes eletromecânicos:
· Contatores;
· Relés temporizados;
· Dispositivos de contagem;
· E outros...
⇒ Componentes elétricos:
· Botoeiras;
· Lâmpadas;
· Potenciômetros;
· Displays de 7 segmentos;
· E outros...
⇒ Controladores Lógico–Programáveis:
· Processam dados obtidos no
mundo real (entradas e rede);
· Interferem no mundo real via
atuadores (saı́das e rede);
· Organizam projetos e flexibilizam
alterações de grande porte.
· Pode-se dizer que “virtualizam”
componentes elétricos como
fios, relés e temporizadores.
⇒ Sistemas de Supervisão:
· Em geral, baseiam-se em PCs
com hardware convencional;
· Em geral, são desenvolvidos por
meio de plataformas especı́ficas
(WinCC, RSView, Elipse, etc);
· Comunicam-se via rede com os
CLPs (em geral, via TCP/IP).
· Pode-se dizer que “virtualizam”
componentes elétricos como
botoeiras, lâmpadas e sirenes.
⇒ Acionamentos permitem o
controle de velocidade
de motores (CA e CC);
Anotações:
• Contextualização
⇒ Os Sistemas de Supervisão pertencem ao grupo das
Interfaces Homem-Máquina (IHMs), juntamente com:
· Botoeiras, lâmpadas, sirenes etc (interfaces elétricas);
· Painéis Eletrônicos de Operação.
⇒ As IHMs, por sua vez, fazem parte da maioria dos
Sistemas de Automação, juntamente com:
· Disjuntores e contatores;
· CLPs e Acionamentos (CA e CC);
· Sensores e Atuadores;
· Redes de comunicação.
• Contextualizando Graficamente...
Anotações:
Anotações:
Anotações:
Anotações:
Aula 7
Explorando uma Plataforma de
Desenvolvimento: WinCC
Anotações:
• AVISO
⇒ Os slides desta aula destinam-se, basicamente, a guiar o
professor durante a apresentação dos módulos da plataforma
WinCC.
· O objetivo é utilizar um notebook em que esta plataforma
está instalada e fazer uma apresentação interativa,
explorando cada módulo ao longo da aula;
· Dessa forma, o posterior estudo desses slides fará pouco
sentido e os alunos deverão se ater, neste caso, ao que
aprenderam nas aulas práticas com o tutorial sobre o
WinCC (partes 1 e 2).
⇒ Objetivo básico:
· Criar uma interface de operação para o que foi
programado no(s) CLP(s)
⇒ Requisitos Mı́nimos para começar:
·“Mapa de memória” do(s) CLP(s) (estrutura de dados)
· Conhecimento básico do processo a ser supervisionado
· Conhecimento básico da plataforma de desenvolvimento
⇒ Algumas plataformas de desenvolvimento:
· Elipse
· iFix
· RSView
· WinCC
• WinCC Anotações:
⇒ Fabricante: Siemens (lançado em 1996)
⇒ Softwares em que se baseia: Windows e Microsoft SQL Server
⇒ Linguagens de programação disponı́veis: VBS e ANSI C
⇒ Estrutura Modular:
Anotações:
• Uma Consideração Importante Sobre o Cadastro de Tags
⇒ Após cadastrados, os tags podem ser usados indistintamente
nos demais módulos do WinCC, isto é:
· Da mesma forma que um campo para entrada de valores
pode ser associado a um tag de comunicação para envio
de um setpoint a um CLP, ele também pode ser associado
a um tag interno para que o usuário determine o horizonte
de tempo de um gráfico de tendência.
· Da mesma forma que um script que roda em segundo
plano monitora o nı́vel lógico de um tag associado a um
CLP da Siemens, ele também pode monitorar um tag
associado a um CLP da Rockwell, por exemplo, por meio
da expressão F lag = GetT agBit(“N omeDoT ag 00 ).
Anotações:
• Trigger de Animações
⇒ Define como a condição de animação será avaliada
Anotações:
• Eventos
⇒ Cada objeto gráfico também possui um conjunto de eventos
⇒ Categorias: mouse, keyboard, foco, mudança de propriedade
⇒ Como “aproveitar” esses eventos: VBS, C e Direct connection
Anotações:
Anotações:
• Módulo User Administrator
Anotações:
Aula 8
Conceitos Fundamentais sobre OPC
• Esperanto Anotações:
⇒ Idioma artificial, cuja versão inicial foi
publicada em 1887.
⇒ Projetado para ser:
· Uma lı́ngua de fácil aprendizagem;
· O 2o idioma de todas as nações
(a ideia não era substituir);
• Sistemas Supervisórios
Anotações:
⇒ No entanto, é difı́cil pensar em um Sistema Supervisório que
não se comunique com um ou mais CLPs.
• Fundamentos Anotações:
⇒ A comunicação entre Sistemas Supervisórios e CLPs pode ser
exemplificada por meio da seguinte analogia:
• Implicações Anotações:
Anotações:
Anotações:
Anotações:
• Um OPC–Server para Vários CLPs
⇒ Existem empresas que se especializaram em desenvolver
OPC–Servers “Poliglotas”.
Anotações:
Anotações:
Aula 9
Programação com
Diagrama de Blocos de Funções
Anotações:
Anotações:
• Linguagens Textuais × Linguagens Gráficas
⇒ Linguagens textuais são uma boa opção para a criação de
códigos que, uma vez depurados, dispensem a monitoração
do seu funcionamento.
· Exemplo: uma função que converte o valor bruto,
fornecido por uma entrada analógica, para o seu
respectivo valor em Unidade de Engenharia.
Anotações:
• Linguagens Textuais × Linguagens Gráficas
⇒ No entanto, caso o código dependa de estados da planta, as
linguagens textuais não são ideais, pois é mais difı́cil monitorar
a lógica.
· Exemplo: o acionamento de uma esteira depende de 2
sensores, Liga = A · B̄. Caso as condições estejam
satisfeitas, mas a esteira não funcione, deve-se identificar
qual sensor está com problema.
⇒ O uso de linguagens gráficas pode facilitar bastante tarefas
como essa.
· Tal vantagem torna-se mais evidente a medida em que a
complexidade das lógicas a serem monitoradas aumenta.
Anotações:
Anotações:
• Principais Caracterı́sticas
⇒ O FBD baseia-se na representação virtual dos diagramas
utilizados pelos técnicos em eletrônica, em seus circuitos
de portas lógicas.
Anotações:
• Principais Caracterı́sticas
⇒ Assim como o LD, que se baseia na representação virtual
de relés, o FBD é uma linguagem gráfica.
· Essas duas linguagens são as mais parecidas entre si.
· Um código desenvolvido em FBD quase sempre pode
ser convertido em LD e vice–versa.
· Geralmente, o usuário pode alterar a forma de trabalho
por meio de seleções em menus como “View → Ladder”
ou “View → FBD”.
⇒ Por serem facilmente assimiladas por estudantes de Engenharia
de Controle e Automação, as principais instruções da linguagem
FBD serão apresentadas por meio de comparações com a
linguagem LD.
Anotações:
Aula 10
Programação com
Lista de Instruções
Anotações:
• Princı́pios Básicos
⇒ Usa o conceito de acumulador para armazenar resultados
intermediários.
⇒ Os principais operadores são load e store:
· LD carrega um novo valor no acumulador.
· ST transfere o conteúdo do acumulador p/ uma variável.
⇒ Operadores como AND e OR produzem seus resultados a partir
de um operando e do conteúdo do acumulador.
· O resultado é armazenado no próprio acumulador,
atualizando-o.
• Regras de Sintaxe
Anotações:
⇒ Cada instrução deve começar em uma nova linha.
⇒ Uma instrução é composta por operador e operandos:
· Instrução = Operador + Operandos.
· Dois ou mais operandos devem ser separados por “,”
⇒ Cada instrução pode ser precedida por um rótulo:
· Rótulo é um nome seguido do caracter “:”
· São usados por instruções de salto (JMP);
· Também podem ser colocados em linhas vazias.
⇒ Cada instrução pode ser finalizada por um comentário:
· Devem ser inseridos como: (* texto descritivo *)
· Também podem ser colocados em linhas vazias.
⇒ Os operadores podem incluir modificadores.
· Trataremos disso após o próximo slide...
Universidade Federal de Lavras Prof. Dimitri Campos Viana 147
GNE259 – Informática Industrial
Aula 10 – Programação com Lista de Instruções
Principais Operadores
Anotações:
• Operadores Mais Utilizados
LD Carrega o operando para o acumulador
ST Transfere o conteúdo do acumulador para o local apontado pelo operando
S Transfere o valor 1 para o local apontado pelo operando (se acumul. = 1)
R Transfere o valor 0 para o local apontado pelo operando (se acumul. = 1)
AND Função booleana AND
OR Função booleana OR
XOR Função booleana XOR
JMP Salta para o rótulo fornecido como operando
⇒ Exemplo:
LD I0.0 (* botão liga *)
AND M0.0 (* comando válido *)
ST Q0.0 (* liga motor *)
• Modificadores
Anotações:
⇒ Devem ser anexados ao nome do operador (sem separação).
⇒ N – Inversão lógica do operando
· Exemplo:
LDN I0.0 (* modo automático selecionado *)
ST M0.0 (* modo manual selecionado *)
⇒ ( – Operação adiada
· Trataremos desse modificador mais a frente...
⇒ C – Operação Condicional
· Indica que a instrução deve ser executada somente se
o conteúdo do acumulador for diferente de zero.
· Muito usado para modificar o operador de salto:
JMP → JMPC.
Anotações:
• Diferenças entre Fabricantes
⇒ Antes do surgimento da Norma IEC 61131–3:
· Cada fabricante possuı́a seu conjunto de instruções;
· Embora bastante parecidos, as diferenças existem;
· Por razões de compatibilidade, elas continuam a existir;
· Para fazer códigos em IL, deve-se estudar os manuais.
Anotações:
• Operador LD
LD false (* constante booleana *)
LD 12 (* constante do tipo inteiro *)
LD 17.8 (* constante do tipo real *)
LD M0.0 (* variável booleana *)
LD MW6 (* variável do tipo inteiro *)
LD MD12 (* variável do tipo real *)
LDN M0.0 (* conteúdo invertido da variável booleana *)
Anotações:
• Operador ST
LD M0.0 (* motor ligado *)
ST Q0.0 (* sinaliza motor ligado *)
STN Q0.1 (* sinaliza motor desligado *)
Anotações:
• Operador AND
⇒ A partir do FBD, obtenha a Lista de Instruções equivalente:
LD I0.0
AND I0.1
AND I0.2
ST Q0.0
Anotações:
• Operador OR
⇒ A partir do FBD, obtenha a Lista de Instruções equivalente:
LD I0.0
OR I0.1
ORN I0.2
ST Q0.0
Anotações:
• Operadores S e R
⇒ A partir do FBD, obtenha a Lista de Instruções equivalente:
LD I0.0
ORN I0.1
ANDN I0.2
S Q0.0
LD I0.3
ANDN I0.4
ORN I0.5
R Q0.0
Anotações:
• Operador JMP
LD M0.0 (* temperatura muito alta *)
JMPC VENT (* chama subrotina para partida do ventilador *)
. .
. .
. .
VENT: LD true (* prepara partida do ventilador *)
. .
. .
. .
• Operações Adiadas
Anotações:
⇒ Muitas vezes, para implementar lógicas mais complexas,
é necessário alterar a sequência de execução das operações.
⇒ Os parênteses são utilizados para se fazer isso:
· ( – Adia a execução do operador que o precede;
· ) – Executa a operação anteriormente adiada.
⇒ Para analisar trechos com operações adiadas, usa-se o conceito
de pilha (estrutura do tipo Last In First Out).
⇒ Quando o modificador “(” é encontrado:
· O valor do acumulador é colocado na pilha.
· Carrega-se o acumulador com o próximo operando.
⇒ Quando o modificador “)” é encontrado:
· Executa-se a operação adiada entre o último valor que
entrou na pilha e o valor do acumulador.
Anotações:
• Exemplo
⇒ Obtenha a IL que represente a expressão
⇒ Resposta:
LD I0.0 (* carrega o valor de I0.0 para o acumulador *)
AND( I0.1 (* adia a operação AND *)
(* transfere o valor do acumulador para a pilha *)
(* carrega o valor de I0.1 para o acumulador *)
OR I0.2 (* realiza a operação OR entre o acumulador e I0.2 *)
(* transfere o resultado para o acumulador *)
) (* executa a operação adiada entre a pilha e o acumulador *)
ST Q0.0 (* transfere o resultado para Q0.0 *)
• Observação 1 Anotações:
LD I0.0
LD I0.0
AND(
AND( I0.1
LD I0.1
OR I0.2 ⇔ OR I0.2
)
)
ST Q0.0
ST Q0.0
• Observação 2
⇒ É possı́vel evitar adiamentos com códigos semelhantes.
LD I0.0
LD I0.1
AND( I0.1
OR I0.2
OR I0.2 ≈ AND I0.0
)
ST Q0.0
ST Q0.0
Anotações:
• Exemplo
⇒ A partir do FBD, obtenha a Lista de Instruções equivalente:
LD I0.0
AND I0.1
OR(
LDN I0.2
AND(
LDN I0.3
OR I0.4
)
)
ST Q0.0
• Exemplo
Anotações:
⇒ Faça uma IL para o S7–200 que represente Q0.0 := I0.0 + (I0.1 · I0.2).
Anotações:
Aula 11
Programação com
Texto Estruturado
Anotações:
• Principais Caracterı́sticas
⇒ Das 5 linguagens da norma, é considerada a de mais alto nı́vel.
⇒ A sintaxe é semelhante ao Pascal e outras linguagens
de programação estruturadas.
· No entanto, foi especificamente desenvolvida para CLPs.
· Pode-se acessar entradas e saı́das como qualquer outra
variável, por exemplo: QW 18 := 5 ∗ IW 12 + 2.
⇒ O programa é processado ciclicamente pelo CLP.
· Linha por linha, de cima para baixo.
⇒ O aprendizado, o uso e a edição são relativamente fáceis.
⇒ É bastante útil para a automação de processos complexos.
⇒ Os principais recursos dessa linguagem serão vistos a seguir.
Anotações:
• Atribuição de Valores à Variáveis
⇒ Alteram o valor armazenado em uma variável.
⇒ Podem ser feitas por meio de uma das seguintes sintaxes:
· Sı́mbolo := expressão;
· Endereço := expressão;
⇒ Expressões são escritas utilizando-se:
· Constantes;
· Variáveis (sı́mbolos ou endereços);
· Funções, como ABS, T RU N C etc;
· Operadores, como +, −, <, >, AN D, OR etc;
· Parênteses, para alterar a ordem de interpretação dos
operadores.
Anotações:
• Expressões
⇒ Booleanas
· Usa variáveis binárias, operadores lógicos e comparadores.
· Resulta em condições verdadeiras ou falsas.
· Por exemplo: IW12 > 65.
· Tipicamente, use-se uma expressão booleana para
condicionar a execução de outra lógica.
⇒ Numéricas
· Utiliza variáveis, operadores e funções aritméticas.
· Produz valores inteiros ou reais (ponto flutuante).
⇒ Mistas
· Por exemplo: (IW16 + 5) > 65.
• Operadores Aritméticos
Anotações:
⇒ A linguagem ST prevê os seguintes:
+ Adição
− Subtração
∗ Multiplicação
/ Divisão
∗∗ Exponenciação
M OD Módulo da divisão
• Operadores de Comparação
⇒ Podem comparar valores numéricos e alfanuméricos (strings):
= Igual
< Menor que
<= Menor ou igual
> Maior que
>= Maior ou igual
<> Diferente
Anotações:
Anotações:
AN D Operação “E”
OR Operação “Ou”
XOR Operação “Ou exclusivo”
N OT Inversão
Anotações:
Anotações:
• Exemplo (IF . . . T HEN )
IF tank temp > 200 THEN
pump fast := 1; pump slow := 0; pump off := 0;
ELSEIF tank temp > 100 THEN
pump fast := 0; pump slow := 1; pump off := 0;
ELSE
pump fast := 0; pump slow := 0; pump off := 1;
END IF
Anotações:
• Exemplo (CASE . . . OF )
CASE speed setting OF
1: speed := 10;
2: speed := 20;
3: speed := 40; fan1 := 1
4, 5 : speed := 50; fan2 := 1
6 . . . 10 : speed := 60; waterpump1 := 1
ELSE speed := 0; speed fault := 1
END CASE
Anotações:
• Exemplo (F OR . . . DO)
FOR count := 0 TO 9 BY 1 DO // count is the index value
// sets the valve number as 5 higher than the count
valve num := count + 5;
// on the first pass - sets the valve[5] position to the value in pos[0]
valve[valve num] := pos[count];
END FOR
Anotações:
// quando LT > 25
IF LT >= 25 THEN
V A := 0;
IF V D = 0 THEN // se estiver enchendo
V B := 1;
END IF
END IF
// quando LT > 50
IF LT >= 50 THEN
M X := 1;
END IF
// quando LT > 99
IF LT >= 99 THEN
V B := 0;
IF T T >= 180 THEN // aguarda temperatura
V V := 0;
V D := 1;
END IF
END IF
// quando LT 6 1
IF LT <= 1 THEN
M X := 0;
V D := 0;
END IF
Anotações:
• Solução 2 (orientada aos atuadores): projeto do software
⇒ VA: Abre quando BT = 1
Fecha quando LT > 25%
⇒ VB: Abre quando LT > 25% (se estiver enchendo)
Fecha quando LT > 99%
⇒ MX: Liga quando LT > 50%
Fecha quando LT 6 1%
⇒ VV: Abre quando LT > 75% (se estiver enchendo)
Fecha quando T T > 180o C
⇒ VD: Abre quando LT > 99% e T T > 180o C
Fecha quando LT 6 1%
Anotações:
Anotações:
• Considerações Finais sobre as Soluções dadas ao Exemplo
⇒ Analisando-se o enunciado, nota-se que este processo de
mistura é essencialmente sequencial.
· No entanto, ao se utilizar a linguagem Texto Estruturado,
a abordagem orientada aos atuadores se mostrou mais
simples do que a abordagem orientada aos eventos.
⇒ Na próxima aula, veremos a linguagem Diagrama de Fluxo
Sequencial, que facilita bastante a implementação de
problemas orientados a eventos.
· Ou seja, com o uso das técnicas previstas nesta nova
linguagem, a abordagem orientada a eventos terá uma
nova chance de superar a abordagem orientada aos
atuadores, pelo menos quando o processo for sequencial.
Anotações:
Aula 12
Programação com
Diagrama de Fluxo Sequencial
Anotações:
• Principais Caracterı́sticas
⇒ Especialmente adequado à processos sequenciais.
· Os programas são construı́dos como uma sequência de
passos na qual a transição entre os mesmos é vinculada
a uma condição booleana.
⇒ Linguagem gráfica.
· Os programas são representados por diagramas em que os
blocos são os passos e os traços as condições de avanço.
Anotações:
• Sequência Simples
⇒ As ações associadas ao passo atual são executadas
repetidamente (a cada ciclo do CLP).
Anotações:
• Sequência Seletiva
⇒ As condições programadas selecionam passos alternativos.
Anotações:
• Sequência Simultânea
⇒ Dois ou mais passos são executados ao mesmo tempo.
Anotações:
• Sequência em Loop
⇒ Salto para um passo anterior.
Anotações:
• Condições de Transição
⇒ Devem ser associadas a uma lógica binária.
⇒ Pode ser implementada com:
· Contatos em Diagrama de Ladder;
· Portas lógicas em FBD;
· Ou com qualquer bloco que produza uma saı́da binária.
Anotações:
• Blocos de Ação
⇒ Normalmente, cada passo está associado a um bloco de ação.
⇒ Um bloco de ação geralmente contém:
· Comentário;
· Uma ou mais ações.
⇒ As ações são compostas de:
· Endereço de memória a ser alterado (por exemplo, Q0.0);
· Qualificador da ação (veja as opções a seguir).
Anotações:
• Qualificadores de Ação
⇒ Os principais são os seguintes:
Qualificador Descrição
Nenhum O mesmo que “N”
N Não armazenada (executada enquanto o passo estiver ativo)
S Armazenada (executada até que um “R” seja encontrado)
R Faz o reset de uma ação armazenada
L Limitada (termina após um perı́odo ou com o fim do passo)
D Adiada no tempo (começa após um perı́odo estipulado)
P Pulsada (executada uma vez no inı́cio e no fim do passo)
P1 Executada uma única vez, no inı́cio do passo
P0 Executada uma única vez, no fim do passo
Anotações:
• Solução com Diagrama de Fluxo Sequencial (SFC): 1o Trecho
Anotações:
• Considerações sobre esta Última Solução
⇒ Nota-se que o processo é essencialmente sequencial.
⇒ Usando SFC, a execução por etapas dispensa a consideração de
condições como “se estiver enchendo”, simplificando a lógica e
tornando a abordagem orientadas a eventos bastante atrativa.
⇒ Existe uma concorrência entre dois eventos: tanque cheio
e temperatura atingida.
· Mas isso não chega a descaracterizar a essência sequencial
do processo e pode ser facilmente tratado no diagrama.
⇒ No entanto, caso houvessem vários eventos concorrentes:
· O processo perderia a caracterı́stica sequencial, fazendo
com que o uso de SFC não fosse apropriado.
Anotações:
• Recapitulando e Expandindo
⇒ Exemplo do processo de mistura com Texto Estruturado:
· Abordagem orientada aos atuadores → mais simples.
⇒ Exemplo do processo de mistura com SFC:
· Abordagem orientada aos eventos → funciona bem,
principalmente devido à “execução por etapas”.
⇒ Mas a linguagem SFC nem sempre está disponı́vel:
· É possı́vel levar essa estratégia de “execução por etapas”
para outras linguagens de programação?
· Sim, facilmente! Vejamos a seguir...
// passo 1
IF P asso = 1 THEN
V A := 1;
IF LT >= 25 THEN
P asso := 2;
END IF
ELSE
V A := 0;
END IF
// passo 3
IF P asso = 3 THEN
M X := 1;
IF LT >= 75 THEN
P asso := 4;
END IF
END IF
Anotações:
o
• Solução com Execução por Etapas em Texto Estruturado: 3 Trecho
// passo 4
IF P asso = 4 THEN
V V := 1;
IF LT >= 99 THEN
P asso := 51;
END IF
IF T T >= 180 THEN
P asso := 52;
END IF
END IF
// passo 61
IF P asso = 61 THEN
V V := 0;
V D := 1;
IF LT <= 1 THEN
P asso := 7;
END IF
END IF
// passo 62
IF P asso = 62 THEN
V B := 0;
V D := 1;
IF LT <= 1 THEN
P asso := 7;
END IF
END IF
Anotações:
Anotações:
• Recapitulando e Expandindo (mais um pouco...)
⇒ Quando o processo é essencialmente sequencial, a melhor
linguagem para tratá-lo é o SFC.
⇒ Mas, supondo a indisponibilidade do SFC, vimos uma técnica
para implementar problemas sequenciais em Texto Estruturado.
⇒ No entanto, ainda temos um problema:
· Este sistema não depende de sensores?
· Ou seja, a lógica não precisa ser monitorada?
⇒ Seria viável usar a técnica da variável “passo” na linguagem
Diagrama Ladder?
· Sim, facilmente! Vejamos a seguir...
Anotações:
• Solução com Execução por Etapas em Ladder: 1o Trecho
Anotações:
• Solução com Execução por Etapas em Ladder: 2o Trecho
Anotações:
Anotações:
Anotações:
• Sugestão de Exercı́cio
⇒ Transcreva o código apresentado nos últimos slides para FBD.