• Skip to primary navigation
  • Skip to main content

ProgramaciónSiemens

Cursos online de automatización industrial con PLC Siemens

  • Cursos
  • Mi cuenta
    • Mi cuenta
    • Blog
    • Foros
    • Curso de AWL
    • Curso de iniciación a la Industria 4.0
    • Curso Express de TIA Portal
    • Curso de WinCC Flexible 2008
    • Crear HMI con OPC y VB.NET
    • Crear HMI con Snap7 y VB.NET
    • Curso ViSnap7
    • Curso de TIA Portal para CPU 1200
    • Curso de Step 7 V5.x
    • Curso de comunicaciones IE y Profinet
  • Contacto & Faq

Variables en Step 7 (I) – Marcas y DB

por Iñigo Gútiez · 20 Comments

Iñigo Gútiez
Iñigo Gútiez

Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí

Puedes seguirme en cualquiera de las siguientes redes sociales.

Filed Under: Teoría

Reader Interactions

    Deja un comentario Cancelar

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

    20 Comentarios

  1. jano says

    2 junio, 2013 at 23:42

    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

    Responder
  2. Iñigo Gútiez says

    4 junio, 2013 at 23:05

    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

    Responder
  3. Gabriel Páez says

    11 agosto, 2013 at 22:05

    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.

    Responder
    • robert tejeda says

      14 enero, 2018 at 14:00

      hola gabriel como estas. me gustaria agregarte al facebook

      Responder
  4. Iñigo Gútiez says

    11 agosto, 2013 at 22:18

    Hola Grabiel,

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

    Un saludo

    Responder
  5. David says

    3 octubre, 2013 at 13:12

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

    Responder
    • Iñigo Gútiez says

      3 octubre, 2013 at 18:45

      Correcto! Sí. Al apagar el PLC y al encenderlo (salvo que se quede sin batería los más antiguos), se deberían comportar igual.

      Responder
  6. Gonzalo says

    5 diciembre, 2013 at 22:00

    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,

    Responder
    • Iñigo Gútiez says

      5 diciembre, 2013 at 23:11

      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.

      Responder
      • Edgar raul says

        1 marzo, 2021 at 12:55

        Hola qué tal.
        Creo tener el mismo problema.
        Creo DBs para trabajar con boleanos, enteros y reales.
        Cuando quiero ocupar esa Db solo me deja direccionar boleanos pero no reales ni enteros.
        Espero su apoyo.
        Saludos

        Responder
        • Iñigo Gútiez says

          1 marzo, 2021 at 13:02

          Repasa lo que estás haciendo porque manipular booleanos, enteros o reales no tienen ‘truco’. Defines la variable como entero, por ejemplo, y luego apuntas a su dirección del dw pertinente

          Responder
  7. OSCAR says

    10 diciembre, 2013 at 16:48

    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.

    Responder
    • Iñigo Gútiez says

      10 diciembre, 2013 at 22:36

      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

      Responder
  8. robert tejeda says

    14 enero, 2018 at 13:46

    buenos días , cordial saludo.
    aun me cuesta entender cuándo y porqué debo usar un OB,FC,FB,DB.
    yo normalmente antes de conocer sobre programación estructurada, hacia todo el programa en cascada .
    aca en tia portal uso el OB 1 y hay hago toda la programación ejemplo el arranque de 5 motores .
    pero realmente no se cuando debo usar un FC,FB,DB y porque debo de usarlos ..

    en un video que vi , analice que para usar temporizadores debo usar un DB . entonces pregunto solo los temporizadores o contadores o otras funciones se pueden usar en el DB ?

    te agradezco una ayuda para poder entender este tema que me enreda un poco.

    Responder
    • Miguel Muñoz O. says

      22 febrero, 2018 at 21:02

      Robert, hola un saludo.

      Mira en SIEMENS lo que llaman OB otros lo llaman «PROGRAMA» (PG), FC «FUNCIÓN» y FB «BLOQUE DE FUNCIONES». Te recomiendo que estudies sobre Recursos, Task, Programas, Bloque de Funciones y Funciones. En el orden que te lo dije, por decirlo así, es un orden jerárquico de ejecución. (quizá te lo termino explicando todo).
      Mira el Recurso hace referencia al procesador físico de un PLC… dentro de los recursos se administran «núcleos» por así decirlo que pueden ser seccionados para ejecutar códigos, a estas secciones se les llama TASK y pueden tener prioridades (según el compilador y modelo de PLC puede variar), pero va de 0 (mayor prioridad) a 30 (menor prioridad), ahora existen diferentes tipos de TAKS (Default, Cíclico, Evento y no recuerdo el otro) pero simplemente, es «cuando y cómo» se ejecutará el TASK! AHORA! Dentro de los TASK se asocian los programas, y a esto se le llama INSTANCIACIÓN, es decir, que cuando un objeto (POU) es INSTANCIADO significa que efectivamente parte del procesador físico computará dicha información (ya que pueden existir POU’s declarados, pero que nunca son ejecutadas).

      Respecto a las prioridades de las Taks, por ejemplo si son cíclicas tu les defines la prioridad y el «SCAN», lo cual viene siendo el «interval» (en otro modelos) y significa cada cuanto tiempo tu le dices a la TASK que se ejecute, por ejemplo. Task 1. Interval 10ms, WhatchDog 100ms (prioridad 0 – máxima-). Significa que cada 10ms tu Task será ejecutada (y con ella los POUS que estén instanciados dentro de ella). Y que si la Task por alguna razón se tarda más de 100ms en ejecutar el código el PLC debería pasar a STOP y arrojarte un error… Ahora es muy importante que el INTERVAL sea mayor que la duración de la EJECUCIÓN de tu código, ya que son cosas distintas. Me explico, imagina que yo te llamo a tí cada 30 minutos para una tarea que a tí te toma 10 minutos ejecutar, entonces no hay problema, sin embargo, si yo te comienzo a llamar cada 29 minutos, seguramente te cansarás más, porque la tarea que yo te estoy pidiendo no es lo ÚNICO que tu tienes que ejecutar en el día, analogandolo al PLC, esas tareas extras pueden ser web servers, bases de datos o la ejecución de otros TAKS y que si le vas dejando «poco tiempo» al PLC para hacer sus «cosas» la exigencia de la CPU también irá subiendo, si esta sobrepasa o se acerca mucho al 100% también se pondrá en STOP y arrojará un error… ya que como dije, dentro de un recursos, por lo general, puedes tener varias TASK (en función de las capacidades del PLC). Entonces si tienes dos Task, Task 1 y Task2 y ambas son cíclicas y debes velar que su prioridad sea distinta y que exista un espacio de tiempo donde la Task de menos prioridad pueda ser ejecutada. (Si buscas en google «TASK PLC» o algo similar, en imágenes, podrás encontrar un gráfico donde se vé la ejecución según Interval y Prioridad). AHORA ! El programa (PG) es el que se instancia finalmente… Pero dentro del programa se incluyen los FB’s como los FC’s. En resumen, los FC’s funciones… tienen multiples entradas y sólo una salida, mientras que los FB’s Bloques de funciones tienen multiples entradas e igual múltiples salidas, Las funciones no necesitan ser declaras, son efímeras en la ejecución del programa, mientras que los FB’s necesitan ser declarados dentro del POU en el que son utilizados.
      Puedes leer mucho más y cómo administrar mejor googleando los conceptos que te he dicho. Y deberías entender además sobre el uso de variables tales como: Var_input, Var_output, Variable Global.

      Espero te sea de ayuda.

      Saludos.

      Responder
  9. Nicolas Antonelli says

    1 octubre, 2020 at 17:06

    Buenas tardes, quisiera saber si la única diferencia entre tener una marca como variables o en un bloque de datos es el tema de optimización de memoria y facilidad a la hora de enviar de información o hay algún otra diferencia, muchas gracias.

    Responder
    • Iñigo Gútiez says

      2 octubre, 2020 at 16:45

      Las diferencias fundamentales es que las marcas ya existen, y no ocupan memoria de trabajo, mientras que los DB sí. Además, debido al tipo de memoria que es, es más rápido para la CPU trabajar con las marcas que con los DB, si bien eso hoy en día no es un inconveniente. Por otro lado, con los DB puedes declarar muchos más tipos de datos (existentes de fábrica o no) que con las marcas no puedes.

      Responder
  10. Paulo Ponce de León says

    24 junio, 2021 at 18:53

    Hola, acá hubo algún texto? Y de ser así en dónde podría encontrarlo?
    Tienes muy buen contenido, espero pronto terminar de empaparme con lo básico y probar alguno de sus cursos.

    Responder
  11. Elena Nani Torrosa says

    10 mayo, 2022 at 17:42

    buenas , no se que canal utilizar para mis etapas con el step7. Me podrias decir que variable se utiliza ?

    Responder
    • Iñigo Gútiez says

      12 mayo, 2022 at 10:58

      Lo siento, pero no he entendido la pregunta.

      Responder
  • Aviso Legal y Política de Privacidad
  • Condiciones de Venta
  • Política de cookies
  • Contacto & Faq
  • Blog

Copyright © 2022 · Programación Siemens · Todos los derechos reservados

· ¿Quién soy? · Misión, Visión y valores