Вы находитесь на странице: 1из 19

Prof.

: Víctor López Femat


INTRODUCCIÓN.

Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de


programarlas, es decir, de almacenar en memoria la información sobre la tarea que iban a
ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos
de cálculo, uno por uno.

Lenguaje Ensamblador es la primera abstracción del Lenguaje de Máquina, consistente en


asociar a los códigos de operación (OPCODES) palabras clave que faciliten su uso por
parte del programador. Como se puede ver, el Lenguaje Ensamblador es directamente
traducible al Lenguaje de Máquina, y viceversa; simplemente, es una abstracción que
facilita su uso para los seres humanos. Por otro lado, la computadora no entiende
directamente el Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Máquina.
Originalmente, este proceso se hacía a mano, usando para ello hojas donde se escribían
tablas de programa similares al ejemplo de la calculadora que vimos anteriormente. Pero,
al ser tan directa la traducción, pronto aparecieron los programas Ensambladores, que son
traductores que convierten el código fuente (en Lenguaje Ensamblador) a código objeto (es
decir, a Lenguaje de máquina).

Una característica que hay que resaltar, es que al depender estos lenguajes del hardware,
hay un distinto Lenguaje de máquina (y, por consiguiente, un distinto Lenguaje
Ensamblador) para cada CPU. Por ejemplo, podemos mencionar tres lenguajes
completamente diferentes, que sin embargo vienen de la aplicación de los conceptos
anteriores:

1. Lenguaje Ensamblador de la familia Intel 80x86.


2. Lenguaje Ensamblador de la familia Motorola 68000.
3. Lenguaje Ensamblador del procesador POWER, usado en las IBM RS/6000.
1. HISTORIA DEL LENGUAJE ENSAMBLADOR.

La primera computadora programable fue la ENIAC en 1946 pero se programaba mediante


circuitos complejos que no eran nada funcionales. Después se empezó a utilizar el lenguaje
máquina que son claves binaras que representan un CÓDIGO DE OPERACIÓN
(OPCODE). Estas se almacenan en grupos de instrucciones llamados PROGRAMAS.

Esto llego a ser muy complicado debido a que se debían aprender series enormes de
códigos binarios para realizar operaciones. Por ejemplo:

 Para realizar la suma se tenía una instrucción binaria muy similar a


"00101010010100101". Es por eso que se complicaba demasiado manejar este tipo
de programación.

Actualmente manejamos lenguajes de Alto nivel que son relativamente sencillos a


comparación con el lenguaje máquina. Pero no se llegó al alto nivel desde el código binario,
existe un lenguaje que nació para facilitar el binary code. Este se llama "LENGUAJE
ENSAMBLADOR".

¿Qué es el lenguaje ensamblador?

Es la primera abstracción del lenguaje máquina, consiste en asociar los OPCODE con
palabras clave que sean fáciles de recordar para el programador. A estas palabras clave se
les llama MNEMÓNICOS. Un programa ensamblador traduce el o convierte el código fuente
(ensamblador) a código objeto (lenguaje maquina).La computadora UNIVAC fue la primera
en usar ensamblador.

¿Qué necesito saber antes de usar lenguaje ensamblador?

• Conocer a detalle como traba el micro.


