Você está na página 1de 118

Conteúdo - PCWorx Express

Ambiente de Trabalho ONBOARD_


Programação em Ladder
ONBOARD_O

 Gerenciamento de um projeto 001 INPUT_BIT0 UTPUT_BIT0  Elementos Básicos


 Áreas de Trabalho ONBOARD_  Function Blocks em Ladder
IEC Programing Workspace
002 INPUT_BIT1
 Lógica básica
Bus Configuration Workspace 003
ONBOARD_
INPUT_BIT2
 Varredura
Process Data Workspace

Configuração Programação em Texto Estruturado


 Rede Ethernet TCP-IP  Sintaxe e Operadores
 Configuração do Windows  Funções e Function Blocks
 Configuração do IP da Controladora  Instrução IF
 Aplicação dos cartões de expansão  Instrução CASE
 Instrução FOR

Operação e Diagnóstico Criação de Funções e Blocos


 Compilação  Visibilidade de variáveis
 Download FunctionBlock
 Variáveis de Entrada
 Execução do projeto GlobVar
LocVar  Variáveis de Saída
 Análise / Debug InVar
InOutVar
OutVar
OutOutVar  Variáveis de Entrada e Saída
 Diagnóstico
IEC 61131-3 Arrays e Estruturas
 Linguagens Suportadas Arrays: Variáveis Indexadas
 Conceito de POU Program Estruturas: Variáveis com múltiplas
Organization Unit instâncias
 Programas Criação
 Function / Function Blocks Declaração
 Tasks Implementação
Programação em Diagrama de Blocos Bibliotecas
 Funções  Criação
 Blocos de Função  Exportação
 Fluxo de processamento  Importação
 Principais Blocos  Bibliotecas Phoenix Contact
Norma IEC 61131-3
Linguagens de Programação)
As seis linguagens definidas pela norma IEC 61131-3:

- Texto Estruturado (ST)


- Lista de Instruções (IL)
- Ladder Diagram (LD)
- Diagramas de Blocos Funcionais (FBD)
- Funções Gráficas de Sequenciamento (SFC)
-Funções Gráficas Contínuas (CFC) – extensão da IEC 61131-3, que dá liberdade à posição dos elementos
do gráfico.

As duas primeiras linguagens acima são ditas textuais por conterem instruções na forma de texto.
As duas seguintes são ditas gráficas por possuírem representação na forma de símbolos.
A linguagem SFC é normalmente tida como linguagem gráfica, porém também permite programações
textuais.
Norma IEC 61131-3
Linguagens de Programação)

Ladder Diagram (LD) Diagramas de Blocos Texto Estruturado (ST)


Funcionais (FBD)
Ladder Diagram (LD)
A linguagem Ladder foi originalmente desenvolvida para construir e melhor documentar circuitos a relés,
utilizados em processos de produção . Todos os dispositivos dos circuitos elétricos como botões, válvulas e
solenoides podem ser representados em símbolos nos Diagramas Ladder, incluindo suas conexões.

Atualmente, a linguagem ladder, diagrama ladder ou diagrama de escada é um auxílio gráfico para
programação de Controladores Lógicos Programáveis (CLPs), no qual as funções lógicas são
representadas através de contatos e bobinas, de modo análogo a um esquema elétrico com os contatos
dos transdutores e atuadores.

O nome (ladder, escada em inglês) provém do fato que a disposição dos contatos e bobinas é realizada, de
maneira geral, na vertical, que lembra o formato de uma escada. A cada lógica de controle se dá o nome de
rung (degrau), composta por linhas e colunas.

A verificação do código pode variar entre as marcas de CLPs, mas é comum que a atualização seja feita da
esquerda para a direita e de cima para baixo.
FBD (Diagrama de Blocos)
O diagrama de função de bloco, ou do inglês, Function Block Diagram (FDB) é uma linguagem gráfica
utilizada em controladores lógicos programáveis. Esta linguagem é descrita por blocos elementares de
funções, onde as entradas e saídas são conectadas no bloco por linhas de conexão.

