Jump to content

Definiert Beschleunigen


EASY
 Share

Recommended Posts

Hallo,

... ich habe ich mal den Versuch gemacht, mit den Objektvariablen ein definiertes Anfahren einer Lok zu machen...

Lokveriablen:

Lokvariablen.jpg

dv = Geschwindigkeitszuwachs je Zeiteinheit

dvalt ist eine Merkvariable für dv (da diese verändert wird)

fdv = Faktor mit dem dv je Zeiteinheit multipliziert wird

time = Zeit für Timer (Countdown)

vist = Ist- bzw. Soll- Geschwindigkeit der Lok

vmax = maximale Geschwindigkeit

Ablauf:

Ereignisse.jpg

Anfangszustand: Die momentane Lokgeschwindigkeit wird zwischengespeichert (vist=_CurrentSpeed), der Countdown gestartet (Auto Restart mit der Zeit dt)

Beschleunigen: Zu vist wird dv aufaddiert, Lokgeschwindigkeit=vist, dv wird mit dem Faktor fdv multipliziert

Beschleunigen-Ende: wenn vist>= vmax wird der Contdown gestoppt, dv zurückgesetzt (dv=dvalt), und der Lok die Geschwindigkeit vmax zugewiesen (Korrektur, da vmax nicht genau erreicht wird)

Bremsen: Der Lok wird die Bremsgeschwindigkeit zugewiesen, die im Gleis "Halt" als Objektvaiable hinterlegt ist ("hartes Bremsen")

Nothalt: Der Countdown wird gestopt und die Lok angehalten (falls etwas schiefgeht)

Start: Der Lok wird die Geschwindigkeit 20 mm/s zugewiesen

Die Geschwindigkeitskurve der Lok sieht (mathematisch) so aus: (t in Sekunden, v in mm/s)...

Geschwindigkeit.jpg

... und ich finde, daß es der Realität (optisch) schon etwas nahekommt...

... wer mag, kann ja mal etwas mit den Variablen dv, fdv (muß >1 sein allerdings nicht wesentlich, sonst git es "Rucker") und dt spielen...

Was ich noch nicht weiß, ist wie man diesen Ablauf verallgemeinern kann, so daß es für jede Lok gilt, die diesen Variablensatz hat... vielleicht hat jemand ja eine Idee...

Beschleunigen02.jpg

... in der .zip ist das MBS-Projekt und die Ereignisverwaltung als .HTML

... würde mich über Rückmeldungen, Kritik und Anregungen freuen...

Gruß

EASY

Beschleunigen02.zip

Link to comment
Share on other sites

Hmm. Man müsste für jede Lok einen Countdown haben, der regelmäßig abfragt, ob sie im Status "Beschleunigung" (könnte ja auch negativ sein) ist oder nicht. Wenn ja, wird die Geschwindigkeit entsprechend manipuliert. 

Im Prinzip bräuchte man nach Objektvariablen (z.B. L1.v_ist) für so etwas auch noch Objektmethoden (z.B. L1.beschleunigen() ). Das geht sicher zu weit für ein Programm wie das Modellbahnstudio.

Also muss man eine Objektmethode quasi "außerhalb des Objekts" schreiben. Das dürfte am ehesten mit einem Dauercountdown pro Lok zu lösen sein.

Link to comment
Share on other sites

Hallo Elgiloy,

... spontan würde ich aus...

Zitat

Im Prinzip bräuchte man nach Objektvariablen (z.B. L1.v_ist) für so etwas auch noch Objektmethoden (z.B. L1.beschleunigen() )

... so etwas wie eine aktivierbare Ereignisgruppe ableiten wollen...

oder aus...

Zitat

Also muss man eine Objektmethode quasi "außerhalb des Objekts" schreiben

... die Methode des Beschleunigens als Objektmethode eines "Beschleunigungsgleises" (müßte allerdings so lange sein, daß es für die Beschleunigungsphase reicht) auslagern, das die Parameter von der Lok erbt...

... so als spontane Gedanken...

Gruß

EASY

Link to comment
Share on other sites

Hallo,

... die Beschleinigung auf das Gleis zu übertragen ist mir zwischenzeitlich gelungen.

Die Parametrierung erfolgt über die Objektvariablen der Lok und werden von den Objektvatiablen des "Beschleunigungsgleises" übernommen und in der Ereignisverwaltung umgesetzt.

Bei der Lok ist der "Merker" "dvalt" nicht mehr nötig und dank der "Alternativen Aktionen" beschränkt sich das eigentliche Beschleunigen auf 2 Einträge in der Ereignisverwaltung. ("Anfangszustand" und "Beschleunigen"... der Rest sind andere Steuerungsaufgaben).

... auf dem Beschleunigungsgleis darf  logischerweise immer nur eine Lok sein...

