You are on page 1of 16

Bloques de datos DB S7 300/400

Operaciones con DB´s en S7

• En el lenguaje S7, el tratamiento de las variables contenidas dentro de


una DB debe de realizarse preferentemente en simbólico. Esta es la
mejor forma de acceder a una estructura irregular de variables como
puede ser una DB. Para ello, en cuanto se haya creado la DB, se debe
de simbolizar, para que uno pueda acceder a la misma en simbólico.

• Un apunte interesante, es el hecho de que no se puede realizar una


llamada a una variable de una DB que no existiera en el momento
de abrir el bloque que la llama, ya sea una FB, FC o una OB. En otras
palabras, supongamos que tenemos abierta la OB1 y queremos cargar
la DB1.DBD4. Si acudimos a la DB1 y la creamos dicha variable, al
volver a la OB1 no podremos llamarla en formato simbólico hasta que
no cerremos el bloque y lo volvamos a abrir. Esto obliga al
programador a estructurar correctamente sus bases de datos
antes de poder acceder a las mismas.
Tipos de DB S7 300/400

Existen tres tipos distintos de bases de datos o DB´s:


• Normales: una agrupación de variables que pueden ser compuestas o
simples en cualquier orden.
• Asociadas a una FB: La DB está compuesta por los parámetros de
entrada y salida de la FB.
• Asociada a una UDT: La DB está compuesta por los valores
procedentes de una base de datos que actúa como “plantilla”.

La generación de un bloque de datos normal únicamente debe


guardar la regla de que para generar variable de tipo BOOL o BYTE,
es conveniente que se encuentren consecutivas dentro de la DB, ya
que la asignación de memoria dentro de la DB se realiza en formato de
palabra.

- El asociar DB´s a UDT´s se debe de realizar exclusivamente si se


conoce de antemano que no se variará la UDT. Si existe esta
posibilidad, es recomendable utilizar las UDT´s incrustadas dentro
de la DB, método que sí permite actualizar las modificaciones
posteriormente sin necesidad de borrar la base de datos.
Tipos de variables en DB S7 300/400
Como hemos visto, el manejo de DB´s se debe de realizar preferentemente en
simbólico. Es por esto que antes de generar una nueva variable, el Step 7 nos
reclama un nombre simbólico para la misma antes de poder continuar.
El siguiente parámetro importante en una variable de una DB es el tipo de variable.
En Step 7 se agrupan por datos simples, aquellos que no están compuestos de
otros, y datos compuestos, que son agrupaciones de datos simples en un
determinado orden.
Ejemplo DB S7 300/400
Modos de apertura de los DB S7 300/400
Existen dos formas de abrir DB:
· Abrirla al principio de la subrutina mediante la instrucción AUF
· Abrirla en la misma línea de llamada de la variable (p. Ej. L DB1.DBW0).
La segunda manera es un poco más lenta de ejecutarse en el microprocesador del PLC,
pero posee la ventaja de permitirnos trabajar con transferencias de variables entre varias
DB´s de una manera rápida y sencilla.

El primer método, se basa en la función AUF, que nos permite abrir hasta dos tipos de
DB´s a la vez:
· AUF DBx : abrir bloque de datos normal.
· AUF Dix : abrir bloque de datos de instancia.
Por este método no podremos tener nunca más de dos DB´s abiertas a la vez.

El segundo método sigue la siguiente estructura:


Nombre de la db.nombre de la variable
Ejemplos del mismos son:

Consulta de bit: U DB4.DBX 0.0


Activar bit: = DB4.DBX 0.1
Cargar un valor: L DB4.DBW2

Se recomienda utilizar el segundo método, ya que es mucho más claro conocer en todo
momento la procedencia de la variable que se está tratando.
Funciones FC S7 300/400
Funciones (FC)
Las funciones son bloques programables. Una función es un bloque lógico "sin
memoria".
Las variables temporales de las FCs se memorizan en la pila de datos locales.
Estos datos se pierden tras el tratamiento de las FCs. Para fines de
memorización de datos, las funciones pueden utilizar bloques de datos globales.

Como una FC no tiene asignada ninguna memoria, se han de indicar siempre


parámetros actuales. A los datos locales de una FC no se pueden asignar
valores iniciales.

Campo de aplicación:
La FC contiene un programa que se ejecuta cada vez que la FC es llamada por
otro bloque lógico.
Las funciones se pueden utilizar para:
• devolver un valor de función al bloque invocante (ejemplo: funciones
matemáticas)
• ejecutar una función tecnológica (ejemplo: control individual con combinación
binaria).
Funciones FC S7 300/400
Asignación de parámetros actuales a parámetros formales

El parámetro formal es un comodín para el parámetro real, es decir, el


parámetro actual. Los parámetros actuales sustituyen a los parámetros formales
al efectuar la llamada a una FC. A los parámetros formales de una FC se han de
asignar siempre parámetros actuales (p.ej. al parámetro formal "Start" un
parámetro actual "E3.6"). Los parámetros de entrada, de salida y de
entrada/salida utilizados por la FC se depositan en forma de punteros en los
parámetros actuales del bloque lógico que ha llamado a la FC.
Bloques de Función FB S7 300/400
Bloques de función (FB)
Los bloques de función son bloques programables. Un FB es un bloque "con
memoria".

