Você está na página 1de 46

Manual Programação Ladder WinTS

Manual de
Programação
Ladder
WINTS
Rev. 29092010
Manual Programação Ladder WinTS

Índice
1. INTRODUÇÃO ...................................................................................................................................................... 4

1.1 CONCEITO SOLARIS DE PROJETO .......................................................................................................................... 4

2. PROGRAMAÇÃO LADDER ..................................................................................................................................... 5

3. CRIANDO UM NOVO PROJETO ............................................................................................................................. 6

4. ESTRUTURA DE DEFINIÇÕES (ÁRVORE DE PROJETOS) .......................................................................................... 7

4.1 DEFINIÇÃO DE VARIÁVEIS, CONSTANTES, ENTRADAS E SAÍDAS E PROTOCOL REGISTERS NA ÁRVORE DE


PROJETOS. ......................................................................................................................................................................... 8

5. CRIANDO UM NOVO DIAGRAMA LADDER.......................................................................................................... 10

6. FERRAMENTAS DA ÁREA DE TRABALHO ............................................................................................................ 11

6.1 VANTAGENS NA PROGRAMAÇÃO LADDER NO WINTS ....................................................................................... 11

6.2 DESCRIÇÃO DAS FERRAMENTAS ........................................................................................................................ 12

6.2.1 CONTACT / CONTACT DOWN (TECLA 1/TECLA 2) ............................................................................................... 13

6.2.2 FUNCTION / FUNCTION DOWN (TECLA 3/ TECLA 4) ........................................................................................... 14

6.2.2.1 DESCRIÇÃO DAS FUNÇÕES CONTATO:................................................................................................................ 14

6.2.3 COIL (TECLA 5) ................................................................................................................................................... 15

6.2.3.1 FUNÇÃO COIL (TECLA 6) ..................................................................................................................................... 16

6.2.3.2 DESCRIÇÃO DAS FUNÇÕES COIL ......................................................................................................................... 16

6.2.3.3 ARGUMENTOS DAS FUNÇÕES COIL .................................................................................................................... 18

7. TRABALHANDO COM SUB-ROTINAS:.................................................................................................................. 26

7.1 CRIANDO A SUB-ROTINA DE INICIALIZAÇÃO DAS VARIÁVEIS: ............................................................................ 26

7.2 CRIANDO UMA SUB-ROTINA: ............................................................................................................................. 26

8. GERADOR DE TELAS PARA IHM .......................................................................................................................... 28

8.1 INICIAR UMA NOVA TELA .................................................................................................................................. 28

8.2 CONFIGURAÇÕES GLOBAIS E CARACTERÍSTICAS DA IHM ................................................................................... 29

8.3 ATRIBUTOS LOCAIS DE TELA .............................................................................................................................. 30

8.4 ELEMENTOS DE PROGRAMAÇÃO DE TELAS (CAMPOS) ....................................................................................... 32

8.5 DESCRIÇÃO DOS ATRIBUTOS DOS CAMPOS ....................................................................................................... 33

8.6 MOVIMENTAÇÃO DOS CAMPOS ........................................................................................................................ 34

9 ADICIONANDO PROGRAMA TS DESCRITIVO NO PROJETO ................................................................................. 35

10 MONITORADOR ................................................................................................................................................. 35

10. DOCUMENTAÇÃO DO PROJETO. ........................................................................................................................ 38

11. EXEMPLOS DE APLICAÇÕES ................................................................................................................................ 39

11.1 EXEMPLO 1: ONDA QUADRADA COM FREQÜÊNCIA FIXA (PWM) ....................................................................... 39

12. TUTORIAL PASSO A PASSO. ................................................................................................................................ 42

2
Manual Programação Ladder WinTS

13. GLOSSÁRIO: ....................................................................................................................................................... 43

3
Manual Programação Ladder WinTS

1. Introdução

Este manual tem por finalidade introduzir ao leitor a linguagem de programação Ladder, utilizando como
suporte o software Windows™ Turbo Solaris (WinTS). Serão apresentados os comandos, funções de bloco e
demais funcionalidades utilizadas para programação. Também será apresentada ao leitor a ferramenta de
geração de telas para IHM (Interface Homem Máquina). A versão atual do software de geração de telas
compreende toda a linha de IHM da Solaris Automation que possuem display de LCD. Neste grupo não se
considerão as IHM’s gráficas das séries DSP9G e superiores (DSP7, DSP84 e demais).

A leitura deste documento possibilita ao usuário a familiarização com a ferramenta de programação Ladder e
geração de telas para IHM de LCD da Solaris Automation.

Atenção: A linguagem Ladder WinTS é compativel para as séries de controladores programáveis


S9200 e S9500 da Solaris Automation. Não deve ser utilizada para outras séries de produtos.

• Windows é marca registrada da Microsoft.

1.1 Conceito Solaris de Projeto


Existem duas alternativas para desenvolvimento de uma aplicação de automação com o software WinTS. A
primeira delas é a programação descritiva Turbo Solaris, e a segunda é construindo um projeto em liguagem
Ladder.

No primeiro contexto, todos os comandos são executados por linhas de programação, com uma linguagem
que se assemelha ao C ou Basic. O processo como um todo é descrito em máquinas de estados, com
eventos específicos que fazem a comutação entre estados. As declarações, atribuições e loops de controle
são escritos em linhas de comando através de palavras chave. É um dialeto escrito de forma lógica. Neste
modo, não existe árvore de projetos.

No segundo contexto existe uma integração visual de programação. É uma interface de desenvolvimento de
software, e serve para facilitar a programação. Através da árvore de projeto o usuário tem acesso as
declarações e definições do processo. Construindo um projeto, o programador tem a integração total entre a
programação do processo em Ladder, chamadas de subrotinas, construção de telas para IHM e módulos de
programação descritiva podem ser incluídos. Neste este caso, somente um módulo pode controlar as telas de
IHM, ou seja, ou as telas são máquinas em linguagem descritiva ou são montadas pelo gerador de telas.
Maiores detalhes serão vistos em capítulo específico.

4
Manual Programação Ladder WinTS

2. Programação Ladder
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 sensores e atuadores.

O surgimento da linguagem está ligado com a evolução dos painéis elétricos de contatos para sistemas
eletrônicos programáveis. Um diagrama Ladder se assemelha a um diagrama esquemático elétrico, porém a
programação possibilita o uso de funções e blocos de comandos além de simples contatos e acionamentos.

A linguagem Ladder está entre as cinco linguagens de programação de CLPs definidas pela IEC 61131-3:
• FBD (Function Block Diagram)
• LD (Ladder Diagram)
• ST (Structured Text)
• IL (Instruciton List)
• SFC (Sequential Function Chart)

É importante ressaltar que este manual de programação não tem finalidade ensinar ao leitor conceitos
básicos de programação, ele apenas apresenta a ferramenta, suas funcionalidades e alguns exemplos. Para
maiores detalhes do modo de execução e lógica de programação é necessário um estudo aprofundado na
teoria de programação Ladder. Diversos sites da internet e livros acadêmicos tratam sobre o assunto. Se o
leitor precisar de suporte, poderá entrar em contato com a Solaris Automation a partir do e-mail
sac@solarisautomation.com ou fone (51) 3337.8599.

5
Manual Programação Ladder WinTS

3. Criando um novo Projeto

Um novo projeto pode ser criado a partir do botão NEW inserido na barra de ferramentas do programa WinTs.
O atalho CTRL+N também pode ser utilizado para a mesma finalidade.

Figura 1: Indicação para criação de um novo projeto

A partir dessa janela escolha a opção TS APPLICATION e clique em NEXT. A seguir escolha um nome
apropriado para o projeto (Ex: Project 1) e clique em CREATE.
Caso já exista um projeto de mesmo nome naquele diretório surgirá uma mensagem em vermelho, como a da
figura abaixo, dizendo que já existe um diretório com o mesmo nome. Até que seja alterado o nome do
projeto a mensagem continuará aparecendo e o botão CREATE continuará desabilitado.

PASSO 2
PASSO 1

Figura 2: Passo 1 e passo 2 da criação de uma aplicação TS

A opção “TS Source File” se refere à criação de um arquivo Turbo Solaris puramente descritivo. Não há,
neste modo, possibilidade de programação Ladder, estrutura de definições ou montagem de telas com o
gerador de telas.

6
Manual Programação Ladder WinTS

4. Estrutura de Definições (Árvore de Projetos)

A partir da definição de um projeto, uma nova janela de opções é habilitada. Nessa janela está a estrutura de
declarações do projeto. Nessa estão agrupadas todas as declarações que usaremos durante o projeto.
Referem-se às entradas e saídas presentes no CLP, assim como variáveis, constantes utilizadas na
programação. Também é possível definir os elementos visíveis numa rede MODBUS ASCII (constituída entre
2 ou mais CLP’s com a arquitetura Mestre-Escravo) e também, caso exista, as configurações globais da IHM
escolhida.

Figura 3: Arvore de projeto; Estrutura geral de declarações da aplicação

Na composição dessa estrutura temos:

Tabela 1: Descrição dos elemetos da arvore de projeto

Item Definição

Digital Input Declaração de entradas digitais


Digital Output Declaração de saídas digitais
Analogic Input Declaração de entradas analógicas
Analogic Output Declaração de saídas analógicas
Protocol Registers Elementos públicos de uma rede MODBUS
Variables Declaração de variáveis
Constants Declaração de constantes
IHM Definição da IHM selecionada pelo Gerador de Telas
Files Criação de um arquivo TS
Screens Criação de telas para IHM com o Gerador de Telas
Ladder Criação de um Ladder principal e/ou sub-rotinas de Ladder
Documentation Documentos pertinentes ao projeto escritos pelo programador

7
Manual Programação Ladder WinTS

4.1 Definição de variáveis, constantes, entradas e saídas e


protocol registers na árvore de projetos.
A árvore de projetos serve para definir todos os elementos que compõem o programa. Pode ser visualizada
na figura 3 deste documento. O usuário tem a opção de alinhar a árvore à direita ou à esquerda da página,
clicando no botão ou , respectivamente.

Os elementos de projeto estão descritos na tabela 1 e são acessados através de um duplo clique sobre o
mesmo, na árvore de projetos. A imagem abaixo é a janela de definição de variáveis.

Duplo click

Figura 3.a: Janela de definição de variáveis

É importante que todos os elementos utilizados no projeto sejam declarados. Preencher o campo
“Description” não altera o funcionamento do programa, porém ajuda a clareza e manutenção futura. Esta
declaração é recomendável e serve como documentação do projeto.

Atenção: procure sempre dar nomes aos elementos que fazem referência ao seu uso. Por exemplo:
sensor1, motor2,..., contador2. Evite nomes como “A”, “var1”, “word2” e etc.
Os nomes das variáveis devem começar por um caracter do alfabeto, não devem constar espaços ou
caracteres diferentes ao alfabeto e algarismos. Duas variáveis não podem possuir o mesmo nome.

Depois de declarada, a variável, ou outro elemento qualquer, estará disponível para utilização no diagrama
Ladder e também no gerador de telas e monitorador. A seguir faremos um exemplo prático da declaração e
uso, a fim de firmar a clareza da explicação.

