• Skip to primary navigation
  • Skip to main content

Cursos Online para mentes inquietas

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

Gestión de alarmas y una baliza – Programación del PLC

¡Uppsss! No estás logueado ¿eres usuario registrado?

Si eres usuario de la plataforma, HAZ CLIC AQUI PARA ACCEDER A TU CUENTA
Después, vuelve a acceder a la plataforma de cursos.

Home › Foros › Curso Express de TIA Portal › Gestión de alarmas y una baliza – Programación del PLC

  • Este debate tiene 11 respuestas, 4 mensajes y ha sido actualizado por última vez el hace 1 año, 8 meses por Rafa.
Viendo 12 entradas - de la 1 a la 12 (de un total de 12)
  • Autor
    Entradas
  • 12 diciembre, 2019 a las 17:18 #12131
    Eugenio Trillo León
    Participante

    Hola Iñigo,

    estoy encontrando dificultades a la hora de crear una Array AT, cuando pongo en el tipo de variable AT, no me aparece este comando. Sabes por qué me puede estar ocurriendo?

    Gracias de antemano.

    Saludos.

    Eugenio.

    Learning by doing

    12 diciembre, 2019 a las 18:02 #12134
    Eugenio Trillo León
    Participante

    Perdona, una última pregunta de esto. No entiendo bien lo que se hace en el segmento 6 y 7 del FB de chequeo. En el segmento 6 se rellena de 0 del DBWord el AtAlarma y en el segmento 7 se vuelca este AtAlarma en el AtDummy, de tal forma que sería todo 0, por tanto, no entiendo por qué el AtDummy representa las alarmas del ciclo anterior si siempre se termina poniendo a 0.

    Saludos,

    Eu.

    Learning by doing

    12 diciembre, 2019 a las 18:45 #12135
    Iñigo Gútiez
    Superadministrador
    Eugenio Trillo León wrote:

    Hola Iñigo, estoy encontrando dificultades a la hora de crear una Array AT, cuando pongo en el tipo de variable AT, no me aparece este comando. Sabes por qué me puede estar ocurriendo? Gracias de antemano. Saludos. Eugenio.

    ¿estas haciéndolo con una s7-1200 o S7-1500? Porque para la serie 300 no existe.

    ¿Podría subir un pantallazo de dónde lo intentas hacer?

    12 diciembre, 2019 a las 18:50 #12136
    Iñigo Gútiez
    Superadministrador
    Eugenio Trillo León wrote:

    Perdona, una última pregunta de esto. No entiendo bien lo que se hace en el segmento 6 y 7 del FB de chequeo. En el segmento 6 se rellena de 0 del DBWord el AtAlarma y en el segmento 7 se vuelca este AtAlarma en el AtDummy, de tal forma que sería todo 0, por tanto, no entiendo por qué el AtDummy representa las alarmas del ciclo anterior si siempre se termina poniendo a 0. Saludos, Eu.

    Lo que haces es:

    En el segmento 7 es guardar la información de este ciclo en el dummy para poder comparar el ciclo actual, con el ciclo siguiente.

    En el segmento 6, solo si mandas resetear (no siempre como comentas) llenas el actual de ceros y por tanto también el dummy.

    De esa manera, si reseteas, y vuelcas 0 a todo el array, luego en el segmento 7 copiaras lo que tenga en el actual (todo ceros) en el dummy para compararlo en el ciclo siguiente. Pero solo si mandas resetear.

    16 diciembre, 2019 a las 10:18 #12241
    Eugenio Trillo León
    Participante

    Entendido, muchas gracias.

    Learning by doing

    16 diciembre, 2019 a las 10:21 #12242
    Eugenio Trillo León
    Participante

    Hola,

    es un 1200, adjunto pantallazo.

    Gracias!

     

    Adjuntos:
    Debes acceder para ver los archivos adjuntos.

    Learning by doing

    16 diciembre, 2019 a las 10:40 #12244
    Iñigo Gútiez
    Superadministrador

    Que raro.
    Entiendo que el fw de tu PLC es superior a 2 no?
    Intenta hacer algún ejemplo siguiendo esto a ver si te funciona
    https://support.industry.siemens.com/cs/document/57132240/%C2%BFc%C3%B3mo-se-programa-la-superposici%C3%B3n-de-variables-con-la-palabra-clave-at-en-step-7-(tia-portal)-?dti=0&lc=es-WW

    11 abril, 2020 a las 19:00 #14760
    Daniel Prats
    Participante

    Hola a todos,  he estoy haciendo el cursillo Tia Express y me pasa lo mismo que a Eugenio Trillo «AT» y leyendo el enlace que apuesto Iñigo, en el Bloque FC hay que descatibar «El Acceso Optimizado del Bloque»

    Que se encuentra en propiedades del bloque – Atributos-Acceso optimizado del bloque.

    por si ha alguien le vuelve ha pasar.

    Saludos.

    11 abril, 2020 a las 19:41 #14761
    Iñigo Gútiez
    Superadministrador

    Gracias Daniel por el apunte.

    29 diciembre, 2021 a las 9:47 #16189
    Rafa
    Participante

    Hola Iñigo.

     

    Tengo algunas preguntas para confirmar conceptos sobre este ejercicio de la baliza:

    1 Cuando declaras una variable como IN/OUT, me imagino que puedes leer y escribir en ella, aunque en el bloque solo aparezca en el lado de las entradas. En nuestro ejercicio en concreto, mediante la variable «ATAlarma» es como ponemos a 0 el contenido del DB1 de alarmas.

    2 Yo en mi ejercicio he declarado las variables «resultadoXOR» como temporal y «índice» como estática, en el ejercicio que planteas tu está al revés. No se si en este caso es algo muy relevante, me gustaría aclarar un poco el razonamiento de porque las has elegido así.

    3 En el segmento 5 del ejemplo del video ¿es necesario resetear la variable «resultadoXOR» por algún motivo de fiabilidad? ya que me imagino que al volver a operar con ella se machacará a ella misma.

    4 En el segmento 7 del ejemplo del video ¿hay alguna diferencia de concepto importante entre utilizar MOVE_BLK_VARIANT o MOVE_BLK para actualizar «ATDummy»

     

    Muchísimas gracias por tu atención.

    29 diciembre, 2021 a las 19:39 #16190
    Iñigo Gútiez
    Superadministrador

    Hola Rafa.

    Veo que has hecho los deberes, porque tienes razón en varias cosas.
    La primera, resultadoXOR efectivamente puede ser una temporal, y por tanto, no tiene sentido borrarla cuando se hace un reset de las alarmas. Por tanto, puedes ponerla como temporal, y listo.
    La diferencia entre una static y una temporal, es que la static guarda su valor entre ciclos de ejecución del bloque en el DB de instancia, y una temporal no, y por eso hay que inicializarla o darle valor antes de leerla.
    Indice también la puedes declarar como temporal ya que solo la usas durante el loop, y no hace falta guardar su valor, por lo que ambas pueden ser temporales.
    A efectos prácticos, es un poco igual si una variable temporal la declaras como estática. Ojo, está mejor si es temporal, que sea temporal, pero no es un drama si la has declarado como estática pudiendo ser simplemente temporal.
    Pero no al revés ya que si te hace falta que «recuerde» su estado anterior, entonces tiene que ser estática. El ejemplo más claro es si usas un pulso en el bloque. La variable auxiliar que se use en el pulso, tiene que recordar su estado entre ciclos de ejecución y por tanto no puede ser temporal.
    Lo de In/out es eso, una variable que usas como entrada (in), coges su valor, lo usas y le das un nuevo valor (out). Es decir, manipulas su valor dentro del bloque. Lees y escribes sobre ella.
    Respecto a MOVE_BLK_VARIANT o MOVE_BLK fundamentalmente la diferencia es que MOVE_BLK_VARIANT está pensado para copiar arrays o su contenido (del tipo que sea) mientras que MOVE_BLK no puedes copiar cualquier tipo de contenido de uno a otro, sino que son tipos estándard.
    De tal forma que para copiar números enteros o reales de un array por ejemplo, usas un move_blk y para copiar la estructura completa o varios elementos de un array que sea un UDT que hayas definido tú, usas MOVE_BLK_VARIANT. Digamos que este último es más flexible.

    En definitiva ¡bien por ti, coño! porque has encontrado dos gazapillos en el código que podría haberse hecho aún mejor.

    29 diciembre, 2021 a las 22:41 #16194
    Rafa
    Participante

    Todo claro, muchas gracias.

  • Autor
    Entradas
Viendo 12 entradas - de la 1 a la 12 (de un total de 12)
  • Debes estar registrado para responder a este debate.
Acceder
  • Aviso Legal y Política de Privacidad
  • Condiciones de Venta
  • Política de cookies

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

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

Utilizamos cookies propios y de terceros para mejorar nuestros servicios y tu experiencia de usuario. Si continuas navegando, consideramos que aceptas su uso. Aceptar Más información
Política de Cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR

Insertar/editar un enlace

Introduce la URL de destino

O enlaza a contenido ya existente

    No se ha especificado ningún término de búsqueda. Mostrando los elementos recientes. Busca o utiliza las teclas de flecha arriba y abajo para seleccionar un elemento.