Autor
|
Thema: Erklärung zur hinterlegten Logik einer Methode (1272 mal gelesen)
|
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 20. Feb. 2017 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo! Und zwar frage ich mich, was der Unterschied zwischen diesen beiden Methoden ist: 1.
Code: waituntil Aushärtestrecke.Voll =false @. umlagernwaituntil Puffereingang = @.Variante @.umlagern
2.
Code: waituntil Aushärtestrecke.Voll =false and Puffereingang =@.Variante @.umlagern
Kann mir da Jemand Auskunft geben, wie das Programm die beiden Methoden durchläuft? Es gibt definitiv einen Unterschied, da ich nur mit Ersterem keinen Simulationsabbruch riskiere. Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 20. Feb. 2017 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
Hallo JackCarver, Code:
waituntil Aushärtestrecke.Voll =false --Warte bis nicht Voll dann @. umlagern -- umlagern eine Station weiterwaituntil Puffereingang = @.Variante --Warte bis übereinstimmt dann @.umlagern --umlagern eine Station weiter
Code: waituntil Aushärtestrecke.Voll =false and Puffereingang =@.Variante --Warte bis nicht Voll und übereinstimmt @.umlagern --umlagern
Im Code 1 sind zwei waituntil´s. Also nach dem Ersten wartet die Methode bis Bedingung aus zweiten waituntil erfüllt ist. Beim Code 2 ist ein waituntil. Die Methode wird aktiviert und wartet bis beide Bedingungen gleichzeitig erfüllt sind. Erst dann lagert die Methode das @ einmal um. Zitat: mit Ersterem keinen Simulationsabbruch riskiere.
das verstehe ich nicht. Code1 und Code2 bilden unterschiedliche Logik ab. In Code1 wird das @, wenn Bedingung erfüllt ist, sequenziel von Station zu Station umgelagert. In Code2 wird @ dann einmal umgelagert, wenn alle Bedingungen erfüllt sind. vg nadin ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 20. Feb. 2017 16:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin, deswegen verstehe ich es auch nicht. Ich habe Code 1 in der AS einer Station. Sobald ich irgendetwas daran ändere, funktioniert es nicht mehr. Viele Grüße P.S.: Gerne lade ich mein Modell auch mal hoch, damit du es vll mal nachvollziehen kannst. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 20. Feb. 2017 16:48 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
Ja lade bitte hoch. Und welche Logik soll deine Steuerung haben ist auch wichtig zu wissen. Ich schaue es mir dann heut abend an. ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 20. Feb. 2017 19:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin! Zum Modell: Es sollen immer UT und OT zusammen bleiben. Ich habe die Flusssteueurung zwischen den Füllplätzen und den Aushärtepuffern über die globale Variable "Puffereingang" und "Zähler" geregelt. Diese Stelle der Simulation ist aber nicht sauber programmiert. Trotzdem funktioniert es bei allen Variationen an Bearbeitungszeiten in der Anlage (was sehr wichtig ist!!). In der AS von FIFO ist auch ein Logikfehler. Hier müsste es lauten: Code: if @.UT = false waituntil FTS1_1.Leer = true and FTS1_2.Leer = true and Füllplatz1.Leer = true or FTS1_1.Leer = true and FTS1_2.Leer = true and Füllplatz2.Leer = true @.umlagern(FTS1_1) else if @.UT = true waituntil FTS1_1.Leer = true and FTS1_2.Leer = true and Füllplatz2.Leer = true @.umlagern(FTS1_1) end end
...Jedoch funktioniert das System dann nicht mehr, weil es blockiert. Ebenso werden die Teile vom Füllplatz nicht mehr über FTS in den Aushärtepuffer geschleust, was auch der Realität nicht entspricht. Wenn ich das mache, dann blockiert die Anlage ebenfalls. Vielleicht kannst du ja Ideen für eine saubere Programmierung generieren? Mit dem Baustein "Flusssteuerung" funktioniert es denke ich nicht, oder? Vielen Dank für Deine Hilfe!! [Diese Nachricht wurde von JackCarver am 22. Feb. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 20. Feb. 2017 19:45 <-- editieren / zitieren --> Unities abgeben:
|
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 20. Feb. 2017 20:42 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
Ich betrachte mal diese Anfrage dann mal als erledigt. ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 21. Feb. 2017 10:46 <-- editieren / zitieren --> Unities abgeben:
Hi Nadin! Ich muss mich doch nochmal melden. Und zwar habe ich ein anderes Problem jetzt, was ich absolut nicht verstehe und woran ich schon seit gestern Abend erfolglos dran hänge. Im Anhang findest du mein Modell. Und zwar ist es so, dass der Manipulator die Teile duplizieren muss. Das eine Teil (Modell) wird dann wieder zu "Modell auflegen" geschleust, das andere Teil (Sandform) wird zur Nachbearbeitung weitergeschleust. So wie ich es jetzt habe, ist es der Realität entsprechend. Aber wieso überspringt Turbinenzustömgehäuse UT und OT meinen Puffer "FIFO" ( Wenn er das nicht tun würde, wäre mein Modell valide und es würde nicht blockieren... Ich hoffe, Du kannst mir helfen. Ich bin echt am verzweifeln [Diese Nachricht wurde von JackCarver am 22. Feb. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 21. Feb. 2017 12:05 <-- editieren / zitieren --> Unities abgeben:
...ebenso wird bei FTS2_1 das Teil schon ausgeschleust, obwohl die Ist- und Soll-Losgröße noch nicht erreicht wurde Wenn Du mal in der ES von Manipulator das "erzeugen" rauslöschst, dann siehst Du, wie die Linie laufen muss. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 21. Feb. 2017 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
Moin, FIFO.statAnzahlEin = Modell_auflegen.statAnzahlAus ist eig. gleich. Deshalb weiß ich nicht was du mit "[...] überspringt Turbinenzustömgehäuse UT und OT meinen Puffer 'FIFO' [...]" meinst. "FIFO2" ist mit sich selbst verbunden. Ist das gewollt? Wie soll FIFO4 voll werden wenn Bearbeitungszeit = 0 ist? Und ich brauche Info für was die Zähler bis Zähler4 gedacht sind? Prinzipiell steht das Modell, da Zähler2 nicht 0 wird. Zähler2 wird nicht 0, da QuelleModellplatte belegt ist und Manipulator auf Leer "QuelleModellplatte" wartet. QuelleModellplatte wartet aber dass der Zähler2 null wird. Zitat: Wenn Du mal in der ES von Manipulator das "erzeugen" rauslöschst, dann siehst Du, wie die Linie laufen muss
hat auch irrgendwie noch net alles rund. Die Linie läuft nicht leer, da Manipulator nicht umlagert, wegen FTS2_3.gestört = true. und FIFO1 wartet, dass Manipulator leer wird. vg nadin ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 21. Feb. 2017 14:02 <-- editieren / zitieren --> Unities abgeben:
Hallo! Erstmal vielen Dank für Deine Antwort. Zu 1: Also das Turbinenzuströmgehäuse überspringt nicht den Puffer (FIFO), aber die Reihenfolge! Heißt also, dass das Turbinenzuströmgehäuse in FIFO eingeschleust wird und SOFORT wieder ausgeschleust werden, ohne irgendwelche Bedingungen in der AS zu beachten oder sich an die Sequenz zu halten. Zu 2: Nein, habe ich jetzt geändert. Danke! Zu 3: Das macht noch nichts, weil ich noch auf Zeiten für den nachgelagerten Prozess "Kern_einlegen" warte. Zurzeit ist die BZ bewusst auf 0 gesetzt. Zu 4: Allgemeiner Sinn der Zähler ist es, immer bis 2 zu zählen. Somit sollen UT und OT einer Variante immer zusammen bleiben. Zähler = Zählt bis zwei, um OT und UT einer Variante hintereinander in die Aushärtestrecke zu schleusen. Zähler1 = Zählt bis zwei, falls ein Teil eine zweite Runde nach der Aushärtestrecke laufen muss. UT und OT einer Variante bleiben somit zusammen, weil erst wenn Zähler1 = 0 bestimmte Ausgänge wieder frei werden. Zähler2 = Zählt mit, wenn ein Teil vom Manipulator zu "Modell_auflegen" geschleust wird. UT und OT bleiben somit zusammen, weil erst wenn Zähler1= 0 bestimmte Ausgänge wieder frei werden. Zähler3 = Hat zurzeit keine Funktion mehr. Zähler4 = Zählt bis 18, damit die Linie volllaufen kann. Sobald Zähler4 = 0 wird Manipulatorausgang entsperrt. Ich habe zu den Variablen auch Kommentare geschrieben. Eine aktualisierte Version findest Du in dem Modell, was ich jetzt nochmal hochlade. Zu 5: Dass die Linie nicht ganz leer läuft ist nicht tragisch. Das liegt daran, weil FIFO1 die Anzahl an BEs = 2 nicht erreicht und somit FTS2_3 gestört bleibt. Wenn ich meine Simulationsstudien fahre, wird dieser Fall aber nicht eintreten. Sobald ich in der ES von Manipulator @.erzeugen(FTS3, 1.2, true) einsetze, kommt es.. a) vor, dass Teile bereits ausgeschleust werden bei FTS2_1, obwohl die Ist-Losgröße noch gar nicht erreicht wird. Dadurch wird natürlich die Reihenfolge zerstört und meine ganze Logik mit den Zählern funktioniert nicht mehr. b) vor, dass im FIFO Teile einfach übersprungen werden? Klicke doch bitte bei Mo. 04.01.2016 um ungefähr 3:16 einmal auf Turbinenzuströmgehäuse OT, so dass es blau hervorgehoben ist. Schaue dann was mit diesem Teil in dem Puffer "FIFO" passiert. Es wird die ganze Sequenz übergangen und die Ausgangssteuerung gar nicht mehr beachtet. Die Quintessenz ist für mich, dass irgendetwas schief mit dem Befehl "erzeugen" in der ES des Manipulators läuft. Hast du eine Idee woran das liegen kann? Viele Grüße [Diese Nachricht wurde von JackCarver am 22. Feb. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 21. Feb. 2017 20:40 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
naja, so ganz bin ich mir net sicher, dass es valide ist. Zumindest hällt es im Testlauf die Reihenfolge ein und läuft durch. Schau mal, ob es noch deiner Logik entspricht, ob noch was nicht so ist wie es sein sollte...hehe ...einfach wieder Fragen vg Nadin
------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 21. Feb. 2017 21:44 <-- editieren / zitieren --> Unities abgeben:
Also was ich jetzt schon sagen kann: Das ist der absolute Hammer von Dir! Wahnsinn Vielen Dank!! Hatte es mittlerweile hinbekommen, dass das System nicht mehr so einen Blödsinn macht und die Reihenfolge eingehalten wird. ABER: Ich sehe schon auf den ersten Blick, dass deine Version viel sauberer programmiert ist. Natürlich muss ich mich jetzt erstmal darin einfinden, bevor ich dann zu Punkten sinnvolle Fragen stellen kann. Bezüglich der Aushärtestrecken-Kapazität gilt, dass diese ziemlich bedeutend ist. Ich werde schauen, ob ich das auch selbst lösen kann. Einen schönen Abend wünsche ich noch! P.S.: Die Kapazität von 7 reicht in dem neuen System nicht aus, weil ein Ereignis stattfindet, in dem der Puffer (FIFO) 0 BEs besitzt. Es muss kontinuierlich sichergestellt sein, dass der Inhalt > 0 ist, damit die Linie nicht blockiert. [Diese Nachricht wurde von JackCarver am 21. Feb. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 21. Feb. 2017 22:37 <-- editieren / zitieren --> Unities abgeben:
Also zwei Probleme sind mir aufgefallen: 1. Ich kann nicht wahlweise die Varianten von Neusand = false zu true ändern (z.B. habe ich Stützring auf Neusand = true gesetzt; die ersten zwei Varianten dürfen logischerweise nicht Neusand sein). Das System blockiert. 2. Die Kapazität des Puffers (FIFO). Hast du vll dazu auch noch Lösungen? Unabhängig davon werde ich es natürlich auch versuchen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 21. Feb. 2017 22:58 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
zu 1. .Modelle.Netzwerk.Aushärtestrecke.BeiAusgang ist nicht sauber. Nicht alle Möglichkeiten werden durch IF abgefangen. Code:
if @.Neusand = true and @.Runde=1 and QuelleModellplatte.Inhalt = void then Pufferausgang := Aushärtestrecke.Inhalt.Variante waituntil FTS2_1.Leer=true and FTS2_2.Leer=true and FTS2_3.Leer=true and Zähler2 = 0 Zähler1 := Zähler1+1 M_StatusUeberwachen(?,@,"1",Zähler1,"BeiAusgang"); FTS2_3.gestört := true @.umlagern(FTS2_1) else Print "33333333333ERROR"--das fehlt end
zu 2. FIFO ist gegen Kapa-Änderung eig bei mir stabil. Aushärtestrecke dagegen nicht. ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 22. Feb. 2017 00:01 <-- editieren / zitieren --> Unities abgeben:
|
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 22. Feb. 2017 00:37 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
Zuerst versuche selbstständig eine Lösung zu finden. Wichtig: jedes System hat Steuerung und Kontrolle. Du überwachst bis jetzt nur das Ergebniss (Reichenfolge). Die Kontrolle ist aber das Überwachen der Parameter und Methoden, die das Ergebniss beeinflussen. Was sind die Informationsschritte, wie ist die Reihenfolge der Bearbeitung, auf was hat Information einfluss. Das sind Fragen, welche du beantworten musst. Vg Nadin ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JackCarver Mitglied Student
Beiträge: 33 Registriert: 20.01.2017
|
erstellt am: 22. Feb. 2017 08:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin! Das Problem ist, dass mir die Zeit ziemlich weg läuft. Ich muss parallel daran arbeiten. Kannst Du mir vielleicht noch sagen, was an dem Modell falsch ist, was ich jetzt hochgeladen habe. Oder wäre es auf den ersten Blick auch möglich zu benutzen? (Ist prinzipiell das Modell von gestern, nur dass es jetzt ebenfalls die Reihenfolge einhält) [Diese Nachricht wurde von JackCarver am 24. Feb. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 22. Feb. 2017 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für JackCarver
Moin, Ich habe mir gestern den Einfluss auf Aushärten nicht näher angeschaut, deshald habe ich vollstes vertrauen, dass du es selbst finden schaffst. vg nadin ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |