Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  auf Fördergut von Fahrzeug zugreifen

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:  auf Fördergut von Fahrzeug zugreifen (2165 mal gelesen)
StefanieSch
Mitglied



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

Beiträge: 41
Registriert: 13.02.2006

erstellt am: 26. Jun. 2007 16:01    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 an alle!

Ein Fahrzeug ist mit Fördergütern beladen. Diese kommen von unterschiedlichen Quellen und haben demnach unterschiedliche Namen (je nachdem von welcher quelle sie kommen). Als Beispiel:

von Quelle 1: A_1
von Quelle 2: B_1....

Nun sollen diese Fördergüter an zwei verschiedene Lager abgegeben werden. das eine Lager erhält die Fördergüter mit der bezeichnung B_n und das zweite mit den Fördergüter A_n

wie kann ich bei einem Fahrzeug auf ein bestimmtes Fördergut zugreifen?

ich hoffe das meine Frage soweit vertändlich ist!

Grüße und schon mal vielen dank! 

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


Ex-Mitglied

erstellt am: 26. Jun. 2007 17:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Am einfachsten wohl mit einer Schleife

is
ende : boolean;
i  : integer;
f  : object;
do
ende:=false;
f:=weg.be(1); --fzg
i:=1;
repeat
if f.be(i).name="A_n" then
f.be(i).umlagern(puffer);
ende:=true;
else
i:=i+1;
end;
until ende;
end;

s. auch hier
http://ww3.cad.de/foren/ubb/Forum262/HTML/000225.shtml#000000

Der Simulator

StefanieSch
Mitglied



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

Beiträge: 41
Registriert: 13.02.2006

erstellt am: 26. Jun. 2007 17:49    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

Vielen DAnk, das hilft mir weiter.

aber ich verstehe den befehl:

f := weg.be(1); nicht

was bedeutet "weg" und was die 1???

Gruß

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


Ex-Mitglied

erstellt am: 26. Jun. 2007 17:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

weg    = Weg-Objekt
be(1)  1. Be auf dem Weg-Objekt = Fahrzeug

------------------
Der Simulator

StefanieSch
Mitglied



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

Beiträge: 41
Registriert: 13.02.2006

erstellt am: 28. Jun. 2007 11:30    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

ein neues Problem ist aufgetreten. Kurz zu meiner Aufgabe: ich möchte ein artikelbezogenes Kommissionierlager simulieren. Ich bin soweit, das zwei AUfträge (TabelleAuftrag und TabelleAuftrag1) zusammengefasst vom Fahrzeug kommissioniert werden. Nun müssen die gesammelten Güter wieder den Aufträgen zugeordnet werden. Das stelle ich mir wie folgt vor. Ein Fahrzeug mit den gesamten Fördergütern beladen erreicht einen Sensor. Dieser aktiviert die Methode:

@.anhalten;

i:=@.anzahlBEs;

repeat
if TabelleAuftrag.finden(@.be(i).name) then
  @.be(i).umlagern(Versandlager);
  k:=TabelleAuftrag.zeigerY;
  TabelleAuftrag.entferneZeile(k);
                        elseif TabelleAuftrag1.finden(@.be(i).name) then
  @.be(i).umlagern(Versandlager1);
  k:=TabelleAuftrag1.zeigerY;
  TabelleAuftrag1.entferneZeile(k);
end;

i:=i-1;
until i=0;

@.fahren;

In TabelleAuftrag und TabelleAuftrag1 sind insgesamt alle Fördergüter, die das Fahrzeug beladen hat, aufgelistet. Die Methode soll folgendes bewirken. Beispiel: 23 Fördergüter befinden sich auf dem Fahrzeug. der Name des 23. wird ausgelesen und versucht erst in der TabelleAuftrag zu finden, sonst in der TabelleAuftrag1. Wurde das BE gefunden, wird es auf den entsprechenden Lagerbaustein umgesetzt und die Zeile aus der Tabelle gelöscht, da das Teil ja schon dem AUftrag zugeordnet wurde.

Mein Problem ist jetzt, das nur ein Teil der Fördergüter umgesetzt wird und nichts aus der Tabelle gelöscht wird. Ich finde meine Fehler aber nicht!! Bitte helft mir...

Grüße
Steffi

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

planty
Mitglied
Dipl.-Ing.


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

Beiträge: 139
Registriert: 18.09.2006

erstellt am: 28. Jun. 2007 13:42    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 StefanieSch 10 Unities + Antwort hilfreich

Moin,

warum die Zeile eines gefundenen Auftrags nicht gelöscht wird weiss ich nicht, aber:
1. vor .finden(..) ist .setzeZeiger(x,y) immer eine gute Idee
2. bei Umlagern besser prüfen, ob das auch geklappt hat. Sonst löscht Du den Verweis in der Tabelle und das BE liegt noch auf dem Fahrzeug

Ausserdem würde ich eine kopfgesteuerte Schleife vorschlagen, da Du das Umlagern bei i=0 ja nicht durchführen möchtest.

ungetestet:

Code:

@.anhalten;

for i := 1 to @.anzahlBes loop

tabelleAuftrag.setzeZeiger(1,1);
tabelleAuftrag1.setzeZeiger(1,1);

if TabelleAuftrag.finden(@.be(i).name) then
if @.be(i).umlagern(Versandlager) then
k:=TabelleAuftrag.zeigerY;
TabelleAuftrag.entferneZeile(k);
end;
elseif TabelleAuftrag1.finden(@.be(i).name) then
if @.be(i).umlagern(Versandlager1) then
k:=TabelleAuftrag1.zeigerY;
TabelleAuftrag1.entferneZeile(k);
end;
end;

next;

@.fahren;


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

StefanieSch
Mitglied



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

Beiträge: 41
Registriert: 13.02.2006

erstellt am: 28. Jun. 2007 14: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

Das hat mir super weitergeholfen..nun funktioniert es! danke schön!

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


Ex-Mitglied

erstellt am: 28. Jun. 2007 16:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@ planty

Hast Du die "kopfgesteuerte" Schleife mal ausprobiert ?

------------------
Der Simulator


Ex-Mitglied

erstellt am: 28. Jun. 2007 19:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

@planty

   

Zitat:

Ausserdem würde ich eine kopfgesteuerte Schleife vorschlagen, da Du das Umlagern bei i=0 ja nicht durchführen möchtest.



Dein Vorschlag mit der "kopfgesteuerten" Schleife funktioniert so nicht - auch wenn Du so das Umlagern verhinderst, wenn bei Aufruf der Methode keine Be´s auf dem Fzg sind. Aber dann muesste das Fzg garnicht erst anhalten und die Methhode aufrufen.


Hintergrund ist folgender:

durch das Umlagern "rutschen" die nachfolgenden @.be(i)´s alle einen Indexwert runter.
Vergleich es mal mit dem Löschen einer Tabellenzeile.
Wenn also urspruenglich 6 Be´s (= @.anzahlbes) auf dem Fahrzeug waren, liegt das "oberste" 6.Be nach dem 1. Umlagern auf Platz 5, Be 4 auf Platz 3 usw.

Ergo
nach der Hälfte der Schleifendurchläufe ist Dein Schleifenindex grösser als die verbliebene Anzahl Be´s und Du greifst ins "Leere".

Damit es funktioniert muss also die Schleife von
@.anzahlbes herunterzählen  (for i:=@.anzahlbes downto 1....)


------------------
Der Simulator



Technischer Produktdesigner (m/w/d) Maschinen- und Anlagenkonstruktion
Die besten Köpfe für die unterschiedlichsten Aufgaben zu finden sowie Menschen und Technologien zu verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns: als ambitionierte:r Mitarbeitende:r für einen unserer Kunden. Du weißt genau, was du technologisch auf dem Kasten hast? Du suchst einen Arbeitgeber, der das genau erkennt, der dein Engagement wertschätzt und ...
Anzeige ansehenProduktdesign, Industriedesign
planty
Mitglied
Dipl.-Ing.


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

Beiträge: 139
Registriert: 18.09.2006

erstellt am: 29. Jun. 2007 15:59    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 StefanieSch 10 Unities + Antwort hilfreich

ups... da hat der Simulator natürlich (mal wieder) recht :-)
bei der Tabelle hätte ich es gemerkt, da hab ich extra nochmal nachgesehen, dass der richtige Index verwendet wird.

Ich wollte nur weg von der repeat schleife, die ist bei definierter Anzahl von Ereignissen einfach unübersichtlich und fehlerträchtig.
Mein erster Ansatz war

Code:

while @.anzahlBes > 0 loop
«loop_statements»
end;

aber das hilft natürlich auch nicht, weil man den Index trotzdem seperat führen muss. 'for downto' passt prima.

P.

[Diese Nachricht wurde von planty am 29. Jun. 2007 editiert.]

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