# Anfragen in eine zeitliche Reihenfolge bringen.



## Binaryboy (28 August 2009)

Moin Moin zusammen.

Ich knabber schon einige Zeit an einem Problem.

Ich habe 5 Mischer Stationen. Jede Station kann Mischung anfordern.
Derjenige der diese Mischungen zubereitet, soll erkennen können, wer als erstes, zweites, drittes usw angefordert hat.
Hab ich realisiert durch Ampeln an jeder Station die entsprechend der Reihenfolge schneller langsamer blinken.

Ein nach vorne schummeln durch mehrmaliges anfordern ist nicht erlaubt.

Die Blinkfrequenz der Ampel muss sich ändern entsprechend der wechselnden Priorität. Wenn z.b. die erste Anforderung an Mischer 3 abgearbeitet ist und eine neue Mischung wird an Mischer 5 angefordert, müssen bestehende Anforderungen an Mischer 1, 2 und 4 entsprechend ihrer neuen Reihenfolge aufrücken.

Bisher hab ich das mit RS-Gliedern programmiert.
So eine Art Schrittkette-Schieberegister-Dingens das auch wie gewünscht funktioniert.

So wirds aber schnell unübersichtlich und es ist auch schlecht zu skalieren wenn neue Mischer dazu kommen.

Ich suche eine elegante Lösung.

Ich habs mal mit Systemzeit-abfragen versucht. Scheiter aber (auch unter Zuhilfenahme der SFC 9, 12 usw.) daran 5 Zeiten mit einander zu vergleichen und in Reihenfolge zu bringen.

Wer weiss Rat?

Schönens Wochenende, wünsche ich.


----------



## Homer79 (28 August 2009)

wir haben auch sowas in der art, haben das aber mit sprüngen realisiert. die anforderung halt gesetzt und merker das die jeweilige anforderung bearbeitet wird, dann halt zur nächsten springt...usw.


----------



## Beren (28 August 2009)

*gelöscht*


----------



## Mobi (28 August 2009)

Mach es doch in einem Array. Wenn z.B. der zweite Mischer anfordert. Dann schreibste eine 2 an der Stelle 0 in dem Array. Wenn dann der nächste anfordert schreibt der seine Nr. in die nächste Stelle. Und während der Zubereiter die Mischung zu dem jeweiligen Mischer liefert, gehen alle Nummern in dem Array eine Stelle nach vorne, sodass die Nr. vom nächste Mischer an der Stelle 0 im Array ist.


----------



## Binaryboy (28 August 2009)

Ich seh schon, mit Date_Time abfrage würde das keiner lösen wollen.
Also lass ich den Plan mal fallen.

Es soll nicht nur Ampel Prio.1 leuchten, damit der zuständige Mischermann auch weiss ob er ein Schlag ranklotzen muss oder ob er weiter BILD lesen kann.

Was das Array betrifft muss ich sagen, das ich das (bewußt) nie eingesetzt habe.

Aus der Hilfe dazu werde ich auch nicht schlau.

Elemente werden mit einer Liste von Werten initialisiert, die durch Komma voneinander getrennt sind. Sie können einen Wiederholfaktor verwenden, beispielsweise "4(10)" ("ordnet den folgenden vier Elementen den Wert 10 zu"), um in einem Feld Anfangswerte zuzuordnen. Elemente, die über keinen Anfangswert verfügen, haben standardmäßig den Defaultwert Null.

Äähm, das versteh ich nur ´bedingt´.
Is warscheinlich was total simples. Aber die Herren Ingengöre waren nicht in der Lage es verständlich und praxisgerecht zu formulieren.

Weiss jemand eine Internetquelle wo sowas verständlich erklärt wird?


----------



## Ralle (28 August 2009)

Binaryboy schrieb:


> Elemente werden mit einer Liste von Werten initialisiert, die durch Komma voneinander getrennt sind. Sie können einen Wiederholfaktor verwenden, beispielsweise "4(10)" ("ordnet den folgenden vier Elementen den Wert 10 zu"), um in einem Feld Anfangswerte zuzuordnen. Elemente, die über keinen Anfangswert verfügen, haben standardmäßig den Defaultwert Null.
> 
> Äähm, das versteh ich nur ´bedingt´.
> Is warscheinlich was total simples. Aber die Herren Ingengöre waren nicht in der Lage es verständlich und praxisgerecht zu formulieren.
> ...



Ich finde, das ist durchaus verständlich erklärt. Aber du kannst das ruhig ignorieren, da geht es nur um die Initialisierung eines Array. Wenn du da nichts angibst, sind eben alle Werte im Array Null. Das paßt ja eh für deinen Fall. Ansonsten wäre da die Frage, ob du SCL hast, denn nur dann kann man wirklich sinnvoll mit Array's programmieren. Falls nicht benötigst du evtl. ind. Adressierung, um wirklich auch mit der Anzahl der Plätze, die den Mischer anfordern variabel zu ein. So oder so, ein FIFO macht hier Sinn. Schau mal in die Oscat-Library, vielleicht ist das was passendes dabei und suche mal hier im Forum nach FIFO.

PS: Hier noch was aus unserer FAQ zum Thema: http://www.sps-forum.de/showthread.php?t=8887


----------



## Binaryboy (28 August 2009)

Tja, SCL-Modul habe ich, kann aber nix damit anfangen, weil ich kein C kann.

Mit der Oscat-Library könnte ich vieleicht was anfangen, die habe ich aber nicht.
Dafür aber die stdlibs doppelt ;-)


----------



## Ralle (28 August 2009)

Binaryboy schrieb:


> Tja, SCL-Modul habe ich, kann aber nix damit anfangen, weil ich kein C kann.
> 
> Mit der Oscat-Library könnte ich vieleicht was anfangen, die habe ich aber nicht.
> Dafür aber die stdlibs doppelt ;-)



SCL ist eher an Pascal angelehnt und nicht sooo schwierig.
Die Oscat-Library gibts hier: www.oscat.de

Ich würde mal zuerst die Doku laden und einsehen.


----------



## Larry Laffer (29 August 2009)

Hallo,
ich halte den Vorschlag von Ralle mit den SCL-Scripten für am sinnvollsten ...
Es ist nicht so kompliziert zu erlernen und die Erfolge, die sich (gerade bei derartigen Programmier-Aufgaben) damit erzielen lassen sind ernorm - vor Allem funktioniert es gleich ... Da kann man sich m.E. schon mal hinsetzen und versuchen, das zu Erlernen ...

Gruß
LL


----------



## Binaryboy (29 August 2009)

So weit ich gelesen habe, kommt niemand der sich ernsthaft mit sps Programmierung beschäftigt an SCL vorbei.

Und es zu lernen lohnt sich wohl immer.
Ich versuch aber erstmal mir die wichtigsten Basics in AWL und FUP anzueignen.
Und ein FiFo gehört unbedingt dazu, Array´s wie ich jetzt weiss nicht.

In der Oscat Library habe ich einige interessante Funktionen (Stack 16, FiFo16) gefunden, mit dehnen ich das Problem in den Griff bekommen kann.

Muss man erstmal drauf kommen, das es für sowas ein Open Source Project gibt.

Kein ähnliches OpenSourceProject 
http://de.wikipedia.org/wiki/OScar

Schönen Sonntag!


----------



## Dotzi (30 August 2009)

Hi Binaryboy,

ich hatte mal Lust dein Problem mit herkömmlichen Mitteln zu lösen. Also ohne SCL. Die Anzahl der Mischstationen kann frei gewählt werden.
Wenn du Fragen haben solltest, dann immer raus damit.

Gruß


----------

