# Schrittkette mit Sprung (Abzweig)



## neon (27 Februar 2007)

Hallo!
ich muss in eine Schrittkette einen Alternativabzweig programmieren, nachdem die Schrittkette 8 mal durchlaufen wurde.
Nach den 8 durchläufen soll die Maschine zu 1 fahren und wieder von neuem beginnen (ohne Unterbrechung).

Hier ist mein Programm, hat jemand eine Idee wo der Fehler liegen kann?

Der MW_Startposition wird im letzten Schritt um 1 hochgezählt, und soll bei 9 (also nach dem 8 durchlauf auf 0 gesetzt werden):

Der MW_Position wird in jeder Station der Maschine um 1 hochgezählt, damit das Programm weiß in welcher Station sich die Maschine befindet.

NW1: Schritt0 (Startschritt)
U( 
U #Position_unten
U #Position_Badmitte
UN #Position_oben
UN #Vorfahren
UN #Rueckfahren
U #ff320
O #Reset
O #Startpos_erreicht
) 
S #ff0
U #ff1
R #ff0
U #ff0
= #SR_0


NW2: Sprung3
L #MW_Startposition
L 8
==I 
SPB CAS3

NW3: Sprung1
L #MW_Startposition
L 8
>I 
SPB CAS1

NW4: Schritt1
U( 
O( 
L #MW_Position
L #MW_Startposition
<I 
) 
O #M_Startposition
) 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Vorfahren
UN #Rueckfahren
U #ff0
U #Programm_Automatik_ein
U #Programm_Autom_ein_stat
S #ff1
U( 
O #ff5
O #Reset
) 
R #ff1
U #ff1
= #SR_1

NW5: Sprung2
L #MW_Startposition
L 8
<=I 
SPB CAS2

NW6: Sprungziel1
CAS1: U #ff0
R #ff0

NW7: Zurückfahren auf Position 1 wenn MW2>=8
U( 
L #MW_Startposition
L 8
>=I 
) 
U #Programm_Automatik_ein
S #ff_rueckfahren
U( 
O #Startpos_erreicht
O #Reset
) 
R #ff_rueckfahren
U #ff_rueckfahren
= #SR_2

NW8: Fahren bis MW_Startposition=2
L #MW_Startposition
L 2
==I 
= #Startpos_erreicht

NW9: MW0-MW2-MW4-MW6 rücksetzen wenn Startposition erreicht ist
U #Startpos_erreicht
= L 0.0
U L 0.0
SPBNB _001
L 0
T "Absolutposition"
_001: NOP 0
U L 0.0
SPBNB _002
L 0
T "Startposition"
_002: NOP 0
U L 0.0
SPBNB _003
L 0
T "Wert_FU_Schnellfahrt"
_003: NOP 0
U L 0.0
SPBNB _004
L 0
T MW 6
_004: NOP 0

NW10: Sprungziel3
CAS3: U #ff0
R #ff0
S #ff_Sprung3

NW11: Sprungziel2 /Schritt5
CAS2: U( 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
U #ff1
O 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
U #Startpos_erreicht
O 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
U #ff_Sprung3
) 
S #ff5
U( 
O #ff10
O #Reset
) 
R #ff5
U #ff5
= #SR_5
R #ff_rueckfahren

NW12: Schritt 10
UN #Position_unten
U #Position_Badmitte
U #Position_oben
UN #Vorfahren
UN #Rueckfahren
U #ff5
S #ff10
U( 
O #ff15
O #Reset
) 
R #ff10
U #ff10
= #SR_10
R #ff_Sprung3


----------



## marlob (27 Februar 2007)

Hallo,

also was funktioniert denn und was funktioniert nicht????
Wo inkrementierst du deine MWs (MW_Startposition und MW_Position).
Auf jeden Fall nicht in dem Code den du gepostet hast.


marlob


----------



## neon (27 Februar 2007)

Hallo,

