Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Bearbeitungszeiten addieren

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:  Bearbeitungszeiten addieren (2019 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: 11. Feb. 2009 00:17    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 auf dessen Lösung ich im Moment nicht komme.
Zum besseren Verständnis habe ich das Layout und die Methode hochgeladen.

Die Montagestation nimmt je nach Variantentyp entweder ein Teil aus dem Behälter 1, oder aus dem Behälter2 oder kein Teil raus. Dementsprechend sind die verschiedenen Bearbeitungszeiten durch die unterschiedlichen Positionen in den Behälter gegeben......und es funktioniert alles!

Nun habe ich Varianten die jeweils ein Teil aus beiden Behältern brauchen. Das umlagern funktioniert auch.
Ich habe aber in meiner Station dadurch 2 verschiedene Bearbeitungszeiten die nacheinander laufen und nicht parallel.
z.B. VarianteF nimmt ein Teil aus Behälter 1 mit der Bearbeitungszeit 5sek und nimmt dann ein Teil aus Behälter 2 mit der Bearbeitungszeit 4 sek, also insgesamte Bearbeitungszeit von 9 sek.

Ich bin bisher gescheitert einen Weg zu finden und bräuchte Hilfe, wäre sehr dankbar.

Liebe Grüße

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

LaBonita
Mitglied
Dipl.-Math.


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

Beiträge: 151
Registriert: 26.07.2007

eM-Plant 7.5 bis 8.1
VB
Java
C#

erstellt am: 12. Feb. 2009 00:27    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

Hallo Tema,

Du musst die Bearbeitungszeit der Montagestation auf die entsprechende Zeit setzen, bevor Dein auslösendes Element (das montiert werden soll) in die Station eintritt. Als passive Steuerung könntest Du also immer basierend auf dem aktuellen Teil in der Montagestation mit dem Wissen, welches als nächstes eintreten wird, die Zeit für das kommende Teil setzen. Also in etwa so: Ein Bruder sitzt im Kaffee und bestellt für die Schwester, die das Cafe betritt, wenn er es verläßt einen Kaffee usw.
Einzig die Initialisierung ist etwas trickreich.

Alle Klarheiten beseitigt?

Gruß,
Ortrun

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: 12. Feb. 2009 14:56    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,

so wie ich dich verstanden habe, soll ich die Zeit der Montagestation vorsetzen. Wenn ja, dann würde das leider nicht auf meine Aufgabe zutreffen. Ich habe das Problem das die Teile aus einem Behälter mit mehreren Positionsteile kommen und diese je nach Position auch verschiedene Zeiten beanspruchen.
Ich müsste die Methode so flexibel wie möglich halten.

Die Methode unten ist meine jetzige, so wie man sieht sind die Bearbeitungszeiten abhängig von der Variante und Position im Behälter aus welches das Anbauteil montiert wird.

Das beste wäre, wenn ich diese Methode jetzt für die VarianteA umschreib, sodass es die Zeiten abhängig der beiden Position einnimmt.
z.B. Pos_Beh1 = 2 --> 8 sek
      Pos_Beh2 = 3 --> 6 sek
-->also ist die Gesamtbearbeitungszeit der Montagestation = 14sek.
Für die restlichen Varianten, wäre die Methode ausreichend, da nur ein Teil aus einem der beiden Behälter entnommen wird.

Ich hoff es war verständlich!?

(Hauptteil:string)
is
do
inspect Hauptteil
when "VarianteA", "VarianteM","VarianteD" then
Pos_Beh1;

if Pos_Beh1=1 then
Montagestation.Bearbeitungszeit:=5;
elseif Pos_Beh1=2 then
Montagestation.Bearbeitungszeit:=8;
elseif Pos_Beh1=3 then
Montagestation.Bearbeitungszeit:=11;
end;

when "VarianteA", "VarianteC" then
Pos_Beh2;

if Pos_Beh2=1 then
Montagestation.Bearbeitungszeit:=2;
elseif Pos_Beh2=2 then
Montagestation.Bearbeitungszeit:=4;
elseif Pos_Beh2=3 then
Montagestation.Bearbeitungszeit:=6;;
end;
else
Montagestation.Bearbeitungszeit:=1;
    end;
end;


Liebe Grüße

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: 12. Feb. 2009 16:18    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

Dann erstelle eine Tabelle, in der du eben diese Zeiten festlegst.

if Pos_Beh2=1 then
Montagestation.Bearbeitungszeit:=2;
elseif Pos_Beh2=2 then
Montagestation.Bearbeitungszeit:=4;
elseif Pos_Beh2=3 then
Montagestation.Bearbeitungszeit:=6;;
end;
else
Montagestation.Bearbeitungszeit:=1;
    end;
end;

Würde dann so aussehen:

Pos_Beh2  |  Bearbeitung
--------------------------
1        |  2
2        |  4       
3        |  6

Analog für Pos_Beh1.

Die Zeiten holst du über Variablen, zeit1 und zeit2.

Dann kannst du die Methode umschreiben (zB)

if Pos_Beh1 = 1 AND PosBeh2 = 3 then
zeit1 := Tabelle1["Bearbeitung", 1];
zeit2 := Tabelle2["Bearbeitung", 2];
Montagestation.Bearbeitungszeit := zeit1 + zeit2;
end;

Fertisch.


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: 12. Feb. 2009 18:39    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,

da hätte ich auch drauf kommen müssen, dass ich die Zeiten in Tabellen setzen soll. Ich will es so einfach wie möglich halten, da die Flexibilität und Übersichtlichkeit ein wichtiger Punkt sind. Umso weniger Tabellen und Methoden umso besser ist es.
Die 3 Positionen sind nur zur Vereinfachung gedacht, eigentlich sind es bis zu 15 Positionen, also wäre deine Lösung etwas sehr umständlich und ich hätte ein Code der Seitenlang wäre.
Ich konnte es aber durch setzen von weiteren Variablen lösen, aber die Idee der Tabellen, da hatte es gefehlt.
Hier ist der Code:

(Hauptteil:string)
is
x : integer;
y : integer;
zeit1 : real;
zeit2 : real;

do
x := Pos_Beh1;
y := Pos_Beh2;

zeit1:=Bea_Beh1["Bearbeitungszeit", x];
zeit2:=Bea_Beh2["Bearbeitungszeit", y];

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;


Vielen Dank!

Liebe Grüße

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 10:13    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

Also bitte, ein Code der seitenlang wäre???? Du brauchst 2 Tabellen und eine Methode, und die ist ein paar Zeilen lang. Überlege mal, hättest du 1635 Varianten, dann hättest du mit deinem Code so viel Spaß  )

