1.rlo resultado logico de la operacion

8
Word Bits S7 8 7 6 5 4 3 2 1 0 BR CC0 CC1 OV OS OR STA RLO /FC Bit /FC – Firts Check – Bit de Primera Consulta Cada operación lógica consulta el estado del bit /FC, así como el estado de señal del operando direccionado. Si el bit /FC es ”0”, la operación almacenará el resultado de la consulta del estado de señal en el bit RLO de la palabra de estado (bit RLO) y el bit /FC se pone a ”1”. Este proceso se denomina primera consulta. Ciertas instrucciones como =, S y R establecen el /FC bit a 0 iniciando así una nueva lógica después de ellas: condicionesacciones (Con esos operandos, se cierra la consulta actual y se abre una nueva (además del inicio del programa). Otras instrucciones como AND o OR establecerán el bit / FC a 1 para combinar la lógica con la siguiente instrucción. Bit RLO – Result of Logic Operation – Resultado Lógico Este bit almacena el resultado de una operación lógica binaria (AND, NAND, OR, NOR, NOT) o de una comparación (XOR--or exclusiva--, XNOR --nor exclusiva--). Otras instrucciones leen el RLO (=, S, R) para determinar cómo se van a ejecutar. STA “Status” (bit 2) El bit estado almacena el estado de la dirección de Booleana actual (bit direccionado). Ejemplo con RLO, STA y / FC Si estás acostumbrado a la lógica de escalera (ladder) y estas luchando por entender el propósito del RLO y STA puede ayudarte el siguiente ejemplo. El STA se utiliza para realizar un seguimiento del estado de la direccion. El RLO se utiliza para mantener seguimiento del estado del renglón.

Transcript of 1.rlo resultado logico de la operacion

Page 1: 1.rlo  resultado logico de la operacion

Word Bits S7

8 7 6 5 4 3 2 1 0 BR CC0 CC1 OV OS OR STA RLO /FC

Bit /FC – Firts Check – Bit de Primera Consulta

Cada operación lógica consulta el estado del bit /FC, así como el estado de señal del operando direccionado. Si el bit /FC es ”0”, la operación almacenará el resultado de la consulta del estado de señal en el bit RLO de la palabra de estado (bit RLO) y el bit /FC se pone a ”1”. Este proceso se denomina primera consulta.

Ciertas instrucciones como =, S y R establecen el /FC bit a 0 iniciando así una nueva lógica después de ellas: condicionesacciones (Con esos operandos, se cierra la consulta actual y se abre una nueva (además del inicio del programa).

Otras instrucciones como AND o OR establecerán el bit / FC a 1 para combinar la lógica con la siguiente instrucción.

Bit RLO – Result of Logic Operation – Resultado Lógico

Este bit almacena el resultado de una operación lógica binaria (AND, NAND, OR, NOR, NOT) o de una comparación (XOR--or exclusiva--, XNOR --nor exclusiva--). Otras instrucciones leen el RLO (=, S, R) para determinar cómo se van a ejecutar.

STA “Status” (bit 2) El bit estado almacena el estado de la dirección de Booleana actual (bit direccionado). Ejemplo con RLO, STA y / FC Si estás acostumbrado a la lógica de escalera (ladder) y estas luchando por entender el propósito del RLO y STA puede ayudarte el siguiente ejemplo. El STA se utiliza para realizar un seguimiento del estado de la direccion. El RLO se utiliza para mantener seguimiento del estado del renglón.

Page 2: 1.rlo  resultado logico de la operacion

EL programa AWL equivalente seria el siguiente:

1. Al iniciar el primer chequeo el bit /FC es cero por lo que una instrucción Y lógica reflejará el bit de

estado (STA) hacia el Resultado de Operación lógica (RLO) . En este caso, la dirección de E 1.0 es 1 por lo que el

STA es 1 y el resultado de la lógica (RLO) será 1. Es decir, en la primera operación lee el STA de la primera

instrucción y lo copia en el RLO de la primera instrucción.

2. En la segunda línea el bit /FC es ahora 1 que indica que esta línea tiene que usar el RLO de la anterior dirección

I1.0 con el STA de la actual direccion I1.1. Como STA = 1 en I1.1, el RLO de la linea procesada es 1 . Es decir, lee el

RLO de I1.0 (instrucción anterior) y el STA de I1.1 (instrucción actual) y realiza una AND logica, que es lo que dice

la instrucción (si fuese O haria OR logica), y el resultado lo copia al RLO de I1.1 (instrucción actual).

3. Lo mismo ocurre en la segunda línea, pero esta vez de 1 hace que el actual RLO = 0. Es decir, AND entre RLO de

I1.1 y STA de M0.0, almacenandolo en STA de M0.0)

4. La cuarta es la instrucción de asignación que toma el RLO y lo escribe en la direccion/es correspondientes (en

las otras instrucciones las lee –- marcas, entradas --, en asignaciones, set y reset las escribe). En este caso final

RLO = 0 por lo que la salida será OFF. (Si M0.0 fuese 1, entonces la operación se evaluará como TRUE haciendo el

RLO = 1 activando la salida Q1.0).

Page 3: 1.rlo  resultado logico de la operacion

Operaciones de Y lógica.

Esto lo vas a pillar enseguida verás. Imagina que tienes dos entradas que cuando están las dos a true (1), tenemos que activar una salida. La logica sería así:

U E 0.0

U E 0.1

= A 1.0

Es decir, iniciamos el segmento leyendo lo que hay en el E0.0 y le hacemos un AND con el E0.1 y su resultado se lo asignamos a la salida A1.0.

O de otra forma, cargamos el E0.0 en el RLO y luego hacemos un AND de la E0.1 con el RLO y se lo asignamos a la A1.0

Operación O lógica

En buena lógica (nunca mejor dicho), podrías pensar que la forma correcta de hacer un OR sería:

U E0.0

O E0.1

= A1.0

Y eso funcionria bien. Pero la forma más mejór sería haciendo:

O E0.0

O E0.1

= A1.0

¿Por qué?

Lógicamente hacen lo mismo. Pero me gusta más hacerlo así porque de hecho, cuando traduces un OR de KOP a AWL así lo representa. Mejor que escribamos todos de la misma manera ¿no?

Bueno, al grano. ¿Adivinas como actuaría no?

Inicialmente haría un:

Page 4: 1.rlo  resultado logico de la operacion

U E0.0 // O E0.0

Como en el caso anterior leería el estado del E0.0 y lo volcaría en el RLO (imaginemos un cero).

Luego un:

O E0.1

Y aquí haría un OR con el RLO. Imaginemos que el E0.1 estuviera a uno. El resultado del OR sería un bonito uno.

= A1.0

E igualamos el uno a la salida A1.0. ¿Sencilo no? Vayamos ahora con los paréntesis.

NOTA: TENEMOS TODAS LAS OPERACIONES LOGICAS CON PUERTASAND, NAND, OR, NOR, XOR, XNOR, NOT

Paréntesis en AWL en Step 7

Como puedes imaginar, en cuanto queramos realizar combinaciones un poco más elaboradas necesitaremos paréntesis para poder realizar estas lógicas.

Así, dispondremos de las siguientes operaciones:

U( ..) //UN(..) que valdrá para realizar un (N)AND con el contenido interior al paréntesis O(..) // ON(..) que valdrá para realizar un (N)OR con el contenido interior del paréntesis. X(..) // XN(..) que valdrá para realizar una (N)XOR con el contenido interior del paréntesis

En definitiva en lo que se basa es en realizar la combinatoria interior del paréntesis y luego ejecutar la operación asociada al paréntesis.

Los paréntesis pueden anidarse metiendo paréntesis dentro de otros paréntesis. Así, odríamos hacer algo similar a lo anteriores ejemplos:

U(

U E0.0

O E0.1

)

O(

U E0.2

U E0.3

)

= A1.0

Page 5: 1.rlo  resultado logico de la operacion

En este caso primero resolvería la combinatoia interior de los paréntesis por separado y luego realizaría el OR entre el resultado de los paréntesis.

Hay que añadir que el caso del OR es un poco especial ya que si dentro del paréntesis del OR la combinatoria es de AND exclusivamente, el paréntesis se podría haber obviado quedando esa parte así:

O

U E0.2

U E0.3

Y funcionaría exáctamente igual.

Operandos de cierre de consulta

A estas alturas de la película te estarás preguntando… si los resultados de la combinatoria se van almacenando en el RLO, ¿qué pasa después de una igualación si quiero empezar a realizar una nueva combinatoria?

Pues efectivamente después de los operandos:

Igualación (=) Set (S) Reset (R)

Con esos operandos, se cierra la consulta actual y se abre una nueva (además del inicio del programa)

Da igual por tanto lo siguiente que hagas (U,O, UN…) porque lo que se hará es una lectura del operando en el RLO. Es decir, si la siguiente a una igualación es

= A1.0

UN E1.0

U E1.1

= A1.2

Lo que hará es leer el estado de la E1.0, le cambiará el signo y lo cargará en el RLO. No hará un NAND con nadie. Simplemente realizará la carga en el RLO.

Ojo. Un cambio de segmento no es un inicio de programa. Por tanto si la última instrucción de un segmento es la lectura de un bit haciendo un U E0.7, este afecta al siguiente segmento. A efectos prácticos es como si lo hubieras escrito al principio del nuevo segmento

Page 6: 1.rlo  resultado logico de la operacion

FUNCIONES DE RLO EN CONTADORES Y TEMPORIZADORES

Ya hemos visto la logica binaria, pero ahora vamos a emplearlo a temporizadores y contadores. ¿¿Os habeis preguntado porque cuando cargamos un temporizador SE sigue contando?? La primera idea es que se siga CUMPLIENDO LA CONDICION….Pues la respuesta es que mientras el RLO no cambie sigue contando.

De ahí que si solo creemos que el programa funciona “CUMPLE CONDICIONEJECUTA INSTRUCCIÓN” la respuesta esta mal, pues en cada vuelta de ciclo de programa, cuando le toque evaluar la misma instruccion deberia CARGAR DE NUEVO el temporizador, pero no lo hace. Y lo mismo ocurre con los contadores.

DE HECHO, UN PRIMER PROBLEMA DE PROGRAMACION RESIDE EN QUE DEBEMOS PROVOCAR UN CAMBIO DE RLO PARA QUE FUNCIONEN CIERTAS CONDICIONES COMO QUEREMOS, O VICEVERSA.

UN SEGUNDO PROBLEMA ES QUE LAS OPERACIONES DEBEN TENER SIEMPRE EL FORMATO CONCRETO DE DATOS PARA LA OPERACIÓN A REALIZAR.

¿Qué es un set, reset y asignacion en AWL?

Un SET no es mas que fijar a uno una variable booleana. Como la has fijado, esta variable seguirá a uno aun cuando las condiciones de ponerla a uno desaparezcan.

Se diferencia de una igualación (asignacion) en que en esta, el resultado final es dependiente en todo momento de las condiciones para estar a uno o a cero. Mientras que todas las condiciones se cumplan la variable estara a uno. Cuando una o varias de las condiciones no se cumpla, la señal cae, sera false, 0.

Aquí no. Una vez dadas las condiciones la señal estará a uno indefinidamente… o hasta que se le haga un RESET. Y es que el RESET lo que hace es fijar a cero la variable. Como en el caso anterior, aunque las condiciones de reset desaparezcan, la señal seguirá a cero y no recobrará su estado de uno hasta un nuevo SET.

¿Qué pasa si se dan ambas condiciones, SET y RESET en AWL?

Pues lo primero que habría que darte un capón por hacer un programa en el que el set y reset se de simultáneamente.

¿Puede darse ese caso? Porsupuestísimo que sí.

¿Es grave? No conozco a nadie que haya enfermado de ello, pero mejor evitarlo.

¿Qué pasa si se da? La respuesta seguro que la sabes. Depende.

¿De qué depende ? De según como se ejecute todo depende… .

Como bien sabes, si ambas condiciones se dan simultáneamente y seguidas una de otra, la que sobrevivirá del envite será la segunda.

Page 7: 1.rlo  resultado logico de la operacion

¿Qué pasa si mezco Set, Reset e igualaciones?

Espero que esto no se te haya pasado siquiera por la cabeza… cárcel directamente. Punto. Y sin galletas en el desayuno hasta nuevo aviso.

Vale, vale… pero ¿qué hay del SET y RESET en AWL?

O E0.0

O E0.1

S A 1.0

U E0.2

U E0.3

R A1.0

¿Chupado no?

Como bien imaginarás, la señal A1.0 se pondrá a uno, cuando el OR formado por la E0.0 y E0.1 de como resultado un uno poniendo el RLO a uno.

Igualmente, la A1.0 se podrá a cero, cuando el AND de la E0.2 y E0.3 se ponga a uno poniendo el RLO también a uno haciendo por tanto el reset.

En definitiva, el Set y el Reset se ejecutarán forzando la marca o salida en una dirección u otra, cuando el RLO esté a uno y pasando olímpicamente del Set o Reset cuando el RLO esté a cero.

¿Fácil no?

Forzado del RLO – SET y CLR

Unas instrucciones muy interesantes son las de forzar el RLO, es decir, cargar en el RLO un cero o un uno de forma incondicional hasta que haya una nueva operación de combinatoria booleana:

SET: Fijaremos con ello el RLO a uno CLR: Fijaremos con ello el RLO a cero

Por ejemplo:

U E0.1

U E0.2

SET

= A1.0

Page 8: 1.rlo  resultado logico de la operacion

¿Cuánto valdrá A1.0?

Pues efectivamente, la salida A1.0 estará forzada a uno ya que da igual lo que pase con la combinación de las dos entradas ya que luego se fuerza el RLO a uno y se iguala su valor a la A1.0

Flancos en AWL

Finalmente vamos a ver los pulsos. Hay dos:

Positivo (FP) Negativo (FN)

Los pulsos como bien sabes son instrucciones que ponen el RLO a uno cuando se cumple el escalon de subida de cero a uno (el positivo) o que el RLO previo pase de uno a cero (el negativo).

Necesitan una marca auxiliar que es la que almacena la información de cómo estaba el RLO en el ciclo anterior.

Mejor con un ejemplo:

U E0.0

FP M1.0

= A1.0

Lo que hará este mini ejemplo será: Mientras que la marca E0.0 esté a cero, la el RLO tras el pulso estará a cero. Cuando la entrada pase a uno, entonces en ese ciclo de scan el pulso pondrá el RLO a 1 haciendo que la salida A1.0 se active en ese ciclo de scan. En el ciclo siguiente aún estando la entrada a uno, la salida volverá a cero ya que el RLO a la salida del pulso estará a cero.

Si hicieramos un ejemplo similar con el flanco negativo:

U E0.0

FN M1.0

= A1.0

El comportamiento sería igual salvo que esta vez, el RLO después del FN se pondrá a uno cuando la señal de la E0.0 pase de estar a uno a estar a cero. Análogamente al caso anterior sólo estará a uno en ese ciclo de scan, volviendo a cero en los sucesivos con independencia de que la salida siga a cero en este caso.