# Warteschlange / Reihenfolge Programmieren



## russkinemez (30 Januar 2007)

Hallo zusammen

Programmierung eines Galvanoautomaten

Habe folgendes Problem.
Der Fahrwagen fährt bis jetzt in einer festgelegten Reihenfolge die Zinkbäder ab.
Von mir verlangt mann aber das die Reihenfolge von einstellbaren Zeiten abhängig ist. Das heißt erst wenn die Verweilzeit im, z.B. Zinkbad 2, abgelaufen ist darf das Abholen erfolgen.
Insgesammt sind 10 Zinkbäder Verhanden und es kann pasieren dass 2, 3, 4, oder auch mehr Verweilzeiten gleichzeitig abgelaufen sind.
Diese müssen sich dann in eine Warteschlange einstellen, die nach dem Prinzip abgearbeitet wird "wer sich als erster angemeldet hat wird als erster abgeholt".

Gruß, RN


----------



## Unregistrierter gast (30 Januar 2007)

russkinemez schrieb:


> Diese müssen sich dann in eine Warteschlange einstellen, die nach dem Prinzip abgearbeitet wird "wer sich als erster angemeldet hat wird als erster abgeholt".
> 
> Gruß, RN



Nimm nen FiFo, wurde 1000undeinmal im Forum beschrieben ! Suchefunktion benutzen.


----------



## russkinemez (31 Januar 2007)

Unregistrierter gast schrieb:


> Nimm nen FiFo, wurde 1000undeinmal im Forum beschrieben ! Suchefunktion benutzen.


 
Danke für den Rat.
Leider sind die Lösungen für mich zu kompliziert geschrieben.:sm9:
Geht es nicht einfacher? Habe bis jetzt nur wenige und sehr einfache Programme geschrieben.

Nächste Frage: Was für ein Buch, programierung Step 7, würdet ihr emfehlen?

Gruß, RN


----------



## JörgK (31 Januar 2007)

russkinemez schrieb:


> Nächste Frage: Was für ein Buch, programierung Step 7, würdet ihr emfehlen?


 
Ich selbst hab zwar noch keines seiner Bücher gelesen, doch finden man hier im Forum immer wieder äusserst positive Erwähnungen über Bücher von Hans Berger.


----------



## Unregistrierter gast (31 Januar 2007)

russkinemez schrieb:


> Danke für den Rat.
> Leider sind die Lösungen für mich zu kompliziert geschrieben.:sm9:
> Geht es nicht einfacher? Habe bis jetzt nur wenige und sehr einfache Programme geschrieben.
> 
> Gruß, RN



Faule Ausrede.
Stellenweise findest du sogar fertige FiFo Bausteine !

Z.B. -> hier


----------



## TobiasA (31 Januar 2007)

JörgK schrieb:


> Ich selbst hab zwar noch keines seiner Bücher gelesen, doch finden man hier im Forum immer wieder äusserst positive Erwähnungen über Bücher von Hans Berger.


 
Ja. Kann ich bestätigen.

Ein Buchtipp von mir:
"SPS- Grundkurs mit Simatic S7" von Jürgen Kaftan,  ISBN 3-8023-1986-9 

Für Anfänger optimal, beinhaltet alle Lösungen in KOP, FUP und AWL.

Gruß, Tobias


----------



## russkinemez (1 Februar 2007)

TobiasA schrieb:


> Ja. Kann ich bestätigen.
> 
> Ein Buchtipp von mir:
> "SPS- Grundkurs mit Simatic S7" von Jürgen Kaftan, ISBN 3-8023-1986-9
> ...


 
Hallo

@Tobias
@Jork

Danke für die Buchtipps:
Habe mir das Buch von Hans Berger 
"Automatisieren mit Step 7 in AWL und SLC"
bestellt.

@ Unregistrierter Gast
Leider komme ich mit FIFO nicht weiter. Nicht weil es nicht funktionieren würde sondern weil ich da nicht durchsteige.

Warscheinlich ist es Tagtäglich-Programierern schwer sich in eine "leichte Aufgaben" hineinzudenken und sie zu erklehren.