Es funktioniert alles, bis zum 8. durchlauf -dann ist 2 Schritte aktiv und ich weiß nicht wo der Fehler ist.
Das Problem ist, dass ich nach dem 8. Durchlauf die Schrittkette verlassen muss und die Maschine zur Startposition 1 fahren muss, dann geht alles wieder von vorne los.
Aber wie kann ich die Schrittkette für diesen Rückfahrschritt aussetzen, und bei 1 wieder setzen? 
Ich habe versucht diesen Rückfahrschritt durch die Sprünge zu realisieren, indem ich vergleiche welcher Wert im MW für den Startschritt steht.


Das Hochzählen der Position funktioniert mit ADD_I/SUB_I, das durch Näherungsschalter gezählt wird.
Und die Startposition wird mit dem letzten Schritt hochgezählt, und muss nach dem Rückfahrschritt wieder auf 0 gesetzt werden.

Ich hoffe jetzt wird mein Problem etwas klarer. :???:


----------



## kiestumpe (27 Februar 2007)

Hallo neon,

mache doch am Ende ne Verzweigung und setze den anderen Schritt verodert auf den 0-ten Schritt.

hth


----------



## neon (27 Februar 2007)

Hallo,
du meinst am Ende des Schritt 0 eine Abfrage, ob der MW_Starposition 8 ist und dann den Schritt für das Rückfahren aktivieren?

Habe ich das so richtig verstanden?

//Das würde aber so nicht funktionieren, da ich den Schritt1 überspringen muss wenn der 8. Ablauf fertig ist.


----------



## kiestumpe (27 Februar 2007)

also ehrlich gesagtwerd ich aus deiner Beschreibung nicht schlau. 

Mach dir nen Ablaufdiagramm und füge notfalls noch Hilfsschritte ein - dann funktionierts...

hth


----------



## neon (13 März 2007)

*Schrittkette mit Sprungverteiler*

Hallo!
Mich würde jetzt doch interressieren, wie ich eine Schrittkette mit dem Sprungverteiler realisieren könnte.
Wäre super, wenn mir das jemand kurz erklären könnte.

Ich habe in meinem SPS-Buch schon nachgeschaut, aber das Thema wird recht kurz abgehandelt.


Beispiel:

NW1: Schritt0 (Startschritt)
U( 
U #Position_unten
U #Position_Badmitte
UN #Position_oben
UN #Vorfahren
UN #Rueckfahren
U #ff320
O #Reset
O #Startpos_erreicht
) 
S #ff0
U #ff1
R #ff0
U #ff0
= #SR_0


NW11: Schritt5

U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
U #ff0
O 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
U #Startpos_erreicht
O 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
) 
S #ff5
U( 
O #ff10
O #Reset
) 
R #ff5
U #ff5
= #SR_5



Wie müsste ich das mit SPL machen?
Ich habe diesen Lösungsansatz:

SPL Schritt0
U( 
U #Position_unten
U #Position_Badmitte
UN #Position_oben ..............................<== Sprungbedingungen der Schritte
UN #Vorfahren
UN #Rueckfahren
O #Reset
O #Startpos_erreicht
) 
S #ff0
U #ff1
R #ff0
U #ff0
= #SR_0


SPL Schritt5
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
U #ff0
O 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren
U #Startpos_erreicht
O 
U #Position_Badmitte
UN #Position_oben
U #Position_unten
UN #Rueckfahren


SPL SchrittXY

SPA Schritt0

ON SPA Schritt 0.................................. <== Abarbeitung der Schritte
BEA ..........................................................wenn die Sprungbedingung erfüllt ist

SPA Schritt5 
U SR_0
= #SR_5

ON SPA Schritt 5
O #Reset SPB SPA Schritt 0 .................................<== Springe zum Schritt0 wenn Reset
BEA ........................................................................Gedrückt wurde.

Ich müsste ja einen Schritt nach dem anderen abarbeitet.... :-?


----------



## Ralle (13 März 2007)

