# S7-200, Eimerkette programmieren



## SPS-DEPP (15 November 2006)

Hallo Leute,
bin zum ersten mal in diesem Forum und als SPS-Depp, wie mein Name schon sagt, unterwegs.
Riesenproblem: Ich habe keinerlei Erfahrung mit der S7-200 Steuerung und soll an einer Maschine eine Art Eimerkette programmieren.Soll heißen, vorne kommt von zwei verschiedenen Weichen ein Signal von 1sek. und hinten soll nach mehreren Schritten ein andere Weiche erkennen, wo das Produkt herkam, also Weiche 1 (E1.0) oder Weiche 2 (E1.1).Die Länge der Kette kann zwischen 1 und 8 Schritten variieren.

Hat so ein Problem schon jemand gehabt oder hat jemand eine Idee???
Ich bin völlig verzweifelt.

Vielen Dank im Voraus für die Hilfeversuche!!!!!


----------



## Immergewinner (15 November 2006)

SPS-DEPP schrieb:


> Ich bin völlig verzweifelt.


 
Hallo,

Grundsätzlich ist es ja schonmal schlecht das du nichtmal einen Lösungsansatz anbieten kannst was zeigt das du dir nichtmal richtig darüber Gedanken gemacht hast. --> Plan machen!

Wenn es sich nur um S7-200 spezifische Probleme handelt dann ab zum Siemens-Support im Netz --> Handbuch lesen, FAQ studieren und "Tip u. Tricks" durcharbeiten

Wenn es aber schon an den allg. Grundlagen mangelt... na dann Mahlzeit 

Gruss


----------



## SPS-DEPP (15 November 2006)

Hallo Immergewinner,
Erstmal vielen Dank für deine prompte Antwort, wenn sie auch nicht so war, wie ich hoffte, sondern eher niederschmetternd.
Du weißt sicherlich, daß es außer euch Vollprogrammierern sehr viele Leute gibt, die aus beruflichen Gründen als Techniker oder Meister so etwas miterledigen müssen, und da hapert es manchmal am wesentlichen.
Zu den Fakten: Ich bekomme Software und PC-Adapter erst in den nächsten Tagen zugeschickt, muß aber schnellst möglich lösen.
Die Idee ist, die Signale der Weichen 1 oder 2 in einem Merker als 0 oder 1 zu speichern. Bei dem nächsten Impuls einer Weiche wird die Nummerierung des Merkers incrementiert(hier hakt es zum ersten mal).
Wenn am unteren Ende der Kette die Bedingungen erfüllt sind, wird die gesamte Kette durch decrementieren der Merkernummern nach unten verschoben(zweiter Totalausfall).Am Anfang der Kette müsste aber gemerkt werden, welcher Merker bereits beschrieben wurde und automatisch in den nächst höheren geschrieben werden (Totalausfall des Geistes).
Wenn ihr jetzt die Nase voll habt, kann ich verstehen.
Wenn aber jemand glaubt, helfen zu können, wäre ich echt dankbar.
Vielen Dank im Voraus,

SPS-DEPP


----------



## Werner54 (16 November 2006)

*Eimer(Schritt)kette*

@SPS-DEPP

bevor du völlig in ...ssion versinkst, such erstmal unter "Schrittkette".
Solche Aufgabenstellungen wie deine sind eigentlich Standard.


----------



## Zottel (16 November 2006)

SPS-DEPP schrieb:


> Soll heißen, vorne kommt von zwei verschiedenen Weichen ein Signal von 1sek. und hinten soll nach mehreren Schritten ein andere Weiche erkennen, wo das Produkt herkam, also Weiche 1 (E1.0) oder Weiche 2 (E1.1).Die Länge der Kette kann zwischen 1 und 8 Schritten variieren.



Deine Eimerkette:

Für die Maximal 8 Schritte nehme ich jetzt mal die Merker:
E1.0, E1.1    Zustand jetzt
M1.0, M1.1   Zustand vor einem Schritt
M2.0, M2.1   Zustand vor 2 Schritten
M3.0, M3.1   Zustand vor 3 Schritten
M4.0, M4.1   Zustand vor 4 Schritten
...
M8.0, M8.1   Zustand vor 8 Schritten