Também é conhecido por ser uma linguagem gráfica na qual os elementos são interligados de forma
semelhante a circuitos elétricos. Permite ao usuário tanto utilizar blocos pré-programados, como por
exemplo contadores, temporizadores e lógicas booleanas, quanto criar seus próprios blocos da maneira
que lhe for conveniente (encapsulamento). Estes blocos criados podem ser programados em outras
linguagens, e os softwares de desenvolvimento geralmente contam com bibliotecas de funções FBD, o que
faz com que a linguagem seja extremamente flexível e recomendada.
ST (Texto Estruturado)
Texto estruturado (structured text, em inglês) é uma linguagem de programação para CLP’s definida pela
PLCOpen na norma IEC61131-3. Por ser uma linguagem textual e de alto nível, possibilita a solução de
problemas mais complexos, usando comandos básicos da programação como laços de repetição e
condicionais.

Esta linguagem de programação é geralmente usada para blocos de função, que são usados em outros
programas com outras linguagens como Ladder ou diagrama de blocos. A grande parte dos programas
para CLP’s podem ser feitos em linguagens gráficas sem muitas dificuldades porém programas maiores e
mais complexos exigem uma linguagem como Texto Estruturado. Uma aspecto positivo é a normatização
das linguagens permitir o uso de diferentes linguagens em um único programa oferecendo maior chance de
simplificação do problema.
Tipos de Variáveis
DINT (Double Integer) -2.147.483.648 ... 2.147.483.647

UDINT (Unsigned ...) 0 ... 4.294.967.295

INT -32768 ... 32767

UINT 0 ... 65.535

SINT (Short ...) -128 ... 127

USINT 0 ... 255

REAL +/- 1.18*10^-38 ... +/- 3.4*10^38

BOOL TRUE, FALSE (tipo bool 0 e 1)

BYTE 00HEX ... FFHEX

WORD 0000HEX ... FFFFHEX

DWORD 0000 0000HEX ... FFFF FFFFHEX

TIME 0 ... 4.294.967.295ms (aprox. 49 dias) d, h, m, s e ms


Tipos de Variáveis
Constantes
TIPO#BASE#VALOR
Visibilidade
Novo Projeto
Ao criar um novo projeto, selecione o
ILC correspondente.

Atente ao escolher a versão correta de


hardware.
Salvar o Projeto
Salve seu projeto com a
extensão *.mwe

Será criado o arquivo do projeto e um diretório com o mesmo nome, que


contém arquivos relacionados ao programa, gerados automaticamente.
Salvar o Projeto em modo compactado
O Projeto também pode ser salvo em modo compactado
com a extensão *.zwe

O arquivo do projeto e respectivo


diretório são unificados com a
extensão *.zwe

O PC Worx sempre trabalha com a extensão *.mwe e com o respectivo diretório no formato

!
descompactado. Assim, toda vez que um arquivo *.zwe é aberto, automaticamente é
descompactado o seu conteúdo no diretório em uso. Permanece em si o conteúdo original.
Seleção
IEC Programming Workspace
Programação

Bus Configuration Workspace


Configurações de Hardware

Process Data Workspace


Associação de variáveis
IEC Programming Workspace

Compilação

Download
Debug

Árvore do
projeto Inclusão do bloco de
Área de programação
programação

Mensagens
Bibliotecas

Tipos de Dados

POU‘s
Bus Configuration Workspace

Árvore de seleção para


configuração de Hardware

Seleção para adição de


Tabela de
módulos
configuração

Seleção da tela de
configuração
Process Data Workspace

Árvore de seleção do
grupo de variávies
Tabela de Hardware
Seleção de variável a Instalado
ser associada.

Variáveis disponíveis
para o hardware
Mensagens selecionado
Configuração de rede no Computador
Teste da rede
Configuração do range de endereço IP
Configuação do MAC ADDRESS e IP
Habilitação do BootIP Server
Aplicação das configurações
Associação de Hardware Automática
Associação de Hardware Automática
Associação de Hardware Automática
Associação de Hardware Automática
Associação de Hardware Manual
Make
Project Control Dialog
Download Options

