Signalproblem mit alter Strecke (OR vs. MSTS)

  • Hallo,
    Ich habe mit eine alte Strecke herausgesucht, und versucht, diese mit OR zu fahren. Dabei fiel mir auf, dass alle Flügelsignale den HP0-Zustand zeigten auch wenn die Fahrt freigegeben war. (Flügel und Lampe) Wenn ich die Strecke mit MSTS befuhr, funktionierte alles einwandfrei.


    Daraufhin habe ich mir die Signaldateien genauer angesehen und es fiel mir auf, dass der Signaltyp 'info' benutzt wurde um den Signal-State auf die Subobjekte zu übertragen. Hier ein Ausschnitt aus den Dateien:
    SignalShape (
    "KNSig_Fo1DB.s"
    "Formsignal DB (HP0/HP1)"
    SignalSubObjs ( 8
    ...
    SignalSubObj ( 4 "Fluegel1" " "
    SigSubType ( SIGNAL_HEAD )
    SigSubSType ( "FoHP1" )
    )
    SignalSubObj ( 5 "Lamps1" " "
    SigSubType ( SIGNAL_HEAD )
    SigSubSType ( "FoHP1L" )
    )
    ...
    SignalSubObj ( 7 "" " "
    SigSubType ( SIGNAL_HEAD )
    SigSubSType ( "FoHP_Frwd" )
    )
    )
    )
    SignalType ( "FoHP1"
    SignalFnType ( Normal )
    SemaphoreInfo ( 0.35 )
    SignalFlags ( SEMAPHORE )
    SignalDrawStates ( 2
    SignalDrawState ( 0 "HP0"
    SemaphorePos ( 0 )
    )
    SignalDrawState ( 1 "HP1"
    SemaphorePos ( 4 )
    )
    )
    SignalAspects ( 8
    ...
    ) SignalNumClearAhead ( 4 )
    )


    SignalType ( "FoHP1L"
    SignalFnType ( INFO )
    SemaphoreInfo ( 0.35 )
    SignalFlags ( SEMAPHORE )
    SignalDrawStates ( 2
    SignalDrawState ( 0 "HP0"
    SemaphorePos ( 0 )
    )
    SignalDrawState ( 1 "HP1"
    SemaphorePos ( 4 )
    )
    )
    SignalAspects ( 8
    SignalAspect ( STOP "HP0" )
    SignalAspect ( STOP_AND_PROCEED "HP0" )
    SignalAspect ( RESTRICTING "HP0" )
    SignalAspect ( APPROACH_1 "HP1" )
    SignalAspect ( APPROACH_2 "HP1" )
    SignalAspect ( APPROACH_3 "HP1" )
    SignalAspect ( CLEAR_1 "HP1" )
    SignalAspect ( CLEAR_2 "HP1" )
    )
    )


    SCRIPT FoHP1L


    extern float def_draw_state();
    extern float this_sig_lr();
    extern float state;
    extern float draw_state;


    state = this_sig_lr(SIGFN_NORMAL); // Aktueller Wert holen
    draw_state = def_draw_state(state); // und Status setzen
    return;
    //



    Ich habe mir das Manual von OR angesehen aber keinen Hinweis gefunden, dass Signale vom Typ INFO anders behandelt werden als die anderen Signaltypen.


    Als zweite Fehlermöglichkeit, sehe ich die Wahl der Semaphoreposition an. Die Position die hier angegeben wird, kann unter OR anders interprtiert werden. Hier gibt es auch einen Hinweis im OR-Manual. Die Werte sind aber die Originalwerte aus dem Signalpaket von 'Hagen Knop'.
    Hier der entsprechende Ausschnitt aus der Shape-Datei:
    anim_node Lamps1 (
    controllers ( 1
    tcb_rot ( 6
    tcb_key ( 0 0 0 0 1 0 0 0 0 0 )
    tcb_key ( 1 0 0 0 1 0 0 0 0 0 )
    tcb_key ( 2 0 0 0 1 0 0 0 0 0 )
    tcb_key ( 3 0 0 0 1 0 0 0 0 0 )
    tcb_key (4 0 -1.58427E-8 -0.362438 0.932008 0 0 0 0 0 )
    tcb_key ( 5 0 -1.58427E-8 -0.362438 0.932008 0 0 0 0 0 )
    )
    )
    )


    Hat noch jemand eine Idee?


    Viele Grüße
    Carl-Heinz

    Aktuelle Version von TSUtil ist: 3.6.04  (06.10.2011)

  • Hallo Carl-Heinz,


    ich vermute Du hast die Lösung im zweiten Teil Deiner Frage bereits vorweg genommen.


    Bei 'Semaphore' sind nur zwei Positionen sinnvoll, Anfangs- und Endposition.
    Auch in MSTS sind mehrstufige Flügel glaube ich nicht möglich.



    Daher sind alle überflüssigen Zwischenstufen in der .s Datei bzgl. der Animation zu löschen, bis nur noch übrig bleibt:


    Code
    anim_node <NAME> ( 
    					controllers ( 1 
    						tcb_rot ( 3 
    							tcb_key ( 0 0 0 0 1 0 0 0 0 0 ) 
    							tcb_key ( 1 0 0 -0.362438 0.932008 0 0 0 0 0 ) 
    							tcb_key ( 2 0 0 0 1 0 0 0 0 0 ) 
    						) 
    					) 
    				)


    Es handelt sich bei der Drehung um die z-Achse übrigens um einen Drehwinkel von 42,5°
    Falls genau 45° gewüscht wird, müsste die zweite Zeile


    tcb_key ( 1 0 0 -0.3826834 0.9238795 0 0 0 0 0 )


    lauten. Auf jeden Fall darf Pos. 0 und Pos. 1 nicht identisch sein und in beiden Fällen die Null-Rotation darstellen, daher die fehlende Animation.


    Die Verlinkung auf die entsprechenden tcb_key's muss natürlich angepasst werden.
    Im Handbuch 'Manual' steht unter Abschnitt 15.11 etwas darüber.
    Meines Wissens ist der SignalFnType ( INFO ) in OR völlig unproblematisch.


    Gruß Hehl

    Einmal editiert, zuletzt von Hehl ()

  • Hoi Hehl,
    gut gemacht und klar dargestellt!
    Carlo hat vor Jahren den OR für viele solcher exotischen "SemaphorPos(x)"-Einträgen in der sigcfg.dat und in den shapes fit gemacht, aber dieser Fall ist uns damals nicht untergekommen.


    Noch eine Ergänzung fürs Prinzip:
    sollte im entsprechenden Script der Sigscr.dat der Befehl
    draw_state = 4;
    vorkommen, was aber hier nicht der Fall zu sein scheint, dann müsste auch dieser in
    draw_state = 1;
    geändert werden.

  • Hallo
    Vielen Dank für die Antworten. Ich habe es mir gedacht als ich die Hinweise im OR-Manual gelesen habe.


    Wie bereits genannt, sind die Werte in der Shape-Datei die Originalwerte aus dem Signalpaket 'KN2004' von Hagen Knop. Ich denke, dass die Absicht hinter den vielen Stufen innerhalb der Rotation war, die Geschwindigkeit der Bewegung zu verlangsamen. Es kommt leider sehr oft vor, dass die Flügel eines Hauptsignals zwischen den Endpunkten springen.


    Wie kann man grundsätzlich die Bewegungsgeschwindigkeit verlansamen?


    Viele Grüße
    Carl-Heinz

    Aktuelle Version von TSUtil ist: 3.6.04&nbsp; (06.10.2011)

    • Gäste Informationen
    Hallo, gefällt dir der Thread, willst du was dazu schreiben oder mehr lesen, dann melde dich bitte an. Hast du noch kein Benutzerkonto, dann bitte registriere dich, nach der Freischaltung kannst du das Forum uneingeschränkt nutzen.

    Dieses Thema enthält 4 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.
  • Dieses Thema enthält 4 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!