Continuando con el curso, hoy vamos a comenzar una serie de post en los que veremos los diferentes tipos de saltos en Step 7.
Esta serie de capítulos ya los hemos visto con anterioridad. Concretamente este capítulo lo hemos visto aquí.
¿Qué son los saltos en Step 7?

Como en cualquier lenguaje de programación, los saltos en step 7 no son mas que iterrupciones de la ejecución lineal del código, posicionándose en un nuevo punto (en general indicado por una etiqueta o meta) continuando normalmente con el programa desde este nuevo punto.
En el caso de los PLC estos saltos nos sirven para simular decisiones que en lenguajes de alto nivel se resuelven de otra forma, como por ejemplo con los IF/THEN-ELSE por poner un ejemplo.
Estas estructuras como tal no existen en AWL/FUP/KOP, sino que hay que fabricarlas por decirlo de alguna manera. La forma más sencilla de hacerlo es mediante el uso de saltos.
Los más importantes por su uso a mi juicio son SPA, SPB y SPBN.
SPA se usa para saltos incondicionales.
Es decir, cuando se ejecuta esta sentencia, la ejecución continua en la etiqueta que acompaña al operando de forma fija e incondicionada. No depende de nada. Salta y continua.
La forma de ejecución será la siguiente:
SPA META <<Código que no se ejecuta>>
META: <<continua el código>>
Tal y como esta representado, si se ejecuta la sentencia SPA META, el código entre esta sentencia y la META en sí, no se ejecutará nunca. ¿Entonces para qué sirve? Bueno, enseguida veremos como gestionar este tipo de cosas. De momento quédate con la idea de que SPA es un salto incondicional al META indicado.
SPB y SPBN se usan para saltos condicionados al valor del RLO
La diferencia fundamental entre ellos es que si usas SPB el salto se producirá si el RLO = 1, mientras que el salto usando SPBN se producirá si el RLO = 0. Por tanto, y análogamente su uso será de esta forma: <<Condición del salto>> SPB META (o SPBN META) <<Código que no se ejecuta>> META: <<continua el código>> Es decir, tras evaluar el resultado de la condición de salto (cero o uno), en fución de este. y del tipo de salto elegido (SPB o SPBN), se realizará el salto o no.¿Qué pasa si no se realiza el salto?
Buenísima pregunta. ¿qué crees que sucederá?. Efectivamente, que la ejecución del código continuará normalmente. Pongamos un mini ejemplo. L MW0 L MW2 ==I SPB IGUA L 1 L MW4 +I IGUA: NOP 0 <<Resto del programa>> Veamos. Lo que estamos haciendo es lo siguiente: cargamos el contenido del MW0 y MW2 en el ACU1 y ACU2. Luego hacemos una opeación de comparación de igualdad. Es decir, preguntamos si estos dos valores son iguales. El resultado de esta comparación será binaria (cero o uno) y estará cargado en el RLO. Bien, una vez tengamos el resultado de esta comparación decimos que si el RLO = 1, salte al meta IGUA. Entonces continuarça con el resto del programa. Ahora bien, si no se cumple la igualdad, se ejecutará el código que hace que la marca MW4 se incremente en una unidad... y seguirá con el resto del programa.¿Vale, vale... pero como construyo un IF-THEN-ELSE?
Pues haciendo una combinación de los saltos podemos hacer la lógica: IF Condición THEN Código si se cumple la condición ELSE Código si no se cumple la condición END IF¿Cómo lo hago con saltos en Step 7?
Pues usando los saltos así: Condición de salto SPBN ELSE Código si se cumple la condición SPA EXIT ELSE: NOP 0 Código si no se cumple la condición EXIT: NOP 0 Continuar con el código.¿Lo vemos con un ejemplo?
Siguiendo con el ejemplo inicial: L MW0 L Mw2 ==I SPBN ELSE L MW4 L 1 -I T MW4 ELSE: NOP 0 L MW4 L 1 +I T MW 4 EXIT: NOP 0 Es decir, cargamos MW0 y MW2. Evaluamos si son iguales o no. En función del resultado:- Si es igual, el resultado será RLO=1, y por tanto no hará el salto a la meta ELSE. Restará una unidad a MW4 y realizará un salto incondicional a la meta EXIT.
- Si no es igual, el resultado será RLO = 0, y por tanto SI hará el salto a la meta ELSE. Sumará una unidad a MW4 y continuará el programa.
Comentarios (8)