Após bem sucedida compilação do projeto( configuração do


barramento e programa de aplicação), o código de máquina pode ser
descarregado através do item Download. Esta opção armazena o
código de máquina compilado na memória principal volátil (RAM). Na
opção More podem ser
incluido dois tipos de download que ocorrerão juntamente com o
download para a memória RAM:

• Permanent as Bootproject – o projeto compilado será salvo


também na memória flash do
controlador.

• Include Source – o programa compilado será descarregado para a


RAM do controlador com o
código fonte, possibilitando executar um Upload.

Observação: Somente após o download do arquivo fonte (Include


source), o projeto pode ser
relido da memória de parameterização. Não é possível decodificar o
código de máquina.
Project Control Dialog

• Cold – o programa inicia sem manter nenhum valor de variável


• Warm – Mantém os valores das variáveis retentivas
• Hot – Mantém os valores das variáveis retentivas e discretas
Project Control Dialog

Esta tela é importante para visualizar a carga


da CPU, tempo de ciclo da TASK DEFAULT e
utilização da memória.
Diagnóstico do barramento InterBus
Diagnóstico do barramento InterBus
Diagnóstico do barramento InterBus
Diagnóstico do barramento InterBus
Diagnóstico do barramento InterBus
Diagnóstico do barramento InterBus

Cor Significado
Verde Diagnóstico LED de Diagnóstico
ON Bus ativo
Piscando 0.5 Hz Energia de
comunicação UL
disponível, bus inativo
Piscando 2 Hz Falha de periferia
Piscando 4 Hz Erro de Local Bus
Diagnóstico do barramento InterBus
• Estados dos Dispositivos

• Cor do Símbolo Descrição do Símbolo

• Verde Este dispositivo participa do tráfego de dados via INTERBUS


sem quaisquer erros ou interrupções. Éstá ativado e não está em bypass.

• Fundo Verde Este dispositivo envia uma mensagem de falha de periferia (p. ex., falha na fonte de
alimentação). Falhas de periferia não causam a parada do barramento.

• Vermelho Ocorreu um erro de barramento neste dispositivo. Este erro leva


a parada do barramento.

• Cinza/verde Este dispositivo não participa do tráfego de dados via INTERBUS


Este dispositivo está desativado mas não está bypassado.

• Cinza Este dispositivo não participa do tráfego de dados via INTERBUS


Este dispositivo está habilitado, porém esta bypassado.
O programa na linguagem Ladder permite apenas lógicas do tipo boleana. Uma lógica deve
ser finalizada usando barras no lado direito e no lado esquerdo.

Estas barras são chamadas de PowerRail. Quando inserir novos contatos ou bobinas, as
variáveis devem ser declaradas da mesma forma que no FBD.

! Nenhum contato ou bobina deve ser instalado no lado direito de uma bobina.
Aberto

Fechado

Bobina

Bobina negada

S Bobina set

R Bobina reset
AND ONBOARD_ ONBOARD_ ONBOARD_ ONBOARD_O
001 INPUT_BIT0 INPUT_BIT1 INPUT_BIT2 UTPUT_BIT0

OR
ONBOARD_ ONBOARD_O
001 INPUT_BIT0 UTPUT_BIT0

ONBOARD_
002 INPUT_BIT1

ONBOARD_
003 INPUT_BIT2
Condições Ações
001 ONBOARD_INPUT_BIT0 ONBOARD_INPUT_BIT1 ONBOARD_INPUT_BIT2 ONBOARD_OUTPUT_BIT0
/ S

ONBOARD_INPUT_BIT0 ONBOARD_INPUT_BIT1 ONBOARD_INPUT_BIT2


/

estado_sensores
ONBOARD_INPUT_BIT0 ONBOARD_INPUT_BIT1 ONBOARD_INPUT_BIT2
/

1 2
C020

ONBOARD_INPUT_BIT0 ONBOARD_INPUT_BIT1 ONBOARD_INPUT_BIT2

002 ONBOARD_INPUT_BIT3

