Programacion Twido
Programacion Twido
Programacion Twido
Teora
1.1. GENERALIDADES.
La programacin del PLC TSX Twido se realiza a travs del software TwidoSoft. El lenguaje de programacin deriva del denominado PL7-07 de TELEMECANIQUE, aunque ha sido notablemente mejorado en su funcionalidad, hacindolo ms intuitivo, con un entorno de trabajo mas prctico y con una mejor documentacin. Mediante el paquete Twidosoft se puede programar en GRAFET (Grafico Funcional de Control de Etapas y Transiciones) , Lista de Instrucciones y en plano de contactos (Ladder), siendo este ltimo muy similar al utilizado en los planos de automatismos elctricos.
Volver al principio
005 LD %I0.1
Operando
El programa en Lenguaje de Lista de Instrucciones consta de una secuencia de expresiones lgicas en forma de instrucciones boleanas. Cada instruccin boleana, salvo LOAD, STORE y NOT, actan en dos operandos (uno explcito y otro implcito).
Departamento de Tecnologa
Pg.
Autmatas Programables
Teora
El operando explicito es en s, el valor de carga de cada una de las instrucciones del programa. El operando implcito es un acumulador boleano y acta como una memoria lgica donde se almacena el resultado lgico de la operacin en curso. En las autmatas SIEMENS S5 se le denomina el VKE y en las de la serie S7 de la misma marca, el RLO (resultado lgico). Ejemplo:
La operacin AND %i0.2 ejecuta una Y lgica entre el contenido del acumulador (%i0.1) y la entrada %i0.2 cuyo resultado ser 1 lgico (en caso de que ambas entradas estn a 1), o un 0 lgico (en caso de que alguna de las entradas est a cero). Al llegar el programa a la altura de la lnea 003 el resultado u operando implcito del acumulador depender del resultado de la Y lgica realizada. La lnea 003 provoca la activacin de la salida Q1.0, ello implica que, cuando el programa contine en la lnea 004 su operando implcito tendr el valor 1 lgico, independientemente de la Y lgica anterior.
Volver al principio
Un circuito de contactos se compone de una serie de instrucciones grficas especficas relacionadas entre s, y situadas entre dos barras verticales que representan los terminales de alimentacin al circuito. El juego de instrucciones grficas representa:
Las entradas/salidas del autmata ( botones, pulsadores, sensores, rels, indicadores de funcionamiento etc..) Las funciones del autmata (temporizadores contadores, etc..) Las operaciones matemticas y lgicas ( suma, producto, O exclusiva etc..) Los operadores de comparacin y otras operaciones numricas ( A<B, A=B, desplazamiento, circular etc...) Las variables internas del autmata (bits, palabras, etc....)
Departamento de Tecnologa
Pg.
Autmatas Programables
Teora
Todas las instrucciones indicadas se asocian entre s mediante conexiones horizontales y verticales que conducen a una o varias salidas y/o acciones. Un circuito no deber soportar ms de un grupo de instrucciones asociadas. As el programa de la figura se compone de dos circuitos distintos.
Volver al principio
A fin de facilitar la programacin y asemejar lo ms posible el programa al esquema elctrico, la forma usual de operar en la programacin de PLCs consiste como paso previo introducir nemnicos o smbolos a cada uno de las entradas/salidas, marcas etc.., que vayamos a utilizar en nuestro automatismo, de forma que cuando haya que identificarlos, lo haremos por su nemnico o smbolo. En la
Departamento de Tecnologa
Pg.
Autmatas Programables
Teora
figura anterior (copia del editor de programacin TwidoSoft) muestra como se han definido a las entradas %I0.0, %I0.1 y %I0.2 los nemnicos de PARO, MARCHA_DERECHAS y MARCHA_IZQUIERDAS respectivamente, de esta forma cuando haya que indicar el contacto en el programa pondremos su smbolo y no el elemento del PLC ligado a l. En el lenguaje de programacin TwidoSoft las instrucciones de contactos, bobinas y desarrollo del programa (salto y llamada) ocupan una sola celda de la cuadrcula de programacin. Los bloques de funcin, comparacin y operacin ocupan varias celdas. 1.4.1. Bloques de funcin. Los bloques de funcin estn situados en el rea de comprobacin del editor de programacin. El bloque debe de aparecer en la primera fila, y no pueden aparecer instrucciones en lenguajes de contactos ni filas de continuidad encima o debajo del bloque. Las instrucciones de comprobacin del lenguaje de contactos llegan a la entrada del bloque de funcin, en tanto, que las instrucciones de comprobacin y/o de accin parten de la salida del bloque. Los bloque de funcin se organizan verticalmente y ocupan 2 columnas en 4 filas de la cuadrcula de programacin. En la figura se puede apreciar un bloque de funcin formado por el temporizador a la conexin %TM0 . Entre los bloques de funcin usualmente utilizados estn los temporizadores y los contadores. 1.4.2. Bloques de comparacin Los bloques de comparacin estn situados en el rea de prueba de la cuadrcula de programacin. El bloque puede aparecer en cualquier fila o columna de esta rea siempre y cuando la totalidad de la instruccin se encuentre en dicha rea. Los bloques de comparacin se organizan horizontalmente y ocupan dos columnas en una fila del editor de programacin. 1.4.3. Bloques de operacin Los bloques de operacin se encuentran en el rea de actividad del editor de programacin. El bloque puede aparecer en cualquier fila de dicha rea. La instruccin est justificada a la derecha, con lo que finalizar en la ltima columna. Los bloques de operacin se organizan horizontalmente y ocupan 4 columnas en 1 fila del editor de programacin.
Volver al principio
i
i = Nmero de PLC Pg.
0 = PLC de base Punto o extensin PLC IES JOSE ISBERT 1=Extensin de entradas/salidas
Autmatas Programables
Teora
El direccionamiento de estos bits es como se explica en la siguiente tabla. Estos bits son las imgenes lgicas de los estados elctricos de las entradas salidas. Estn almacenados en la memoria de datos y se actualizan con cada exploracin del programa 1.5.1.2. Bits internos Los bits internos memorizan los estados intermedios durante la ejecucin del programa. Actan a modo de rels auxiliares en un automatismo elctrico.
NOTA: Los bits de entrada/salida no utilizados no pueden ser usados como bits internos
1.5.1.3. Bits de sistema Los bits de sistema como %S0, %S17 o %S119 controlan el funcionamiento del PLC, as como el desarrollo del programa de aplicacin. 1.5.1.4. Bits de etapas Los bits %X1 a %X62 son bits asociados al lenguaje de programacin GRAFET. El bit Xi est a 1 cuando la etapa correspondiente est activa y a 0 cuando esta etapa est inactiva. 1.5.1.5. Bits de palabras El PLC adems de trabajar con bits independientes, tambin es capaz de trabajar con bloques de 16 bits denominados palabras. Existen distintos tipos de palabras: Palabras internas.- Destinadas a almacenar valores [desde %MW0 a %MW3000] Palabras constantes.- Destinadas a almacenar valores constantes o alfanumricos. nicamente pueden escribirse con el terminal de programacin [%KW0 a %KW255] Palabras de sistema.- Dan informacin del estado del autmata [%SW0 a %SW127] ......
Volver al principio
1.5.1.6. Lista de operandos de bits La siguiente tabla muestra la lista de todos los tipos de operandos de bits.
Tipo Descripcin Direccio o valor 0o1 %Ix.y.z. (2) %Qx.y.z (2) Nmero mximo Acceso a escritura (1) -No S
0 o 1 ( Falso o Verdadero) Estos bits son las imgenes lgicas de los estados elctricos de las E/S. Se almacenan en la memoria de datos y se actualizan durante cada ciclo de la lgica del programa.
-Nota (4)
Departamento de Tecnologa
Pg.
Autmatas Programables
Memoria interna Los bits internos son reas de memoria interna utilizadas para almacenar valores intermedios durante la ejecucin de un programa. Nota: Los bits de E/S no utilizados no se pueden emplear como bits internos. Los bits de sistema de %S0 a %S127 supervisan el funcionamiento correcto del PLC y la correcta ejecucin del programa de aplicacin. Los bits de bloques de funcin corresponden a las salidas de los bloques de funcin. Estas salidas pueden estar conectadas directamente o ser utilizadas como objeto. Bloques de funcin programados mediante instrucciones de programacin reversibles: BLK, OUT_BLK y END_BLK Uno de los 16 bits de algunas palabras se pueden extraer como bits de operando. Los bits %X1 a %Xi estn asociados a pasos Grafcet. El bit de pasos Xi se pone a 1 cuando el paso correspondiente esta activo. Se pone a cero cuando el paso se desactiva %Mi 128 para TWDLCAA16DRF Y 256 para TWDL MDA20DRT 128
Teora
S
Sistema
%Si
Segn i
Bloques de funcin
Nota (4)
No (3)
No Variable S
Leyendas: 1. Escrito por el programa o mediante el editor de tablas de animacin 2. Consulte el direccionamiento de E/S 3. Excepto en el caso de %SBRi.j y %SCi.j, estos bits se puede leer y escribir 4 .El modelo est determinado por el modelo de controlador.
Volver al principio
El resultado asociado toma el valor lgico del resultado lgico (RLO) del elemento de test.
1.5.2.3. Ecuacin boleana El resultado de dos elementos de test se aplica al elemento de accin.
Departamento de Tecnologa
Pg.
Teora
Las instrucciones de comprobacin permiten detectar los flancos ascendente y descendente en las entradas del PLC. Se detecta un flanco cuando el estado de una entrada ha cambiado entre el ciclo n-1 y el ciclo n en curso, permaneciendo en ese estado hasta terminar el ciclo en curso y en el momento que la autmata ejecuta la instruccin particular. Instruccin LDR (Rising edge) .- Equivale a un contacto de deteccin en flanco ascendente:
%I0.2 0
Flanco ascendente: Deteccin del paso de 0 a 1 de la entrada que lo controla (2) . Las instrucciones de flanco se suelen aplicar a las entradas %I, pero es posible detectar flancos en otros bits (o resultados boleanos) utilizando 2 bits internos. En el ejemplo, el bit interno %M11 memoriza el flanco ascendente del bit %M0.
Instruccin LDF (F: Falling edge) .Equivale a un contacto de deteccin en flanco descendente:
%I0.2
(3)
LDF %I0.2
(2) (3)
Por rearranque en fro y caliente, la aplicacin detectar flanco ascendente an cuando la entrada est a 1. Contacto de deteccin de transicin Negativa
Departamento de Tecnologa
Pg.
Autmatas Programables
Teora
Las instrucciones de carga LD, LDN, LDR y LDF corresponden respectivamente a contactos abiertos, cerrados, de flanco ascendente y de flanco descendente (LDR y LDF nicamente en entradas del autmata).
Volver al principio
Departamento de Tecnologa
Pg.
Autmatas Programables
Teora
Departamento de Tecnologa
Pg.
Autmatas Programables
Teora
Departamento de Tecnologa
Pg.
10
Teora
A los parntesis pueden asociarse los modificadores N, F, R o [ : N negacin. Ejemplo AND(N u OR(N F Flanco ascendente. Ejemplo AND(F u OR(F R Flanco descendente. Ejemplo AND(R u OR(R [ Comparaciones.
Departamento de Tecnologa
Pg.
11
Autmatas Programables
Teora
Volver al principio
Anidacin de parntesis. Las PLCs Twido permiten hasta una anidacin de 8 niveles de parntesis. Ejemplos:
Notas:
Cada parntesis abierto, deber cerrarse obligatoriamente. Las etiquetas %Li, los subprogramas %Si y las instrucciones de salto JMP no debern colocarse en expresiones entre parntesis. Las instrucciones de asignacin ST, STN, S y R no debern programarse entre parntesis.
Instruccin
MPS
Descripcin
Introducir el RLO ltimo en la pila stack.
Funcin
Almacena el resultado de la ltima instruccin lgica (contenidos del acumulador) en la parte superior del snack (introducir) y desplaza el resto de valores a la parte inferior de la pila. Lee la parte superior del snack en el acumulador Copia el valor de la parte superior del stack en el RLO (sacar) y desplaza el resto de valores hacia la parte superior de la pila.
MRD MPP
NOTA: Cuando se comienza a utilizar una pila (snack) en un programa con la instruccin MPS, se podrn utilizar tantas veces como se quiera la instruccin de lectura, pero necesariamente deberemos escribir la instruccin MPP al final.
Departamento de Tecnologa
Pg.
12
Autmatas Programables
Teora
Volver al principio
Departamento de Tecnologa
Pg.
13
Autmatas Programables
Bloques de funcin de programador cclico %Dri
Teora
Dentro de los bloques de funcin se deben considerar los objetos de bits y los objetos de palabras. Los objetos de bits son aquellos que se asocian a las salidas de los bloques de funcin. Se accede a estos bits mediante instrucciones boleanas de comprobacin. Se puede acceder a los bits de salida de los bloques de funcin de forma directa cuando estn programados en un formato reversible ( que se puede convertir de listas de instrucciones a lenguaje de contactos o a la inversa), y especificando el bloque de funcin concreto cuando no se programa con formato reversible. Se aplica el trmino objetos de palabras a los parmetros de configuracin del bloque. Estos parmetros pueden ser, en algunos casos, accesibles desde el programa para programacin. Por ejemplo, cuando programamos un temporizador se le puede indicar que el tiempo de contaje sea de 10 pulsos con una base de tiempos (BT) de 1 segundo por pulso, sin embargo nos debemos atener a los tipos de BT establecidos ( 1 ms, 10 ms, 100 ms, 1s y 1mn) y no a otros distintos como por ejemplo 0,026 seg. En la siguiente tabla se puede apreciar los distintos bloques de funcin de las PLCs Twido y sus parmetros fundamentales:
Tal y como se ha indicado anteriormente los bloques de funcin estndar se pueden programar de dos formas distintas: Con instrucciones de bloque de funcin (ej.: BLK %TM2); de esta forma es posible mostrarlo en lenguaje de contactos. Tiene el inconveniente de limitar las operaciones del bloque al lugar del programa donde se ha programado dicho bloque. Despus veremos que a travs de los bits internos podemos saltarnos este inconveniente siendo esta forma de programacin la que probablemente presenta ms ventajas. Con instrucciones especficas (ej.: CU % Ci); esta forma no es reversible, pero permite efectuar operaciones en las entradas de bloque en distintos puntos del programa.
Departamento de Tecnologa
Pg.
14
Autmatas Programables
Teora
EN
Este tipo de programacin utiliza las instrucciones BLK, OUT_BLK, y END_BLK , donde: BLK .- Indica el inicio del bloque de funcin. OUT_BLK .- opcional, permite asignar las salidas del bloque. END_BLK .- indica final del bloque de funcin.
La mejor forma de entender estas instrucciones es mediante ejemplos, as en el ejemplo que se propone a continuacin ( bloque de funcin contador), se puede apreciar como bajo el encabezado de la declaracin del bloque, BLK, se procede a la asignacin de las entradas del bloque. Una vez terminada la asignacin de entradas se procede, si se desea, al tratamiento de las salidas mediante la instruccin OUT_BLK. Finalmente y para acabar la programacin del bloque se escribe la lnea END_BLK.
Departamento de Tecnologa
Pg.
15
Teora
1.6.2.2. UTILIZACIN COMO TEMPORIZADOR DE RETARDO A LA CONEXIN (TON) Tras un flanco ascendente en la entrada IN se activa el temporizador: su valor actual %TMi.V crece desde 0 hasta %TMi.P en una unidad a cada impulso de la base de tiempos BT. El bit de salida %TMi.Q pasa a 1 cuando el valor actual alcanza
Departamento de Tecnologa
Pg.
16
Autmatas Programables
Teora
al programado en %TMi.P,. La salida se mantendr a 1 hasta tanto no detecte un flnco descendente en la entrada IN. Al alcanzar un flanco descendente en la entrada IN, el temporizador se detendr incluso aunque no haya alcanzado el valor de preseleccin %TMi.P. 1.6.2.3. UTILIZACIN COMO TEMPORIZADOR DE RETARDO A LA DESCONEXIN (TOFF). Cuando se detecta un flanco ascendente en la entrada IN la salida %TMi.Q se pone a 1, permaneciendo en ese estado de forma ininterrumpida en tanto la entrada se encuentre a 1. A partir de que se detecta un flanco descendente en la entrada IN, la salida sigue activa, y el valor actual %TMi.V crece hacia el valor de preseleccin %TMi.P con cada impulso de la base de tiempo. Cuando el valor actual %TMi.V alcanza al valor de preseleccin el bit de salida %TMi.Q toma valor cero. El valor actual %TMi.V toma el valor cero, tras un flanco descendente de la entrada IN.
UTILIZACIN
DEL
TEMPORIZADOR
DE
Tras un flanco ascendente en la entrada IN se activa el temporizador actual en su bit de salida %TMi.Q (si el temporizador no se encuentra en curso de evolucin), y el valor actual %TMi.V crece desde cero hasta el valor de preseleccin %TMi.P en una unidad por cada impulso de la base de tiempos BT, de forma, que cuando el valor actual coincida con el valor de preseleccin la salida se pondr a cero. Una vez detectado el flanco ascendente en la entrada el temporizador evolucionar desde %TMi.V hasta el valor de preseleccin %TMi.P con independencia de los valores que pueda tomar en el proceso de contaje de pulsos de la base de tiempos BT. 1.6.2.5. PROGRAMACIN Y CONFIGURACIN DE TEMPORIZADORES. La programacin de los bloques de funcin de los temporizadores es idntica sea cual sea el tipo de temporizador. La seleccin del funcionamiento TON, TOF o TP, el valor de preseleccin %TMi.P y la base de tiempos se realiza en la configuracin del temporizador a travs del aparato programador. Los parmetros que han de configurarse en cada uno de los temporizadores son: Tipo: TON, TOF o TP. TB: 1 mn, 1s, 10 ms y 1 ms Valor de preseleccin entre 0 y 9999 a tener en cuenta en los bloques de funcin de
Consideraciones temporizadores:
Departamento de Tecnologa
Pg.
17
Autmatas Programables
Teora
Incidencia de un rearranque en fro: En el rearranque en fro el bit de sistema %S0 se pone a 1 provocando la puesta a cero del valor actual del temporizador y de la salida del mismo. Incidencia de un rearranque en caliente: En este caso el bit de sistema %S0 tiene valor 1 y no tiene incidencia en el valor actual del temporizador. El valor actual no aumenta durante el tiempo de corte de la alimentacin. Incidencia de un paso a STOP: El paso a STOP del PLC no inmoviliza el valor actual. Incidencia de un salto de programa : El hecho de no explorar las lneas donde est programado el bloque del temporizador no inmoviliza el valor actual %TMi.V que contina creciendo hacia %TMi.P. Incluso el bit asociado a ka salida Q del bloque temporizador sigue funcionando normalmente y puede ser comprobado por otra instruccin. En cambio, la salida directamente cableada a la salida del bloque no se activa, ya que el autmata no lo explora. Comprobacin del bit %TMi.Q: Se aconseja comprobar este bit una sola vez en el programa. Incidencia de la modificacin de la preseleccin %TMi.P: La modificacin del valor de preseleccin por instruccin o ajuste slo se tiene en cuenta en la prxima activacin del temporizador. La base de tiempos 1 ms slo est disponible en los primeros cinco temporizadores.
LD IN LD ST
Volver al principio
Departamento de Tecnologa
Pg.
18
Autmatas Programables
Teora
%Ci
%Ci.P 9999 CU F CD
S ADJ Y D
El significado de las distintas entradas/salidas de un contador y sus parmetros se definen en la siguiente tabla: Parmetro
Nmero de contador Valor actual
Etiqueta
%Ci %Ci.V 0 a 127
Valor
%Ci.P
ADJ
Resetear entrada Restablecer entrada Conteo progresivo Conteo regresivo Salida de desborde en el conteo regresivo Salida de desborde en el conteo progresivo Valor predeterminado alcanzado
R S CU CD E F D
La palabra se incrementa o reduce de acuerdo con las entradas(o instrucciones) Cu y CD. Se puede leer y comprobar, pero no se puede escribir desde el programa: Si desea modificar %Ci.V, utilice el editor de datos 0 %Ci.P 9999. La palabra se puede leer, comprobar y escribir (valor predeterminado 9999) Y: S, el valor preestablecido e puede modificar mediante el editor de tablas de animacin. Nmero: No, el editor no se puede modificar mediante el editor de tablas de animacin. Al aplicar un estado 1 a la entrada R, el valor del acumulador %Ci.V se pone a 0. Al aplicar un estado 1 a la entrada R, el valor del acumulador %Ci.V =%Ci.P Incrementos en el acumulador %Ci.V en un flanco ascendente. Disminucin en el acumulador %Ci.V en un flanco ascendente El bit asociado a %Ci.E se pone a 1 cuando el contador cambia de 0 a 9999 El bit asociado a %Ci.F se pone a 1 cuando el contador cambia de 9999 a 0 El bit asociado a %Ci.D se pone a 1 cuando %Ci.V=%Ci.P
Departamento de Tecnologa
Pg.
19
Autmatas Programables
Teora
La siguiente tabla describe las fases principales de funcionamiento de un contador progresivo/regresivo: Funcionamiento
Conteo progresivo Aparece un flanco ascendente en la entrada de conteo progresivo CU (o se activa la instruccin CU) El valor actual de %Ci.V es igual al valor preestablecido %Ci.P El valor actual de %Ci.V cambia de 9999 a0 Si el contador continua en el conteo progresivo Aparece un flanco ascendente en la entrada de conteo regresivo CD (o se activa la instruccin CD) El valor actual de %Ci.V cambia de o a 9999 Si el contador continua en el conteo regresivo El valor actual %Ci.V aumenta en una unidad El bit de salida preestablecida alcanzada cambia a 1 El bit de salida %Ci.F (desborde de conteo progresivo) cambia a 1 El bit de salida %Ci.F (desborde de conteo progresivo) se restablece en cero. El valor actual %Ci.V disminuye en una unidad
Accin
Resultado
Conteo regresivo
Preajuste
El bit de salida %Ci.E (desborde de conteo regresivo) cambia a 1 El bit de salida %Ci.E (desborde de conteo regresivo) se restablece en cero. Para utilizar las funciones de conteo progresivo/regresivo al mismo tiempo, debern controlarse las entradas CU y CD correspondientes. Estas dos entradas se exploran sucesivamente, Si las dos se encuentran en 1, el valor actual se mantendr sin cambios. Puesta a 1 de la entrada R El valor actual %Ci.V se fuerza a cero. Las salidas: %Ci.E, %Ci.D, %Ci.F se restablecen a cero. Si la entrada S se establece a 1 y la entrada El valor actual %Ci.V adopta R est en cero el valor preestablecido en %Ci.P, y la salida %Ci.D se pone a 1.
Descripcin
El valor actual %Ci.V se establece a 0. Los bits de salida %Ci.E, %Ci.D y %Ci.F se establecen a 0 El valor preestablecido se inicia con el valor definido durante la configuracin. No tiene ningn efecto sobre el valor actual del contador. La modificacin del valor preestablecido mediante una instruccin o ajustndolo por software entra en vigor cuando la aplicacin procesa el bloque (activacin de una de las entradas).
Departamento de Tecnologa
Pg.
20
Autmatas Programables
1.6.3.2. PROGRAMACIN Y CONFIGURACIN DE CONTADORES. En el siguiente ejemplo se muestra un contador que permite contar un mximos de 5000 pulsos en su entrada CU. Cada pulso de entrada es %I0.1 %Ci detectado en %I0.2 y aplicado en serie E R S ADJ Y D %I0.2 %M0 con %M0 a la entrada progresiva del %Ci.P 5000 CU contador. Cuando el contador alcance F CD el valor preestablecido, el bit %C8.D se %Q0.0 %C8.D pondr a 1. Para resetear el contador habr de activarse la entrada %I0.1
<< PROGRAMACIN REVERSIBLE >>
Teora
LD R LD AND CU LD ST
Durante la configuracin del contador debe introducirse el valor preestablecido para el ejemplo %Ci.P=5000 , y activar la opcin de ajustable si se desea ver el valor en las tablas de animacin de TwidoSoft. Seguidamente se muestra el ejemplo de un contador configurado para trabajo de contaje progresivo y regresivo, donde el valor de preseleccin se ha establecido a C1.P=4. El funcionamiento es el siguiente: Los pulsos generados por %I0.0 irn aumentando el valor actual del contador %C1.V de 0 a 3, para disminuir despus de 3 a cero.
<< PROGRAMACIN REVERSIBLE >>
%M0
%C1
R %M0 %I0.0 ADJ Y S %Ci.P 4
R %M0 S
D CU CD F
%M0
%I0.0
BLK %C1 LDN %M0 AND %I0.0 CU LD %M0 AND %I0.0 CD OUT_BLK LD E R %M0 LD D S %M0 END_BLK
Departamento de Tecnologa
%M0 %I0.0 %C1 %M0 %I0.0 %C1 %C1.E %M0 %C1.D %M0
Volver al principio
Pg.
21