Cancel
Showing results for 
Search instead for 
Did you mean: 

BEs aus einer Excel Tabelle erzeugen?

Creator
Creator

Guten Morgen,

 

für ein Möbelwerke Unternehmen soll ich eine Prozess Abbildung erstellen für den Säge Bereich der Holzbretter.

Mein Problem ist, dass ich mit Plant Simulation bisher keine wirkliche Erfahrung habe und nun vor dem Problem stehe das ich eine Excel Tabelle habe wo ca. 1100 verschiedene Holzbretter aufgeführt sind die für den Monat Dezember bearbeitet wurden.
Innerhalb der Tabelle ist aufgeführt wie lang, breit und **bleep** ein Brett ist, wie die Bezeichnung ist, zu welchen Möbel Modell es gehört, wie oft das selbe Brett hergestellt wird (Menge), in welcher Farbe und welche Maschinen es zur fertig stellung alles durchlaufen muss.

Gibt es eine möglichkeit die BEs direkt aus der Tabelle zu erzeugen und ihre Route zu bestimmen?
Bisher hab ich meine Fördergüter immer per Hand erstellt und dann per Attribut die Route mit einer Tabelle fest gelegt, das bei 1100 verschiedenen Brettern zu machen die sich monatlich ändern wäre aber keine Option Man Sad

 

Hoffe jemand hat eine Idee und kann mir helfen.

Mit freundlichen Grüßen

Björn

5 REPLIES

Re: BEs aus einer Excel Tabelle erzeugen?

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

Können Sie die Tabelle mit einem Datensatz eingebettet in ein Modell posten?  Es sollte kein Problem sein, die betreffenden Daten auf ein BE zu speichern.

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

Re: BEs aus einer Excel Tabelle erzeugen?

Creator
Creator

Ich hab das Modell dann mal hier in den Anhang gepackt und die Tabelle sowohl als Excel Datei als auch als normale Tabelle eingebettet.
Das Modell ist quasi ein Beispiel Modell von Plant Simulation nur erweitert und angepasst.
Momentan basiert das Modell noch darauf das ich per Hand Fördergüter erzeuge und diese mit einer Schedule durchlaufen lasse, davon möchte ich mich ja entfernen so das die BEs direkt aus der Tabelle erzeugt werden.

Kurz noch eine Erklärung zur Tabelle. Die Spalte Aplan Nr. gibt an nach welchen Arbeitsplan das Brett bearbeitet wird also welche Maschinen durchlaufen werden müssen. Aplan Bez zeigt dann nochmal die Maschinen im einzelnen die angesprochen werden und die Programm Bezeichnung zeigt zu welchen fertigen Modell das Brett später gehören wird.

Hoffe sie können damit etwas anfangen.

Re: BEs aus einer Excel Tabelle erzeugen?

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

Leider müssen Sie Ihre Daten etwas anpassen. Leider kann ich Ihr Modell nicht in der V. 12 öffnen. So muss es die Textform tun. Die Spaltenüberschriften haben im Datenbereich nichts verloren. Blenden Sie den Spaltenindex und den Zeilenindex ein und fügen Sie die Daten noch einmal in die Tabelle ein. Nun sollte die Bauteilnummer in der Spalte 0 stehen, die Überschriften in dere Zeile 0.

 

Die Namen der ersten Spalte müssen editiert werden, damit Sie diese als BE-Namen verwenden können. Dazu können Sie die folgenden zwei Methoden verwenden:

 

Methode strReplace

(text1:string; searchText:string; replaceBy:string):string
is
	posi:integer;
	i:integer;
do
	while pos(searchText,text1) > 0 loop
		if replaceBy ="" then
			
			local arr:string[]:=splitstring(text1,searchText);
			text1:="";
			--rearrange
			for i:=1 to arr.dim loop
			 text1:=text1+arr[i];
			next;
		else
			posi:=pos(searchText,text1);
			--insert replace Text after posi
			text1:=incl(replaceBy,text1,posi);
			--delete searchText from position
			if strLen(text1) = 1 then
				text1:="";		
			else
				text1:=omit(text1,posi+1,1);
			end;
		end;
	
	end;
	return text1;
end;

Und die Methode createName (braucht die Methode strReplace):

 

(objName:string):string
is
	k:integer;	