003 estado_sensores ONBOARD_INPUT_BIT4 ONBOARD_OUTPUT_BIT0


/ R
1. Crie um programa em Ladder que execute a função Liga / Desliga :

Blocos que podem ser úteis para a criação. Nem todos eles têm de ser usados:
1. Crie um programa em Ladder que execute a função Liga / Desliga :
2. Crie um programa em Ladder que execute a função Toggle (Flip-Flop) :
2. Crie um programa em Ladder que execute a função Toggle (Flip-Flop) :
3. Deseja-se implementar em ladder uma partida direta/reversa de motores
trifásicos, que consiste em mudar o sentido de rotação de um motor
trifásico. Sua seqüência operacional é bastante simples: Pressionando
(S1) energiza-se o contator (K1), fechando o seu selo (13,14) e abrindo o
intertravamento (21,22) mesmo pressionando (S2) o contator (K2) não
será energizado, devido ao intertravamento, sendo necessário seu
desligamento para religar (S2) novamente e a rotação será invertida.
3.
Comparação
Lógicos Entradas OUT
IN1>IN2 1
IN 1 IN 2 OUT
OUTROS 0
0 0 0
0 1 0
1 0 0 Entradas OUT
1 1 1 IN1>=IN2 1
OUTROS 0
IN 1 IN 2 OUT
0 0 0 Entradas OUT
0 1 1 IN1<=IN2 1
1 0 1 OUTROS 0
1 1 1

IN 1 IN 2 OUT Entradas OUT


0 0 0 IN1<IN2 1
0 1 1 OUTROS 0
1 0 1
1 1 0 Entradas OUT
IN1=IN2 1
OUTROS 0
IN OUT
0 1
1 0 Entradas OUT
IN1≠IN2 1
OUTROS 0
Temporizadores
Parameter Data types Description
IN BOOL If a rising edge is detected, a pulse is
created.
PT TIME preset time interval for the pulse
Q BOOL TRUE if IN = TRUE and ET < PT
FALSE if IN = FALSE and ET >= PT
ET TIME elapsed time interval

Parameter Data types Description


IN BOOL If a rising edge is detected, the on-
delay timing is started.
PT TIME preset time interval for the delay
Q BOOL TRUE if IN = TRUE and ET >= PT
FALSE if IN = FALSE or ET < PT
ET TIME elapsed time interval

Parameter Data types Description


IN BOOL If a falling edge is detected, the
off-delay timing is started.
PT TIME preset time interval for the delay
Q BOOL TRUE if IN = TRUE and ET < PT
FALSE if IN = FALSE and ET >= PT
ET TIME elapsed time interval
Set-Reset

Parameter Data types Description


SET1 BOOL IF TRUE Q1 is set dominant
RESET BOOL If TRUE Q1 is reset
Q1 BOOL output

Parameter Data types Description


SET BOOL IF TRUE Q1 is set
RESET1 BOOL IF TRUE Q1 is reset dominant
Q1 BOOL output value
Detecção de bordas

Parameter Data types Description


CLK BOOL detects a rising edge
Q BOOL If a rising edge is detected, Q
changes from FALSE to TRUE

Parameter Data types Description


CLK BOOL detects a falling edge
Q BOOL If a falling edge is detected, Q
changes from FALSE to TRUE
1. Crie um programa para simular um semáforo
Dica: implemente um botão para iniciar a operação...

Vermelho

Amarelo

Verde

Blocos que podem ser úteis para a criação. Nem todos eles têm de ser usados:
1. Crie um programa para simular um semáforo
2. Duas chaves devem comandar uma prensa simultaneamente
de modo que acionada a primeira chave, não podem transcorrer
mais do que 0,5s até que a segunda chave seja acionada. Se o
operador retirar a mão das chaves, a prensa deverá parar, por
razões de segurança.
2.
TIPO#BASE#VALOR

Valor da constante
Base Numérica
Tipo de Variável
TIPO#BASE#VALOR

Valor da Constante
Separador #
Base Numérica
Separador #
Tipo de Variável
Tipo de Dado

Indicador escritor

