You are on page 1of 21

PROGRAMACIÓN DE AUTÓMATAS 1

• Sistemas de numeración.
• Direccionamiento y acceso a la periferia.
• Instrucciones, variables y operandos.
• Formas de representación de un programa.
• Organización de programas.
• Tipos de módulos de programa.

Fundamentos de Automática
Sistemas de numeración 2

• Los sistemas digitales emplean dispositivos en los que sólo son posibles 2
estados: Tensión alta (p.e. 4 V.) o baja (p.e. 0,2 V.), pero ningún otro valor.
• Diversas denominaciones: 1 - 0, alto - bajo, verdadero - falso, ON - OFF.
• Unidades de información:
– BIT: Un único elemento con 2 posibles valores “1” o “0”.
7 6 5 4 3 2 1 0

– BYTE: Conjunto de 8 bits.

– WORD (PALABRA): Conjunto de 2 bytes (16 bits).


7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 15 14 13 12 1110 9 8 7 6 5 4 3 2 1 0

– DWORD (DOBLE PALABRA): Conjunto de 2 words (32 bits).


7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

Fundamentos de Automática – Introducción a la Programación de Autómatas


Sistemas de numeración: BINARIO 3

• Es necesario convertir los valores de las variables físicas en datos manejables


por el autómata y viceversa.
• Sistema binario: Sistema en base 2 con sólo 2 símbolos (0, 1).
– Conversión decimal a binario: Se divide el nº decimal por 2 sucesivamente,
y se toman los restos en sentido inverso

53/2 = 26 /2 = 13 /2 = 6/2 = 3/2 = 1


resto 1 0 1 0 1 → nº binario: 1 1 0 1 0 1

– Conversión binario a decimal: Se multiplican los elementos del nº binario


por potencias crecientes de 2, comenzando por la dcha.
25 24 23 22 21 20 nº decimal: 1 x 25 + 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 =
110101 32 + 16 + 0 + 4 + 0 + 1 = 53

Fundamentos de Automática – Introducción a la Programación de Autómatas


Sistemas de numeración: HEXADECIMAL 4

• Sistema hexadecimal: Sistema en base 16 con 16 símbolos (dígitos del 0 al 9 y


letras desde A hasta F).
Hexadecimal Binario
– Conversión hexadecimal a binario: 0 0000
Se sustituye cada símbolo por su 1 0001
2 0010
equivalente binario indicado en la 3 0011
tabla adjunta. P.e. el nº hexadecimal 4 0100
5 0101
9A7E 6 0110
7 0111
9=1001 A=1010 7=0111 E=1110 8 1000
↓ 9 1001
A 1010
nº binario 1001101001111110 B 1011
C 1100
– Conversión binario a hexadecimal: D 1101
E 1110
Se dividen los bits en grupos de 4, F 1111
comenzando por la dcha., y se
convierten a su equivalente
hexadecimal.
Fundamentos de Automática – Introducción a la Programación de Autómatas
Sistemas de numeración: BCD 5

• Sistema BCD: Utiliza 10 símbolos igual que el decimal (dígitos del 0 al 9).
– Se sustituye cada símbolo por su equivalente binario.
• nº decimal 834 → 8=1000 3=0011 4=0100 → nº BCD 100000110100
– Facilidad de paso entre decimal y binario, pero utiliza mucho espacio.
– Utilizan ponderación: Cada posición posee un peso por el que hay que
multiplicar para obtener el número decimal.
Decimal BCD natural BCD Aiken BCD
8421 2421 54210
0 0000 0000 0000
1 0001 0001 0001
2 0010 0010 0010
3 0011 0011 0011
4 0100 0100 0100
5 0101 1011 1000
6 0110 1100 1001
7 0111 1101 1010
8 1000 1110 1011
9 1001 1111 1100

Fundamentos de Automática – Introducción a la Programación de Autómatas


Representación de números reales (I) 6

• Parte fraccionaria: Se multiplica la parte fraccionaria por 2 dando lugar a nuevas


partes entera y fraccionaria. Se separa la nueva parte fraccionaria y se repite el
proceso hasta que la parte fraccionaria sea 0. El código vendrá dado por las
partes enteras obtenidas. P.e., nº decimal 13,375

