Cancel
Showing results for 
Search instead for 
Did you mean: 

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

ich denke, Sie sollten das kombinieren. Wenn die Anbauteile für ein Endprodukt und das Halbfertigteil im Lager vorhanden sind, dann schicken Sie das Fertigteil "vor" und die Anbauteile hinterher. Das können Sie alles in der Auslagern_ABT Methode erledigen. Auf die Weise können Sie verhindern, dass falsche Einzelteile ausgelagert werden und die Puffer sich füllen.

 

Durch den Dialog läuft leider Ihr Modell nicht mehr im Viewer, ich kann nichts mehr testen.

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Pioneer
Pioneer

Hab jetzt mal die Auslager Methoden zusammengefasst.

 

was mich an der Methode allerdings noch stört ist, bei "--1. Produkt aus der Montageliste auswählen" setze ich den zeiger in der Bestandsliste auf 1,1. und bei "--2. Produkt aus der Montageliste auswählen" macht er einfach dort weiter wo er stehen geblieben ist.

 

Jetzt hab ich das Problem, dass er die Teile die oberhalb von der Zeile in der er Produkt1 gefunden hat micht mehr berücksichtigt werden.

 

Wenn ich aber den Zeiger jedes mal auf 1,1 der Bestandsliste setze, nimmt er wenn ich z.b. 3 mal Produkt3 brauche jedes mal das gleiche aus der Bestandsliste.

 

Wie kann ich es machen, dass er die Zeile überspringt die er schon gefunden hat oder kann ich das iwie anderst lösen?

 

is
	i:integer;
	Montageliste:table;
	Endprodukt:string;
	teil_Name:string;
	x:integer;
	y:integer;
	gefunden:boolean;
	ProduktListe:integer;
	Endprodukt11:integer;
	Endprodukt22:integer;
	Endprodukt33:integer;
	Endprodukt44:integer;
	Endprodukt55:integer;
	
