# Sprungmarken erstellen



## changi (8 April 2010)

Hallo an alle..  
ich möchte wissen wie sich sprungmarken in den verschiedenen Sprachen (Kop,FUP,AWL,ST) verhalten, wie ich sie einbinde. Habe das Internet durchwühlt nach Lektüre finde aber nix. Das ist jetzt meine letzte Hoffnung hier.:!:


----------



## changi (8 April 2010)

entschuldigt,...  es handelt sich hierbei um Twincat.... hab ich ganz vergessen


----------



## Hohlkörper (9 April 2010)

Sprungmarken brauchst du für Sprungoperationen. Für einen Sprung musst du ein Ziel vorgeben. Das Sprungziel wird mit der Sprungmarke angegeben.
Bei einem Sprung wird das Programm an der Stelle der Srungoperation unterbrochen und am Sprungziel weitergeführt.

Beispiel in AWL:


```
LD        DI1
AND        DI2
AND        DI3
AND        DI4

JMPC        MARK

LD        VAL1
ADD        1
ST        VAL

MARK:
LD        DI1
ANDN        DI2
ST        DO3
```
Beispiel in FUP:


----------



## changi (9 April 2010)

Danke sehr Hohlkörper aber jetzt mal etwas konkreter zu meinem Problem. Ich möchte einen BEDINGTEN SPRUNG  in einen Baustein machen welcher in AS geschrieben ist. (Ablaufsteuerung)...  geht das überhaupt??


----------



## changi (9 April 2010)

oder wie würdest du einen Bedingten Bausteinaufruf realisieren , aus einem FUP Baustein heraus mein ich??


----------



## libra1780 (9 April 2010)

soweit ich weiß können sprünge nur innerhalb eines bausteins geschehen, im falle von as, innerhalb eines schrittes.
da würd ich eher auf ne bool zurückgreifen in den codeblock nur ausführen falls true (IF)
ich selbst verwende sprünge NUR in fup, und auch SEHR selten, da es dort kein if gibt und in codesys der EN eingang fehlt (in s7-AWL natürlich auch  ). sprünge sind unsauber punkt-aus


----------



## changi (10 April 2010)

also welche Möglichkeiten habe ich denn einen Baustein nur bedingt aufzurufen??  geht das denn nicht ??  oder verwechsel ich das jetzt mit assembler??  das mach ich auch..  komisch


----------



## MasterOhh (10 April 2010)

```
IF Bedingung THEN
Funktionsbaustein();
end_if
```
???

Oder


```
FB(Freigabe:=TRUE/FALSE);
```


----------



## libra1780 (12 April 2010)

die möglichkeiten sind (fast) unbegrenzt. durch eine if abfrage kann überall im programm ein codefragment oder ein block nur bedingt aufgerufen werden. die bedingung kann dabei alles mögliche seid, eine variable x=4, eine schrittposition AS oder eine einfache bool.
anstatt einen baustein nur bedingt aufzurufen (wie megaohh scho geschrieben hat) kann man auch nur parameter ändern


```
Baustein.MaschieneEin := Wert > WertStart;
Baustein();
```
Oder (ist das selbe) 

```
Baustein ( MaschieneEin := Wert > WertStart);
```
wobei dann im baustein die bool richtig behandelt werden muss

```
IF MaschieneEin then
; (*irgendeincode maschiene ein *)
ELSE
; (*irgendeincode maschiene aus *)
END_IF
```
ich z.b. führe immer alle bausteine aus. ich bevorzuge dies, da ich wie im obigen beispiel bei maschiene aus auch einen bestimmtem code durchlaufen kann und diesen immer im gleichen baustein auffinden kann. wenn dann der baustein noch wie die maschiene oder der maschienenteil bezeichnet wird, ist eine bessere übersichtlichkeit schon vorab garantiert.


----------

