Estudiamos al detalle los bucles FOR SCL TIA Portal desde cómo crearlo dentro de un bloque SCL hasta ejemplos de utilización. Te explico al detalle cómo utilizar las variables para aumentar el bucle y cómo ejecutar uno a uno sus pasos para dominar la llamada a esta función.
Contenido del artículo:
- ¿Para qué queremos utilizar un FOR SCL TIA Portal en nuestro proyecto?
- Vamos a insertar un bucle FOR en nuestro bloque SCL.
- Explicamos la función FOR … TO … DO.
- Variable de contaje.
- Variable con el valor inicial.
- Variable con el valor final.
- ¿Pero qué va a hacer exactamente el bucle FOR SCL TIA Portal?
- ¿Y qué ejecutamos dentro del bucle?
- ¿Un bucle FOR SCL TIA Portal solamente sirve para aumentar un valor?
- Un punto importante de los bucles FOR.
¿Para qué queremos utilizar un FOR SCL TIA Portal en nuestro proyecto?
En primer lugar, la función FOR la podemos definir como una ejecución de una serie de pasos que estarán procesándose mientras una variable de contaje permanezca activa. Por lo tanto, si queremos ejecutar un proceso en nuestro programa que se realice 10 veces seguidas, utilizaremos un bucle FOR. Una vez dentro del bucle FOR, ya podemos utilizar la sentencia IF ELSE en SCL TIA Portal y los IF anidados que nos permitirán controlar aún más el proceso.
Vamos a insertar un bucle FOR en nuestro bloque SCL.
Como primer paso necesitamos tener un bucle FOR en nuestro programa para empezar a estudiar sus propiedades. Por ello, tenemos que abrir un bloque en SCL en TIA Portal y nos iremos a la lista de instrucciones en el árbol del proyecto de la parte derecha de TIA Portal. En concreto, esta instrucción la encontraremos en la carpeta “Control de programa”.
Por lo tanto, una vez seleccionada, la arrastramos hasta nuestro bloque SCL y se insertará automáticamente. Como consecuencia de ello, nos aparece la sentencia con varios campos que faltan por rellenar, como cualquier otra función.
Explicamos la función FOR … TO … DO.
Casi que vamos a empezar por el bucle FOR más sencillo, ya que existen varias opciones de bucle FOR en TIA Portal, pero con este vamos a empezar. Por consiguiente, cuando insertamos un bucle FOR … TO … DO en SCL, tenemos que conocer varias variables que van a delimitar el bucle. Estas variables serán:
Variable de contaje.
Variable con el valor inicial.
Variable con el valor final.
Variable de contaje.
Como podemos ver en la imagen, al insertar la función en SCL nos aparecen 3 campos de color que se corresponden con las variables que hemos mencionado. La primera de ellas es la llamada “_counter_” que se corresponde con nuestra variable de contaje. Por ello, creamos una variable en TIA Portal en una tabla de variables, del tipo INT, donde se almacenará el número de contaje. Esta variable la desplazamos al bloque SCL en esa posición.
Aquí podemos destacar la utiliación de contadores en SCL, que son interpretados del mismo modo que en lenguaje KOP, pero que los podemos poner en un fragmento SCL, con su llamada y los parámetros típicos de un contador. Te lo explico al detalle para que sepas cómo utilizarlos:
Variable con el valor inicial.
Mientras tanto, en la variable con el valor inicial tendremos que colocar un “valor” o “variable” donde indiquemos desde qué valor va a empezar a contar. Por lo tanto, si colocamos un valor “0” le estaremos indicando que empezará a contar desde “0”. En cambio, si le colocamos un valor “10”, le estamos indicando que empiece a contar desde el valor “10”.
Asimismo, en lugar de colocar un valor, podemos insertar en esta posición una variable de tipo INT para indicar aquí el valor inicial. En un código de programa, por ejemplo, le puede meter un valor “0” cuando se active un proceso, o le puedes meter un valor “6” cuando se ejecute otro proceso.
Por consiguiente, podemos utilizar esta variable en la posición del bucle FOR destinada como el valor inicial. Como hemos visto en la imagen anterior, el valor de la variable será la que se le asigne con la función “MOVE”.
Variable con el valor final.
Igualmente ocurre con la opción del final del contaje. Es decir, tenemos que colocar un límite al contaje, ya sea mediante un valor numérico o mediante una variable declarada en TIA Portal. Por lo tanto, del mismo modo que hemos visto en el valor inicial, podemos colocar el valor límite en 100, por ejemplo. Como consecuencia, estamos indicando al bucle FOR que tiene que contar hasta llegar a 100 y, cuando llegue a 100, se saldrá del bucle.
¿Pero qué va a hacer exactamente el bucle FOR SCL TIA Portal?
Probablemente no sepamos aún la definición exacta del bucle, pero lo voy a resumir y se va a entender perfectamente, suponiendo un valor inicial de “0” y un valor final de “100”. Le estamos escribiendo en SCL en TIA Portal que, cuando la variable “Contaje” tenga un valor de “0” (Valor inicial), empiece a contar y ejecutar la sentencia que haya en el interior del bucle FOR. Este proceso lo va a realizar aumentando de 1 en 1 el valor de “Contaje” hasta llegar al valor “100” (Valor final).
La verdad es que dentro del bucle podemos programar cualquier sentencia, pero ¿sabrías hacer un SET RESET en SCL? ¿Cómo aplicamos esta función si no tenemos en SCL esta sentencia de SET en ninguna parte de las herramientas? Yo te lo explico al detalle para que sepas cómo se debe programar para crear ese SET y ese RESET:
¿Y qué ejecutamos dentro del bucle?
Finalmente nos queda programar un proceso dentro del bucle. Se me ocurren muchos ejemplos, pero vamos a empezar con un proceso muy sencillo. Por ello, mostramos cómo aumentar el valor de una variable 100 veces. Probablemente dirás que esto es muy fácil de interpretar, pero necesitas ver esto en primera instancia para entenderlo bien. Por consiguiente, solamente tenemos que colocar en una variable el valor de esa variable más “1”.
Ya que tenemos la imagen de arriba, se ve perfectamente lo que queremos hacer. ¿Qué hará el bucle FOR? El resultado de esto es que cada vez que el bucle aumente una posición, se sumará un “1” a la variable “ALMACENADO”. Por lo tanto, si el bucle se va a ejecutar del “0” al “100”, ¿Qué valor crees que tendrá la variable “ALMACENADO” cuando finalice la ejecución del bucle? Si has estado atento, seguro que has acertado, tendrá un “100”.
Pero, cuidado, el bucle FOR se ejecuta en cada ciclo de Scan. Por lo tanto, si no ponemos una condición de llamada al bucle FOR, cada ciclo va a ir sumando “100”, y otros “100” y otros “100”. Por esta razón hemos puesto un condicional IF para que, si el valor de “ALMACENADO” es menor de 100 que ejecute la suma de “+ 1”. Entonces, cuando “ALMACENADO” llegue a “100” ya no se le sumará más.
¿Un bucle FOR SCL TIA Portal solamente sirve para aumentar un valor?
Es evidente que la respuesta en NO. También podemos ejecutar cualquier otra sentencia dentro del bucle, utilizando una sentencia IF, o incluso IF..ELSE y buscar nuevas condiciones de activación.
Como resultado, vemos en la imagen anterior como hemos utilizado la sentencia IF..ELSE para colocar unas condiciones. Mediante estas condiciones lo que hacemos es activar o desactivar otra variable. Concretamente en este caso, cuando la variable “ALMACENADO” tenga un valor de “50” activará una variable llamada “Mitad_Activado”. Por lo contrario, cuando la variable “ALMACENADO” tenga un valor distinto de “50”, la variable llamada “Mitad_Activado” se desactiva. Ciertamente sigue siendo un ejemplo muy sencillo, pero ya te vas adentrando en la utilización del bucle FOR.
Un punto importante de los bucles FOR SCL TIA Portal.
Cuando se llama a un bucle FOR en TIA Portal se ejecuta todo el bucle en el mismo Ciclo de Scan. Por consiguiente, tenemos que tener en cuenta que, si utilizamos muchos bucles FOR en nuestro programa, se puede alargar mucho el Ciclo de Scan de la CPU y puede derivarse en un problema para nuestro proyecto.
Por último, no debes irte sin antes ver lo que realmente es programar con un lenguaje estructurado, el SCL de Siemens. Te explico al detalle todo lo que debes saber sobre el SCL para empezar y para refrescar la memoria en cuanto los términos de programación en este lenguaje que te permite estructurar el programa de forma diferente al KOP- Lo vemos:
Por cierto, si puede ser, déjame un comentario y dime lo que piensas sobre el artículo: bueno o malo, si crees que le falta algo, si te ha ayudado, lo que sea. De esta manera, yo podré mejorarlo y nos servirá a todos. Te contestaré en menos de 24h. Muchas gracias.