Aber fileicht findet sich doch einer der das macht?

Gruß,  RN


----------



## russkinemez (2 Februar 2007)

Hallo Profis!

Ich habe die Hoffnung noch nicht aufgegeben!
Ich bitte um H I L F E !!!:!: :!: 

Gruß, RN


----------



## Unregistrierter gast (2 Februar 2007)

russkinemez schrieb:


> Hallo Profis!
> 
> Ich habe die Hoffnung noch nicht aufgegeben!
> Ich bitte um H I L F E !!!:!: :!:
> ...



Hör auf zu jammern.

Ein FiFo Baustein läd z.B. die Zinkbadnummern in der Reíhenfolge, in der sie anfordern.

Die Ausgabe der jeweiligen Nummer erfolgt in der Reihenfolge, in der sie eingegeben wurden.

Einen fertigen Baustein könnte ich dir Schreiben, dass kostet dich aber 1000 Euro.

Daher empfehle ich dir, dich mit dem Thema "FiFo" nochmals auseinanderzusetzen.


----------



## russkinemez (3 Februar 2007)

Unregistrierter gast schrieb:


> Hör auf zu jammern.
> 
> Ein FiFo Baustein läd z.B. die Zinkbadnummern in der Reíhenfolge, in der sie anfordern.
> 
> ...


 

@UG

Jammern? Lach. :-D Ich habe noch nie gejammert!
Habe bis jetzt fast alles selbst ohne jegliche Hilfe geschafft!
Ohne jeglicher Schulung, bis auf den 1-Wochen Grundkurs in der HWK. 
Werde es auch in diesem Fall schaffen, mir läuft nur, leider, die Zeit weg!Deshalb die Fragen im Forum!
1000€ für vielleicht 1 Stunde Arbeit?
Auf deine Hilfe kann ich verzichten!

Ich bitte nicht darum dass mir jemand den Baustein schreibt, 
davon habe ich nichts, das mache ich gerne selber! 
Ich möchte nur verstehen, das bringt mich dann auch weiter!
 
Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!???
Aber nur dann wenn mann das auch teilt!

Gruß, RN


----------



## Unregistrierter gast (3 Februar 2007)

russkinemez schrieb:


> Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!???
> Aber nur dann wenn mann das auch teilt!
> 
> Gruß, RN



Naja, in dem von mir verlinkten Thread wird eigendlich nicht nur Wissen sondern auch Bausteine ge- und verteilt...

Was willst du sonstnoch ?

Das 1000 Euro Angebot ist natürlich freibleibend...


Hier noch ein Link in dem ein FiFo anschaulich dargestellt wird: Volkers FiFo


Und nochwas: Wissen kann nur mit _dem _geteilt werden, der nicht zu faul / zu dumm ist, es auch zu verstehen !


----------



## volker (3 Februar 2007)

genau.
mein fifo ist auf jeden fall der richtige ansatz.
der erwähnte schiebt die daten von oben nach unten.

für dich besser geeignet wäre ein lifo, also von unten nach oben schieben.
(kannst du umschreiben.  )
oder bis nächste woche warten, dann erweiter ich meinen fifo mal um einen lifo (hab den jetzt hier nicht zur hand)

du könntest nun folgendermassen vorgehen:
mit der steigenden flanke 'ins bad abgesetzt' zählst du einen zähler hoch.
der zählerstand bestimmt nun die adresse im lifo-db. dort trägst du an diese adresse die nummer des bades ein.
z.b. 
zähler=1