do
	Endprodukt11 := str_to_num(Endprodukt1);
	Endprodukt22 := str_to_num(Endprodukt2);
	Endprodukt33 := str_to_num(Endprodukt3);
	Endprodukt44 := str_to_num(Endprodukt4);
	Endprodukt55 := str_to_num(Endprodukt5);
	
	-- Puffer leer und bereit prüfen
	if (.Modelle.Montage.Puffer_HAP_ABT.bereit and .Modelle.Montage.Puffer_HAP_ABT.leer and .Modelle.Montage.Puffer_HAP_HT.leer and .Modelle.Montage.Puffer_HAP_HT.bereit and Förderband_Montage.leer) then
		
		-- Zahl zwischen 1 und 5 auswählen
		i := z_gleich(1,1,5);
		
		
		-- Endprodukt bestimmen
		Endprodukt := "Endprodukt" + to_str(i);
		
		-- Montageliste aufrufen
		Montageliste := root.Montageliste["Anbauteile",Endprodukt];
		
		-- 1. Produkt aus Montageliste auswählen
		teil_name := Montageliste[1,1];
		
		bestand.setzeZeiger(1,1);
		gefunden := bestand.finden(teil_name);
		if gefunden then 
			
			produkte_vorhanden.anhängen(bestand.zeigerY);
			
		end;
		
			
			-- 2.Produkt aus der Montageliste auswählen
			teil_name := Montageliste[1,2];
			
			gefunden := bestand.finden(teil_name);
			if gefunden then
				
			produkte_vorhanden.anhängen(bestand.zeigerY);
			end;
			
			-- 3.Produkt aus der Montageliste auswählen
			teil_name := Montageliste[1,3];
			
			gefunden := bestand.finden(teil_name);
			if gefunden then
				
			produkte_vorhanden.anhängen(bestand.zeigerY);
			end;
			
			-- 4.Produkt aus der Montageliste auswählen
			teil_name := Montageliste[1,4];
			
			gefunden := bestand.finden(teil_name);
			if gefunden then
				
			produkte_vorhanden.anhängen(bestand.zeigerY);
			end;
			
			-- 5.Produkt aus der Montageliste auswählen
			teil_name := Montageliste[1,5];
			
			gefunden := bestand.finden(teil_name);
			if gefunden then
				
			produkte_vorhanden.anhängen(bestand.zeigerY);
			end;
			
			-- Halberzeugnis vorhanden?
			teil_name := "Halberzeugnis";
			
			gefunden := bestand.finden(teil_name);
			if gefunden then
				
			produkte_vorhanden.anhängen(bestand.zeigerY);
			end;
			
			
			-- wenn 5 Produkte in Produkte_vorhanden, dann diese 5 Produkte auslagern
			if produkte_vorhanden.dim = 6 then
				
				-- 1. Produkt auslagern
				ProduktListe := Produkte_vorhanden.lesen(1);
				bestand.zeigerY := ProduktListe;
				x:=bestand["X",bestand.zeigery];
				y:=bestand["Y",bestand.zeigerY];
				Zentrallager.pe(x,y).inhalt.umlagern(Puffer_Auslagern);
				
				-- 2. Produkt auslagern
				ProduktListe :=Produkte_vorhanden.lesen(2);
				bestand.zeigerY := ProduktListe;
				x:=bestand["X",bestand.zeigery];
				y:=bestand["Y",bestand.zeigerY];
				Zentrallager.pe(x,y).inhalt.umlagern(Puffer_Auslagern);
				
				--3. Produkt auslagern
				ProduktListe :=Produkte_vorhanden.lesen(3);
				bestand.zeigerY := ProduktListe;
				x:=bestand["X",bestand.zeigery];
				y:=bestand["Y",bestand.zeigerY];
				Zentrallager.pe(x,y).inhalt.umlagern(Puffer_Auslagern);
				
				-- 4. Produkt auslagern
				ProduktListe :=Produkte_vorhanden.lesen(4);
				bestand.zeigerY := ProduktListe;
				x:=bestand["X",bestand.zeigery];
				y:=bestand["Y",bestand.zeigerY];
				Zentrallager.pe(x,y).inhalt.umlagern(Puffer_Auslagern);
				
				-- 5. Produkt auslagern
				ProduktListe :=Produkte_vorhanden.lesen(5);
				bestand.zeigerY := ProduktListe;
				x:=bestand["X",bestand.zeigery];
				y:=bestand["Y",bestand.zeigerY];
				Zentrallager.pe(x,y).inhalt.umlagern(Puffer_Auslagern);
				
				--Halberzeugnis auslagern
				ProduktListe := Produkte_vorhanden.lesen(6);
				bestand.zeigerY := ProduktListe;
				x:=bestand["X",bestand.zeigery];
				y:=bestand["Y",bestand.zeigerY];
				Zentrallager.pe(x,y).inhalt.umlagern(Puffer_Auslagern);
				
				-- 1. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(1);
				bestand.zeigerY := ProduktListe;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 2. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(2);
				bestand.zeigerY := ProduktListe-1;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 3. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(3);
				bestand.zeigerY := ProduktListe-2;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 4. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(4);
				bestand.zeigerY := ProduktListe-3;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 5. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(5);
				bestand.zeigerY := ProduktListe-4;
				bestand.entferneZeile(bestand.zeigerY);
				
				--Halberzeugnis löschen
				ProduktListe :=Produkte_vorhanden.lesen(6);
				bestand.zeigerY := ProduktListe-5;
				bestand.entferneZeile(bestand.zeigerY);
				
				Produkte_vorhanden.löschen;
				
				
				-- wenn keine 5 Produkte in Produkte_vorhanden, dann die Liste löschen
				else
				Produkte_vorhanden.löschen;
				
			end;
				
			
		end;
		
		
end;

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

bestand.setzeZeiger(1,1); müssten Sie vor jedem Suchen aufrufen, damit er am Anfang beginnt.

 

Dann gibt es allerdings Probleme mit Teilen, die Sie mehrfach benötigen.

Sie könnten in dem Fall eine Markierung in der Tabelle bestand hinterlassen. Wenn in der Spalte dann ein solcher Eintrag steht, müssen Sie weitersuchen. Am Ende löschen Sie die Markierungen aus den Spalten.

 

Noch ein Hinweis: Sie müssten ProduktListe sortieren, bevor Sie die Zeilen löschen (sonst funktioniert das Nachrücken der Zeilen evtl. nicht richtig).

 

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Pioneer
Pioneer

mit welchem Befehl kann ich die entsprechende Zeile markieren?

ich hab dafür nirgends was gefunden

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

schreiben Sie einfach etwas in die Tabelle in die betreffenden Zeile, z.B:

bestand[5,zeigerY ]:="X";

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Pioneer
Pioneer

kann ich das so für die Produkte 2-5 schreiben?

 