In der .zip ist ein MBS-Projekt und die Ereignisverwaltung als .HTML

Gruß

EASY

Beschleunigen03.zip

Link to comment
Share on other sites

Hallo EASY,

Meine Idee es über Countdown zu regeln, ergibt die Ereignissteuerung im Anhang. Die drei Countdownereignisse müssen für jede Lok geschrieben werden. Dafür braucht man kein langes Beschleunigungs- und Bremsgleis und kann die Beschleunigung auch alternativ von jedem Signal aus in Gang setzen. Dass der Zielwert jedes mal etwas überschossen wird, muss man bei der Eingabe der Reisegeschwindigkeit berücksichtigen. 

Falls man mit rückwärts fahrenden Loks rechnen muss, muss das Gleis es abfragen und noch entsprechend alternative Aktionen bei den Gleisen eingefügt werden, sonst kriegt man unerwrtete Ergebnisse.

 

Natürlich könnte man (um die Dinge auf die Spitze zu treiben) auch noch bei der Lok Beschleunigungs- und Bremskoeffizienten hinterlegen, die jeweils mit eingerechnet würden. Dann würde sich eine BR41 mit 40 Kohlenwaggons deutlich anders verhalten als eine 110 mit 3 Personenwagen.

 

Gruß

Elgiloy

 

(PS. Hab ich schon gesagt, dass ich mir als Bewohner Nordwestdeutschlands ein Modell der BR41 wünsche?)

Beschleunigen.zip

Link to comment
Share on other sites

Hallo Elgiloy,

Zitat

... und kann die Beschleunigung auch alternativ von jedem Signal aus in Gang setzen.

... ist ein sehr überzeugendes Argument es doch bei der Lok zu belassen...

... wäre es noch möglich die Demoanlage zu Deiner Ereignisverwaltung mit einzustellen... durch Analyse, weiß ich zwar ungefähr was "getan" wird, aber mit Anlage kann man dann auch noch etwas herumexperimentieren...

Gruß

EASY

Link to comment
Share on other sites

Hallo Neo,

aber bevor ich mich weiter mit diesem Thema beschäftige, meine Frage an Dich, ob es irgendwie von Dir vorgesehen ist einen "Beschleunigungsfaktor" als Objektvariable einzuführen... Global ist dieser ja irgendwie schon vorhanden (für alle Loks gültig)...

Gruß

EASY 

Link to comment
Share on other sites

Hallo alle,

derzeit kann ich nicht an meinen Computer. Das Beschleunigungssystem wird noch eine Verbesserung bekommen, um das Überschießem des Zielwerts zu beseitigen. Ich weiß schon wie es geht. Dann werde ich eine Demoanlage hochladen. Frühestens heute abend.

Danke für das Bild vom langen Heinrich! Und für die Hoffnung auf eine 41er. Das waren doch dolle Kisten.

 

Gruß

Elgiloy

 

Link to comment
Share on other sites

So,

lade jetzt mal eine Demoanlage mit gradueller Beschleunigung und Abbremsen hoch in die experimentellen Anlagen.

Hab doch den Mund etwas voll genommen. Ein Start vom Signal aus ist leider nicht möglich, weil man bei dem Ereignis "Signal schaltet" natürlich keinen Zugriff auf ein Zug-Objekt bekommt. Man braucht also nach dem Signal doch noch ein Beschleunigungsgleis.

Was man auch beachten muss: Ein Löschen der einmal initialisierten Loks ist nicht zu empfehlen. Selbst wenn man eine Lok gleichen Namens danach wieder auf die Anlage stellt, beziehen sich die Objektvariablen in der Ereignisverwaltung offenbar immer noch auf die gelöschte Lok und die ganze Sache funktioniert nicht mehr.

Beschleunigung2.zip

Link to comment
Share on other sites

Hallo Elgiloy,

Zitat

Ein Start vom Signal aus ist leider nicht möglich, weil man bei dem Ereignis "Signal schaltet" natürlich keinen Zugriff auf ein Zug-Objekt bekommt.

... jain... Du kannst das Beschleunigen der Lok  in eine Ereignisgruppe schreiben (-> Zugriff auf Objektvariablen) und diese erst einmal deaktivieren. Wenn Du dann mit dem Ereignis "Signal schaltet" unter "Aktion" diese Ereignisgruppe aktivierst , kannst Du mit dem Ereignis "Ereignis/Gruppe wird aktiviert/deaktiviert" ["aktiviert"] das Beschleunigen durchführen... setzt allerdings voraus, daß die Lok bekannt ist auf die es zutrifft... aber so kannst Du das Beschleunigen einer (bestimmten Lok) mit jedem beliebigen Ereignis auslösen...

Gruß

EASY 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...