Intervalo válido

Declaração do Array

Nome do novo tipo de Array

Sintaxe de definição do Tipo


Início do Tipo

Nome do Novo Tipo

Início da Estrutura

Subtipos

Fim da Estrutura

Fim do Tipo
Resultado Operadores

Output1 := Input1 & Input2 ;

Fim de
Atribuição Operandos
instrução

AND

Input1 Output

Input2
Matemáticos Comparações Binários Gerais
+ = NOT :=
Soma Igual Complemento Atribuição

- <> & ()
Subtração Diferente And Delimitador

* > OR (* *)
Multiplicação Maior OU Comentário

/ >= XOR
Divisão Maior igual OU Exclusivo

MOD <=
Módulo Menor igual

**
Expoente
Matemáticos Comparações Binários Gerais
+ = NOT :=
Soma Igual Complemento Atribuição

- <> & ()
Subtração Diferente And Delimitador

* > OR (* *)
Multiplicação Maior OU Comentário

/ >= XOR
Divisão Maior igual OU Exclusivo

MOD <=
Módulo Menor igual

**
Expoente
Início dos Fim dos
Parâmetros Parâmetros
Parâmetros Parâmetros
Saída de entrada de entrada
de entrada
de entrada

Selection := SEL_REAL(Input, Value 1, Value 2);


Parâmetrosde
Separadores Fim de
Atribuição Function de entrada
argumentos instrução

SEL_REA
L
Input G Selection

Value 1 IN0

Value 2 IN1
Transição
TON_1.IN := input; opcional de
Chamada de
instância TON_1.PT := specification; parâmetro
do FB

TON_1();

Signal := TON_1.Q;
Process := TON_1.ET;
TON_1
TON
Input IN Q Signal

Specification PT ET Process
Parâmetros
ParÂmetros TON_1.IN := input;
de Entrada
de Entrada
TON_1.PT := specification;

TON_1(IN := input, PT := specification);


Chamada da
do FB

Parâmetros
ParÂmetros Signal := TON_1.Q;
deEntrada
de Saída
Process := TON_1.ET;

TON_1
TON
Input IN Q Signal

Specification PT ET Process
A vantagem de um texto estruturado é que os elementos que são normais em linguagens
clássicas de alto nível estão disponíveis aqui. Estes elementos serão apresentados nas
próximas páginas.

Em geral, programas complexos podem ser realizados facilmente usando estas estruturas.

Para a instrução de decisão IF, podemos tomar a decisão de executar uma parte do programa
através do estado de um operando do tipo bool ou do resultado do tipo bool de uma operação.

No caso de alternativas serem requisitadas, é possível inserir a requisição ELSIF várias vezes
(opcional).

Se nenhuma das condições anteriores for atendida, é possível executar uma parte do programa,
inserindo uma instrução ELSE.

Basicamente, é válido que dentro de uma estrutura IF, apenas um bloco de instrução será
processado a cada vez que o programa for executado.

É possível criarmos cascata de estrutura IF. Entretanto, é importante ter o cuidado de criar uma
estrutura de programa limpa.

Na programação de alto nível, é comum acrescentarmos tabulações para que as partes do


programa apareçam na mesma altura.
Condição do tipo
booleano
Confirmação da
Condição
Palavra-chave
de abertura
If input then
saida1 := 10; Ações
saida2 := 20;

Alternativa Elsif (value1 >= value2) then


saida1 := 30;
saida2 := 40; As Condições
podem conter
Qualquer outra
condição
Else expressões lógicas
saida1 := 50;
saida2 := 60;
Término de
palavra-chave End_If;
Ao usar CASE como elemento de controle para uma programação em seqüência de
passos, a variável requisitada pela estrutura CASE mostra a etapa atual do
processo.

A etapa é processada até que a mensagem lida seja enviada através da estrutura IF
e a próxima etapa seja requisitada.

Ao contrário do elemento IF, o elemento CASE requisita o valor em uma variável


