Jump to content

Containerhafen ( Kransteuerung- eine EV-Lösung )


FriLu

Empfohlene Beiträge

Hallo @alle,

nach längerer Abstinenz (arbeitsbedingt) kann ich mich mal wieder dem Studio widmen :) .

Im Forum tauchte ja die Frage auf, wie man (ohne allzuviel Einträge) eine Containerverladung oder ähnliches mit der EV realisiert--
Ich hatte mal damit angefangen (vor der integrierten Kransteuerung): die Krane mit Dummyloks bewegt und die Steuerung über VB-Script; aber das ist zum glück ja nicht mehr notwendig :).

Angeregt durch Alois63 sein Problem, hab ich mal eine Steuerung entworfen; die einzelnen Stellplätze lassen sich rel. einfach erweitern, ohne die EV zu vergrößern.
Zur Anwendung kommen Mehrfach verschachtelte Variable, -gar nicht so einfach, den Überblick zu behalten :/.

Probierts einfach mal aus, wenn Fragen, dann fragen :D .

 

Gruß~Lutz

containerhafen(aloys63).mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo Lutz, alle,

die umsetzung gefällt mir.
die frage ist nun, wenn nicht avg's die ladung aufnehmen sondern verschiedene züge mit mehreren unterschiedlichen containerwagen, die wahlweise 20 oder 40 fuß container bzw die stellplätze dafür haben, beim kran vorfahren.
dort denke ich mal wird es kompliziert, wenn nicht unmöglich die verschiedenen kräne auf eine solche aufgabe vorzubereiten. dieses problem spiegelt auch einige frage wieder, die momentan in sachen transport auftreten.


in den arbeitsbereichen hat der
Hafenkran (groß) 200 fuß
Hafenkran (klein)200 fuß (auf jeder seite)
Umschlagbahnhof  120 fuß
platz um verschiedene container wagons pro gleis abzuarbeiten.

mein lösungsansatz über die steuerschnittstelle wäre:
ein gleisweises einlesen von wagen/wagon, die sich im arbeitsbereich eines krans befinden.
(zur eingrenzung kann evtl der lokname, der die angehängten wagons beinhaltet, herangezogen werden. eine andere objektvariable-sparende methode wäre diese info in einem der lok zugehörigem beschriftungsfeld abzulegen).
hier müssten eindeutige namen vorliegen (das könnte ein problem für einige nutzer ergeben) mal ein beispiel:

bild belademöglichkeiten

container-wagons.jpg

beispiel für namensgebungen (die gut gesplittet und eindeutig über die schnittstelle neu zusammengestell und umbenannt werden können)
BR 111;    80er2#401||402;     80er1#401||402;  40er2#201||202;  80er3#401||202||203;  40er1#401;  80er4#201||202||403

container-wagons2.jpg
so könnte der lokname br111#80er2#80er1#40er2#80er3#40er1#80er4 aussehen, was mir nicht sinnvoll erscheint - also wird das anhängsel
in ein der lok gehörendes beschriftungsfeld geschrieben.

soweit erst mal meine überlegungen
vg quackster

ps es wäre schön eure meinung oder andere, bessere ideen kund zu tuen.

Bearbeitet von quackster
ps eingefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen.

Vorweg ein kurzes (beschleunigtes) Video meiner geplanten Hafenanlage:

Die MBS-Line soll komplett mit Zügen entladen werden. Die EV dafür habe ich ganz normal runtergeschrieben. Viel geschreibsel, aber mit der richtigen Methode gehts eigentlich schnell. 

Wo ich mir gestern Abend die umgewandelte Anlage (containerhafenaloys) von Lutz runtergeladen habe, war ich positiv erstaunt, evtl. nicht so viel geschreibsel zu haben

@ Lutz und alle: Eine ähnliche EV sollte für dieses Szenario auch möglich sein, oder ?

containerverladung02.mbp

Die Anlage enthält eigentlich alles, was zum Testen gebraucht wird. 

Gruß Stefan

Edit: die HH Süd V100 Gleis 1 muß beschleunigt werden um das Szenario zu starten

 

 

Bearbeitet von Holzwurm
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

zuerst mal Danke für die "gefällt mir",

