Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Methode mit Hilfe einer Methode erzeugen

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:  Methode mit Hilfe einer Methode erzeugen (1190 / mal gelesen)
Julian2408
Mitglied



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

Beiträge: 26
Registriert: 09.07.2020

erstellt am: 16. Jul. 2020 11: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 zusammen,

ich bin noch Neuling in der Arbeit mit Plant Simulation und habe in meiner Masterthesis die Aufgabe ein wandelbares Montagesystem zu erzeugen.
Dies bedeutet, dass sich das ganze Modell mit Hilfe programmierter Methoden auf Basis von Werten einer Excel-Datei (mehrere Tabellen) aufbaut.
Mittlerweile bin ich so weit, dass sich die Quellen, Stationen, Puffer, BEs usw. so erzeugen lassen.
Nun stehe ich jedoch vor dem Problem, dass ich bspw. eine Methode zur Ausgangssteuerung in einer Quelle erstellen möchte.

Dies habe ich so gelöst:
        LieferantObject.erzeugeAttr("BeiAusgang", "method")
LieferantObject.setzeAttribut("AusSt", "self.BeiAusgang")

Dies funktioniert soweit, jedoch würde ich nun gerne mit Hilfe dieser Methode auch noch den "Inhalt" der Methode BeiAusgang erzeugen. Soll dann so aussehen, dass bspw. für Quelle1 umgelagert wird auf das Lager, von Quelle2 umgelagert wird auf Station1 usw.....Diese Informationen stammen dann auch aus der Excel-Datei.

Bisher habe ich jedoch keine Lösung gefunden, wie ich das machen kann.
Bsp.: die Methode "BeiAusgang" in Quelle1 soll dann so aussehen:
      @.umlagern(lager)

Vielen Dank schon mal für eure Hilfe 


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

nadin1223
Mitglied
Ing.


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

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 16. Jul. 2020 13:36    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 Julian2408 10 Unities + Antwort hilfreich

Hallo Julian,

Code:
&Method.program:= "Dein ProgramCode"

Zitat:
Bsp.: die Methode "BeiAusgang" in Quelle1 soll dann so aussehen:
      @.umlagern(lager)

Es dient nicht der Übersichtlichkeit, den zu erzeugenden Quellcode in einer Methode abzulegen. Ideal ist es solche Methodeninhalte, welcher in eine andere Methode kopiert werden, separat anzulegen. Die veränderlichen Parameter werden mittels Suchen/Ersetzen im Text vor dem Einfügen geändert.

vG
Nadin

------------------
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern)

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

Julian2408
Mitglied



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

Beiträge: 26
Registriert: 09.07.2020

erstellt am: 16. Jul. 2020 14:22    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

Danke schon mal für die schnelle Hilfe! 

Kannst du mir sagen was genau dieses & in

Code:
&method.program := "Dein ProgramCode"
macht? Bekomme aktuell noch die Fehlermeldung "Der ref-Operator kann das Objekt nicht finden".

wie genau kann ich mir das mit dem Suchen/Ersetzen vorstellen?
Hättest du da vielleicht ein Beispiel für mich?

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

nadin1223
Mitglied
Ing.


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

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 16. Jul. 2020 14:45    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 Julian2408 10 Unities + Antwort hilfreich

für dein obiges Beispiel:
Code:
LieferantObject.&BeiAusgang.program := "..."

& übergibt das Objekt. Mal einfach mit und ohne ausprobieren

Zitat:
wie genau kann ich mir das mit dem Suchen/Ersetzen vorstellen?

beispielsweise der SimTalk-Befehl "regex_replace" bzw. alles was für String Manipulation anwendbar ist.

------------------
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern)

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

Julian2408
Mitglied



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

Beiträge: 26
Registriert: 09.07.2020

erstellt am: 16. Jul. 2020 15:28    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

Ok perfekt danke, das funktioniert 

Eine Frage hätte ich noch:

Mein Code sieht nun so aus:

Code:
var x,y,z: integer
var LieferantName, LieferantType: string
var LieferantCoord: real[3]
var LieferantObject: object
var LieferantEinsteuerung: string

//Daten aus Excel einlesen
t_Lieferanten.readExcelFile("C:...\Simulationsdaten.xlsx","Lieferanten")

// Für jeden Lieferant in Tabelle
for y := 1 to .Modelle.Modell.t_Lieferanten.YDim

// Lese Name, Typ, Koordinaten
LieferantName := .Modelle.Modell.t_Lieferanten["Lieferanten_Name", y]
LieferantType := .Modelle.Modell.t_Lieferanten["Lieferanten_Element", y]
LieferantCoord := [.Modelle.Modell.t_Lieferanten["X", y],
.Modelle.Modell.t_Lieferanten["Y", y],
.Modelle.Modell.t_Lieferanten["Z", y]]