Wenn es nun einen Schritt weiter geht, kopiert man die Zustände auf den nachfolgenden Zustand. Dabei darf man nicht mit 1 anfangen, weil man beim Kopieren von 1 nach 2 ja 2 überschreibt und dann nicht mehr nach 3 kopieren kann. Daher fangen wir mit 7->8 an:

LD M7.0
=  M8.0
LD M7.1
 =  M8.1

Der Zustand vor 8 Schritten ist jetzt so wie der Zustand vor 7 Schritten war. Den Zustand vor 7 Schritten können wir nun überschreiben:

LD M6.0
 =  M7.0
 LD M6.1
  =  M7.1

LD M5.0
  =  M6.0
  LD M5.1
   =  M6.1

Und so weiter bis:

LD M1.0
  =  M2.0
  LD M1.1
   =  M2.1

Nun tragen wir als neuen Zustand vor einem Schritt den aktuellen Zustand der Weiche ein:

LD E1.0
   =  M1.0
   LD E1.1
    =  M1.1

Damit die SPS nicht in jedem Zyklus einen Schritt "weitertransportiert", dürfen wir diese Operationen nur durchführen, wenn ein Schrittwechsel vorliegt. Wir haben einen Merker "Schrittwechsel", der besagt, daß im aktuellen Zyklus ein Schrittwechsel stattfand. Dazu gibt es 3 Möglichkeiten:
1. Wir führen jede einzelne Operation durch oder nicht, abhängig vom Merker "Schrittwechsel". Das ist sehr unübersichtlich und lang. Vergessen wir es.
2. Wir überspringen den Programmblock, wenn der Merker "Schrittwechsel" nicht gesetzt ist (also immer ausser beim Schrittwechsel). 
3. Wir packen alles in ein Unterprogramm "Eimerkette" das wir nur aufrufen, wenn der Merker "Schrittwechsel" gesetzt ist. Das scheint mir hier das Eleganteste zu sein.

Was nun wenn es nicht 8 Schritte (Länge der "Eimerkette") sondern z.B. 4 sind? Ganz einfach: Nimm die Informationen für die Zielweiche aus M4.0 und M4.1 statt aus M8.0 und M8.1.

So. Es ist fast alles klar, nur was liefert den Takt? Es muß einen Takt geben, mit dem die Schritte weitergezählt werden. Du schreibst, die Weichen liefern ein Signal von 1 Sek. Das ist in Ordnung, wenn es denn immer auftritt. Aber wenn das Signal vom Produkt ausgelöst wird, könnte es Schwierigkeiten geben, daß ohne Produkt kein oder bei mangelhaftem Produkt mehrfache Signale auftreten. Der Takt käme besser aus der Fördertechnik.


----------



## HDD (16 November 2006)

Hi Zottel,
warum nicht schieben SHL_W oder so in Microwin.

HDD


----------



## lorenz2512 (16 November 2006)

Hallo,
die S7 22X Cpu´s haben noch die Möglichkeit der Ablaufrelais, einfach bei der Hilfe Ablaufrelais eingeben, da wird einem geholfen.


----------



## Zottel (16 November 2006)

HDD schrieb:


> Hi Zottel,
> warum nicht schieben SHL_W oder so in Microwin.
> 
> HDD


Weil ich annehme, daß der Fragesteller nur über geringe (Vor-)Kenntnisse verfügt. In der geschilderten Art kommt er mit Bit-Logik aus. Für einen "Laien" dürfte es eine Hürde sein, den Zusammenhang zwischen Bit- und Bytespeicher und Worten zu verstehen. Und das von mir benutzte Schema kann er auch für 9 oder 17 Schritte ohne Probleme anwenden.
Speicherbedarf und Performance war mir egal. Damit wird er keine Probleme bekommen.


----------



## HDD (16 November 2006)

