Variables en Step 7 (I) – Marcas y DB

 Tipos de variables en Step 7

variables step 7 marcas DB

Las variables son áreas de memoria donde podemos almacenar información. A estas variables se le pueden asignar diferente tipos de datos.

Hay variables que ya están predefinidas como pueden ser las entradas (E/I) o las salidas (A/O) o las marcas. Pero el usuario puede definir otro tipo de variables donde almacenar otro tipo de datos, como fechas o cadenas de caracteres por ejemplo. Este tipo de variables por lo general se almacenarán y gestionarán a través de DB

Por otro lado tendremos temporizadores y contadores. Con mucha diferencia se usan más los temporizadores que los contadores como ya veremos.

Comencemos en la entrada de hoy, con las marcas y  los DB

Marcas y DBs en Step  7

Las marcas (M) son bits internos a la CPU. El tamaño del área de marcas dependerá de la CPU ya que dependiendo del modelo tiene más memoria interna o menos.

Las marcas pueden en forma de:

-Bit, por ejemplo M0.0

-Byte (8bits), por ejemplo MB0

-Word o palabra(16bits), por ejemplo MW0

– Doble palabra (32bits), por ejemplo MD0

Todos los bits de marca están en estado nulo cuando se arranca la CPU (se pasa de estado STOP a RUN). Esto es así salvo que se haya configurado la CPU para que parte de las marcas sean remanentes, esto es, que mantengan su valor aun parando el programa o incluso apagando la CPU (mientras que dure la batería de esta).

Los Bloques de Datos (DBs) pueden ser utilizados en el programa para salvar información en la CPU. Tienen una capacidad de memoria de hasta 8 KBytes ( 8192 Bytes ).Existen dos tipos de Bloques de Datos. DBs Globales , en los cuales todos los OBs, FBs y FCs pueden guardar o leer datos y DBs de Instancia, los cuales se encuentran asignados a un FB en particular.

En los DBs, se pueden almacenar diferentes tipos de datos (p.e. BOOL o WORD ) de manera aleatoria. La estructura de un DB se genera a través de la herramienta Editor KOP/ AWL//FUP.

Los tipos de datos que se pueden almacenar en un DB son muy variados pueden ir desde boolenas, bytes o Word a almacenar tiempos o fechas pasando por números reales o caracteres.

Como puedes observar la variedad de tipos de variables es mayor en un DB que el uso de las marcas. En futuras entradas veremos más en profundidad qué se pueden hacer con los DB ya que son una herramienta muy potente para el almacenamiento de datos.

En general, y bajo mi punto de vista, las marcas han de ser usadas para la parte puramente de programación, como  variables globales pero temporales y que no necesitan estar estructurados (como pueda ser una receta del proceso).

En un porcentaje muy alto, vas a usar las marcas en su estado de bit, como entero o real, y en menor medida el resto de sus usos (Word, BCD etc).

Los DB me parecen más adecuados para el almacenamiento de datos del proceso como pueden ser almacenamiento de la receta (donde habrá cadenas de caracteres) o de los estados de la máquina (temperatura, presiones etc) que luego vayan a ser mostradas en una pantalla HMI.

También será oportuno usar los DB para intercambio de información entre PLC ya que al ser en general un gran volumen de datos, es más fácil de mantener. Por otro lado seguramente vas a intercambiar datos de todo tipo (cadenas de caracteres, tiempos…) cosa que es mucho más fácil de gestionar a través de un DB.

En futuras entradas veremos los diferentes usos que se pueden dar y cómo usar cada uno de ellos.

Un saludo,

Referencias:

[unordered_list style=”bullet”]

[/unordered_list]

Acerca de Iñigo Gútiez

Ingeniero industrial por la Escuela de Ingenieros Superiores de Bilbao. Trabajo como ingeniero de proyectos y automatización en Guardian Industries

Te puede interesar

Direccionamiento indirecto

Direccionamiento indirecto en Step 7 (I) – Memoria y punteros a área

Para empezar con el tema del direccionamiento indirecto, vamos a explicar una serie de conceptos …

