You are on page 1of 4

157 of 305.

Unidad 3 Operaciones de byte, palabras y dobles palabras

Veamos cmo se programan las instrucciones de desplazamiento en KPO y en FUP:


Solucin en KOP

OBI r M ain F r o g r a * Sveep (C y c l e )


jS Nuevo segmento
3 jjJ Operaciones lgicas con fcrts
H<n Contar acin
ffi Conversin
k f Contare
S w j Llamada DB
Salto
< iii Nmeros en coma fija
;n| Nmeros en coma flotante
Transferencia
v i Control del programa
a l Desplazarmento/Rotacin
O SWJ
Q SHR_DI
Q SHL_W
O StW.W
O 5H..DW
0 SHRJ5W
0 ROl.DW
0 ROR.DW
F ig . 99

Las instrucciones de rotacin y desplazamiento las tenemos en la carpeta: "Des


plazamiento / Rotacin". Las instrucciones son equivalentes a las de AWL. Siempre
como parmetro EN en KOP podemos poner una condicin para que se ejecute.
En el ejemplo el parmetro IN es la palabra que queremos desplazar. El parmetro
OUT es donde se almacenar la palabra desplazada. En el parmetro N deberemos
escribir la cantidad de posiciones que queremos desplazar. Por definicin en el pa
rmetro N se espera una palabra y no un entero. Si nos situamos encima con el ra
tn veremos qu tipo de dato se espera. Nosotros queremos desplazar la palabra
una posicin pero no podemos escribir directamente un 1 porque es un entero y
no una palabra. Tendremos previamente que poner un 1 en una palabra y despus
utilizar esta palabra como parmetro. Como ya dijimos al principio de este manual,
el AWL es ms verstil y ofrece ms posibilidades al programador.
El programa en FUP sera equivalente al segmento en KOP.

-J x |
"Main F ro g ra a Soeep (C y c l e )*
Nuevo segmento Coaentario:
Operaciones lgfcas con bits
Comparacin
Conversin Segr X: T tu lo :
Contaje
Llamada D6
Salto
Nmeros en coma fija
Nmeros en coma flotante
Transferencia
Control del programa
Desplazamiento/Rotacin
O SHRJ
O SHR.DI
0 SH_W
0 St_W
0 SH._DW
0 SHRJJW
0 ROL_DW
0 ROR.OW
F ig . 1 0 0

161
www.FreeLibros.me
159 of 305.

Unidad 3 Operaciones de byte, palabras y dobles palabras

En la siguiente FC vamos a meter un 1 en el lugar donde van las botellas. Es decir


cada vez que la clula fotoelctrica detecte que ha pasado una botella colocar un
1 en su lugar correspondiente. Luego desde otra FC ya veremos cmo tenemos que
mover ese 1.
Para simular las posiciones por donde circulan las botellas vamos a tom ar una pala
bra de marcas en la que cada bit simular una posicin:

10.7 10.6 10.4 10.3 10.2 10.1 10.0 | 10.7 10.6 10.S 10.4 | 10.3 | 10.2 10.1 10.0

MW 10
La fotoclula la tenemos en la posicin del bit M 10.5. Las mquinas se encuentran
en las posiciones de los bits M i l . 6, M i l . 4 y M i l . 3.

FC 2: Poner botellas (b it a 1)
U E 0.0
S M 10.5

En principio ponemos una marca a 1 con un SET. No queremos que este 1 se vaya
porque la fotoclula parpadee o se mueva la botella. Ponem207 word autoraos un
uno fijo, y despus otra FC ya mover este bit a la siguiente posicin.
En otra FC vamos a programar el desplazamiento de los bits.

FC 3: Desplazamiento a derechas
L MW 10
SLW 1

T MW 10

En otra FC vamos a hacer la activacin de las mquinas cuando lleguen las botellas
debajo de ellas.

FC 4: Activacin de mquinas
U M 11.6
= A 4.0
u M 11.4
= A 4.1
u M 11.3
s A 4.2

Como hemos podido comprobar, la programacin de cada FC es muy sencilla. Pro


gramamos las funciones sin preocuparnos de cuando se tienen que ejecutar. Es
ahora desde el OBI cuando nos encargaremos de esta tarea.

163
www.FreeLibros.me
160 of 305.

Unidad 3 Operaciones de byte, palabras y dobles palabras

