You are on page 1of 20

INTRODUCCIN

LDmicro genera cdigo nativo para cierta PIC16 de Microchip y Atmel AVR
microcontroladores. Por lo general, el software para estos microcontroladores
est escrito en un lenguaje de programacin como ensamblador, C o BASIC.
Un programa en una de idiomas comprende una lista de instrucciones. Estos
lenguajes son potente y bien adaptado a la arquitectura del procesador, que
internamente ejecuta una lista de instrucciones.

PLC, por el contrario, a menudo se ha programado en lgica de escalera. Un


simple
programa podra tener este aspecto:

||
||
|| Xbutton1 Tdon Rchatter
Yred ||
1 ||-------]/[---------[TON 1.000 s]-+-------]/[----------
----( )-------||
|| |
||
|| Xbutton2 Tdof |
||
||-------]/[---------[TOF 2.000 s]-
+ ||
||
||
||
||
||
||
|| Rchatter Ton Tnew
Rchatter ||
2 ||-------]/[---------[TON 1.000 s]----[TOF 1.000 s]-----
----( )-------||
||
||
||
||
||
||
||------[END]-------------------------------------------
--------------||
||
||
||
||

(TON es un retraso de encendido; TOF es un retardo a la desconexin Las -] [-


son entradas, que se comportan algo as como los contactos de un rel. los -
(+) - son salidas, que se comportan igual que el tipo de bobina de un rel.
Un nmero de diferencias son:

* El programa se presenta en formato grfico, no como una lista textual


de los estados. Muchas personas inicialmente encontrarn esto ms fcil
de
entender.

* En el nivel ms bsico, los programas se ven como diagramas de circuitos,


con
contactos de rel (entradas) y bobinas (salidas). Esto es intuitivo para
programadores con conocimiento de la teora de circuitos elctricos.

* El compilador con lgica de escalera se ocupa de lo que se calcula


dnde, usted no tiene que escribir cdigo para determinar cuando las
salidas
tiene que conseguir vuelto a calcular sobre la base de un cambio en las
entradas o una
evento de temporizador, y usted no tiene que especificar el orden en el que
estos clculos deben llevarse a cabo; las herramientas PLC hacen eso por
usted.

LDmicro compila lgica de escalera para PIC16 o cdigo AVR.


Los procesadores compatibles son:

* PIC16F877
* PIC16F628
* PIC16F876
* PIC16F88
* PIC16F819
* PIC16F887
* PIC16F886
* ATmega128
* ATmega64
* ATmega162
* ATmega32
* ATmega16
* ATmega8

Usando LDmicro, puede dibujar un diagrama de contactos para su programa.


Usted puede
simular la lgica en tiempo real en su PC. Entonces, cuando usted est
convencido
que es correcta puede asignar pines del microcontrolador al programa y
salidas.
Una vez que haya asignado los pines, puede puede compilar PIC o AVR.
La salida del compilador es archivo un .hex que se puede programar en el
microcontrolador utilizando cualquier programador o bootloader para PIC /
AVR.

LDmicro est diseado para ser algo similar a la mayora de PLC comercial
y sistemas de programacin. Hay algunas excepciones, y un montn de
cosas No son estndar en la industria de todos modos. Lea cuidadosamente la
descripcin de cada instruccin, incluso si parece familiar. Este documento
asume conocimiento bsico de la lgica de escalera y de la estructura de
software PLC (El ciclo de ejecucin: leer entradas, clculo, escribir salidas).

OBJETIVOS ADICIONALES

Tambin es posible generar un cdigo ANSI C. Usted podra utilizar esto con
cualquier
procesador para el que tenga un compilador C, pero usted es responsable de
suministrar el tiempo de ejecucin. Esto significa que solo genera el fuente para
un PlcCycle funcin(). Usted es responsable de llamar PlcCycle cada tiempo de
ciclo, y usted es responsable de la implementacin de todas las E/S (Lectura /
escritura de entrada digital, etc.) funciones que el PlcCycle() llama.

Por ltimo, LDmicro puede generar cdigo de bytes independiente del


procesador para una
mquina virtual diseado para ejecutar cdigo de lgica de escalera. Este
objetivo se trabajar para casi cualquier plataforma, siempre y cuando
se puede proporcionar su propia mquina virtual. Esto podra ser til para
aplicaciones donde se desee utilizar la lgica de escalera como un lenguaje de
script para personalizar una mayor programa.

OPCIONES DE LNEA DE RDENES

ldmicro.exe es normalmente ejecutado sin opciones de lnea de comandos. Eso


significa
que slo puede hacer un acceso directo al programa, o guardarlo en
su escritorio y haga doble clic en el icono cuando desee ejecutarlo, y
luego puede hacer todo, desde dentro de la interfaz grfica de usuario.

Si LDmicro se pasa un solo nombre de archivo en la lnea de comandos


(Por ejemplo, `ldmicro.exe asd.ld '), entonces LDmicro intentar abrir` asd.ld',
si es que existe. Un error se produce si no existe `asd.ld '. Esta significa que se
puede asociar con los archivos ldmicro.exe .LD, para que se
ejecute automticamente cuando se hace doble clic en un archivo .ld.

Si LDmicro se hace pasar argumentos de lnea de comandos en


forma `Ldmicro.exe / c src.ld dest.hex ', entonces se trata de compilar` src.ld', y
guardar la salida como `dest.hex '. LDmicro sale despus de compilar, si la
compilacin se ha realizado correctamente o no. Cualquier mensaje se
imprimen a la consola. Este modo es til slo cuando se ejecuta desde el
LDmicro lnea de comando.

LO ESENCIAL

Si ejecuta LDmicro sin argumentos a continuacin, se inicia con un


vaco programa. Si ejecuta LDmicro con el nombre de un programa de escalera
(xxx.ld) en la lnea de comandos a continuacin, se intentar cargar ese
programa en el inicio.
LDmicro utiliza su propio formato interno para el programa; no puede importar
la lgica de cualquier otra herramienta.

Si no se ha cargado un programa existente a continuacin, se le dar un


programa con un escaln vaco. Se podra aadir una instruccin para ello; por
ejemplo se podra aadir un conjunto de contactos (Instruccin -> Insertar
Contactos) llamado `XNew '. `X 'significa que los contactos sern atados a un
pin de entrada en el microcontrolador. Se podra asignar un PIN a ella ms
tarde, despus de elegir una microcontrolador y cambiar el nombre de los
contactos. La primera letra del nombre indica qu tipo de objeto se trata. Por
ejemplo:

* Xname - ligado a un pin de entrada en el microcontrolador


* Yname - ligado a un pin de salida en el microcontrolador
* RNAME - `rel interno ': un poco en la memoria
* NombreT - un temporizador; a su vez-en el retraso, desvo de retardo, o
retentiva
* Cname - un contador, ya sea hacia arriba o contar-count-down
* Aname - un nmero entero leer de un convertidor A / D
* Nombre - una de propsito general (entero) Variable

Elija el resto del nombre para que describa lo que hace el objeto,
y de manera que es nico dentro del programa. El mismo nombre se refiere
siempre
al mismo objeto dentro del programa. Por ejemplo, sera un error
tener un retraso de encendido (TON) llamado Tdelay y un retardo de
desconexin (TOF)
Tdelay llamado en el mismo programa, ya que cada uno necesita su propio
contador
memoria. Por otra parte, sera correcto para tener un temporizador retentivo
(RTO) llamado Tdelay y una instruccin de restablecimiento (RES) asociado
con
Tdelay, ya que ese caso se desea que ambas instrucciones para trabajar con
el mismo temporizador.

Los nombres de variables pueden consistir en letras, nmeros y caracteres de


subrayado
(_). Un nombre de variable no debe empezar por un nmero. Los nombres de
variables
distingue maysculas y minsculas.

Las instrucciones generales variables (MOV, ADD, EQU, etc.) pueden trabajar
en variables con cualquier nombre. Esto significa que pueden acceder
temporizador y acumuladores mostrador. Esto a veces puede ser til; por
ejemplo, se podra comprobar si el recuento de un contador de tiempo est en
un intervalo particular.
Las variables son siempre enteros de 16 bits. Esto significa que pueden ir de -
32768 a 32767. Las variables siempre se tratan como firmado. Usted
puede especificar literales como nmeros decimales normales (0, 1234, -56).
Tambin puedes especificar los valores de caracteres ASCII ('A', 'z'), poniendo
el carcter de comillas simples. Se puede utilizar un cdigo de caracteres
ASCII en la mayora de los lugares que se puede utilizar un nmero decimal.

En la parte inferior de la pantalla, ver una lista de todos los objetos en el


programa. Esta lista se genera automticamente a partir del programa; no hay
necesidad de mantenerlo al da con la mano. La mayora de los objetos no lo
hacen necesita ninguna configuracin.
Xname, Yname, y objetos unNombre deben estar asignado a un pin del
microcontrolador, sin embargo. En primer lugar elegir qu microcontrolador que
est utilizando (Ajustes -> Microcontroladores). A continuacin, asigne su I/O
botones por doble clic en ellos en la lista.

Puede modificar el programa mediante la insercin o eliminacin de


instrucciones. los
cursor en la pantalla del programa parpadea para indicar el seleccionado en
ese momento
la instruccin y el punto de insercin actual. Si no parpadea entonces pulse
<Tab> o haga clic en una instruccin. Ahora puede eliminar el
actual instrucciones, o puede insertar una nueva instruccin a la derecha oa la
izquierda (En serie con) o por encima o por debajo (en paralelo con) el
seleccionado instruccin. Algunas operaciones no estn permitidos. Por
ejemplo, hay instrucciones se permite que el derecho de una bobina.

El programa comienza con slo un peldao. Se pueden aadir ms peldaos


eleccionando
Insertar peldao antes / despus en el men de la lgica. Usted podra
conseguir el mismo efecto mediante la colocacin de muchos subcircuitos
complicadas en paralelo dentro de un peldao, pero es ms clara para utilizar
varios peldaos.

Una vez que haya escrito un programa, puede probarlo en la simulacin, y


luego se puede compilar en un archivo HEX para el microcontrolador de
destino.

SIMULACIN

Para entrar en el modo de simulacin, seleccione Simular -> modo de


simulacin o pulse
<Ctrl + M>. El programa se muestra diferente en el modo de simulacin. Ahi
esta ya no es un cursor. Las instrucciones que se energizan aparecen
brillantes rojo; las instrucciones que no aparecer en gris. Presione la barra
espaciadora para ejecutar el PLC un ciclo. Para desplazarse continuamente en
tiempo real, seleccione Simular -> Iniciar en tiempo real de simulacin, o pulse
<Ctrl + R>. La pantalla de el programa se actualiza en tiempo real como los
cambios de estado del programa.
Puede establecer el estado de las entradas para el programa haciendo doble
clic en la lista en la parte inferior de la pantalla, o haciendo doble clic en
un Xname instruccin contactos en el programa. Si cambia el estado de un pin
de entrada despus de que el cambio no se refleja en cmo el programa Se
muestra hasta que los ciclos de PLC; esto suceder automticamente si se
est ejecutando una simulacin en tiempo real, o al pulsar la barra
espaciadora.

COMPILACIN EN CDIGO NATIVO

En ltima instancia se trata es de generar un archivo .hex que se puede


programar en su microcontrolador. En primer lugar se debe seleccionar el
nmero de parte de la microcontrolador, en la configuracin -> men del
microcontrolador. Entonces t debe asignar un pin de E/S a cada uno o Yname
objeto Xname. Para ello, Doble clic en el nombre del objeto en la lista en la
parte inferior de la pantalla. Un dilogo aparecer donde se puede elegir un pin
no asignado de una lista.

A continuacin, se debe elegir el tiempo de ciclo que va a correr, y que


debe decirle al compilador lo que la velocidad de reloj de las micro va a correr a
estas se establecen en la configuracin -> Parmetros de MCU ... men. En
general se No debera ser necesario cambiar el tiempo de ciclo; 10 ms es un
buen valor para la mayora aplicaciones. Escriba en la frecuencia del cristal que
va a utilizar con el microcontrolador (o el resonador de cermica, etc.) y haga
clic bien.

Ahora se puede generar el cdigo de su programa. Elija Compilar ->


Compilar, o Compilar -> Compilar como ... si ha compilado previamente este
programa y desea especificar un nombre de archivo de salida diferente. Si no
hay errores a continuacin LDmicro generarn un archivo listo para
una programacin IHEX Intel programacin en su chip.

Usar cualquier software de programacin y el hardware tiene que cargar el


hexgono presentar en el microcontrolador. Recuerde que debe establecer los
bits de configuracin (fusibles)! Para los procesadores PIC16, los bits de
configuracin estn incluidas en el archivo hexadecimal, y la mayora del
software de programacin se ver de forma automtica. Para los procesadores
AVR debe establecer los bits de configuracin manualmente.

INSTRUCCIONES DE REFERENCIA

> CONTACTO, NORMALMENTE ABIERTO

Xname RNAME Yname


----] [---- ----] [---- ----] [----

Si la seal que va a la instruccin es falsa, entonces la salida la seal es falsa.


Si la seal que va a la instruccin es verdadera, a continuacin, la seal de
salida es verdadera si y slo si el pin de entrada dado, pin de salida o rel
interno es cierto, de lo contrario es falso. Esta instruccin puede examinar el
estado de un pin de entrada, un pin de salida, o un rel interno.

> CONTACTO, NORMALMENTE CERRADO

Xname RNAME Yname


----]/[---- ----]/[---- ----]/[----

Si la seal que va a la instruccin es falsa, entonces la salida la seal es falsa.


Si la seal que va a la instruccin es verdadera, a continuacin, la seal de
salida es verdadera si y slo si el pin de entrada dado, pin de salida o rel
interno es falso, de lo contrario es falso. Esta instruccin puede examinar el
estado de un pin de entrada, un pin de salida, o un rel interno. Esto es lo
contrario de un contacto normalmente abierto.

> COIL, NORMAL

RNAME Yname
----( )---- ----( )----

Si la seal que va a la instruccin es falsa, entonces la propuesta rel interno o


pin de salida se borra falsa. Si la seal que va en esta instruccin es verdadera,
entonces el rel o una salida dada interna pin se establece cierto. No es
significativo para asignar una variable de entrada a una bobina. Esta
instruccin debe ser la instruccin de ms a la derecha en su peldao.

> COIL, NEGADA

RNAME Yname
----(/)---- ----(/)----

Si la seal que va a la instruccin es verdadera, entonces el dado rel interno o


pin de salida se borra falsa. Si la seal que va en esta instruccin es falsa,
entonces el rel interno determinado o pin de salida se establece cierto. No es
significativo para asignar una entrada variable para una bobina. Esto es lo
contrario de una bobina normal. Esta la instruccin debe ser la instruccin de
ms a la derecha en su peldao.

> COIL, SET-SOLO

RNAME Yname
----(S)---- ----(S)----

Si la seal que va a la instruccin es verdadera, entonces el dado rel interno o


pin de salida se establece cierto. De lo contrario el interior rel o estado del pin
de salida no se cambia. Esta instruccin slo puede cambiar el estado de una
bobina de falso a verdadero, por lo que es tpicamente se utiliza en
combinacin con una bobina de reposicin de slo. Esta instruccin debe ser la
instruccin ms a la derecha en su peldao.
> COIL, RESET-SOLO

RNAME Yname
----(R)---- ----(R)----

Si la seal que va a la instruccin es verdadera, entonces el dado rel interno o


pin de salida se borra falsa. De lo contrario el rel interno o estado del pin de
salida no se cambia. esta instruccin la instruccin slo se puede cambiar el
estado de una bobina de verdadero a falso, por lo que se usa tpicamente en
combinacin con una bobina de puesta a solamente. Esta la instruccin debe
ser la instruccin de ms a la derecha en su peldao.

> ENCENDIDO RETRASO

Tdon
-[ton 1.000 s]-

Cuando la seal de entrar en la instruccin va de falso a verdadero, la seal de


salida permanece falsa para 1.000 s antes de ir verdad. Cuando el seal que
entra a la instruccin va de verdadero a falso, la salida la seal se hace falso
inmediatamente. El temporizador se pone a cero cada vez que la entrada se
hace falsa; la entrada debe permanecer fiel a 1000 milisegundos
consecutivos antes de la salida ser verdad. El retraso se puede configurar.

La variable NombreT cuenta desde cero en unidades de tiempos de


exploracin. los instruccin TON Salidas cierto cuando la variable contador
es mayor que o igual al retardo dado. Es posible manipular el variable de
contador en otro lugar, por ejemplo, con una instruccin de MOV.

> APAGADO RETRASO

Tdoff
-[tof 1.000 s]-

Cuando la seal de entrar en la instruccin va de verdadero a falso, la seal de


salida se mantiene fiel a 1.000 s antes de ir falsa. Cuando la seal que entra a
la instruccin va de falso a verdadero, la seal de salida se hace verdadero
inmediatamente. El temporizador se pone a cero cada vez que la entrada se
hace falso; la entrada debe permanecer falsa para 1000 milisegundos
consecutivos antes de la salida ser falsa. El retraso es configurable.

La variable NombreT cuenta desde cero en unidades de tiempos de


exploracin. los instruccin TON Salidas cierto cuando la variable contador
es mayor que o igual al retardo dado. Es posible manipular el variable de
contador en otro lugar, por ejemplo, con una instruccin de MOV.

> RETENTIVA TIMER


Trto
-[RTO 1.000 s]-

Esta instruccin se realiza un seguimiento de cunto tiempo su entrada ha sido


cierto. Si su entrada ha sido as durante al menos 1.000 s, entonces la salida
es cierto. De lo contrario la salida es falsa. La entrada no tiene por qu haber
sido cierto para 1000 milisegundos consecutivos; si la entrada se hace
verdadero durante 0,6 s, a continuacin, falsos durante 2,0 s, y luego durante
0,4 s verdaderas, entonces la salida ser verdad. Despus de la salida se hace
verdadero que se mantendr fiel incluso despus de la entrada se hace falso,
siempre que la entrada ha sido cierto por ms de 1.000 s. Por lo tanto, este
temporizador se debe restablecer manualmente, utilizando la instruccin de
restablecimiento.

La variable NombreT cuenta desde cero en unidades de tiempos de


exploracin. los instruccin TON Salidas cierto cuando la variable contador
es mayor que o igual al retardo dado. Es posible manipular el variable de
contador en otro lugar, por ejemplo, con una instruccin de MOV.

> RESET

Trto Citems
----{RES}---- ----{RES}----

Esta instruccin se restablece un temporizador o un contador. TON y TOF son


temporizadores restablece automticamente cuando su entrada hace falsa o
verdadera, por lo que es RES no se requiere para estos temporizadores. RTO
temporizadores y CTU / CTD son contadores no restablecen automticamente,
por lo que deben hacerlo a mano utilizando una RES instruccin. Cuando la
entrada es cierto, el contador o temporizador se restablece; cuando la entrada
es falsa, no se toma ninguna accin. Esta instruccin debe ser la instruccin
ms a la derecha en su peldao.

> ONE-SHOT ASCENDENTE

_
-[OSR_/ ]-

Esta instruccin se emite normalmente falsa. Si la entrada de la instruccin es


cierto durante esta exploracin y era falsa durante la exploracin
anterior entonces la salida es cierto. Por lo tanto, genera un impulso de una
exploracin de ancho a cada flanco ascendente de la seal de entrada. Esta
instruccin es til si desea activar eventos fuera del borde ascendente de una
seal.

> ONE-SHOT DESCENDENTE


_
-[OSF \_]-
Esta instruccin se emite normalmente falsa. Si la entrada de la instruccin es
falsa durante esta exploracin y era verdad durante la exploracin
anterior entonces la salida es cierto. Por lo tanto, genera un impulso de una
exploracin de ancho a cada flanco de bajada de la seal de entrada. Esta
instruccin es til si desea activar eventos fuera del borde descendente de una
seal.

> CORTOCIRCUITO, CIRCUITO ABIERTO

----+----+---- ----+ +----

La condicin de salida de un corto circuito es siempre igual a su condicin de


entrada. La condicin de salida de un circuito abierto es siempre falso. En su
mayora son de utilidad para la depuracin.

> RELE DE CONTROL MAESTRO

-{MASTER RLY}-

Por defecto, la condicin de rengln-in de cada rengln es verdadero. Si un


maestro instruccin de rel de control se ejecuta con una condicin de
rengln-in de falso, entonces la condicin de rengln-in para todos los
siguientes peldaos se convierte falso. Esto continuar hasta que la siguiente
rel de control maestro la instruccin se alcanza (independientemente de la
condicin de rengln en el que de instruccin). Por lo tanto, estas instrucciones
deben utilizarse en pares: una para (tal vez de forma condicional) inicie la
seccin posiblemente discapacidad, y uno para acabar con ella.

> MOVE

{destvar := } {Tret := }
-{ 123 MOV}- -{ srcvar MOV}-

Cuando la entrada de esta instruccin es verdadera, se establece el


dado variable de destino igual a la variable de origen dado o constante.
Cuando la entrada de esta instruccin es falsa nada que sucede. Se pueden
asignar a cualquier variable con la instruccin de movimiento; esto incluye
temporizador y variables de estado de contador, que puede ser distinguido por
el lder de `T 'o` C'. Por ejemplo, una instruccin 0 en movimiento en Tretentive
es equivalente a una instruccin de restablecimiento (RES) para ese
temporizador. Esta instruccin debe ser la instruccin de ms a la derecha en
su peldao.

> OPERACION ARITMETICA

{ADD kay :=} {SUB Ccnt :=}


-{ 'A' + 10 }- -{ Ccnt - 10 }-
{MUL dest :=} {DIV dv := }
-{Var * -990 }- -{dv / -10000}-

Cuando la entrada de esta instruccin es verdadera, se establece el


dado variable de destino igual a la expresin dada. los operandos pueden ser
tanto variables (incluidas las variables de temporizador y contador) o
constantes. Estas instrucciones utilizan 16 bits con signo matemtico.
Recuerda que el resultado se evala en cada ciclo cuando la condicin de
entrada cierto. Si va a aumentar o disminuir una variable (es decir, si la variable
de destino es tambin uno de los operandos), entonces Probablemente no
quieren eso; normalmente se usara un one-shot de manera que se evala slo
en el flanco ascendente o descendente de la entrada condicin. Divida trunca;
8/3 = 2. Esta instruccin debe ser la instruccin ms a la derecha en su
peldao.

> COMPARAR

[var ==] [var>] [1 >=]


-[ Var2 ]- -[ 1 ]- -[Ton ]-

[Var /=] [-4 <] [1 <=]


-[Var2 ]- -[vartwo]- -[Copa]-

Si la entrada de esta instruccin es falsa entonces la salida es falsa. Si la


entrada es cierto, entonces el resultado es verdadero si y slo si el
dado condicin es verdadera. Esta instruccin puede ser utilizado para
comparar (es igual, es mayor que, es mayor que o igual a, no es igual a, es
inferior a, es menor que o igual a) una variable a una variable, o para comparar
una variable a un 16 bits con signo constante.

> CONTADOR

Cname Cname
-[CTU >= 5]- -[CTD >= 5]-

Un contador se incrementa (CTU, cuentan hacia arriba) o decrementos (CTD,


cuentan hacia abajo) el nmero de asociados en cada flanco ascendente de
la entrada escaln condicin (es decir, lo que la condicin de entrada de
rengln va de falso a cierto). La condicin de salida del contador es cierto si el
contador variable es mayor que o igual a 5, y falso en caso contrario.
los condicin de salida de rengln puede ser cierto incluso si la condicin de
entrada es falso; slo depende de la variable de contador. Usted puede tener la
UAT e instrucciones CTD con el mismo nombre, con el fin de incrementar
y disminuir el mismo contador. La instruccin RES puede reiniciar un
contador, o puede realizar operaciones de variables generales sobre la variable
de recuento.

> CONTADOR CIRCULAR

Cname
-{CTC 0: 7}-

Un contador circular funciona como un contador CTU normales, excepto


que despus de alcanzar su lmite superior, se restablece la variable de
contador de nuevo a 0. Por ejemplo, el contador se muestra arriba contara 0,
1, 2, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 2, .... Esto es til en combinacin con
instrucciones condicionales de la variable `Cname '; puede utilizar esto como
un secuenciador. CTC contadores de reloj en la creciente borde de la condicin
de entrada condicin del rengln. Esta instruccin debe ser la instruccin ms a
la derecha en su peldao.

> REGISTRO DE DESPLAZAMIENTO

{SHIFT REG}
-{Reg0..3 }-

Un registro de desplazamiento est asociado con un conjunto de variables. Por


ejemplo, este registro de desplazamiento est asociado con las variables
`reg0 ',` reg1', `Reg2 ', y` reg3'. La entrada al registro de desplazamiento es
`reg0 '. En cada flanco ascendente de la condicin de rengln en el registro de
desplazamiento desplazamiento a la derecha. Eso significa que asigna `reg3: =
reg2 ',` reg2: = reg1 '. y `reg1: = reg0 '. `Reg0 'se deja sin cambios. Un gran
cambio registrarse pueden fcilmente consumir una gran cantidad de memoria.
Esta instruccin debe ser la instruccin ms a la derecha en su peldao.

> Tabla de consulta

{dest := }
-{LUT[i] }-

Una tabla de consulta es un conjunto ordenado de valores de n. Cuando el


rengln de la condicin es verdadera, la variable entera dest se iguala a
la entrada en la tabla de consulta que corresponde a la variable de nmero
entero `I '. El ndice se inicia desde cero, por lo que `i 'debe estar entre 0 y (N-
1). El comportamiento de esta instruccin no est definido si el ndice est
fuera de este rango. Esta instruccin debe ser la ms a la derecha instruccin
en sus peldao.

> TABLA lineal por tramos

{yvar := }
-{PWL[xvar] }-

Esta es una buena manera de aproximar una funcin complicada o curva.


Podra, por ejemplo, ser til si usted est tratando de aplicar una curva de
calibracin para convertir una tensin de salida en bruto de un sensor en
unidades ms convenientes.
Suponga que usted est tratando de aproximar una funcin que convierte una
variable de entrada entero, x, a un nmero entero variable de salida, y.
T conocer la funcin en varios puntos; por ejemplo, es posible saber que

f (0) = 2
f (5) = 10
f (10) = 50
f (100) = 100

Esto significa que los puntos

(X0, y0) = (0, 2)


(X1, y1) = (5, 10)
(X2, y2) = (10, 50)
(X3, y3) = (100, 100)

Puede introducir esos 4 puntos en una tabla asociada a la instruccin lineal a


trozos. El lineal a trozos la instruccin se ver en el valor de xvar, y establecer
el valor de yvar. En l se fijar Yvar de tal manera que la curva lineal a
trozos pasar a travs de todos los puntos que se le dara; por ejemplo, si se
establece xvar = 10, entonces la instruccin asignar yvar = 50.

Si se le da la instruccin de un valor de xvar que se encuentra entre dos de los


valores de x para los cuales le han dado puntos, entonces la instruccin
asignar yvar modo que (xvar, yvar) se encuentra en la recta lnea que une los
dos puntos en la tabla. Por ejemplo, xvar = 55 da una potencia de Yvar = 75.
(Los dos puntos en la tabla son (10, 50) y (100, 100). 55 es un medio camino
entre 10 y 100, y 75 est a medio camino entre el 50 y el 100, por lo que (55,
75) se encuentra en la lnea que conecta esos dos puntos.)

Los puntos deben ser especificadas en orden ascendente por la coordenada x.


Eso puede no ser posible para realizar operaciones matemticas requeridas
para ciertas tablas de consulta utilizando matemticas entero de 16 bits; si este
es el caso, entonces LDmicro le avisar. Por ejemplo, esta tabla de
consulta producir un error:

(X0, y0) = (0, 0)


(X1, y1) = (300, 300)

Puede corregir estos errores al hacer la distancia entre los puntos de la tabla
pequea. Por ejemplo, esta tabla es equivalente a la dado anteriormente, y que
no produce un error:

(X0, y0) = (0, 0)


(X1, y1) = (150, 150)
(X2, y2) = (300, 300)

Debe casi nunca ser necesario utilizar ms de cinco o seis puntos. La adicin
de ms puntos hace su cdigo ms grande y ms lento para ejecutar. El
comportamiento si se pasa un valor de `xvar 'mayor que los ms grandes
coordenada x en la tabla o menor que la ms pequea x de coordenadas en la
tabla no est definido. Esta instruccin debe ser el instruccin de ms a la
derecha en su peldao.

> CONVERSOR ADC

Aname
-{READ ADC}-

LDmicro puede generar cdigo para utilizar los convertidores A / D integradas


en ciertos microcontroladores. Si la condicin de entrada de esta instruccin es
cierto, entonces una sola muestra del convertidor A / D se adquiere y
se almacenado en la variable `Aname '. Esta variable puede ser
posteriormente manipulado con variable de operacin general (menor que,
mayor que, aritmtica, y as sucesivamente). Asignar un alfiler para la variable
`Axxx 'en el misma manera que lo hara asignar un PIN a una entrada o salida
digital, haciendo doble clic en l en la lista en la parte inferior de la pantalla.
Si la condicin de entrada a este rengln es falso entonces la variable `Aname
' se deja sin cambios.

Para todos los dispositivos actualmente soportados, de entrada 0 voltios


corresponde a una lectura de 0 ADC, y una entrada igual a Vdd (la tensin de
alimentacin) corresponde a una lectura ADC de 1023. Si est usando un AVR,
a continuacin, AREF conectar a Vdd. Puede utilizar operaciones aritmticas
para escalar la lectura a las unidades ms convenientes despus, pero
recuerde que usted estn utilizando operaciones con nmeros enteros. En
general, no todas las clavijas estarn disponibles para su uso con el convertidor
A / D. El software no le permitir asignar pines no-A / D a una entrada
analgica. Esta instruccin debe ser la instruccin ms a la derecha en su
peldao.

> CICLO DE TRABAJO PWM

Duty_Cycle
-{PWM 32,8 kHz}-

LDmicro puede generar cdigo para utilizar el PWM perifrica integrada


en ciertos microcontroladores. Si la condicin de entrada de esta instruccin es
cierto, entonces el ciclo de trabajo del perifrico PWM se establece en el valor
de la variable de Duty_Cycle. El ciclo de trabajo debe ser un nmero entre 0 y
100; 0 corresponde a siempre bajos, y 100 corresponde a siempre alta. (Si no
est familiarizado con cmo funciona el perifrico PWM, a continuacin,
observe que eso significa que LDmicro escala automticamente la variable de
ciclo de trabajo de por ciento, a perodos de reloj PWM).

Puede especificar la frecuencia PWM de destino, en Hz. La frecuencia que se


especifica que podra no ser exactamente posible, dependiendo de cmo se se
divide en frecuencia de reloj del microcontrolador. LDmicro se elegir la
frecuencia alcanzable ms cercano; si el error es grande, entonces se le
avisar. Las velocidades ms altas pueden sacrificar resolucin.

Esta instruccin debe ser la instruccin de ms a la derecha en su peldao.


El tiempo de ejecucin de la lgica de escalera consume un temporizador para
medir el ciclo hora. Eso significa que PWM slo est disponible en
microcontroladores con por lo menos dos temporizadores adecuados. PWM
utiliza CCP2 pasador (no CCP1) en chips PIC16 y OC2 (no OC1A) en RAV.

> GRABACION EN EEPORM

saved_var
--{PERSIS}--

Cuando la condicin de rengln en de esta instruccin es verdadera, hace que


el variable de entero especificado que se guarda automticamente en la
memoria EEPROM. Ese significa que su valor persistir, incluso cuando el
micro pierde poder. No hay necesidad de guardar explcitamente la variable en
la EEPROM; que va a suceder de forma automtica, siempre que cambia la
variable. los variable se carga automticamente desde la EEPROM despus de
la reposicin de encendido. Si una variable que cambia con frecuencia se hace
persistente, entonces la EEPROM en sus micro puede llevar a cabo muy
rpidamente, porque es slo bueno para un nmero limitado (~ 100 000) de
escrituras. Cuando el rengln de la condicin es falsa, no pasa nada. Esta
instruccin debe ser el instruccin de ms a la derecha en su peldao.

> UART (SERIAL) RECIBIR

var
-{UART RECV}-

LDmicro puede generar cdigo para utilizar el UART integrado en cierta


microcontroladores. En RAV con mltiples UART nica UART1 (no UART0) es
compatible. Configurar la velocidad de transmisin utilizando Configuracin ->
MCU Parmetros. Ciertas velocidades de transmisin pueden no ser
alcanzables con cierta frecuencias de los cristales; LDmicro le avisar si este
es el caso.

Si la condicin de entrada a esta instruccin es falsa, entonces nada que


sucede. Si la condicin de entrada es cierto, entonces esta instruccin
intentos para recibir un nico personaje de la UART. Si se lee ningn
carcter entonces la condicin de salida es falsa. Si se lee un carcter y
su valor ASCII se almacena en `var ', y la condicin de salida es
verdadera para un solo ciclo del PLC.

> UART (SERIAL) ENVIAR


var
-{SEND UART}-
LDmicro puede generar cdigo para utilizar las UART integradas en
cierta microcontroladores. En AVRS De con mltiples UARTs solamente
UART1 (no UART0) es compatible. Configurar la velocidad de transmisin
utilizando Configuracin -> MCU Parmetros. Ciertas velocidades de
transmisin pueden no ser alcanzables con cierta frecuencias de los cristales;
LDmicro le avisar si este es el caso.

Si la condicin de entrada a esta instruccin es falsa, entonces nada que


sucede. Si la condicin de entrada es cierto, entonces esta instruccin
escribe un solo carcter a la UART. El valor ASCII del carcter de enviar haya
sido previamente objeto almacenado en `var '. La condicin de salida del
rengln es verdadero si el UART est ocupado (en la actualidad se transmite
una carcter), y false en caso contrario.

Recuerde que los personajes toman un tiempo para transmitir. Compruebe la


salida condicin de esta instruccin para asegurarse de que el primer carcter
tiene sido transmitidos antes de intentar enviar un segundo personaje, o
utilizar un temporizador para introducir un retraso entre los caracteres. Slo
debe traer la condicin de entrada real (intente enviar un carcter) cuando la
salida condicin es falsa (UART no est ocupado).

Investigar la instruccin de cadena con formato (siguiente) antes de usar


este instruccin. La instruccin cadena con formato es mucho ms fcil de
usar, y es casi seguro capaz de hacer lo que quiere.

> CADENA DE FORMATEO PARA UART

var
-{"Presin: \3 \r \n"}-

LDmicro puede generar cdigo para utilizar las UART integradas en cierta
microcontroladores. En AVRS De con mltiples UARTs solamente UART1
(no UART0) es compatible. Configurar la velocidad de transmisin utilizando
Configuracin -> MCU Parmetros. Ciertas velocidades de transmisin
pueden no ser alcanzables con cierta frecuencias de los cristales; LDmicro le
avisar si este es el caso.

Cuando el rengln en condiciones para esta instruccin va de falso a cierto,


ste empieza a enviar una cadena entera a travs del puerto serie. Si la
cadena contiene la secuencia especial de `\ 3 ', entonces esa secuencia ser
reemplazado por el valor de `var ', que es automticamente convertido en una
cadena. La variable ser formateado para tomar exactamente 3 caracteres;
por ejemplo, si `var 'es igual a 35, entonces la cadena exacta impresa ser
`Presin: 35 \ r \ n" (nota el extra espacio). Si en lugar de `var 'fuera igual a
1432, entonces el comportamiento hara es indefinido, ya que 1432 tiene ms
de tres dgitos. En ese caso sera necesario el uso de `\ 4 'en su lugar.

Si la variable puede ser negativo, a continuacin, usar `\-3d '(o` \ -4d' etc.) en
su lugar. Eso har que LDmicro para imprimir un espacio inicial para nmeros
positivos y un signo menos para los nmeros negativos.

Si varios formateado instrucciones de cadena se energizan a la vez (O si uno


est excitado antes de que otro se complete), o si stos instrucciones se
entremezclan con las instrucciones UART TX, entonces la comportamiento no
est definido.

Tambin es posible utilizar esta instruccin a la salida de una cadena fija, sin
interpolar el valor de una variable entera en el texto que es enviada por serie.
En ese caso, simplemente no incluyen el especial secuencia de escape.

Use `\\ ' para una barra invertida literal. Adems de la secuencia de
escape para interpolar una variable entera, el siguiente control caracteres estn
disponibles:

* \ R - retorno de carro
* \ N - salto de lnea
* \ F - formfeed
* \ B - retroceso
* \ XAB - carcter con el valor ASCII 0xAB (hex)

La condicin de salida del rengln de esta instruccin es verdadera si bien


es transmisin de datos, de lo falso. Esta instruccin se consume una muy gran
cantidad de memoria de programa, por lo que debe utilizarse con moderacin.
los implementacin actual no es eficiente, pero uno mejor voluntad requerir
modificaciones en todos los back-ends.

NOTA SOBRE EL USO DE MATEMTICAS

Recuerde que LDmicro slo realiza operaciones aritmticas con enteros de 16


bits. Eso significa que el resultado final de cualquier clculo que se realiza debe
ser un nmero entero entre -32768 y 32767. Tambin significa que el
intermedio resultados de sus clculos deben estar todos dentro de ese rango.

Por ejemplo, digamos que usted quiere calcular y = (1 / x) * 1200, donde x es


entre 1 y 20. A continuacin, y va entre 1,200 y 60, que encaja en un entero de
16 bits, por lo que es al menos en teora posible realizar el clculo. Hay dos
formas en que se pueden codificar esto: puede realizar el recproco, y luego
multiplicar:

|| {DIV temp :=} ||


||---------{ 1 / x }----------||
|| ||
|| {MUL y := } ||
||----------{ temp * 1200}----------||
|| ||

O usted podra hacer la divisin directamente, en un solo paso:


|| {DIV y :=} ||
||-----------{ 1200 / x }-----------||

Matemticamente, estos dos son equivalentes; pero si se los pruebe,


entonces se encuentra que el primero da un resultado incorrecto de y = 0. se
debe a que las variables `underflows temp. Por ejemplo, cuando x = 3, (1 / x) =
0,333, pero que no es un nmero entero; la operacin de divisin se aproxima
a esto como temp = 0. Entonces y = temp * 1200 = 0. En la segunda caso no
hay ningn resultado intermedio de subdesbordamiento, as que todo funciona.

Si usted est viendo problemas con su matemtica, a continuacin, comprobar


intermedia
resultados de flujo inferior (o desbordamiento, que se envuelve alrededor ` ';
por ejemplo, 32767 + 1 = -32768). Cuando es posible, elegir las unidades que
ponen en los valores un rango de -100 a 100.

Cuando tenga que escalar una variable por algn factor, hacerlo mediante una
multiplicacin y una divisin. Por ejemplo, a escala y = 1,8 * x, calcular y = (9/5)
* x (Que es el mismo, ya que 1.8 = 9/5), y el cdigo de esto como y = (9 * x) /
5, la realizacin de la multiplicacin primero:

|| {MUL temp :=} ||


||---------{ x * 9 }----------||
|| ||
|| {DIV y :=} ||
||-----------{ temp / 5 }-----------||

Esto funciona para todo x <(32767/9), o <x 3640. Para valores grandes de x, la
variable `temperatura 'se desbordara. Hay un lmite ms bajo similar de x.

ESTILO DE CODIFICACIN

Me permito varias bobinas en paralelo en un solo rengln. Esto significa


que que puede hacer cosas como esta:

|| Xa Ya ||
1 ||-------] [--------------( )-------||
|| ||
|| Xb Yb ||
||-------] [------+-------( )-------||
|| | ||
|| | Yc ||
|| +-------( )-------||
|| ||

En lugar de esto:

|| Xa Ya ||
1 ||-------] [--------------( )-------||
|| ||
|| ||
|| ||
|| ||
|| Xb Yb ||
2 ||-------] [--------------( )-------||
|| ||
|| ||
|| ||
|| ||
|| Xb Yc ||
3 ||-------] [--------------( )-------||
|| ||

Esto significa que, en teora, se podra escribir cualquier programa como un


peldao gigante, y no hay necesidad de utilizar mltiples peldaos en absoluto.
En la prctica esto
sera una mala idea, ya que como peldaos se vuelven ms complejas se
vuelven ms difciles de editar sin borrar y volver a dibujar una gran cantidad de
lgica.

An as, a menudo es una buena idea para la lgica relacionada con el grupo
en conjunto como una sola peldao. Esto genera cdigo casi idntica a si ha
realizado peldaos separados, pero muestra que se relacionan cuando nos
fijamos en ellos en la escalera
diagrama.

* * *

En general, se considera forma pobre para escribir cdigo de una manera tal
que su produccin depende del orden de los peldaos. Por ejemplo, este
cdigo no es muy buena si tanto Xa y Xb pueden nunca ser verdad:

|| Xa {v := } ||
1 ||-------] [--------{ 12 MOV}--||
|| ||
|| Xb {v := } ||
||-------] [--------{ 23 MOV}--||
|| ||
|| ||
|| ||
|| ||
|| [v >] Yc ||
2 ||------[ 15]-------------( )-------||
|| ||

Voy a romper esta regla si, al hacerlo, puedo hacer una pieza de
cdigo significativamente ms compacto, sin embargo. Por ejemplo, aqu es
cmo lo hara convertir una magnitud binario de 4 bits en xB3: 0 en un entero:

|| {v := } ||
3 ||-----------------------------------{ 0 MOV}--||
|| ||
|| Xb0 {ADD v :=} ||
||-------] [------------------{ v + 1 }-----------||
|| ||
|| Xb1 {ADD v :=} ||
||-------] [------------------{ v + 2 }-----------||
|| ||
|| Xb2 {ADD v :=} ||
||-------] [------------------{ v + 4 }-----------||
|| ||
|| Xb3 {ADD v :=} ||
||-------] [------------------{ v + 8 }-----------||
|| ||

Si la instruccin MOV se traslad a la parte inferior del escaln en lugar de la la


parte superior, entonces el valor de v cuando se lee en otro lugar en el
programa hara 0. La salida de este cdigo depende, por tanto en el orden en
que se evalan las instrucciones. Teniendo en cuenta lo complicado que
sera para codificar esto de otra manera, lo acepto.

You might also like