Os elementos de rede, ou “Protocol Registers”, são entidades públicas da rede MODBUS. São elementos, já
declarados, que o programador deseja tornar visível para o mestre da rede MODBUS.

Um “Protocol Register” é apenas um endereço que indica para a rede onde está o elemento desejado, serve
como um apontador, não é o elemento, é apenas seu local (endereço). Processos dotados de sistema
supervisório irão utilizar os “protocol registers” para ler o estado da máquina e eventualmente atuar sobre ela.
O programador apenas precisa saber quais são os elementos que deseja tornar público. A definição dos
“protocol registers” é, então, feita depois de o programa estar pronto, ou praticamente! É apenas uma questão
de escolher, dentre os elementos utilizados no programa, quais serão importantes para serem visualizados na
rede.

8
Manual Programação Ladder WinTS

Importante: São elementos sempre públicos (não precisam ser definidos como protocol register) os
seguintes: entradas digitais, saídas digitais e entradas de temperatura.

Ou seja, para o caso de uma planta com controle de temperatura, não é necessário declarar como “protocol
register” as entradas de temperatura da placa SAS (todas as entradas analógicas menores do que 64), por
exemplo, para que estas possam ser analisadas por um sistema de supervisão, por exemplo. Ainda, este fato
não exclui os citados da necessidade de declaração na árvore. Por exemplo, uma entrada de temperatura
não precisa estar definida como “protocol register” para ser “vista” por uma rede de supervisórios, porém
necessariamente precisa estar declarada como “Analogic Input” da arvore de projetos para ser corretamente
utilizada pelo programa executivo.

As entradas analógicas seguem a regra de definição dos módulos analógicos da Solaris Automation. A placa
SAS foi desenvolvida especialmente para leitura de temperatura com termopares do tipo J, K, S, T e
termistores do tipo PT-100. São as entradas 1 a 64 (entradas de temperatura). Já a placa SFA foi
desenvolvida para leitura da posição por réguas potenciométricas ou sensores com sinais de 0 a 10 volts ou 4
a 20mA. São as entradas 65 a 128. Cuidado com estas declarações e também com a utilização, é
importante ter sempre em mente a diferença de numeração entre as entradas analógicas.

Os módulos de entrada analógicos e entradas e saídas digitais da Solaris são organizadas em conjunto de 8
ou 16 pontos. Via de regra, módulos analógicos possuem 8 entradas e módulos digitais 16 entradas ou 8 e 16
saídas. O sistema (Kernel) precisa estar configurado pela ordem em que se encontram os módulos, ou seja,
precisa diferenciar entre a entrada 1 (primeira entrada da primeira placa) e entrada 17 (primeira entrada da
segunda placa). Para isto, existe um endereço que é formado por 4 bits. Este endereço é configurado via
hardware, diretamente na placa, por chave tipo dip.

COMO LOCALIZAR E IDENTIFICAR O ENDEREÇAMENTO DOS MÓDULOS?


A identificação do endereço das placas é feita através de um DIP, ou diretamente fios soldados, que se
encontra na face posterior do módulo (diz-se “posterior” a parte com conector grande e branco, é o encaixe
da placa com o “backbone”) e possui e identificação “S1”.

9
Manual Programação Ladder WinTS

5. Criando um novo diagrama Ladder


Para criar um novo diagrama Ladder, clique com o botão direito do mouse na pasta de projeto e selecione a
opção NEW LADDER MAIN FILE, entre com um nome para a rotina. Esta será a rotina principal do programa.
A figura abaixo ilustra o procedimento.

Figura 4: Adicionar novo diagrama Ladder

Figura 5: Área de trabalho

10
Manual Programação Ladder WinTS

6. Ferramentas da Área de Trabalho

São disponibilizadas duas barras de ferramentas importantes para a programação Ladder e mais a janela de
declarações vista anteriormente:

Figura 6: Barra de ferramentas de programação

Figura 7: Utilitários de programação

Podemos observar a linha, chamada RUNG, onde são postos os contatos e funções formando um diagrama
que representará eletricamente a programação de uma máquina, ou processo. O RUNG é a representação
simbólica de um fio. O lado esquerdo representa o +VCC, e o direito (suprimido no Ladder Solaris) a
referência. Um RUNG sem presença de elementos não faz sentido, pois é a representação de um curto-
circuito.

Figura 8: RUNG Ladder. Esquerda representa o +VCC, o direito representa o GND. Os elementos a serem inseridos formam o
circuito, e seu caminho lógico é a corrente elétrica, por isso, um RUNG vazio não faz sentido.

6.1 Vantagens na Programação Ladder no WinTS


Os CLPs da Solaris Automation são otimizados para execução de programas em grande velocidade,
atendendo a demanda de automação de máquinas. Desta forma, mesmo no formato Ladder, a aplicação é
compilada e não interpretada.

Ao contrário de outras soluções disponíveis no mercado, tal iniciativa trás as seguintes vantagens ao
programador:

- não existe limite do número de relações lógicas que podem ser inseridas numa linha (RUNG) do programa;

- a execução do programa faz-se de RUNG a RUNG (na horizontal), e não pela varredura de colunas
conforme solução adotada por outros fabricantes;

- não existe o conceito de matriz de programação, onde parte do programa deve estar estruturada em células
limitadas em determinados números de linhas e colunas;

- para as entradas e saídas digitais, adota-se o conceito de memória imagem. Isto é, os estados lógicos das
entradas e saida digitais é lido no inicio de um ciclo de execução e escrito (estado dos coils) no final do ciclo
de execução;

- para as entradas e saidas analógicas, permite-se dois tipos de operação para leitura ou escrita. Ou adota-se
o valor disponível na memória imagem, ou por parametrização do usuário no bloco de função, faz-se a leitura

11
Manual Programação Ladder WinTS

e escrita imediata (tempo real) na execução da lógica. Esta segunda opção é recomendável para acesso de
eventos analógicos rápidos, como a leitura da posição por uma régua linear potenciométrica;

- numa mesma aplicação é possivel optarmos pela utilização da linguagem Ladder ou descritiva. Para isto
basta inserir na árvore de projeto esta definição. Não existe forma de chamada de um programa em Ladder
para uma parte em linguagem descritiva e vice-versa (na forma de subrotinas ou jumpers), porém as duas
compartilham as mesmas variáveis anteriormente declaradas.

Considerando que a aplicação é compilada e não interpretada, o WinTS não possui variáveis Booleanas
(compostas por apenas um bit). Desta forma, o usuário deve utilizar posições de Variáveis de 16 bits para
implementar lógicas Booleanas, a partir das funções STORE_BIT e BIT.

6.2 Descrição das Ferramentas

Tabela 2: Descrição dos elementos das barras de ferramentas de utilitários e programação

Ferramenta Definição

Insere um Label que deverá ser atingido por um Jump


(pulo). O Label é uma etiqueta que identifica um RUNG.
Insert Label OBS: O Jump sempre deve ser feito para uma posição
abaixo no diagrama Ladder, se for feito um Jump para cima
ao chegar nesse ponto o CLP irá reiniciar.
Delete Row Deleta um RUNG do Ladder. Tecla de Atalho (–).
Insert Row Insere um novo RUNG no Ladder. Tecla de Atalho (+).
Insert Before Insere um novo RUNG acima do selecionado.

Insert After Insere um novo RUNG abaixo do selecionado.


Cola um campo que foi copiado anteriormente (comando
Paste
não habilitado para a versão atual).
Copia um campo selecionado (comando não habilitado
Copy
para a versão atual).
Recorta um campo selecionado (comando não habilitado
Cut
para a versão atual).
Close File Fecha a janela de Ladder em foco.

Selection Usa o ponteiro do mouse para selecionar campos.


Insere a leitura de um contato. Pode ser uma entrada
Insert CONTACT digital, saída digital ou uma variável (booleano)
Insere a leitura de um contato em paralelo. Pode ser uma
Insert CONTACT Down entrada digital, saída digital ou uma variável (booleano)
Insere uma função de contato. É uma função de teste que
Insert Function habilita ou não o Rung.
Insere uma função de contato em paralelo com um contato
Insert Function Down ou uma função de contato já existente. É uma função de
teste que habilita ou não o Rung.
Insere um COIL no fim do RUNG. O COIL pode ser uma
Insert COIL saída ou uma variável. É uma atribuição.

Insert COIL Function Insere uma função de COIL no fim do RUNG. É uma ação.

Insert Jump Insere um pulo que deve ser feito até um label.

12
Manual Programação Ladder WinTS

Insere um label que deverá ser atingido por um jump. OBS:


O jump sempre deve ser feito para uma posição abaixo no
Insert Label diagrama Ladder, se for feito um jump para cima, ao chegar
nesse ponto o CLP irá reiniciar.

Insert Ladder Subroutine Call Insere uma chamada de sub-rotina Ladder.


Dentro de uma sub-rotina Ladder esse comando insere um
Insert Ladder Subroutine Return retorno para o Ladder principal.

Atalho para F_TRIG Insere um contato de transição de borda de descida.

Atalho para R_TRIG Insere um contato de transição de borda de subida.


Insere um contato de transição de borda de descida em
Atalho para F_TRIG paralelo.
Insere um contato de transição de borda de subida em
Atalho para R_TRIG paralelo
Insere uma função de coil de detecção de borda de
Atalho para OUT_DOWN descida.

Atalho para OUT_UP Insere uma função de coil de detecção de borda de subida.

6.2.1 Contact / Contact Down (tecla 1/tecla 2)

Esta ferramenta adiciona um Contato ao diagrama. Ela verifica o valor de um elemento booleano e habilita ou
bloqueia o RUNG na qual ele pertence. Análogo a uma chave em um circuito elétrico, tem a funcionalidade de
verificar o estado ON/OFF de um elemento de programação. É interessante notar que podemos colocar como
contato, uma saída digital. De fato, estaríamos nesse caso realizando a leitura de uma saída digital. Seria
verificado se a saída está ligada ou desligada.

A figura abaixo ilustra as possibilidades de escolha de um contato. A tabela da imagem representa os


elementos já declarados na árvore de projeto.

Figura 9: Janela de escolha de elementos.

13
Manual Programação Ladder WinTS

O comando contato possui, além do argumento de identificação (NAME), o argumento NEGATED. Este indica
o tipo de contato que será usado. Assim como um sensor possui natureza Normalmente Fechado (NF) ou
Normalmente Aberto (NA), NEGATED indica se a lógica de leitura é direta ou inversa. Caso este argumento
esteja configurado para TRUE, o contato é lido com lógica inversa, ou seja, se o elemento estiver com valor
lógico 1 a resposta será o valor lógico 0, e vice-versa. A imagem abaixo mostra um modo de configuração de
argumento.

Figura 10: Aba de configuração de argumentos

Contatos em paralelos são definidos pelo seguinte procedimento: selecione a posição onde deseja-se inserir
um contato em paralelo. Selecione em seguida contato tipo (2) da Figura 6. Defina o argumento e a lógica
(NA ou NF).

