Como el primero de los ejemplos en Step 7 que haremos a partir de ahora, voy a resolver un problema que se ha planteado en el portal http://www.infoplc.net/foro.
El enunciado dice más o menos lo siguiente:
Los valores de ‘a’ y ‘b’, catetos de triángulos rectángulos, se obtienen cada 100 ms. Las últimas 4 muestras deben almacenarse en un DB. Para cada uno de estos 4 triángulos se pide calcular:
- Su hipotenusa ‘c’.
- El ángulo del cateto α en grados.
- Su área.
Todos estos valores deberán almacenarse en el mismo DB. A su vez, cuando se indique a través de la marca M0.0, deberá calcularse la suma de las áreas de los últimos 4 triángulos y deberá almacenarse también en el mismo DB.
Os dejo con el video de resolución del problema.
Vídeo de ejemplos en Step 7
Como habéis podido ver en el vídeo, hemos tratado los siguientes aspectos:
- Creación de DB de instancia a través de variables estáticas de un FB
- Creación de FCs con variables de entrada y salida para reutilizar la función
- Diferentes llamadas a los FC desde otro bloque (en este caso desde un FB).
- Uso de un OB cíclico para ejecutar una tarea a tiempo fijo.
- Algunas de las difentes instrucciones aritméticas y geométricas que nos ofrece Step 7.
En próximas entradas repasaremos los conceptos esenciales referidos a los DB para asentar firmemente qué son y cómo se pueden usar, pero he querido pasar digamos a la acción e ir introduciendo los conceptos aunque estén aún sin publicar de forma teórica porque creo que como mejor vas a aprender es practicando.
Si tienes alguna duda, o algo puede incluso que no esté bien en la resolución del problema, o crees que se puede resolver de otra forma o quieres compartir la forma en la que has resuelto el problema, comenta comenta y comenta.
Referencia:
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.
16 Comentarios
Hola Iñigo!
Solo queria agradecerte la molestia que has tomado haciendo este blog. Me esta resultando realmente util para repasar mis conocimientos sobre automatas siemens.
Has conseguido un nuevo seguidor 🙂
Animo con el blog!
Gracias por el apoyo.
Intentaré seguir publicando cosas que puedan ser interesantes.
Un saludo
muy bueno, lo voy a probar en TIA portal a ver si sale.
Iñigo
donde podria capacitarme para aprender step 7 , tia portal.
tengo conocimientos basicos.
Estoy en cantabria
saludos
No sabría decirte. TIA aún está comenzando su andadura por lo que no creo que haya mucha documentación aún comparativamente hablando a Step7.
En cualquier caso, comenzaría por conocer bien Step7. Luego TIA vendrá rodado.
Un saludo
Iñigo
recomiendas tomar esas clases en mismo siemens, o buscar un programador para que te capacite.
Que recomiendas instalar xp o windows 7 para desarrollar step 7, wincc flexible, etc
o cada programa en diferentes windows
saludos
Iñigo
me falto comentar, trabajar como sistema operativo 64 o 32 bits.
saludos
La versión de windows dependerá de la versión de Step 7 que tengas. Que sea 34 o 64 también.
En cuanto al rendimiento, sinceramente no he notado que vaya mejor en Windows 7 que en XP, pero desde luego, es mucho más estándar XP y sin duda te funcionará sin problemas.
Te dejo la tabla de compatibiidades:
http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&objId=22644954&load=treecontent&lang=es&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=WW
En cuanto a lo de tomar clases, pues no sabría decirte si Siemens o terceros. Quiero decir, dependerá más de lo bueno que sea el profesor que para qué empresa trabaje.
No porque trabaje en Siemens dando cursos va a saber más que otras empresas que se dediquen a dar clases sobre Step7.
Tampoco te puedo recomendar a nadie, porque no conozco.
Un saludo
gracias por compartir esta info
Hola a todos.
Lo primero decir que llevo unos meses siguiendo el blog y me parece genial. Ahora estoy siguiendo el curso de Introducción a la Programación en STEP 7 y me está yendo genial para consolidar los temas de otro curso que estoy siguiendo a distancia.
Hoy repasando las entradas anteriores en busca de información sobre las variables de los FC y FB ( IN ; OUT; IN_OUT; TEMP; STAT…) he encontrado esta entrada y o bien yo entiendo mal el enunciado o el programa no hace lo que pide el ejercicio.
Me ha parecido ver en el vídeo que el programa realizado calcula los datos que se piden en el enunciado pero para cuatro triángulos iguales.
yo entiendo que se pretende guardar los valores de los catetos de diversos triángulos dados y en el momento que se decida (activando la marca M 0.0) calcular las diversas variables de los cuatro últimos triángulos. Se hayan dado los catetos de cuatro triángulos o 25 o ….
Podéis despejarme la duda??
Saludos.
Creo que ya sé cual ha sido mi confusión…
Imagino que me ha parecido que se calculaban cuatro triángulos iguales porque al estar online en MODO CONTINUO y ser el ciclo de scan de 100 ms no da tiempo a introducir valores distintos para cada triángulo.
Supongo que se ha de hacer la prueba en modo PASO a PASO para ver el funcionamiento correcto del programa.
Ahora me lo descargaré y haré las pruebas pertinentes…
Exactamente…
No me has dado margen a contestarte jeje.
Es como dices, al ser en continuo parece que son los mismos pero no lo son.
Un saludo
Buenas tardes Iñigo,
Una pregunta. Veo que has usado un FB con un BD de instancia y tres funciones.
Se podría utilizar otra FC en lugar del FB (que llamase a su vez a las otras tres funciones creadas) y una BD Global??
Un saludo.
P.D: Has creado una gran página. Muy interesante.
Si, se puede hacer como dices. Si no vas a reutilizar el FB puedes usar un fc + db global.
Saludos y gracias!
Hola de nuevo,
Se me olvidó comentarte ayer una cuestión en la pregunta que te hice.
El DB que usas es de instancia? Es que en ese caso por lo poco que he aprendido hasta ahora, tengo entendido que los datos sólo pueden ser accesibles a través del FB al que está asociado.
Mi pregunta: los FC que usas, pueden acceder a esos datos si son llamados por el FB (pasándoles los datos a través de parámetros de entrada) ? o sería necesario el uso de variables temporales?
(no sé si me he explicado bien).
P.D:Enhorabuena por el blog y el curso, has ganado un adepto al que verás mucho por aquí.
A los DB de instancia puedes acceder desde los FB haciendo referencia simplemente con la variable STAT o bien de forma externa si lo referencias de forma absoluta con un, por ejemplo, DB1.DBW0.
Que sean de instancia no da pie a que se puedan leer o escribir sólamente desde el FB.
No es aconsejable escribir sobre ellos porque te puedes volver loco pensando que el problema lo tienens en el FB, pero leer el estado de las instancias de forma externa no es raro y no pasa nada por hacerlo.
No sé si te lo dejo más claro.
Saludos