Documente Academic
Documente Profesional
Documente Cultură
Captulo 2
EJERCICIOS ................................................................................... 1
2.1 Indice de ejercicios ..............................................................................
Pilar Mengual
pilarmengual@hotmail.com
Pgina 0
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pgina 1
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
19.- Falncos.
20.- Ajuste de valores analgicos.
21.- Ejemplo con UDT.
22.- Operaciones lgicas con palabras.
23.- Ejemplo de alarmas.
24.- Seleccionar tiempos.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 2
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Hasta ahora hemos trabajado con bits. Escribamos instrucciones del tipo:
0.0
4.0
Si quisisemos hacer esto mismo pero con todas las entradas y todas las
salidas, podramos hacerlo bit a bit, o trabajando directamente con la palabra de
entradas y la palabra de salidas en bloque.
Hemos visto como podemos acceder a los bits de entrada, salida o marcas.
E 0.0
A 4.0
M 0.0
EB 0
AB 4
MB 0
EW 0
AW 4
Pilar Mengual
pilarmengual@hotmail.com
MW 0
Pgina 3
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
ED 0
AD 4
MD 0
Instruccin de carga:
Instruccin de transferencia:
Pilar Mengual
pilarmengual@hotmail.com
Pgina 4
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Vamos a hacer una prueba de lo que podemos hacer con est instruccin.
Queremos que lo que metamos por las entradas nos salga por las salidas.
Para ello tenemos dos formas de hacerlo. Una forma sera pasar los bits uno
a uno. Por ejemplo:
0.0
4.0
0.1
4.1
.....
.....
Otra forma de hacerlo sera utilizando las instrucciones de carga y
transferencia.
EW
AW
BE
Con esto lo que estamos haciendo es una copia de las entradas en las
salidas.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 5
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Hay que tener en cuenta que las operaciones de carga y transferencia son
incondicionales. Esto quiere decir que no debemos hacer programas como el
siguiente:
0.0
MW
AW
Pilar Mengual
pilarmengual@hotmail.com
Pgina 6
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Solucin en KOP
Solucin en FUP
En
esta
instruccin
podemos
encontrar
alguna
diferencia
entre
la
Pgina 7
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Adems tenemos el parmetro ENO. Si rellenamos aquello con algn bit, ste
se activar cuando se est realizando correctamente la funcin que tenemos
programada. En este caso la carga y transferencia.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 8
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
C#......
S5T#......
..........
2#........
B#16#......
W#16#.......
DW#16#.........
Pilar Mengual
pilarmengual@hotmail.com
Pgina 9
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SPA:
Salto absoluto.
SPB:
Salto condicional.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 10
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Definicin
de
metas.
Final
BEA.
Formatos
binario
hexadecimal. Saltos.
SOLUCIN EN AWL
U
0.0
ZV
0.1
ZR
1.0
ZV
1.1
ZR
<I
SPB MENO
>I
SPB MAYO
==I
SPB IGUA
BEA
MENO:
W#16#5555
Pilar Mengual
pilarmengual@hotmail.com
Pgina 11
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
AW
BEA
MAYO:
W#16#FFFF
AW
BEA
IGUA:
AW
BE
Hay que tener en cuenta siempre poner un BEA antes de empezar con las
metas, y otro BEA al final de cada una de las metas.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 12
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Solucin en KOP:
Pilar Mengual
pilarmengual@hotmail.com
Pgina 13
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 14
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 15
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 16
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Solucin en FUP:
Pilar Mengual
pilarmengual@hotmail.com
Pgina 17
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 18
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 19
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 20
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 21
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Tenemos que tener en cuenta que esta columna de valor actual tambin la
transferimos tanto de ONLINE a OFFLINE como al contrario.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 22
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 23
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 24
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Una vez lo tenemos creado veremos que sale el icono del DB junto con los
dems bloques.
El DB es una tabla en la que tenemos que rellenar los datos. Tenemos varios
campos para rellenar.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 25
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 26
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
VALOR_1
INT
VALOR_2
REAL
3.0
VALOR_3
WORD
W#16#0
Pilar Mengual
pilarmengual@hotmail.com
Pgina 27
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
AUF DB
DB1.DBW
DBW 0
MW
10
MW
BE
10
BE
DATOS.VALOR_1
Pilar Mengual
pilarmengual@hotmail.com
Pgina 28
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
AUF DB
DBD 2
MD
100
DB1.DBW6
BE
Vamos a entrar en el DB y vamos a ver como vemos este nuevo dato que
hemos introducido.
Vemos que el DB tiene una nueva columna que es la de datos actuales. Aqu
veremos que tenemos el nuevo valor. Esta pantalla no refresca valores. Hace una
lectura cuando abrimos la ventana. Si hacemos algn cambio y queremos
visualizarlo, tendremos que cerrar y abrir de nuevo la pantalla.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 29
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Para ver el dato que acabamos de introducir, tenemos que hacer la operacin
en ONLINE. Si vamos a ver datos en OFFLINE, veremos los datos actuales de la
CPU del PC. El PC no ha ejecutado programa. Veremos que los valores iniciales
son los mismos que los actuales.
Tenemos que tener en cuenta que estos valores se guardan en disco duro.
Cada vez que transfiramos el programa bien de OFFLINE a ONLINE o viceversa,
tambin se transfieren los valores actuales.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 30
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Tenemos una cinta transportadora que lleva los productos. Lo que queremos
es que los productos que se salgan del peso estipulado tanto por arriba como por
abajo, se desechen.
E E 1.2
M
BUENA
P
E1.0
A 4.1
E1.1
MALA
A 4.2
A 4.0
A 4.7
Para ello vamos a tener en un mdulo de datos los lmites de peso tanto
superior como inferior.
Con el byte 0 de entradas vamos a simular los pesos de las piezas que
circulan por la cinta. Queremos que cuando la pieza tenga un peso comprendido
entre los lmites correctos se encienda una luz que nos indique que la pieza es
correcta. Cuando pase una pieza que su peso se salga de los lmites queremos que
Pilar Mengual
pilarmengual@hotmail.com
Pgina 31
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
nos indique una luz que la pieza es mala y a la vez que se abra una trampilla para
que la pieza salga de la cinta.
SOLUCIN AWL
U
1.0
4.0
1.1
4.0
//Para la cinta
1.2
SPB M001
R
4.1
4.2
4.7
BEA
M001: L
L
//Salta a la meta 1
//Si no hay pieza termina el programa
EB
DB1.DBW0
<I
0.0
EB
DB1.DBW2
>I
0.1
0.0
0.1
4.1
4.2
NOT
Pilar Mengual
pilarmengual@hotmail.com
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
4.2
4.1
4.2
4.7
BE
Hemos visto como hacer una carga y una transferencia condicionada por una
entrada. Para hacerlo condicional lo podemos hacer de dos maneras. Bien lo
hacemos como en este ejemplo utilizando metas, o bien lo hacemos con llamadas a
otros mdulos de modo condicional.
Para completar el ejercicio, nos falta hacer el mdulo de datos donde vamos
a guardar el lmite superior y el lmite inferior de pesado para las piezas.
En el DB1 vamos a crear dos palabras de datos. Tenemos que definir un tipo
para cada uno de los datos. En este caso van a ser dos nmeros enteros. Diremos
que son de tipo (INT).
Tambin podemos suponer que son valores reales. Para ello lo deberamos
haber tenido en cuenta a la hora de programar.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 33
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Para guardar los datos deberamos haber utilizado la doble palabra de datos
0 y la doble palabra de datos 4.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 34
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Queremos que si la entrada E 0.0 est activa funcione una parte del
programa. Y que si no est activa funcione la otra parte del programa.
Para crear las 2 FCs, lo hacemos del mismo modo que hicimos para crear un
nuevo DB. En este caso insertamos una funcin.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 35
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Una vez tengamos creadas las dos FCs ya podemos entrar en ellas y hacer
su programa.
SOLUCIN AWL:
OB1:
U
0.0
CC
FC
UN
0.0
CC
FC
1.0
4.0
1.1
4.1
//Llamada condicional.
//Llamada condicional.
BE
FC1:
BE
FC2:
BE
Hemos visto que para hacer llamadas condicionales a FCs sin parmetros
en AWL, tenemos la instruccin CC. Si quesiramos hacer una llamada a una FC
sin parmetros pero de modo incindicional, utilizaramos la instruccin UC.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 36
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 37
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Hemos visto como podemos hacer un DB dato a dato. Si son pocos datos los
que queremos hacer, los hacemos uno a uno, pero tambin tenemos la posibilidad
de crear un DB con un nmero predefinido de palabras de datos.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 38
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
En esta ayuda nos explica lo que hace la SFC 22, y nos dice que al llamarla
se nos va a pedir una serie de parmetros. Nos explica lo que significa cada
parmetro.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 39
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 40
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SLW
SRW
SLD
SRD
RLD
RRD
MW
SRW 2
T
MW
Pilar Mengual
pilarmengual@hotmail.com
Pgina 41
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0011
0101
00
Pilar Mengual
pilarmengual@hotmail.com
Pgina 42
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SOLUCIN EN AWL:
OB1
U
0.0
4.0
UN
0.0
S5T#500MS
SE
0.0
0.0
UN
0.1
CC
FC
Pilar Mengual
pilarmengual@hotmail.com
//Se ir a ejecutar la FC 1
Pgina 43
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
4.7
0.1
4.0
0.1
0.0
0.1
CC
FC
//Ejecuta la FC 2
BE
Pilar Mengual
pilarmengual@hotmail.com
Pgina 44
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 45
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 46
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Solucin en FUP
Pilar Mengual
pilarmengual@hotmail.com
Pgina 47
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 48
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 49
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Queremos que cuando las botellas lleguen debajo de las mquinas, stas se
pongan en marcha, pero si llega un hueco no queremos que las mquinas acten.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 50
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 51
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Ahora nos queda organizar cundo se tienen que efectuar cada una de estas
FC. Desde el OB1 diremos cuando se tiene que ejecutar cada una de las FC.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 52
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Para programar cada una de las FCs slo nos preocupamos de programar la
maniobra o la accin que queremos hacer. No nos preocupamos de cuando la tiene
que hacer.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 53
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Cuando programamos una FC tenemos que llamarla desde algn sitio para
que se ejecute.
UC
FC
Llamada incondicional.
CC
FC
Llamada condicional.
Para darle estos valores, lo que tenemos que hacer es llamar a la FC con
CALL FC 1.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 54
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 55
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Vamos a hacer dos FC similares. Van a ser dos bloques que van a realizar la
misma operacin pero en una de ellas va a ser con unos valores fijos, y en la otra va
a ser parametrizable.
Siempre que se ejecute est funcin nos sumar los mismos valores.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 56
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Para que la funcin se ejecute, alguien tendr que llamarla. Si no, la CPU
slo ejecuta la OB1.
Desde la OB1 tendremos que hacer una llamada a una FC sin parmetros.
OB1
U
0.0
CC
FC
BE
OB1
UC
FC
BE
Son los dos tipos de llamada que tenemos para funciones sin parmetros.
Con el primer bloque accedera a la FC 1 siempre y cuando estuviera la entrada E
0.0 activa.
Pgina 57
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Vamos a ver como podramos hacer una FC parametrizable. Esto quiere decir
que no siempre tendra que sumar los mismos valores.
Tenemos una lnea de IN, otra de OUT, otra lnea de IN/OUT y otra lnea de
TEMP.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 58
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
La lnea de IN/OUT sirve para definir los valores que dentro de la funcin
pueden ser entradas y salidas.
La lnea de TEMP sirve para definir valores intermedios. Son valores que no
son entradas ni salidas de la funcin. Son resultados intermedios que no nos
interesa ver desde fuera de la funcin.
A cada una de las variables, tenemos que definirle un tipo. En este caso son
todas de tipo entero.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 59
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
De este modo tenemos una funcin que suma nmeros enteros pero no le
hemos dicho qu nmeros. Cada vez que la utilicemos sern nmeros distintos.
A la hora de llamar a la funcin tendremos que decirle cuanto vale cada valor.
Vemos que para hacer una llamada a una FC con parmetros, hay que
utilizar la instruccin CALL.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 60
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Slo nos pide los valores de lo que hayamos definido como entrada o como
salida.
Al hacer esta llamada, la FC 1 se ejecuta con los valores que le hemos dado.
Hace la suma correspondiente, y el resultado nos lo deja donde le hemos dicho.
Veamos como hacemos una FC que sume en KOP y en FUP y vemos como
la llamamos y le rellenamos los parmetros.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 61
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Solucin en KOP
Pilar Mengual
pilarmengual@hotmail.com
Pgina 62
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 63
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Veamos las razones por las cuales se gastan estos sistemas de numeracin.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 64
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SISTEMA DECIMAL:
102
101
100
Pilar Mengual
pilarmengual@hotmail.com
Pgina 65
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SISTEMA BINARIO:
22
21
20
El 110 binario, representa el 6 decimal. Vemos que tenemos que calcular una
serie de potencias y despus efectuar la suma. Si tuviramos que traducir el
nmero: 11101111000101011, nos llevara un rato ver a qu nmero decimal
corresponde.
1
1
Pilar Mengual
pilarmengual@hotmail.com
2
0
Pgina 66
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Vamos dividiendo por dos hasta que el resultado nos de cero. Los restos de
abajo hacia arriba son el nmero en binario. En este caso nos queda 110.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 67
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SISTEMA HEXADECIMAL:
162
161
160
Pilar Mengual
pilarmengual@hotmail.com
Pgina 68
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
689
16
049
43
01
16
11
2
2
16
0
11
0010
1011
0001
Pgina 69
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0001
1001
0010
0001
1001
0010
Pilar Mengual
pilarmengual@hotmail.com
Pgina 70
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0010
0111
Tenemos que tener en cuenta que no es lo mismo binario que binario BCD.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 71
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 72
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
S5T#5S
C#10
Para poder hacer esto, existen instrucciones como las que siguen:
LC
LC
Pilar Mengual
pilarmengual@hotmail.com
Pgina 73
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Estas instrucciones hacen una carga de los valores que tengan los
contadores o temporizadores, pero codificada en BCD.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 74
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0.0
S5T#5S
SE
4.0
Al escribir la instruccin
Pilar Mengual
pilarmengual@hotmail.com
Pgina 75
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
S5T#3S
<I
=
4.1
Al poner L
Al poner L
10...........> BCD
Pgina 76
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Evidentemente nos dir que las series no son iguales. La segunda serie nos dir
que corresponde a un nmero mayor.
Para subsanar este problema, tenemos que decirle que haga las dos cargas
en el mismo formato.
S5T#10S
LC
=I
...........
SOLUCIN EN AWL
Pilar Mengual
pilarmengual@hotmail.com
Pgina 77
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0.0
S5T#8S
SE
S5T#5S
LC
4.0
4.1
<I
=
>I
=
BE
Pilar Mengual
pilarmengual@hotmail.com
Pgina 78
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Tenemos que tener muy en cuenta el tipo de datos que estamos gastando y
la operacin que queremos realizar.
Por ejemplo, hay operaciones que son exclusivas de los nmeros reales. No
podremos utilizarlas con nmeros enteros. Por ejemplo no podremos utilizar la raz
cuadrada, ni tampoco podremos utilizar la divisin ni cualquier operacin tpica de
nmeros reales.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 79
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 80
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 81
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Aqu vemos las operaciones que podemos realizar tanto en KOP como en
FUP con nmeros enteros.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 82
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Para realizar otro tipo de operaciones y sobre todo para mezclar operaciones
de nmeros reales con nmeros enteros, nos va a hacer falta muchas veces
cambiar de formato las variables que tengamos definidas.
Adems los nmeros enteros los tenemos en 16 bits y los nmeros reales los
tengo en 32 bits. Tendremos que hacer una transformacin de longitud y luego una
transformacin de formato.
BTI:
ITB:
DTB:
BTD:
DTR:
ITD:
Con estas operaciones, lo que hacemos son cambios de formato sin perder
informacin. El nmero que queda despus de la conversin es exactamente el
mismo que antes de ella solo que en otro formato.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 83
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
RND:
RND+:
RND-:
TRUNC:
MW
10
MW
10
MD
20
MD
30
MD
40
ITD
T
DTR
T
SQRT
T
TRUNC
T
MW
50
Pgina 84
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 85
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0.0
VALOR_A
REAL
4.0
VALOR_B
REAL
8.0
RESULTADO
REAL
Si nos damos cuenta en las direcciones que nos ha asignado, veremos que
cada real ocupa una doble palabra.
#VALOR_A
#VALOR_B
/R
T
Pgina 86
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
OB 1
CALL FC
VALOR_A:= 8.0
VALOR_B:= 4.0
RESULTADO:= MD 0
Los valores que le pongamos tienen que ser reales. Si queremos dividir 8
entre 4 como en este caso, tenemos que escribir 8.0 y 4.0 para distinguir el 8 y 4
enteros del 8.0 y 4.0 reales.
Pgina 87
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 88
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 89
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Hemos tenido que hacer dos cambios de formato. Tenamos que convertir un
entero en un real. En principio un entero est en 16 bits y un real son 32 bits.
Primero hemos hecho un cambio de tamao y luego un cambio de formato.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 90
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
El PLC tiene que decidir las horas de luz y las horas de oscuridad que va a
tener el gallinero.
Se trata de optimizar las horas de luz y las horas de oscuridad para obtener la
mayor cantidad de huevos posible.
Llevaremos
la
cuenta de los huevos que han puesto hoy en un contador, y los huevos que pusieron
ayer en otro contador.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 91
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Si hoy han puesto ms huevos que ayer, supondremos que las gallinas estn
contentas. Entonces lo que haremos ser disminuir en 8 los minutos de luz y los
minutos de oscuridad. De manera que les hacemos el da ms corto.
Si hoy han puesto menos huevos que ayer, supondremos que las gallinas
estn tristes. Entonces lo que haremos ser aumentar en 5 los minutos de luz y los
minutos de oscuridad. De manera que les hacemos el da ms largo.
Si hoy han puesto los mismos huevos que ayer, supondremos que las
gallinas estn indiferentes. Entonces lo que haremos ser disminuir en 1 los minutos
de luz y los minutos de oscuridad. Iremos haciendo el da ms corto poco a poco
hasta que pongan menos huevos.
En principio haremos dos DBs para guardarnos los datos que luego vamos a
utilizar. Haremos un DB que se llame puestas, y all guardaremos los huevos que
han puesto hoy y los huevos que pusieron ayer.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 92
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
FC1
U
0.0
ZV
Pilar Mengual
pilarmengual@hotmail.com
Pgina 93
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0.1
ZR
1.0
ZV
1.1
ZR
PUESTAS.PUESTAS_HOY
PUESTAS.PUESTAS_AYER
BE
FC2
L
PUESTAS.PUESTAS_HOY
PUESTAS.PUESTAS_AYER
>I
SPB CONT
<I
SPB TRIS
==I
SPB INDI
BEA
CONT: L
L
TIEMPOS.MINUTOS_LUZ
TIEMPOS.DATO_CONT
-I
T
TIEMPOS.MINUTOS_LUZ
TIEMPOS.MINUTOS_OSC
Pilar Mengual
pilarmengual@hotmail.com
Pgina 94
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
TIEMPOS.DATO_CONT
-I
T
TIEMPOS.MINUTOS_OSC
BEA
TRIS: L
L
TIEMPOS.MINUTOS_LUZ
TIEMPOS.DATO_TRIS
+I
T
TIEMPOS.MINUTOS_LUZ
TIEMPOS.MINUTOS_OSC
TIEMPOS.DATO_TRIS
+I
T
TIEMPOS.MINUTOS_OSC
BEA
INDI: L
L
TIEMPOS.MINUTOS_LUZ
1
-I
T
TIEMPOS.MINUTOS_LUZ
TIEMPOS.MINUTOS_OSC
-I
T
TIEMPOS.MINUTOS_OSC
BE
Ahora tenemos que hacer la OB1 para decir cuando tiene que acceder a
cada una de las FCs.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 95
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
La FC1 la va a tener que estar haciendo siempre. Siempre tiene que estar
vigilando si hay un nuevo huevo y registrar la cuenta en su correspondiente DB.
La FC2 la tendr que hacer en realidad cada da. Tendramos que hacer un
temporizador con la suma de los minutos de luz y de oscuridad y cuando pase el da
que haga la comparacin y la suma o resta de los tiempos.
OB1
UC
FC
0.0
FP
0.0
CC
FC
BE
Pgina 96
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Hay algunos que coinciden con los que existan en S5. Hay otros que son
nuevos.
SPA y SPB
En S5 son los saltos que utilizamos para saltar entre distintos bloques de
programa. En S7 son los saltos que utilizamos para saltar a otros puntos de
programa siempre dentro del mismo bloque.
SPA y SPB no sirven en STEP 7 para saltar de unos bloques a otros. Para
ello tenemos las llamadas a otras FCs que hemos visto antes. Tenemos las
llamadas condicionales y las llamadas incondicionales.
Pgina 97
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0.0
4.0
SPB M001
SPA M001
0.0
..........
.......
SPBB
SPBNB
SPO SPS
Si al salto SPB le aadimos la letra B, tenemos el salto SPBB. Con este salto,
saltamos cuando se cumple la condicin y adems nos guardamos el valor del RLO
en ese instante.
SPZ
SPP
SPO
SPS
Pilar Mengual
pilarmengual@hotmail.com
Pgina 98
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SPZP
SPU
En el ejemplo que vamos a hacer, si nos salimos del rango no queremos que
haga nada.
pondremos delante la
Pilar Mengual
pilarmengual@hotmail.com
Pgina 99
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 100
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Queremos hacer una mezcla de pintura. Tenemos tres posibles colores para
hacer.
Los colores los van a simular unas palabras de marcas. Es decir si queremos
que se forme el ocre, lo que queremos es que en la palabra de marcas 0 haya un
60, etc.
Pgina 101
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
SOLUCIN EN AWL
FC
0.0
ERRO:
COLOR
#COLOR
SPL
ERRO
INT
SPA ERRO
SPA OCRE
SPA VERD
SPA MARR
MW
MW
MW
BEA
OCRE:
60
MW
20
MW
20
MW
BEA
VERD:
50
MW
50
Pilar Mengual
pilarmengual@hotmail.com
0
Pgina 102
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
MW
MW
BEA
MARR:
40
MW
30
MW
30
MW
BE
CALL FC
COLOR:= 1
BE
Pilar Mengual
pilarmengual@hotmail.com
Pgina 103
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 104
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
EJERCICIO 18: INSTRUCCINES QUE AFECTAN AL RLO (NOT, CLR, SET, SAVE)
DEFINICION Y SOLUCION
TEORA PREVIA: Introduccin sobre las instrucciones.
SAVE: Hace una copia en el registro BIE del valor actual del RLO.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 105
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0.0
0.1
0.2
0.3
0.4
4.0
1.2
1.3
4.1
4.0
BIE
SAVE
O(
4.7
BE
Pilar Mengual
pilarmengual@hotmail.com
Pgina 106
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
KOP
Pilar Mengual
pilarmengual@hotmail.com
Pgina 107
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 108
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Si escribimos:
U
0.0
CC
FC
BE
Si queremos que slo lo haga una vez, deberamos utilizar los flancos.
1.1
FP
0.0
CC
FC
BE
FC1
Pilar Mengual
pilarmengual@hotmail.com
Pgina 109
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
EB
MW
MW
SRW 1
T
AW
BE
1.0
ZV
1.1
ZV
FP
0.0
CC
FC
>I
BE
Pilar Mengual
pilarmengual@hotmail.com
Pgina 110
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
KOP
Pilar Mengual
pilarmengual@hotmail.com
Pgina 111
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
DEFINICIN Y SOLUCIN
TEORA PREVIA: Lectura y escritura de valores analgicos. Conversin formatos.
Dentro del tanque vamos a tener una sonda de nivel con la que queremos
saber los litros de lquido que contiene.
400L
5L
Por otro lado sabemos que nuestra sonda puede medir entre 0 y 27648
tericamente.
Lo primero que vamos a hacer es calcular el valor real al que podemos llegar
con la entrada analgica que tenemos.
Pgina 112
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
PEW 288
MW
10
Lo nico que tenemos que hacer es una regla de tres. Para hacer los clculos
tenemos que tener en cuanta un par de cosas. Lo primero que tenemos que saber
es que los valores reales slo los podemos almacenar en dobles palabras.
Otra cosa importante que tenemos que saber es que no podemos hacer
operaciones de nmeros reales con nmeros enteros. Tenemos que tener mucho
cuidado con los formatos. La lectura de les entradas analgicas son nmeros
enteros.
SOLUCIN EN AWL
FC
IN
VALOR_SONDA
INT
IN
NIVEL_SUPERIOR
REAL
Pilar Mengual
pilarmengual@hotmail.com
Pgina 113
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
IN
NIVEL_INFERIOR
REAL
OUT
VALOR_GRADUADO
REAL
TEMP
V_SONDA_REAL
REAL
TEMP
RANGO
REAL
#VALOR_SONDA
ITD
DTR
T
#V_SONDA_REAL
#NIVEL_SUPERIOR
#NIVEL_INFERIOR
-R
T
#RANGO
#V_SONDA_REAL
26624.0
/R
L
#RANGO
*R
L
#NIVEL_INFERIOR
+R
T
#VALOR_GRADUADO
BE
OB1
CALL FC
VALOR_SONDA:= #PEW288
NIVEL_SUPERIOR:= 400.0
NIVEL_INFERIOR:= 5.0
Pilar Mengual
pilarmengual@hotmail.com
Pgina 114
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
VALOR_GRADUADO:= MD 0
En la doble palabra de marcas podemos ver el valor graduado del nivel que
est midiendo. Es necesario que sea una doble palabra de marcas porque el valor
que queremos observar es un valor real. Es el resultado de operaciones reales.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 115
STEP 7
Introduccin
STEP 7 Nivel II
Pilar Mengual
pilarmengual@hotmail.com
Captulo 2
Pgina 116
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pgina 117
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
DEFINICIN Y SOLUCIN
TEORA PREVIA: Manejo de analgicas.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 118
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Vemos que la FC 105 se llama SCALE. Nos sirve para escalar valores
analgicos. Esto es lo mismo que hemos hecho en el ejercicio anterior.
Lo nico que tenemos que hacer es traer esta funcin a nuestro proyecto y
hacer una llamada. Rellenamos los parmetros que nos pide y ya tenemos la
funcin hecha.
Pgina 119
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
De cada una de esas mquinas tenemos que controlar los datos que hemos
comentado antes.
Para ello nos vamos a crear unos UDT del tipo que nos interese.
Para nosotros el UDT 1 va a ser el tipo de datos que asignaremos a cada una
de las mquinas.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 120
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Ya tenemos definido un tipo de datos. Ahora cada mquina ser de tipo UDT
1.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 121
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 122
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Le llamamos DATOS.
Dentro de cada una de estas lneas, estn implcitas tres plantas dentro de
cada una de las cuales hay cuatro mquinas, dentro de cada una de las cuales hay
tres datos.
Pilar Mengual
pilarmengual@hotmail.com
Pgina 123
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
De este modo, podemos acceder por su nombre al dato que queramos. Por
ejemplo, podemos acceder a la temperatura de la mquina dos de la planta tres del
polgono 1 de la siguiente manera:
DATOS.POLI1.PLANTA3.MAQ2.TEMP
De este modo no tengo por qu saber qu direccin tiene esta lnea dentro
del DB. Accedo a cada cosa por su nombre.
Vamos a ver como ejemplo cmo accederamos a dos de los datos que
tenemos en el DB.
Por ejemplo vamos suponer que queremos poner en marcha una de las
mquinas con la entrada E0.0. (Mquina tres de la planta dos del polgono 1)
Pilar Mengual
pilarmengual@hotmail.com
Pgina 124
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
0.0
= DATOS.POLI1.PLANTA2.MAQ3.MARCHA
PEW 288
DATOS.POLI1.PLANTA1.MAQ1.TEMP
DATOS.POLI1.PLANTA1.MAQ1.TEMP
PAW 288
Pilar Mengual
pilarmengual@hotmail.com
Pgina 125
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
MW
MW
MW
UW
T
Pgina 126
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 127
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Si los dos bits coinciden el resultado ser cero. Si los dos bits son distintos e,
resultado ser 1.
Veamos un ejemplo:
0001_1001_0101_0110
0101_0000_1110_1000
0100_1001_1011_1110
11100010
Pilar Mengual
pilarmengual@hotmail.com
Pgina 128
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 129
STEP 7
Introduccin
STEP 7 Nivel II
Captulo 2
Pilar Mengual
pilarmengual@hotmail.com
Pgina 130
STEP 7
Introduccin