6.2.2 Function / Function Down (tecla 3/ tecla 4)

As funções contato são blocos de função que realizam testes entre argumentos e/ou verificação de
operandos. A saída deste tipo de bloco é booleano. Libera ou bloqueia o RUNG no qual está presente.
Funciona de modo análogo a uma chave em um circuito elétrico, porém ao invés de apenas testar um
contato, pode fazer a análise de mais de um argumento e operar sob um algoritmo.

Figura 11: Janela de funções contato

6.2.2.1 Descrição das Funções Contato:


Tabela 3: Descrição das funções contato

Code Block Definição

BIT Verifica se um bit (de 0 a 15) de uma variável é 0 ou 1

14
Manual Programação Ladder WinTS

CMP Compara dois valores (OP1 e OP2) de 16 BITS


F_TRIG Contato sensível à borda de descida. Verdadeira quando desce a entrada
IN_I Realiza a leitura de uma entrada digital indexada
IN_X Realiza a leitura imediata de uma entrada digital
R_TRIG Contato sensível à borda de subida. Verdadeira quando sobe a entrada
O rung só é válido no primeiro ciclo de máquina. Útil para chamar subrotina de
START_RUN
inicialização de variáveis e funções que necessitam de PRESET.
T Verifica se um elemento de uma tabela é 0

Todas as funções acima são condicionais booleanos. Apresentam saída 0 ou 1 a depender da entrada e a
relação exercida com os argumentos. Abaixo é apresentado um exemplo de visualização das funções
contato.

Figura 12: Exemplo de visualização de funções contato

6.2.3 Coil (tecla 5)


O Coil é a representação de uma bobina elétrica, em Ladder. É um elemento booleano e tem a função de
Ligar/Desligar uma saída digital ou colocar uma variável em nível lógico 1 ou 0. O argumento “Assign” pode
ser de 4 tipos diferentes, são implementados de acordo com a norma IEC 61131-3:

Tabela 4: Descrição do argumento assign de Coil

ASSING Definição Desenho

Segue o valor de entrada. Liga quando rung


NORMAL
assume 1, desliga quando rung assume 0
Inverso do valor de entrada. Liga quando
NEGATED rung assume 0, desliga quando rung
assume 1.
Liga quando rung assume 1 e mantém valor
SET até bobina Reset, do mesmo elemento,
assumir valor 1.
Desliga quando rung assume 1 e mantém o
RESET valor até uma bobina Set, do mesmo
elemento, assumir valor 1.

O exemplo abaixo mostra uma saída digital (dout1) que inicia em nível lógico 1, acionada pelo COIL com o
atributo assing configurado para SET. O bloco START_RUN faz com que o rung 1 seja varrido somente uma
vez (no primeiro ciclo de varredura). O rung 2 faz duas comparações quaisquer, e se ambas forem satisfeitas,
dout1 é desligado pela bobina tipo RESET.

15
Manual Programação Ladder WinTS

Figura 13: Exemplo de uso do Coil Set e Reset

Atenção: a boa prática de programação em linguagem Ladder orienta para que uma saída (coil) do tipo
Normal ou Negada de ponto digital, analógico ou varíavel, somente seja declarada uma vez no
programa. Isto porque, em modo de execução, todos os RUNGs são normalmente executados. Desta
forma, se uma saida (coil) para um determinado de ponto for definida mais de uma vez, apenas o estado
do último RUNG será considerado.

6.2.3.1 Função Coil (tecla 6)

A função coil é assim chamada por executar uma ação, e não um teste, como o caso das funções contato.
Em um circuito elétrico, pode ser comparado a um amplificador somador, por exemplo, que tem a função de
executar uma soma entre dois elementos. Pelo mesmo exemplo, tem-se o bloco ADD de Ladder que realiza a
soma entre 2 elementos. A figura abaixo mostra o quadro de escolhas de função. Este quadro aparece como
opção de seleção para o usuário no momento da inserção de uma função coil pelo ícone Insert Funcion Coil
ou pela tecla de atalho 6.

Figura 14: Janela de funções Coil

6.2.3.2 Descrição das Funções COIL

A tabela abaixo trás uma breve descrição das funções coil.

16
Manual Programação Ladder WinTS

Tabela 5: Descrição das funções coil

Code Block Definição

ADD Soma dois operadores de 16 bits e atribui o resultado a variável


ANAIN Leitura de Canal analógico
ANAOUT Escreve em canal analógico
Realiza operação lógica AND entre dois operadores de 16 bits e atribui
AND
resultado a variável.
BEEP Executa um sinal sonoro da IHM.
COPY Copia um dado de 16 bits para uma variável
CTD Contador crescente.
CTU Contador decrescente.
CTUD Contador crescente e decrescente.
D_ABS Copia o valor de uma variável e complementa se for negativo.
DEC Decrementa uma variável de 16 bits até zero.
Realiza a divisão inteira de dois dados de 16 bits e atribui valor a uma
DIV
variável de 16 bits.
Leitura dos contadores rápidos. Se qualquer opção de seleção modificar,
FAST_COUNTER
reiniciar contador. Possibilidade de multiplexar os canais e configurações.
Testa a permanência (hold) de tecla do teclado secundário. Se mantém
pressionado responde com a ativação de uma saída digital ou
HOLDKEY2 incremento/decremento de uma variável. Útil para movimentação manual da
maquina. Possui temporização de contagem (caso aplicável) e de tecla
pressionada em mili segundos.
INC Incrementa uma variável de 16 bits até 65535.
MODBUS Habilita ou desabilita a comunicação em MODBUS.
MODBUS_PRESET Configura uma rede MODBUS escravo.
MULT Multiplica dois dados de 16 bits e atribui resultado a uma variável de 16 bits.
Atribui o valor de uma variável para uma primeira variável se for 1 e para
MUX2
uma segunda variável se for 0.
NOT Faz o complemento de todos os bits de uma variável de 16 bits.
Faz a operação lógica OR entre dois dados de 16 bits e atribui o resultado a
OR
uma variável de 16 bits.
OUT_DOWN Função sensível à borda de descida. Aciona se o RUNG for para zero.
OUT_I Realiza a escrita, de modo imediato, em uma saída digital
OUT_UP Função sensível à borda de subida. Aciona se o RUNG for para 1
OUT_X Realiza a escrita indexada de canal digital
PID Comandos para controle de PID
PID_PRESET Configura módulo PID
RANGE_TO_COIL Liga ou desliga variável conforme o range do dado de entrada do bloco.
Realiza a leitura do teclado secundário. A variável recebe o valor de retorno
READKEY2
da tecla pressionada.
Faz a divisão inteira de dois dados de 16 bits e atribui o resto dessa divisão
RESTO
a uma variável de 16 bits.
SCALE Faz a conversão de uma escala de 16 bits para outra escala de 16 bits.

17
Manual Programação Ladder WinTS

Prepara o modulo para a conversão de escala, sendo que X0-X1 são os


SCALE_PRESET valores iniciais e final da escala de entrada e Y0-Y1 são os valores iniciais e
final da escala de saída.
Atribui a uma variável de destino uma das duas variáveis de operação,
SEL2
dependendo se o RUNG for 0 ou 1.
Atribui a uma variável o valor de outra variável deslocada para a esquerda
SHL
quantos bits programado.
Atribui a uma variável o valor de outra variável deslocada para a direita
SHR
quantos bits programado.
STORE_BIT Liga ou desliga um determinado bit de uma variável de 16 bits.
SUB Subtrai dois dados de 16 bits e atribui o resultado a uma variável de 16bits.
SYSTM_VAR_GET Acessa variável interna do sistema.
SYSTM_VAR_PUT Atualiza variável do sistema.
SYSTM_VAR_SUB Calcula diferença de tempo com timer de sistema.
T_COPY Copia de uma tabela para outra tantos elementos quanto possível.
T_COPY_W Copia para diversas variáveis valores de uma tabela.
T_DECLARE Cria tabela personalizada com inicialização.
T_DRUM Lê o próximo elemento de uma tabela rotativa.
T_MUX Escreve em posição da tabela.
T_SEL Lê uma posição de uma tabela criada.
Temporizador com tempo ajustável e saída de contagem, podendo ser:
TIMER Pulso até terminar contagem; Ativa saída após termino da contagem e
Desliga saída após termino da contagem.
Executa a operação lógica XOR (exclusive OR) de dois dados de 16 bits
XOR
atribuindo resultado a uma variável de 16 bits.

6.2.3.3 Argumentos das Funções Coil


Quando adicionamos uma função Coil no diagrama, é necessário definir seus argumentos. Para tal, a aba
“Ladder” na janela de projeto, mostra todos os itens relativos a função selecionada. Todos os itens de
argumentos devem ser obrigatoriamente preenchidos, sob pena de serem definidos valores default.

A quantidade, tipo e opções dos argumentos são variados e dependem de qual o bloco foi escolhido. A
aparência da janela de configurações é como a apresentada nas figuras abaixo.

Figura 15: Exemplo da aparência da aba Ladder de configuração de atributos

18
Manual Programação Ladder WinTS

A tabela abaixo trás a relação completa das funções e seus argumentos

Tabela 6: Descrição dos argumentos das funções contato

Função Definição

Função: Soma dois operadores de 16 bits e atribui o resultado a uma variável.


DEST: Variável que de destino do resultado da operação de soma.
ADD
OP1: Primeiro Operando.
OP2: Segundo Operando.
Função: Efetua leitura de uma canal analógico de entrada (12 bits).
SOURCE: Entrada analógica a ser lida. É possível indexar ou acessar
diretamente
DEST: Variável de destino do valor lido.
ANAIN
SCALE_NO: Índice de uma função de escala. Valor lido em escala. Necessário
usar a função SCALE_PRESET para configurar o vetor de escala antes de usar
esta opção.
TIMMING: Momento do ciclo de varredura onde é efetivamente efetuada a
leitura.
Função: Efetua a escrita de uma valor a uma canal analógico de saida (12 bits).
SOURCE: Valor que deverá ser escrito na saída analógica
DEST: Canal analógico de saída. É possível indexar ou acessar diretamente
SCALE: Índice de uma função de escala. Valor escrito em escala. Necessário
ANAOUT
usar a função SCALE_PRESET para configurar o vetor de escala antes de usar
esta opção.
TIMMING: Momento do ciclo de varredura onde é efetivamente efetuada a
escrita.
Função: Efetua a operação lógica AND entre dois operadores de 16 bits e atribui
o resultado a uma variável.
AND DEST: Variável que receberá o resultado da operação binária AND.
OP1: Primeiro Operando.
OP2: Segundo Operando.
Função: aciona o alarme sonoro na IHM. A duração é determinada pelo tempo
BEEP de habilitação desta função.
TOM: Tom do beep sonoro, a ser escolhido na lista de opções.
Função: copia um dado para uma variável de 16 bits.
COPY DEST: Variável de destino.
SOURCE: Dado a ser copiado.
Função:: efetua contagem descrescente.
LOAD: Valor booleano que inicia a contagem.
CTD PRESET: Valor inicial de contagem.
Q: Valor booleano. Nível lógico 1 para contagem igual a 0. (If CV=0 then Q = 1).
CV: Acumulador da contagem. Guarda valor atual.
Função: efetua contagem crescente.
RESET: Valor booleano que zera a contagem.
PRESET: Valor limite de contagem.
CTU
Q: Valor booleano. Nível lógico 1 para contagem igual a PRESET. (If
CV=PRESET then Q = 1).
CV: Acumulador da contagem. Guarda valor atual.

