• 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 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 de TIA Portal para CPU 1200
    • Curso de Step 7 V5.x
    • Curso de comunicaciones IE y Profinet
  • Contacto

Procesamiento cíclico de un programa

por Iñigo Gútiez · 13 Comments

Una de las cosas que hay veces que dejamos de lado cuando empezamos a trabajar y programar con los autómatas es no hacer mucho caso en cómo trabaja el PLC y como es el procesamiento cíclico que realiza el autómata.

Es muy sencillo, pero es conveniente tener las ideas claras desde el principio para luego, por un lado aprovecharnos de ello para poder realizar tareas y por otro, para no llevarnos sorpresas y pensar que hay comportamientos supuestamente anómalos.[divider]

Contenido

  • 1 El procesamiento cíclico
  • 2 … las entradas ¿son una especie de marcas?
  • 3 ¿Se pueden leer las entradas físicas en un momento dado?
  • 4 ¿Que hay de las salidas físicas?
  • 5 Los temporizadores
  • 6 Los OB cíclicos

Procesamiento cíclicoEl procesamiento cíclico

Una vez arrancado el programa desde cero, se ejecuta el OB100 que lo usaremos para dar valores iniciales ya que sólo se ejecuta una vez.

Puede existir o no. Si existe se ejecuta antes de entrar en  modo cíclico.

El modo cíclico funciona de la siguiente forma:

  • Se actualizan las salidas.
  • Se actualizan las entradas
  • Se ejecuta el contenido del OB1

… y vuelta a empezar.

Las salidas físicas y entradas físicas tienen asociadas sendas tablas de salidas y entradas. Cuando se actualizan, lo que hace el PLC es volcar la tabla de salidas sobre las salidas físicas y las entradas físicas se vuelcan sobre la tabla de entradas.

Ojo, porque durante la duración del programa (típicamente entre 1 y 100 ms) aunque las entradas físicas cambien de estado durante el ciclo, estos no serán tenidos en cuenta hasta el ciclo siguiente y se vuelvan a actualizar.

Esto lleva a la siguiente pregunta, si no se actualizan hasta el siguiente ciclo…[divider]

… las entradas ¿son una especie de marcas?

Pues sí, son una epecie de marcas y esto hace que si al principio del ciclo del OB1 (después de actualizar la tabla de entradas) forzamos una entrada haciendo esto: SET

= E0.0

Lo que sucederá es que la entrada estará a TRUE para la ejecución en el programa  independientemente de qué haga la entrada real. No es recomendable forzar las entradas, pero que sepas que poder, se puede.

Ahora entonces surge la siguiente pregunta …[divider]

¿Se pueden leer las entradas físicas en un momento dado?

La respuesta es Sí. Se pueden leer accediendo a la periferia mediante:

L PEB X, para leer el byte X

L PEW, para leer la palabra X.

L PED, para leer la doble palabra X.

Lo único que no se puede leer es un bit en concreto. Al menos tendremos que leer un byte completo.

Estas lecturas se suelen realizar en los OB cíclicos. Lo interesante es saber la lectura de la entrada en el momento que se ejecuta el OB. No tiene mucho sentido realizar una ejecución cíclica con entradas si luego va a depender del último estado de las entradas que dependen del tiempo de ciclo global.[divider]

¿Que hay de las salidas físicas?

Las salidas son igualmente marcas que se vuelcan actualizando las salidas físicas. Pero la actualización de estas salidas se pueden realizar antes forzandolas de forma similar a la lectura de las entradas:

T PAB 0

T PAW 0

T PAD 0

Al igual que en el caso anterior, se deben forzar la salida al menos de byte en byte.

Esta forma de dar las salidas se suelen usar también en OB cíclicos. Por ejemplo, un OB a tiempo muy pequeño en el que se lea la entrada física y se ejecuta la salida sobre las salidas físicas.[divider]

Los temporizadores

Una peculiaridad es que los temporizadores de S5 trabajan independientemente del tiempo de ciclo. Trabajan en paralelo y darán su estado instantáneamente y por tanto pueden cambiar de estado en mitad de la ejecución del OB1. Esto normalmente no es preocupante, pero hay que tenerlo en cuenta si la parte del programa donde se activa y donde se lee el estado dista mucho con tiempos de ciclo muy altos.  Normalmente no dará problemas, pero podría ya que en el mismo ciclo, el temporizador tendría a la hora de ejecutar el código dos estados diferentes.

