Unidad Iv Virtual Tecsup
Unidad Iv Virtual Tecsup
Unidad Iv Virtual Tecsup
Unidad IV : Operaciones
Avanzadas
Tecsup Virtu@l Índice
Índice
1. INTRODUCCIÓN......................................................................................................1
2. OBJETIVOS .............................................................................................................1
3. CONTENIDO............................................................................................................1
3.1. PRELIMINARES ...............................................................................................1
3.1.1. REPRESENTACIÓN NUMÉRICA...............................................................1
3.1.2. TRABAJANDO CON ACUMULADORES......................................................2
3.2. OPERACIONES DE COMPARACIÓN ...................................................................3
3.3. OPERACIONES DE CONVERSIÓN......................................................................7
3.4. OPERACIONES CON BLOQUES DE DATOS.........................................................9
3.4.1. ABRIR BLOQUE DE DATOS ....................................................................9
3.5. OPERACIONES ARITMÉTICAS ........................................................................ 10
3.5.1. ARITMÉTICA CON ENTEROS................................................................ 10
3.5.2. ARITMÉTICA CON COMA FLOTANTE .................................................... 12
3.6. OPERACIONES DE SALTO .............................................................................. 14
3.6.1. SALTO ABSOLUTO O INCONDICIONAL................................................. 14
3.6.2. SALTO CONDICIONAL......................................................................... 15
3.7. OPERACIÓN DE CONTROL DE PROGRAMA...................................................... 16
3.7.1. LLAMAR SUBRUTINA Y RETORNO DE SUBRUTINA ................................ 16
3.8. OPERACIONES DE DESPLAZAMIENTO Y ROTACIÓN......................................... 17
3.8.1. OPERACIONES DE DESPLAZAMIENTO .................................................. 17
3.8.2. OPERACIONES DE ROTACIÓN ............................................................. 19
3.9. OPERACIONES LÓGICAS CON PALABRAS........................................................ 20
4. RESUMEN.............................................................................................................. 22
5. PREGUNTAS DE AUTOCOMPROBACIÓN................................................................... 22
6. RESPUESTAS A LAS PREGUNTAS DE AUTOCOMPROBACIÓN..................................... 22
7. GLOSARIO DE TÉRMINOS ...................................................................................... 23
Tecsup Virtu@l Programación Avanzada de PLC
U
U N
N II D
D A
A D II V
“OPERACIONES AVANZADAS”
1. INTRODUCCIÓN
Las operaciones avanzadas permiten extender el juego de operaciones básicas estudiadas
Estas operaciones avanzadas nos permitirán no solamente elaborar simples programas de
usuario con secuencias lógicas, sino también implementar funciones matemáticas (suma,
resta, multiplicación y división), operaciones con señales analógicas (desplazamiento,
rotación, comparación, etc.), operaciones de control de programa entre otros.
2. OBJETIVOS
El objetivo de esta unidad es estudiar las operaciones avanzadas más utilizadas en el
tratamiento de señales digitales y analógicas de los PLCs.
3. CONTENIDO
3.1. PRELIMINARES
3.1.1. REPRESENTACIÓN NUMÉRICA
1
Tecsup Virtu@l Programación Avanzada de PLC
3.1.2. TRABAJANDO CON ACUMULADORES
¡Son igual que las marcas
o bits internos de un PLC!
Las CPUs de los diferentes PLCs disponen de cuatro acumuladores
de 32 bits (AC0, AC1, AC2 y AC3). A los acumuladores se puede
acceder en formato de byte, palabra o palabra doble.
Como muestra en la figura siguiente, cuando se accede a un
acumulador en formato de byte o de palabra se utilizan los 8 ó 16
bits menos significativos del valor almacenado en el acumulador.
Cuando se accede a un acumulador en formato de palabra doble,
se usan todos los 32 bits.
Entonces la operación utilizada para el acceso al acumulador
determina el tamaño de los datos a los que se accede.
2
Tecsup Virtu@l Programación Avanzada de PLC
Fig. 4.1 Formas de acceso a los acumuladores.
3.2. OPERACIONES DE COMPARACIÓN
Las operaciones comparan las entradas IN1 e IN2 según los tipos de
comparación siguientes:
== IN1 es igual a IN2.
<> IN1 es diferente a IN2.
> IN1 es mayor a IN2.
< IN1 es menor a IN2.
>= IN1 es mayor o igual a IN2.
<= IN1 es menor o igual a IN2.
Si la comparación es verdadera, el Resultado Lógico de la Operación (RLO) es
"1". El RLO se combina mediante una Y lógica con el RLO del circuito completo
siempre que el elemento de comparación esté conectado en serie y mediante
una O lógica si el cuadro está conectado en paralelo.
Se dispone de las operaciones de comparación siguientes:
· CMP ? I Comparar enteros (16 Bit).
· CMP ? D Comparar enteros dobles (32 Bit).
· CMP ? R Comparar números en coma flotante.
Ejemplo 3.2.a Área de almacenamiento con contador y comparador
La figura muestra un sistema con dos cintas transportadoras y un área de
almacenamiento temporal colocada entre ambas. La cinta transportadora 1
transporta paquetes al área de almacenamiento. Una barrera óptica situada al
final de la cinta 1 junto al área de almacenamiento determina cuántos paquetes
3
Tecsup Virtu@l Programación Avanzada de PLC
se transportan a dicha área. La cinta transportadora 2 transporta paquetes
desde el área de almacenamiento a una plataforma de carga donde llegan
camiones y los recogen para suministrarlos a los clientes. Una barrera óptica
situada al final de la cinta transportadora 2 junto al área de almacenamiento
determina cuántos paquetes abandonan el área de almacenamiento para ser
transportados a la plataforma de carga. Un panel indicador con cinco lámparas
señala el nivel del área de almacenamiento temporal.
¡La solución del problema se muestra a continuación en esquema de
contactos!
4
Tecsup Virtu@l Programación Avanzada de PLC
5
Tecsup Virtu@l Programación Avanzada de PLC
Programemos la misma solución en lista de instrucciones (AWL):
6
Tecsup Virtu@l Programación Avanzada de PLC
3.3. OPERACIONES DE CONVERSIÓN
Las operaciones de conversión leen el contenido del parámetro de entrada IN y
lo convierten a otro tipo de número o representación o le cambian el signo. El
resultado se puede recoger en el parámetro de salida OUT.
OPERACIONES DE CONVERSIÓN
GRUPO 1: Conversión de números decimales codificados en binario y
enteros a otros tipos de números.
Convertir BCD a entero.
Convertir entero en BCD.
Convertir número BCD a entero doble.
Convertir entero en entero doble.
Convertir entero doble en BCD.
Convertir entero doble en número en coma flotante.
GRUPO 2: Formar complementos de números enteros o para cambiar el
signo de un número en coma flotante
Complemento a uno de un entero.
Complemento a uno de un entero doble.
Complemento a dos de un entero.
Complemento a dos de un entero doble.
Invertir un número en coma flotante.
GRUPO 3: Convertir un número en coma flotante de 32 bits en un entero de
32 bits (entero doble). Las operaciones difieren en el método de redondeo.
Redondear un número en coma flotante a entero.
Truncar.
Redondear un número real al próximo entero superior.
Redondear un número real al próximo entero inferior.
7
Tecsup Virtu@l Programación Avanzada de PLC
Veamos a continuación algunos ejemplos:
Ejemplo 3.3.a Convertir BCD en Entero
Ejemplo 3.3.b Complemento a 2 de un entero.
NEG_I (Complemento a 2 de un entero): lee el contenido del parámetro de
entrada IN y ejecuta la operación Complemento a 2. La operación invierte el
signo (ejemplo: de un valor positivo a un valor negativo).
Si la entrada E 0.0 es 1, el parámetro de salida OUT deposita el valor de MW 8
con el signo opuesto en MW10:
De MW8 = + 10 resulta MW10 = 10.
Ejemplo 3.3.c Truncar a entero doble.
TRUNC (Truncar a entero doble): lee el contenido del parámetro de entrada IN
como número real y convierte este valor en un entero (de 32 bits). El resultado
es la parte entera del número real, proporcionado por el parámetro de salida
OUT.
La conversión se lleva a cabo cuando E 0.0 =1. El contenido de la palabra doble
de marcas MD8 se lee como número en coma flotante y es convertido en un
número entero doble siguiendo el principio de “redondeo a cero".
El resultado es la parte entera del número en coma flotante, que se almacena
en MD12. Si se produce un desbordamiento A 4.0 = 0.
8
Tecsup Virtu@l Programación Avanzada de PLC
3.4. OPERACIONES CON BLOQUES DE DATOS
3.4.1. ABRIR BLOQUE DE DATOS
Recordemos que los bloques de datos (DB) son áreas de datos en
el programa de aplicación que contienen datos del usuario. Estos
datos pueden depositar los resultados intermedios calculados por
las operaciones en el programa, también permiten almacenar
otros datos que pertenezcan al proceso o a la tarea actual. Un
ejemplo típico del empleo de los bloques de datos utilizarlos para
almacenar la información que será enviada y/o recibida por una
interfase humanomáquina o un sistema SCADA.
El objetivo de esta operación es indicarle a la CPU la ubicación en
la memoria de dónde sacará o enviará los datos.
La operación Abrir bloque de datos abre un bloque de datos como
bloque de datos global (DB), válido para todo el programa o como
bloque de datos de instancia (DI), válido solamente para un
bloque de programa.
El número del bloque de datos se transfiere al registro del DB o
del DI. Los comandos DB y DI subsiguientes acceden a los
correspondientes bloques en función del contenido que tenga el
registro.
Ejemplo 3.4.a Abrir bloque de datos.
DB10 es el bloque de datos abierto actualmente. Por ello, la consulta en DBX.0
se dirige al bit 0 del byte de datos 0 del DB10. El estado de señal de este bit se
asigna a la salida A 4.0.
9
Tecsup Virtu@l Programación Avanzada de PLC
3.5. OPERACIONES ARITMÉTICAS
3.5.1. ARITMÉTICA CON ENTEROS
+ x ÷
Las operaciones aritméticas con enteros sirven para ejecutar las siguientes
operaciones aritméticas con dos enteros (16 y 32 bits):
· ADD_I Sumar enteros.
· SUB_I Restar enteros.
· MUL_I Multiplicar enteros.
· DIV_I Dividir enteros.
· ADD_DI Sumar enteros dobles.
· SUB_DI Restar enteros dobles.
· MUL_DI Multiplicar enteros dobles.
· DIV_DI Dividir enteros dobles.
· MOD_DI Obtener el resto de una división de enteros dobles.
Cuando se programa en lista de instrucciones, tener en cuenta que las
operaciones aritméticas combinan el contenido de los acumuladores ACUs 1 y 2.
El resultado se deposita en el acumulador ACU 1. El contenido del ACU 2
permanece inalterado.
En las CPUs con 4 acumuladores se copia a continuación el contenido del ACU 3
en el ACU 2, y el contenido del ACU 4 en el ACU 3. El antiguo contenido del ACU
4 no varía.
Ejemplo 3.5.a Sumar enteros.
El cuadro ADD_I se activa si E 0.0 es 1. El resultado de la suma MW0 + MW2 se
deposita en MW10.
10
Tecsup Virtu@l Programación Avanzada de PLC
Ejemplo 3.5.b Restar enteros dobles.
Ejemplo 3.5.c Multiplicar enteros.
El cuadro MUL_I se activa cuando E 0.0 = 1. El resultado de la multiplicación de
MW0 x MW2 se almacena en la palabra de marcas MW10.
Ejemplo 3.5.d Obtener el resto de una división de enteros dobles.
El cuadro DIV_DI se activa si E 0.0 es 1. El resto de la división de MD0 entre
MD4 se deposita en MD10.
Ejemplo 3.5.e Resolver un problema aritmético utilizando programación en
lista de instrucciones. El programa de ejemplo siguiente muestra cómo
obtener con tres operaciones aritméticas para enteros el mismo resultado
que la ecuación:
MD4 = ((EW0 + DBW3) x 15) / MW2
11
Tecsup Virtu@l Programación Avanzada de PLC
Ejemplo 3.5.f …un problema idéntico al anterior, pero utilizando esquema de
contactos.
MW4 = ((EW0 + DBW3) x 15) / MW0
¿Existen las mismas operaciones con otros tipos de números?
3.5.2. ARITMÉTICA CON COMA FLOTANTE
OPERACIONES BÁSICAS
· ADD_R Sumar números en coma flotante.
· SUB_R Restar números en coma flotante.
· MUL_R Multiplicar números en coma flotante.
· DIV_R Dividir números en coma flotante.
12
Tecsup Virtu@l Programación Avanzada de PLC
OPERACIONES AMPLIADAS
Con las operaciones aritméticas de números en coma flotante se
pueden ejecutar las siguientes funciones con un número en coma
flotante (32 bit, IEEEFP):
Ejemplo 3.5.g División de números reales.
El cuadro DIV_R se activa cuando E 0.0 = 1. El resultado de la
división de MD0 entre MD4 se almacena en la palabra doble de
marcas MD10.
Ejemplo 3.5.h Raíz cuadrada de un número real.
El cuadro SQRT se activa cuando E 0.0 = 1. El resultado de SQRT
(MDO) se almacena en la palabra doble de marcas MD10.Si MD0 <
0, o si una de las entradas o el resultado no son números en coma
13
Tecsup Virtu@l Programación Avanzada de PLC
flotante y el estado de señal de E 0.0 = 0, a la salida A 4.0 se le
asigna la señal “0".
Ejemplo 3.5.i Seno de un ángulo expresado en radianes.
3.6. OPERACIONES DE SALTO
Las operaciones de salto sirven para controlar el desarrollo del programa. Estas
operaciones permiten al programa interrumpir su desarrollo lineal para
continuar el procesamiento en un punto diferente del programa.
El operando de una operación de salto es una meta. Esta meta puede tener
hasta un máximo de 4 caracteres, el primero de los cuales tiene que ser una
letra.
Estas operaciones se pueden utilizar en todos los bloques lógicos: bloques de
organización (OBs), bloques de función (FBs) y bloques de programas (PBs).
Se dispone de las siguientes operaciones de salto:
· Salto absoluto.
· Salto condicional.
3.6.1. SALTO ABSOLUTO O INCONDICIONAL
Esta operación interrumpe la ejecución lineal del programa y salta
a la meta que se haya indicado, independientemente de cuál sea
el contenido de la palabra de estado o del resultado de la
operación anterior. La ejecución lineal del programa continúa en la
meta del salto, que está señalada por una marca (flag o bandera).
Se puede saltar tanto hacia adelante como hacia atrás.
Los saltos sólo pueden ser ejecutados dentro de un bloque; esto
implica que tanto la instrucción del salto como su meta tienen que
encontrarse dentro del mismo bloque. La meta del salto sólo
puede estar representada una sola vez dentro de este bloque.
14
Tecsup Virtu@l Programación Avanzada de PLC
Ejemplo 3.6.a Salto incondicional (JMP) en esquema de contactos.
El salto se ejecuta en todos los casos, omitiéndose (“pasando por
alto“) las operaciones que se encuentren entre la operación de
salto y la meta CAS1.
3.6.2. SALTO CONDICIONAL
¡No se ejecutarán las operaciones que se encuentren entre la
operación de salto y la meta!
Ejemplo 3.6.b Salto condicional (JMP) en esquema de contactos.
Si la entrada E 0.0 es 0 se ejecuta el salto a la meta CAS1. Al
llevarse a cabo el salto, en la salida A 4.0 no se ejecuta la
operación “Poner salida a 0“, aunque E 0.3 sea 1.
Ejemplo 3.6.c Salto condicional (SPB) en lista de instrucciones.
15
Tecsup Virtu@l Programación Avanzada de PLC
3.7. OPERACIÓN DE CONTROL DE PROGRAMA
3.7.1. LLAMAR SUBRUTINA Y RETORNO DE SUBRUTINA
La operación Llamar subrutina (CALL) transfiere el control a la
subrutina. Esta operación se puede utilizar con o sin parámetros.
Una vez ejecutada la subrutina, el control vuelve a la operación
que sigue a la llamada de la subrutina (CALL).
16
Tecsup Virtu@l Programación Avanzada de PLC
3.8. OPERACIONES DE DESPLAZAMIENTO Y ROTACIÓN
3.8.1. OPERACIONES DE DESPLAZAMIENTO
El número que se introduce en el parámetro de entrada N indica el
número de bits a desplazar. Las posiciones que quedan libres
después de ejecutar la operación de desplazamiento se rellenan
con ceros o con el estado de señal del bit de signo (0 significa
positivo y 1 significa negativo).
Se dispone de las operaciones de desplazamiento siguientes:
17
Tecsup Virtu@l Programación Avanzada de PLC
· SHR_I Desplazar entero a la derecha.
· SHR_DI Desplazar entero doble a la derecha.
· SHL_W Desplazar 16 bits a la izquierda.
· SHR_W Desplazar 16 bits a la derecha.
· SHL_DW Desplazar 32 bits a la izquierda.
· SHR_DW Desplazar 32 bits a la derecha.
Ejemplo 3.8.a Desplazar un número entero a la derecha.
El cuadro SHR_I se activa si E 0.0 es "1". MW0 se carga y se
desplaza a la derecha tantos bits como indica MW2. El resultado
se escribe en MW4. La salida A 4.0 se pone a 1.
Si MW2 = 4, se realizará la siguiente operación:
Ejemplo 3.8.b Desplazar 16 bits a la izquierda.
El cuadro SHL_W se activa si E 0.0 es 1. MW0 se carga en el ACU
1 y se desplaza a la izquierda tantos bits como indica MW2. La
palabra del resultado se escribe en MW4. La salida A 4.0 se pone a
1.
Para MW = 6 se tendría:
18
Tecsup Virtu@l Programación Avanzada de PLC
3.8.2. OPERACIONES DE ROTACIÓN
Las operaciones de rotación sirven para rotar bit a bit todo el
contenido de la entrada IN, hacia la izquierda o hacia la derecha.
Las posiciones libres de los bits se rellenan con los estados de
señal de los bits que se desplazan fuera de la entrada IN. El
número que se introduce en el parámetro de entrada N indica el
número de bits que se va a rotar. Se dispone de las siguientes
operaciones de rotación:
· ROL_DW Rotar 32 bits a la izquierda.
· ROR_DW Rotar 32 bits a la derecha.
Ejemplo 3.8.2.a Rotar 32 bits a la derecha.
El cuadro ROR_DW se activa si E 0.0 es 1. MD0 se carga y se rota
a la derecha tantos bits como indica MW4. La palabra doble del
resultado se escribe en MD10. La salida A 4.0 se pone a 1.Con
MW4 = 3 tenemos:
19
Tecsup Virtu@l Programación Avanzada de PLC
3.9. OPERACIONES LÓGICAS CON PALABRAS
Las operaciones lógicas con palabras comparan bit a bit pares de palabras (16
bits) y palabras dobles (32 bits) según la lógica de Boole.
Se dispone de las operaciones lógicas con palabras siguientes:
· WAND_W Y lógica con palabras.
· WOR_W O lógica con palabras.
· WXOR_W O exclusiva con palabras.
· WAND_DW Y lógica con dobles palabras.
· WOR_DW O lógica con dobles palabras.
· WXOR_DW O exclusiva con dobles palabras.
Ejemplo 3.9.a Rotar 32 bits a la derecha.
La operación se ejecuta si E 0.0 es 1:
MD0 = 01010101 01010101 01010101 01010101
IN2 = 00000000 00000000 00001111 11111111
MD4 = MD0 XOR IN2 = 01010101 01010101 01011010 10101010
A 4.0 será „1“ si se ejecuta la operación.
Ejemplo 3.9.b Calentar una caldera.
El operador de la caldera conecta la caldera accionando el pulsador de marcha. El
operador puede graduar un tiempo de calentamiento utilizando los preselectores
mecánicos. El valor fijado por el operador indica los segundos en formato decimal
codificado en binario (BCD).
Componente del sistema Dirección absoluta
Pulsador de marcha E 0.7
Preselector digital para unidades E 1.0 a E 1.3
Preselector digital para decenas E 1.4 a E 1.7
Preselector digital para centenas E 0.0 a E 0.3
Inicio del proceso de calentamiento A 4.0
20
Tecsup Virtu@l Programación Avanzada de PLC
¡¡La solución en esquema de contactos!!
21
Tecsup Virtu@l Programación Avanzada de PLC
¡¡Ahora en lista de instrucciones!!
4. RESUMEN
· Los números reales (en coma flotante) se representan como números de precisión
simple de 32 bits.
· Los acumuladores son usados para transmitir parámetros de y a subrutinas así como
para almacenar valores intermedios utilizados en cálculos.
· La operación utilizada para el acceso al acumulador determina el tamaño de los datos
a los que se accede.
· Las operaciones de salto sirven para controlar el desarrollo del programa.
· Los saltos sólo pueden ser ejecutados dentro de un bloque, esto implica que tanto la
instrucción del salto como su meta tienen que encontrarse dentro del mismo bloque.
La meta del salto puede estar representada una sola vez dentro de este bloque.
5. PREGUNTAS DE AUTOCOMPROBACIÓN
1. ¿Qué son los acumuladores?
2. ¿Es correcto decir que las operaciones de lectura leen el contenido del parámetro de
entrada IN y lo convierten a otro tipo de número o representación o le cambian el
signo?
3. ¿De qué manera funcionan las operaciones de salto?
4. ¿Para qué sirven las operaciones de desplazamiento?
5. ¿Para qué sirven las operaciones de rotación?
6. RESPUESTAS A LAS PREGUNTAS DE AUTOCOMPROBACIÓN
1. Los acumuladores son elementos de lectura/escritura que se utilizan igual que una
memoria.
2. Falso. Son las operaciones de conversión.
3. Estas operaciones permiten al programa interrumpir su desarrollo lineal para continuar
el procesamiento en un punto diferente del programa.
4. Sirven para desplazar bit a bit el contenido de la entrada IN, hacia la izquierda o hacia la
derecha.
5. Sirven para rotar bit a bit todo el contenido de la entrada IN, hacia la izquierda o hacia
la derecha.
22
Tecsup Virtu@l Programación Avanzada de PLC
7. GLOSARIO DE TÉRMINOS
Acumulador Los acumuladores son registros en la CPU que sirven de
memoria intermedia para las operaciones de carga,
transferencia, comparación, cálculo y conversión.
Acu Acumuladores
BCD Binarycoded decimal.
Bloque de datos Los bloques de datos (DB) son áreas de datos en el programa
de aplicación que contienen datos del usuario. Existen bloques
de datos globales, a los que pueden acceder todos los bloques
lógicos, así como bloques de datos de instancia, que están
asignados a una determinada llamada bloque de función (FB).
Bloque de datos de Cada llamada de un bloque de función en el programa de
instancia aplicación STEP 7 lleva asignada un bloque de datos, que es
generado automáticamente. Este bloque de datos de instancia
contiene los valores de los parámetros de entrada, salida y
entrada/salida, así como los datos locales del bloque.
Bloque de función Según IEC 11313, se entiende por bloque de función (FB) a un
bloque lógico con datos estáticos. Un FB ofrece la posibilidad
de transferir parámetros al programa de aplicación. En
consecuencia, los bloques de función resultan apropiados para
programar operaciones complejas que se repiten
frecuentemente, p.ej. regulaciones y selección de modo de
operación.
Datos globales Se entiende por datos globales a los datos activables desde
cualquier bloque lógico (PB, FB, OB). En particular son éstos
marcas M, entradas E, salidas S, temporizadores, contadores y
bloques de datos DB. Se tiene acceso a los datos globales de
forma absoluta o simbólica.
DW Formato de palabra de un bloque de datos (DB).
Imagen del proceso La imagen del proceso es una parte integrante de la memoria
del sistema en la CPU. Al principio de un programa cíclico se
transfieren a la imagen del proceso de entradas los estados de
señal de los módulos de entrada. Al final del programa cíclico
se transfiere la imagen del proceso de salidas, como estado de
las señales, a los módulos de salida.
MD Formato de doble palabra de marca.
Memoria auxiliar La memoria auxiliar o de respaldo permite salvaguardar áreas
de memoria de la CPU sin pila tampón. Se salvaguardan una
cantidad parametrizable de temporizadores, contadores,
marcas y bytes de datos, así como los temporizadores,
contadores, marcas y bytes de datos remanentes.
MW Formato de palabra de marca.
FIN DE LA UNIDAD
23