```
L     "DATA_STATION_".STEPNUMBER   //das ist ein Byte
      SPL   ENDE
      SPA   LEER                        //Schritt 00 - Leerschritt
      SPA   STRT                        //Schritt 01 - Start, Teilekontrolle
      SPA   NHNL                        //Schritt 02 - Niederhalter abwärts
      SPA   BUNL                        //Schritt 03 - Bürstvorschub vorwärts
      SPA   LER1                        //Schritt 04 - Leerschritt
      SPA   BUZE                        //Schritt 05 - Ablauf Bürstzeit  
      SPA   OKAY                        //Schritt 06 - Abfrage Bürstergebnis
      SPA   BUHL                        //Schritt 07 - Bürstvorschub rückwärts
      SPA   NHHL                        //Schritt 08 - Niederhalter aufwärts  
      SPA   LER2                        //Schritt 09 - Leerschritt
      SPA   LETZ                        //Schritt 10 - letzter Schritt
ENDE: SPA   LEER


// Schritt 01 - Start, Teilekontrolle
STRT: SET   

//++++   Sprung zum Ende wenn kein Teil in Pos.  ++++
      U     "DATA_STATION_".Stat_Auto
      U(    
      ON    "DATA_PLANT_INFO".INFO_RT1_Nest_03.Teil_2_vorhanden
      ON    "DATA_GLOBAL_TECHNOLOGIE".Typ_Prod.Aktivieren.ST_10
      )     
      S     "DATA_STATION_".K_LAST_STEP
      SPB   LEER

//++++   wenn Teil v.h.-->nächster Schritt  ++++
      U     "DATA_PLANT_INFO".INFO_RT1_Nest_03.Teil_2_vorhanden
      U     "DATA_GLOBAL_TECHNOLOGIE".Typ_Prod.Aktivieren.ST_10
      O     
      U     "DATA_STATION_".Step_angewaehlt
      S     "DATA_STATION_".SK_NEXT_STEP_AUTO   //damit wird dann das Schrittbyte um 1 erhöht, beim nächsten Zyklus kommt man in den nächsten Schritt
      SPA   LEER

// Schritt 02 - Niederhalter abwärts
NHNL: SET   
      S     "DATA_STATION_".MSG_OUT_01_SET

      UN    "E s9 Niederhalter GS"
      S     "DATA_STATION_".SK_NEXT_STEP_AUTO
      SPA   LEER

// Schritt 03 - Bürstvorschub vorwärts
BUNL: SET   
      S     "DATA_STATION_".MSG_OUT_01_SET
      S     "DATA_STATION_".MSG_OUT_02_SET
      S     "DATA_STATION_".MSG_OUT_05_SET

      UN    "E s9 Niederhalter GS"
      UN    "E s9 Vorschubzyl. GS"
      U     "E s9 Klappe AS"
      UN    "E s9 Klappe GS"
      S     "DATA_STATION_".SK_FORCE_STEP
      SPA   LEER

// Schritt 04 - leer
LER1: SET   

      S     "DATA_STATION_".SK_FORCE_STEP
      SPA   LEER

// Schritt 05 - Ablauf Bürstzeit 
BUZE: SET   
      L     "DATA_GLOBAL_TECHNOLOGIE".Produktionsdaten[5]    //vorgegebene Bürstzeit vom TP
      L     10
      /I    
      T     "DATA_STATION_".SK_Waiting_Time

      S     "DATA_STATION_".SK_FORCE_STEP
      SPA   LEER

// Schritt 06 - Leerschritt
OKAY: SET   

      S     "DATA_STATION_".SK_FORCE_STEP
      SPA   LEER


// Schritt 07 - Bürstvorschub rückwärts
BUHL: SET   
      S     "DATA_STATION_".MSG_OUT_02_RES
      S     "DATA_STATION_".MSG_OUT_05_RES

      U     "E s9 Vorschubzyl. GS"
      UN    "E s9 Vorschubzyl. AS"
      U     "E s9 Klappe GS"
      UN    "E s9 Klappe AS"
      S     "DATA_STATION_".SK_NEXT_STEP_AUTO
      SPA   LEER

// Schritt 08 - Niederhalter aufwärts
NHHL: SET   
      S     "DATA_STATION_".MSG_OUT_01_RES

      U     "E s9 Niederhalter GS"
      UN    "E s9 Niederhalter AS"
      S     "DATA_STATION_".SK_NEXT_STEP_AUTO
      SPA   LEER

// Schritt 09 - Leerschritt
LER2: SET   

      S     "DATA_PLANT_INFO".INFO_RT1_Nest_03.Teil_2_Mantel_A
      S     "DATA_STATION_".SK_FORCE_STEP
      SPA   LEER

// Schritt 10 - letzter Schritt 
LETZ: SET   

      S     "DATA_STATION_".K_LAST_STEP  //Hiermit wird die Schrittkette abgeschlossen, ein "Endebit" gesetzt!

// Ende
LEER: NOP   0
```
Hier mal ein Beispiel, wie es in meinen Programmen vorkommt. Kannst auch mal nach "Schrittkette" oder "Sprungverteiler" hier im Forum suchen, da gibts glaube ich auch schon Erläuterungen zu diesem Thema.