Con los temporizadores IEC la cosa cambia ya que son temporizadores de software y no habrá problemas comentados anteriormente. Tomaran el valor cuando se ejecute el código y se chequee su estado.[divider]

Los OB cíclicos

Los OB de ejecución cíclicos (por ejemplo el OB35) se ejecutan a tiempo fijo. No dependen de la ejecución del OB1 ya que de hecho, el OB1 pausa su ejecución para ejecutar este OB. Esto hace que el tiempo de ciclo del OB1 si normalmente ya es variable dependiendo del programa, la inclusión de un OB cíclico lo hace aún más variable ya que se alargará cuando se pause para ejecutar el OB35 por ejemplo, cosa que en general, no se hará en todos los ciclos de scan del PLC (el OB35 puede estarse ejecutando cada 100ms y el OB1 ejecutánsose de media cada 20ms haciendo que 1 de cada 5 se alargue para ejecutar el OB35).[divider]

Referencias:

  • El Ciclo de SCAN de un PLC -Ciclo de Operación
  • Ciclo de trabajo de un PLC

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.

    13 Comentarios

  1. JMM says

    19 enero, 2013 at 0:30

    Hola Íñigo:

    Un par de cosas, si las entradas son una especie de marcas ¿se podrían utilizar las que no se usen físicamente como marcas?, ¿se te ha presentado el caso de tener que echar mano de ellas alguna vez?.
    Cuando te refieres a periferia (y en los manuales también), ¿te refieres a que como la CPU no lleva conexiones de I o Q a bordo las entradas y salidas estarán el la periferia? ¿y que pasa con las que si llevan entradas y salidas integradas?. Gracias por responder, ya que no tengo muy claro el concepto de «periferia».
    Saludos.

    Responder
  2. Iñigo Gútiez says

    19 enero, 2013 at 0:47

    Lo primero, muchas gracias por tu comentario.

    Vayamos por partes:
    Ni se te ocurra usar las entradas como marcas… sería como para matarte!!!
    Lo que significa es que si tu haces en cualquier parte del programa un

    SET
    S E0.0

    A partir de este momento, en el resto del programa, la E1.0 tendrá valor 1 independientemente del valor fisico de la entrada. En el siguiente ciclo de scan, la entrada se actualiza e imaginemos que está a cero.
    La E0.0 estárá a cero hasta que llegue el punto del programa en el que haces el Set y a partir de ahi seguirá a uno hasta el siguiente ciclo. Simplemente la puedes forzar.

    Alguna vez lo he usado pero para depurar el programa y es extrañísimo usarlo y una chapuza (con perdón). La idea es que sepáis que realmente se pueden modificar porque cuando haces una lectua de la E0.0 no haces una lectura de la entrada físicamente, sino del estado que tenía al principio del nuevo ciclo de scan.

    Cuando se habla de leer o escribir en la periferia es leer o escribir físicamente el estado de las entradas o salidas, estén donde estén integradas: en tarjetas del propio PLC, añadidas y del tipo que sean, bien digitales o analógicas.

    Si haces un
    L PEW o un L EW normalmente valdrán lo mismo, pero no necesariamente.

    En el PEW lees el estado actual e instantáneo de la palabra de entradas y cuando haces un L EW haces una lectura de cómo estaban las entradas justo antes de iniciar el ciclo actual del OB1 ¿ves la diferencia?
    Lo mismo con hacer un T AW o hacer un T PAW.
    En el primero, transferirás el valor al final del ciclo y en el segundo harás la transferencia en ese instante.

    Espero haberte solucionado la duda y no liarte más.

    Responder
  3. Carlos says

    3 marzo, 2013 at 11:28

    ¿Significa esto que «PEW 0» al contrario de «EW 0» puede variar a lo largo de un mismo scan?.

    Responder
  4. Iñigo Gútiez says

    4 marzo, 2013 at 20:13

    La lectura del PEW 0 es la lectura física de la palabra 0. Imagina que tienes cableadas 16 entradas en la palabra 0. Si haces un L PEW 0 haces una lectura instantánea de ese momento, de cómo estás las 16 entradas. En cambio, hacer un L EW0 es hacer una lectura de cómo estaban cuando comenzó el ciclo de scan en curso.

    En general, no hará falta trabajar con la periferia directamente salvo para casos en los que se necesite mucha precisión de lectura (por ejemplo la lectura de un encóder).

    Por tanto, y contestando a tu pregunta, sí, el PEW puede variar durante un ciclo de scan. Piensa que en algún momento su valor va a variar, por lo que en ese ciclo de scan podrías hacer al menos dos lecturas diferentes, por ejemplo al principio del OB1 y otra si la haces al final).

    Responder
  5. Carmelo says

    28 marzo, 2013 at 22:25

    Hola Iñigo,

    Cuando hacemos un

    L PEB X, para leer el byte X

    entiendo que refrescamos el área de memoria que contiene el byte X. Por lo que entonces en realidad hacemos dos pasos

    uno refrescar el dato en la memoria
    dos leer este dato desde la memoria

    Por tanto las siguientes consultas que hagamos en el OB serían con L EB X y trabajaríamos con un dato relativamente moderno.

    ¿Es cierto?

    Responder
  6. Iñigo Gútiez says

    29 marzo, 2013 at 17:16

    Hola Carmelo,

    Hasta donde yo see no es como comentas, simplemente lees el contenido real de la periferia pero no se actualiza parcialmente la imagen de proceso.

    No he hecho nunca una prueba, pero se puede hacer para ver si realmente es así.

    Un saludo y gracias por comentar.

    Responder
  7. Kuka says

    19 abril, 2013 at 17:46

    muy bien explicado todo y los comentarios despejan dudas.

    Responder
  8. Iñigo Gútiez says

    19 abril, 2013 at 18:55

    Gracias Kuka!

    Responder
  9. Miguel says

    14 mayo, 2013 at 11:40

    Hola, me gustaría saber como obtener la velocidad en (RPM), de un encoder absoluto, con que instrucciones de una CPU 313C-2 DP SIEMENS

    Responder
  10. Iñigo Gútiez says

    14 mayo, 2013 at 17:58

    Hola Miguel,

    Si es un encoder absoluto como comentas, tendrás la lectura directa del número de pulsos ¿no?. Con hacer las lecturas a intervalos fijos y almacenando las posiciones, luego es hacer 4 números sabiendo el tiempo entre medidas y los pulsos por vuelta del encoder.

    Un saludo

    Responder
  11. jose jaime vargas says

    18 septiembre, 2019 at 23:09

    bueno el curso para asomarse al principio de la programación, mas aun como comentas requiere de mucha dedicación para entender el funcionamiento y ser un buen programador. Saludos

    Responder

