¡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.
-
AutorEntradas
-
12 diciembre, 2019 a las 17:18 #12131
Eugenio Trillo León
ParticipanteHola 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 #12134Eugenio Trillo León
ParticipantePerdona, 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 #12135Iñigo Gútiez
SuperadministradorHola 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 #12136Iñigo Gútiez
SuperadministradorPerdona, 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 #12241Eugenio Trillo León
ParticipanteEntendido, muchas gracias.
Learning by doing
16 diciembre, 2019 a las 10:21 #12242Eugenio Trillo León
ParticipanteHola,
es un 1200, adjunto pantallazo.
Gracias!
Adjuntos:
Debes acceder para ver los archivos adjuntos.Learning by doing
16 diciembre, 2019 a las 10:40 #12244Iñigo Gútiez
SuperadministradorQue 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-WW11 abril, 2020 a las 19:00 #14760Daniel Prats
ParticipanteHola 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 #14761Iñigo Gútiez
SuperadministradorGracias Daniel por el apunte.
29 diciembre, 2021 a las 9:47 #16189Rafa
ParticipanteHola 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 #16190Iñigo Gútiez
SuperadministradorHola 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 #16194Rafa
ParticipanteTodo claro, muchas gracias.
-
AutorEntradas
- Debes estar registrado para responder a este debate.