Vous êtes sur la page 1sur 19

Compilador Ladder LDMicro

Guia de Uso

by Smart Radio REV. 0 Nov/15

Guia de uso Compilador Ladder LDMicro em Portugus

O software LDmicro capaz de gerar cdigos compatveis com microcontroladores


Microchip linha PIC16F, Byte Code e Cdigos Ansi C. Normalmente, o software para estes
microcontroladores so escritos em uma linguagem de programao como, Assembly, C
ou BASIC.
Estas linguagens so poderosas e bem adequadas para a arquitetura do processador,
que executa internamente uma lista de instrues. Os CLPs, por outro lado,
frequentemente usam lgica programao em escada (Ladder). Um programa simples
ficaria com esta aparncia:

||
||

Xbutton1

Tdon

Rchatter

Yred

||
||

||-------]/[---------[TON 1.000 s]-+-------]/[--------------( )-------||


||
|
||
|| Xbutton2
Tdof
|
||
||-------]/[---------[TOF 2.000 s]-+
||
||
||
||
Rchatter
Ton

Tnew

||
||
||
||
Rchatter ||

||-------]/[--------[TON 1.000 s]----[TOF 1.000 s]-------( )------ ||


||
||
||
||
||
||
||------[END]---------------------------------------------------------- ||
(TON um temporizador, que tem a funo de acionar aps um tempo determinado, j
TOF um temporizador que tem a funo de desligar aps o tempo determinado.
O smbolo -] [- simboliza entradas, que se comportam como contatos de um rel.
O smbolo -( )- simboliza sadas, que se comportam como a bobina de um rel.
Algumas referncias para a lgica ladder esto disponveis na Internet e na literatura.
(Detalhes especficos para esta aplicaes so dadas abaixo).
Algumas diferenas so evidentes:
* O programa apresentado em formato grfico, no como uma lista textual de
instrues, muitas pessoas vo inicialmente encontrar isso mais fcil de compreender.
* No nvel mais bsico, A linguagem Ladder por ser uma linguagem de diagramas de
circuitos, com contatos de rels (entradas) e bobinas (sadas) acaba sendo bem intuitivo

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

para programadores que possuem conhecimento em circuitos eltricos.


* O compilador da lgica ladder cuida de organizar para voc a estrutura do cdigo e
determinar quando as sadas tero de ser acionadas com base nas mudanas feitas nas
entradas ou em temporizadores, e voc no tem que especificar a ordem em que estes
comandos sero executados, as ferramentas de um CLP podem fazer isso por voc.

O programa suporta Microcontroladores PIC, abaixo os Microcontroladores suportados:


PIC16F877
PIC16F628
PIC16F876 (no testado)
PIC16F88 (no testado)
PIC16F819 (no testado)
PIC16F887
PIC16F886
possvel desenvolver um diagrama em Ladder para o seu programa e simular a lgica
dele em tempo real no seu PC. Para tal, quando a estrutura do seu programa estiver
correta voc pode atribuir os pinos do microcontrolador para as entradas e sadas no
programa. Aps atribuir os pinos, voc pode compilar o cdigo do seu programa para o
PIC desejado. A sada do compilador gera um arquivo hexadecimal (.hex) ou Cdigo para
Interpretao (Byte Code) e esse arquivo voc pode programar em seu microcrontolador
com um gravador ou atravs de bootloader.
O programa destina-se a ser um pouco mais semelhante ao Ladder utilizados em CLPs
comerciais.
H algumas excees, e muitas funes no so o padro utilizado na indstria de
qualquer maneira. Leia atentamente a descrio de cada instruo, mesmo que parea
familiar. Este documento assume conhecimento bsico da linguagem Ladder e da
estrutura de software do CLP.
Tambm possvel gerar o cdigo ANSI C como o de qualquer compilador C.
Voc responsvel por desenvolver as instrues e por implementar todas as entradas e
sadas, isso significa que o programa gera apenas o cdigo fonte (leitura / gravao de
entrada digital, etc.) .
Veja os comentrios no cdigo fonte gerado para obter mais detalhes.
possvel gerar o Byte Code independente do processador para uma mquina virtual e
assim executar o programa. Voc pode implementar a sua prpria maquina virtual. Esse
mtodo pode ser til para aplicaes onde necessrio usar a lgica ladder como uma
`linguagem de script ' para personalizar um programa maior.
O LDmicro normalmente executado sem as opes de linha de comando, o que significa
que voc pode fazer um atalho para o programa, ou salv-lo em sua rea de trabalho,

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

clicando

duas

vezes

no

cone

quando

voc

desejar

execut-lo.

Caso voc salve um arquivo com o LDmicro com o nome`ldmicro.exe asd.ld, por exemplo,
ento o LDmicro tentar abrir o arquivo `asd.ld', se ele existir. Um erro ser mostrado se
`asd.ld ' no existir. Isto significa que voc pode associar arquivos do ldmicro.exe com .ld,
para que seja executada automaticamente quando voc clicar duas vezes em um arquivo
ld.
Introduo
Ao ser executado o programa, ir iniciar sem nenhuma linha de programao pronta, a
menos que voc j o inicie com um arquivo .LD j existente, se for feito isso ento ele
abrir o programa com a ltima atualizao salva.
O software usa um prprio formato interno para o programa; sem assim no consegue
importar nenhuma outra lgica de outros compiladores.
Caso voc abra um novo programa, voc poder inserir conjuntos de contatos (Instrues
-> Inserir Contato) nomeado`Xnew '. O `X 'significa que a esses contatos dever ser
atribudo a um pino de entrada no microcontrolador escolhido.
Voc pode atribuir um pino a ele mais tarde, aps escolher um microcontrolador e
renomear os contatos. A primeira letra de um nome indica o tipo de instruo que ela .
Por exemplo:
Xname Deve ser atribudo a um pino de entrada do microcontrolador
Enxame Deve ser atribuido a um pino de sada do microcontrolador
* RNAME - `Rele interno': tem a funo de agir como um contato de memria
* TNAME um temporizador pode ser um temporizador que conta para liga ou desliga,
ou do tipo retentivo
* Cname - um contador decrescente, crescente ou um contador circular
* Aname (Conversor A/D) l a entrada analgica e colocar o valor lido em uma varivel
do tipo INT (Inteiro).
* Nome - varivel de uso geral (inteiro) .
Escolha o resto do nome da instruo baseado na funo que ele ira fazer, isto pode
ajudar caso seja necessrio fazer alteraes no programa posteriormente, e escolha
tambm de modo que seja nica dentro do programa.
O mesmo nome refere-se sempre para o mesmo objeto dentro do programa. Por
exemplo, seria um erro ter um TEMPORIZADOR PARA LIGAR (TON) chamado `Tdelay 'e
um TEMPORIZADOR PARA DESLIGAR (TOF) chamado `Tdelay" no mesmo programa,
uma vez que cada contador precisa de sua prpria memria. Por outro lado, seria correcto
ter um temporizador retentivo (RTO) chamado `Tdelay 'e uma instruo de reset (RES)
associado `Tdelay ', uma vez que nesse caso voc deseja que ambas as instrues
trabalhem com a mesma varivel.
Os nomes das variveis podem consistir de letras, nmeros e sublinhados, um nome de

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

varivel no deve comear com um nmero. Os nomes das variveis podem ser
maisculas
e
minsculas.
As instrues gerais (MOV, ADD, EQU, etc.) podem trabalhar em variveis com qualquer
nome. Isso significa que eles podem acessar temporizadores, contadores e
acumuladores. Isso s vezes pode ser til; por exemplo, voc Pode verificar se a
contagem de um temporizador em um determinado intervalo.
As variveis so sempre 16 bit inteiros. Isto significa que As variveis so sempre tratadas
como Signed e podem ir de -32768 a 32767. Voc pode especificar como nmeros
decimais inteiros normais (0, 1.234, -56). Voc tambm tem a opo de especificar os
valores de caracteres ASCII ('A', 'z'), colocando o os caracteres em aspas simples. Voc
pode usar um cdigo de caracteres padro ASCII na maioria dos lugares onde tambem se
pode usar um nmero decimal.
Na parte inferior da tela, voc ver uma lista de todos os objetos colocados no programa,
esta lista gerada e atualizada automaticamente.
A maioria dos insrues no precisa fazer nenhuma configurao, J `Xname ',` Yname',
e `objetos aName 'deve ser no entanto atribudo a um pino no microcontrolador.
Primeiro, escolha qual microcontrolador voc est usando (Configuraes ->
microcontrolador). Em seguida, atribua seus pinos de entradas e sadas com um duplo
clique no nome da instruo na lista.
Voc pode modificar o programa atravs da insero ou excluso de instrues. O cursor
na tela de programa pisca para indicar a instruo ou linha selecionada.
Se no estiver piscando, basta pressionar <Tab> ou clicar em uma instruo. Agora voc
pode excluir a atual instruo, ou voc pode inserir uma nova instruo para a direita ou
para
a
esquerda
(em srie com a instruo selecionada), acima ou abaixo (em paralelo com a instruo
selecionada). Algumas operaes no so permitidas, Por exemplo, h instrues que
no
so
permitidas
serem
colocadas
a
direita
de
uma
bobina.
O programa comea com apenas uma linha. Voc pode adicionar mais linhas,
selecionando
a instruo inserir linha Antes / Depois( insert rung before/ after) no menu Editar (Edit).
Voc poderia obter o mesmo efeito colocando muitos sub circuitos complicados em
paralelo dentro de uma linha, mas fica mais fcil de identificar como funciona a lgica do
programa quando se usa mais linhas para executar diversas instrues.
Depois de ter escrito um programa, voc pode test-lo no modo de simulao, e, em
seguida,
voc pode compil-lo e gerar um arquivo .HEX para o microcontrolador escolhido.
Simulao
Para entrar no modo de simulao, escolha Simular -> Modo Simulao ou pressione
<Ctrl + M>. O programa mostrado de forma diferente no modo de simulao, o cursor

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

desaparece e as instrues que esto sendo acionadas aparecem em vermelho, e as


instrues que no esto sendo acionadas aparecem acinzentadas.
Pressione a barra de espao para o CLP executar um ciclo, mas para executar o
programa continuamente em tempo real, escolha Simular -> Iniciar simulao em tempo
real, ou pressione <Ctrl + R>.
O tela do programa ser atualizado em tempo real, com as mudanas de estado que
acontecem no programa.
Voc pode definir o estado das entradas no programa clicando duas vezes na lista que
fica na parte inferior da tela, ou clicando duas vezes em um contato 'Xname ' no
programa. Se voc alterar o estado de uma entrada, a mudana s ser feita quando o
CLP ler e executar aquela linha ou comando nos prximo ciclo de leitura. Quando usado o
modo de simulao em tempo real, as mudana de estado acontece quase que
instantaneamente, caso voc esteja usando apenas o modo de simulao por ciclos a
mudana s ocorrera quando for pressionado a barra de espao.
Compilando o Programa
Para gerar um arquivo .hex para ser programado em seu microcontrolador necessrio
que primeiro voc selecione o microcontrolador no menu Configuraes ->
microcontrolador. Ento voc
deve atribuir os pinos de entrada e sada para cada 'Xname'ou `Yname' e as demais
instrues. Para fazer isso, clique duas vezes no nome do objeto da lista na parte inferior
da tela e uma caixa de dilogo ir aparecer, onde voc pode escolher um pino ainda no
atribudo e selecion-lo para a entrada ou sada desejada.
Ento voc deve escolher o tempo de ciclo que o microcontrolador trabalhar, para isso
tem que ser colocada a velocidade de clock na qual o microcontrolador ira trabalhar, isto
pode ser definido no menu Configuraes -> Parmetros do micro, Em geral, no deve
ser necessrio alterar o tempo de ciclo; 10 ms um bom valor para a maioria aplicaes,
coloque em frequncia do cristal o valor do cristal que voc usar com o microcontrolador
e clique em ok.
Agora voc pode gerar o cdigo .Hex de seu programa. No menu Compilar -> Compile, ou
Compilar -> Compilar como ... se voc j compilou este programa e voc quer especificar
um nome de arquivo diferente. Se no houver erros, em seguida LDmicro ir gerar um
arquivo no formato .Hex pronto para programao em seu microcontrolador.
Use qualquer software de programao e hardware que voc tem para carregar o
arquivo .Hex
no microcontrolador. Lembre-se de definir os bits de configurao (fuses)!
Para os processadores PIC16, os bits de configurao esto includas no arquivo hex,
porque o software de programao monitora automaticamente.

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

Referncia das Instrues


> CONTATO, NORMALMENTE ABERTO
Xname, Rname ou Yname
----] [---- ----] [---- ----] [---Se o sinal que vai para a instruo for falso (a entrada no ativada), ento a sada no ser
acionada, mas se o sinal que vai para a instruo for verdadeiro (a entrada foi acionada) a sada
acionada, mas esse caso s aconteceria se tiver apenas um contato e uma bobina na linha, mas caso
tenha mais instrues na mesma linha , entre o contato e a bobina o sinal passar adiante permitindo
que a prxima instruo seja ativada ou comece a atuar.
Esse tipo de contato tanto pode ser configurado como um pino de entrada do microcontrolador
(Xname), ou como um Contato interno (Internal Relay Rname), ou como um contato que ser
acionado quando um pino de sada estiver ativo (Yname).
> CONTATO, NORMALMENTE FECHADO
Xname, RNAME ou Yname
----] / [---- ----] / [---- ----] / [---Essa instruo tem funo oposta a instruo acima , o estado inicial dela ativo
(Fechado), mas quando recebe um sinal verdadeiro ela muda de estado e desativa
(Abre). Esse tipo de contato tanto pode ser configurado como um pino de entrada do
microcontrolador (Xname), ou como um Contato interno (Internal Relay Rname), ou
como um contato que ser acionado quando um pino de sada estiver ativo (Yname) .
>COIL, NORMAL
RNAME
---(

----

----

Yname
)
----

Se o sinal que vai para a instruo for falso, ento o Rele interno (Rname) ou pino de
sada (Yname) permanece inativo (Aberto), mas quando o sinal for verdadeiro, ento o
Rele interno(Rname) ou pinode sada (Yname) acionado (fechado).
Esta instruo deve estar a direita na linha em que ela for colocada.
> COIL, NEGADA
RNAME
Yname
---- ( / ) ------- ( / ) ---Essa instruo tem a funo oposta a instruo acima, se o sinal que vai para a instruo
for falso, ento o Rele interno (Rname) ou pino de sada (Yname) permanece ativo
(fechado), mas se o sinal for verdadeiro, ento o Rele interno(Rname) ou pino de sada
(Yname) desacionado ( Aberto).
Esta instruo deve estar a direita na linha em que ela for colocada.

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

> BOBINA, SOMENTE ATIVO


RNAME
---(S)
----

----

(S)

Yname
----

Se o sinal que vai para a instruo verdadeiro, ento o dado rel interno ou pino de
sada definido como ativo. Caso contrrio, o interno rel ou estado pino de sada no
alterado. Esta instruo s pode alterar o estado de uma bobina de desativado para ativo,
por
isso,

normalmente
utilizado em combinao com uma nica bobina que somente desativa.
Esta instruo deve estar a direita na linha em que ela for colocada.
> BOBINA, SOMENTE DESATIVO
RNAME
Yname
---- (R) ------- (R) ---Se o sinal que vai para a instruo verdadeiro, ento o dado rel interno ou pino de
sada desativado. Caso contrrio, o rel interno ou estado pino de sada no alterado.
Esta instruo
s pode alterar o estado de uma bobina de ativo para desativado, por isso, normalmente
utilizado com uma Bobina, somente ativo em conjunto.
Esta instruo deve estar a direita na linha em que ela for colocada.
> TEMPORIZADOR PARA LIGAR
Tdon
- [TON 1.000 s] Quando o sinal que vai para a instruo passa de falso para verdadeiro, o sinal de sada
permanece falso por 1.000 s antes de se tornar verdadeiro. Quando o sinal que vai para a
entrada desta instruo vai de verdadeiro para falso, o sinal de sada vai para falso
imediatamente. O temporizador zerado sempre que a entrada for falsa, para acionar o
temporizador a entrada deve permanecer verdadeira por 1000 milissegundos
consecutivos e assim ser acionada a sada.
O tempo de atraso pode ser configurado.
A varivel `TNAME 'conta-se a partir de zero em unidades de tempo em ciclos de
trabalho, a Instruo TON tem a sada verdadeira quando a varivel do contador maior
ou igual ao atraso determinado. Tambm possvel manipular a varivel em outro lugar,
por exemplo, com uma instruo MOV.
> TEMPORIZADOR PARA DESLIGAR
-

[TOF

1.000

s]

Tdoff
-

Quando o sinal que vai para a instruo passa de verdadeiro para falso, o sinal de sada

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

permanece contando 1.000 s antes de se tornar falso. Quando o sinal que vai para a
instruo passa de falso para verdadeiro, o sinal de sada se torna verdadeiro
imediatamente. O temporizador reinicia cada vez que a entrada se torna falsa; a entrada
deve permanecer falsa por 1000 milissegundos consecutivos antes de desligar sada. O
tempo de atraso configurvel.
A varivel `TNAME ' conta-se a partir de zero em unidades de tempo em ciclos de
trabalho, a Instruo TOF tem a sada verdadeira quando a varivel do contador maior
ou igual ao atraso determinado. possvel manipular a varivel em outro lugar, por
exemplo, com uma instruo MOV.
>

TEMPORIZADOR
-

RETENTIVO
[RTO
1.000

s]

TRTO
-

Esta instruo mantm o controle de quanto tempo a entrada tem sido verdadeira. E se a
entrada for verdadeira por pelo menos 1.000 s, ento a sada se torna verdade. Caso
contrrio, a sada permanecer falsa. A entrada no precisa ser verdadeira por 1000
milissegundos consecutivos; Se a entrada se tornar verdadeira por 0,6 s, seguidos e falsa
por 2,0 e em seguida por verdadeira por mais 0,4 s, seguidos, a sada se tornara
verdadeira. Aps a sada ser verdadeira ele ir permanecer acionado mesmo aps a
entrada se tornar falsa.
Este temporizador deve ser redefinido manualmente, utilizando a instruo de reset
(REDEFINIR).
A varivel `TNAME 'conta-se a partir de zero em unidades de tempo de verificao. O
Instruo TRTO tem a sada verdadeira quando a varivel do contador maior que ou
igual ao atraso determinado. possvel manipular a varivel em outro lugar, por exemplo,
com
uma
instruo
MOV.
> REDEFINIR
TRTO
Citems
---- {RES} ---- ---- {RES}---Esta instruo repe um temporizador ou um contador. TON e TOF temporizadores so
temporizadores que conseguem voltar a zero automaticamente quando a sua entrada
falsa ou verdadeira, ento o RES no exigido para estes temporizadores. Os
temporizadores RTO e CTU / CTD contadores que no reiniciam automaticamente, de
modo que deve ser redefinido mo usando a instruo RES. Quando a entrada for
verdadeira, o contador ou temporizador redefinido (resetado) e quando a entrada se
torna falsa, nenhuma ao tomada.
Esta instruo deve ser a instruo mais direita na linha em que ela for colocada.
> PULSO DE SUBIDA
- [OSR_ /] Esta instruo ativa na borda de subida de cada pulso recebido, ela til se voc deseja

by Smart Radio www.SmartRadio.com.br/CLP/

Guia de uso Compilador Ladder LDMicro em Portugus

acionar eventos na borda de subida de um sinal.


> PULDO DE DESCIDA
- [OSF \ _] Esta instruo funciona com a lgico inversa a instruo anterior, ela ativa quando recebe
a borda de descida de cada pulso recebido. Ela til se voc deseja acionar eventos na
borda de descida de um sinal.
CURTO-CIRCUITO
----+------+----

CIRCUITO ABERTO
-----+

+-----

A condio de um curto-circuito na sada sempre igual ao seu condio de entrada, J a


condio de um circuito aberto na sada sempre falsa.
Estas instrues so principalmente teis para a depurao.
> RELE DE CONTROLE MESTRE
- {RLY MASTER} Por padro, cada linha comea dando as instrues a condio de verdadeira. Se um
Rele mestre usado para controle e comea com a linha em condio verdadeira ento
todos os reles (Bobinas) e linhas que estiverem baixo dele tambem ficaro acionadas,
isso permanecera at que chegue o prximo Rele mestre que determinara quantas linhas
estaro sendo controladas por esse par de Reles mestre.
> MOVER
{destvar: = } {Tret: =
}
- {123 MOV} - - {SrcVar MOV}Quando a entrada desta instruo for verdadeira, ele define o valor determinado ou uma
varivel de origem para a varivel de destino. Quando a entrada desta instruo for falsa
nada acontece. Voc pode atribuir qualquer valor a uma varivel com a instruo MOVER,
isto inclui temporizadores e o valor das variveis de contadores, que pode ser distinguidos
pelo inicio `T 'ou' C '. Por exemplo,
usar a instruo MOVER o valor 0 para a varivel de um temporizador retentivo
equivalente a instruo RES.
Esta instruo deve ficar a direita.
> OPERAES ARITIMETICAS
{ADD kay: = }
{SUB CCNT: =}
- {'A' + 10
} - - {CCNT 10 } > {MUL dest: =}
- {Var * - 990 }-

{DIV DV: =
- {dv / -10.000

}
}-

by Smart Radio www.SmartRadio.com.br/CLP/

10

Guia de uso Compilador Ladder LDMicro em Portugus

Quando a entrada desta instruo for verdadeira, ela define o valor da varivel de destino
usando a varivel de origem ou o numero inserido para fazer a operao de acordo com a
instruo selecionada, estas instrues utilizam 16 bit (signed).
O resultado obtido a cada ciclo quando a condio de entrada for verdadeira, Se voc
estiver aumentando ou diminuindo uma varivel (ou seja, se a varivel de destino
tambm um dos operandos), ento voc provavelmente no quer que a linha permanea
ativada, caso isso ocorra esta instruo continuara calculando e alterando o valor da
varivel de destino, normalmente, voc usaria uma instruo de PULSO DE SUBIDA para
que ele s ative na borda de subida ou de descida do sinal de entrada.
Esta instruo deve ficar a direita .
> COMPARAR
[var ==]
[var> ]
- [Var2 ] - [1
]-

[1> = ]
- [ Ton ] -

> [Var / =]
- [Var2 ] - -

[1 <= ]
- [Cup ] -

[ -4 <]
[vartwo] -

Se a entrada para essa instruo estiver desativada, ento a sada falsa, mas se a
entrada for ativada, ento a sada verdadeira, a sada ser acionada somente se a
condio estabelecida for verdadeira.
Esta instruo pode ser usada para comparar (igual a, maior que, maior ou igual do
que, no igual a, menor do que, menor ou igual do que). Voc pode comparar duas
variveis ou uma varivel e uma constante, mas os valores inseridos devero ser uma
varivel ou constante de 16 bits (signed).
> CONTADOR
Cname
- [CTU> = 5] -

Cname
- [CTD> = 5] -

Um contador incrementa (CTU, contagem crescente) ou diminui (CTD, contagem


decrescente) quando dado pulsos em sua entrada, e a sada do contador ser acionada
quando a varivel atribuda a ele for maior ou igual a 5 ( para o exemplo acima),
Voc pode ter a instruo CTU e a instruo CTD com o mesmo nome, a fim de
incrementar e decrementar a mesma varivel.
A instruo RES pode redefinir um contador, ou voc pode executar operaes variveis
gerais com a varivel de contagem.
> CONTADOR CIRCULAR
Cname
- {CTC 0: 7} Um contador circular funciona como um contador CTU normal, exceto que depois de
atingir seu limite superior, ele redefine a sua varivel de contador e volta a 0. Por
exemplo, o contador mostrado acima contaria 0, 1, 2, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0,

by Smart Radio www.SmartRadio.com.br/CLP/

11

Guia de uso Compilador Ladder LDMicro em Portugus

1, .... Isto til em combinao com instrues condicionais sobre a varivel `Cname ';
Esta instruo deve ficar direita da linha.
> RESGISTRADOR DE DESLOCAMENTO
{SHIFT REG}
- {Reg0..3
}Um Registrador de Deslocamento (Shift Register), est associado com um conjunto de
variveis. Por exemplo, este registo de deslocamento est associado com as variveis
'REG0 ',` REG1', `REG2 ', e` REG3'.
A entrada para o registo de deslocamento `reg0 '. Ele aciona a cada borda de subida da
condio em que ele for colocado, o registo de deslocamento ser para a direita. Isso
significa que ele atribui `REG3: = REG2 ',` REG2: = REG1 '. e `REG1: = REG0 '. `REG0 '
deixado inalterado. Uma grande mudana pode facilmente consumir muita memria.
Esta instruo deve ficar mais direita na linha.
> TABELA DE CONSULTA (Look up Table)
{dest: = }
- {LUT [i]} Uma Tabela de Consulta (Look up Table) um conjunto de N dados ordenados. Quando a
condio de entrada for LIGADO, a varivel de destino dest ser carregada com o valor
da varivel de origem 'index'. O ndice (index) inicia em zero.
Um contador pode ser usado para ser a varivel de ndice e assim mudar os valores da
varivel dest conforme o que for programado.
Esta instruo deve ser a mais a direita na linha.
> Tabela Linear por partes
{yvar: =}
- {PWL [xvar]} Esta a melhor forma de aproximar uma complicada funo de transformao no linear.
Pode ser til, por exemplo, se voc tiver que associar os valores lidos a uma curva de
calibrao baseado no valor de entrada de um sensor.
Voc pode entrar com dados na tabela associando com um valor linear desejado. O valor
ser atribudo a varivel xvar, e isso define o valor da varivel yvar.
Se voc atribuir a varivel xvar um valor entre dois pontos lanados na tabela, o valor de
yvar ser computado em funo da proximidade deste dois valores.
Os pontos precisam ser especificados em ordem crescente em xvar. Em alguns casos,
por questes matemticas e de limitaes do processamento aritmtico de 16 bits, o
LDmicro poder gerar mensagens de erro relativas a converso. Neste caso, adicione
mais dados tabela. Ex: Isso ir produzir um erro, se lanado estes dois pontos:

by Smart Radio www.SmartRadio.com.br/CLP/

12

Guia de uso Compilador Ladder LDMicro em Portugus

F (0) = 2
f (5) = 10
f (10) = 50
F (100) = 100
Isto significa que os pontos
(x0, y0) = (0, 2)
(x1, y1) = (5, 10)
(x2, y2) = (10, 50)
(x3, y3) = (100, 100)
Voc pode inserir esses 4 pontos na tabela associando esses pontos instruo. A
instruo vai analisar o valor de xvar, e definir o valor de yvar. Ele ir definir yvar de tal
maneira que a curva linear vai passar por todos os pontos que foram colocados; por
exemplo, se voc definir xvar = 10, ento a instruo ir definir yvar = 50.
Se voc der a instruo o valor que fique entre dois dos valores de x para a varivel xvar,
ento a instruo ir definir a varivel yvar de modo que (xvar, yvar) encontre-se na linha
reta que liga estes dois pontos na tabela. Por exemplo, xvar = 55 indica uma sada de
yvar = 75. (Os dois pontos na tabela so (10, 50) e (100, 100). 55 est entre 10 e 100, e
75 est entre 50 e 100, de modo (55, 75) que se pode encontrar na linha que liga estes
dois pontos.)
Os pontos devem ser especificados em ordem crescente por coordenada x. talvez no
seja possvel a realizao de operaes matemticas requeridas para algumas tabelas de
consulta utilizando 16 bits matemticos inteiros; se este for o caso, ento o software ir
avis-lo. Por exemplo, a tabela abaixo ira produzir um erro:
(x0, y0) = (0, 0)
(x1, y1) = (300, 300)
Voc pode diminuir esses erros colocando distancias menores entre os pontos, Por
exemplo, esta tabela equivalente a tabela acima, e no produzira erro:
(x0, y0) = (0, 0)
(x1, y1) = (150, 150)
(x2, y2) = (300, 300)
Dificilmente ser necessrio utilizar mais do que cinco ou seis pontos. Adicionando mais
pontos torna seu cdigo maior e mais lento para executar.
Esta instruo deve ficar direita na linha.
> LEITURA DO CONVERSOR A/D (Entradas Analgicas)

by Smart Radio www.SmartRadio.com.br/CLP/

13

Guia de uso Compilador Ladder LDMicro em Portugus

Aname
- { READ ADC }O software pode gerar um cdigo que possibilita usar os conversores A/D dos
microcontroladores PIC. Se a condio de entrada desta instruo for verdadeira, ento
uma nica amostra ser lida do conversor A/D ser armazenada na varivel `Aname '.
Esta varivel pode ser posteriormente manipulado com operaes varivel em geral
(menor que, maior que, aritmticas em geral, e assim por diante). Voc pode atribuir um
pino a essa varivel da mesma forma que se atribui um pino a uma entrada ou sada
digital.
Caso a linha onde esta instruo no for acionada a varivel ' Aname' permanecera
inalterada.
Atualmente para todos os dispositivos suportados 0 volts na entrada corresponde a uma
leitura do valor ADC de 0, e uma entrada com o valor igual ao VDD (tenso de
alimentao) corresponde a uma leitura ADC de 1023, ou seja; de 10 bits / 0 1023.
possvel usar operaes aritmticas para dimensionar a leitura e converter para as
unidades mais convenientes, mas lembre-se que voc est usando matemtica com
nmeros inteiros apenas.
Em geral, nem todos os pinos estaro disponveis para o uso com o conversor A / D.
O software no permitir que voc atribua a instruo A/D para os pinos que no
possuam a entrada analgica.
Esta instruo deve ficar direita na linha.
> SET PWM CICLO duty_cycle
- {PWM 32,8 kHz} Podemos gerar cdigo para usar o perifrico PWM embutido nos microcontroladores PIC.
Se a condio de entrada desta instruo for verdadeira, ento o duty cycle do perifrico
PWM definido com o valor da varivel duty_cycle. O duty cycle precisa ser um nmero
entre 0 e 100, onde 0 corresponde a sempre desligado, e 100 corresponde a sempre
ligado. (Se voc est familiarizado com o procedimento que os perifricos PWM utilizam,
deve ter percebido que o programa far a converso proporcional do nmero 0 a 100 em
valores binrios correspondentes para os perodos de clock necessrios).
Voc pode especificar a frequncia, em KHz. No entanto, a frequncia que voc
especificar pode no ser a exata a ser utilizada, dependendo dos divisores internos do
microcontrolador e da frequncia de clock utilizada por este. Se voc tentar definir um
valor fora da faixa permitida, o software ir alert-lo.
Esta instruo deve ficar direita na linha.
O tempo de execuo de lgica ladder consome um temporizador para medir o de ciclo
Tempo. Isso significa que a instruo PWM est disponvel apenas em microcontroladores
com pelo menos dois temporizadores adequados. PWM usa o pin CCP2 (no CCP1) do
PIC.

by Smart Radio www.SmartRadio.com.br/CLP/

14

Guia de uso Compilador Ladder LDMicro em Portugus

> FAA PERSISTENTE


saved_var
- {PERSIST}Quando a condio da linha desta instruo for verdadeira, ela faz com que o varivel
especificada seja automaticamente guardada na EEPROM.
Isso significa que o seu valor ir persistir, mesmo quando o micro for desligado. No h
necessidade de salvar explicitamente a varivel na EEPROM; isto acontecer
automaticamente, sempre que houver as alteraes na variveis.
Esta varivel automaticamente carregada a partir da EEPROM aps o micro ser
alimentado. E se uma varivel que muda frequentemente feita persistente, ento a
EEPROM pode se desgastar muito rapidamente, porque s recomendado o uso dessa
instruo para um nmero limitado de gravaes, tipicamente cerca de 100.000 vezes.
Quando a condio da linha falsa, nada acontece.
Esta instruo deve ficar direita na linha.
> UART (SERIAL) RECEBER
var
- {UART RECV} O software tambm pode gerar cdigo para usar a UART que os microcontroladores PIC
possuem. Configure a taxa de transmisso no menu Configuraes -> Parmetros de
micro. Certas taxas de transmisso pode no ser usadas por causa da frequncia do
cristal, nestes casos o programa ir avis-lo.
Se a condio de entrada para essa instruo for falsa, ento nada acontece. Se a
condio de entrada for verdadeira, ento esta instruo ir receber um nico caractere a
partir da UART. Se nenhum caractere for lido em seguida, a condio de sada se tornara
falsa. Se um caracter for lido, em seguida, seu valor ASCII armazenado em `var ',
> UART (SERIAL) ENVIAR
var
- {UART SEND} O software tambm pode gerar cdigo para usar a UART que os microcontroladores PIC
possuem. Configure a taxa de transmisso no menu Configuraes -> Parmetros de
micro. Certas taxas de transmisso pode no ser usadas por causa da frequncia do
cristal, nestes casos o programa ir avis-lo.
Se a entrada desta instruo estiver DESLIGADA, ento nada acontecer. Se a condio
estiver LIGADA, a instruo ir enviar um simples caractere na UART. O valor ASCII do
caractere a ser enviado deve ter sido previamente armazenado na varivel var. A opo

by Smart Radio www.SmartRadio.com.br/CLP/

15

Guia de uso Compilador Ladder LDMicro em Portugus

de sada na linha ser LIGADA enquanto a transmisso estiver ocorrendo, e DESLIGADA


quando o processo terminar.
Lembre que o caractere toma algum tempo para ser transmitido. Verifique a condio de
sada para se certificar que o processo de transmisso do primeiro caractere terminou
antes de enviar um segundo.
> STRING FORMATADA NA UART
var
- {"Pressure: \ 3 \ r \ n"} Quando a linha em que essa instruo esta passa de falsa para verdadeira, ele comea a
enviar uma srie de caracteres atravs da porta serial. E se dentre esses caracteres
conter a sequncia especial
'\ 3', ento essa sequncia vai ser substituda pelo valor de var `', que automaticamente
convertida em uma srie de caracteres. A varivel ser formatado para tomar exatamente
3 caracteres; Por exemplo, se var `' igual a 35, ento a sequncia impressa ser
exatamente `Presso: 35 \ r \ n '(note um espao extra). Se em vez disso a varivel `var '
for igual a 1432, ento o comportamento ser indefinido, porque 1432 tem mais de trs
dgitos.
Nesse caso seria necessrio o uso de `\ 4 '.
Se a varivel puder ser negativa, ento use `\ -3d '(ou` \ -4d' etc.). Isso far com que se
imprima/mande um espao esquerda para nmeros positivos, e um sinal de menos para
nmeros negativos.
Se vrias instrues dessa forem energizadas ao mesmo tempo (ou se forem energizadas
e concludas uma antes de outra), ou se estes instrues so misturados com as
instrues do UART TX, em seguida, o comportamento se torna indefinido.
Tambm possvel utilizar esta instruo para produzir uma serie fixa, sem interpolao
do valor de uma varivel inteira nos textos que so enviados pela serial. Nesse caso,
simplesmente no incluem a sequncia especial de escape(Escape).
Usar `\\ 'para conseguir enviar uma barra invertida .
Abaixo segue os comandos disponveis:
\ R - carriage return (retorno de carro. Volta para primeira coluna)
* \ N - nova linha
* \ F - formfeed (Alimenta formulrio. Geralmente usado como clear)
* \ B backspace (Volta um caractere)
* \ Xab - personagem com valor ASCII 0xAB (hex) (exibir carac. Especial)
A sada desta instruo verdadeira enquanto ela estiver transmitindo dados. Esta
instruo consome muita memria de programa, e deve ser usada com cuidado. Na
implementao atual do programa, esta funo no muito otimizada consumindo muito
recurso de processamento.

by Smart Radio www.SmartRadio.com.br/CLP/

16

Guia de uso Compilador Ladder LDMicro em Portugus

Nota sobre a utilizao MATH


Lembre-se que programa realiza apenas operaes de inteiros de 16 bits. Que significa
que o resultado final de qualquer clculo que efetuada deve ser um inteiro entre 32768 e
32767. E isto tambm significa que o resultado intermedirio de seu clculo deve estar
todos dentro desse intervalo.
Por exemplo, digamos que voc queria calcular y = (1 / x) * 1200, em que x est entre 1 e
20. Em seguida, y vai entre 1200 e 60, que se encaixa um nmero inteiro de 16-bit, por
isso , pelo menos em teoria possvel executar o clculo. H duas maneiras que voc
pode codificar isso: voc pode executar o inverso, e em seguida, multiplicar:

|| {Temporrio DIV: =}
||
|| --------- {1 / x} ---------||
||
||
|| {MUL y: =}
||
|| ---------- {Temporrio * 1200} ---------- ||
||
||
Ou voc poderia apenas fazer a diviso diretamente, em uma nica etapa:
||
{DIV y: =}
|| ----------- {1200 / X }|| -----------

||
||

Matematicamente, as duas so equivalentes. Mas ao test-las, pode ser observado que a


primeira sempre dar o incorreto resultado de y = 0. Isso porque a varivel temp
somente armazenar valores inteiros, e o resultado do primeiro degrau (1 / x) geralmente
ser um nmero menor que 1 (para x = 3, tempo ser 0,3...) e isso no possvel de se
armazenar em uma varivel inteira.
Se voc estiver tendo problemas nos resultados de suas equaes, verifique portanto os
valores intermedirios, observando se nenhum valor gerado ir resultar em dados no
armazenveis em variveis de 16 bits com sinal.
Quando voc precisar multiplicar uma varivel por uma frao, use isso usando
respectivamente as instrues de multiplicao e diviso. Por exemplo, para multiplicar y
por 1.8 * x, calcule: y = (9/5)*x (lembrando que 9/5 = 1.8). E, no cdigo ladder, faa a
multiplicao ocorrer antes da diviso.

|| {MUL temp: =}
|| --------- * 9 {x} ----------

||
||

by Smart Radio www.SmartRadio.com.br/CLP/

17

Guia de uso Compilador Ladder LDMicro em Portugus

||
||
|| {DIV y: =}
||
|| ----------- {Temp / 5} ----------- ||
Isso funcionar para qualquer x < (32767 / 9), ou x < 3640. Para valores maiores de x, a
varivel temp ir sair de seu limite.
Estilo de codificao
Permitido que vrias bobinas fiquem em paralelo em uma nica linha, isto significa que
voc podemos fazer como no exemplo abaixo.
||
Xa
Ya
||
|| -------] [-------------- ( ) ------- ||
||
||
||
Xb
Yb
||
|| -------] [---------- |-- ( ) ------- ||
||
| Yc
||
||
|-- ( ) -------- ||
Em vez disso:
||
Xa
Ya
||
|| -------] [-------------- ( ) ------- ||
||
||
||
||
||
||
||
||
||
Xb
Yb
||
|| -------] [-------------- ( ) ------- ||
||
||
||
||
||
||
||
||
||
Xb
Yc
||
|| -------] [-------------- () ---------||
||
||
Isto significa que, em teoria, voc poderia escrever qualquer programa como uma linha
gigante, e no h necessidade de usar vrias linhas em tudo. Na prtica, isso seria uma
m ideia, porque, como as linhas ficam juntas se torna mais complexo diferenciar, isso
acaba dificultando editar sem apagar e muitas vezes tem que mudar parte de lgica.
Ainda assim, muitas vezes uma boa ideia para lgica de grupo relacionadas juntos

by Smart Radio www.SmartRadio.com.br/CLP/

18

Guia de uso Compilador Ladder LDMicro em Portugus

como uma nica linha. Isso gera um cdigo quase idntico ao de linhas separadas, mas
mostra que eles esto relacionados quando voc olha para eles no diagrama .
Erros
O programa no gera um cdigo .HEX (arquivo direto ser gravado no PIC) muito
eficiente; pois ele lento para executar, e desperdia Memoria flash e RAM. Apesar disso,
um PIC mdio como a linha 16F capaz de fazer tudo o que um pequeno CLP, ento isso
acaba no sendo um problema na grande maioria dos casos.
Por outro lado o cdigo gerado como Byte Code, ser interpretado por uma mquina
virtual dentro de outro programa num microcontrolador ou at mesmo um PC, tem como
principal fator de otimizao execuo a prpria mquina onde est sendo executado, j
que no depende de cdigos Assembly (.HEX) gerados pelo software.
O comprimento mximo de nomes de variveis limitado. Isto de modo que eles se
encaixam muito bem para o diagrama LADDER.
Se o seu programa grande demais, em memria de programao, ou memria de
dados, essas limitaes dependem do dispositivo que voc escolheu, ento caso voc
tenha escolhido um com a memoria insuficiente para o seu programa provavelmente ira
gerar um erro.

by Smart Radio www.SmartRadio.com.br/CLP/

19