Anda di halaman 1dari 5

Saltos en Step 7 (I) SPA , SPB y

SPBN (If -Then-Else)


Iigo Gtiez

Las operaciones de saltos en Step 7 son parecidas conceptualmente a los


que nos podemos encontrar en otros lenguajes: interrumpen la ejecucin
normal del programa (secuencial) y lo retoman en una etiqueta dada.

Los saltos tienen una serie de caractersticas y requisitos:

Constan de una condicin de salto y una direccin donde saltar (la


etiqueta).
La etiqueta puede tener como mximo 4 caracteres y el primer
carcter no puede ser un nmero.
Los saltos pueden ser incondicionales y condicionados.
Se distinguen en los nombres de las etiquetas entre maysculas y
minsculas (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 ms saltos
para poder hacer un CASE o un FOR-NEXT, pero de momento veremos
estos que son los ms simples y probablemente ms habituales.[divider]

Saltos en Step 7: SPA

La operacin de salto SPA es un salto incondicional, es decir, se ejecuta


siempre que se encuentre en el camino de la ejecucin del programa y no
depende del estado del RLO.

La sintxis ser de la siguiente forma:

SPA pepe

(cdigo que no se ejecutar)


pepe: NOP 0

(Cdigo que continuar ejecutndose)

Tras la etiqueta hay que escribir 2 puntos y obligatoriamente una


instruccin.

La instruccin NOP 0 es una instruccin nula. No hace nada de nada.


Ocupa 2 bytes en memoria y lleva un minsculo tiempo de ejecucin.
Adems slo es programable en AWL.

A mi personalmente me gusta colocar el NOP 0 tras la etiqueta por varios


motivos

Porque cuando ests colocando las etiquetas SPA u otras me gusta


colocar la etiqueta de salto inmediatamente despus. Como no s
cmo va a seguir el programa, coloco la NOP 0.
Si coloco una instruccin tras la etiqueta y maana borro la primera
instruccin tras el salto corro el peligro de no darme cuenta que
adems de la instruccin, he borrado tambin el salto.
A mi juicio queda ms limpio ya que todas las etiquetas siempre
llevarn el mismo empiece y es ms visible entre todo el cdigo.
Manas personales (la de ms peso probablemente de todas)

La operacin de salto SPA en general no ir sola ya que salvo en ocasiones


que quieras evitar la ejecucin de una parte del cdigo porque ests
depurando alguna parte, no tiene mucha utilidad en s misma.

Normalmente va a ir acompaada de otras instrucciones de salto,


complementando las acciones. En el vdeo de ejemplo podrs ver cmo se
pueden combinar.[divider]

Saltos en Step 7: SPB y SPBN (If /Then)

Estas dos operaciones de salto son condicionadas, es decir, dependen del


estado del RLO:
SPB: Se ejecutar el salto cuando el resultado
de la operacin booleana sea true (RLO = 1)
SPBN: Se ejecutar el salto cuando el
resultado de la operacin booleana sea
FALSE (RLO = 0)

En definitiva es lo que podramos llamar los IF-


THEN de otros lenguajes de programacin.
Saltos en Step 7
La sintxis ser de la siguiente forma:

Condicin booleana

SPB pepe

(cdigo que se ejecutar si RLO = 0 y no se ejecutar con RLO=1)

pepe: NOP 0

(Cdigo que continuar ejecutndose con o sin salto)

Evidentemente con SPBN sera idntico:

Condicin booleana

SPBN pepe

(cdigo que se ejecutar si RLO = 1 y no se ejecutar con RLO=0)

pepe: NOP 0

(Cdigo que continuar ejecutndose con o sin salto)

Como bien indica la sintxis el salto se produce si y slo si se produce la


condicin 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 cdigo
que est bajo la condicin de salto y la etiqueta se ejecutar normalmente
si la condicin de salto no se satisface.

Para que tengas una idea de cmo hacer un IF-THEN-ELSE la estructura


sera del estilo

Condicin 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 condicin de salto se cumple, saltamos al Etiq1 y ejecutamos el


cdigo del IF y continuamos evitando el cdigo del ELSE.
Si la condicin de salto NO se cumple, ejecutamos a continuacin el
cdigo del ELSE y hacemos un salto incondicional (SPA) para evitar y
no ejecutar el cdigo 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.[divider]

Cundo los voy a usar?


En general vas a usar estas instrucciones cuando el cdigo a evitar o no no
lleven aparejado un FC/FB ya que en otro caso, es ms simple crear una
booleana que te active la llamada a la funcion FB/FB que no andar con
saltos.

Es decir, la usar dentro de los FC/FB cuando el cdigo a ejecutar o a


esquivar sea pequeo y no merezca tener un FC/FB para ello ya que si el
cdigo va a ser muy largo, bajo mi punto de vista es mejor englobarlo en
una funcin para un mejor seguimiento y depuracin.[divider]

Existen ms tipos de saltos en Step 7?

Efectivamente hay otros tipos de salto para realizar otro tipos de tareas
como pueden ser los que se generan en otros lenguajes como son las
sentencias SELECT-CASE o FOR-NEXT entre otros.

Estos tipos de saltos los veremos en posteriores entradas.

Para finalizar, os dejo un video con un ejemplo de saltos donde ver los
conceptos vistos anteriormente.

[embedplusvideo height=281 width=450


standard=http://www.youtube.com/v/z611CvyJxvo?fs=1
vars=ytid=z611CvyJxvo&width=450&height=281&start=&stop=&rs=w&h
d=0&autoplay=0&react=1&chapters=&notes= id=ep8478 /]

Referencias:

Operaciones con saltos


Operaciones de saltos

Anda mungkin juga menyukai