SPL_Schrittkette: Schritte in mehreren Schrittketten verwenden

cosmomaster

Level-2
Beiträge
72
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Spezis,
ich habe folgendes Anliegen,
wie ihr am Code erkennen könnt nutze ich für verschiedene SPL-Schrittketten die gleiche INT- Variable "STEPNUMBER". Das kann ich so machen weil bisher eh nie mehrere Schrittketten gleichzeitig abgearbeitet wurden. Das muss ich nun leider ändern. Ich möchte mir aber den Vorteil behalten Schritte in mehreren Schrittkette aufzurufen.

Wie kann ich das am smartesten bewerkstelligen?

Code:
[SIZE=1]NETWORK
TITLE =Dosierbetrieb Master und Slave im Verbund 
//Schrittkettenfreigabe Initialisierung und Schrittkoordination
      UN    #col.MasterErr; 
      U     #steps.Mix_Ausl; 
      U(    ; 
      O     #Pos_Fla.Metering_Compound; 
      O     #SPL_act6; 
      )     ; 
      SPBN  dct6; 

      L     #STEPNUMBER; 
      SPL   END6; 
      SPA   act6; 
      SPA   M001; //MASTER Umdrehungszahl Pumpe zurücksetzen
      SPA   M012; //SLAVE Umdrehungszahl Pumpe zurücksetzen
      SPA   M002; //MASTER Reglerfreigabe rücksetzen
      SPA   M013; //SLAVE Reglerfreigabe rücksetzen
      SPA   M003; //MASTER Pumpenfaktor vorgeben 
      SPA   M004; //MASTER Pumpenfaktor übernehmen 
      SPA   M005; //MASTER Pumpenfaktor übernehmen zurücksetzen
      SPA   M034; //VERBUND Pumpenfaktor vorgeben SLAVE über MASTER
      SPA   M028; //VERBUND Pumpenfaktor für SLAVE übernehmen vom MASTER aus
      SPA   M029; //VERBUND Pumpenfaktor für SLAVE rücksetzen vom MASTER aus
      SPA   M022; //MASTER Mischungsverhältnis Zähler (Lack) übergeben
      SPA   M023; //MASTER Mischungsverhältnis Nenner (Härter) übergeben
      SPA   M006; //MASTER Reglerfreigabe setzen 
      SPA   M030; //SLAVE Reglerfreigabe setzen
      SPA   M027; //MASTER Freigabe Volumenstrom übertragen
      SPA   M009; //MASTER Dosiervolumen vorgeben
      SPA   M031; //VERBUND Gemisch Dosierbetrieb starten
      SPA   M011; //MASTER oder MASTER-/SLAVE-Verbund Dosierbetrieb abgeschlossen
      SPA   M026; //VERBUND Gemisch Dosierbetrieb stoppen

END6: U     "VKE_1"; 
      R     #SPL_act6; 
      L     0; 
      T     #STEPNUMBER; 
dct6: NOP   0; 

NETWORK
TITLE =Drehzahlbetrieb Master
//Schrittkettenfreigabe Initialisierung und Schrittkoordination
      UN    #col.MasterErr; 
      U(    ; 
      O     #Pos_Fla.Drive_Master; 
      O     #SPL_act1; 
      )     ; 

      SPBN  dct1; 

      L     #STEPNUMBER; 
      SPL   END1; 
      SPA   act1; //Kette 1 aktiv
      SPA   M001; //MASTER Umdrehungszahl Pumpe zurücksetzen
      SPA   M002; //MASTER Reglerfreigabe rücksetzen
      SPA   M003; //MASTER Pumpenfaktor vorgeben 
      SPA   M004; //MASTER Pumpenfaktor übernehmen 
      SPA   M005; //MASTER Pumpenfaktor übernehmen zurücksetzen
      SPA   M006; //MASTER Reglerfreigabe setzen 
      SPA   M007; //MASTER Start Drehzahlbetrieb 
      SPA   M027; //MASTER Freigabe Volumenstrom übertragen 
      SPA   M008; //MASTER Stop Drehzahlbetrieb
END1: U     "VKE_1"; 
      R     #SPL_act1; 
      L     0; 
      T     #STEPNUMBER; 
dct1: NOP   0; 

TITLE =Überspringe Schritte um STEPNUMER nicht zu erhöhen
//Letztes Netzwerk vor Schritte
      SPA   ENDE; 

NETWORK
TITLE =Schrittkette aktiv


M000: S     #SPL_act; 

      SPBN  e000; 
      L     #STEPNUMBER; // Schrittnummer um
      +     1; // 1 erhöhe0
      T     #STEPNUMBER; // (Schrittweiterschaltung)
e000: SPA   ENDE; 

NETWORK
TITLE =MASTER Umdrehungszahl Pumpe zurücksetzen

M001: S     #M_PB_in.M_PB_in_Ctrl_Word.M_ResetCnt; 
      L     #M_PB_out.M_PB_out_Act_Volume; 
      L     0; 
      ==D   ; 

      R     #M_PB_in.M_PB_in_Ctrl_Word.M_ResetCnt; 
      SPBN  e001; 
      L     #STEPNUMBER; // Schrittnummer um
      +     1; // 1 erhöhen
      T     #STEPNUMBER; // (Schrittweiterschaltung)
