# if then else unter awl ??



## prinz1978 (22 Juli 2008)

hallo,

wie könnte man so etwas wie if then else befehle in awl programmieren mit sprungmarken ?? wenn ja könnt ihr ein paar beispiele reinstellen um nachvollziehen zu können.


mfg


----------



## vierlagig (22 Juli 2008)

```
*
      U     E      0.0
      SPB   then
      SPBN  else
then: =     A      0.0
      SPA   ifen
else: =     A      1.0
ifen: NOP   0
```


----------



## Deltal (22 Juli 2008)

In SCL sieht das schöner aus.. *duck wegrenn*


----------



## vierlagig (22 Juli 2008)

Deltal schrieb:


> In SCL sieht das schöner aus.. *duck wegrenn*



über geschmack läßt sich streiten oder auch nicht - keine ahnung wie das genau hieß


----------



## Grubba (22 Juli 2008)

```
U     E      0.0
      SPB   then
      SPBN  else
then: =     A      0.0
      SPA   ifen
else: =     A      1.0
ifen: NOP   0
```
 
Das SPBN sollte wohl besser durch ein SPA ersetzt werden, da ein bedingter Sprung das VKE auf 1 setzt. Wenn E0.0 false ist, wird so trotzdem nicht in den Else-Zweig gesprungen.


----------



## vierlagig (22 Juli 2008)

Grubba schrieb:


> Das SPBN sollte wohl besser durch ein SPA ersetzt werden, da ein bedingter Sprung das VKE auf 1 setzt. Wenn E0.0 false ist, wird so trotzdem nicht in den Else-Zweig gesprungen.



es sollte auf jeden fall durch ein SPA ersetzt werden - recht du hast

und damit der test auch funktioniert:


```
*
      U     E      0.0
      SPB   then
      SPA   else
then: =     A      0.0
      R     A      0.1
      SPA   ifen
else: =     A      0.1
      R     A      0.0
ifen: NOP   0
```


----------



## prinz1978 (22 Juli 2008)

hallo, 

wie ist das dann genau mit lade und transeriere ?? angenommen ich muss 2 werte vergleichen wenn ergebnis ok dann ein anderes wert laden sonst wieder ein anderes wert dann wieder vergleichen unsw.

mfg


----------



## Larry Laffer (22 Juli 2008)

Dann nimmst du statt "U E 0.0" an gleicher Stelle deinen Vergleich rein ...

Wäre es nicht sinnvoller, du fragst nach der kompletten Aufgabenstellung ?

Gruß
LL


----------



## prinz1978 (22 Juli 2008)

ok ich möchte 1 wert vergleichen wenn der wert kleiner oder gleich ist als max_grenze und grösser gleich wie min_grenze ist dann wird der defaultwert übernommen.

mfg


----------



## Larry Laffer (22 Juli 2008)

Du meinst sicher, dass du den Wert akzeptierst, wenn er zwischen min.- und max.-Grenze ist und ansonsten den Defaultwert wieder laden möchtest .,..

Das ginge dann so ...

```
L #Eingabe
L #min_Wert
< R
SPB xChk
L #Eingabe
L #max_Wert
> R
SPB xChk
SPA OK
 
xChk: L #Default
T #Eingabe
OK: nop 0
```
oder so :

```
U(
L #Eingabe
L #min_Wert
>=R
)
u(
L #Eingabe
L #max_Wert
<=R
)
SPB OK
 
 L #Default
T #Eingabe
OK: nop 0
```
Gruß
LL


----------



## prinz1978 (22 Juli 2008)

danke für die lösung wo sind denn jetzt die if then bedingungen ?? zu sehen im code?



L MW 10 // if
L MW 20
<I 
SPB xChk //then

L MW 10 //if
L MW 40
>I 
SPB xChk //then
SPA OK //else

xChk: L MW 60 //then
T MW 10
OK: NOP 0 //endif

so ???


----------



## Larry Laffer (22 Juli 2008)

So in etwa, wie du es kommentiert hast, sollte es OK sein ...


----------



## Gerri (23 Juli 2008)

vierlagig schrieb:


> ```
> *
> U     E      0.0
> SPB   then
> ...


 

zu beginn solltest du die in den Sprüngen gesetzten Bits Rücksetzen!
oder in den anderen Sprüngen rücksetzen

u #signal_high             // permanentes True Signal
R A0.0
R A1.0

U E 0.0
...
...


----------



## vierlagig (23 Juli 2008)

@gerri: lies den ganzen thread


----------



## Gerri (23 Juli 2008)

stimmt. mein Fehler!


----------