19
Manual Programação Ladder WinTS

Função: efetua contagem crescente ou descrescente.


CNT_UP: Valor booleano. Seleciona contador crescente (em 0, decrescente)
PRESET: Valor limite de contagem (UP)
RESET: Booleano. Zera o contador (UP)
CTUD LOAD: Booleano. Valor inicial de contagem (Down)
QU: Valor booleano. Nível lógico 1 para contagem igual a PRESET. (If
CV=PRESET then Q = 1).
QD: Valor booleano. Nível lógico 1 para contagem igual a 0. (If CV=0 then Q = 1).
CV: Acumulador da contagem. Guarda valor atual.
Função: copia o valor absoluto (módulo) de uma variável em outra.
D_ABS DEST: variável destino do valor a ser copiado.
SOURCE: variável origem do valor a ser copiado.
Função: Decrementa uma variável de 16 bits até zero.
DEC
DEST: Variável a decrementar. Até zero.
Função: Realiza a divisão inteira de dois dados de 16 bits e atribui valor a uma
variável de 16 bits.
DIV DEST: Variável. Recebe o valor inteiro da divisão. Quociente.
OP1: Primeiro elemento. Dividendo.
OP2: Segundo elemento. Divisor.
Função: Disponibiliza o valor de um contador rápido.
CHANNEL: Canal do contador. CT0 ou CT1.
READ: Variável. Armazena o valor de contagem.
FAST COUNTER
RELOAD: Opção de recarga automática (carrega o valor de preset ou
zeramento)
DIRECTION: Opção de direção de contagem.
Função:Testa a permanência (hold) de tecla do teclado secundário (teclas da
IHM). Se mantém pressionado responde com a ativação de uma saída digital ou
incremento/decremento de uma variável. Útil para movimentação manual de
máquinas. Possui temporização de contagem (caso aplicável) e de tecla
pressionada em mili segundos.
DEST: Elemento que recebe ação da tecla pressionada. Ligar saída digital ou
incrementar/decrementar variável.
HOLDKEY2 KEY: Tecla do teclado secundário a ser testada.
HOLDTIME: Tempo mínimo para sistema identificar real intenção do operador
em manter a tecla pressionada.
REPEATTIME: Aplicável somente para DEST como sendo uma variável. É o
intervalo de tempo de repetição em que a variável será
incrementada/decrementada.
OPERATION: Aplicável somente para DEST como sendo uma variável. Escolha
de incremento/decremento.
Função: Incrementa uma variável de 16 bits até 65535.
INC
DEST: Variável para incrementar. Com controle de limite zero.
Função: Desabilita ou habilita a comunicação MODBUS ASCII
MODBUS
COMMUNICATION: Habilita ou inibe a comunicação de rede MODBUS.
Função: configura o CLP como escravo de uma rede MODBUS ASCII
PLC_ID: Numero do CLP escravo na rede MODBUS.
MODBUS_PRESET
CHANNEL: Canal de comunicação do CLP.
BAUD: Taxa de comunicação.
Função: Multiplica dois dados de 16 bits e atribui o resultado numa variável de
MULT 16 bits (não verifica o overflow).
DEST: Variável de destino da multiplicação.

20
Manual Programação Ladder WinTS

OP1: Primeiro operando.


OP2: Segundo operando.

Função: atribui valor para uma de duas variáveis. Para a primeira se o resultado
do RANG for 1 ou para a segunda se o resultado for 0.
MUX2 SOURCE: Dado de origem.
DEST_OFF: Variável de destino quando RUNG estiver em nivel lógico 0.
DEST_ON: Variável de destino quando RUNG estiver em nível lógico 1.
Função: Faz o complemento de todos os bits de uma variável de 16 bits.
NOT DEST: Variável de destino da operação binária NOT.
SOURCE: Elementos a ser complementado. Todos os bits são invertidos.
Função: Faz a operação lógica OR entre dois dados de 16 bits e atribui o
resultado a uma variável de 16 bits.
OR DEST: Variável de destino da operação binária OR.
OP1: Primeiro operando.
OP2: Segundo operando.
Função: Função sensível a borda de descida. Aciona se o RUNG for para zero.
OUT_DOWN
Q: Elemento que se deseja monitorar a borda de descida.
Função: realiza escrita imediata a uma saida digital.
OUT_I DEST: Relé de saída. Saída digital a ser acionada.
OPERATION: Tipo de saída digital.
Função: Função sensível a borda de subida. Aciona se o RUNG for para 1.
OUT_UP
Q: Elemento que se deseja monitorar a borda de subida.
Função: Realiza escrita indexada a um ponto de saída digital.
OUT_X INDEX: Índice da saída digital.
OPERATION: Tipo de saída digital.
Função: Comandos de controle de PID.
PID
COMMAND: Opções de operação do PID. STOP, RUN e AUTOTUNE
Função: Configura módulo PID.
CHANNEL: Número de canal de PID.
PV: Local de onde é lido o sinal do processo.
PID_PRESET
SP: Variável que contém o SetPoint programado do processo.
CV: Sinal de saída. Variável de controle do processo.
TSZ: Tempo de amostragem.

21
Manual Programação Ladder WinTS

Função: Liga e desliga a variável conforme o range do dado de entrada do bloco.


SOURCE: Elemento de leitura, controle. Sinal a ser monitorado.
RANGE_1: Limite superior 1. Aciona DEST_1 e desliga todas as demais.
DEST_1: Flag 1. De zero a RANGE_1, DEST_1 = 1; demais = 0.
RANGE_2: Limite superior 2. Aciona DEST_2 e desliga todas as demais.
DEST_2: Flag 2. Entre RANGE_1 e RANGE_2, DEST_2 = 1; demais = 0.
RANGE_3: Limite superior 3. Aciona DEST_3 e desliga todas as demais.
DEST_3: Flag 3. Entre RANGE_2 e RANGE_3, DEST_3 = 1; demais = 0.
RANGE_4: Limite superior 4. Aciona DEST_4 e desliga todas as demais.
RANGE_TO_COIL
DEST_4: Flag 4. Entre RANGE_3 e RANGE_4, DEST_4 = 1; demais = 0.
RANGE_5: Limite superior 5. Aciona DEST_5 e desliga todas as demais.
DEST_5: Flag 5. Entre RANGE_4 e RANGE_5, DEST_5 = 1; demais = 0.
RANGE_6: Limite superior 6. Aciona DEST_6 e desliga todas as demais.
DEST_6: Flag 6. Entre RANGE_5 e RANGE_6, DEST_6 = 1; demais = 0.
RANGE_7: Limite superior 7. Aciona DEST_7 e desliga todas as demais.
DEST_7: Flag 7. Entre RANGE_6 e RANGE_7, DEST_7 = 1; demais = 0.
RANGE_8: Limite superior 8. Aciona DEST_8 e desliga todas as demais.
DEST_8: Flag 8. Acima de Range_7, DEST_8 = 1; demais = 0.
Função: Realiza a leitura do teclado secundário das IHMs.
READKEY2
DEST: Variável que recebe a tecla pressionada.
Função: Faz a divisão de duas variáveis de 16 bits e atribui o resto dessa divisão
a uma variável de 16 bits.
RESTO DEST: Variável. Recebe o valor inteiro do RESTO da divisão. Quociente.
OP1: Primeiro elemento. Dividendo.
OP2: Segundo elemento. Divisor.
Função: Faz a conversão de uma escala de 16 bits para outra escala de 16 bits.
SOURCE: Valor que se deseja converter.
SCALE
DEST: Variável que recebe o valor de SOURCE já convertido.
SCALE_NO: Índice de uma escala já definida em SCALE_PRESET
Função: prepara o módulo para a conversão de escala, sendo que X0-X1 são os
valores inicial e final da escala de entrada e Y0-Y1 são os valores inicial e final da
escala de saída.
X0: Valor inicial de entrada da função escala. Numa conversão de 0 a 4095 para
0 a 10, X0 = 0;
X1: Valor final de entrada da função escala. Numa conversão de 0 a 4095 para 0
SCALE_PRESET
a 10, X1 = 4095;
Y0: Valor inicial de saída da função escala. Numa conversão de 0 a 4095 para 0
a 10, Y1 = 0;
Y1: Valor final de saída da função escala. Numa conversão de 0 a 4095 para 0 a
10, Y2 = 10;
SCALE_NO: Índice que identifica a escala.
Função: Atribui uma variável de destino de uma de duas variáveis de entrada,
dependendo se o RUNG for 0 ou 1.
DEST: Recebe o valor de OP_OFF ou OP_ON a depender no nível lógico do
SEL2
RUNG
OP_OFF: Valor de origem para nível lógico do RUNG = 0
OP_ON: Valor de origem para nível lógico do RUNG = 1
Função: Atribui a uma variável o valor dos bits deslocados para a esquerda de
uma outra variável.
SHL
DEST: Recebe o elemento SOURCE após operação de SHIFT LEFT
SOURCE: Elemento no qual se deseja realizar operação de SHIFT LEFT

22
Manual Programação Ladder WinTS

SHIFT: Quantidade de bits a deslocar para direita (multiplica SOURCE por


potência de 2)

Função: Atribui a uma variável o valor dos bits deslocados para a diretia de uma
outra variável.
DEST: Recebe o elemento SOURCE após operação de SHIFT LEFT
SHR
SOURCE: Elemento no qual se deseja realizar operação de SHIFT LEFT
SHIFT: Quantidade de bits a deslocar para esquerda (divide SOURCE por
potência de 2)
Função: Liga ou desliga um determinado bit de uma variável de 16 bits.
STORE_BIT DEST: Variável no qual se deseja realizar operação
BIT_NO: Numero do bit (0 a 15) que se deseja ligar/desligar
Função: Subtrai dois dados de 16 bits e atribui o resultado a uma variável de 16
bits.
SUB DEST: Recebe o valor da operação de subtração
OP1: Primeiro operador da subtração (esquerda do sinal)
OP2: Segundo operador da subtração (direita do sinal)
Função: Acessa uma variável interna do sistema.
SYSTM_VAR_GET DEST: Recebe o valor de uma variável interna do sistema.
SYSTEM_VAR: Relação de variáveis do sistema.
Função: Escreve numa variável interna do sistema.
SYSTM_VAR_PUT SOURCE: Elemento SOURCE do valor da variável do sistema a atualizar
SYSTEM_VAR: Relação de variáveis do sistema.
Função: Calcula a diferença de tempo com timer do sistema.
DEST: Variável que recebe o valor da subtração de tempo.
SYSTM_VAR_SUB SOURCE: último tempo registrado. Primeiro elemento (direita do sinal)
SYSTEM_VAR: Tempo atual. Segundo elemento (esquerda do sinal de
subtração)
Função: Copia conteúdo de dados entre tabelas.
TAB_DEST: Numero identificador da tabela de destino da cópia
T_COPY TAB_SOURCE: Numero identificador da tabela de origem (já declarada)
START_DEST: Em qual posição começa a cópia
START_SOURCE: A partir de qual posição inicia a cópia
Função: Copia para variáveis os valores de dados de uma tabela.
TAB_NO: Numero identificador da tabela de origem (já declarada)
DEST_1: Variável de destino do primeiro valor da tabela
DEST_2: Variável de destino do segundo valor da tabela
DEST_3: Variável de destino do terceiro valor da tabela
DEST_4: Variável de destino do quarto valor da tabela
DEST_5: Variável de destino do quinto valor da tabela
DEST_6: Variável de destino do sexto valor da tabela
DEST_7: Variável de destino do sétimo valor da tabela
T_COPY_W
DEST_8: Variável de destino do oitavo valor da tabela
DEST_9: Variável de destino do nono valor da tabela
DEST_10: Variável de destino do décimo valor da tabela
DEST_11: Variável de destino do décimo primeiro valor da tabela
DEST_12: Variável de destino do décimo segundo valor da tabela
DEST_13: Variável de destino do décimo terceiro valor da tabela
DEST_14: Variável de destino do décimo quarto valor da tabela
DEST_15: Variável de destino do décimo quinto valor da tabela
DEST_16: Variável de destino do décimo sexto valor da tabela