LieferantEinsteuerung := .Modelle.Modell.t_Lieferanten["Anlieferungsort", y]

// Erzeuge neue Station
LieferantObject := str_to_obj(".Materialfluss." + to_str(LieferantType)) // Identify Class in Class Library
LieferantObject.duplizieren(.Modelle.SimulationModell, LieferantName) // Create duplicate
LieferantObject := str_to_obj(".Modelle.SimulationModell." + to_str(LieferantName)) // Identify derived object
LieferantObject.Koordinate3D := LieferantCoord // Move derived object

        //Erzeuge/setze Attribute
LieferantObject.setzeAttribut("BEAuswahl", "Reihenfolge zyklisch")
LieferantObject.setzeAttribut("Pfad", ".Modelle.Modell.t_BEs_objekte")
LieferantObject.erzeugeAttr("BeiAusgang", "method")
LieferantObject.setzeAttribut("AusSt", "self.BeiAusgang")
LieferantObject.&BeiAusgang.program := "@.umlagern(LieferantEinsteuerung)"


next


Hier würde ich nun gerne anstatt dass LieferantEinsteuerung in den ProgramCode übertragen wird, den Wert für LieferantEinsteuerung übergeben.
Ich habe bspw. für Lieferant1 den Anlieferungsort Lager, für Lieferant2 die Station VoMo1 usw. Dies ist so in der Excel Tabelle hinterlegt.

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

nadin1223
Mitglied
Ing.


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

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 16. Jul. 2020 15:43    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 Julian2408 10 Unities + Antwort hilfreich

Zitat:
Hier würde ich nun gerne anstatt dass LieferantEinsteuerung in den ProgramCode übertragen wird, den Wert für LieferantEinsteuerung übergeben.

Das verstehe ich nicht.

dein Code mal grob kommentiert

Code:
...

//n.r. ist ehe eine Dialog wo der Speicherort gewählt wird
//Daten aus Excel einlesen
t_Lieferanten.readExcelFile("C:...\Simulationsdaten.xlsx","Lieferanten")

//n.r. speichere am Besten dies in Tabelle ab. Weil dann kann der Nutzer nachvollziehen was für Daten gelesen werden. Und Feedback, dass Syntax und Semantik in Excel ok ist, wäre schön
//n.r. ehe mit root und curent arbeiten. Wenn Modell nicht mehr Modell ist, dann funktioniert es nicht mehr :-D
// Für jeden Lieferant in Tabelle
for y := 1 to .Modelle.Modell.t_Lieferanten.YDim

//n.r. Error Logst mit einplanen Was für Daten sind MustHave und welche nur Need...
// Lese Name, Typ, Koordinaten
LieferantName := .Modelle.Modell.t_Lieferanten["Lieferanten_Name", y]
LieferantType := .Modelle.Modell.t_Lieferanten["Lieferanten_Element", y]
LieferantCoord := [.Modelle.Modell.t_Lieferanten["X", y],
.Modelle.Modell.t_Lieferanten["Y", y],
.Modelle.Modell.t_Lieferanten["Z", y]]

LieferantEinsteuerung := .Modelle.Modell.t_Lieferanten["Anlieferungsort", y]

//n.r. eglische Version hat andere Bezeichnungen in Bibliothek als die Deutsche...Objekte und Methode in Ordner-->  und alles in die Klassenbibliothek
// Erzeuge neue Station
LieferantObject := str_to_obj(".Materialfluss." + to_str(LieferantType)) // Identify Class in Class Library
LieferantObject.duplizieren(.Modelle.SimulationModell, LieferantName) // Create duplicate
LieferantObject := str_to_obj(".Modelle.SimulationModell." + to_str(LieferantName)) // Identify derived object
LieferantObject.Koordinate3D := LieferantCoord // Move derived object

//n.r. ehe die Logik im System hinterfragen. Wenn immer gleich, dann ist es ein eigenes Objekt für Klassenbibliothek. Wenn Varianz in Setzen der Parameter, dann ehe Objekt mit Tabelle. Werte werden dann aus Tabelle gelesen. Wenn individualität, dann Dialog... Usability für anwender ist immer nice ;-9 
      //Erzeuge/setze Attribute