Dispone de un bloque de datos asignado como memoria (bloque de datos de


instancia). Los parámetros que se transfieren al FB, así como las variables
estáticas, se memorizan en el DB de instancia. Las variables temporales se
memorizan en la pila de datos locales.

Los datos memorizados en el DB de instancia no se pierden al concluir el


tratamiento del FB. Los datos memorizados en la pila de datos locales se
pierden al concluir el tratamiento del FB.

Campo de aplicación
Un FB contiene un programa que se ejecuta siempre cuando el FB es
llamado por otro bloque lógico. Los bloques de función simplifican la
programación de funciones complejas de uso frecuente.
Bloques de Función FB S7 300/400
FBs y DBs de instancia
A cada llamada de un bloque de función que transfiere parámetros está
asignado un bloque de datos de instancia.
Mediante la llamada de varias instancias de un FB es posible controlar varios
equipos con un FB. Un FB para un tipo de motor puede controlar, por ejemplo,
diferentes motores, utilizando datos de instancia diferentes para los diferentes
motores. Los datos para cada motor (tales como número de revoluciones,
rampas, tiempo de funcionamiento acumulado, etc.) se pueden memorizar en
uno o varios DBs de instancia.
los parámetros formales de un FB que utiliza los parámetros actuales. Los
parámetros formales están memorizados en el DB de instancia.
Ejemplo de programación estructurada S7
FBs y DBs de instancia
A cada llamada de un bloque de función que transfiere parámetros está
asignado un bloque de datos de instancia.
Mediante la llamada de varias instancias de un FB es posible controlar varios
equipos con un FB. Un FB para un tipo de motor puede controlar, por ejemplo,
diferentes motores, utilizando datos de instancia diferentes para los diferentes
motores. Los datos para cada motor (tales como número de revoluciones,
rampas, tiempo de funcionamiento acumulado, etc.) se pueden memorizar en
uno o varios DBs de instancia.
los parámetros formales de un FB que utiliza los parámetros actuales. Los
parámetros formales están memorizados en el DB de instancia.
Ejemplo de programación estructurada FC S7-300/400

Creación de FC´s sin parámetros.


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 ello vamos a hacer dos módulos FC y desde el OB indicaremos
cuando tiene que acceder a uno y a otro.
-Para crear las 2 FC´s, lo hacemos del mismo modo que hicimos para
crear un nuevo DB. En este caso insertamos una función.

11
Ejemplo de programación estructurada FC S7-300/400
Una vez tengamos creadas las dos FC´s es posible comenzar con el programa
SOLUCIÓN AWL:
OB1:
U E 0.0
CC FC 1 //Llamada condicional.
UN E 0.0
CC FC 2 //Llamada condicional.
BE
FC1:
U E 1.0
= A 4.0
BE
FC2:
U E 1.1
= A 4.1
BE 12
Ejemplo de programación estructurada FC S7-300/400
Planta de embotellado:
En la línea tenemos tres máquinas. Una taponadora, una lacadora y una
selladora. Queremos que cuando las botellas lleguen debajo de las máquinas,
éstas se pongan en marcha, pero si llega un hueco no queremos que las
máquinas actúen. Las botellas pasan de posición a posición cada segundo.
Con la célula fotoeléctrica que tenemos detectamos cuando pasa una botella o
cuando pasa un hueco.
Vamos a resolver el problema utilizando 4 FC´s y una OB1.

13
Ejemplo de programación estructurada FC S7-300/400
En cada FC vamos a programar una de las operaciones que necesitamos
realizar. Después desde la OB 1 diremos cuando necesitamos realizar cada
una de la operaciones.
En la primera FC vamos a hacer un generador de pulsos de un segundo para
poder mover las botellas.

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


cada vez que la célula fotoeléctrica detecte que ha pasado una botella colocará
un 1 en su lugar correspondiente. Luego desde otra FC ya veremos cómo
tenemos que mover ese 1.

14
Ejemplo de programación estructurada FC S7-300/400

En otra FC vamos a programar el desplazamiento de los bits

En otra FC vamos a hacer la activación de las máquinas cuando lleguen las


botellas debajo de ellas.

15
Ejemplo de programación estructurada FC S7-300/400

Ahora nos queda organizar cuándo se tienen que efectuar cada una de estas
FC. Desde el OB1 diremos cuando se tiene que ejecutar cada una de las FC.

En la programación estructurada, hacemos cada cosa en bloque. De


este modo la programación se hace mucho más sencilla.
Para programar cada una de las FC´s sólo nos preocupamos de
programar la maniobra o la acción que queremos hacer. No nos
preocupamos de cuando la tiene que hacer.
Después desde la OB1 ya pensaremos cuando se tiene que
ejecutar cada una de las operaciones que hemos definido.
16

You might also like