do
	
	--delete leading empty spaces
	objName:=trim(objName);
		
	--the name must start with a letter or underscore --> no number (ascii < 65) 
	if ascii(objName) < 65 then
		objName:="_"+objName;
	end;
			
	--replace special characters by underscores 
			
	objName:=strReplace(objName, " ","_");
	objName:=strReplace(objName, ".","_");
	objName:=strReplace(objName, "(","_");
	objName:=strReplace(objName, ")","_");
	objName:=strReplace(objName, "%","_");
	objName:=strReplace(objName, "/","_");
	objName:=strReplace(objName, ":","_");
	objName:=strReplace(objName, ";","_");
	objName:=strReplace(objName, "#","_");
	objName:=strReplace(objName, "*","_");
	objName:=strReplace(objName, "-","_");
	objName:=strReplace(objName, "~","_");
	objName:=strReplace(objName, "+","_");
	objName:=strReplace(objName, "°","_");
			
			
	--check if the name is already existing in the name score
	k:=1;
	if self.~.isNameUnique(objName) = false then
		--name already exists		 
		objName:=objName+"1";
		while self.~.isNameUnique(objName) = false loop
			k:=k+1;
			--attach a consecutive number
			objName:=omit(objName,strlen(objName),1)+to_str(k);
			
		end;
	end;
	return objName;
	
end;

Nach Aufruf der Methode createName enthält die Spalte 0 Namen, die Sie in Plant Simulation verwenden können.

 

 

In der Spalte 6 befinden sich die Arbeitspläne. Zum Herausfiltern der Maschinen, müssen Sie die ersten 6 Zeichen löschen und Klammern und Leerzeichen entfernen.
Methode clearData&colon;

is
	i:integer;
do
	--objektnamen erzeugen
	for i:=1 to Datensatz.yDim loop
		datensatz[0,i]:=createName(datensatz[0,i]);
		
		--die ersten 6 zeichen aus spalte 6 entfernen
		datensatz[6,i]:=omit(datensatz[6,i],0,7);
		--leerzeichen und eckige klammern entfernen
		datensatz[6,i]:=strReplace(datensatz[6,i]," ","");
		datensatz[6,i]:=strReplace(datensatz[6,i],"[","");
		datensatz[6,i]:=strReplace(datensatz[6,i],"]","");
		
		
	next;
end;

Jetzt stehen nur noch die Maschinen verbunden mit Bindestrichen in der Spalte 6.

 

In der Quelle können Sie jetzt ein allgemeines_Brett erzeugen und die Arbeitsplandaten aus der Tabelle z.B. in einer Ausgangssteuerung der Quelle in die Tabelle OperationPlan übertragen (sie können auch die Maße übertragen). Wenn Sie als Namen für die Bretter die Bezeichnungen aus Spalte 0 verwenden, dann ist das relativ einfach:

is
	i:integer;
do
	if datensatz.getRowNo(@.name) > -1 then
	
		local arr:string[]:=splitstring(datensatz[6,@.name],"-");
		--in den arbeitsplan schreiben
		for i:=1 to arr.dim loop
			@.operationplan[1,i]:="M"+arr[i];
		next;
		
	end;
	@.move;
end;

 

Die Erzeugungstabelle der Quelle müsste dann wie folgt aussehen:

 

erz.png

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

Re: BEs aus einer Excel Tabelle erzeugen?

Creator
Creator

Hallo, es ist einige Zeit her. Ich wollte mich nochmal bedanken bei ihnen.
Aus krankheits Gründen kann ich erst jetzt das Projekt wieder aufnehmen.
Ich habe die 4 Methoden die sie oben beschrieben haben in mein Modell eingefügt, ich wollte diese nun nacheinander wie sie beschrieben haben ausführen. Nach dem ich rechtsklick auf die Methode createName gemacht habe und "Ausführen" anwähle erscheint diese Meldung die ich im Anhang angefügt habe.

Mehr passiert nicht und somit komme ich auch nicht weiter Smiley Sad

Könnten sie mir nochmal helfen bitte?

Re: BEs aus einer Excel Tabelle erzeugen?

Phenom
Phenom

Die Methode createName erwartet einen Übergabeparamter (objName)

 

Diesen Parameter hast Du beim Ausführen der Methode nicht mitübergeben !