LieferantObject.setzeAttribut("BEAuswahl", "Reihenfolge zyklisch")
LieferantObject.setzeAttribut("Pfad", ".Modelle.Modell.t_BEs_objekte")
LieferantObject.erzeugeAttr("BeiAusgang", "method")
LieferantObject.setzeAttribut("AusSt", "self.BeiAusgang")
LieferantObject.&BeiAusgang.program := "@.umlagern(LieferantEinsteuerung)"


next



------------------
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern)

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

Julian2408
Mitglied



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

Beiträge: 26
Registriert: 09.07.2020

erstellt am: 16. Jul. 2020 17: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

Danke für die Mühe 


Nochmals zu meinem Problem:

Ich übergebe ja aus meiner Tabelle den Anlieferungsort für die einzelnen Quellen.

Code:
LieferantEinsteuerung := .Modelle.Modell.t_Lieferanten["Anlieferungsort", y]

Hier wird also die Spalte Anlieferungsort für die einzelnen Lieferanten ausgelesen und dann in LieferantEinsteuerung übergeben.
Beispiel:
Lieferant1 hat den Anlieferungsort Lager1
Lieferant2 den Anlieferungsort Vormontage1

Wenn ich nun die Methode so erstelle

Code:
LieferantObject.&BeiAusgang.program := "@.umlagern(LieferantEinsteuerung)

wird ja jedoch nicht der aktuelle Wert in der Schleife für LieferantEinsteuerung übertragen (Bsp. für Lieferant 1: Lager1, für Lieferant2: Vormontage1) sondern eben genau diese Bezeichnung LieferantEinsteuerung.

Ich hätte jedoch gerne, dass die Methode bei Lieferant1 "BeiAusgang" am Ende das beinhaltet:

Code:
@.umlagern(Lager1)

bei Lieferant2 das:
Code:
@.umlagern(Vormontage1)
usw.

aktuell wird es jedoch so übertragen:

Code:
@.umlagern(LieferantEinsteuerung)
in sämtliche Quellen (Lieferant1, 2, ....).

Hoffe das war so verständlich 
Vielleicht mach ich das ganze auch einfach zu kompliziert, aber bin ja gerade erst dabei mich näher mit Plant Simulation zu beschäftigen 

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

nadin1223
Mitglied
Ing.


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

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 17. Jul. 2020 13:35    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 Julian2408 10 Unities + Antwort hilfreich

Beispiel für SimTalk integriert
Code:
...:= "@.umlagern("+ LieferantEinsteuerung+ ")"

Beispiel für SimTalk extern String Laden und manipulieren:

Code:
...:= regex_replace("@.umlagern(%Pr9%)","%Pr9%",DeineDatenTabelle[x,y])

Beispiel für Integration der Daten mittels Einbindung der Haupttabelle:

Code:
...:= "@.umlagern(str_to_obj("+  to_str(DeineDatenTabelle) + "["+ to_str(x) + "," + to_str(y) + "]" + "))"


usw.
Syntax und Semantik auf Basis der Daten, Anforderung und Literatur erarbeiten und definieren. Und dies dann konsequent im Modellierungsprozess einheiten.

------------------
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern)

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

Julian2408
Mitglied



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

Beiträge: 26
Registriert: 09.07.2020

erstellt am: 17. Jul. 2020 14:25    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

Vieeelen Dank! Das war genau das was ich gebraucht habe 

Was bedeutet bzw. macht das %Pr9%? Oder könntest du mir vielleicht kurz in Worten erklären was bei dem zweiten Code genau passiert?

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

nadin1223
Mitglied
Ing.


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

Beiträge: 938
Registriert: 29.03.2016

erstellt am: 17. Jul. 2020 15:03    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 Julian2408 10 Unities + Antwort hilfreich

Zitat:
Was bedeutet bzw. macht das %Pr9%? Oder könntest du mir vielleicht kurz in Worten erklären was bei dem zweiten Code genau passiert?

Selbst erarbeiten fördert den Lernprozess 

------------------
Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten. (Matthew Austern)

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

Julian2408
Mitglied



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

Beiträge: 26
Registriert: 09.07.2020

erstellt am: 17. Jul. 2020 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

Das ist vollkommen richtig 

nur hab ich dazu leider bisher wirklich nirgends etwas gelesen.

Hast du denn irgendwelche Literaturempfehlungen zum Thema PlantSimulation/Simtalk?
Die Bücher von Steffen Bangsow habe ich und bin ich gerade am durcharbeiten 

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

Julian2408
Mitglied



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

Beiträge: 26
Registriert: 09.07.2020

erstellt am: 17. Jul. 2020 15:15    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

ok  die Frage war echt doof  habe die Lösung gerade selbst gefunden. Dachte da steckt mehr hinter dem %Pr9% 

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