OB 1: Bloque de organizacin
UC FC 1 //Siempre estamos generando pulsos

UC FC 2 //Siempre miramos si llega botella para colocar el 1

u M 0.0 //Slo cada segundo

CC FC 3 //Hacemos el desplazamiento de bits

UC FC 4 //Siempre miramos si hay botella para activar las mquinas

Imaginemos que ahora enviamos todo esto al PLC y no funciona bien. Hay una
mquina que no se activa. Entonces slo tendremos que comprobar la FC4. Sa
bemos que el resto del programa est bien. Es mucho ms sencillo de localizar
errores en la programacin estructurada.
Ejercicio propuesto, resolver este ejercicio en KOP y en FUP con las instrucciones
que hemos visto en ejercicios anteriores.

3.8 Diferencia entre FC con


y sin parmetros
/ Ejercicio 8: Diferencia entre FC c o n y sin parm etros

TEORA
LLAMADAS A LAS FC CON PARMETROS. OPERACIONES ARITMTICAS

Cuando programamos una FC tenemos que llamarla desde algn sitio para que
se ejecute. Ya hemos visto como crear una FC sin parmetros y hemos visto dos
instrucciones para llamarlas. En este ejercicio vamos a ver que tambin podemos
crear FC con parmetros y las instrucciones de llamada sern diferentes.
A continuacin vamos a hacer una FC que sume 2 + 3, y otra FC que sume dos
variables A + B.
Cuando estamos sumando 2 + 3, estamos haciendo una FC sin parmetros. Siem
pre suma lo mismo y el resultado siempre ser 5.

Como ya hemos visto, para llamar a esta FC podemos utilizar dos instrucciones:

UC FC 1 Llamada incondicional.
CC FC 1 Llamada condicional.

De este modo se ejecuta la funcin de manera condicional o incondicional, con


los datos que hemos definido dentro de la propia FC.

164
www.FreeLibros.me
161 of 305.

Unidad 3 Operaciones de byte, palabras y dobles palabras

Cuando estamos sumando A + B, estamos haciendo una FC parametrizable. Cada


vez que la llamemos, tendremos que darle unos valores a A y a B para que el au
tmata sepa lo que tiene que sumar. El resultado variar dependiendo de lo que
valgan A y B. La funcin nos devolver tambin una variable.
Vamos a ver como creamos una FC con parmetros. En principio nos creamos una
carpeta de programa como hemos hecho hasta ahora y creamos una FC1. Una vez
entremos en la FC tenemos que abrir la tabla de variables que est arriba de la FC.
Entre la barra de herramientas y la zona de programacin. Por defecto esta tabla
viene cerrada. Tendremos que situarnos con el ratn en la lnea que divide la barra
de herramientas de la zona de programacin y abrir la tabla de variables.
En principio veremos la tabla vacia con este aspecto:

I
g#|2-IH| al ilitelfel I-
I ttlAlF Sj ||
| I
| n [g ~;|-
n-l
-if
l-o
l lul-l-l ?|

C o n te n id o d
: '
IntornoMnttrmc\TIH P'
N or jr e jTipode datosDireccin Coint*rio
o- IN a
t> OUT
t INO UT
TEHP
g
:O- R ETUPN

FC1 :Titulo:

C o m e n ta rio :
F ig . 102

En el ejemplo que hemos propuesto, necesitamos dos variables de entrada A y B


y una variable de salida SUMA. Las variables de entrada las definimos en el grupo
de IN y la de salida en el grupo de OUT.

Contenido de: 'Entorno\Interface\IN'


B @ Inter face Nombre Tipo de datos Comentario
B O - IN TU VALOR_A int
13 VALOR_A tJ V A L O R _ B inc
tU VAL0R_B u
t > OUT
O IN_0UT
13- TEHP |

F ig . 1 0 3

A las variables no las podemos llamar A y B porque A son las salidas del autmata.
No podemos utilizar simbologa reservada por el sistema. Por eso hemos llamado
a las variables VALOR_A y VALOR_B.
Lo mismo tenemos que hacer con la variable de salida que llamaremos SUMA.
Con estas variables definidas en la tabla, podemos hacer programar la funcin de
la siguiente manera:

FC 1: Suma de dos variables

L VALOR_A

L VALOR_B

+1

T SUMA

165
www.FreeLibros.me