23
Manual Programação Ladder WinTS

Função: Cria uma tabela de dados (genérica quanto ao tamanho)


TAB_NO: Numero identificador da tabela a ser declarada
MAX_INDEX: Tamanho da tabela
T_DECLARE
DATA_TYPE: Tipo de elemento a ser armazenado
STORAGE: Local de armazenamento
PRE_RESET: Inicialização com zeros
Função: Lê o próximo valor de uma tabela rotativa.
TAB_NO: Numero identificador da tabela (Já declarada)
LEN: Tamanho da tabela
T_DRUM DEST: Variável que contém o valor atual
RESET: Controle que faz retornar ao passo inicial
STEP: Variável que contém qual é o passo atual
Q: Controle que indica o final da tabela
Função: Escreve um dado numa posição da tabela.
TAB_NO: Numero identificador da tabela (Já declarada)
T_MUX SOURCE: Dado a gravar
INDEX: Posição da tabela para gravar o dado
INDEXT_ADJUST: Opção de controle automático de avanço e recuo de INDEX
Função: Lê um dado numa posição de uma tabela já existente.
TAB_NO: Numero identificador da tabela (Já declarada)
T_SEL DEST: Variável a receber o dado
INDEX: Posição da tabela a ler o dado
INDEXT_ADJUST: Opção de controle automático de avanço e recuo de INDEX
Função: Temporizador com tempo ajustável e saída de contagem, podendo
trabalhar como: pulso até terminar a contagem; ativa a saída após término de
contagem; ou desliga saída após termino da contagem.
PRESET: Valor limite de contagem. Tempo de contagem.
TIMER
TIMMING: Unidade de tempo.
CV: Variável acumuladora de tempo.
Q: Saída do Timer.
MODE: Modo de temporização. (VER imagem figura 16).
Função: Executa a operação lógica XOR (exclusive OR) de dois dados de 16
bits atribuindo resultado a uma variável de 16 bits.
XOR DEST: Variável a receber o valor da operação binária XOR (OU-exclusivo).
OP1: Primeiro elemento da operação.
OP2: Segundo elemento da operação.

24
Manual Programação Ladder WinTS

Figura 16: Gráficos de modo de funcionamento do bloco TIMER

25
Manual Programação Ladder WinTS

7. Trabalhando com Sub-rotinas:

A sub-rotina é um diagrama Ladder chamado eventualmente pela rotina principal, de acordo com a
necessidade do programador. No momento de atendimento da sub-rotina, o diagrama principal (chamado
Main), pára sua execução até que a sub-rotina encontre o comando “return”, e retorna assim ao ponto de
onde havia parado.

É um recurso utilizado pelo programador quando existem procedimentos repetitivos num mesmo ciclo de
varredura. Diminui o tamanho do código principal e facilita à depuração Um exemplo é o caso de um
processo que necessite ler e manipular várias vezes, num mesmo ciclo de máquina (varredura), a pressão de
uma linha hidráulica. O programa principal apenas chama a sub-rotina que lê e manipula a pressão, então se
utiliza dos resultados dos cálculos para prosseguir com a atuação necessária.

7.1 Criando a Sub-rotina de Inicialização das Variáveis:

Ë recomendável iniciar uma aplicação com o uso de uma sub-rotina controlada por uma função contato,
denominada de “START_RUN” para inicializar variáveis.

Quando uma variável é declarada, ela recebe um valor aleatório atribuído pelo sistema, até que seja
carregado por algum dado do usuário, ou como resultado de calculo e aquisições de sinal. Deste modo
podem ocorrer diversos erros no inicio do programa, pois o programador não sabe quais são os valores
iniciais das variáveis. Então podemos logo imaginar que se um cálculo de multiplicação, por exemplo, esteja
previsto no diagrama, é bem possível que ocorrerá erro de execução por “overflow”. De modo geral estes
erros são difíceis de detectar, visto que a lógica pode estar certa, porém o dado inserido é inválido e cria uma
situação de instabilidade, fazendo inclusive o processo parar.

Visto a importância da inicialização das variáveis, é extremamente recomendável que o programador crie
uma sub-rotina específica para efetuar este procedimento – sugere-se o nome Start_Run. Também é possível
criar uma rotina em linguagem descritiva e adicionar no projeto através da árvore de projeto. Veremos este
procedimento adiante. Porém muito cuidado! Pois os primeiros estados do diagrama Ladder irão executar
primeiro do que os primeiros estados da programação descritiva, então caso as inicializações (quando feitas
em descritiva TS) estiverem em estados após o STATE 0, é possível que o mesmo erro torne a ocorrer!
Então é recomendável, para total segurança e certeza, que as inicializações sejam feitas através de uma sub-
rotina Ladder.

7.2 Criando uma Sub-rotina:

A opção de criação de uma sub-rotina Ladder somente é disponibilizada após a criação de uma rotina
principal, por razões óbvias. O caminho de criação é o mesmo para ambas. Clicamos com o botão direito a
árvore de projetos, aba Project. Aparecerá a opção “NEW LADDER SUBROUTINE FILE”, assim como mostra
a figura a seguir.

26
Manual Programação Ladder WinTS

Figura 17: Criando uma nova subrotina

O que se segue é a inicialização de um novo diagrama Ladder, que inicia somente com um RUNG. É
necessário adicionar um retorno através do comando “Insert Ladder Subroutine Return” ( - Tecla de
atalho 0). Este retorno pode estar condicionado a um teste ou leitura, porém não pode estar em um rung com
mais de um elemento de saída, ou seja, deve ser o único Coil do rung.
Para chamar uma sub-rotina através do diagrama principal, usa-se o comando “Insert Ladder Subroutine Call”
( - Tecla de atalho 9). Novamente, deve ser o único Coil do rung. A imagem abaixo mostra a janela no
qual se encontram as sub-rotinas disponíveis deste projeto. Caso ainda não existam sub-rotinas no projeto,
uma mensagem de erro aparecerá na tela.

Figura 18: Janela de subrotine call

27
Manual Programação Ladder WinTS

8. Gerador de Telas para IHM


O gerador de telas, como o próprio nome diz, é uma ferramenta que auxilia a montagem das telas da IHM,
assim como as funcionalidades necessárias para operar a máquina. A partir dos campos de operação, e seus
respectivos atributos, o programador irá oferecer as opções de operação da máquina. A integração com o
Ladder é completa. Todos os elementos declarados na árvore de projeto são acessados diretamente pelo
gerador de telas. É importante salientar que tanto o Ladder quanto o gerador de telas são módulos acessíveis
somente com a criação de projeto.

8.1 Iniciar uma nova tela


Para criar uma nova tela, clique com o botão direito do mouse na pasta de projeto e selecione a opção NEW
IHM SCREEN. Esta será a primeira tela da IHM, a inicial, e possivelmente a principal. A figura abaixo ilustra o
procedimento.

Figura 19: Adicionar uma nova tela de IHM

Quando a primeira tela é adicionada, precisamos escolher qual a IHM será utilizada no projeto. Na janela que
segue, o usuário pode escolher, através de “IHM Model:”, qual o modelo escolhido. Os itens da tabela que
são amostrados em cinza dizem respeito a atributos e características globais da IHM. Já os pretos, são
opções de configuração que o usuário tem pode modificar de acordo com sua necessidade. Mais detalhes
serão vistos a seguir.

Figura 20: Janela de escolha e configurações globais da IHM

28
Manual Programação Ladder WinTS

8.2 Configurações Globais e Características da IHM


Os atributos globais da IHM estão localizados na arvore de projetos. Especificamente sob o nome de “IHM”.
Um duplo clique faz abrir a janela de configurações.

Duplo click

Figura 21: Atributos globais de IHM

Tabela 7: Configurações globais e características de IHM

Configuração Definição

PQ_GO
Tecla de atalho global. Ao pressionar esta tecla, programa realiza salto
incondicional para tela configurada pelo programador.
TEMPERATURE_GO
Tecla de atalho global. Ao pressionar esta tecla, programa realiza salto
incondicional para tela configurada pelo programador.
SETTINGS_GO Tecla de atalho global. Ao pressionar esta tecla, programa realiza salto
incondicional para tela configurada pelo programador.
POSITION_GO Tecla de atalho global. Ao pressionar esta tecla, programa realiza salto
incondicional para tela configurada pelo programador.
ALARM_GO
Tecla de atalho global. Ao pressionar esta tecla, programa realiza salto
incondicional para tela configurada pelo programador.
SELECT_GO Tecla de atalho global. Ao pressionar esta tecla, programa realiza salto
incondicional para tela configurada pelo programador.
CLOCK_GO Tecla de atalho global. Ao pressionar esta tecla, programa realiza salto
incondicional para tela configurada pelo programador.

29
Manual Programação Ladder WinTS

IHM_HARDWARE Tipo de hardware do display


IHM_MODEL Modelo de hardware do display
IHM_LINES Quantidade de linhas da IHM
IHM_COLUMNS Quantidade de colunas da IHM
IHM_PXLINES Referência de tamanho ocupado em Pixels, na tela do computador
IHM_PXCOLUMNS Referência de tamanho ocupado em Pixels, na tela do computador
IHM_GWIDTH Largura gráfica
IHM_GHEIGHT Comprimento gráfico
IHM_GRAPH Presença de display gráfico
IHM_TOUCH Display com Touch
IHM_BACKLIGHT Tempo de backlight ativo
Otimização de velocidade de processamento. Atualiza os dados somente
IHM_OPTIMIZE quando estes alteram de valor. Recomendável manter opção default (Update
when change)

8.3 Atributos locais de tela


