Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Quelle umlagern - Befehlssuche

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Quelle umlagern - Befehlssuche (1418 mal gelesen)
Tema
Mitglied



Sehen Sie sich das Profil von Tema an!   Senden Sie eine Private Message an Tema  Schreiben Sie einen Gästebucheintrag für Tema

Beiträge: 37
Registriert: 07.01.2009

erstellt am: 16. Feb. 2009 13:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


RS1.jpg

 
Hallo,

ich hätte eine Frage zu meinem Folgenden Code:

(Hauptteil:string)
is
zeit1 : real;
zeit2 : real;
do
zeit1:=Bea_Beh1["Bearbeitungszeit", Pos_Beh1];
zeit2:=Bea_Beh2["Bearbeitungszeit", Pos_Beh2];


if Behälter1.Inhalt.austrittsbereit and Behälter2.Inhalt.austrittsbereit then
Montagestation.Bearbeitungszeit:= zeit1 + zeit2;

elseif Behälter2.Inhalt.austrittsbereit then
Montagestation.Bearbeitungszeit:= zeit2;

elseif Behälter1.Inhalt.austrittsbereit then
Montagestation.Bearbeitungszeit:= zeit1;
   
else
Montagestation.Bearbeitungszeit:=1;
end;

print Montagestation.Inhalt.Name;
print Montagestation.Bearbeitungszeit;
end;

Auf dem Bild(angehängte Datei) sieht man die beiden Quellen aus welchen die Anbauteile kommen. Ich möchte nun das steuern der Bearbeitungszeiten, welche in einer Tabelle stehen, so gestalten das die Methode erkennt das die Quelle ein Teil ausgegeben hat und somit in die Tabelle schaut um die relevanten Daten zu holen.

Meine Methode funktioniert net ganz, wahrscheinlich weil die Teile in der Quelle immer bereit sind umzulagern. Die Quellen sollen nur je nach Variantetyp umlagern. Um es flexibel zu halten, möchte ich aber kein Variantetyp in der Methode haben. Der Befehl "Behälter1.Inhalt.austrittsbereit" stimmt in meinem Fall nicht.
Ich suche den richtigen Befehl, aber kann ihn leider nicht finden.

Ich wäre für jede Hilfe dankbar

Liebe Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tauli
Mitglied
Student


Sehen Sie sich das Profil von tauli an!   Senden Sie eine Private Message an tauli  Schreiben Sie einen Gästebucheintrag für tauli

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 16. Feb. 2009 15:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tema 10 Unities + Antwort hilfreich

Eine Quelle hat doch nur einen Austrittsabstand und keine Bearbeitungszeit. Damit ist eine generierte Einheit die auf der Quelle sichtbar ist, eigentlich auch immer austrittsbereit (wenn der Ausgang nicht blockiert oder gesperrt ist).

Der Austrittsabstand bestimmt ja im Prinzip auch schon die Bearbeitungszeit. Bevor nicht diese Zeit abgelaufen ist wir keine austrittsbereite Einheit generiert.

Ich würde bei einer Quelle das so schreiben:
[code]
if Quelle1.belegt and Quelle2.belegt then
Montagestation.Bearbeitungszeit := Zeit1+Zeit2;
end;

if Quelle1.belegt then
Montagestation.Bearbeitungszeit := Zeit1;
end;

if Quelle2.belegt then
Montagestation.Bearbeitungszeit := Zeit2;
end;
/code]
Ist natürlich dann ein Frage wo du die Methode aufrufst.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

grebla
Mitglied



Sehen Sie sich das Profil von grebla an!   Senden Sie eine Private Message an grebla  Schreiben Sie einen Gästebucheintrag für grebla

Beiträge: 12
Registriert: 03.12.2008

erstellt am: 16. Feb. 2009 15:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tema 10 Unities + Antwort hilfreich

Ich werde jetzt nicht nachsuchen: woher kommt dein Hauptteil?
Wie erstellst du die unterschiedlichen Teile? Ist der Teiltyp in einem Attribut oder im BE Namen gekennzeichnet?

