Step 7 Sprungmarken in STEP7

the bimo

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

habe da ein rage zu einem Programmabschnitt, denn wenn ich die Funktionen mit der STEP7 Baugruppensimulation testen möchte, geht diese auf STOp & SF.


Hier der Programmauschnitt, denn ich mir mit Sprüngen überlegt habe:

NW1:

UN E14.0
UN E14.1
UN E14.2
UN E14.3
= "HM_KPA"

NW2:

//Keine Position angewählt
KPA: U "HM_KPA"
SPBN POS1

//Position 1 anwaehlen
POS1: U "HM_POS1"
UN "HM_KPA"
L "DB_Folienauszug".FAZ_Position_1
T "DB_Folienauszug".Positionsaufruf
SPBN POS2

//Position 2 anwaehlen
POS2: U "HM_POS2"
U "HM_KPA"
L "DB_Folienauszug".FAZ_Position_2
T "DB_Folienauszug".Positionsaufruf
SPBN POS3

//Position 3 anwaehlen
POS3: U "HM_POS3"
U "HM_KPA"
L "DB_Folienauszug".FAZ_Position_3
T "DB_Folienauszug".Positionsaufruf
SPBN POS4

//Position 4 anwaehlen
POS4: U "HM_POS4"
U "HM_KPA"
L "DB_Folienauszug".FAZ_Position_4
T "DB_Folienauszug".Positionsaufruf
SPBN KPA

Da ich noch nicht wirklich mit Sprüngen gearbeitet habe und dies mit erster Versuch ist, denke ich mal das ich hier einen groben Schnitzer gemacht habe!?

MfG

Timo
 
//Keine Position angewählt
KPA: U "HM_KPA"
SPBN POS1

//Position 1 anwaehlen
POS1: U "HM_POS1"
UN "HM_KPA"
//----------------------------------------------------> Lade/Transfer-Befehle werden unabhängig von Binärverknüpfungen immer ausgeführt, eigentlich solltest du diese überspringen...
L "DB_Folienauszug".FAZ_Position_1
T "DB_Folienauszug".Positionsaufruf
//----------------------------------------------------> So werden sie immer ausgeführt.
SPBN POS2

//Position 2 anwaehlen
POS2: U "HM_POS2"-----------------------------> Hier springst du direkt auf die Sprungmarke, kein Code dazwischen, also nix zu überspringen da....

//......

//Position 4 anwaehlen
POS4: U "HM_POS4"
U "HM_KPA"
L "DB_Folienauszug".FAZ_Position_4
T "DB_Folienauszug".Positionsaufruf
SPBN KPA------------------------------------------> Hier geht die CPU wahrscheinlich auf Stopp, Rücksprung ergibt eine Endlosschleife.

Das müsste eher so aussehen...
Code:
NW1:


UN E14.0
UN E14.1
UN E14.2
UN E14.3
= "HM_KPA"


NW2:


//Keine Position angewählt
KPA: U "HM_KPA"
[COLOR=#ff0000]SPBN POS1-------------------------------> Auch hier ist kein Code der übersprungen werden kann... also sinnlos.[/COLOR]


//Position 1 anwaehlen
POS1: U "HM_POS1"
UN "HM_KPA"
[COLOR=#ff0000]SPBN POS2------------------------------->Überspringe Lade/Transfer[/COLOR]
L "DB_Folienauszug".FAZ_Position_1
T "DB_Folienauszug".Positionsaufruf


//Position 2 anwaehlen
POS2: U "HM_POS2"
U "HM_KPA"
[COLOR=#ff0000]SPBN POS3[/COLOR]
L "DB_Folienauszug".FAZ_Position_2
T "DB_Folienauszug".Positionsaufruf


//Position 3 anwaehlen
POS3: U "HM_POS3"
U "HM_KPA"
[COLOR=#ff0000]SPBN POS4[/COLOR]
L "DB_Folienauszug".FAZ_Position_3
T "DB_Folienauszug".Positionsaufruf


//Position 4 anwaehlen
POS4: U "HM_POS4"
U "HM_KPA"
[COLOR=#ff0000]SPBN MEnd[/COLOR]
L "DB_Folienauszug".FAZ_Position_4
T "DB_Folienauszug".Positionsaufruf

[COLOR=#ff0000]MEnd: Nop 0[/COLOR]
Code proudly sponsored by [CODE][/CODE]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir erschliesst sich das ganze ehrlich gesagt nicht :confused:

Code:
//Position 1 anwaehlen
POS1: U     "HM_POS1"
      UN    "HM_KPA"
      L     "DB_Folienauszug".FAZ_Position_1
      T     "DB_Folienauszug".Positionsaufruf
      [B]SPBN  POS2[/B]

//Position 2 anwaehlen
[B]POS2:[/B] U     "HM_POS2"
      U     "HM_KPA"
      L     "DB_Folienauszug".FAZ_Position_2
      T     "DB_Folienauszug".Positionsaufruf
      SPBN  POS3

Also SPBN ist Sprung bei VKE=0 ... (SPB bei VKE = 1)
Wenn der Code genau so steht sind die Sprünge eh Sinnfrei, da das Sprungziel eh die nächste Anweisung ist!
D.h. egal ob Sprung oder nicht, es wird die nächste Zeile bearbeitet (da je eh Sprungziel) ...
Siemens hat bzgl. Sprünge ja immer im Step 7 Beispiele hinterlegt, welche man ja mit F1 aufrufen kann :cool:!


Für mich stellt sich eher die Frage, ob der Code nicht so aussehen sollte?
Code:
//Position 1 anwaehlen
POS1: U     "HM_POS1"
      UN    "HM_KPA"
      [B]SPBN  POS2[/B]
L     "DB_Folienauszug".FAZ_Position_1
      T     "DB_Folienauszug".Positionsaufruf

//Position 2 anwaehlen
[B]POS2:[/B] U     "HM_POS2"
      U     "HM_KPA"
[B]       SPBN  POS3[/B]
L "DB_Folienauszug".FAZ_Position_2
      T     "DB_Folienauszug".Positionsaufruf
      

[B]oder[/B]





//Position 1 anwaehlen
POS1: U     "HM_POS1"
      UN    "HM_KPA"
      [B]SPBN  POS2[/B]       --> Wenn VKE = 0 dann Sprung 
L     "DB_Folienauszug".FAZ_Position_1
[B]spa posA[/B]

//Position 2 anwaehlen
[B]POS2:[/B] U     "HM_POS2"
      U     "HM_KPA"
      SPBN  POS3
L     "DB_Folienauszug".FAZ_Position_2
[B]spa posA[/B]

... weiterer Code 

[B]posA:[/B] T     "DB_Folienauszug".Positionsaufruf


RONIN war schneller :ROFLMAO:
 
Danke gilt euch beiden!

Ich werde mich gleich mal dran setzten und es testen! Aber jetzt woch ich meinen groben Schnitzer entdeckt habe, erschließt sich mir auch der Folgefehler was die CPU angeht.

Ich werde dann berichten.
 
Hatte in der Zwischenzeit (von mienem Post bis zu eurer Antwort) noch einen anderen Weg gefunden, welcher aber aufwändiger einzugeben war und das ganze nur unüberischtlicher gestaltete.
Mit euer Hilfe, hat sich das ganze um ein vielfaches vereinfacht!

Nochmals 1000 Dank und noch einen angenehmen Tag.
 
Zurück
Oben