Ao iniciar uma nova tela, a aba “Screen” irá aparecer ao lado da aba “Project” na
arvore de projetos. Esta contém, assim como no Ladder, os atributos relativos aos
campos e também os atributos locais de cada tela adicionada. São
configurações que somente valem para a tela em questão, a que está em foco,
ao contrário das configurações globais vistas no item acima, onde vale para
todas as telas os atributos configurados. A cada nova tela, todos os atributos
podem ser re-configurados a fim de que as telas possuam características
diferentes entre si.

30
Manual Programação Ladder WinTS

Tabela 8: Configurações locais de tela


Configuração Definição

F1_GO Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.
F2_GO Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.
F3_GO Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.
F4_GO Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.
F5_GO Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.
M1_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.
M2_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T0_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T1_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T2_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T3_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T4_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T5_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T6_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T7_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

T8_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

31
Manual Programação Ladder WinTS

T9_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

LEFT_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

RIGHT_GO
Tecla de atalho local. A partir desta tela, vai para tela configurada pelo
programador. Só vale para tela em foco.

ENTRYSOUND Beep na IHM quando entrar na tela


BACKLIGHT Tempo de backlight ligado
Ativação incondicional desta tela através de um elemento booleano. Uso em
ALARM_BOOL
telas dinamicamente ativadas por evento de alarme do processo
Ativação incondicional desta tela através de um indexador, variável que carrega
ALARM_IDX o numero da tela que deve ser mostrada automaticamente. Uso em telas
dinamicamente modificadas pelo processo.
Otimização de velocidade de processamento. Atualiza os dados somente
OPTIMIZE quando estes alteram de valor. Recomendável manter opção default (Update
when change)

8.4 Elementos de Programação de Telas (Campos)


Os campos são as ferramentas de programação de telas. É através dos campos que o programador irá
disponibilizar as opções e configurações das telas.

Figura 22: Campos de programação de telas

Campo Definição

Write String ($WSRT) Escrita de texto

Modifica valor de variável. Necessariamente o programador deve


Read Variable ($RVAR) especificar um “ShortCut” para que o operador possa acessar esta
função através do teclado primário da IHM.
Acesso de telas acessíveis somente através de uma senha. Usual
Password para telas de programação e setup de máquina protegidas por
senha.

Write Variable ($WVAR) Escreve na tela o valor de uma variável

String List Cria lista de Strings controlada conforme a alteração de uma variável
Barra de progresso que aumenta ou diminui conforme o valor de uma
Progress Bar variável.
Tabela 9: Descrição dos campos de programação de telas

32
Manual Programação Ladder WinTS

8.5 Descrição dos atributos dos campos

Preenchimento
Campo Atributo obrigatório
LINE: Linha. Posicionamento inicial. Sim
COLUMN: Coluna. Posicionamento inicial. Sim
Write String
($WSRT) SOURCE: Texto a escrever. Sim
FHASHING: Texto piscante ou estático. Sim
LINE: Linha. Posicionamento inicial. Sim
COLUMN: Coluna. Posicionamento inicial. Sim
SOURCE: Variável a modificar. Sim
Read Variable PIC: Modo de amostragem do valor da variável (ver PICTURE
Sim
($RVAR) no glossário)
MIN: Valor mínimo de entrada Não
MAX: Valor máximo de entrada Não
SHORTCUT: Atalho de teclado para acessar o campo. Sim
LINE: Linha. Posicionamento inicial. Sim
COLUMN: Coluna. Posicionamento inicial. Sim
SOURCE: Variável utilizada para guardar senha digitada. Sim
PIC: Modo de amostragem do password (ver PICTURE no
Sim
glossário)
SHORTCUT: Atalho de teclado para acessar o campo. Sim
Não é
Password
necessário
PASS_1 - PASS_10: Senhas de 1 a 10
preencher
todos
Não é
PASS_1_GO – PASS_10_GO: Telas relativas às senhas de 1 necessário
a 10 preencher
todos
LINE: Linha. Posicionamento inicial. Sim
COLUMN: Coluna. Posicionamento inicial. Sim
Write Variable SOURCE: Variável a mostrar Sim
($WVAR)
PIC: Modo de amostragem do valor da variável (ver PICTURE
Sim
no glossário)
LINE: Linha. Posicionamento inicial. Sim
COLUMN: Coluna. Posicionamento inicial. Sim
SOURCE: Variável de controle da lista. Quando a variável tiver
Sim
valor 0, a string de TEXT_0 será mostrado, e assim por diante.
String List
Não é
necessário
TEXT_0 – TEXT_16: Lista de strings.
preencher
todos
LINE: Linha. Posicionamento inicial. Sim
COLUMN: Coluna. Posicionamento inicial. Sim
SOURCE: Variável que controla o progresso da barra Sim
Progress Bar MIN: Limite mínimo da variável Não
MAX: Limite máximo da variável Sim
LENGHT: Tamanho da barra, em colunas do display Sim
STYLE: Tipo da barra. (ponteiro ou barra horizontal) Sim
Tabela 10: Descrição dos atributos de campo

33
Manual Programação Ladder WinTS

8.6 Movimentação dos Campos


Todos os tipos de campos de programação podem ser movimentados ou copiados com o auxilio do mouse e
teclado, como um atalho.

Para copiar, basta segurar a tecla CTRL e movimentar o mouse na direção desejada. Neste momento um
novo elemento será criado. Então será necessário configurar os atributos desejados como se estivesse
adicionando um novo elemento, sem copiar.

Para movimentar, basta segurar a tecla SHIFT e movimentar o mouse para a posição desejada. Outro modo
de movimentação pode ser executado segurando a tecla SHIFT e pressionando as setas do teclado no
sentido desejado.

34
Manual Programação Ladder WinTS

9 Adicionando Programa TS Descritivo no projeto


O controlador lógico programável da Solaris Automotion tem sua programação executada por máquinas de
estado, como visto no item 1.1 deste manual. Todos os módulos de programa são integrados via árvore de
projetos e podemos adicionar ou retirar módulos a partir desta.
Alguns programadores gostam, e tem habilidade, de programar em linguagem descritiva, visto que possuem
o controle total e explícito do processo. O programador LADDER não sabe as instruções que estão por trás
das funções utilizadas, ao contrário do programador descritivo, que monta suas funções de acordo com sua
necessidade. Apesar das facilidades, algumas questões lógicas se tornam difíceis quando se programa em
TS descritivo, pensando nisto, a Solaris permite que o programador utilize módulos descritivos juntamente
com diagramas LADDER. É necessário ressaltar que nos módulos descritivos é proibido fazer
declarações de entradas e saídas quando trabalhamos em ambiente de projeto! Caso sejam
adicionadas declarações, como de praxe quando da programação puramente descritiva fora do ambiente de
projeto, ocorrerá um erro de compilação.
Para adicionar ou criar um novo módulo descritivo, basta clicar com o botão direito do mouse sobre a aba
Project e selecionar a opção Add Source File, para adicionar um programa TS já existente, ou New Source
File, para criar um novo programa descritivo.

É muito importante retirar


qualquer declaração de pontos de
entrada e saída, assim como
declaração de display e teclado
(caso já exista algum módulo em
Screen) do TS file a ser incluído.

Figura 23: TS File

10 Monitorador
O Monitorador é uma facilidade para depuração de Projetos. O monitoramento é diferente de uma simulação,
uma vez que os dados amostrados serão os dados reais, e não apenas uma simulação do processo. Isto
porque as variáveis observadas são captadas diretamente do CLP, via comunicação MODBUS. É importante
ressaltar ser necessário que o módulo de CPU possua comunicação RS-232, dado que o processo de
monitoração é executado on-line, com o CLP conectado ao PC, via cabo SC-8 (o mesmo utilizado para
download em flash).
Todos os elementos a serem monitorados devem estar declarados na árvore de projetos! Seguem a
regra de comunicação MODBUS; Entradas analógicas rápidas e variáveis precisam ser previamente
declaradas como Protocol Registers na arvore de projetos.
Para iniciar o monitorador é importante seguir alguns passos de configuração do PC, assim como a adição do
bloco de MODBUS_PRESET e MODBUS no diagrama LADDER ou então através de linguagem descritiva em
um arquivo TS adicionado ao projeto (VER item 4 e 9 para adição de arquivos TS ao projeto). A configuração
do computador deve estar de acordo com a configuração do MODBUS para que possam se comunicar na
mesma taxa de comunicação e porta de acesso.

35
Manual Programação Ladder WinTS

10.1. Configurando a comunicação


São dois os pontos a serem configurados. O computador e o CLP.
O computador é configurado diretamente pelo WinTS. Vá até o menu “TOOLS – OPTIONS – aba MONITOR”.
Neste ponto é necessário saber em qual a porta COM do seu computador estará conectado ao CLP. Esta
porta é a mesma escolhida quando você faz o download em flash através do programa WinTSM.

Caso você não tenha o conhecimento de qual a porta COM está ativa em seu computador vá até o aplicativo “Sistema”,
dentro do “Painel de Controle” do Windows™. Dentro deste aplicativo localize o “Gerenciador de Dispositivos” e
procure por “Portas” (é um dos itens da árvore de dispositivos). Em “Portas” clique no +. Entre parêntesis estará a porta de
comunicação COM instalada em seu computador. Em laptops que utilizam conversor USB é muito comum que a porta
COM seja um valor acima de 4. A descrição é algo do tipo: “USB-to-Serial Comm Port (COM5)”.

A aba monitor é vista abaixo:

Porta de comunicação do PC
Número do CLP
Taxa de comunicação

Figura 24: Aba Monitor

As configurações no CLP devem seguir as do computador, e são configuradas através do diagrama LADDER
ou então por um pequeno trecho de programa TS. Ambos devem estar posicionados no início do programa,
para que tão logo inicie a execução, a comunicação seja configurada.
Abaixo um exemplo de comunicação MODBUS configurada através do diagrama LADDER.

Figura 25: Habilitando Modbus Figura 26: Configuração do Bloco

OBS: Note que a configuração do bloco (fig. 24) deve ser idêntica a configuração da aba Monitor. O
parâmetro CHANNEL refere-se ao tipo de canal de comunicação do CLP.

10.2. Tornando públicas as variáveis e entradas


analógicas rápidas (Selecionando Protocol Registers)
Para que o monitorador possa visualizar entradas analógicas rápidas (maiores do que 65) e as variáveis
declaradas, antes da compilação é necessário defini-las como Protocol Registers. O procedimento é
realizado na arvore de projetos, dando um duplo clique em “Protocol Registers” e digitando os elementos
necessários. É importante ressaltar que as variáveis e as entradas digitais devem, obrigatoriamente, estar
declaradas em “Variables” e “Analogic Input”, respectivamente. Ou seja, os Protocol Registers são apenas
elementos previamente declarados e que são selecionados pelo programador para serem visualizados pela
rede MODBUS.

Importante: São elementos sempre públicos (não precisam ser definidos como protocol register) os
seguintes: entradas digitais, saídas digitais e entradas de temperatura.

36
Manual Programação Ladder WinTS

10.3. Selecionando as variáveis (Watch-List)