0,375 x 2 =0,75 → 0,75 x 2 =1,5 → 0,5 x 2 =1,0 → nº binario: 1101.011

– La obtención de la parte fraccionaria en decimal se realiza multiplicando los


bits hacia la derecha del punto decimal por potencias inversas de 2.

2-1 2-2 2-3 parte fraccionaria decimal: 0 x 2-1 + 1 x 2-2 + 1 x 2-3 =


011 0 + 0,25 + 0,125= 0,375

Fundamentos de Automática – Introducción a la Programación de Autómatas


Representación de números reales (II) 7

• Números con signo. Se utiliza el bit más significativo para indicar el signo: 0
para números positivos y 1 para números negativos.
– Existen diversas notaciones, que se diferencian en el tratamiento de los
números negativos
• Signo-Magnitud: A la magnitud del número (valor absoluto) se le antepone el
bit de signo.
• Complemento a 1: Un número negativo se obtiene a partir del positivo,
intercambiando los 0’s por 1’s.
• Complemento a 2: Un número negativo se obtiene a partir del positivo,
intercambiando los 0’s por 1’s y sumando 1.
Signo-Magnitud Complemento a 1 Complemento a 2
+0 0000 -0 1000 +0 0000 -0 1111 +0 0000 -1 1111
+1 0001 -1 1001 +1 0001 -1 1110 +1 0001 -2 1110
+2 0010 -2 1010 +2 0010 -2 1101 +2 0010 -3 1101
+3 0011 -3 1011 +3 0011 -3 1100 +3 0011 -4 1100
+4 0100 -4 1100 +4 0100 -4 1011 +4 0100 -5 1011
+5 0101 -5 1101 +5 0101 -5 1010 +5 0101 -6 1010
+6 0110 -6 1110 +6 0110 -6 1001 +6 0110 -7 1001
+7 0111 -7 1111 +7 0111 -7 1000 +7 0111 -8 1000
Fundamentos de Automática – Introducción a la Programación de Autómatas
Almacenamiento de números reales (I) 8

• Una zona del registro (elemento de 7 6 5 4 3 2 1 0


almacenamiento) se destina a la parte entera y
otra zona a la parte fraccionaria. ,
• La longitud de dichas zonas limita las parte entera parte fraccionaria
magnitudes enteras y fraccionarias
representadas:
– P.e., con 2 bits sólo se pueden representar las fracciones
• 0 x 2-1+1 x 2-2= 0,25.
• 1 x 2-1+0 x 2-2= 0,5.
• 1 x 2-1+1 x 2-2= 0,5+0,25=0,75.
• Representación en coma fija: El número de bits de la parte fraccionaria es fijo.
– Errores de precisión
• Truncado: Eliminación de aquellos bits de la parte fraccionaria que no se
pueden almacenar en el registro.
• Redondeo: Aproximación al número más cercano que sí se puede representar
con exactitud en el registro.
Fundamentos de Automática – Introducción a la Programación de Autómatas
Almacenamiento de números reales (II) 9

• Representación en coma flotante: Cualquier nº real se puede expresar como m.be


(m=mantisa, b=base, e=exponente). P.e., 2,4510=245 x 10-2.
– Sólo es necesario almacenar la mantisa y el exponente.
– Representación normalizada IEEE 754:
• Utiliza 32 bits: Bit más significativo para el signo (S), los 8 siguientes para el
exponente (E) y los 23 restantes para la mantisa (F).
• Un número real se obtiene de la expresión (-1)S x 2(E-127) x (1.F).
• Normalización del equivalente binario a 1.NNNNN x 2n, donde n es el número
de posiciones que hay que desplazar el punto decimal para dejar un 1 a la
izqda. (positivo si se mueve hacia la izqda. y negativo en caso contrario).
• Entonces E=127+n y F=NNNNN (completado con 0’s por la dcha. hasta llegar
a 23 bits).
• Ejemplo: 525,5 → 1000001101.1 → 1.0000011011 x 29 →
0 1000 1000 00000110110000000000000 → 44 03 60 00 (hex)
• Ejemplo: -0,625 → 0.101 → 1.01 x 2-1 →
1 0111 1110 01000000000000000000000 → BF 20 00 00 (hex)
Fundamentos de Automática – Introducción a la Programación de Autómatas
Direccionamiento 10

• Acceso a distintas zonas de la memoria: Especificación de


– Área de memoria: Entradas, salidas, marcas, …
– Longitud dato: Bit, byte, word, …
– Ubicación

X 1.4

}→ XB 38 ≡ X 38.7 + X 38.6 + … X 38.0


} → XW 73 ≡ XB 73 + XB 74

} → XD 115 ≡ XW 115 + XW 117

Fundamentos de Automática – Introducción a la Programación de Autómatas


Acceso a la periferia 11

• La relación entre la señal física 1 2 3 4 5 6 7 8 9 10 11

(entrada o salida) y su posición en


la memoria correspondiente, viene
dada por la proximidad del módulo
a la CPU y por el borne donde se
conecta dicha señal.
• Reserva de memoria:
– 4 bytes por módulo para
entradas/salidas digitales (1 bit
cada una.
– 16 bytes por módulo para
entradas/salidas analógicas (16
bits para cada una). F.A. CPU ED SD EA+SA
0.0 4.0 288
... ... ...
3.7 7.7 303

Fundamentos de Automática – Introducción a la Programación de Autómatas


Acceso a la periferia: Direccionamiento 12

• Direccionamiento de señales digitales: Direcciones de memoria de 0 a 127.

Rack 0

Rack 1

• Direccionamiento de señales analógicas: Direcciones de memoria de 256 a 752.

Rack 0

Rack 1

Fundamentos de Automática – Introducción a la Programación de Autómatas


Instrucciones, variables y operandos 13

• Un programa de autómata es una sucesión de instrucciones (órdenes de trabajo)


con 2 partes principales:
– Operación: ¿Qué hacer? (carga, contaje, lógica, temporización, …).
– Operando: ¿Con qué? o ¿Dónde?. Suele constar de
• Símbolo: Indica el tipo de variable (entrada, salida, marca, contador, …).
• Parámetro: Ubicación del símbolo en la memoria.
– Ejemplos:
ENT E 3.0 / Obtener entrada
AND M 3.0 / Operación lógica
OUT A 5.4 / Resultado hacia salida

LOAD CT 8 / Asignar valor a cte.


INI CD 3 / Inicializar contador 3
ENT E 7.5 / Obtener entrada
INC CD 3 / Incrementar contador 3

Fundamentos de Automática – Introducción a la Programación de Autómatas


Representaciones de un programa (I) 14

• Distintas formas de especificar lo que ha de hacer el autómata en cada momento:


– Diagrama de contactos (LD/KOP): Basado en los esquemas de relés
utilizados en los automatismos eléctricos de lógica cableada, mayoritarios
antes de la aparición del API.
– Plano de funciones (FBD/FUP): Basado en símbolos normalizados
(puertas) que implantan funciones lógicas directas (AND, OR, …) o
sistemas lógicos más complejos (biestables, registros, …).
– GRAFCET: Evolución de los diagramas de flujo. Representa directamente
la sucesión de las diversas fases del ciclo de producción, separadas por las
condiciones que permiten la evolución de una fase a la siguiente.
– Lista de instrucciones (IL/AWL): Basado en las definiciones del álgebra de
Boole. A diferencia de las anteriores no es una representación gráfica.
• En los APIs actuales se pueden combinar diversas representaciones dentro de un
mismo programa de usuario.

Fundamentos de Automática – Introducción a la Programación de Autómatas


Representaciones de un programa (II) 15

KOP (LD) FUP (FBD) AWL (IL)


Diagrama de contactos Diagrama de funciones Lista de instrucciones
U E 0.0
E 0.0

& U E 0.1
E 0.1
E 0.0 E 0.1 A 4.0 1
O
E 0.2 A 4.0
E 0.2 E 0.3 & = U E 0.2
E 0.3
U E 0.3

= A 4.0

Fundamentos de Automática – Introducción a la Programación de Autómatas


Representaciones de un programa (III) 16

S7-GRAPH (SFC) SCL (Pascal)


Diagrama funcional de secuencias Lenguaje de control estructurado
ORGANIZATION_BLOCK OB1

VAR_TEMP // Variables temporales


info : ARRAY[0..19] OF BYTE;
END_VAR

// Instrucciones
BEGIN
IF E0.0=1 then
A0.0:=1;
A0.1:=1;
ELSE
AB0:=0;
END_IF;
END_ORGANIZATION_BLOCK

Fundamentos de Automática – Introducción a la Programación de Autómatas


Organización de programas: Lineal 17

• Programación lineal:
– Las instrucciones se escriben todas juntas una tras otra y se consultan
secuencialmente para su ejecución.
– Recomendada para proyectos sencillos.
– Autómatas de gama baja.
– Se puede alterar el orden de ejecución normal mediante instrucciones de
“salto”, que permiten acortar el tiempo de ciclo.

salto

Fundamentos de Automática – Introducción a la Programación de Autómatas


Organización de programas: Estructurada 18

• Programación estructurada:
– División de la tarea a ejecutar en partes elementales, implantadas en bloques
de programa (módulos o subprogramas).
– Llamada desde un módulo principal y/o anidamiento entre módulos.
– Módulos independientes o reutilizables y parametrizables (subrutinas).
– Recomendada para proyectos complejos.
– Simplificación de la programación, depuración y mantenimiento.

Fundamentos de Automática – Introducción a la Programación de Autómatas


Tipos de módulos: de Organización 19

• Módulos de organización (OB):


– Constituyen la interfase entre el sistema operativo del API y el programa de
usuario. Sólo pueden ser llamados por el sistema operativo, NO por otros
módulos, en respuesta a ciertos eventos:
• En el arranque de la CPU.
• En una hora del día.
• A intervalos constantes.
• Cuando ha transcurrido un cierto período de tiempo.
• Cuando ocurre un error.
• Cuando tiene lugar una alarma de proceso.
– Existe un módulo principal que es ejecutado cíclicamente por el sistema
operativo:
• Programación lineal: Almacena el programa completo.
• Programación estructurada: Realiza las llamadas al resto de módulos.
– Distintos niveles de prioridad: La más baja para el módulo principal.
Fundamentos de Automática – Introducción a la Programación de Autómatas
Tipos de módulos: Funciones y de Función 20

• Funciones (FC):
– Módulos de código que se ejecutan al ser llamados desde otros módulos.
• Permiten realizar programación estructurada
• Actúan como subrutinas del programa: Cuando terminan de ejecutar su código
devuelven el control al módulo y al segmento desde el que han sido llamadas.
– Parametrizables: Uso para tareas repetitivas o funcionalidades complejas.
– Las funciones de sistema (SFC) son funciones integradas en el sistema
operativo de la CPU. Su número y funcionalidad es fijo.
• Módulos de función (FB):
– Básicamente ofrecen la misma funcionalidad que las funciones.
– La diferencia radica en que los módulos de función poseen su propia zona
de memoria en forma de módulos de datos de instancia.
– Los módulos de función de sistema (SFB) son funciones parametrizables
integradas en el sistema operativo de la CPU. Su número y funcionalidad es
fijo.

Fundamentos de Automática – Introducción a la Programación de Autómatas


Tipos de módulos: de Datos 21

• Módulos de datos (DB):


– Zonas del programa de usuario utilizadas para el almacenamiento de
valores.
– El programa de usuario puede acceder a datos en un módulo de datos con
operaciones de BIT, BYTE, WORD o DWORD.
– Pueden utilizar direcciones simbólicas o absolutas.
– A diferencia de los datos temporales (generados durante la ejecución de un
módulo), la información de los módulos de datos no se sobreescribe cuando
la ejecución de un módulo finaliza o cuando el DB se cierra.
– Se utilizan de formas diferentes, dependiendo de sus contenidos:
• Módulos de datos globales: Contienen información que puede ser accedida por
todos los módulos del programa de usuario.
• Módulos de datos instancia: Son asignados siempre a un FB en particular. Los
datos de cada DB deben usarse solo para el FB asignado.

Fundamentos de Automática – Introducción a la Programación de Autómatas

You might also like