10 Comentarios

  1. Estimado

    Siempre me ha llamado la atencion, el aprender a programar con DB globales y de instancias, sin embargo, cuando he definido un listado de datos en un DB y luego necesito modificarlo o eliminar alguno de la lista, las que estan hacia abajo se modifica la numeracion del resto de mis variables mi pregunta es ¿ Como usa este potente funcion?

    saludos

  2. Hola
    Una vez generado el DB, no puedes cambiar la estructura sin tener en cuenta esos cambios y lo que implica.

    Imagina que creas un DB con 1 real y un entero.

    Cuando tu accedes al DBW4, El PLC no sabe si es un entero o no. El solo ve 16 bits. Que sea tratado como un INT solo depende de ti.

    Quiero decir con ello, que tu puedes hacer tranquilamente un L DBD2 cogiendo los dos ultimos bytes del real y los dos bytes del entero, lo cual si lo tratas como un número es una auténtica aberración para ti, pero al PLC no se le cambia el color.

    Con ello quiero decir, que una vez creada la estructura no se puede deshacer sin implicar muchos cambios, porque cuando tu accedes al DW10, al PLC no le importa si has cambiado la estructura y has borrado variables por delante o si has añadido nuevas… simplemente es una dirección de memoria y ejecutará las instrucciones sobre el DW que tu le indiques.
    Es decir, y por no meter más rollo, las acciones se realizan sobre las direcciones absolutas, no sobre el nombre simbolico. Así que no puedes insertar variables nuevas o quitar intermedias sin afectar el resultado.

    Un saludo

  3. Hola los DB son muy utiles si utilizas programación por simbolos no importa que modifiques tus DB, por ejemplo yo utilizo en gran medida programación en SCL y me direcciono por medio de simbolos no de direcciones absolutas.

    Un gran uso que he encontrado con los DB es utilizarlos para intercambiar informacion con un HMI/ SCADA , estos manejan una forma ordenada obtener los datos y facilitan la creacion de tags desde la HMI.

    Como consejo cuando estes llenando un DB deja espacio entre simbolos. Por ejemplo el que en un DB quieras guardar la informacion de 4 Equipos , Escribe los simbolos del primero y deja espacios de memorias en espera entre cada unos de ellos. y que entre ellos exista la misma diferencia de espacios al momento de pasar estos simbolos a TAGS veras que es más facil pues sabes que entre cada equipo hay un salto de n Bytes y si requieres agregar mas datos para uno de ellos tienes espacio disponible entre ellos.. Yo acostumbro a estos espacios ponerles un nombre como “SPAREXX en DW” y coloco tantos como sea necesarios para que los siguientes simbolos empiezen en una direccion facil de recordar.

  4. Hola Grabiel,

    Estoy contigo, lo mejor es dejar espacio libre en los DB para futuras ampliaciones.

    Un saludo

  5. Hola, una pregunta, una marca configurada como remanente (ejemplo MB0), se comportaría de la misma manera que una variable de un DB?

  6. Hola, tengo un problema, ando trabajando con una 313C-2DP y usando FC’s,
    lo que pasa es que las variables locales que genero, no las manipula mi programa, que debería hacer para solucionar eso?.

    Saludos,

    • Hola Gonzalo,

      Con la información que aportas poco te puedo ayudar. En cualquier caso os pido una vez más que useis el foro para realizar consultas.

      Gracias y un saludo.

  7. Buenas,

    Tengo una duda respecto a la velocidad de acceso a memoria. ¿Es cierto que el acceso a las marcas es más rápido que a los DBs? Siempre he trabajado con marcas y DBs por igual, pero ahora mismo, donde trabajo actualmente no utilizan prácticamente marcas y he notado que las pantallas HMI son un poco lentas, cosa que no había visto hasta ahora. También es cierto que he pasado de trabajar con la gama 300 a la 1200.

    Un saludo y gracias.

    • Siempre he tenido entendido que efectivamente el acceso a los Db es algo más lento que las marcas. Pero no para que se note en un Scada.
      Yo más lo achacaría a que es un 1200 y no un 300.

      Un saludo