A lista de observação (Watch-List) é um elemento dinâmico e que está diretamente conectada com a árvore
de projetos. Todos os elementos de comunicação presentes nas declarações da arvore de projetos são
visualizados na lista de observação. Conforme dito anteriormente, a watch-list é um elemento dinâmico que
pode ser modificado sem a necessidade de compilação. Não é necessário parar a execução do processo
para modificar os elementos observados. A imagem abaixo mostra a lista de observação.

Figura 27: Watch-List

OBS: As saídas analógicas não são elementos de comunicação MODBUS, então elas são monitoradas
através das variáveis que fixam seu valor.
OBS2: Não é possível por em observação mais do que 8 (oito) elementos de temperatura ou mais do que 8
(oito) elementos protocol register. Fique atento, se o botão de OK ficar desabilitado é porque foi excedido o
numero máximo de elementos observáveis, aparecerá uma mensagem em branco no local da preta alertando
qual o elemento excedeu. Desmarcando os excessos o botão de OK torna a ficar habilitado.

Ao pressionar OK, uma nova aba aparece na barra de Projetos. Ela se chama “Monitor” e pode ser observada
na figura abaixo.

Área de visualização
das variáveis

Inicia a comunicação Para a comunicação


Figura 28: Aba monitor

37
Manual Programação Ladder WinTS

10. Documentação do Projeto.


O software WinTS possui uma opção que permite a edição de arquivo para descrição do programa, ou seja:
algoritmos de controle utilizados; máquinas de estados; descrição das funções das subrotinas desenvolvidas,
etc.

O arquivo é do formato .htm e é editado com software Windows Explorer.

A documentação é arquivada junto com o projeto. Não é carregada no CLP.

Deve-se considerar sempre a necessidade de manter este arquivo atualizado em caso de alteração do
programa. Uma boa prática é registrar o número de revisão do programa, data da revisão e nome do
projetista.

38
Manual Programação Ladder WinTS

11. Exemplos de Aplicações


Nesta seção serão apresentados alguns exemplos e aplicações de tipos específicos de blocos de função. O
objetivo é o completo entendimento do usuário em todos os passos dados. É importante a compreensão de
todos os procedimentos apresentados.

11.1 Exemplo 1: Onda Quadrada com Freqüência Fixa


(PWM)
Esse exemplo tem por finalidade fazer uma aplicação com a programação Ladder. O objetivo é gerar uma
onda quadrada com tempos de acionamento e desarme fixos em 2 segundos, ou seja, é um PWM com
freqüência fixa em 50% do ciclo de trabalho e período de 4 segundos. Não será gerada nenhuma tela de IHM,
pois não é o objetivo aqui, portanto não é estranho que quando o programa rodar no CLP nada apareça na
IHM. Este é apenas um primeiro exemplo simples de uso do Ladder.

Iniciamos abrindo o WinTs e criamos um novo projeto pelo atalho “CTRL+N” ou diretamente pelo ícone
na barra de ferramentas. Selecionamos “TS Application”, depois “Next”, dá-se um nome e apertamos
“Create”. Clicando com o botão direito na janela de projetos, selecionamos “New Ladder Main File” para
iniciarmos um novo diagrama Ladder principal. O próximo passo é declarar as variáveis e a saída digital
escolhida para a atuação do PWM. A imagem abaixo mostras as variáveis declaradas para este exemplo.

Figura 29: Variável para PWM fixa

Foi declarada também uma saída digital, e chamada de “Saida1”. Após as definições, foram adicionados 2
rungs, cada um contendo um timer e uma leitura de contato. Os contatos são as saídas dos timers, fazem o
controle de parar e iniciar a contagem. Temos uma configuração de “Oscilador Astável”. Os argumentos dos
timers são mostrados nas figuras que seguem.

39
Manual Programação Ladder WinTS

Figura 30: Configuração do timer do rung 1 Figura 31: Configuração do timer do rung 2

A imagem abaixo mostra a montagem completa. Os contatos acima referidos são “Saida1”, que controla o
funcionamento do timer 2 e “OutBaixo”, que controla o funcionamento do timer 1. Enquanto um deles está
contando, ou outro permanece parado, e vice-versa.

Figura 32: Diagrama Ladder de um PWM com largura fixa

Os últimos passos são relativos a salvar, compilar e fazer o


download do programa para o CLP. Começamos salvando o
programa em “save all”, pelo ícone . É importante tomar o
cuidado de salvar o projeto (.tpj) na mesma pasta do diagrama
Ladder (.tld). Após precisamos compilar, pela tecla de atalho “F9” ou
pelo ícone na barra de ferramentas. A janela de compilação
deve apresentar o “Status” como “Success”, caso contrário, avalie o
erro através da caixa de mensagens, no inferior da área de
trabalho.

O ultimo passo é fazer o download do programa executivo, já compilado, para o CLP. Para isso usamos a
tecla de atalho F8 ou o ícone na barra de ferramentas. As próximas janelas são auto-explicativas através
das mensagens. Em primeiro, haverá a tentativa de abertura de porta do PC. Caso a porta não exista,
aparecerá a mensagem “Unable to connect!! Perhaps COMXX is busy or not valid” (XX é o numero da porta
em questão, em tempo de execução aparecerá a sua porta COM). Se o windows conseguir abrir a porta serial
do PC, a tela da imagem abaixo aparecerá. Neste momento está acontecendo uma tentativa de conexão do
PC com o CLP, e também o programa está procurando a maior velocidade de conexão possível de seu CLP!
É necessário que o CLP esteja conectado ao computador através do cabo “SC8”, e também que você tenha
pressionado a tecla na IHM durante a inicialização (o CLP deve estar “parado”, sem que nenhum
programa esteja executando. A mensagem “WinTs X.YZ ...” deverá estar aparecendo, sendo X, Y e Z
números relativos a versões).

40
Manual Programação Ladder WinTS

Figura 33: Estado de procura pelo CLP

A porta serial selecionada pode estar errada, se for esse o caso, clicamos “Cancel” e depois “Settings” para
ajustar para a correta. O programa executivo somente está pronto para download quando a tela abaixo
aparecer.

Figura 34: Programa pronto para Download no CLP

Ao pressionar “Start” uma seqüencia de estados ocorrerá, desde o apagamento do atual programa da
memória do CLP até o termino completo do download, que acontece quando a mensagem “Download
Finished” é escrita. É fácil acompanhar o estado atual lendo as mensagens apresentadas.
No modo execução, a saída digital 1 estará funcionando em modo intermitente (piscando) conforme o acima
descrito.

41
Manual Programação Ladder WinTS

12. Tutorial passo a passo.


Abaixo está descrito passo a passo os procedimentos para desenvolvimento de uma aplicação em liguagem
Ladder, carga no CLP e posta em execução:

• Abrir o aplicativo WinTS


• Criar um novo programa: clicar botão NEW (ver capitulo 4)
• Escolher na janela apresentada na opção TS Application
• Pressionar o botão NEXT
• Definir um nome para o projeto (alfanumérico e sem espaços)
• Pressionar a tecla CREARE
• Entrar na janela esquerda e declarar as E/S digitais e analógicas, elementos publico da rede
MODBUS, variáveis auxiliares de 16 bits; constantes; (ver capitulo 4.1)
• Definição do modelo de IHM utilizada, pressionando a tecla direita sob a opção.
• Crie um novo diagrama Ladder, pressionando com a tecla direita do mouse sobre a opção Ladder
(ver capitulo 5) escolhendo a opção New Ladder Main File
• Edite o programa conforme capitulo 6, inserindo os Rungs, contatos, blocos de funções e bobinas.
Novos Rungs são inseridos com a opção “ + “ do menu central. Rugs são deletados pressionando a
tecla “ – “.
• Após o desenvolvimento da aplicação, deve-se salva-la, clicando a opção SAVE ALL do menu
superior. Deve-se informar o nome de cada arquivo salvo, incluindo os arquivos de telas das IHMs e
também subrotinas. Verifique o status desta operação concluida pela indicação Project Saved no
rodapé.
• Na próxima etapa deverá ser solicitada a compilação da aplicação, pressionando a opção Build no
menu superior. O compilador indica mensagens de alertas (warnings) e erros (error). Caso seja
detectado erros, não será criado o arquivo executável no formato .bin .
• A etapa seguinte trata da carga da aplicação no CLP. Para isto, o mesmo deverá estar ligado e com
IHM acoplada.
• Na IHM será apresentada a versão do software Kernel e versão do WinTS compatível. O usuário
deverá verificar se a versão indicada no WinTS é compatível com a versão instalada no PC. Caso
esta versões seja diferentes, entrar em contato com SAC@solarisautomation.com solicitando
informações para atualização do Kernel.
• A IHM indicará por meio de quatro pontos no display o status da entrada da execução do CLP. O
usuário deve pressionar a tecla ENTER antes do quarto ponto ser exibido. Caso isto não seja feito, o
CLP entra em modo de execução da aplicação que possui carregada.
• Uma vez verificada a compatibilidade e interrompido a execução da aplicação residente, faz-se a
carga da nova aplicação desenvolvida no WinTS.
• Pressione a tecla WinTSm no menu superior.

42
Manual Programação Ladder WinTS

13. Glossário:

Algorítmo: Seqüência de passos finitos executados por um sistema e programados em uma linguagem
específica do sistema utilizado. Descreve um processo em passos lógicos de execução a fim de alcançar
um determinado fim.

Argumento: É um dado da configuração de um elemento de programação Ladder. Por exemplo: A função


de soma contém 3 argumentos. A variável de destino e dois operandos.

Atributo: É um dado da configuração de um elemento de programação do gerador de telas. Por exemplo:


O campo de operação WSTR possui os atributos Source, Flashing, Line e Column.

Arquitetura Mestre-Escravo: Modo de configuração de uma comunicação de rede onde existe um


elemento que exerce o comando (faz as requisições – perguntas, pedidos – É o Mestre) e um ou mais
que apenas recebem ordens e respondem aos comandos (respostas, ações – São os escravos). Os
escravos são numerados de ordem aleatória e não necessariamente contínua. Não existe necessidade,
por exemplo, de em uma rede, existir o escravo 1, escravo 2, escravo 3 e assim sucessivamente. Apesar
de ser indicado identificar de modo crescente e contínuo por questão, exclusivamente, de organização.

Árvore de Projeto (aba Project): Local onde o programador insere as informações e arquivos que
comandam o processo. Localizado na janela à direita ou à esquerda da tela principal do WinTs, quando
em construção de um projeto.

Árvore de Projetos (aba Ladder): Local onde o programador configura os argumentos de um dado
elemento de programação. Localizado na janela à direita ou à esquerda da tela principal do WinTs,
quando em construção de um projeto e um diagrama Ladder visível.

Atuador: Elemento físico que exerce uma ação em um dado sistema de controle. Exemplos de atuadores
são: Válvulas, resistências de aquecimento, ventiladores e motores.

BIT (“BInary digiT”): Menor unidade de informação. É representado pelos números 0 e 1. Eletricamente
querem dizer se há ou não energia na linha, em Ladder se pode fazer a mesma análise. O conjunto de 8
bits é chamado de Byte. As variáveis Turbo Solaris são compostas por conjuntos de 16bits (2 bytes),
formam o valor decimal de 65535. Ou seja, o maior número inteiro que pode ser armazenado em uma
variável é 65535.

