Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  TM - Plant Simulation
  Verschiedene Werker beheben verschiedene Störungen

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:  Verschiedene Werker beheben verschiedene Störungen (2368 mal gelesen)
NecDrop
Mitglied
Student


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

Beiträge: 43
Registriert: 22.08.2012

Plant Simulation 10.1

erstellt am: 22. Aug. 2012 19:07    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,

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


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 26. Aug. 2012 22:50    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 NecDrop 10 Unities + Antwort hilfreich

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


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

Beiträge: 43
Registriert: 22.08.2012

Plant Simulation 10.1

erstellt am: 27. Aug. 2012 15:13    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 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


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 27. Aug. 2012 21:14    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 NecDrop 10 Unities + Antwort hilfreich

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


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

Beiträge: 43
Registriert: 22.08.2012

Plant Simulation 10.1

erstellt am: 28. Aug. 2012 16:09    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,

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


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

Beiträge: 1250
Registriert: 08.08.2011

Plant Simulation 10.1, 11 ff Professional

erstellt am: 28. Aug. 2012 16: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 Nur für NecDrop 10 Unities + Antwort hilfreich

Löschen Sie die Zeile:
Code:

dienste:=?.stoerImp.holeDienste(dienste);

Mit welcher Version arbeiten Sie?

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

NecDrop
Mitglied
Student


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

Beiträge: 43
Registriert: 22.08.2012

Plant Simulation 10.1

erstellt am: 28. Aug. 2012 16:37    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

SUPER!!!  Es funktioniert.

Ich arbeite mit Plant Simulation 9.0

Vielen Dank. Sie haben mir sehr geholfen  

[Diese Nachricht wurde von NecDrop am 28. Aug. 2012 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