Auslöser ist hoffentlich de Vorgänger mit dem Hauptteil. Was machst du, lädst du die Teile auf oder vernichtest du sie?

Die Quellen erzeugen sowieso BEs; es ist meiner Meinung nach für dein Fall zu kompliziert, sie mit Methoden zu steuern.
Du kannst zwischen Quellen und Montagestation Puffer setzen und eine Methode schreiben, die Teile aus dem Puffer erst dann rauslässt, wenn gebraucht. Sollst dabei den Ausgang gesperrt haben. Sobald die Station / der Puffer leer ist, erzeugt die Quelle das neue Teil.

Puffer.inhalt.umlagern;

Alternativ verzichtest du komplett auf Quellen und setzt Puffer oder Stationen ein. Dann erzeugst du mit einer Methode bei Bedarf deine BEs direkt auf der Station.

Ich mag nicht lange schreiben, lass lieber telefonieren   Schreibst du gerade die Diplomarbeit?

[Diese Nachricht wurde von grebla am 16. Feb. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tema
Mitglied



Sehen Sie sich das Profil von Tema an!   Senden Sie eine Private Message an Tema  Schreiben Sie einen Gästebucheintrag für Tema

Beiträge: 37
Registriert: 07.01.2009

erstellt am: 16. Feb. 2009 23:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


RS1.jpg

 
Hallo,

@Tauli and all
Ja ich weiss das es mit dem Befehl nicht funktioniert. Die Frage ist welchen Befehl ich für meinen Fall nehmen sollte.
Die Quellen sind andauernd belegt und darum funktioniert dieser Befehl auch nicht. Im angehängten Bild sieht man 2 Quellen, sie sollen die Behälter mit mehreren Teilen darstellen. Die Quelle gibt die Teile je nach Variante aus und die globale Variablen "Pos_Beh1/2" geben die Position für das nächste Teil im Behälter an. Nun habe ich die beiden Tabellen erstellt, wo die Zeiten für die Entnahme der einzelnen Positionen drin stehen. Nun kann ich sagen bei den Varianten XundY musst du in beiden Tabellen schauen usw., aber das möchte ich nicht. Ich möchte die Simulation flexibel halten und muss daher der Methode sagen es soll nur in die Tabellen greifen wenn die Quelle davor ein Teil umgelagert hat.
Die Methode soll nur bei einem vorigen umlagern aus der Quelle auf die Montagestation Zeiten aus der jeweiligen Tabelle entnehmen.

@grebla
Ich habe dir eine PM geschrieben bezüglich des telefonierens.

Liebe Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tauli
Mitglied
Student


Sehen Sie sich das Profil von tauli an!   Senden Sie eine Private Message an tauli  Schreiben Sie einen Gästebucheintrag für tauli

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 17. Feb. 2009 08:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tema 10 Unities + Antwort hilfreich

Wenn deine Quelle je nach Variante ein Teil ausgibt, dann ist doch theoretisch immer nur die Quelle belegt die auch das Teil bereithält für diese Variante. Die anderen Quellen sind dann leer.
Damit funktioniert das mit dem 'Quelle.belegt'.

Wenn das schon gar nicht so fumktioniert so wie grebla schreibt.
Du kannst du mit einer 'Dummy'-Station arbeiten. Also einen Puffer, Förderstrecke oder Einzelstation nach der Quelle setzen und immer nur für entsprechende Variante auf diese umlagern.
Dann ist diese 'Dummy'-Station immer nur für die jeweilige Variante belegt.

Code:

if Dummy1.belegt = true and Dummy2.belegt = false then
Variante 1
end;

if Dummy1.belegt = false and Dummy2.belegt = true then
Variante 2
end;

if Dummy1.belegt = true and Dummy2.belegt = true then
Variante 3
end;


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tema
Mitglied



Sehen Sie sich das Profil von Tema an!   Senden Sie eine Private Message an Tema  Schreiben Sie einen Gästebucheintrag für Tema

Beiträge: 37
Registriert: 07.01.2009

erstellt am: 17. Feb. 2009 10:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

vielleicht war das nicht ausdrücklich genug, aber ich habe 2 Quellen aus denen die Anbauteile kommen und der Inhalt der Quellen wird durch eine Ressourcentabelle gesteuert und im Prinzip wird nur der Name übertragen. d.h. die Quellen sind immer belegt.

der untere Code ist mein aktueller und der funktioniert. Aber wenn ich jetzt z.B. eine Änderung der Varianten möchte, so müsste ich auch die Methode umschreiben. Um das zu verhindern möchte ich ein Code, wo überhaupt KEINE Varianten enthalten sind.
In meinen Augen funktioniert das nur, wenn ich, wie erwähnt, eine Methode habe, welches erkennt das die Quelle ein Teil umgelagert hat und dann auf die dementsprechende Tabelle schaut.

Code:
(Hauptteil:string)
is
zeit1 : real;
zeit2 : real;
do
zeit1:=Bea_Beh1["Bearbeitungszeit", Pos_Beh1];
zeit2:=Bea_Beh2["Bearbeitungszeit", Pos_Beh2];

inspect Hauptteil
when "VarianteA", "VarianteF", "VarianteE" then
Montagestation.Bearbeitungszeit:= zeit1 + zeit2;

when "VarianteC", "VarianteD" then
Montagestation.Bearbeitungszeit:= zeit2;

when "VarianteM", "VarianteH" then
Montagestation.Bearbeitungszeit:= zeit1;

else
Montagestation.Bearbeitungszeit:=1;
end;

print Montagestation.Inhalt.Name;
print Montagestation.Bearbeitungszeit;
end;

Ich werde jetzt mal versuchen, denn Vorschlag von grebla umzusetzen. Ansonsten wäre ich über jeden Vorschlag erfreut.

Liebe Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tauli
Mitglied
Student


Sehen Sie sich das Profil von tauli an!   Senden Sie eine Private Message an tauli  Schreiben Sie einen Gästebucheintrag für tauli

Beiträge: 23
Registriert: 28.01.2009

erstellt am: 18. Feb. 2009 08:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tema 10 Unities + Antwort hilfreich

Das ist soweit verständlich.

Wenn deine Quellen umlagern, sind die Teile automatisch auf der Montagestation. Die können nirgendwo vorher "warten".

Deine Montagestation muss also wissen was sie baut und woher die Teile kommen. Die Montagestation muss also die Teile selbst je nach Variante die Teile von der Quelle umlagern.

Wenn du eine Methode hast, die der Montagestation sagt welche Variante sie baut und woher sie die Teile bekommt, dann kannst du genau dort auch die Bearbeitungszeit setzen.

Die Methode würde ich am Eingang der Montagestation aufrufen lassen.
Dort schaut sie welche Variante des Haupteils an kommt.
Ungefähr so:

Code:

--prüfe Variante bei Eingang in Montagestation
if Variante1 then
nimm Teil von Quelle 1;
setze Bearbeitungszeit1;
end;
if Variante2 then
nimm Teil von Quelle 2;
setze Bearbeitungszeit2;
end;
if Variante3 then
nimm Teil von Quelle 1 und Quelle2;
setze (Bearbeitungszeit1+Bearbeitungszeit2);
end;


Damit du ohne Varianten auskommst, könntest du die 'eingegangene' Variante mit einer Variantentabelle abgleichen.
Du durchsuchst also die Tabelle, bis die Variante gefunden wurde und liest dann die Werte aus die in der Tabelle der Variante zu geordnet sind.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Tema
Mitglied



Sehen Sie sich das Profil von Tema an!   Senden Sie eine Private Message an Tema  Schreiben Sie einen Gästebucheintrag für Tema

Beiträge: 37
Registriert: 07.01.2009

erstellt am: 18. Feb. 2009 11:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Prozesstabelle.jpg

 
Hallo,

das Problem ist gelöst....siehe Anhang.
Will euch nicht die Lösung vorenthalten.

Vielen Dank für die Hilfe.

Liebe Grüße

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz