3 Ejemplos Básicos de Programación
3 Ejemplos Básicos de Programación
3 Ejemplos Básicos de Programación
Introducción.
INTRODUCCIÓN
primer lugar a modo de introducción se explicaran los contactos de entrada y las acciones de
m
Posteriormente se analizarán los programas con operaciones combinacionales, los programas con
contadores, los programas con operadores de comparación, los programas con operaciones de
co
memoria y los programas con temporizadores.
.
16
Posteriormente, para concluir la Unidad Didáctica se explicarán diferentes ejemplos de máquinas,
desde el comienzo de la línea principal hasta la salida. No obstante como limitación práctica se
pa
tendrá en cuenta la anchura del papel cuando queramos sacar el programa por impresora o anchura
No se puede conectar una salida de forma directa a la línea principal, en estos casos se intercala un
.o
A cada entrada o salida disponible en el autómata, este le asigna un número. Este número de
nombrar con una etiqueta la cual se suele definir por la función de esa entrada o salida en el sistema
a automatizar, esta acción ayuda a la programación y comprensión del programa. Con relación a
estos números, con que el autómata define a sus entradas y salidas es imprescindible tener presente
lo siguiente:
uatae.ocupados2016.com
1 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Contactos de entrada
El número de salida es fijo, por lo que no se puede repetir un mismo número de salida.
m
. co
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
2 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Objetivos
m
. co
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
3 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Mapa Conceptual
[[[Elemento Multimedia]]]
m
co
.
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
4 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Elementos de entrada
Los contactos, únicos elementos que se colocan a las entradas pueden ser de los tipos que se
describen a continuación. Encima del contacto se escribe la variable a la cual hace alusión.
m
activa. Si la variable es 1 el contacto también será 1 y, si la variable es 0 el contacto será 0
co
Normalmente cerrado. Desactiva la línea hacia la derecha de la instrucción cuando el contacto se
activa. Este contacto toman el valor inverso de su variable, si la variable es 1 el contacto será
.
16
evaluado como 0 y viceversa.
0
Transición positiva o flanco positivo. Activa la línea hacia la derecha de la instrucción cuando el
s2
contacto está desactivo en el scan anterior y activo en el scan actual.
do
Transición negativa o flanco negativo. Activa la línea hacia la derecha de la instrucción cuando
uatae.ocupados2016.com
5 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
0 16
s2
do
pa
cu
.o
ae
Bits en memoria, son bits localizados en la memoria con posibilidad de ser definido por el
usuario, también se conoce como relés internos, bits de estado) y se utilizan muy a menudo
uatae.ocupados2016.com
6 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
Elementos de salida
16
El elemento de salida principal se denomina Asignación o Bobina. Estas acciones pueden ser de los
0
tipos que se describe a continuación.
s2
Acción simple: su valor lógico es igual al resultado de la combinación de los contactos en la rama.
do
toma el valor F.
pa
cu
Acción negada: su valor lógico es igual al inverso del resultado de la combinación de los contactos
.o
Puesta a uno (SET): cuando llega el valor V a esta entrada, su variable asociada de salida se pone
ua
y mantiene continuamente en estado V sin importar que a la entrada llegue posteriormente un valor
F. Una vez retenida la variable en el valor V, para pasarla a F será necesario el empleo de la entrada
de puesta a 0.
Puesta a cero (RESET): cuando llega un valor V a esta entrada, su variable asociada de salida se
pone y mantiene continuamente en estado F sin importar que a la entrada del Reset llegue
uatae.ocupados2016.com
7 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Acción activa por flanco de subida: activa un bit cuando la instrucción de entrada transiciona de
false a true.
Acción activa por flanco de bajada: activa un bit cuando la instrucción de entrada transiciona de
true a false.
m
. co
0 16
s2
do
pa
cu
.o
t ae
ua
Otros tipos de elementos de salida son: temporizadores, contadores, saltos, llamadas y retornos,
importante recordar que los tipos los siguientes elementos, así como su funcionamiento dependen no
solo del fabricante sino de la CPU o gama de PLC dentro del mismo fabricante.
uatae.ocupados2016.com
8 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
9 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
0 16
s2
do
pa
cu
Comparadores
.o
Si la línea de entrada está activa (EN), la instrucción ejecuta la operación y activa la línea de salida
(ENO) cuando el parámetro IN1 es igual al parámetro IN2. Se pueden comparar distintos tipos de
ae
uatae.ocupados2016.com
10 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
16
Ruptura de la secuencia de ejecución
ejecuta el salto cuando se activa la instrucción o línea de entrada, el salto se produce a la línea de
programa con la marca LBL o Label, en el cual se indica el nombre de la etiqueta de la operación de
pa
salto.
cu
.o
t ae
ua
uatae.ocupados2016.com
11 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
16
Instrucciones de salto a subrutinas: salta a un bloque de código encapsulado como una
subrutina. Está compuesto por la operación CALL que pasa el control a otra función y la función RET
0
s2
que retorna al punto siguiente desde donde fue llamada la subrutina.
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
12 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
0 16
s2
Comenzar Actividad
do
se activa.
Normalmente abierto 2
.o
Los contactos, únicos elementos que se colocan a las entradas pueden ser de los
tipos que se describen a continuación. Encima del contacto se escribe la variable
a la cual hace alusión. Normalmente abierto. Activa la línea hacia la derecha de
la in
uatae.ocupados2016.com
13 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Los programas con operaciones combinacionales son aquellos en los que las respuestas dependen
solo del valor actual de las entradas a través de las funciones lógicas: Y, O, NO.
m
. co
0 16
s2
do
pa
Además:
cu
.o
t ae
ua
uatae.ocupados2016.com
14 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
un mismo bloque se puede contar o descontar. Las opciones de programación de los contadores son,
Cuenta ascendente (CA): un flanco de subida en la entrada del elemento hace que el valor de
m
la cuenta se aumente a 1. El flanco de subida se define como el cambio de una señal de F a V.
co
Cuenta descendente (CD): con un flanco de subida se hace que el valor de la cuenta
descienda en 1.
.
16
Reposición (R): esta entrada obliga a que el contador se reinicie con su valor inicial.
0
La salida de un contador es un contacto cuya variable de referencia sea el nombre del contador, la
s2
variable es F si el valor de la cuenta sea 0 y es V si la cuenta es diferente de 0.
do
Ejemplo:
pa
Por ejemplo, cuando la entrada del contador se conexione 8 veces, se activará la salida Q.
cu
.o
t ae
ua
Así:
Primero, el contador está programado a 8; esto no quiere decir que la entrada no pueda ser
uatae.ocupados2016.com
15 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Segundo, el contador puede disponer de descontador, lo cual hace que, si el número total del
En el siguiente gráfico se muestra como el cómputo llega a 8, la salida se activa, pero el descontador
m
. co
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
16 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Esta función compara dos valores de entrada y permite el paso de corriente a su salida si se cumple
Igual que.
Mayor que.
Menor que.
m
Mayor o igual que.
co
Menor o igual que.
.
0 16
s2
do
El siguiente símbolo representa a un comparador “igual que” por ejemplo para el control de un
tanque: si la línea de entrada está activa (EN), la instrucción ejecuta la operación y activa la línea de
pa
salida (ENO) cuando el parámetro IN1 es igual al parámetro IN2. Se pueden comparar distintos
Ejemplo:
uatae.ocupados2016.com
17 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
velocidad del viento local. Si la velocidad registrada por el PLC es mayor o igual 100 km/h, se
cierran automáticamente los toldos, por peligro de rotura. La velocidad real se compara con un valor
establecido.
m
. co
16
La entrada analógica de un autómata programable está conectada a un
anemómetro, que controla la velocidad del viento local. Si la velocidad registrada
0
por el PLC es mayor o igual 100 km/h, se cierran automáticamente los toldos, por
s2
peligro de rotura. La velocidad real se compara con un valor establecido.
Verdadero.
do
Falso.
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
18 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
direccionar la CPU, o lo que es lo mismo, de toda la memoria de trabajo que posee, es lo que se
La longitud del mapa de memoria depende de tres factores determinantes. Estos factores son:
m
La capacidad de direccionamiento de la CPU (Unidad central de proceso), que determina el
co
número de direcciones asignadas a los diferentes dispositivos internos.
.
16
E/S.
0
s2
Dada una CPU concreta, la longitud total del mapa de memoria se encuentra siempre limitada a un
determinado valor.
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
19 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Estos temporizadores pueden estar definidos mediante símbolos de acciones o más corrientemente,
por ser de más fácil comprensión, mediante bloques funcionales, tal y como se especifica en la
siguiente imagen.
m
. co
0 16
s2
do
pa
cu
Se puede observar una serie de parámetros de programación y de activación así como de salida:
.o
ae
IN: instrucción de entrada de la línea de contactos que activan esta salida o acción.
PT: (Preset Time) parámetro que indica cuanto tiempo se va a temporizar o asignación de la
ua
ET: (Elipse Time), indica el transcurso de la temporización hasta que llega a la base de tiempo
definida en PT.
Temporizador de impulso
uatae.ocupados2016.com
20 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
0 16
s2
do
Este temporizador activará su salida, si es excitada su entrada (IN) y pasa el tiempo programado,
cu
Normalmente, de este temporizador usaremos dos variables: el bit digital de salida (T) que podrá ser
0/1 y el dato del tiempo actual, medido entre otros, en formato de 16 bits (Word).
t ae
ua
Ejemplo:
uatae.ocupados2016.com
21 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
El pulsador S1 activa el temporizador con retardo a la activación. Lo que pasará a los 10 segundos
m
co
Temporizador con retardo a la desactivación TOF
.
16
Este temporizador activará su salida en el mismo instante que se excita su entrada (IN). Una vez la
0
entrada no está activa, comienza a contar el tiempo que resta para la desactivación de la salida.
s2
Además, el temporizador puede contar con una entrada RESET (R), es decir, puesta a cero de la
salida y el tiempo. Normalmente, de este temporizador usaremos dos variables; el bit digital de
do
salida (T), que podrá ser 0/1, y el dato del tiempo actual, medido entre otros, en formato de 16 bits.
pa
Como ejemplo muy común de aplicación tenemos las luminarias de los garajes o las escaleras, las
cuales están gobernadas por temporizadores llamados “relés de escalera”, que en realidad son
cu
temporizadores con retardo a la desactivación. Todos los pulsadores se disponen en paralelo, hacia
.o
Ejemplo:
uatae.ocupados2016.com
22 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
activa la lámpara E. Cuando pasen los 10 segundos asignados después de activar la entrada del
temporizador no pasará nada, pero al soltar el pulsador, comenzará a contar el tiempo -10 segundos-
m
. co
0 16
Temporizador TON-TOF
s2
Es una mezcla de los dos anteriores, por este motivo, necesita programar dos bases de tiempo, (TON
do
y TOF).
pa
cu
.o
t ae
Permite un estado on/off a su salida, si la entrada (IN) está activa. Encontramos temporizadores de
temporizadores con salida asíncrona, donde el tiempo de activación de la salida, no tiene por qué
Los temporizadores con salida intermitente son muy usados en señales acústicas y luminosas de
advertencia y peligro.
uatae.ocupados2016.com
23 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
0 16
s2
Ejemplo:
do
Reloj horario
Activa-desactiva su salida un espacio de tiempo parametrizable, por ejemplo, de las 08:34 hasta las
23:45 horas. La programación por tanto, podrá ser semanal, mensual, incluso anual.
uatae.ocupados2016.com
24 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
. co
16
Ejemplo:
0
s2
Según el cronograma anterior la salida del reloj, y por tanto, lo que hubiera conectado a ella se
Comenzar Actividad
uatae.ocupados2016.com
25 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Indica el transcurso de la
temporización hasta que llega a la
base de tiempo definida en PT.
m
. co
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
26 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Las siguientes imágenes muestran el detalle de la máquina empaquetadora. El proceso que realiza
es el siguiente: El producto va llegando y se sitúa en línea, formando grupos de tres productos sobre
m
el cilindro B. Mediante este cilindro, se eleva el grupo de tres productos a la altura del cilindro A.
co
Puesto que esto se realiza a través de una parte elástica que permite el ascenso pero no el descenso
.
del producto, se puede retirar el cilindro B dejando el grupo de productos a la altura del cilindro A.
16
Una vez se disponga de un grupo de nuevos productos (tres filas) situados delante del cilindro A,
t1: permite detectar un producto. Sirve para indicar que se ha formado una hilera de tres
.o
productos.
Para los actuadores utilizamos el nombre del cilindro seguido, del signo “+” o “–”, según proceda.
uatae.ocupados2016.com
27 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
m
co
Así, GRAFCET para la máquina empaquetadora será:
.
0 16
s2
do
pa
cu
.o
t ae
ua
Verdadero.
uatae.ocupados2016.com
28 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Falso.
m
co
.
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
29 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
El proceso a automatizar es una estación mezcladora. Está formada por una primera parte, en la que
diferentes dispensadores de producto permiten realizar la mezcla deseada. Una vez las cantidades
de materia prima están seleccionadas, se trituran todas juntas para obtener el producto final (mezcla
m
. co
0 16
s2
do
pa
Tenemos siete tipos de productos diferentes; por tanto, siete dispensadores, situados sobre una base
cu
dispensador en la posición apropiada. Las unidades de producto, o pastillas, son empujadas una a
.o
una al recipiente en el que la mezcla será realizada. Esta base circular la se puede hacer girar (hacia
ae
Un sensor de fin de carrera permite ir localizando los dispensadores y, de este modo, gobernar el
ua
El producto final a obtener viene determinado por una tabla, en la que se especifican, para cada tipo
de producto básico (identificado por el número de dispensador), las unidades o pastillas que
debemos mezclar. Cuando en la tabla encontremos un dispensador con identificador cero, será el
indicador de que la composición está completa y que se puede proceder a activar la trituradora y
realizar la mezcla.
uatae.ocupados2016.com
30 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
El sensor s_infra nos permitirá detectar si hay pastillas en el dispensador. En caso de detectar falta
de pastillas, esto nos permitirá considerar la interacción apropiada con el usuario para poder
automatización del proceso descrito. No entraremos en el detalle de los sensores y las señales
m
utilizados.
co
El GRAFCET para la producción será:
.
0 16
s2
do
pa
cu
.o
t ae
ua
Retardo a la desconexión
uatae.ocupados2016.com
31 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Dirección de memoria
m
co
.
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
32 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Recuerda
[[[Elemento Multimedia]]]
m
co
.
0 16
s2
do
pa
cu
.o
t ae
ua
uatae.ocupados2016.com
33 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
Autoevaluación
Asignación (PV):
m
aumente a 1.
co
Con un flanco de subida se hace que el valor de la cuenta descienda en 1.
.
0 16
Indica si es verdadero o falso el siguiente enunciado: “Es importante saber que
s2
es ilimitado el número de contactos que se pueden poner en un bloque, desde el
comienzo de la línea principal hasta la salida”.
do
Verdadero.
pa
cu
Falso.
.o
IN:
t ae
uatae.ocupados2016.com
34 / 35
[AFO018273] ELEE018PO AUTÓMATAS PROGRAMABLES
[MOD016464] ELEE018PO AUTÓMATAS PROGRAMABLES
[UDI095445] EJEMPLOS BÁSICOS DE PROGRAMACIÓN:
cronológica adecuada:
m
Selección de productos de los dispensadores, abrir vaciado durante 5 segundos,
co
triturar durante 5 segundos.
.
16
Los sensores de fin de carrera en el ejemplo estudiado:
0
s2
No permite ir localizando los dispensadores.
do
uatae.ocupados2016.com
35 / 35