• Conocer a detalle cómo opera la computadora (Memoria, discos duros,
dispositivos E/S)
• Lógica computacional.
• Manejar algún lenguaje de alto nivel(C, C++, C#, Pascal, Perl, VB, JAVA, etc...)
• Manejo del sistema binario y hexadecimal (suma, resta, multiplicación, división).

¿Qué ventajas ofrece el lenguaje ensamblador?

• Optimizan al máximo los programas en tamaño y velocidad.


• Rápidos y compactos.
• No genera código predefinido como el alto nivel.
• No se necesita capacidades de memoria ni computadoras sofisticadas.
• Nos da habilidades de programación avanzada.

¿Qué desventajas tiene?

• Una instrucción mal interpretada puede generar un caos en nuestro equipo al


grado de tener que reiniciar nuestra máquina.
• La insuficiencia de conocimientos básicos y de programación causa efectos
impredecibles.
• Se vuelve más complejo conforme se agregan rutinas y funciones.
• Se pueden usar con lenguajes de alto nivel (PROGRAMACIÓN HÍBRIDA).

Aplicaciones actuales.

 Sistemas embebidos: Impresoras, cámaras, autos, armas, juguetes.


 Tiempo real: Control de robots, manufactura, adquisición de datos.
 Transporte: Barcos, aviones, sondas espaciales.
 Entretenimiento: Graficacion, multimedia, videojuegos.
 DSP: Procesador digital de señal para operaciones a alta velocidad.

Procesamiento de señales, voz e imagen:

 Aparatos médicos.
 Aparatos para datos sísmicos.
 Reproductores de audio.
 Módems.
 Cámaras digitales.
CLASIFICACIÓN DE MEMORIAS.

Organizando estos tipos de memoria conviene destacar tres categorías si las clasificamos
en función de las operaciones que podemos realizar sobre ellas, es decir, memorias de sólo
lectura, memorias de sobre todo lectura y memorias de lectura escritura.

MEMORIAS DE SÓLO LECTURA:

 ROM: (Read Only Memory).

Se usan principalmente en microprogramación de sistemas. Los fabricantes las suelen


emplear cuando producen componentes de forma masiva. Es una memoria solamente de
lectura es totalmente inalterable sin esta memoria la maquina no arrancaría. La memoria
principal es la convencional que va de 0 a 640 Kb. Cuando la máquina arranca comienza a
trabajar el disco y realiza un testeo, para lo cual necesita memoria, esta memoria es la
convencional (ROM) y está dentro del motherboard (en el BIOS). Apenas arranca utiliza
300 Kb, sigue testeando y llega a más o menos 540 Kb donde se planta. A medida de que
comenzaron a haber softwares con más necesidad de memoria apareció la llamada
memoria expandida que iba de 640 Kb a 1024 Kb en espacio de memoria.

 PROM: (Programmable Read Only Memory).

El proceso de escritura es eléctrico. Se puede grabar posteriormente a la fabricación del


chip, a diferencia de las anteriores que se graba durante la fabricación. Permite una única
grabación y es más cara que la ROM. Es una memoria digital donde el valor de cada bit
depende del estado de un fusible (o antifusible), que puede ser quemado una sola vez. Por
esto la memoria puede ser programada (pueden ser escritos los datos) una sola vez a través
de un dispositivo especial, un programador PROM.

MEMORIAS DE SOBRE TODO LECTURA.

 EPROM (Erasable Programmable Read-Only Memory)


(ROM borrable programable).

Es un tipo de chip de memoria ROM inventado por el ingeniero Dov Frohman que retiene
los datos cuando la fuente de energía se apaga.

 EEPROM. (Electrically-erasable programmable read-only memory)


(ROM programable y borrable eléctricamente).

Es un tipo de memoria ROM que puede ser programado, borrado y reprogramado


eléctricamente, a diferencia de la EPROM que ha de borrarse mediante rayos ultravioletas.
 MEMORIA FLASH.

Está basada en las memorias EEPROM pero permite el borrado bloque a bloque y es más
barata y densa. La memoria flash es una forma evolucionada de la memoria EEPROM que
permite que múltiples posiciones de memoria sean escritas o borradas en una misma
operación de programación mediante impulsos eléctricos, frente a las anteriores que sólo
permite escribir o borrar una única celda cada vez.

 MEMORIAS DE LECTURA/ESCRITURA (RAM).

La importancia de esta memoria es tan grande que si está ausente la PC NO ARRANCA,


Actúa como si estuviera muerta no hay sonido ni cursor en la pantalla ni luces que se
enciendan o apaguen. Para qué sirve: Almacena las instrucciones que debe ejecutar el
micro en cada momento Este es el lugar físico donde debe trabajar el procesador cuando
abrimos un programa sus instrucciones se copian automáticamente en la memoria, y
cuando cerremos el programa todo se borrara ( volatizará ) También copia los trabajos que
estamos haciendo en ese programa En la RAM se copian programas que coordinan el
funcionamiento de la PC: La primera parte de la RAM está reservada para guardar las
instrucciones de los dispositivos electrónicos.

 DRAM: (Dynamic Random Access Memory).

Los datos se almacenan como en la carga de un condensador. Tiende a descargarse y,


por lo tanto, es necesario un proceso de refresco periódico. Son más simples y baratas que
las SRAM.

 RDRAM.

Es una memoria muy costosa y de compleja fabricación y la utilizan procesador Pentim IV


para arriba corre a velocidades de 800 MHz sus módulos se denominan Rimm de 141 pines
y con un ancho de 16 bits, para llenar un banco de memoria de 64 bits hay que instalar 4
memorias, es posible que estas memoria sean retiradas del mercado por ser tan costosas.

 SDRAM.

Esta Memoria entro en el mercado en los años 97, y mejoro la velocidad siendo su ritmo de
trabajo igual a la velocidad de Bus (FSB) es decir que tienen la capacidad de trabajar a la
misma velocidad de mother al que se conectan.

 DDR SDRAM.

En este caso se consiguió que pudiera realizar dos transferencia en una pulsación o tic-tac
de reloj, esta memoria pude alcanzar velocidades de 200 a 266Mhz, Tiene una ventaja más
trabaja en sincronía con el bus del mother si este acelera la memoria también pero tiene
una desventaja son muy caras. Se conoce como DIMM DDR SDRAM PC 1600 Y PC 2100.
 SRAM (Static Random Access Memory).

Los datos se almacenan formando biestables. Igual que DRAM es volátil. Son más rápidas
que las DRAM y más caras.

 MEMORIA CACHÉ o SRAM.

La memoria caché trabaja igual que la memoria virtual, tenemos caché en el procesador,
en los discos y en el mother y nos guarda direcciones de memoria.
2. GENERACIONES DEL LENGUAJE ENSAMBLADOR:

Los equipos de ordenador (el hardware) han pasado por cuatro generaciones, de las que
las tres primeras (ordenadores con válvulas, transistores y circuitos integrados) están muy
claras, la cuarta (circuitos integrados a gran escala) es más discutible. Algo parecido ha
ocurrido con la programación de los ordenadores (el software), que se realiza en lenguajes
que suelen clasificarse en cinco generaciones, de las que las tres primeras son evidentes,
mientras no todo el mundo está de acuerdo en las otras dos. Estas generaciones no
coincidieron exactamente en el tiempo con las de hardware, pero sí de forma aproximada,
y son las siguientes:

 Primera generación: Los primeros ordenadores se programaban directamente en


código de máquina (basado en sistema binario), que puede representarse mediante
secuencias de ceros y unos sistema binario. Cada modelo de ordenador tiene su
propio código, por esa razón se llama lenguaje de máquina u ordenadores.

 Segunda generación: Los lenguajes simbólicos, asimismo propios de la máquina,


simplifican la escritura de las instrucciones y las hacen más legibles. También
surgieron en esta generación los lenguajes ensambladores.

 Tercera generación: Los lenguajes de alto nivel sustituyen las instrucciones


simbólicas por códigos independientes de la máquina, parecidas al lenguaje
humano o al de las Matemáticas.

 Cuarta generación: se ha dado este nombre a ciertas herramientas que permiten


construir aplicaciones sencillas combinando piezas prefabricadas. Hoy se piensa
que estas herramientas no son, propiamente hablando, lenguajes. Algunos
proponen reservar el nombre de cuarta generación para la programación orientada
a objetos.
Estos lenguajes tienen una estructura lo más parecido al idioma inglés, algunas
características son: Acceso a base de datos, capacidades Gráficas, generación de
código automáticamente. Puede programarse visualmente como Visual Basic
(Programación Visual).
 Quinta generación: Se llama así a veces a los lenguajes de la inteligencia artificial,
aunque con el fracaso del proyecto japonés de la quinta generación el nombre ha
caído en desuso.
3. USO Y APLICACIONES.

Uso actual.

Siempre ha habido debates sobre la utilidad y el desempeño del lenguaje ensamblador


relativo a lenguajes de alto nivel. El lenguaje ensamblador tiene nichos específicos donde
es importante. Pero, en general, los modernos compiladores de optimización para traducir
lenguajes de alto nivel en código que puede correr tan rápidamente como el lenguaje
ensamblador escrito a mano, a pesar de los contraejemplos que pueden ser encontrados.
La complejidad de los procesadores modernos y del subsistema de memoria hace la
optimización efectiva cada vez más difícil para los compiladores, así como para los
programadores en ensamblador.

Adicionalmente, y para la consternación de los amantes de la eficiencia, el desempeño cada


vez mayor del procesador ha significado que la mayoría de los CPU esté desocupados la
mayor parte del tiempo, con retardos causados por embotellamientos predecibles tales
como operaciones de entrada/salida y paginación de memoria. Esto ha hecho que la
velocidad de ejecución cruda del código no sea un problema para muchos programadores.

Hay algunas situaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje
ensamblador. Por ejemplo cuando:

 Es requerido un ejecutable binario independiente (stand-alone), es decir uno que


deba ejecutarse sin recursos a componentes de tiempo de ejecución o a
bibliotecas asociadas con un lenguaje de alto nivel; ésta es quizás la situación más
común. Son programas empotrados que solo almacenan una pequeña cantidad de
memoria y el dispositivo está dirigido para hacer tareas para un simple propósito.
Ejemplos consisten en teléfonos, sistemas de combustible e ignición para
automóviles, sistemas de control del aire acondicionado, sistemas de seguridad, y
sensores.

 Interactúan directamente con el hardware, por ejemplo en controladores (drivers) de


dispositivo y manejadores de interrupción.

 Usando instrucciones específicas del procesador no explotadas o disponibles por el


compilador. Un ejemplo común es la instrucción de rotación bitwise en el núcleo de
muchos algoritmos de cifrado.

 Creando funciones vectorizadas para programas en lenguajes de alto nivel como C.


En el lenguaje de alto nivel esto es a veces ayudado por funciones intrínsecas del
compilador que mapean directamente a los mnemónicos del SIMD, pero sin
embargo resulta en una conversión de ensamblador de uno a uno para un
procesador de vector asociado.
 Es requerida la optimización extrema, ejemplo, en un bucle interno en un algoritmo
intensivo en el uso del procesador. Los programadores de juegos toman ventaja de
las habilidades de las características del hardware en los sistemas, permitiendo a
los juegos correr más rápidamente. También las grandes simulaciones científicas
requieren algoritmos altamente optimizados, ejemplo, álgebra lineal con BLAS o la
transformada de coseno discreta (ejemplo, la versión SIMD en ensamblador del
x264, (una biblioteca para codificar streams de video).

 Un sistema con severas limitaciones de recursos (ejemplo, un sistema empotrado)


debe ser codificado a mano para maximizar el uso de los limitados recursos; pero
esto está llegando a ser menos común a medida que el precio del procesador
decrece y el desempeño mejora.

 No existe ningún lenguaje de alto nivel, en un procesador nuevo o especializado.

 Escribes programas de tiempo real que necesitan sincronización y respuestas


precisas, tales como sistemas de navegación de vuelo, y equipo médico. Por
ejemplo, en un sistema fly-by-wire (vuelo por mandos eléctricos), la telemetría debe
ser interpretada y hay que actuar dentro de limitaciones estrictas de tiempo. Tales
sistemas deben eliminar fuentes de retrasos impredecibles, que pueden ser creados
por (algunos) lenguajes interpretados, recolección de basura automática,
operaciones de paginación, o multitarea preventiva. Sin embargo, algunos lenguajes
de alto nivel incorporan componentes de tiempo de ejecución e interfaces de
sistema operativo que pueden introducir tales retrasos. Elegir el ensamblador o
lenguajes de bajo nivel para tales sistemas da a los programadores mayor visibilidad
y control sobre el proceso de los detalles.

 Es requerido control total sobre el ambiente, en situaciones de seguridad


extremadamente alta donde nada puede darse por sentado.

 Se escriben virus de computadora, bootloaders, ciertos controladores/manejadores


de dispositivo, u otros elementos muy cerca del hardware o al sistema operativo de
bajo nivel.
 Se escriben simuladores del conjunto de instrucciones para monitoreo, trazado y
depuración de errores donde la sobrecarga adicional es mantenida al mínimo.

 Se hace ingeniería inversa en binarios existentes que pueden o no haber sido


escritos originalmente en un lenguaje de alto nivel, por ejemplo al crackear la
protección anti copia del software propietario.

 Se hace ingeniería inversa y modificación de video juegos (también denominado


ROM hacking), que es posible por medio de varios métodos. El más ampliamente
implementado es alterando el código del programa a nivel de lenguaje ensamblador.
 Se escribe código automodificable, algo para lo que el lenguaje ensamblador se
presta bien.

 Se escriben juegos y otros softwares para calculadoras gráficas.

 Se escribe software compilador que genera código ensamblador, y por lo tanto los
desarrolladores deben ser programadores de lenguaje ensamblador.

 Se escriben algoritmos criptográficos que siempre deben tomar estrictamente el


mismo tiempo para ejecutar, previniendo ataques de tiempo.

Sin embargo, el lenguaje ensamblador es todavía enseñado en la mayoría de los programas


de ciencias de la computación e ingeniería electrónica. Aunque hoy en día, pocos
programadores trabajan regularmente con el lenguaje ensamblador como una herramienta,
los conceptos fundamentales continúan siendo muy importantes. Tales tópicos
fundamentales, como aritmética binaria, asignación de memoria, procesamiento del stack,
codificación de conjunto de caracteres, procesamiento de interrupciones, y diseño de
compiladores, serían duros de estudiar en detalle sin la comprensión de cómo el
computador opera a nivel del hardware. Puesto que el comportamiento del computador es
fundamentalmente definido por su conjunto de instrucciones, la manera lógica de aprender
tales conceptos es estudiar un lenguaje ensamblador. La mayoría de los computadores
modernos tienen un conjunto de instrucciones similares.

Por lo tanto, estudiar un solo lenguaje ensamblador es suficiente para aprender:


 Los conceptos básicos.
 Reconocer situaciones donde el uso de lenguaje ensamblador puede ser apropiado.
 Ver cómo el código ejecutable eficiente puede ser creado por los lenguajes de alto
nivel.

Aplicaciones típicas.

El lenguaje ensamblador hard-coded es típicamente usado en el ROM de arranque del


sistema (BIOS en los sistemas compatible IBM PC). Este código de bajo nivel es usado,
entre otras cosas, para inicializar y probar el hardware del sistema antes de cargar el
sistema operativo, y está almacenado en el ROM. Una vez que ha tomado lugar un cierto
nivel de inicialización del hardware, la ejecución se transfiere a otro código, típicamente
escrito en lenguajes de alto nivel; pero el código corriendo inmediatamente después de que
es aplicada la energía usualmente está escrito en lenguaje ensamblador. Lo mismo es
cierto para los boot loaders.
Muchos compiladores traducen lenguajes de alto nivel a lenguaje ensamblador primero,
antes de la compilación completa, permitiendo que el código en ensamblador sea visto para
propósitos de depuración y optimización. Lenguajes de relativo bajo nivel, como C, con
frecuencia proveen sintaxis especial para empotrar lenguaje ensamblador en cada
plataforma de hardware. El código portable del sistema entonces puede usar estos
componentes específicos a un procesador a través de una interface uniforme.
El lenguaje ensamblador también es valioso en ingeniería inversa, puesto que muchos
programas solamente son distribuidos en una forma de código de máquina. El código de
máquina es usualmente fácil de trasladar hacia lenguaje ensamblador para luego ser
cuidadosamente examinado en esta forma, pero es muy difícil de trasladar hacia un
lenguaje de alto nivel. Herramientas como Interactive Disassembler, hacen uso extenso del
desensamblador para tales propósitos.
Un nicho que hace uso del lenguaje ensamblador es el demoscene. Ciertas competiciones
requieren a los concursantes restringir sus creaciones a un muy pequeño tamaño (ejemplo,
256 bytes, 1 KB, 4 KB o 64 KB), y el lenguaje ensamblador es el lenguaje de preferencia
para alcanzar este objetivo. Cuando los recursos son una preocupación, es una necesidad
la codificación en ensamblador, especialmente en sistemas constreñidos por el
procesamiento del CPU, como los primeros modelos del Amiga, y el Commodore 64. El
código optimizado en ensamblador es escrito "a mano" por los programadores en un intento
de minimizar el número de ciclos de CPU usados. Las limitaciones del CPU son tan grandes
que cada ciclo cuenta. Usar tales métodos ha habilitado, a sistemas como el Commodore
64, para producir gráficos en 3D en tiempo real con efectos avanzados, una hazaña que
puede ser considerada improbable o incluso imposible para un sistema con un procesador
de 0.99 MHz.

El lenguaje ensamblador es usualmente utilizado en las siguientes circunstancias:

 Mejorar la eficiencia de una rutina específica que se ha transformado en un cuello


de botella.
 Obtener acceso a funciones de bajo nivel del procesador para realizar tareas que
no son soportadas por los lenguajes de alto nivel.
 Escribir manejadores de dispositivos para comunicarse directamente con hardware
especial tales como tarjetas de red.
 Trabajar en ambientes con recursos limitados puede requerir el uso del lenguaje
ensamblador pues el código ejecutable puede ser menor que el generado por el
compilador.

Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran básicamente
en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos.
4. TIPOS DE LENGUAJE ENSAMBLADOR.

El lenguaje es la manera que utilizamos los seres humanos para comunicarnos, por medio
de sonidos, expresiones, símbolos, etc. de igual manera la computadora necesita de un
lenguaje para que pueda funcionar y nosotros como desarrolladores debemos entender. La
computadora utiliza el conocido lenguaje ensamblador, que es un lenguaje de alto nivel y
al hablar de lenguajes de alto nivel debemos comprender que trabaja por medio de código
binario.

Existen varios tipos de lenguaje ensamblador, aunque finalmente todos realizan las mismas
tareas podemos clasificarlos de acuerdo a características.

Así podemos clasificarlos en:

 Ensamblador Cruzado (Croos-Assermbler).


 Ensambladores Residentes.
 Macroensambladores.
 Microensambladores.
 Ensambladores de Una Fase.
 Ensambladores de Dos Fases.

 ENSAMBLADORES CRUZADOS (CROSS-ASSEMBLER).

Se denominan así los ensambladores que se utilizan en una computadora que posee un
procesador diferente al que tendrán las computadoras donde va a ejecutarse el programa
objeto producido.

El empleo de este tipo de traductores permite aprovechar el soporte de medios físicos


(discos, impresoras, pantallas, etc.), y de programación que ofrecen las máquinas potentes
para desarrollar programas que luego los van a ejecutar sistemas muy especializados en
determinados tipos de tareas.

 ENSAMBLADORES RESIDENTES.

Son aquellos que permanecen en la memoria principal de la computadora y cargan, para


su ejecución, al programa objeto producido. Este tipo de ensamblador tiene la ventaja de
que se puede comprobar inmediatamente el programa sin necesidad de transportarlo de un
lugar a otro, como se hacía en cross-assembler, y sin necesidad de programas simuladores.

 MACROENSAMBLADORES.

Son ensambladores que permiten el uso de macroinstrucciones (macros). Debido a su


potencia, normalmente son programas robustos que no permanecen en memoria una vez
generado el programa objeto.
 MICROENSAMBLADORES.

El programa que indica al intérprete de instrucciones de la UCP cómo debe actuar se


denomina microprograma. El programa que ayuda a realizar éste microprograma se llama
microensamblador. Existen procesadores que permiten la modificación de sus
microprogramas, para lo cual se utilizan microensambladores.

 ENSAMBLADORES DE UNA FASE.

Estos ensambladores leen una línea del programa fuente y la traducen directamente para
producir una instrucción en lenguaje máquina o la ejecuta si se trata de una
pseudoinstrucción. También va construyendo la tabla de símbolos a medida que van
apareciendo las definiciones de variables, etiquetas, etc.

 ENSAMBLADORES DE DOS FASES.

Los ensambladores de dos fases se denominan así debido a que realizan la traducción en
dos etapas. En la primera fase, leen el programa fuente y construyen una tabla de símbolos;
de esta manera, en la segunda fase, vuelven a leer el programa fuente y pueden ir
traduciendo totalmente, puesto que conocen la totalidad de los símbolos utilizados y las
posiciones que se les ha asignado.
5. ¿QUÉ ES UN PLC?

Un PLC (Controlador Lógico Programable) es un dispositivo que fue desarrollado para


reemplazar el circuito secuencial de relevadores para el control de máquinas. El PLC trabaja
atendiendo sus entradas y dependiendo de su estado conecta/desconecta sus salidas. El
usuario introduce un programa, normalmente vía software que proporciona los resultados
deseados.

Los PLC son utilizados en muchas aplicaciones reales, casi cualquier aplicación que
necesite algún tipo de control eléctrico necesita un PLC entonces se define un PLC como
una computadora especializada, diseñada para controlar máquinas y procesos en
ambientes industriales operando en tiempo real.

National Electrical Manufacturers Association (NEMA) define al PLC como un dispositivo


electrónico digital que utiliza una memoria programable para almacenar instrucciones y para
implementar funciones específicas tales como funciones lógicas, secuenciales, de
temporización, de conteo y aritméticas para controlar máquinas y procesos.

Los CLP o PLC (Programmable Logic Controller en sus siglas en inglés) son
dispositivos electrónicos muy usados en Automatización Industrial.

Su historia se remonta a finales de la década de 1960, cuando la industria buscó en las


nuevas tecnologías electrónicas una solución más eficiente para reemplazar los sistemas
de control basados en circuitos eléctricos con relés, interruptores y otros componentes
comúnmente utilizados para el control de los sistemas de lógica combinacional.

Hoy en día, los PLC no sólo controlan la lógica de funcionamiento de máquinas, plantas y
procesos industriales, sino que también pueden realizar operaciones aritméticas,
manejar señales analógicas para realizar estrategias de control, tales como
controladores proporcional integral derivativo (PID).

Los PLC actuales pueden comunicarse con otros controladores y computadoras en redes
de área local, y son una parte fundamental de los modernos sistemas de control distribuido.
Existen varios lenguajes de programación, tradicionalmente los más utilizados son el
diagrama de escalera LADDER, preferido por los electricistas, lista de instrucciones y
programación por estados, aunque se han incorporado lenguajes más intuitivos que
permiten implementar algoritmos complejos mediante simples diagramas de flujo más
fáciles de interpretar y mantener. Un lenguaje más reciente, preferido por los informáticos
y electrónicos, es el FBD (Function Block Diagram) que emplea compuertas lógicas y
bloques con distintas funciones conectados entre sí.

En la programación se pueden incluir diferentes tipos de operandos, desde los más simples
como lógica booleana, contadores, temporizadores, contactos, bobinas y operadores
matemáticos, hasta operaciones más complejas como manejo de tablas (recetas),
apuntadores, algoritmos PID y funciones de comunicación mutiprotocolos que le permitirían
interconectarse con otros dispositivos.

PROGRAMACIÓN.

Los primeros PLC, en la primera mitad de los 80, eran programados usando sistemas de
programación propietarios o terminales de programación especializados, que a menudo
tenían teclas de funciones dedicadas que representaban los elementos lógicos de los
programas de PLC. Los programas eran guardados en cintas. Más recientemente, los
programas PLC son escritos en aplicaciones especiales en un ordenador, y luego son
descargados directamente mediante un cable o una red al PLC. Los PLC viejos usan una
memoria no volátil (magnetic core memory) pero ahora los programas son guardados en
una RAM con batería propia o en otros sistemas de memoria no volátil como las memoria
flash.

Los primeros PLC fueron diseñados para ser usados por electricistas que podían aprender
a programar los PLC en el trabajo. Estos PLC eran programados con “lógica de escalera”
("ladder logic"). Los PLC modernos pueden ser programados de muchas formas, desde la
lógica de escalera hasta lenguajes de programación tradicionales como el BASIC o C. Otro
método es usar la Lógica de Estados (State Logic), un lenguaje de programación de alto
nivel diseñado para programas PLC basándose en los diagramas de transición de estados.

Recientemente, el estándar internacional IEC 61131-3 se está volviendo muy popular. IEC
61131-3 define cinco lenguajes de programación para los sistemas de control
programables: FBD (Function Block Diagram), LD (Ladder Diagram), ST (Structured Text,
similar al lenguaje de programación Pascal), IL (Instruction List) y SFC (Sequential Function
Chart).

Mientras que los conceptos fundamentales de la programación del PLC son comunes a
todos los fabricantes, las diferencias en el direccionamiento E/S, la organización de la
memoria y el conjunto de instrucciones hace que los programas de los PLC nunca se
puedan usar entre diversos fabricantes. Incluso dentro de la misma línea de productos de
un solo fabricante, diversos modelos pueden no ser directamente compatibles

PLC EN COMPARACION CON OTROS SISTEMAS DE CONTROL.

Los PLC están adaptados para un amplio rango de tareas de automatización. Estos son
típicos procesos industriales en la manufactura donde el coste de desarrollo y
mantenimiento de un sistema de automatización es relativamente alto contra el coste de la
automatización, y donde van a existir cambios en el sistema durante toda su vida
operacional. Los PLC contienen todo lo necesario para manejar altas cargas de potencia;
se requiere poco diseño eléctrico y el problema de diseño se centra en expresar las
operaciones y secuencias en la lógica de escalera (o diagramas de funciones).
Las aplicaciones de PLC son normalmente hechos a la medida del sistema, por lo que el
costo del PLC es bajo comparado con el costo de la contratación del diseñador para un
diseño específico que solo se va a usar una sola vez. Por otro lado, en caso de productos
de alta producción, los sistemas de control a medida se amortizan por si solos rápidamente
debido al ahorro en los componentes, lo que provoca que puede ser una buena elección en
vez de una solución "genérica".

Sin embargo, debe ser notado que algunos PLC ya no tienen un precio alto. Los PLC
actuales tienen todas las capacidades por algunos cientos de dólares.

Diferentes técnicas son utilizadas para un alto volumen o una simple tarea de
automatización, Por ejemplo, una lavadora de uso doméstico puede ser controlada por un
temporizador CAM electromecánico costando algunos cuantos dólares en cantidades de
producción.

Un diseño basado en un micro controlador puede ser apropiado donde cientos o miles de
unidades deben ser producidas y entonces el coste de desarrollo (diseño de fuentes de
alimentación y equipo de entradas y salidas) puede ser dividido en muchas ventas, donde
el usuario final no tiene necesidad de alterar el control. Aplicaciones automotrices son un
ejemplo, millones de unidades son vendidas cada año, y pocos usuarios finales alteran la
programación de estos controladores. (Sin embargo, algunos vehículos especiales como
son camiones de pasajeros para tránsito urbano utilizan PLC en vez de controladores de
diseño propio, debido a que los volúmenes son pequeños y el desarrollo no sería
económico.)

Algunos procesos de control complejos, como los que son utilizados en la industria química,
pueden requerir algoritmos y características más allá de la capacidad de PLC de alto nivel.
Controladores de alta velocidad también requieren de soluciones a la medida; por ejemplo,
controles para aviones.

Los PLC pueden incluir lógica para implementar bucles analógicos, “proporcional, integral
y derivadas” o un controlador PID. Un bucle PID podría ser usado para controlar la
temperatura de procesos de fabricación, por ejemplo. Históricamente, los PLC fueron
configurados generalmente con solo unos pocos bucles de control analógico y en donde los
procesos requieren cientos o miles de bucles, un Sistema de Control Distribuido (DCS) se
encarga. Sin embargo, los PLC se han vuelto más poderosos, y las diferencias entre las
aplicaciones entre DCS y PLC han quedado menos claras.
6. ¿QUÉ ES UN PIC?

Un micro controlador PIC, es circuito integrado o chip que incluye en su interior las tres
unidades funcionales de una computadora: CPU, memoria y unidades, es decir, se trata de
un computador completo en un solo circuito integrado, pero con una capacidad de
almacenamiento mucho menor. Estos funcionan dependiendo el código de programa, rutina
o instrucciones que se le suban a su memoria y estos tienen una capacidad de
almacenamiento acorde al tipo y o modelo de microcontrolador.

Los PIC son una familia de micro controlador tipo RISC fabricados por microchip
Technology Inc. y derivados del pic1650, originalmente desarrollado por la división
de microelectrónica de general instrumentos.

El nombre actual no es un acrónimo. En realidad, el nombre completo es picmicro, aunque


generalmente se utiliza como peripheral interface controller (controlador de interfaz
periférico).

El PIC original se diseñó para ser usado con la nueva ucp de 16 bits cp16000. Siendo en
general una buena ucp, ésta tenía malas prestaciones de e/s, y el PIC de 8 bits se desarrolló
en 1975 para mejorar el rendimiento del sistema quitando peso de e/s a la ucp. El PIC
utilizaba micro código simple almacenado en ROM para realizar estas tareas; y aunque el
término no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta
una instrucción cada 4 ciclos del oscilador.

En 1985, dicha división de microelectrónica de general instruments se convirtió en una filial


y el nuevo propietario canceló casi todos los desarrollos, que para esas fechas la mayoría
estaban obsoletos. El PIC, sin embargo, se mejoró con eprom para conseguir
un controlador de canal programable. Hoy en día multitud de PIC vienen con varios
periféricos incluidos (módulos de comunicación serie, uarts, núcleos de control de motores,
etc.) y con memoria de programa desde 512 a 32.000 palabras (una palabra corresponde
a una instrucción en ensamblador, y puede ser 12, 14 o 16 bits, dependiendo de la familia
específica de picmicro).

JUEGO DE INSTRUCCIONES Y ENTORNO DE PROGRAMACIÓN

El PIC usa un juego de instrucciones tipo RISC, cuyo número puede variar desde 35 para
PIC de gama baja a 70 para los de gama alta. las instrucciones se clasifican entre las que
realizan operaciones entre el acumulador y una constante, entre el acumulador y una
posición de memoria, instrucciones de condicionamiento y de salto/retorno, implementación
de interrupciones y una para pasar a modo de bajo consumo llamada sleep.

Microchip proporciona un entorno de desarrollo freeware llamado mplab que incluye


un simulador software y un ensamblador. Otras empresas desarrollan
compiladores C y BASIC. Microchip también vende compiladores para los PIC de gama alta
("c18" para la serie f18 y "c30" para los dspics) y se puede descargar una edición para
estudiantes del c18 que inhabilita algunas opciones después de un tiempo de evaluación.
PROGRAMACIÓN DEL PIC

Para transferir el código de un ordenador al PÍC normalmente se usa un dispositivo


llamado programador. La mayoría de PIC que microchip distribuye hoy en día incorporan
ICSP (In Circuit Serial Programming, Programación en Serie Incorporada) o LVP (Low
Voltage Programming, Programación a Bajo Voltaje), lo que permite programar el PIC
directamente en el circuito destino. Para la ICSP se usan los pines rb6 y rb7 como reloj y
datos y el mclr para activar el modo programación aplicando un voltaje de unos 11 voltios.
Existen muchos programadores de PIC, desde los más simples que dejan al software los
detalles de comunicaciones, a los más complejos, que pueden verificar el dispositivo a
diversas tensiones de alimentación e implementan en hardware casi todas las
funcionalidades. Muchos de estos programadores complejos incluyen los mismos PIC pre
programado como interfaz para enviar las órdenes al PIC que se desea programar.

PROGRAMADORES

 Picstart plus (puerto serie)


 Promate ii (puerto serie)
 Mplab pm3 (puerto serie y usb)
 Icd2 (puerto serie y usb)
 Pickit 1 (usb)
 Ic-Prog 1.05
 Winpic 800 (Puerto serie y usb)

Вам также может понравиться