INT. Conforme mostrado no exemplo à seguir, as execuções do programa podem
ser realizadas para as seguintes situações: valores individuais, valores separados
por vírgulas ou valores de variáveis de uma faixa de valor individual ou de uma das
várias faixas de valor.

Todos os valores devem ser selecionados a partir da faixa de valor do tipo de


dados INTEGER (-32768 .. 32767).

Como a estrutura IF, a ELSE está disponível. Apenas um caso é processado por
vez, mesmo se as definições de caso forem sobrepostas.
Variável de verificação do
tipo INT

Case State of
Palavra-chave Início da
de abertura checagem

1: Output := 10;
“Cases” 2,4: Output := 20;
5..8: Output := 30;
9..13, 15..18: Output := 40;

Else
Qualquer outro
valor
Output := 50;
End_Case;
Palavra-chave
de fechamento
O loop FOR no PCWorx Express contradiz a ordem de processamento pré-
determinada em um PLC. Ele poderia ser descrito como um retorno contínuo
dentro do processo do programa, até que o valor da variável atinja o valor final.

Por esta razão, depois da programação com loop, a duração do processamento de


todo a programação (time-out) deve ser prolongada de modo que a task a ser
executada não tenha o tempo expirado.

A instrução Exit permite o aborto prematuro do loop FOR e é executado assim que
o processo atinge esta posição.
Valor inicial Valor final

Palavra-chave
de abertura
For n := 1 To 20 By 1 Do
Incremento
Variável
1 opcional
If (Temperature[n] > Limit value) then
Alarm := TRUE;
Exit;
20 End_If; Interromper o loop
antecipadamente

Palavra-chave
de fechamento
End_For;
1. O motor (M) ficará energizado se, e somente se, o botão liga
(I1) for acionado e o botão desliga (I0) não for acionado. Quando
o motor (M) estiver energizado, o indicador luminoso (L) também
estará energizado. (M) e (L) ficarão desenergizadas caso o botão
desliga (I0) seja acionado.
1.

(* Programa *)

IF I0 AND I1
THEN
M := True;
END_IF;

IF M AND NOT(I0)
THEN
M := False;
END_IF;

RO := M;
2. Criar um bloco que calcula o volume de um cilindro com base
na altura e diâmetro
2.
3. Crie um programa para linearizar sinais
3. Crie um programa para linearizar sinais
3. Crie um programa para linearizar sinais
Qual o diagrama de ligação do ILC131 ETH ?
Qual o diagrama de ligação do ILC131 ETH ?

Power Plug
1.1 + 24 Vcc 2.1 N.C
1.2 + 24 Vcc 2.2 + 24 Vcc
1.3 GND 2.3 GND
1.4 Terra 2.4 Terra

* Os terminais 2.1 e 2.2 são interligados


internamente. Ao conectar um deles ao
24 V da fonte; não há a necessidade de
conectar o outro
Já atribuí um IP no meu controlador, mas não consigo efetuar
Download ou ficar Online com o equipamento
Já atribuí um IP no meu controlador, mas não consigo efetuar
Download ou ficar Online com o equipamento

Razões Verificar
1 Confirme se o Controlador está na mesma faixa de rede do PC
2 Verifique se em Extras/Profinet configuration está selecionada a sua Placa de rede
local
3 Em IEC Programming Workspace, acesse a aba Hardware. Verifique nas
propriedades do recurso STD_RES se o endereço de IP parametrizado é o mesmo
definido pelo projeto e localizado utilizando a ferramenta IP Assigment
Já atribuí um IP no meu controlador, mas não consigo efetuar
Download ou ficar Online com o equipamento
Consigo realizar Upload de uma aplicação caso eu não tenha o
Backup do projeto ?
Consigo realizar Upload de uma aplicação caso eu não tenha o
Backup do projeto ?

Somente após o download do arquivo fonte (Include Sources), pode-se


efetuar o Upload do projeto. Não é possível decodificar o código de máquina.
Pesquisa do Treinamento

Pesquisa do Treinamento
https://goo.gl/Yzk64H

Avaliação
https://goo.gl/forms/Osq3k
h3MygEZ5J4r1

Você também pode gostar