----------



## neon (15 März 2007)

Danke, sowas habe ich gesucht.
Wie könnte ich auf diese Art eine Verzweigung einbauen?

z.B.: 
Wenn E0.0=1 dann führe Schritt1 aus, und dann weiter bei Schritt5

Wenn E0.1=1 dann führe Schritt2 aus, und dann weiter bei Schritt5

Und wenn ich Reset drücke springe zu Schritt0 und setzte alle anderen Schritte zurück.

Werden die SPL Anweisungen (Schritte 0-10) eigentlich automatisch nacheinander abgearbeitet?


----------



## Ralle (15 März 2007)

Bei SPL wird solange in die entsprechende Verzweigung gesprungen, bis eine neue Nummer in das Byte eingetragen wird. Ruf mal die Hilfe dazu in Step7 auf, ist ganz gut erläutert. Für die Weiterschaltung mußt du selbst sorgen.

Hier mal ein anderes Beispiel, mit Stepweiterschaltung:


```
NW1:

      L     #Stepcounter
      SPL   ALE2
      SPA   END
      SPA   T3S0                        //Tab 3 Seg 0
      SPA   T5S0                        //Tab 5 Seg 0
ALE2: SPA   END

NW2:

T3S0: NOP   0                           //;

      L     3
      T     #Send.Tabellennummer
      L     0
      T     #Send.Segmentnummer

//;

      U(    
      L     #Recive.Tabellennummer
      L     #Send.Tabellennummer
      ==I   
      )     
      U(    
      L     #Recive.Segmentnummer
      L     #Send.Segmentnummer
      ==I   
      )     
      SPBN  BUSY

      CALL  "BLKMOV"
       SRCBLK :=P#DIX 50.0 BYTE 13
       RET_VAL:=#Ret_Val_Temp
       DSTBLK :=#Tabelle_3.Segment_0    //P#DIX 148.0 BYTE 13     //Tabelle 3 Segment 0

      L     #Ret_Val_Temp
      L     0
      <>I   
      SPB   ERR

      SPA   NSTP

NW3:


T5S0: NOP   0                           //;

      L     5
      T     #Send.Tabellennummer
      L     0
      T     #Send.Segmentnummer

//;

      U(    
      L     #Recive.Tabellennummer
      L     #Send.Tabellennummer
      ==I   
      )     
      U(    
      L     #Recive.Segmentnummer
      L     #Send.Segmentnummer
      ==I   
      )     
      SPBN  BUSY

      CALL  "BLKMOV"
       SRCBLK :=P#DIX 50.0 BYTE 13
       RET_VAL:=#Ret_Val_Temp
       DSTBLK :=#Tabelle_5.Segment_0    //P#DIX 190.0 BYTE 13     //Tabelle 5 Segment 0

      L     #Ret_Val_Temp
      L     0
      <>I   
      SPB   ERR

      SPA   NSTP

NW4:

END:  NOP   0
      SET   
      R     #fn_Busy                    // set function ready
      L     0
      T     #fn_Error                   // set no error
      L     1
      T     #Stepcounter
      SPA   PGEM
//;
ERR:  L     0                           // reset statemachine
      T     #Stepcounter
      SET   
      R     #fn_Busy
      R     #Anlauf_Stat
      SPA   PGEM
//;
NSTP: NOP   0
      L     #Stepcounter
      INC   1                           // go to the next Step
      T     #Stepcounter
      SPA   PGEM
BUSY: L     0                           // set no error
      T     #fn_Error
      SET   
      S     #fn_Busy                    // set function busy
//;
PGEM: NOP   0
```


----------



## neon (28 Mai 2007)

*Spl*

Hallo,
ich habe nochmal versucht eine Schrittkette mit der Sprungleiste zu erstellen.

Aber nachdem ich Start gedrückt habe, schaltet die Schrittkette nicht in den nächsten Schritt weiter. Ich habe schon einige Beispiele im Forum durchgelesen, aber finde den Fehler nicht.

Die Schrittkette soll so funktionieren:
s0 ist die Grundstellung, und beim betätigen vom Start-Taster wird MB50 um 1 hochgezählt und schaltet somit zum Schritt1 (s1). Im Schritt1 werden die Aktionen ausgeführt, und zählt MB50 um 1 hoch wenn die Transitionen erfüllt sind....


NW1:
L MB 50 // Nummer des Sprungziels
SPL ende // Sprungziel, wenn > letzter
SPA s0 // Sprungziel, wenn = 0
SPA s1 // Sprungziel, wenn = 1
SPA s2 // Sprungziel, wenn = 2
SPA s3 // Sprungziel, wenn = 3
SPA s4 // Sprungziel, wenn = 4
SPA s5 // Sprungziel, wenn = 5

ende: SET 
L 0
T MB 50
BEA 

NW2:
s0: U E 0.0 //Starttaster
U E 1.7 //Endschalter Grundstellung
SPA next
BEA 

NW3:
s1: = A 4.1 //Aktionen

U E 1.0 //Transitionen zum nächsten Schritt
U E 1.1
SPA next //Sprung zum Bausteinende, und Schrittnummer um 1 erhöhen
BEA


NW4:
s2: = A 4.2 //Aktionen

U E 1.1 //Transitionen zum nächsten Schritt
U E 1.2
SPA next //Sprung zum Bausteinende, und Schrittnummer um 1 erhöhen 
BEA


NW5:
s3: = A 4.3 //Aktionen

U E 1.2 //Transitionen zum nächsten Schritt
U E 1.3
SPA next //Sprung zum Bausteinende, und Schrittnummer um 1 erhöhen
BEA 

NW6:
s4: = A 4.4 //Aktionen

U E 1.3 //Transitionen zum nächsten Schritt
U E 1.4
SPA next //Sprung zum Bausteinende, und Schrittnummer um 1 erhöhen
BEA 


NW7:
s5: = A 4.5 //Aktionen

U E 1.4 //Transitionen zum nächsten Schritt
U E 1.5
SPA next //Sprung zum Bausteinende, und Schrittnummer um 1 erhöhen
BEA 


NW8:
next: L MB 50
+ 1
T MB 50

NW9:
NOP 0

 

neon


----------



## Larry Laffer (28 Mai 2007)

Man kann es aber auch noch so machen :

```
u -Schritt_1
u -E1.0
s -Schritt_2
R -Schritt_1
 
u -Schritt_1
u -E1.1
s -Schritt_3
R -Schritt_1
 
... usw.
```


----------



## Ralle (28 Mai 2007)

neon schrieb:


> Hallo,
> ich habe nochmal versucht eine Schrittkette mit der Sprungleiste zu erstellen.
> 
> Aber nachdem ich Start gedrückt habe, schaltet die Schrittkette nicht in den nächsten Schritt weiter. Ich habe schon einige Beispiele im Forum durchgelesen, aber finde den Fehler nicht.
> ...


 
*SPA ?*
Du meinst sicher SPB!
Außerdem wär sicher nützlich ein Bit "Schrittkette läuft" und "Schrittkette fertig" zu haben.


----------



## Unregistrierter gast (28 Mai 2007)

Ralle schrieb:


> *SPA ?*
> Du meinst sicher SPB!



Ein gern gemachter Fehler.


----------



## neon (28 Mai 2007)

Danke für den Tip!

Die Programmvorlage mit SPA habe ich aus diesem Beitrag: 
http://www.sps-forum.de/showthread.php?t=4324&highlight=sprungleiste

Der SPA Aufruf habe ich so verstanden, dass der Sprung in jedem Fall stattfindet wenn die Transitionen erfüllt sind (oder liegt genau hier mein Denkfehler?).

Ist sonst alles richtig, wenn ich das in SPB ändere? :???: 

Ein Bit für "Schrittkette läuft" und "Schrittkette fertig" wäre schon nützlich, ein "Reset" fehlt auch noch. 

Mir geht es aber jetzt um die grundsätzliche Funktionsweise der SPL, da ich noch nie damit gearbeitet habe.


----------



## Unregistrierter gast (28 Mai 2007)

neon schrieb:


> Der SPA Aufruf habe ich so verstanden, dass der Sprung in jedem Fall stattfindet wenn die Transitionen erfüllt sind (oder liegt genau hier mein Denkfehler?).



SPA = Springe ABSOLUT (=immer)

SPB = Springe BEDINGT (wenn VKE =1)


----------



## Ralle (28 Mai 2007)

neon schrieb:


> Danke für den Tip!
> 
> Die Programmvorlage mit SPA habe ich aus diesem Beitrag:
> http://www.sps-forum.de/showthread.php?t=4324&highlight=sprungleiste
> ...


 
Hast Recht, das ist hier auch schon falsch:
http://www.sps-forum.de/showpost.php?p=24568&postcount=2

Sollte man mal editieren!
PS: So erledigt, mal für die Nachwelt richtiggestellt!


----------



## neon (31 Mai 2007)

Hallo,
ich habe das SPA durch SPB ersetzt, die Schrittweiterschaltung funktioniert jetzt einwandfrei.
Jetzt habe ich nur das Problem, das die Ausgänge nicht aktiviert werden.

Die Transitionen zum nächsten Schritt funktionieren, nur die Ausgänge kommen nicht.   

Muss ich da noch was beachten?



neon


----------



## neon (31 Mai 2007)

Ich habe das Problem jetzt so gelöst:

*NW1:*
L MB 50 // Nummer des Sprungziels
SPL ende // Sprungziel, wenn > letzter
SPA s0 // Sprungziel, wenn = 0
SPA s1 // Sprungziel, wenn = 1
SPA s2 // Sprungziel, wenn = 2
SPA s3 // Sprungziel, wenn = 3
SPA s4 // Sprungziel, wenn = 4
SPA s5 // Sprungziel, wenn = 5
ende: SET 
L 0
T MB 50
BEA 


*NW2:*
s0: U E 0.0 //Starttaster
U E 1.7 //Endschalter Grundstellung

SPB next
BEA 

*NW3:*
s1: SET //Aktionen
= #SR_0

U E 1.0 //Transitionen zum nächsten Schritt
U E 1.1
SPB next //Sprung zum Bausteinende, und Schrittnummer um 1 erhöhen
BEA 


*NW4:*
s2: SET //Aktionen
= #SR_1
CLR 
= #SR_0

U E 1.1 //Transitionen zum nächsten Schritt
U E 1.2
SPB next //Sprung zum Bausteinende, und Schrittnummer um 1 erhöhen 
BEA 


....aber ich finde diese Lösung etwas umständlich, da ich in jedem Schritt den vorhergehenden Ausgang rücksetzen muss.
Gibt es keine Möglichkeit den Ausgang nur solange zu setzen, bis der nächste Schritt aktiviert ist?

Wenn ich das SET weg lasse, wird der Ausgang nicht gesetzt. :shock:


----------



## Kai (31 Mai 2007)

Hallo neon,

hast Du Dir mal überlegt, eine ganz normale Schrittkette mit einer Alternativverzweigung zu programmieren? Eine solche Schrittkette kann man ohne Probleme auch in FUP programmieren und sie ist dann schön übersichtlich.  

Wenn Du willst, dann könnte ich zum Wochenende mal ein kurzes Beispiel hier ins Forum stellen.

Ich selbst bin ja kein besonderer Freund von Schrittketten mit Sprungleisten, aber das ist reine Geschmackssache.  

Gruß Kai


----------



## Ralle (31 Mai 2007)

neon schrieb:


> Ich habe das Problem jetzt so gelöst:
> 
> *NW1:*
> L MB 50 // Nummer des Sprungziels
> ...


 
Na ja, SPL und SPA beeinflussen das VKE nicht, insofern ist ein 

= A1.4 

wohl abhängig vom VKE vor der SPL, ein SET also sogar notwendig? Man kann das Set auch vor der SPL schreiben, das sollte reichen. 

Ich hab das Set immer nach der Sprungmarke stehen (M000: SET), daher ist mir das noch nie so aufgefallen, werde es mal testen.

So wie deine SK geschrieben ist, wo würden denn die Ausgänge zurückgesetzt werden? Wenn der nächste Schritt aktiv wird, wird ja 

= A1.4 

nicht mehr angesprungen, also auch nicht bearbeitet, dein Ausgang 1.4 würde auf 1 bleiben.

Ich nutze ein DBD aus meinem Stations-DB. Das setze ich vor der SPL immer auf Null,

L 0
T DB143.DBD120

Die einzelnen Bits setze ich in den entsprechenden Schritten, hinter der SPS (dann natürlich kein BEA in den Schritten verwenden, sondern SPA ENDE, mit Marke ENDE am Schluß der SK) kommt:

U DB143.DBX120.0
= A 1.4

So ist der Ausgang bei allen Schritten aktiv, in denen steht

S DB143.DBX120.0


----------



## neon (1 Juni 2007)

@Ralle:
Ich habe mir das mit den Schritten so gedacht:

NW2:
s0: = #SR_0

//Transitionen zu s1


NW3:
s1: = #SR_1

//Transitionen zu s2

die Ausgänge sind nur solange gesetzt, bis der nächste Schritt kommt.
So wie ich es jetzt mit SET und CLR realisiert habe muss ich immer, wie bei der Merkerbasierenden Schrittkette den vorhergehenden Schrittmerker rücksetzen. 
Wenn ich eine Schrittkette erweitere, wäre das etwas Zeitaufwändig.  

Allerdings kenne ich mich mit AWL nicht gut aus, deswegen meine Frage ob es eine Möglichkeit gibt die Ausgänge solange zu setzen bis der nächste Schritt aktiv ist (= A 4.1 funktioniert nicht).

Könntest du evtl. ein S7-Projekt mit einer SPL-Schrittkette in den Download stellen? 
Dann könnte ich mir die Funktionsweise mit Reset, Startbit, Schrittkettenbit usw. anschauen. :s17:


----------



## Ralle (1 Juni 2007)

neon schrieb:


> @Ralle:
> Ich habe mir das mit den Schritten so gedacht:
> 
> NW2:
> ...




Das hab ich doch oben geschrieben:
http://www.sps-forum.de/showpost.php?p=84674&postcount=21

vor der SPL 

L 0
T MD10 (z.Bsp.)

in den Schritten

in Schritt 1
S M10.0


...

nach den Schritten

U M 10.0
= A1.4



Allerdings, da wo im Moment BEA steht schreibst du SPA ENDE

und nach allen Schritten steht zuerst

ENDE: NOP 0

Dann kannst du ab hier deine Ausgänge ala

U M10.0
= A 1.4

bringen.

Meine Schrittkettenbausteine bringen dir da nicht soviel, die sind wesentlich umfangreicher und ich habe für die Schrittweiterschaltung einen eigenen Baustein, der noch so einiges mehr macht. Eh du dich da reingearbeitest hättest...


----------

