Autor
|
Thema: Verschiedene Werker beheben verschiedene Störungen (2368 mal gelesen)
|
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 22. Aug. 2012 19:07 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, bin noch neu im Plant Simulation Universum. Vorab, ich finds klasse, dass man sich hier über Plant austauschen und Hilfestellungen bekommen bzw. geben kann :-) Nun zu meinem Problem: Ich habe mehrere Einzelstationen mit jeweils zwei Störungen (Störung1:reparieren, Störung2:umrüsten). Zudem habe ich zwei Werker (Werker1: Reparateur, Werker2: Umrüster), die jeweils nur eine Störung beheben können (der Reperateur erfüllt nur den Dienst "reparieren", der Umrüster nur den Dienst "umrüsten"). Jetzt möchte ich eine Methode schreiben, die die Werker den jeweiligen Störungen zuteilt. Diese Methode habe ich bei den Einzelstationen in die Anfragesteuerung des Störimporters getan. Bei der Methode habe ich bisher folgendes geschrieben: (typ : integer) -- Importertyp (0=Entstörimporter, 1=Rüstenimporter, 2=Bearbeitungimporter, 3=Transportimporter) is if ?.Störungen.umrüsten.Aktiv:=true then .Ressourcen.Umrüster=bereit; else .Ressourcen.Umrüster=gestoert; end; if ?.Störungen.reparieren.Aktiv=true then .Ressourcen.Reparateur=bereit; else .Ressourcen.Reparateur=gestoert; end; end; Leider funktioniert es hiermit nicht, da mir ein Fehler bei der Methode angezeigt wird! Könnt ihr mir bei der Methode helfen? Und ist das Prinzip nach dem ich die Störungszuteilung realisieren möchte überhaupt richtig, oder muss ich es über einen Exporter laufen lassen? Ich verwende Plant Simulation 9.0 Vielen Dank im Vorraus für Eure Hilfe und viele Grüße!
P.S.: ich weiß, dass dieses Problem schonmal behandelt wurde (siehe Thema: verschiedene Störungs-Arten), aber da es zu diesem Thema keine Antworten gab, habe ich eine neue Diskussionsrunde eröffnet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 26. Aug. 2012 22:50 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
Ich denke, Sie sollten in der Plant Simulation Hilfe alles durchlesen, was dort zum Werker geschrieben steht. Beispiele finden Sie in der Beispielmodellsammlung --> Ressourcen 1. Sie brauchen keine Programmierung um dem Werker "zu sagen", was er zu machen hat. Duplizieren Sie den Werker in der Klassenbibliothek und tragen Sie in der Tabelle Dienste entweder "reparieren" oder "umrüsten" ein (2 verschiedene Werker). 2. Fügen Sie einen Werkerpool ein und tragen Sie die Anzahl der jeweiligen Werker ein (Erzeugungstabelle --> siehe Hilfe) 3. Das Anfordern der Werker übernimmt ein Broker in Zusammenarbeit mit einem Importer (Blatt Importer/ Störimporter)
Dann brauchen Sie noch Fußwege und Arbeitsplätze (siehe Hilfe). Rüsten und Störungen haben eigentlich nichts miteinander zu tun. Gerüstet wird planmäßig, Störungen treten zufällig auf. Tragen Sie eine Rüstzeit ein und im Blatt Rüsten, wann Sie rüsten wollen (z.B. wenn ein anderes BE eintritt). Sie benötigen für Ihre Aufgabenstellung keine Programmierung. Wenn Sie unbedingt per Programmierung die Dienste zuweisen wollen, dann benötigen Sie den Befehl: <werker>.setzeDienste(<table> ) --> siehe Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 27. Aug. 2012 15:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Bon Simul, danke für Ihre ausführliche Antwort und für die Schritt-für-Schritt-Anleitung. Soweit wie in Ihrer Beschreibung war ich allerdings auch schon. Ihre Beschreibung ist aber wirklich sehr nützlich und ich gebe zu, dass das oben genannte Beispiel von mir mit dem Rüsten sehr sehr "unglücklich" war. Tut mir leid, dass ich mein Problem mit diesem zugegebenermaßen blöden Beispiel beschrieben habe Ich beschreibe mein Problem mal anders: Ich habe zwei Störungen. Störung1:Reparatur und Störung2: Reinigen (um Verständnisfragen zu klären: JA, beides sind wirklich zufällig auftretende Störungen, welche nicht unters Rüsten fallen )
Werker1 hat den Dienst "Reparatur" zugewiesen bekommen, Werker2 hat den Dienst"Reinigen" zugewiesen bekommen. Wenn ich nun im Störimporter der Einzelstation unter "Dienste für das Reparieren" die Dienste "Reparatur" und "Reinigung" eintrage, laufen immer BEIDE Werker zu den Störungen. Ist ja auch klar, da ich hierdurch festgelegt hab, dass immer beide Dienste (und somit auch beide Werker) zum Beheben der Störung notwendig sind. Kann ich im Störimporter irgendwie definieren, dass bei Störung "Reparatur" NUR Werker1 und bei Störung "Reinigen" NUR Werker2 zur Maschine läuft? Habe ich eine falsche Einstellung vorgenommen oder geht es nur über den von Ihnen genannten Befehl <werker>.setzeDienste(<table> ) und die dazugehörige Tabelle, in denen ich den Werkern ihre jeweiligen Dienste zuweise? Oder gibt es noch eine andere Art und Weise, wie das Problem zu lösen ist? Viele Grüße
[Diese Nachricht wurde von NecDrop am 27. Aug. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 27. Aug. 2012 21:14 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
Folgendes Problem: Beide Störungen starten den Stör-Importer. Wenn Sie einen spezifischen Werker holen wollen, dann müssten Sie den Dienst (zum Reparieren der Maschine) dynamisch ändern, wenn eine Störung ansteht. Die Dienste der Werker können Sie fest zuweisen. Dazu können Sie mit Code:
<pfad>.Störungen.Störprofil.gestört
abfragen, welches der Störprofile aktiv ist. Mit
Code:
<pfad>.störImp.setzeDienste(<table>)
können Sie den angeforderten Dienst dynamisch setzen.Ein Problem ist der Aufrufzeitpunkt. Wenn ein Diensteanbieter verfügbar ist, geht es sofort los. Folgendes als Beobachter-Steuerung der Maschinen für das Attribut gestört funktioniert:
Code:
(Attribut: string; alterWert: any) is dienste:table[string,integer,string]; do dienste.create; --dienst setzen if ?.gestört then --dienste:=?.störImp.holeDienste(dienste); if ?.störungen.reinigung.gestört then dienste[1,1]:="Reinigen"; elseif ?.störungen.Störung.gestört then dienste[1,1]:="Reparieren"; end; dienste[2,1]:=1; ?.störImp.setzeDienste(dienste); else dienste[1,1]:="Nixx"; dienste[2,1]:=1; ?.störImp.setzeDienste(dienste); end; end;
Das Setzen von dienste[1,1]:="Nixx"; führt dazu, dass der Broker zunächst wartet und die Steuerung eine Chance zur Ausführung bekommt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 28. Aug. 2012 16:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke für Ihre Hilfe! Ich habe es mit Ihrer Methode versucht, die entsprechenden Einstellungen vorgenommen und nun folgende Methode stehen: (Attribut: string; alterWert: any) is dienste:table[string,integer,string]; do dienste.create; --dienst setzen if ?.gestoert then dienste:=?.stoerImp.holeDienste(dienste); if ?.störungen.Reinigung.gestört then dienste[1,1]:="Reinigen"; elseif ?.störungen.Reparatur.gestört then dienste[1,1]:="Reparieren"; end; dienste[2,1]:=1; ?.stoerImp.setzeDienste(dienste); else dienste[1,1]:="Nixx"; dienste[2,1]:=1; ?.stoerImp.setzeDienste(dienste); end; end;
Aber beim Auslesen der Methode erscheint eine Fehlermeldung. Wenn die jeweiligen Störungen eintreten erscheint der Fehler: <<Indexadressierung ist nur für Listen oder Objekte mit einer Kapazität größer als 1 möglich.>> in Zeile: dienste[1,1]:="Reparieren"; bzw. in Zeile: dienste[1,1]:="Reinigen"; Eigentlich macht die Methode was sie soll, da in den Störimporter der Einzelstation unter "Dienste für das Reparieren" zunächst der Dienst "Nixx" mit der Menge "1" eingeschrieben wird (wie in der Methode definiert). Beim Eintreten der ersten Störung müsste nun eigentlich der Dienst "Reparieren" bzw. "Reinigen" in [1,1] geschrieben werden ("Nixx" und "1" müssten somit überschrieben werden). Aber es erscheint oben genannte Fehlermeldung!
Hab schon viel rumprobiert und die Methode abgeändert bzw. versucht "Dienste für das Reparieren" separat zu "erweitern" (aber das geht natürlich nicht, da die Methode ja den Inhalt bestimmt...)
Haben Sie noch eine Idee zur Problemlösung? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 28. Aug. 2012 16:22 <-- editieren / zitieren --> Unities abgeben: Nur für NecDrop
|
NecDrop Mitglied Student
Beiträge: 43 Registriert: 22.08.2012 Plant Simulation 10.1
|
erstellt am: 28. Aug. 2012 16:37 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|