Hi Zottel,
da hast Du nicht ganz unrecht !
Aber so ganz verstehe ich die Anfrage noch nicht meint er mit Kette mehrere Bearbeitungsstationen oder mehrere Eimer hintereinander die dann
 je nach Zuführungsweiche einer entsprechenden anderen Weiche weitergegeben werden.

HDD


----------



## SPS-DEPP (16 November 2006)

Hallo Leute,
erst mal vielen Dank für die zahlreichen Beiträge, schlaft oder esst ihr eigentlich auch mal? 
Ich möchte direkt in die Antwort von Zottel einhaken, da hier ja schon das Problem fast gelöst ist. Also noch etwas genauer: Die beiden Eingangsweichen E1 und E2 öffnen im nicht periodischen Wechsel und lassen jeweils vier Produkte vor der entspechenden Bahn passieren, dabei wird das Signal ensprechend 1sek. lang am Eingang log. 1 sein.
Da ist schon die erste Frage: wenn ich bei relativ kurzer Zykluszeit die Eingänge abfrage um den Wert in M1.0 oder 1.1 zu schreiben, könnte es doch in dieser 1 sek. mehrfach passieren, oder?
Damit zu deiner Frage, den Takt gibt also das erneute Öffnen einer der beiden Eingangsweichen an.
Ausgelesen wird die Kette später im Prozess an einer Ausgangsweiche, die genau vier Produkte zählt und dann wissen muß, von welcher Eingangsweiche diese Produkte kamen. Da es dazwischen einen weiteren Prozeß gibt, der mal mehr und mal weniger schnell abläuft, kann es also sein, dass die Kette länger oder kürzer wird, das hast du ja auch super gelöst.
Aber wie kann ich die Kette hinten abfragen, ob z.B. im M6, M7 oder M8.0 oder 8.1 eine 1 steht oder nicht und diese nach erfolgtem Öffnen der Ausgansweiche auf 0 setzen.
Wenn ihr dafür auch noch eine Idee hättet..... na ihr wisst schon.

Danke im Voraus, euer SPS-DEPP


----------



## Oberchefe (17 November 2006)

