Las operaciones de saltos en Step 7 son parecidas conceptualmente a los que nos podemos encontrar en otros lenguajes: interrumpen la ejecución normal del programa (secuencial) y lo retoman en una etiqueta dada.
Los saltos tienen una serie de características y requisitos:
- Constan de una condición de salto y una dirección donde saltar (la etiqueta).
- La etiqueta puede tener como máximo 4 caracteres y el primer carácter no puede ser un número.
- Los saltos pueden ser incondicionales y condicionados.
- Se distinguen en los nombres de las etiquetas entre mayúsculas y minúsculas ("aaa" no es la misma etiqueta que "AAA")
En la entrada de hoy vamos a ver un salto incondicional (SPA) y dos condicionados (SPB y SPBN). Te mostraré en futuras entradas más saltos para poder hacer un CASE o un FOR-NEXT, pero de momento veremos estos que son los más simples y probablemente más habituales.
Saltos en Step 7: SPA
La operación de salto SPA es un salto incondicional, es decir, se ejecuta siempre que se encuentre en el camino de la ejecución del programa y no depende del estado del RLO.
La sintáxis será de la siguiente forma:
....
SPA pepe
(código que no se ejecutará)
pepe: NOP 0
(Código que continuará ejecutándose)
...
Tras la etiqueta hay que escribir 2 puntos y obligatoriamente una instrucción.
La instrucción NOP 0 es una instrucción nula. No hace nada de nada. Ocupa 2 bytes en memoria y lleva un minúsculo tiempo de ejecución. Además sólo es programable en AWL.
A mi personalmente me gusta colocar el NOP 0 tras la etiqueta por varios motivos
- Porque cuando estás colocando las etiquetas SPA u otras me gusta colocar la etiqueta de salto inmediatamente después. Como no sé cómo va a seguir el programa, coloco la NOP 0.
- Si coloco una instrucción tras la etiqueta y mañana borro la primera instrucción tras el salto corro el peligro de no darme cuenta que además de la instrucción, he borrado también el salto.
- A mi juicio queda más limpio ya que todas las etiquetas siempre llevarán el mismo empiece y es más visible entre todo el código.
- Manías personales (la de más peso probablemente de todas)
La operación de salto SPA en general no irá sola ya que salvo en ocasiones que quieras evitar la ejecución de una parte del código porque estés depurando alguna parte, no tiene mucha utilidad en sí misma.
Normalmente va a ir acompañada de otras instrucciones de salto, complementando las acciones. En el vídeo de ejemplo podrás ver cómo se pueden combinar.
Saltos en Step 7: SPB y SPBN (If /Then)
Saltos en Step 7Estas dos operaciones de salto son condicionadas, es decir, dependen del estado del RLO:
- SPB: Se ejecutará el salto cuando el resultado de la operación booleana sea true (RLO = 1)
- SPBN: Se ejecutará el salto cuando el resultado de la operación booleana sea FALSE (RLO = 0)
En definitiva es lo que podríamos llamar los IF- THEN de otros lenguajes de programación.
La sintáxis será de la siguiente forma:
....
Condición booleana
SPB pepe
(código que se ejecutará si RLO = 0 y no se ejecutará con RLO=1)
pepe: NOP 0
(Código que continuará ejecutándose con o sin salto)
...
Evidentemente con SPBN sería idéntico:
....
Condición booleana
SPBN pepe
(código que se ejecutará si RLO = 1 y no se ejecutará con RLO=0)
pepe: NOP 0
(Código que continuará ejecutándose con o sin salto)
...
Como bien indica la sintáxis el salto se produce si y sólo si se produce la condición de salto (RLO=0 ó 1 dependiendo de si elijes SPB o SPBN). Esto implica, y quiero dejarlo bien claro aunque sea una obviedad, que el código que está bajo la condición de salto y la etiqueta se ejecutará normalmente si la condición de salto no se satisface.
Para que tengas una idea de cómo hacer un IF-THEN-ELSE... la estructura sería del estilo
...
Condición IF
SPB Etiq1
(Codigo ELSE)
SPA Etiq2
Etiq1: NOP 0
(Codigo del IF)
Etiq2: NOP 0
...
Como puedes ver, hemos combinado el SPB con el SPA de forma que:
- Si la condición de salto se cumple, saltamos al Etiq1 y ejecutamos el código del IF y continuamos evitando el código del ELSE.
- Si la condición de salto NO se cumple, ejecutamos a continuación el código del ELSE y hacemos un salto incondicional (SPA) para evitar y no ejecutar el código del IF saltando al Etiq2.
Como veis estas instrucciones empiezan a ser interesantes ya que nos van a dar bastante juego a la hora de realizar nuestros programas.
Comentarios (13)