Boole (lógica booleana – valor booleano): Lógica matemática (álgebra) que trabalha com valores
binários, onde a resposta é apenas o valor 0 ou o valor 1. Quando se diz que um elemento ou uma
função é booleana, quer-se dizer que a saída (resposta) é binária. Não necessariamente os argumentos
dessa função são binários, apenas sua resposta. Um exemplo é a comparação de igualdade entre 2
valores inteiros.

Campos de operação: São os elementos de programação do gerador de telas. São as ferramentas de


trabalho da IHM. Servem para amostrar variável, modificar valor de variável, ilustrar uma barra de
progresso, salvar a senha de entrada para telas protegidas e todas as demais utilidades oferecidas pelo
gerador de telas.

43
Manual Programação Ladder WinTS

Ciclo de varredura: Loop de execução de um programa. Associado a este ciclo está o tempo de ciclo,
que representa o tempo que o programa leva para executar todos os comandos programados. O ciclo de
varredura é variável, pois um dado conjunto de entradas pode fazer executar partes diferentes de
programa do que outro conjunto de entradas. Ou então, o ciclo manual de uma máquina não é o mesmo
do que o ciclo automático.

CLP: Controlar Lógico Programável. O NEMA (National Electrical Manufactures Association) considera
um CLP um aparelho eletrônico que utiliza uma memória programável para armazenar internamente
instruções e para implementar funções específicas, tais como lógica, seqüênciamento, temporização,
contagem e aritmética, controlando, por meio de módulos de entradas e saídas, vários tipos de máquinas
ou processos.

Coil: Elemento de saída. Realiza uma ação. É a representação da bobina e serve para acionamento
digital. Pode ser configurado para reter o estado independente da excitação de entrada.

Compilação: Processo que transforma o código produzido pelo programador (código fonte) em um
código executável pela máquina (código objeto). Em Turbo Solaris, os arquivos compilados tem a
terminação .bin (para gravação diretamente e EEPROM através de um gravador externo) e também .hex
(para gravação através da porta serial do computador, com cabo SC8. Para CPU Flash).

Contact: Elemento de leitura. Realiza um teste. É a representação de um interruptor e serve para inibir
ou habilitar o rung no qual pertence. Assim com um interruptor controla a transmissão de corrente por um
fio de energia.

Diagrama Ladder: Desenho representativo da lógica de controle de uma máquina. É uma linguagem de
programação para CLP. Muito parecido com um diagrama esquemático elétrico. Serve para programar
um processo de modo visual. As entradas e saídas são facilmente identificadas, torna mais fácil (em
muitos casos) o entendimento do funcionamento de uma máquina ou processo. Uso comum na indústria.

Elemento de programação (Elemento): Qualquer entrada digital, saída digital, entrada analógica, saída
analógica, variável, constante ou função. Ou seja, é todo o elemento disponível para o usuário programar
uma máquina ou processo.

Entrada Analógica: Refere-se aos canais analógicos das Séries S9200 e S9500. De modo geral são
entradas de 0 a 10v ou entradas de temperatura. Ainda, podem ser entradas de 0 a 20mA ou 4 a 20mA
para sensores. Tem uma resolução de 12 bits para o módulo SFA da Série S9200 ou canais analógicos
da Série S9500, o que significa que para ser lido, deve ser interpretado entre os valores decimais 0 a
4095. É Linear esta faixa, significa que 2048 são 5 volts de tensão na entrada analógica, 3072 são 7,5
volts e assim por diante. A SAS tem um funcionamento parecido, porém o valor de temperatura é dado
diretamente, sem necessidade de conversão, ou seja, 300 significam 300 graus Celsius.

Entrada Digital: É uma entrada binária representada por 0 volts ou 24volts. Em Ladder, simplesmente é o
binário 0 e 1, representando ausência ou presença de energia no rung.

Saída Digital: É uma entrada binária representada por 0 volts ou 24volts. Em Ladder, simplesmente é o
binário 0 e 1, representando ausência ou presença de energia no rung.

Function Coil: Mesmo que coil. É um elemento de saída. Realiza uma ação, segue um algoritmo
específico e possui argumentos configuráveis pelo usuário.

44
Manual Programação Ladder WinTS

Function Contact: Mesmo que contact. É um interruptor “programado”. Faz um teste de leitura e segue
um algoritmo específico para cada função implementada e possui argumentos configuráveis pelo
usuário.

IHM: Interface Homem Máquina.

Jump: É um pulo de um rung para outro rung, não executando os intermediários. É uma instrução que
deve ser muito bem estudada para ser adicionada. Necessita grande habilidade do programador e não
pode ser executada para trás, ou seja, não pode haver um salto de um rung para outro acima deste
sob pena de reiniciar o CLP. É indicado que se tente utilizar subrotinas.

Label: É o local para onde salta a instrução Jump. Se deve evitar ao máximo o uso de Label, sob risco
de aumentar o tempo de varredura. É um elemento que força uma quebra no diagrama, portanto, quebra
a continuidade do código.

MODBUS: Protocolo de rede de comunicação. Possui a arquitetura Mestre-Escravo a fim de possibilitar


a interação entre mais de um CLP ou então um computador (Mestre) utilizado como sistema supervisório
de um, ou mais, CLP. Os “Protocol Registers” são os elementos que são tornados públicos a fim de que
o mestre possa ler ou escrever nas variáveis do escravo. Entradas e saídas digitais, assim como
entradas de temperaturas não necessitam ser declaradas como “Protocol Registers”, pois naturalmente
são elementos públicos de uma rede MODBUS.

Nível lógico 0: Fisicamente representa o valor lógico do nível de tensão de 0 volts, tanto em uma entrada
quanto em uma saída digital. Para uma função ou teste, representa uma entrada ou resposta falsa. Por
exemplo, se for utilizado uma Contact Functoin para a comparação entre dois valores e a relação for
falsa, diz-se que a saída deste bloco estará em nível lógico 0.

Nível lógico 1: Fisicamente representa o valor lógico do nível de tensão de 24 volts, tanto em uma
entrada quanto em uma saída digital. Para uma função ou teste, representa uma entrada ou resposta
verdadeira. Por exemplo, se for utilizado uma Contact Functoin para a comparação entre dois valores e a
relação for verdadeira, diz-se que a saída deste bloco estará em nível lógico 1.

PICTURE: Formato de amostragem de um valor no display da IHM. Exemplo: “999”. Significa que, em
tempo de execução, todos os números de 0 a 9 serão mostrados. Se o valor da variável for 5, será
mostrado na tela “005”, se for 27, será mostrado “027”, e assim por diante. Uma forma mais inteligente
de mostra é a forma “ZZ9”. A letra Z maiúscula significa que o numeral 0 não será mostrado, ou seja,
para os exemplos anteriores, será visto na tela da IHM “ 5” e “ 27” (observe os espaços em branco no
local do 0. Números entre 0 e 8 não são aceitos, assim como não são aceitos espaços em branco,
“underline”, caracteres de controle ou acentuação. São aceitos somente o numero 9 e todos os
caracteres não acentuados, maiúsculos ou minúsculos, sendo que o Z maiúsculo é a referencia de
controle para não mostrar valor 0, portanto não pode ser usado para escrita. Uma Picture válida é:
“Temp=ZZ9”, ou então “VaR=99”. Não é válida a picture “Temp1=ZZ9” (1 não é numero válido), ou então
“VaR = Z9” (espaço não é caracter válido).

PID: Controle Proporcional, Integral e Derivativo. Implementado de modo independente e com numero
máximo de 64 canais. Projetado especialmente para controle de temperatura de máquinas e processos
industriais. O controle proporcional é responsável pelo valor de trabalho programado (set point), o
integral estabiliza o sistema quando em regime contínuo e o derivativo diminui o tempo de estabilização
e controla o valor máximo de temperatura atingido (overshoot).

Programa Executivo: (Kernel) Trata do programa residente no CLP, responsável pelo gerenciamento de
dispositivos (canais de comunicação por exemplo) e pela execução do programa de aplicação. Nos

45
Manual Programação Ladder WinTS

controladores cujo programa aplicativo é carregado por meio de uma memória EPROM, o programa
executivo é gravado nesta memória pelo programador WIN TS.

Protocol Registers: Elementos públicos da rede MODBUS. São elementos, já declarados, que o
programador deseja tornar visível para o mestre da rede MODBUS. (Ver MODBUS). Um Protocol
Register é apenas um endereço que indica para a rede onde está o elemento desejado, por isso as
variáveis que se deseja tornar públicas devem estar previamente declaradas, pois caso contrário, seria
necessário sempre atualizar o protocol register. Quando utilizamos uma já existente, este procedimento
não precisa ser executado, basta declarar, e automaticamente os valores estarão publicados.

Rung: É a representação de um fio elétrico. Faz a ligação lógica entre os elementos de programação. Se
pode dizer que é o elemento base. Assim como em um circuito elétrico, as trilhas unem os componentes,
o rung une os elementos de programação em um diagrama Ladder.

Saída Analógica: Saída de tensão de 0 a 10 V ou de 4 a 20 mA, pode estar presente nas placas SAS e
SFA. Tem uma precisão de 12 bits, o que significa que para ser escrito, deve ser controlado entre os
valores decimais 0 a 4095. A faixa comporta-se de forma linear, significa que 2048 são 5 Volts de tensão
na saída analógica, 3072 são 7,5 volts e assim por diante.

Subrotina: É um diagrama Ladder chamado eventualmente pela rotina principal, de acordo com a
necessidade do programador. No momento de atendimento da subrotina, o diagrama principal (chamado
Main), pára sua execução até que a subrotina encontre o comando “return”. É um recurso utilizado pelo
programador quando existem procedimentos repetitivos num mesmo ciclo de varredura. Diminui o
tamanho do código principal. Um exemplo é o caso de um processo que necessite ler e manipular, várias
vezes num mesmo ciclo de máquina (varredura), a pressão de uma linha hidráulica. O programa
principal apenas chama a subrotina que lê e manipula a pressão, então utiliza os resultados dos cálculos
desta para prosseguir.

Supervisório: (ou SCADA _ Supervisory Control and Data Aquisition) Sistema de monitoração e controle
de um processo ou máquina. É um programa executado em um computador, interligado com uma rede
de CLP e pode utilizar animações e banco de dados para aprimorar a produção. Consulte a Solaris para
implementar sistemas supervisores em sua planta.

WinTS: Ambiente de desenvolvimento integrado para CLP Solaris Automation. Compatível com Windows
95 ou superior. É o software de programação dos CLP’s da Solaris Automation. É possível programar em
linguagem descritiva, integrada com linguagem Ladder e ainda um gerador de telas para IHM. A
facilidade de aprendizado e otimização do código objeto agilizam o processo de programação e salvam
tempo de projeto.

O conteúdo deste documento tem características informativas, sendo que a Solaris Automation se reserva
no direito de alterar o mesmo sem qualquer aviso prévio.

46