@Aloys: Wenn man mit Variablen arbeitet, wird die Variablenliste zwangsläufig sehr lang; dafür bleibt die EV aber kurz- wenn ich es richtg erinnere, wird die EV ja bei jedem Frame ausgeführt, was bedeutet das jeder Eintrag auf eine evtl. eingetretene Aktion geprüft werden muss. (Bei 60 Frames also 60x pro sekunde)
-Ob dabei ein Objekt (in der EV) direkt oder über eine Variable angesprochen wird, ist dem Compi egal- Variable ersparen aber ellenlange Einträge in der EV.

@Quackster: Das Problem der Verwaltung der Container und der verschiedenen Abstellplätze bleibt- ob mit EV-mitteln oder einem externen Programm, im Studio müssen Abstellflächen vorhanden sein um den Transport gezielt durchführen zu können. Objektvariable, die die relevanten Daten beinhalten sind IMHO ein gangbarer Weg um die Steuerung universell (also kurz) zu halten-

Das das Einlesen welcher Wagen sich gerade auf dem Gleis befindet zZ. nur über die Schnittstelle funktioniert ist ärgerlich und wird sich verm. erst mit einer anderen (bzw. überarbeiteten) EV ändern.

Beim beladen der 80' Containerwagen fällt mir iM. auch nur ein, es bei einer Variante zu lassen, also entweder 2x 40' Container oder 1x 40' und 2x 20' oder 4x 20' ... ich denke, beim betrachten der Verladung fällt das sowiso nicht auf, vereinfacht das Handling aber ungemein- wenn ich mir vorstelle den 80' Containerwagen mit 8! Abstellflächen auszurüsten ( 3x 40' ; rechts-links-mitte[zum transport von einem Container], analog dazu 5x 20' ) und dann die Abfragen, welche Flächen belegt sind um Kollisionen zu vermeiden ( ob extern oder über EV )...

@stefan: Machbar ist vieles, aber am Anfang nicht zuviel vornehmen, die Gefahr die Lust zu verlieren, bevor alles zur Zufriedenheit läuft ist zu groß...

Noch eine Bemerkung zur Namensvergabe bei Objekten, die über die EV angespochen werden sollen: Es ist zwar bequem, die Namen aus dem Katalog zu lassen und nur eine Zahl anzuhängen, führt jedoch zu Problemen, wenn Leerzeichen im Namen sind und dem Objekt Objektvariablen zugeordnet werden- Leerzeichen in Variablennamen sind NICHT erlaubt: Meine eigene (leidvolle) Erfahrung.
Kurze, aber eindeutige Namen vereinfachen auch das erstellen der EV, Variablennamen müssen öfter per Tastatur eingegeben werden ( Stichwort: Benutzerdefiniert ).

In dem Zusammenhang eine Bitte an @NEO: Den Hinweis, das Leerzeichen in Variablennamen nicht erlaubt sind ins Wiki aufnehmen.

So, jetzt versuche ich mich mal an Stefans Layout...

Gruß ~ Lutz

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Lutz,

vor 4 Stunden schrieb FriLu:

Das das Einlesen welcher Wagen sich gerade auf dem Gleis befindet zZ. nur über die Schnittstelle funktioniert ist ärgerlich und wird sich verm. erst mit einer anderen (bzw. überarbeiteten) EV ändern.

