Warteschlange / Reihenfolge Programmieren

Zuviel Werbung?
-> Hier kostenlos registrieren
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.

Abholersteuerung.bmp
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.

Abholersteuerung.bmp

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
 
@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 :rolleyes:.
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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. :ROFLMAO:
wer will, kann natürlich auch KOP nehmen.
YES_3_~1.GIF


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

Anhänge

  • Anwendungsbeispiel LiFo.awl.txt
    3,9 KB · Aufrufe: 74
  • Anwendungsbeispiel LiFo.zl.txt
    914 Bytes · Aufrufe: 46
  • Anwendungsbeispiel LiFo.vat.txt
    417 Bytes · Aufrufe: 41
Zuletzt bearbeitet:
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. :ROFLMAO:
wer will, kann natürlich auch KOP nehmen.
YES_3_~1.GIF


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


Hallo,

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

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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuletzt bearbeitet:
@ 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....

:(
 
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.


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"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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!:D
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
 
Zurück
Oben