Trackbacks

  1. 1. INTRODUCCIÓN A LA PROGRAMACIÓN EN STEP 7 | Programación SIEMENSProgramación SIEMENS dice:
    4 septiembre, 2013 a las 19:22

    […] Como ya he ido adelantando existen unos módulos que son los encargados de ejecutar los programas de usuario. En el siguiente esquema puedes ver de forma gráfica cómo es la ejecución cíclico del programa (ya visto anteriormente aquí) […]

    Responder
  2. Cómo observar y forzar variables en Step 7 | Programación Siemens dice:
    19 febrero, 2015 a las 22:38

    […] Si no sabes de qué estoy hablando, deberías repasar el funcionamiento cíclico del PLC. […]

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

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

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

7 pasos para programar mas ordenado y profesional op

7 pasos para programar más ordenado y profesional

Recibirás de forma TOTALMENTE GRATUITA:

  • Un PDF con los pasos para programar de forma más eficiente, limpia y profesional

PROGRAMACIÓN SIEMENS te informa que los datos de carácter personal que nos proporciones rellenando el presente formulario serán tratados por Iñigo Gútiez Chagartegui como responsable de esta web. La finalidad de la recogida y tratamiento de los datos personales que te solicitamos es para enviarte nuestras publicaciones, promociones de productos y/o servicios y recursos exclusivos. La legitimación se realiza a través del consentimiento del interesado. Te informamos que los datos que nos facilitas estarán ubicados en los servidores de ActiveCampaign, LLC  (proveedor de email marketing), ubicada en EEUU. ActiveCampaign, LLC
 está acogido al acuerdo EU-US Privacy Shield. Puedes ver la política de privacidad de ActiveCampaign en https://www.activecampaign.com/privacy-policy/. El hecho de que no introduzcas los datos de carácter personal que aparecen en el formulario como obligatorios podrá tener como consecuencia que no pueda atender tu solicitud. Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@programacionsiemens.com así como el derecho a presentar una reclamación ante una autoridad de control. Puedes consultar la información adicional y detallada sobre Protección de Datos en nuestra política de privacidad.

x