Autor
|
Thema: Anzahl BEs auf Fahrzeug ermitteln scheitert (2595 mal gelesen)
|
opa munster Mitglied
Beiträge: 21 Registriert: 08.03.2009 Plant Simulation 8.2
|
erstellt am: 03. Apr. 2014 19:20 <-- editieren / zitieren --> Unities abgeben:
Hallo, hab schon wieder ne Frage (Sorry) : Ich wollte in einem Modell über : .BEs.Fahrzeug.AnzahlBEs Die Aktuell auf dem Fahrzeug befindlichen BEs ermitteln. Das Ergebnis ist aber leider immer 0. Klicke ich im Modell auf das Fahrzeug und rufe über F8 die Methoden und Attribute auf steht da die korrekte Anzahl der BE's ebenso wie der Pfad (.BEs.Fahrzeug:1). Wieso erhalte ich nicht die aktuelle BE Anzahl über ".BEs.Fahrzeug.AnzahlBEs" ? Grus und Dank im Voraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
opa munster Mitglied
Beiträge: 21 Registriert: 08.03.2009 Plant Simulation 8.2
|
erstellt am: 04. Apr. 2014 10:18 <-- editieren / zitieren --> Unities abgeben:
Ich kann das Fahrzeug über .BEs.Fahrzeug:1.AnzahlBEs (also unter Einbeziehung der ID) abfragen. ...das Problem ist, dass das Fahrzeug keine konstante ID hat. über : @.id; kann ich die ermitteln. Ich kann dann die ID in einer integer Variablen speichern. variable:=@.id; Wenn ich nun aber das Objekt abfragen will, muss ich die Variable ja wieder in den Pfad einsetzen : .BEs.Fahrzeug:variable.AnzahlBes; ...das funktioniert so aber leider nicht...gibt's da ein Syntax zu ? 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: 04. Apr. 2014 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für opa munster
Sie können das Fahrzeug über den Weg auf dem es fährt ansprechen Code:
weg.inhalt.anzahlBEs
oder wenn die Steuerung über einen Sensor aufgerufen wird:
Code:
@.anzahlBEs
.BEs.Fahrzeug ist das Fahrzeug in der Klassenbibliothek. Die Teile sind aber auf dem abgeleitetem Objekt im Netzwerk, das können Sie auch über die Vererbung ansprechen: Code:
.BEs.Fahrzeug.kindNr(1).anzahlBEs
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
opa munster Mitglied
Beiträge: 21 Registriert: 08.03.2009 Plant Simulation 8.2
|
erstellt am: 04. Apr. 2014 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für Ihre Antworten ! Leider das Problem wohl etwas komplexer : Möchte LKW über Stapler beladen. Ich habe einen LKW_Weg und einen Stapler_WEG. Auf dem LKW_Weg kommen mehrere LKW an verschiedenen Sensoren an (belade-/entladestellen). Parallel zu einer der Beladestationen befindet sich ein Sensor für den Stapler auf dem Stapler_WEG. Die Methode wird über den Staplersensor getriggert und soll prüfen wieviele BEs sich auf dem einen LKW befinden (an einem dezidierten Sensor). Da mehrere LKW auf dem gleiche Weg sind kann lösung 1 nicht funktionieren. Lösung 2 geht nur, wenn Methode erneut angestoßen wird. Das geht auch nicht, da der LKW ja wartet. Da sich die Situation wiederholt entstehen ja (nach Abfertigung und Neuankunft) neue ID (Kinder), daher muss ich zunächst die ID irgendwie abfragen. Meine Idee war die ID bei Ankunft zu speichern (var_fuer_ID:=@.id) und dann in den Pfad/Abfragemethode des Staplerweges einzubauen : Meth_Obj:=str_to_obj(".BEs.Fahrzeug:",var_fuer_ID,".AnzahlBEs"); und dann über das Object auszugeben, allerdings bekomme ich die hier Fehlermeldung : '.BEs.Fahrzeug:1.AnzahlBEs' ist kein gültiger Pfad. Komischer Weise funktioniert der Ausdruck : .BEs.Fahrzeug:1.AnzahlBEs für das Fahrzeug mit der ID 1, wenn man das direkt eingibt. Further Ideas ? 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: 04. Apr. 2014 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für opa munster
sie könnten die LKWs einchecken wenn Sie sich zwischen zwei Sensoren befinden (globale Variable Typ object), dann zwei Sensoren auf dem LKW-Weg (Eingang und Ausgang), beim Eingang setzen Sie die globale Variable auf @ (globaleVar:=@) und beim Ausfahren setzen Sie die Variable auf void (globaleVar:=void). Sie müssten dann mit dem Laden warten, bis ein LKW in dem Bereich eingecheckt hat und können über die globale Variable auf den LKW zugreifen Code:
waituntil globaleVar /= void prio 1; anzahlTeile:=globaleVar.anzahlBEs;
any more questions? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
opa munster Mitglied
Beiträge: 21 Registriert: 08.03.2009 Plant Simulation 8.2
|
erstellt am: 04. Apr. 2014 12:33 <-- editieren / zitieren --> Unities abgeben:
|
Bon Simul Mitglied Simulant
Beiträge: 1250 Registriert: 08.08.2011 Plant Simulation 10.1, 11 ff Professional
|
erstellt am: 04. Apr. 2014 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für opa munster
mit str_to_obj erzeugen Sie nur eine Objektreferenz, Sie dürfen nicht den Methodennamen mit in die Adresse integrieren, so sollte es funktionieren: Code:
Anzahl:=str_to_obj(".BEs.Fahrzeug:"+num_to_str(var_fuer_ID)).AnzahlBEs;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
opa munster Mitglied
Beiträge: 21 Registriert: 08.03.2009 Plant Simulation 8.2
|
erstellt am: 04. Apr. 2014 14:15 <-- editieren / zitieren --> Unities abgeben:
|