Muchísimas gracias por el apoyo Antonio! Agradezco mucho esas enormes palabras 😊 Cualquier duda que puedas tener, quedo a tu disposición crack Un saludo!
Muy buena clase, me gusta la parte de agrupar los tipos de datos y mandarlo a traer con un bloque de datos, y lo siguiente sería darle un bucle para continuar la estructuración del programa.
Siempre había visto ese "array" en los Step7 y no comprendía muy bien, en este video me dejaste muy claro el concepto y el ejemplo paraTia Portal. muchas gracias!!, te ganaste un like y una suscripción. SALUDOS !!
Buenas Abel, ¿se pueden direccionar vectores (Array) y estructuras (struckt) con entradas y salidas del PLC? Quiero decir: Cuando tu creas una variable, del tipo que sea, por ejemplo un booleano, en "variables PLC" directamente, por ejemplo desde "Tabla de variables estándar", que es la "tabla de variables" que siempre viene por defecto, a esta variable se le asocia una dirección (de entrada, salida o marca) en la columna que "Dirección" con el formato "%(I/Q/M) X.Y", donde se asocian dichas variables a las entradas y salidas correspondientes (en caso de o ser una marca). Pero dicha columna no está presente en las variables creadas dentro de los bloques de datos ¿Esto se debe a que las variables de los bloques de datos, que son las únicas que podemos crear como vectores y estructuras, sólo pueden ser variables internas del PLC? ¿Aquellas que corresponderían a marcas? ¿Una variable de entrada o salida "%(I/Q) X.Y" no puede ser creada en los bloques de datos?
Buenas Rodrigo, En un Array, incluso aunque sea un array dinámico, al final, cuando se va a utilizar, si o si acabas definiendo cuantas posiciones del array vas a utilizar, y por ende, su memoria. Tranqui, jamás se te va a cruzar un array con otro, TIA Portal no lo permitiría. Salu2 pelecero!
Profe un saludo especial desde Colombia, ya voy en este video aprendiendo demasiado, muchas gracias x ese conocimiento que transmite, me gustaria saber si es posible obtener la presentación que sigue en los vídeos
Buenas Silvester, Lo explico en el vídeo de "Saltos en las Direcciones"🔽 👉👉 ua-cam.com/video/bg3x60T5I98/v-deo.html&ab_channel=Programaci%C3%B3nMultidisciplinar Minuto ▶▶ 22:50 Un saludo!
Buenas Abel crack. Te quería plantear una duda aver si sabes resolverla. Los arrays son muy útiles para ejecutar bucles for, o como se llaman en TIA PORTAL "LOOP". Pero claro, cuando yo quiero hacer un LOOP de "Variables PLC" no es posible porque como bien indicas en el video no es un tipo de dato que se reconozca en "Variables PLC". Dicho lo cual, existe algo para hacer un LOOP de "Variables PLC". De momento el truco que he hecho es pasar cada variable a una posicion de un array que me he creado en un DB. Y ya luego en la programación llamo al array para hacer el bucle for // LOOP(tia portal). La cuestión es que NO ME LIBRO de tener que hacer manualmente una transferencia de la lectura de la variable a un DB uno a uno... Muchas gracias.
Utilizando funciones como blkmov o similar puedes hacer traspasos y te ahorras incluso los bucles. Aunque también te digo, no es una buena practica utilizar marcas para realizar un programa de PLC, además de impedir una buena estructura del proyecto, te ocasionará muchas limitaciones, tanto a la hora de hacer el proyecto plc como de hmi/scada. Siempre recomiendo declarar toda variable (excepto E/S obvio) en DBs
Hola, buenos días, consulto, deseo hacer un data logger, alojar los datos en un array, lo que deseo hacer es por programa en donde pueda definir la dimensión del array, ejemplo Construyo un FB , definiendo una variable como input en donde pase el parámetro de la dimensión o el tamaño del array, el objetivo es tener una función totalmente parametrizable. Me pase varios días viendo este tema y no se como se resuelve, saludos y gracias.
No se puede, dado que el array debes definirlo dentro de la FB y no puede condicionarse a otra variable. Lo que si puedes hacer es poner como input una variable del tipo INT que te defina hasta que posicion del array quieres leer. Puedes declararte un array de 100 o 500 posiciones y si necesitas solo usar las 40 primeras posiciones, a la variable de entrada INT le pones 40, asi con un bucle leerás desde la posición 1 hasta la 40.
Muchas gracias por tu respuesta, lo otro que deseo hacer es declarar en un FB una variable de entrada que me trasmita el canal de la entrada analógica de un S7-1200 (%IW64) a una función NORM_X interna del FB, no se como declarar la variable, esto es para no andar tocando dentro del FB. Saludos y muy agradecido
Buenas noches. PM. Qué dirección, específicamente toman las variables creadas en un array. Por ejemplo: "DB_Arrays".misEnteros[0], ocupa 2 bytes, pero no encuentro, por decir, un %MW# asociada. Quedo atento a tu respuesta. Saludos y muchas gracias.
Buenas Jorge, Las variables de los array ocupan una memoria dentro de la DB en cuestión, no ocupan una memoria externa de un DB, es decir, no existen variables de array con %M, de hecho, si intentas crear un array con %M, verás que no puedes. Se que es algo que cuesta de entender si se viene trabajando con marcas desde antes, pero el tema es que no existen únicamente direcciones %M, las DB también son direcciones al fin y al cabo, diferentes a las %M. Por eso, las variables de un array, ocupan memoria dentro de la DB en cuestión. Al igual que %M24.5 es una dirección de memoria, %DB6.DBX2.0 también es una dirección de memoria, no se si me explico. Saludos pelecero
Se podría emplear el Array para almacenar Etapas para un sistema por Transiciones? Osea despúes me valdría para resetear esas etapas con el FirstScan y el Reset_BF? Por cierto, buen video.
Supongo que te refieres a que cada posición del array sea una Etapa de un "grafcet" hecho en kop, por ejemplo. Si, podría valer perfectamente, aunque no recomiendo hacerlo de esa manera. En el curso tengo 4 o 5 vídeos sobre grafcet y hago un ejercicio con una metodología que, para representar el grafcet, me parece mejor, personalmente, aunque gustos colores 😉 Un saludo!
Hola, yo normalmente uso datos del tipo STRUCT en los cuales guardo todos los datos de los bloques que se repitan, para mi es mas sencillo, ya que genero una STRUCT con x datos por ejemplo: start, stop, reset, olpt, rcr, y de ahí solo copio la struct y la uso para todos los bloques que sean parecidos y solo cambio el nombre de la STRUCT, hay alguna diferencia con los ARRAY? Una ventaja de uno sobre del otro?
Buenas Luís, Los array están pensados para almacenar datos de un mismo tipo (así el programa se queda más limpio), pero sobre todo si sabes que esos datos vas a utilizarlos a posteriori con un bucle, porque así puedes acceder a dichos datos de una forma más automática. Los struct están pensados simplemente para almacenar diferentes tipos de datos en un único grupo con la finalidad de tener el programa más ordenado, ya que, salvo tener las variables ordenadas en grupos, no tienen ninguna otra finalidad. El problema de la struct es que no puedes acceder a sus datos de manera automática así sin más, tienes que tener conocimientos avanzados en TIA Portal para hacerlo, concretamente de awl (lo explicaré más adelante en el curso). Por cierto, como consejo, si vas a utilizar la misma struct y la copias y pegas y cambias nombre, te aconsejo que utilices una UDT, que al fin y al cabo es lo mismo, pero es como una struct ya definida, así simplemente la llamas, pones el nombre y listo. Un saludo.
Hola!, 9:02 del video la opcion de array que a mi me entrega mi Tia Portal es Array [0...1] of. Esa opcion sale asi no me sale como te sale Lo---hi, que puede estar saliendo mal? Muchas gracias!!!
Si quitas el acceso optimizado al bloque en la configuración de la DB, te aparecerá el offset o dirección de cada posición del array y la dirección total que ocupa dicho array.
Solo tienes una forma de poder acceder a mis formaciones exclusivas 👉Aquí: www.programacionmultidisciplinar.com/inicio
Muchas gracias por subir este tipo de contenido a UA-cam y compartir tu conocimiento con todos. Un saludo
Muchas gracias a ti por el apoyo Jorge!
Cualquier duda que tengas en algún vídeo, no dudes en preguntarme!
Salu2 pelecero!
Hola desde Chile....fantastico tu curso.....tus explicaciones excelente....gracias por tu tiempo y conocimientos....un abrazo
Muchísimas gracias por el apoyo Antonio! Agradezco mucho esas enormes palabras 😊
Cualquier duda que puedas tener, quedo a tu disposición crack
Un saludo!
@@programacionmultidisciplinar te pasaste eres increible😀
Felicidades por la explicación de creación de Arrays.
Muy buena clase, me gusta la parte de agrupar los tipos de datos y mandarlo a traer con un bloque de datos, y lo siguiente sería darle un bucle para continuar la estructuración del programa.
!! Wow!! Acabo de descubrir tu canal y me he propuesto terminar de ver todos tu videos. Explicas muy bien. Gracias por subir estos videos, suscrito.
Muchas gracias por el apoyo Jose!
Me alegra saber que mi contenido gusta y lo más importante, que ayuda a la gente del sector!
Un saludo!
justo lo que necesitaba, muchas gracias por compartir conocimiento.
Muy buen canal, me he suscrito, nunca viene mal refrescar conocimiento y si esta bien explicado como este mejor
Saludos
Muchas gracias a ti!
Un saludo
Excelente tu trabajo... Muchas gracias.
Muy interesante, no conocia el uso de los arrays. Gracias por los videos.
Me alegra saber que te han sido de utilidad.
Gracias por el apoyo Jesus!
Un saludo.
Siempre había visto ese "array" en los Step7 y no comprendía muy bien, en este video me dejaste muy claro el concepto y el ejemplo paraTia Portal. muchas gracias!!, te ganaste un like y una suscripción. SALUDOS !!
Gracias Pelecero! Bienvenido a la comunidad! 💪💪
Gracias, saludos desde Bolivia.
Viene bastante bueno el curso, gracias
Me alegra que te guste y te sea de utilidad! Estas estudiando o necesitas aprender tia portal para el trabajo?
@@programacionmultidisciplinar Tengo la esperanza de algún día poder trabajar de esto.
@@ramondiaz2921 Claro, nada es imposible! Esfuérzate por aprender, demuestra lo que sabes y todo llegará 💪💪
Ánimo Iván!
Muy buena clase, profesor! Muchas gracias.
Muy buenos los videos. Es muy importante una buena base, sino sabés hacer cosas, pero te falta el porqué.
Buenas Abel,
¿se pueden direccionar vectores (Array) y estructuras (struckt) con entradas y salidas del PLC?
Quiero decir:
Cuando tu creas una variable, del tipo que sea, por ejemplo un booleano, en "variables PLC" directamente, por ejemplo desde "Tabla de variables estándar", que es la "tabla de variables" que siempre viene por defecto, a esta variable se le asocia una dirección (de entrada, salida o marca) en la columna que "Dirección" con el formato "%(I/Q/M) X.Y", donde se asocian dichas variables a las entradas y salidas correspondientes (en caso de o ser una marca).
Pero dicha columna no está presente en las variables creadas dentro de los bloques de datos
¿Esto se debe a que las variables de los bloques de datos, que son las únicas que podemos crear como vectores y estructuras, sólo pueden ser variables internas del PLC? ¿Aquellas que corresponderían a marcas?
¿Una variable de entrada o salida "%(I/Q) X.Y" no puede ser creada en los bloques de datos?
No, no se puede.
Buen aporte amigo. Gracias.
Muchas gracias
EXCELENTE VIDEO, MUCHAS GRACIAS PROFESOR.
una pregunta. como se que no se cruza un array con otro si no defino el espacio de memoria que va utilizar ?
Buenas Rodrigo,
En un Array, incluso aunque sea un array dinámico, al final, cuando se va a utilizar, si o si acabas definiendo cuantas posiciones del array vas a utilizar, y por ende, su memoria.
Tranqui, jamás se te va a cruzar un array con otro, TIA Portal no lo permitiría.
Salu2 pelecero!
Profe un saludo especial desde Colombia, ya voy en este video aprendiendo demasiado, muchas gracias x ese conocimiento que transmite, me gustaria saber si es posible obtener la presentación que sigue en los vídeos
Buenas Alejandro! La presentación la encontrarás en la descripcion y comentario fijado del video inicial!
Salu2 pelecero!
@@programacionmultidisciplinar muy agradecido Maestro, sus videos son de mucho valor
muchas gracias
Gracias
Por cierto, excelentes videos
Muchas gracias!
excelente
Se podria utilizar el array para almacenar los valores de entradas y salidas digitales y analógicas?. Muy bien explicado todo
Si, se podría utilizar!
Puedo usar Arrays para hacer variables de tiempo?
Hola Abel, entoncen el el Array misReales[0..4], Esta usando 20Bytes?, ya que cada Real usa 4 bytes. O usa mas por ser un Array?
Estimado Abel, cómo se hace para hacer directa referencia a un %IBxxx cómo entrada para la función de convertir char array to string ?
Cuando usamos arrays. Que pasa con las direcciones? Que byte son usados?
Buenas Silvester,
Lo explico en el vídeo de "Saltos en las Direcciones"🔽
👉👉 ua-cam.com/video/bg3x60T5I98/v-deo.html&ab_channel=Programaci%C3%B3nMultidisciplinar
Minuto ▶▶ 22:50
Un saludo!
Es posible agregar todo un bloque de golpe?
hola abel, gusto saludarle,
sera posible que pueda compartir sus diapositivas en documentos?
Buenas pelecero,
En el primer vídeo del curso, en la descripción, tienes un enlace para descargarlo.
Salu2
@@programacionmultidisciplinar excelente abel, muchas gracias ya lo descargo
Buenas Abel crack. Te quería plantear una duda aver si sabes resolverla. Los arrays son muy útiles para ejecutar bucles for, o como se llaman en TIA PORTAL "LOOP". Pero claro, cuando yo quiero hacer un LOOP de "Variables PLC" no es posible porque como bien indicas en el video no es un tipo de dato que se reconozca en "Variables PLC".
Dicho lo cual, existe algo para hacer un LOOP de "Variables PLC".
De momento el truco que he hecho es pasar cada variable a una posicion de un array que me he creado en un DB. Y ya luego en la programación llamo al array para hacer el bucle for // LOOP(tia portal).
La cuestión es que NO ME LIBRO de tener que hacer manualmente una transferencia de la lectura de la variable a un DB uno a uno... Muchas gracias.
Utilizando funciones como blkmov o similar puedes hacer traspasos y te ahorras incluso los bucles. Aunque también te digo, no es una buena practica utilizar marcas para realizar un programa de PLC, además de impedir una buena estructura del proyecto, te ocasionará muchas limitaciones, tanto a la hora de hacer el proyecto plc como de hmi/scada.
Siempre recomiendo declarar toda variable (excepto E/S obvio) en DBs
Hola, buenos días, consulto, deseo hacer un data logger, alojar los datos en un array, lo que deseo hacer es por programa en donde pueda definir la dimensión del array, ejemplo Construyo un FB , definiendo una variable como input en donde pase el parámetro de la dimensión o el tamaño del array, el objetivo es tener una función totalmente parametrizable. Me pase varios días viendo este tema y no se como se resuelve, saludos y gracias.
No se puede, dado que el array debes definirlo dentro de la FB y no puede condicionarse a otra variable. Lo que si puedes hacer es poner como input una variable del tipo INT que te defina hasta que posicion del array quieres leer. Puedes declararte un array de 100 o 500 posiciones y si necesitas solo usar las 40 primeras posiciones, a la variable de entrada INT le pones 40, asi con un bucle leerás desde la posición 1 hasta la 40.
Muchas gracias por tu respuesta, lo otro que deseo hacer es declarar en un FB una variable de entrada que me trasmita el canal de la entrada analógica de un S7-1200 (%IW64) a una función NORM_X interna del FB, no se como declarar la variable, esto es para no andar tocando dentro del FB. Saludos y muy agradecido
Buenas noches.
PM.
Qué dirección, específicamente toman las variables creadas en un array.
Por ejemplo: "DB_Arrays".misEnteros[0], ocupa 2 bytes, pero no encuentro, por decir, un %MW# asociada.
Quedo atento a tu respuesta.
Saludos y muchas gracias.
Buenas Jorge,
Las variables de los array ocupan una memoria dentro de la DB en cuestión, no ocupan una memoria externa de un DB, es decir, no existen variables de array con %M, de hecho, si intentas crear un array con %M, verás que no puedes.
Se que es algo que cuesta de entender si se viene trabajando con marcas desde antes, pero el tema es que no existen únicamente direcciones %M, las DB también son direcciones al fin y al cabo, diferentes a las %M.
Por eso, las variables de un array, ocupan memoria dentro de la DB en cuestión.
Al igual que %M24.5 es una dirección de memoria, %DB6.DBX2.0 también es una dirección de memoria, no se si me explico.
Saludos pelecero
Amigo, Cómo hago para acceder a un array, creado en el PLC, desde un HMI wincc Professional ?
Se podría emplear el Array para almacenar Etapas para un sistema por Transiciones?
Osea despúes me valdría para resetear esas etapas con el FirstScan y el Reset_BF?
Por cierto, buen video.
Supongo que te refieres a que cada posición del array sea una Etapa de un "grafcet" hecho en kop, por ejemplo. Si, podría valer perfectamente, aunque no recomiendo hacerlo de esa manera. En el curso tengo 4 o 5 vídeos sobre grafcet y hago un ejercicio con una metodología que, para representar el grafcet, me parece mejor, personalmente, aunque gustos colores 😉
Un saludo!
@@programacionmultidisciplinar Muchisimas gracias por responder! Un saludo
Hola, yo normalmente uso datos del tipo STRUCT en los cuales guardo todos los datos de los bloques que se repitan, para mi es mas sencillo, ya que genero una STRUCT con x datos por ejemplo: start, stop, reset, olpt, rcr, y de ahí solo copio la struct y la uso para todos los bloques que sean parecidos y solo cambio el nombre de la STRUCT, hay alguna diferencia con los ARRAY? Una ventaja de uno sobre del otro?
Buenas Luís,
Los array están pensados para almacenar datos de un mismo tipo (así el programa se queda más limpio), pero sobre todo si sabes que esos datos vas a utilizarlos a posteriori con un bucle, porque así puedes acceder a dichos datos de una forma más automática.
Los struct están pensados simplemente para almacenar diferentes tipos de datos en un único grupo con la finalidad de tener el programa más ordenado, ya que, salvo tener las variables ordenadas en grupos, no tienen ninguna otra finalidad. El problema de la struct es que no puedes acceder a sus datos de manera automática así sin más, tienes que tener conocimientos avanzados en TIA Portal para hacerlo, concretamente de awl (lo explicaré más adelante en el curso).
Por cierto, como consejo, si vas a utilizar la misma struct y la copias y pegas y cambias nombre, te aconsejo que utilices una UDT, que al fin y al cabo es lo mismo, pero es como una struct ya definida, así simplemente la llamas, pones el nombre y listo.
Un saludo.
@@programacionmultidisciplinar muchas gracias por compartir tu experiencia y conocimiento.
@@luiscortesfdz De nada, un placer!
También aprendo yo de ustedes de vez en cuando :D
Un saludo!
Hola!, 9:02 del video la opcion de array que a mi me entrega mi Tia Portal es Array [0...1] of. Esa opcion sale asi no me sale como te sale Lo---hi, que puede estar saliendo mal?
Muchas gracias!!!
No se porque te sale diferente, pero bueno si te deja modificar los valores del rango del array y te funciona, entonces no hay problema.
Una duda que que direcciones toman los array?
Si quitas el acceso optimizado al bloque en la configuración de la DB, te aparecerá el offset o dirección de cada posición del array y la dirección total que ocupa dicho array.
@@programacionmultidisciplinar cómo lo haces? Tiene video?
@@dennisrubio2375 El 31, explico todo sobre los DB.
@@programacionmultidisciplinar gracias