das stimmt so nicht ganz. Wenn Du als Wagen-Bezeichnungen numerische Werte verwendest, kannst Du die Wagen auf einem bestimmten Gleis auch über die EV identifizieren. Ist zwar etwas "einschränkend" (nur numerische Werte für Wagen-Bezeichnungen") und "umständlich" (Abfrage über eine Rundum-Zählerschleife), aber es geht (siehe beispielsweise meine Demo-Anlage "Ablaufberg" unter "experimentelle Anlagen").

Viele Grüße
BahnLand

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Lutz,

danke erstmal das du dich evtl. der Sache annimmst.

Zu den Variablen: ich wusste es schon, aber es war von mir aus nicht geplant in die EV Variablen einzusetzen ...einfach runterschreiben und gut ist.

Und dann kam vor einigen Tagen Bahnland mit Variablen in der Containerverladung und ich wusste sofort, das meine aufwendige Arbeit der Umbenennung der Objekte (fast) für umsonst war.

Gruß Stefan

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Quackster, Lutz und alle,

ich habe mir auch mal ein paar Gedanken zur Containerverladung gemacht, insbesondere zu der von Quackster angesprochenen Problematik:

Am 18.8.2016 um 14:05 schrieb quackster:

die frage ist nun, wenn nicht avg's die ladung aufnehmen sondern verschiedene züge mit mehreren unterschiedlichen containerwagen, die wahlweise 20 oder 40 fuß container bzw die stellplätze dafür haben, beim kran vorfahren.
dort denke ich mal wird es kompliziert, wenn nicht unmöglich die verschiedenen kräne auf eine solche aufgabe vorzubereiten. dieses problem spiegelt auch einige frage wieder, die momentan in sachen transport auftreten.

@Quackster:

Du hast ja schon in deinem Beitrag über die verschiedenen Belademöglichkeiten gesprochen. Im Extremfall wären bei einem 80-Fuß-Containerwagen 7 Abstellflächen (4x 20' und 3x40') nötig:

20' 20' 20' 20'
40' 40'
  40'  

Jede dieser Abstellflächen kann zwei verschiedene Zustände (frei / belegt) haben. Von Bahnland wissen wir ja, dass Textvariablen in der EV arithmetische Funktionen beherrschen. Legt man nun das binäre System bei der Benennung der Abstellflächen zu Grunde ergeben sich folgende Bezeichnungen für die Abstellflächen:

1 2 4 8
16 32
  64  

Wenn man nun zwei Variablen für jeden Containerwagen anlegt kann man zum einen den Typ des Containerwagens, und damit die überhaupt vorhandenen Abstellflächen und zum Anderen die aktuelle Belegung des Containerwagens eindeutig durch Summierung ermitteln. Hier ein Beispiel:

Typ Containerwagen 80' mit 7 Abstellflächen (4x20' + 3x40'): 1+2+4+8+16+32+64=127

Belegung dieses Wagens mit 4 Containern à 20' auf den Abstellflächen 1, 2, 4 und 8: 1+2+4+8=15

Belegung dieses Wagens mit 2 Containern à 20' auf den Abstellflächen 1 und 4: 1+4=5

Belegung dieses Wagens mit 2 Containern à 20' auf den Abstellflächen 1 und 4 und einem Container à 40' auf der Abstellfläche 64: 1+4+64=69

Legt man zu Grunde, dass Rollmaterial eine minimale Ladelänge von 20' und eine maximale Ladelänge von 80' hat ergeben sich folgende Typen:

20' Ladelänge     80' Ladelänge
Anordnung Ladefl. Typ     Anordnung Ladefl. Typ
1       1     1 2 4 8 15
                       
40' Ladelänge     16 4 8 28
Anordnung Ladefl. Typ              
1 2     3     1 2 32 35
                       
16     16     1 64 4 69
                       
1 2     19     1 2 4 8 31
16         16    
                       
60' Ladelänge     1 2 4 8 47
Anordnung Ladefl. Typ         32
1 2 4   7              
              1 2 4 8 63
16 4   20     16 32
                       
1 32   33     1 2 4 8 79
                64  
1 2 4   23              
16         1 2 4 8 95
              16    
1 2 4   39       64  
  32                
              1 2 4 8 111
1 2 4   55         32
16           64  
  32                
              1 2 4 8 127
              16 32
                64  

Wie zu sehen ist, ist jeder Typ eindeutig zu identifizieren. Genauso verhält es sich mit den Belegungen. Dies könnte man als Grundlage für ein universelles Containertransportsystem nutzen.

Soweit erstmal meine Gedanken. Es wäre schön, wenn ihr eure Meinung oder Gedanken hierzu kund tut.

VG Marco

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

ein hallo an die container schupser,

zurück zu den basics
wir haben also ein einfaches verladesystem (aufnehmen und an anderer stelle absetzen), was händlich wunderbar zu bedienen ist. (y)
sobald die angelegenheit automatisier wird, treten schwierigkeiten auf, da die ev des mbs nur begrenzte mittel zu verfügung stellt.
durch zwischenlagern oder verschachteln von werten können einige probleme abgefangen werden. dies ist dann aber nur etwas für gehirnakrobatiker die sich sehr gut mit der ev auskennen müssen. auch die weitergabe einer lösung, an andere nutzer wird sehr schwierig (und evtl auch garnicht) nachvollziehbar.

kurzum, gerade für auch solche probleme, hilfestellungen wurden plugins oder tools bereitgestellt. - es sollten @ESAY, @FriLu und andere herangezogen werden, um hier allgemeine erleicherungen (nicht unbedingt komplettlösungen) zu verfügung zu stellen.

gerade das allgemeine nutzbare finde ich wichtig. leider aber auch nicht wirklich möglich, da
ein container sowohl als transportgut wie auch als stellfläche behandelt werden kann.
zusätzlich soll besagter container, wenn eine bestimme stapelhöhe erreicht ist - keine beachtung mehr finden.
ganz nebenbei sollte dieser container wissen ob er ein 10' (ja die gibt es auch), 20' oder 40'ft container ist.
ähnliches wird von "normalen" stellflächen erwartet (sie sollen wissen ob sie frei und unbeschwert so rum liegt oder von einem oder mehreren containern erdrückt werden).

um nun container-wagons ein solches schicksal zu ersparen habe ich für mich (der einfachheitshalber) beschlossen, jeden container-wagon nur mit den stellfächen zu bestücken, die ich wirklich nutzen möchte.
(so kann auch einmal ein 80'ft stellmöglichkeiten habender wagon mit nur einer 20' ft stellfläsche bestückt sein)
ein wichtiger grund für diese vereinfachung ist,
nicht mehr der wagon auf irgend einem gleis (mit der info was für stellflächen er hat und was davon belegt ist) muss bekannt sein, dafür gibt es eh keine einfache lösung,
sondern ich lasse mir nur die stellflächen auf den gleisabschnitt innerhalb des kranbereiches über die schnittstelle ausgeben
aus diesem grund würde/werde ich nur die stellflächen (durchnummerierte name mit festgelegter anzahl von stellen) für die logistik heranziehen.
mit hilfe und speichern der belegungen von einzelnen stellflächen über die steuerschnittstelle geht es  weiter...

vg quackster



 

Bearbeitet von quackster
Link zu diesem Kommentar
Auf anderen Seiten teilen

weiter: aber zuerst ein danke an FriLu und Marco.

wurden nun stellflächen in einem schiff (oder containerhafen, lager ...) angeordnet,
benötigt man ein noch zuschreibendes plugin/tool, mit dessen hilfe nun unsere stellflächen dem schiff zugeordnet und gespeichert werden.

hierzu werden die stellflächen durch(mehrfach)selektion markiert und eine maximale stapelhöhe angegeben. sollte es verschiedene stapelhöhen geben,
müssen diese immer extra der prozession unterzogen werden mit der entsprechenden höhe versehen werden. nun könnte eine liste mit dem (eindeutigen) schiffsnamen gespeichert werden.
mal ein beispiel
BILD CONTAINERSCHIFF #CS1

#CS1.jpg
die zahlen auf den stellplätzen geben die maximale stapelhöhe an. zu sehen ist die lademöglichkeit für 90 containern auf 32 stellplätzen.
es befinden sich also in unserer schiffsliste 32 stellplätze, wovon einer durch eine zufallzahl(zz) 1-32 für die erste beladungsstelle ausgewählt und mit einem container (zb evergruen13) beladen wird.

die liste hat den aufbau und die zz hatte den wert 2
Bild cs1b
#CS1b.jpg

 

der eintrag wird aus dem arbeitsfeld geladen und in eine variable gepackt damit der kran sein ziel hat.
das arbeitsfeld in der liste wird durch den hier angegebenen container ersetzt und die aktulle anzahl für container auf der stellfläche geändert

die stellplätze verringern sich, sobald auf einer stellfläche die max stapelhöhe erreicht wird.
Bild cs1a

#CS1a.jpg

diese stellplätze finden beim ermitteln der zufallszahl keine beachtung mehr.

ein entladevorgang funktioniert gleich würde nur rückwärts laufen. das ganze spart jede menge ev arbeit.

mal sehen was mir noch dazu einfällt. prüft das bitte mal auf gedankliche fehler (bitte nicht auf rechtschreibung :$) und was man besser oder einfacher machen könnte.
vg quackster

-----------------

habe beim kopieren die nummern erweiterung für die stellflächen/container gelöscht.
deshalb hier.
es kann noch eine ziffer vor die nummerierung gesetzt werden die das format von stellflächen/container angibt.
es fehlt auch noch eine überprüfung (zählung) ob platz oder container für die entsprechende größe vorhanden ist

stellplätze und container die auf gleise/strassen verladen werden, werden sollten zwecks leichterem ausfinden beim bestücken anders benannt werden. container werden beim verladen auf gleise/strassen über vb umbenannt.
das zu schreibende tool/plugin sollte verschiedene mehrfach umbenennung- editiermöglichkeiten haben um eine vielzahl von objekten leichter benennen zu können.

 

Bearbeitet von quackster
ergänzung zur ergänzung
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Quackster,

ich war beruflich bedingt die letzten beiden Tage nicht online,deshalb erst jetzt meine Reaktion.

Von der Logik her passt dein Ansatz auf jeden Fall schonmal. Ich war bei meiner Betrachtung erstmal nur von Containerwagen oder LKW ausgegangen, bei denen ja keine Container übereinander gestapelt werden. Für eine realistische Simulation, gerade bei Schiffen oder Umschlagplätzen ist Einbeziehung der dritten Dimension natürlich auf jeden Fall zu beachten. Ich werdemirauchnochmal Gedanken dazu machen und mich dann nochmal melden.

Viele Grüße Marco

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo Marco, alle

danke Marco für deinen beitrag,

mal anmerkend, diese überlegungen - dienen nicht mir, bei meiner anlage ist an sowas wie transport noch in weiter, sehr weiter ferne.
mich würde mal interessieren wieviel container ihr so in etwa auf reisen schicken möchtet, oder wieviele stellflächen ihr einplant.

um lkw und containerwagen habe ich mir folgende gedanken gemacht:
da alles einfach gehalten werden soll, wäre ich für je 2(kann man ja erweitern)spuren für lkw/containerwagen, wobei jeweils eine der beiden  zum be- und die andere spur zum entladen gedacht ist.
man stelle sich einen containerhafen mit 40 stellflächen vor (lassen wir die stapelhöhe mal ausser 8). so könnten diese durch eintrefende leere lkws, halb oder ganz leere containerzüge dynamisch erweitert und in die zufällige auswahl zur beladung einfliesen. bzw auch vorrangig behandelt werden.
umgekehrt würden die eintreffenden container zwecks um/entladungen mit berücksichtigen werden.

vg quackster

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo alle,

Ich hab mich (erstmal) an einer Variablengesteuerten Schiffsent- bzw. beladung versucht, herausgekommen ist eine Schrittkettensteuerung:

Die Container werden zufällig ausgesucht und "irgendwo" abgesetzt, es sei denn die Container haben eine Variable "abstellort" und die Plätze eine "res" (für reserviert); dann versucht die steuerung die Container dort abzusetzen. Die Stellplätze haben eine Variable "max", damit kann Die Stapelhöhe für jeden individuell festgelegt werden (max 5 Container).
Der 1.Versuch (in der EV deaktiviert) hat 6 Schritte und berücksichtigt die oa. Variablen nicht- (zum ausprobieren dringelassen).
Aktuell musste ich bei den schritten 6-8 tricksen (eine Variable hochzählen und damit die Bedingung "entschärfen"), weil sich die EV sonst in einer Endlosschleife wiederfindet >:( , vlt. findet sich noch eine bessere Lösung.

Zum Thema Transport: LKW sowie AGV sind gut handelbar, Zugbeladung macht mir Kopfzerbrechen- das wird wohl am einfachsten mit VBScript-unterstützung gehen.

containerhafen_die_zweite.mbp

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Stefan,

das war eigentlich meine Absicht; da die Schalter die ereignisse schritt 1 und 2 deaktivieren- da wird ja quelle und Ziel ausgewürfelt- können andere ereignisse quelle und Ziel bestimmen (im Erfassungsbereich von kran_schiff) und dann den schritt 3 "anspringen" . Die Abstellflächen müssen aber die selben Variablen haben, damit die EV nicht in eine Endlosschleife gerät- ist mir beim Testen passiert ( falsch geschrieben- Bedingung nicht wahr-schritt zurück- Bedingung nicht wahr ...), das Studio reagiert dann nicht mehr.

Gruß ~ Lutz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Aloys,

An der Zugverladung versuche ich mich gerade- da wirds aber noch komplizierter weil ein Plugin ins Spiel kommt :(.
Sobald die Vorgänge komplexer werden, geht an Variablen (fast) kein Weg vorbei, leider.
Variable mit Klammern: Stell dir vor, Du legst einen Wert in einen Karton (=Variable) und beschriftest diesen (=Variablenname) und diesen Karton in einen weiteren-
um nun an den Wert zu kommen, muss erst der eine und dann der andere Karton geöffnet werden. Damit der Compi das weiss, kommen um die zweite (und evtl. weitere) Variable Klammern: (Karton2).Karton1 bzw bei drei: ((Karton3).Karton2).Karton1

Gruß ~ Lutz

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...