Schiebebefehl "Schiebe Links"

torstenh

Level-1
Beiträge
47
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe eine Frage zum Schiebebefehl.
Habe hier eine Schrittkette, diese würde ich gern mit einem Schiebe Links Befehl intern überwachen. Das heißt das bei jedem Schritt z.B. das DB1.DBW0 immer um ein Bit nach link verschoben wird so das man im DB einsehen kann in welchem Schritt man sich befindet und welcher Schritt gerade gesetzt ist. Sicher kann ich hier auch das MB abfagen aber ich wollte es mit einem Schiebebefehl testen. Die Abfrage des MB`s bringt das gleiche Ergebnis mit L MB T DB aber wäre für mich mal was anderes.
Komme aber nicht da hin wo ich hin möchte.

Code:
//+++++Start Schrittkette mit Schritt 0+++++
      UN    "Schritt0"
      U     E      0.0
      S     "Schritt0"
//+++++Schritt 1+++++
      U     "Schritt0"
      UN    "Schritt1"
      UN    "Schritt2"
      UN    E      0.0
//Schrittweiterschaltbedingung  "Start"
      U     E      0.1
//Schrittweiterschaltbedingung "Ende"
      S     "Schritt1"
      R     "Schritt0"
//+++++Schritt 2+++++
      U     "Schritt1"
      UN    "Schritt2"
      UN    "Schritt3"
//Schrittweiterschaltbedingung  "Start"
      U     E      0.2
//Schrittweiterschaltbedingung "Ende"
      S     "Schritt2"
      R     "Schritt1"
//+++++Schritt 3+++++
      U     "Schritt2"
      UN    "Schritt3"
      UN    "Schritt4"
//Schrittweiterschaltbedingung  "Start"
      U     E      0.3
//Schrittweiterschaltbedingung "Ende"
      S     "Schritt3"
      R     "Schritt2"
//+++++Schritt 4+++++
      U     "Schritt3"
      UN    "Schritt4"
      UN    "Schritt5"
//Schrittweiterschaltbedingung  "Start"
      U     E      0.4
//Schrittweiterschaltbedingung "Ende"
      S     "Schritt4"
      R     "Schritt3"
//+++++Schritt 5+++++
      U     "Schritt4"
      UN    "Schritt5"
      UN    "Schritt6"
//Schrittweiterschaltbedingung  "Start"
      U     E      0.5
//Schrittweiterschaltbedingung "Ende"
      S     "Schritt5"
      R     "Schritt4"
//+++++Schritt 6+++++
      U     "Schritt5"
      UN    "Schritt6"
      UN    "Schritt7"
//Schrittweiterschaltbedingung  "Start"
      U     E      0.6
//Schrittweiterschaltbedingung "Ende"
      S     "Schritt6"
      R     "Schritt5"
//+++++Schritt 7+++++
      U     "Schritt6"
      UN    "Schritt7"
//Schrittweiterschaltbedingung  "Start"
      U     E      0.7
//Schrittweiterschaltbedingung "Ende"
      S     "Schritt7"
      R     "Schritt6"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das könnte so aussehen ...

Code:
//Hier Deine Schrittkette
//und dann ...
 
        L "Hilfsmerkerbyte"
        L "Schrittmerkerbyte"
        <>I
        = "Flankenmerker"
        T "Hilfsmerkerbyte"
 
        U "Flankenmerker"
        SPBN M1
        L DB1.DBW0
        SLW 1
        T DB1.DBW0
M1:   ....

Allerdings musst Du mit dem ersten Schritt das DB1.DBX0.0 mit "1" vorbelegen (in diesem Fall ohne schieben), sonst gibt es ja in den nächsten Schritten nix zu schieben (ausser nullen).

Gruß
 
Übrigens könnten in Deiner "seriellen" Schrittkette mehrere Schrittmerker gleichzeitig aktiv werden.
Wenn z.B. Schritt 1 gesetzt ist könnte Schritt 0 wieder gesetzt werden, wenn E 0.0 nochmal kommt.

Warum nicht so lösen ...

Code:
//Schritt 0
L "Schrittmerkerbyte"
L 0
==I
U E 0.0
S "Schritt 0"
 
//Schritt 1
U "Schritt 0"
U E 0.1
S "Schritt 1"
R "Schritt 0"
 
//Schritt 2
U "Schritt 1"
U E 0.2
S "Schritt 2"
R "Schritt 1"
 
...
 
//Am Ende
U "Schritt 7"
U E 0.7
R "Schritt 7"
 
in Die Kette Implementiert könnte es so aussehen:

Code:
      U     "Schritt4"
      UN    "Schritt5"
      UN    "Schritt6"
//Schrittweiterschaltbedingung  "Start"
      U     E      0.5
      SPBN SCH6
//Schrittweiterschaltbedingung "Ende"

      L     DB1.DBW0
      SLW1
      T     DB1.DBW0

      SET
      S     "Schritt5"
      R     "Schritt4"
SCH6: NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
UN    "Schritt0"
      U     E      0.0
UN Schritt1            // ich glaube der hatte noch gefehlt
      S     "Schritt0"

Die Schrittkette sollte nicht erst am Ende resetet werden. Es ist ein Transportsystem. Wenn ich hier erst warte bis ein Produkt am letzten Förderer angekommen ist, dauert es zu lange. Als Kollisionssicherheit werden die Schritte immer mit dem 2. Schritt verriegelt. Heißt erst wenn Schritt1 nicht mehr aktiv ist (das Produkt im Schritt2) dann kann Schritt0 neu starten.

Danke!
 
Zuletzt bearbeitet:
Schrittkette

Dieser verhau mit den Merkern ist doch ziemlich unübersichtlich. Warum nimmst du nicht die dafür vorgesehene Funktion?

u m_neuanlauf //Reset bei Hochlauf
spb RES

L Schritt //Zustandbyte
spl RES
spa S00 //Schritt 0
spa S01 //Schritt 1
(usw)
RES: L 0 //Reset
T Schritt
spa END

S00: un e0.0 //warte auf Start
spb END
s A0.0 //jetzt gehts los
spa NEXT //naechster Schritt

S01: u E0.0 //mach irgend was
spb END
spa NEXT

(usw)

Sxx: spa RES //fertig, wieder von vorne

NEXT: L Schritt
inc 1
T Schritt
END: nop 0

Wenn du dir 'Schritt' anschaust dann siehst du genau in welchem Schritt die Schrittkette gerade ist.

Schritt muss ein statisches Byte sein, Merkerbyte oder DB.
Wenn du Schritt
 
Hallo Thorsten,
was du hier also machst / hast ist eine Art Strecken-Steuerung.
Von wievielen einzelnen Förder-Abschnitten ist hier die Rede ?
Ich würde für JEDES Fördersegment eine Schrittkette machen (und nicht für den ganzen Strang eine) und damit deren Belegung bzw. deren Freiwerden nachvollziehen zu können. Entsprechend des Zustandes dieser Schrittketten kannst du dann auch jeweils den nächsten Einfördervorgang freiben. M.E. benötigst du dann auch keine weitere nebenher erfolgende Kontrolle des Förderns.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

es ist nun meine zweite Frage und es freut mich echt das man hier so Klasse geholfen wird!!!!!!
....das musst ich mal loswerden!!!!

Ich denke ich bin noch ein blutiger Anfänger was SPS Programmierung bedeutet.
Es gibt bestimmt sehr viele Wege um dort hin zu kommen. Benötige noch ein wenig Programmiererfahrung aber mit der Hilfe durch das Forum wird das schon klappen.

@awl442 ich habe noch nicht mit dieser Funktion gearbeitet, aber sie schaut interessant aus.

@Larry Laffer
Es handelt sich um 6 Förderstrecken. Die Idee für jeden Förderer eine Kette zu machen finde ich gut. Ist ein Denkanstoß für neue Projekte.

Manchmal hilft eben ein Funke um einen Waldrand auszulösen. Die Überwachung der Schritte werde ich mal weiterverfolgen ich denke da kommen noch viele Einfälle was ich damit so alles machen kann.

Gruß
Torsten
 
Zuletzt bearbeitet:
Es handelt sich um 6 Förderer. Die Idee für jeden Förderer eine Kette zu machen finde ich gut. Ist ein Denkanstoß für neue Projekte.

dann hänge ich da noch etwas dran :
Wenn ich in der Vergangenheit so etwas hatte, dann habe ich die Schritte(n) immer als Fördervorgang erstellt. Also "Transfer von 1 -> 2" etc. Ich habe dann auch immer in einem Strang zwischen benachbarenden Förderern einen frei gelassen bei laufenden Fördervorgängen - F5 zieht F4 und F3 zieht F2 etc.

Viel Erfolg mit deinem "Waldbrand"
Gruß
LL
 
Zurück
Oben