Wenn der Weg (sprich die Anzahl der Produkte die unterwegs sind) variiert, bleibt nur die Version mit FIFO (das was vorne als erstes rein geht geht auch als erstes hinten wieder raus). Zottels Version von Bit auf Byte abändern, kommt das Produkt von Spur 1 eine 1 ins Byte reinschreiben, kommt das Produkt von Spur 2 dann eine 2 rein. Du wirst allerdings nicht um indirekte Programmierung rum kommen (es sei denn da gibt's einen fertigen Baustein dafür), die Lade- (oder Entladeposition) ändert sich ja.
Und der ganz große Nachteil der FIFO Version: es funktioniert nur solange Deine Sensorik 100%ig funktioniert und der Operator nicht eingreift, also beispielswiese Produkte bei der Staubseitigung entfernt, hier müßte er hinterher der Maschine wieder sagen daß er leer geräumt hat.


----------



## Zottel (17 November 2006)

Oberchefe schrieb:


> Wenn der Weg (sprich die Anzahl der Produkte die unterwegs sind) variiert, bleibt nur die Version mit FIFO (das was vorne als erstes rein geht geht auch als erstes hinten wieder raus).


Das, was ich vorgeschlagen habe, IST ein FIFO.


> Zottels Version von Bit auf Byte abändern, kommt das Produkt von Spur 1 eine 1 ins Byte reinschreiben, kommt das Produkt von Spur 2 dann eine 2 rein.


Wozu? 
Merker 1.0,2.0 = 1, usw. -> Produkt von Weiche 1
Merker 1.1,2.1 = 1 , usw. -> Produkt von Weiche 2
Damit läßt sich auch kodieren:
Beide Merker = 0-> kein Produkt vorhanden
und 
Beide Merker = 1-> offenbar Produkte von 1 und 2 (gestapelt????). 


> Du wirst allerdings nicht um indirekte Programmierung rum kommen


Doch. Wozu sollte die nötig sein???????


> Und der ganz große Nachteil der FIFO Version: es funktioniert nur solange Deine Sensorik 100%ig funktioniert ...


Deshalb hatte ich nach einem Takt aus der Fördertechnik gefragt.


> ...und der Operator nicht eingreift, also beispielswiese Produkte bei der Staubseitigung entfernt, hier müßte er hinterher der Maschine wieder sagen daß er leer geräumt hat.


Das kann man aber nicht durch die Art der Programmierung ändern, sondern nur, indem man das Produkt an sich indentifizierbar macht und entsprechende Sensorik vorsieht.


----------



## Oberchefe (17 November 2006)

wenn Du die Bits sowieso zur gleichen Zeit schieben willst, dann frage ich mich wieso Du die Bits einzeln schieben willst und nicht gleich das ganze Byte.

Und oben schrieb der Fragesteller:


> Die Länge der Kette kann zwischen 1 und 8 Schritten variieren.



dann kannst Du nicht fest in Byte 1 reinschreiben und Byte 8 auslesen, Du mußt dann entweder die Position für's reinschreiben oder die Position für's Abfragen variabel machen. Das was Du programmiert hast ist kein FIFO sondern ein ganz normales Schieberegister, bei einem Schiebregister kannst Du pro Schiebetakt nur einmal was vorne reinschreiben (und hinten natürlich auch auslesen), bei einem FIFO können durchaus auch mal vorne 3 Produkte rein bis hinten das nächste wieder rausgeht oder umgekehrt hinten 3 raus und in dieser Zeit kein neues vorne rein.
Ich habe den Fragesteller so verstanden daß zwischen den Weichen kein fester Bezug in Form einer Becherkette oder dergleichen da ist, da würde das Schieberegister natürlich funktionieren, ohne Produkt am Eingang würde dann halt eine Null durchgeschoben.


----------



## Zottel (17 November 2006)

SPS-DEPP schrieb:


> Hallo Leute,
> erst mal vielen Dank für die zahlreichen Beiträge, schlaft oder esst ihr eigentlich auch mal?
> Ich möchte direkt in die Antwort von Zottel einhaken, da hier ja schon das Problem fast gelöst ist. Also noch etwas genauer: Die beiden Eingangsweichen E1 und E2 öffnen im nicht periodischen Wechsel und lassen jeweils vier Produkte vor der entspechenden Bahn passieren, dabei wird das Signal ensprechend 1sek. lang am Eingang log. 1 sein.
> Da ist schon die erste Frage: wenn ich bei relativ kurzer Zykluszeit die Eingänge abfrage um den Wert in M1.0 oder 1.1 zu schreiben, könnte es doch in dieser 1 sek. mehrfach passieren, oder?


Ich hatte bereits geschrieben, daß das beschriebe Programm nicht in jedem Zyklus, sondern nur bei einem "Schrittwechsel" ausgeführt werden darf.
Schauen wir mal, was ein Schrittwechsel sein könnte:
Du förderst Postpakete (alle verschieden groß) auf einem Band. Zwischen den Paketen sind verschiedene Abstände. Pakete kommen aus Quelle (Weiche) 1 oder 2. wobei sie durch eine Lichschranke laufen, die dadurch ca 1 sek. lang unterbrochen wird. Der Eingang sei mit Licht "0" und ohne (unterbrochen) "1". Die SPS möge für einen Programmzyklus 20 Millisekunden benötigen, das ist ein gängiger Wert. Sie "sieht" also viele Zyklen lang 0, dan ca 50 Zyklen lang 1, dann wieder 0. Das heißt natürlich nicht, daß 50 Pakete gekommen sind. Was hier aber nur EINMAL passiert, ist der Wechsel (die Flanke) von 1 nach 0 in dem Moment, in dem das Paket die Lichtschranke verläßt. Das könnte man als "Trigger" nehmen.
Um diese Ereignis zu Erkennen, speichert man den Zustand des Eingangs für einen Zyklus, so daß man im nächsten Zyklus vergleichen kann, ob sich etwas geändert hat:
Das Speichern:
LD E1.0
= M100.0
M 100.0 hat also immer deselben Wert wie E1.0
Deshalb ist diese Abfrage HIER sinnlos:
LD E1.0
UN M100.0
die können ja gar keinen verschiedenen Wert haben.
ABER

LD E1.0
 UN M100.0
= M102.0

LD E1.0
 = M100.0
Hier wird zuerst verglichen, ob E1.0 1 und M100.0 0 ist. Das ist genau dann der Fall, wenn E1.0 im vorigen Zyklus 0 war und in diesem zum ersten Mal 1 ist.
Für unsere Lichtschranke brauchen wir aber genau das Gegenteil:
LDN E1.0
U M100.0
 = M102.0

LD E1.0
  = M100.0
Der Merker M102.0 ist genau dann 1 (einen Zyklus lang), wenn ein Paket die Weiche 1 verlassen hat.

Dasselbe für Weiche 2
LDN E1.1
   U M100.1
  = M102.1

LD E1.1
   = M100.1
 Der Merker M102.1 ist genau dann 1 (einen Zyklus lang), wenn ein Paket die Weiche 2 verlassen hat.

Wann immer ein Paket eine der Weichen verläßt, geht die "Eimerkette" eine Position weiter:

LD M102.0
O M102.1
CALL Eimerkette

Ein neues Problemchen:
Da die Lichtschranken gerade frei geworden sind, können sie uns nicht mehr sagen, aus welcher das Paket kam.
LD E0.0
= M1.0 würde immer 0 ergeben. Aber wir wissen, daß der Merker 102.0 1 ist, wenn das Paket aus Weiche 1 kam, während der Merker 102.1 anzeigt, daß das Paket aus Weiche 2 kam. Wir ersetzen daher in meinem Eimerketten programm E1.0 durch M102.0 und E1.1 durch M102.1.


> Damit zu deiner Frage, den Takt gibt also das erneute Öffnen einer der beiden Eingangsweichen an.


Müßte jetzt so gehen


> Ausgelesen wird die Kette später im Prozess an einer Ausgangsweiche, die genau vier Produkte zählt und dann wissen muß, von welcher Eingangsweiche diese Produkte kamen. Da es dazwischen einen weiteren Prozeß gibt, der mal mehr und mal weniger schnell abläuft, kann es also sein, dass die Kette länger oder kürzer wird, das hast du ja auch super gelöst.


Nochmal zum "Länger oder Kürzer": Stellt da jemand an einem Schalter ein, ob mit einer 4,5,6,7,8-stufigen Kette gearbeitet wird, oder ändert sich das dynamisch?


> Aber wie kann ich die Kette hinten abfragen, ob z.B. im M6, M7 oder M8.0 oder 8.1 eine 1 steht oder nicht und diese nach erfolgtem Öffnen der Ausgansweiche auf 0 setzen.


Für den scheinbar komplizierteren Fall der "dynamischen Kettenlänge": 
Das Prinzip: Wenn wir 5 Pakete aufs Band fördern, sind 5 drauf. Unsere Kette ist 5 lang. Wenn wir eins entnehmen, sind noch 4 da. Unsere Kette ist 4 lang. Wir zählen also Pakete, vorwärts beim fördern und rückwärts beim entnehmen. Den Zählerstand halten wir einem Wort im V-Speicherbereich, hier z.B. VW100:

LD M102.0  
O M102.1
ADDW 1,VW100  

 Die beiden Merker sagen uns ja, daß ein neues Paket da ist. Ich nehme mal an, daß wir auch einen Merker M110.0 haben, der genau für einen Zyklus 1 ist, wenn die Entnahme erfolgt ist:

LD M110.0  
ADDW -1,VW100  

VW100 sagt uns nun, wie lang die Kette ist.
Ich tu mal so, als ob die Ausgangsweiche so funktioniert:
A0.0 fördert nach links, A0.1 fördert nach rechts, Pakete aus Weiche 1 sollen nach links. Ferner haben wir eine Lichtschranke E1.2, die uns sagt, daß ein Paket ankommt. Wenn das Paket in die Lichtschranke einläuft, ist es Zeit die Weiche zu stellen. Wenn das Paket die Lichtschranke verläßt, kann die Weiche wieder in Mittelstellung zurückkehren oder so etwas (beide Ausgänge aus) und die Entnahme ist beendet.

Wir verschaffen uns jetzt den Merker 110.0 (Entnahme in diesem Zyklus beendet):

LDN E1.2
    U M100.2
   = M110.0

 LD E1.2
    = M100.2

Und nun die Entnahme. Ich nehme mal an, daß grundsätzlich nicht mehr als 8 Pakete da sind. 

Wenn es genau 8 sind, sagen uns die Merker 8.0 oder 8.1 wo das Paket hin muß, Sind es genau 7, so sagen es uns die Merker 7.0 oder 7.1 usw. Ich nehme mal an wir hätten einen Merker 8.2, der gesetzt ist, wenn es 8 Pakete sind, einen Merker 7.2, der gesetzt ist, wenn es 7 Pakete sind usw.

LD M8.2  // es sind 8 Pakete
U M8.0   // und Merker 8.0 sagt, es muß nach links
= M 10.0 // Bedeutung: Paket nach links

LD M8.2  // es sind 8 Pakete
 U M8.1   // und Merker 8.1 sagt, es muß nach rechts
 = M 10.1 // Bedeutung: Paket nach rechts

LD M7.2  // es sind 7 Pakete
 U M7.0   // und Merker 7.0 sagt, es muß nach links
O M 10.0 // Paket nach links (aus der vorhergehenden Verknüpfung)
 = M 10.0 // Bedeutung: Paket nach links

LD M7.2  // es sind 7 Pakete
  U M7.1   // und Merker 7.1 sagt, es muß nach rechts
 O M 10.1 // Paket nach rechts (aus der vorhergehenden Verknüpfung)
  = M 10.1 // Bedeutung: Paket nach rechts


LD M6.2  // es sind 6 Pakete
  U M6.0   // und Merker 6.0 sagt, es muß nach links
 O M 10.0 // Paket nach links (aus der vorhergehenden Verknüpfung)
  = M 10.0 // Bedeutung: Paket nach links

 LD M6.2  // es sind 6 Pakete
   U M6.1   // und Merker 6.1 sagt, es muß nach rechts
  O M 10.1 // Paket nach rechts (aus der vorhergehenden Verknüpfung)
   = M 10.1 // Bedeutung: Paket nach rechts

Und so weiter bis zu einem Paket.

Wir werten nun die Merker 10.0 und 10.1 aus und stellen die Weiche:

LD E1.2  // Solange Paket in der Lichtschranke der Weiche
U M10.0 // Bedeutung: Paket nach links
UN M 10.1 // Widerspruch erkennen!
= A0.0   // Weiche nach links


LD E1.2  // Solange Paket in der Lichtschranke der Weiche
 U M10.1 // Bedeutung: Paket nach rechts
 UN M 10.0 // Widerspruch erkennen!
 = A0.1   // Weiche nach rechts

So jetzt fehlen noch die Merker 1.2...6.2, 7.2, 8.2, die bei einer gewissen Paketzahl 1 sein sollen:

LDW= 1,VW100
= M1.2
LDW= 2,VW100
 = M2.2
LDW= 3,VW100
 = M3.2
LDW= 4,VW100
 = M4.2
LDW= 5,VW100
 = M5.2
LDW= 6,VW100
 = M6.2
LDW= 7,VW100
 = M7.2
LDW= 8,VW100
 = M8.2

Fertig!

Was nun, wenn "Kettenlänge" fest und nicht dynamisch sein soll?  Einfach die Zählbefehle raus und stattdessen:
VW100 auf die Kettenlänge einstellen, z.B. mit einem Bedienpanel. 
Oder Zählbefehle und Vergleiche Zahl mit VW100 raus und statt der Merker 1.2 bis 8.2 Eingänge von einem Wahlschalter benutzen:


----------



## Zottel (17 November 2006)

Oberchefe schrieb:


> wenn Du die Bits sowieso zur gleichen Zeit schieben willst, dann frage ich mich wieso Du die Bits einzeln schieben willst und nicht gleich das ganze Byte.


Weil ich weiß, daß die Azubis auch erst Bit-Logik lernen und ich mich darauf beschränken wollte.



> dann kannst Du nicht fest in Byte 1 reinschreiben und Byte 8 auslesen, Du mußt dann entweder die Position für's reinschreiben oder die Position für's Abfragen variabel machen. Das was Du programmiert hast ist kein FIFO sondern ein ganz normales Schieberegister,


 Jedes Schieberegister ist ein FIFO, aber nicht jeder FIFO ist "nur" ein Schieberegister.



> ...bei einem Schiebregister
> kannst Du pro Schiebetakt nur einmal was vorne reinschreiben (und hinten natürlich auch auslesen), bei einem FIFO können durchaus auch mal vorne 3 Produkte rein bis hinten das nächste wieder rausgeht oder umgekehrt hinten 3 raus und in dieser Zeit kein neues vorne rein.


Sinnvollerweise teilt man die Entnahme dreier Produkte entweder in 3 einzelne Entnahmen oder man ist sich darüber im klaren, daß die Produkte keine "Individuen" sondern austauschbar sind. Im zweiten Fall kann man die Menge von drei als Los und das Los als Fördergut betrachten, was dann wieder einzeln entnommen wird. Ein "PASSENDER" FIFO, indem die Information von vielleicht Byte oder Wortgröße ist, kann dann natürlich die Losgröße mitführen. Ein etwas größerer FIFO könnte auch den Lieferschein in UDTs speichern...


> Ich habe den Fragesteller so verstanden daß zwischen den Weichen kein fester Bezug in Form einer Becherkette oder dergleichen da ist, da würde das Schieberegister natürlich funktionieren, ohne Produkt am Eingang würde dann halt eine Null durchgeschoben.


 Ja, das ist mir klar. Und ich habe zwei Bits genommen, die können natürlich
auch beide gesetzt sein. Sind dann Produkte aus beiden Weichen übereinander gestapelt? Hängt wohl von der Anwendung ab...


----------



## HDD (17 November 2006)

Hi,
hier mal ein Lösungsansatz der eine variable Eimer Zahl zulässt aber mit der Einschränkung von Oberchef.


U E 0.0; Eimer kommt z.B. LS 
FP M 0.0;
SPBN m001;
L MW 100;
L 1;
+I;
T MW 100;
m001 :NOP 0;
L MW 100;
L 1;
==I;
FP M 0.1;
SPBN m002;
U E 0.5; Weiche 1
S M 11.1;
U E 0.6; Weiche 2
R M 11.1;
m002 :NOP 0;
L MW 100;
L 2;
==I;
FP M 0.2;
SPBN m003;
U E 0.5;
S M 11.2;
U E 0.6;
R M 11.2;
m003 :NOP 0;
L MW 100;
L 3;
==I;
FP M 0.3;
SPBN m004;
U E 0.5;
S M 11.3;
U E 0.6;
R M 11.3;
m004 :NOP 0;

usw.

m007 :NOP 0;
U E 0.1; Eimer geht
FP M 1.7;
SPBN m017;
L MW 100;
L 1;
-I;
T MW 100;
L MW 10;
SRW 1;
T MW 10;
m017 :NOP 0;
U M 11.0;Weiche 1 1-Signal Weiche 2 0-Signal
= A 0.0;
HDD


----------



## SPS-DEPP (23 November 2006)

*Eimerkette programmieren*

Hallo zusammen, hier ist wieder SPS-DEPP.Konnte ´ne Weile nicht antworten, da ich Ausland war und die Sache mit der Eimerkette dor verwirklichen mußte.
Also noch mal herzlichen Dank an alle, die solche Gedanken und Mühe gemacht haben, um zu helfen. Besonderen Dank an Zottel, der zu meiner Schande meine Fähigkeiten am Besten erkannt hat und alles in meiner Sprache geschrieben hat.
Aufgrund dieser Lösungen von Zottel hat es dann, nachdem ich mit Programm klarkam, auch super hingehauen.
Also das Ding funktioniert und ich habe eine Menge dazugelernt.

Danke und Gruss,

SPS-DEPP


----------