Du setzt 2 Variablen, TeilA und TeilB. Wenn deine Variante nur aus einem Teil besteht (zB. Pos_Beh1 ist 2) dann setzt du TeilA := 2 und TeilB := 0 oder was auch immer.

if TeilA /= 0 and TeilB /= 0 then
Montagestation.Bearbeitungszeit:= zeit1 + zeit2;
elseif TeilA /= 0 and TeilB = 0 then
Montagestation.Bearbeitungszeit:= zeit1;
elseif TeilA = 0 and TeilB /= 0 then
Montagestation.Bearbeitungszeit:= zeit2;
end;

Oder hast du auch eine 4 Variante? Ich denke nicht.

Alternativ kannst du deine Varianten auch in einer Tabelle festhalten ("VarTabelle"), dann liest du automatisch aus drei Tabellen alle Varianten und Zeiten, die du brauchst.

Variante | PosA | PosB
----------------------------------
A | 1 | 1
B | 1 | 3
C | 2 | 0
... | ... | ...
ZA | 51 | 1

0 steht für Teil in der Variante nicht Vorhanden. So kannst du in der Zeiten Tabelle auch eine Zeile 0 haben, mit der Bearbeitungszeit gleich 0.
Die Variable "var" wäre in diesem Fall deine Variante.

TeilA := VarTabelle["PosA", var];
TeilB := VarTabelle["PosB", var];
zeit1 := Tabelle1["Bearbeitung", TeilA];
zeit2 := Tabelle2["Bearbeitung", TeilB];
Montagestation.Bearbeitungszeit := zeit1 + zeit2;

Somit hättest Du Dein Problem mit einem Fünfzeiler gelöst, für beliebig vielen Varianten und Positionen.

Vorteil der Tabellen ist, Du kanst jederzeit die Werte aus einer Excel Tabelle per Knopfdruck importieren. Außerdem dienen die zur Übersicht, sonst musst du immer bei Änderung einer Zeit im Code suchen.
Meiner Meinung nach sind max. 3 Tabellen und eine Methode ohne absoluten Verweise VIEL übersichtlicher und einfacher.

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 11:51    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 hatte ich mich nicht richtig ausgedrückt, aber mit dem was du geschrieben hast gebe ich dir recht und ich hatte es auch dann so gemacht.
Ich habe 2 Tabellen und eine Methode und es läuft gut....Danke für die Hilfe.

Ich habe insgesamt 9 Varianten, aber 3 Prozesse, deshalb die Vereinfachung der 3 Varianten. Meine Methode sucht sich auch die Bearbeitungszeiten nachdem es die Variante erkannt hat.

Ich will es nun ändern und eine Methode schreiben, indem die Zeiten nach dem umlagern der beiden Quellen gesteuert wird.
Also wenn die Quelle1 ein Teil ausgibt, dann wird in der Tabelle die dementsprechende Zeit geholt, wenn nioht dann habe ich eine fixe Bearbeitungszeit. Und wenn natürlich beide Quellen jeweils ein Teil ausgeben, dann wird in beiden Tabellen nach der zeit geschaut und addiert

Ich suche quasi den Befehl, der sagt, wenn die z.b. Quelle1 ein Teil ausgibt dann mach dies und das.

Wäre echt nett, wenn mir da jemand helfen könnte

Liebe Grüße


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

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 16:07    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

Ausgangssteuerung. Oder was meinst du?

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