e001: SPA   ENDE; 

NETWORK
TITLE =SLAVE Umdrehungszahl Pumpe zurücksetzen 

M012: S     #S_PB_in.S_PB_in_Ctrl_Word.S_ResetCnt; 
      L     #S_PB_out.S_PB_out_Act_Volume; 
      L     0; 
      ==D   ; 
      R     #S_PB_in.S_PB_in_Ctrl_Word.S_ResetCnt; 
      UN    #S_PB_in.S_PB_in_Ctrl_Word.S_ResetCnt; 
      SPBN  e012; 
      L     #STEPNUMBER; // Schrittnummer um
      +     1; // 1 erhöhen
      T     #STEPNUMBER; // (Schrittweiterschaltung)
e012: SPA   ENDE; 

NETWORK
TITLE =Letzter Schritt aller Ketten

M999: L     #STEPNUMBER; 
      L     1; 
      +I    ; 
      T     #STEPNUMBER; 
      UN    OV; 
      SAVE  ; 
      CLR   ; 
      U     BIE; 
      SPB   ENDE; 

[/SIZE]

 
Hallo,

Ich weiß jetzt zwar nicht genau, was du möchtest.....

aber warum nicht einfach eine (oder mehrere) Int-Schrittnummer Variablen hinzufügen. Die kannst ja dann unabhängig von den anderen hochzählen usw...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich weiß jetzt zwar nicht genau, was du möchtest.....

aber warum nicht einfach eine (oder mehrere) Int-Schrittnummer Variablen hinzufügen. Die kannst ja dann unabhängig von den anderen hochzählen usw...

Ich zähle in den angesprungenen Schritten die STEPNUMBER hoch. Wenn STEPNUMBER_1, STEPNUMBER_2 einführe welche soll ich dann hochzählen? Wie gesagt ich nutze die angesprungenen Schritte in verschiedenen Schrittketten die in Zukunft simultan ablaufen sollen.
 
Das kann ich so machen weil bisher eh nie mehrere Schrittketten gleichzeitig abgearbeitet wurden. Das muss ich nun leider ändern

soll heißen -- mehrere Schrittketten parallel?

Das bedeutet doch auch, daß die einzelnen Schrittzähler unabhängig von den anderen sein müssen.

Schritt 1 / Kette 1
Schritt 2 / Kette 1
Schritt 3 / Kette 1
Schritt 4 / Kette 1 ----->Schritt 1 / Kette 2
Schritt 5 / Kette 1_______Schritt 2 / Kette 2----->Schritt 1 / Kette 3
_______________________Schritt 3 / Kette 2----->Schritt 2 / Kette 3


z.B. bei Schritt 4 in Kette 1 wird die Schritt 1 Kette 2 angestoßen. "neue" Schrittvariable hochzählen usw...
 
Schritt 1 / Kette 1
Schritt 2 / Kette 1
Schritt 3 / Kette 1
Schritt 4 / Kette 1 ----->Schritt 1 / Kette 2
Schritt 5 / Kette 1_______Schritt 2 / Kette 2----->Schritt 1 / Kette 3
_______________________Schritt 3 / Kette 2----->Schritt 2 / Kette 3
Schöne Grafik, danke!

Das Problem ist doch das was du hier z.B. Schritt 1 nennst soll bei mir in allen Ketten ein und die selbe Sprungmarke sein (siehe im Code z.B. M001), nach dieser Sprungmarke muss ich wenn aufgrund der Kette 1 angesprungen #STEPNUMBER_1, wenn aufgrund der Kette 2 angesprungen #STEPNUMBER_2, ......., inkrementieren.

Kann ich dazu das inkrementieren von den eigentlichen Schritten entkoppeln?
 
Moin,

nach dieser Sprungmarke muss ich wenn aufgrund der Kette 1 angesprungen #STEPNUMBER_1, wenn aufgrund der Kette 2 angesprungen #STEPNUMBER_2, ......., inkrementieren.

Kann ich dazu das inkrementieren von den eigentlichen Schritten entkoppeln?

Indem du vom Aufrufenden eine Info mit gibst.

Code:
M020: U "IchKommeVonKette1"
SPN Inc2

L "StepnummerKette1"
+1
T "StepnummerKette1"

Inc2: U "IchKommeVonKette2"
SPN Ende

L "StepnummerKette2"
+1
T "StepnummerKette2"

SPA Ende
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,



Indem du vom Aufrufenden eine Info mit gibst.

Code:
M020: U "IchKommeVonKette1"
SPN Inc2

L "StepnummerKette1"
+1
T "StepnummerKette1"

Inc2: U "IchKommeVonKette2"
SPN Ende

L "StepnummerKette2"
+1
T "StepnummerKette2"

SPA Ende
Bei 2 Ketten ginge das noch stimmt. Ich denke ich zentralisiere das inkrementieren aber und mache es nicht in jedem Schritt. Gibt zwar ein mords gespringe aber was solls.
 
Zurück
Oben