-- 2.Produkt aus der Montageliste auswählen
			teil_name := Montageliste[1,2];
			
			bestand.setzeZeiger(1,1);
			gefunden := bestand.finden(teil_name);
			
			while bestand[4,zeigery] = "X" loop;
				gefunden := bestand.finden(teil_name);
			end;
			
			if gefunden then
				bestand[4,zeigerY] := "X";
				produkte_vorhanden.anhängen(bestand.zeigerY);
			
			end;

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

etwas schwierig als Trockenübung, aber eher so:

 

-- 2.Produkt aus der Montageliste auswählen
teil_name := Montageliste[1,2];

bestand.setzeZeiger(1,1);

gefunden:=false;
while not gefunden loop
gefunden := bestand.finden(teil_name);
if gefunden=true then
if bestand[4,zeigery] = "X" then
gefunden:=false;--bereits markiert, weitersuchen
end;
else
exitloop;--kein weiterer Eintrag, schleife verlassen
end;

end;

if gefunden then
bestand[4,zeigerY] := "X";
produkte_vorhanden.anhängen(bestand.zeigerY);
end;
Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Pioneer
Pioneer

habe den code nun folgendermaßen geändert

wenn ich die Simulation starte, wird beim ersten auslagern die Zeile "bestand.entferneZeile(bestand.zeigerY);" bei --Produkt 3 löschen an

markiert und es zeigt den Fehler

"Zugriff außerhalb der Listendimension in '.Modelle.Gesamte_Fertigung.Bestand'."

			bestand.setzeZeiger(1,1);
			
			gefunden := false;
			while not gefunden loop
				gefunden := bestand.finden(teil_name);
				if gefunden = true then
					if bestand[4,zeigery] ="X" then
						gefunden := false end;
				else exitloop
				end;
				
			end;
			
			if gefunden then
				bestand[4,zeigery] := "X";
				produkte_vorhanden.anhängen(bestand.zeigerY);
			end;

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

Da fehlen ein paar Semikolon:

 

bestand.setzeZeiger(1,1);

gefunden := false;
while not gefunden loop
gefunden := bestand.finden(teil_name);
if gefunden = true then
if bestand[4,zeigery] ="X" then
gefunden := false;
end;
else
exitloop;
end;

end;

if gefunden then
bestand[4,zeigery] := "X";
produkte_vorhanden.anhängen(bestand.zeigerY);
end;

Der Fehler kommt zustande, wenn Sie eine Zeile versuchen zu löschen, die nicht vorhanden ist. In einer Tabelle sollte das nur passieren, wenn Sie versuchen die Zeile 0 zu löschen oder einen negativen Wert übergeben oder wenn die Tabelle mit maxYDim in der Dimension eingeshränkt ist. 

Wie sieht der Teil des Programmes aus, der den Fehler verursacht?

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fehlermeldung "keine typabh�ngige Zeit definiert"

Pioneer
Pioneer
	-- 1. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(1);
				bestand.zeigerY := ProduktListe;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 2. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(2);
				bestand.zeigerY := ProduktListe-1;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 3. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(3);
				bestand.zeigerY := ProduktListe-2;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 4. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(4);
				bestand.zeigerY := ProduktListe-3;
				bestand.entferneZeile(bestand.zeigerY);
				
				-- 5. Produkt löschen
				ProduktListe :=Produkte_vorhanden.lesen(5);
				bestand.zeigerY := ProduktListe-4;
				bestand.entferneZeile(bestand.zeigerY);
				
				--Halberzeugnis löschen
				ProduktListe :=Produkte_vorhanden.lesen(6);
				bestand.zeigerY := ProduktListe-5;
				bestand.entferneZeile(bestand.zeigerY);

Das Problem taucht in dieser Passage auf, weil ich davon ausgehe, dass sich die Zeile die Zeilennummer um 1 verringert, wenn ich davor ein Produkt lösche.

 

Nachdem ich aber jetzt jedesmal bei Bestand(1,1) beginne, kann es auch das Produkt in der 1. Zeile der bestandstabelle sein, und dann habe ich einen negativen Wert weil ich ihn subtrahiere.

 

Wenn ich die Liste Produkte_vorhanden nach der größe sortiere müsse es funktionieren.

Wie lautet der Befehl um eine Liste nach der Größe zu sortieren?

 

Oder sollte man dieses Problem eher anderst Lösen?