l z1
sld3
lar1
l #badnummer
t dbb[ar1,p#0.0] (in diesen fall dbb1)

kommt ein weiteres bad (zähler=2) hinzu würde die badnummer in dbb2 angelegt. usw

das bad welches als erstes entnommen werden soll steht immer im dbb1.

mit der steigenden flanke 'bad entnommen'
startest du den lifo und schiebst alle daten um 1 nach oben. somit fällt das eben entnommene bad aus dem lifo-db raus.
mit der gleichen flanke zähst du den zähler um 1 zurück, da ja die letzte adresse , die der zähler ja enthält, jetzt wieder frei ist. in den lifo-db schreibst du als neuen wert der eingetragen wird eine 0.

ist im dbb1 eine 0 so bedeutet dies, dass kein bad mehr belegt ist.

übrigens: ich schreib dir das auch für 500€


----------



## Unregistrierter gast (3 Februar 2007)

volker schrieb:


> übrigens: ich schreib dir das auch für 500€



hei, wenn du hier die Preise drücken willst, dann gibts ne Abmahnung ! :sm10: :s15:


----------



## russkinemez (3 Februar 2007)

übrigens: ich schreib dir das auch für 500€ [/quote]


Einverstanden! 500€ ohne die Nullen 
Musst nur noch die Kontoverbindung mailen, die Pinns und Tanns einfach mitmailen 

Danke für den Tipp!
Bringt mich viel weiter.

Leider habe ich bis jetzt nur mit FUP programmiert.
Habe mir aber das Buch von Berger bestellt in AWL!

Gruß, RN


----------



## volker (3 Februar 2007)

Unregistrierter gast schrieb:


> hei, wenn du hier die Preise drücken willst, dann gibts ne Abmahnung !


 






 da ich sowas schon mal gebraucht habe und die entwicklungskosten quasi 0€, kann ich das zu diesem spottpreis anbieten.


----------



## Unregistrierter gast (3 Februar 2007)

volker schrieb:


> da ich sowas schon mal gebraucht habe und die entwicklungskosten quasi 0€, kann ich das zu diesem spottpreis anbieten.



Du hast in deinem Angebot aber die USt-ID vergessen !
Bääähhh! 

Das wird teuer !!   

POLIZEI ! POLIZEI !!


----------



## volker (3 Februar 2007)

Mist!
Du aber auch.


----------



## Unregistrierter gast (3 Februar 2007)

volker schrieb:


> Mist!
> Du aber auch.




Huch... ! :shock: 

dann schlage ich nunmehr vor, die Sache zu vertuschen !


----------



## volker (3 Februar 2007)




----------



## russkinemez (3 Februar 2007)

volker schrieb:


>


 
@UG
@Volker

Nein nein! So einfach geht das nicht!
Ihr habt mich vergessen!
Vorschlag: Ihr schreibt mir das Programm und ich vergesse alles, oder.....
:s18:                                         :s18:

Gruß, RN


----------



## eNDe (3 Februar 2007)

Hallo russkinemez,
mal sehen, ob ich dir konkret helfen kann. 
Erklärung meiner Gedanken:
Du organisiert dir einen DB mit 11 Worten (DW 0..10). DW0 fungiert als Zeiger, DW1 bis 10 enthalten die Ziele, die abgeholt werden wollen, im Extremfall sind es ja 10.
Das Struktogramm gibt nun die Vorgehensweise vor:
1. Hinterlegen der Abholpositionen.
Ich gehe mal davon aus, dass an den 10 Zinkbädern irgend jemand eine SE-Zeit startet, die dann irgendwann abgelaufen ist, der Timer also 1-Signal liefert. Hieraus machst du für jeden Timer einen Zykluswischer und fragst alle der Reihe nach ab (siehe Struktogramm). Liegt ein Zykluswischer vor, suchst du
1. den nächsten freien Speicherplatz im DB (der eine 0 enthält) und schreibst
2. Die Nummer des Timers(=Platznummer) in dieses DW.
Weil die Suche immer das Gleiche macht, empfielt sich hierfür eine aufrufbare Extra-FC.

Als Nächstes folgt die Steuerung des Abholers. 
Sollte dein Wägelchen gerade unterwegs sein, ist das in einem Tätigkeitsbit hinterlegt. Falls dieses Bit 1-Signal hat, erfolgt kein weiteres auslesen von Daten.
Ist der Abholer fertig (wann und wo das ist, kannst nur du wissen), wird das Tätigkeitsbit auf 0 zurückgesetzt. Daraufhin wird im nächsten Zyklus der neue Zielpunkt aus dem DW1 entnommen und das Spielchen beginnt von vorn.
Anbei ein Struktogramm, welches diese Strategie nochmals verdeutlicht. Ich hoffe es hilft. Allerdings, mach dich auf weitere "hilfreiche" Kommentare in diesem Forum gefasst. 
PS: Ob die Grafik bei dir ankommt, weiss ich nicht. Bei mir sehe ich jedenfalls Nichts. Es handelt sich um eine .bmp-Datei.


----------



## Unregistrierter gast (3 Februar 2007)

eNDe schrieb:


> Allerdings, mach dich auf weitere "hilfreiche" Kommentare in diesem Forum gefasst.
> PS: Ob die Grafik bei dir ankommt, weiss ich nicht. Bei mir sehe ich jedenfalls Nichts. Es handelt sich um eine .bmp-Datei.



Grafiken lädst du am besten als *Anhang *hoch, da wir hier auf dein Verzeichniss:
D:/WETTER_EXCEL/

keinen Zugriff haben.


----------



## russkinemez (3 Februar 2007)

eNDe schrieb:


> Hallo russkinemez,
> PS: Ob die Grafik bei dir ankommt, weiss ich nicht. Bei mir sehe ich jedenfalls Nichts. Es handelt sich um eine .bmp-Datei.


 
Danke für den Rat.
Werde es so versuchen
Leider ist die Grafik nicht angekommen.
UG meint du sollst sie als Anhang hochladen.

Gruß, RN


----------



## Ralle (4 Februar 2007)

@eNDe

Mich würde dann auch das Struktogramm interessieren, da du im Text nicht auf das Schieben bzw. die Funktion des Zeigers eingehst. Ohne diese Erklärung wird rn nicht allzu viel damit anfangen können, ich will dir aber da nicht reinschreiben und warte das mal ab .


----------



## eNDe (4 Februar 2007)

Hallo russkinemez,
tut mir leid, aber mein PC weigert sich, einen Anhang zu bearbeiten. Leider kann ich auch keine PN versenden. Warum das so ist, weiss ich nicht. 
Dein Programm liegt bei mir und ist fertig! Ich habe es in seinen Funktionen simuliert und es funktioniert tadellos.
Falls du am Programm und am Struktogramm Interesse hast, sende mir eine PN mit deiner e-mail-Adresse. Ich maile dir dann das Ganze zu, natürlich kostenlos!
Kurzbeschreibung, wie ich mir deine Anlage vorstelle:
Es gibt 10 Abholstellen (1...10). An jeder Stelle wird nach einlegen des Materials eine Taste betätigt und startet damit eine SE-Zeit (Diese ist im Moment noch fest im Programm eingebunden). Während der Behandlungszeit blinkt eine Lampe. Ist die Zeit um, geht die Lampe in Dauerlicht über (diese Signale dienen nur den Bedienern, sie haben keine Steuerungsfunktion).
Ist die Zeit abgelaufen, wird die Platznummer in einen FIFO als "abholbereit" eingetragen. Das Abholen erfolgt exakt in der Reihenfolge der Eingänge. 
Liegt ein Abholauftrag vor, wird sofort ein "Tätigkeitsbit" gesetzt. Gleichzeitig wird für die Steuerung deines Wagens die Platznummer im MW10 als INT-Zahl zur Verfügung gestellt. 
Ist der Transportvorgang abgeschlossen (die Steuerung des Wagens gehört ja nicht zur Aufgabe), muss das Tätigkeitsbit zurückgesetzt werden. Erst dann wird ein neuer Transportauftrag aus dem Speicher geholt.
Was habe ich verwendet:
- 12 Timer, 10xPlatztimer und 2 für einen Taktgeber
- Datenbaustein mit insgesamt 1 Doppelwort für die ind. Adressierung, 10 Worten für die Warteschlange und nochmals 1 Doppelwort. Diese Bit dienen als Merker, so dass ich keine anderen Merker verwenden musste.
- FC1 für die allgemeine Steuerung
- FC2 FIFO komplett
- FC3 und FC4 für das handling des DB. Diese FC's gehören eigentlich mit in den FC1, sie schaffen aber eine leichter erkennbare Programmstruktur.
Den Rest der Forumsgemeinde muss ich leider enttäuschen. Ich habe mich vor kurzer Zeit im Forum angemeldet, um mein bescheidenes Wissen anderen, die es vielleicht gebrauchen können, kostenlos zur Verfügung zu stellen. Das mache ich auch weiterhin, werde aber grundsätzlich keinen Code mehr veröffentlichen, weil ich mir die schwachsinnigen Kommentare verschiedener Forumsmitglieder nicht antun muss.
Nochmals an russkinemez, 
du bekommst von mir, vorausgesetzt du willst es, alle erdenkliche Hilfe unter der Bedingung, dass du meine hier dargelegte Meinung hinsichtlich der Veröffentlichung des Codes akzeptierst.


----------



## Ralle (4 Februar 2007)

> Den Rest der Forumsgemeinde muss ich leider enttäuschen. Ich habe mich vor kurzer Zeit im Forum angemeldet, um mein bescheidenes Wissen anderen, die es vielleicht gebrauchen können, kostenlos zur Verfügung zu stellen. Das mache ich auch weiterhin, werde aber grundsätzlich keinen Code mehr veröffentlichen, weil ich mir die schwachsinnigen Kommentare verschiedener Forumsmitglieder nicht antun muss.



@eNDe

Dein Vorgehen entspricht ja eigentlich nicht dem Zweck des Forums, deshalb gefällt mir dein letzter Beitrag auch gar nicht. Er hilft anderen nicht weiter und in zwei Wochen bringt die Suchfunktion dazu dann kein Endergebnis, da du evtl. wieder andere Interessen hast und nicht mehrr online bist. Sei nicht böse, aber dann laß es doch lieber ganz.


----------



## volker (5 Februar 2007)

*Anwendungsbeispiel LiFo*




> werde aber grundsätzlich keinen Code mehr veröffentlichen


Feigling! wenn ich keinen brauchbaren code liefern könnte würde ich das hier aber auch nicht öffentlich posten.
wer will schon (d)einen schrottcode haben. 

*da ich nicht so gemein wie eNDe :sc5: bin*, poste ich hier mal eine einfache lösung.

beschreibung:
mit der positiven flanke (in bad eingelegt) wird die badnummer welche im mw110 steht abhängig vom zählerstand an die entsprechende stelle im db abgelegt.
mit der positiven flanke (aus bad entnommen) werden die daten im db um 1 nach oben geschoben. das zu diesem zeitpunkt entnommene bad fällt also aus dem db raus. gleichzeitig wird der zähler um 1 verringert, da diese position im db ja wieder frei ist.
das bad welches als nächstes entnommen werden muss steht im db im dbw2.
steht dort eine 0, so sind alle bäder leer.

das ganze ist gerade mal 5 netzwerke in FUP lang.  
wer will, kann natürlich auch KOP nehmen. 
	

	
	
		
		

		
		
	


	




die zl und die vat kann einfach über copy/paste übernommen werden.


----------



## russkinemez (5 Februar 2007)

volker schrieb:


> Feigling! wenn ich keinen brauchbaren code liefern könnte würde ich das hier aber auch nicht öffentlich posten.
> wer will schon (d)einen schrottcode haben.
> 
> *da ich nicht so gemein wie eNDe :sc5: bin*, poste ich hier mal eine einfache lösung.
> ...


 

Hallo,

@ eNDe 
@ Völker Wo ifinde ich denn KOP .

Danke für die Mühe die ihr euch gemacht habt!

@An alle!

Bin geschockt dass meine Frage solche Wellen schlägt.
Bin von mir aus ein sehr Friedfertiger und Friedenssuchender Mensch!
Warum müssen wir den über diejenigen lachen die nicht so gut sind wie wir?
Ich spreche jetzt im Algemeinen.
Bin Elektromeister und Leiter der Instandhaltung, mache aber wenn es brennt alles was es so in der Fa. gibt Schlosserarbeiten, Schweißarbeiten, Kunststoff schweißen, usw.
(Elektroarbeiten sowieso und zwischendurch auch noch programmieren)
Habe aber nur Elektrotechnik gelernt.
Heißt aber noch lange nicht dass ich diejenigen auslachen muss die das alles nicht können!
Wir haben als Menschen halt verschiedene Fähigkeiten.

Und wenn jemand besser programmieren kann weil er Schuhlungen besucht hat ist es falsch diejenigen auszulachen die zu lange und zu aufwändige Programme schreiben!
Ich werde das Programm das ich für den 1. Automaten geschrieben habe auch nicht zur Verfügung stellen weil ich auch selber weiß dass es zu klobig und zu aufwändig ist!
(Würde aber gerne)
Habe für das Programm Unmengen an Zeit verbraucht und alles selber hinbekommen. Warum muss ich mich dafür denn auslachen lassen?

Wenn wir einander helfen, oder anders gesagt ihr Experten uns Anfängern helfen wollt, dann nützt es nichts auszulachen denn dann werden viele sich gar nicht erst trauen etwas hinein zu stellen.

Wenn wir einander helfen wollen dann müssen wir erst lernen einander zu achten!

Und nur dann wird der Forum sein Zweck erfühlen!

Wissen ist das einzige Gut das sich vermehrt wenn man es teilt!


Ich weiß, ich weiß meine Grammatik ist nicht auf dem höchsten Niveau.
Siehe Benutzername! 


Schöne Grüße an alle, RN


----------



## volker (5 Februar 2007)

ich lache hier niemanden aus, nur weil er was nicht so gut macht wie man es machen könnte.
jeder hat mal angefangen und sich seinen wissenstand mehr oder weniger mühsam erarbeitet.

wenn jemand hier eine vernünftige frage stellt, dann bekommt er auch eine vernünftige antwort von mir. und abhängig davon ob ich dann eine gewisse mühe sehe das dann auch zu verstehen erkläre ich das dann auch so, das es selbst ein absoluter nichtwisser verstehen kann.

solche beiträge von ende finde ich dann aber naja....... sag ich lieber nicht.

die darstellung kop/fup/awl kannst du im s7-editor auswählen


----------



## TommyG (5 Februar 2007)

@ Volker:
THX, so kann ich mir eine Bettelmail an ende ersparen..
@ ende:
Schade, Deine Lösung hätte mich interessiert. Nur manche motzen, der Rest meint es doch eher konstruktiv....


----------



## russkinemez (5 Februar 2007)

eNDe schrieb:


> Hallo russkinemez,
> tut mir leid, aber mein PC weigert sich, einen Anhang zu bearbeiten. Leider kann ich auch keine PN versenden. Warum das so ist, weiss ich nicht.
> Dein Programm liegt bei mir und ist fertig! Ich habe es in seinen Funktionen simuliert und es funktioniert tadellos.
> Falls du am Programm und am Struktogramm Interesse hast, sende mir eine PN mit deiner e-mail-Adresse. Ich maile dir dann das Ganze zu, natürlich kostenlos!
> ...


 

Hallo eNDe,

Bitte stell deine Lösung rein, ich werde wie versprochen dass nicht machen. Ich stimme mit TommyG ein, "Nur manche motzen, der Rest meint es doch eher konstruktiv"


----------



## russkinemez (7 Februar 2007)

*Danke für die Hilfe!*

Hallo zusammen,

@eNDe
@Völker
@alle anderen Teilnenmer

Ich möchte mich hiermit bei allen und vor allem bei eNDe und Völker für die Hilfe bedanken! 
Es wird wahrscheinlich noch bis Monatsende dauern bis die Anlage läuft, die Schlosser (und ich mit dem Programm, programmiere nur dach Feierabend und zu Hause) kommen nicht aus den Socken. Die Simulation des LiFo auf meinem Tastsystem läuft schon!
Es ist immer wieder schön zu erfahren dass es Mitmenschen gibt die ihre Zeit aufopfern um anderen zu helfen.:-D 


Schöne Grüsse aus dem Sauerland,

RN


----------

