Handregler - Erste Ideen

Hardware

    Modularer Aufbau, entweder als Tischregler, Handregler oder Funkregler.
    ProzessorAtmega, Picopower
    Bedieninterface
    Drehgeber Elma E33 oder Alps
    Tasten Oben Nothalttaster
    Seitliche Navigationstaste oder Wippe (Alps)
    Seitlich zwei Menutasten
    12er Tastatur, 0 .. 9, OK, ESC
    DisplayLCD Charakter Display, mind. 2 Zeilen, mind. 16 Zeichen
    Farbdisplay, 1,8 Zoll, 128 x 176 Pixel
    Remote InterfaceKabel: Xpressnet
    Funk: Analog Devices ADF7025, lizenzfreier FSK Transceiver bei 868MHz
    Funk: XBee vom Maxstream.net (z.B. bei reichelt oder Sphinx)

GUI

    Das Userinterface besteht aus:
  • Drehrad mit Push-Button:
    im Lokmode: Speed, Stop
    im Weichenmode: Schalten
    im Menumode: Zahlenwerte, Enter.
  • Seitliche Taster für Schnellbedienung:
    • "Change"
      Lokmode, Weichenmode: nächste / vorherige Lok / Weiche wählen
    • "Mode"
      Lokmode, Weichenmode, CV-Mode, Setup wählen
    • "Select"
      braucht es das - ev. Knopf
  • einfaches Numpad:
    im Lokmode: Funktionen aufrufen
    im Weichenmode: Adresseingabe

GUI, zweiter Entwurf


    Es gibt folgende Bedienelemente und Tasten:
      Drehrad mit Push-Button,
      navimec (Cursor up, Cursor down, Cursor left, Cursor right, Center)
      4 Softkeys (über dem Drehrad), ev. schwach beleuchtet
      1 Hardkey (Nothalt), mit integrierter RT/GN LED, welche den Zustand des Systems anzeigt.
      1 Alternate Key (Shifttaste).

    Menus:
    Auf der oberstem Ebene gibt es 4 Hauptmenus, diese werden mit Cursor links/rechts durchgescrollt. In allen Menus wirkt Nothalt immer als Systemstop / Start.
  • Lokmenu
    Im Lokmenu wird eine Lok mit angezeigt; Aktuelle Geschwindigkeit und aktuelle Funktionen.
    Lokmenu
    Drehrad drehenÄndert die aktuelle Fahrstufe, man kann nicht in die andere Fahrtrichtung drehen.
    Wenn zugleich mit shift: Funktionsauswahl weiterschalten
    Drehrad drückenWenn eine Fahrstufe >0 gewählt ist, dann stoppt die Lok. Wechselt die Fahrtrichtung
    Cursor up/downwählt eine neue Lok aus der Lokdatenbank; in der Datenbank ist immer ein freier Eintrag 'neue Lok'.
    Centerruft die Eigenschaften dieser Lok auf - Adresse, Name, Anzahl Fahrstufen;
    Shift + Center schaltet das Licht aus und ein.
    SoftkeysFunktionsaufruf dieser Lok F1..F4; zugleich mit Shift: F5..F8; vorangeganger Shift-Dreh: Funktionen +8; +12; +16; +20; +24
  • Anzeige:
    |--------------------|
    |-> LOK           ON |
    |      BBII #98      |
    |  -------: >>> (25) |
    | F0*  F1o  F2o  F3* |
    |--------------------|
    
  • Weichenmenu
    Im Weichenmenu werden zwei Weichen / Signale nebeneinander angezeigt. Eine dieser beiden Weichen hat den 'Focus'. Es gibt innerhalb des Handreglers eine kleine Datenbank mit Weichenadressen, Namen und Typ.
    Weichenmenu
    Drehrad drehenÄndert die aktuelle Adresse
    Drehrad drückenWechselt den Focus links / rechts
    Cursor up/downwählt innerhalb des Focus eine Weichenadresse aus dem Cache bzw. aus dem Namensverzeichnis.
    Centerruft die Eigenschaften dieser Weiche auf - Adresse, Name, Typ;
    SoftkeysF1 - F2: Schaltet die Weiche auf der linken Hälfte des Screens.
    F3 - F4: Schaltet die Weiche auf der rechten Hälfte des Screens.
    zugleich mit Shift: beide Focusfenster temporär um eine Einstellung zurückgedreht.
  • |--------------------|
    |-> WEICHE        ON |
    | HBf li1  | Sig Gl1 |
    | #0003    | #0010   |
    | 0    1   | 0   1   |
    |--------------------|
    
  • Progmenu
    Im Progmenu wird PoM-Adresse CV-Adresse und CV-Inhalt angezeigt. Eines dieser beiden Felder hat den 'Focus'.
    Programmieren Menu
    Drehrad drehenÄndert die aktuelle Zahl im Focus
    Drehrad drückenWechselt den Focus zyklisch durch
    Cursor up/downwählt das jeweils letzte gültige CV+Daten Pärchen aus der History.
    Centerwählt die Programmiertechnik aus: Registermode, CV-Mode
    SoftkeysF1: read on Programming Track.
    F2: write on Programming Track.
    F3: PoM read.
    F4: PoM write.
    Shift + F3: Accessory PoM read.
    Shift + F4: Accessory PoM write.
  • Setupmenu
    Im Setupmenu werden interne Einstellungen des Handregler gemacht.
    Setupmenu
    Drehrad drehenÄndert die aktuelle Zahl im Focus
    Drehrad drückenWechselt den Focus zyklisch durch
    Cursor up/downwählt das jeweilige Einstellungsmenu.
    Centerstellt default wieder her
    SoftkeysF1-F4: Aufruf der Einstellungen

    Einstellungen:
      Slot-ID: Automatic oder Manual + ID-Eingabe
      Display: Helligkeit, Abschaltzeit
      Drehrad: Beschleunigung [aus | langsam | schnell]
      Sprache: [D, UK]
      DCC: default für Fahrstufen

Hardware für 2. Entwurf

Software

    Xpressnet IF als Subtask
    Stateengine für Menuführung
    Keyboard (Interruptgesteuert, mit Softsleep für Stromsparen)

PC Handregler (z.B. für Rocrail)

    13.10.2008: Der Handregler bekommt einen Mode, mit dem alle Kommando direkt an den PC durchgereicht werden und auch die Anzeigen des Displays vom PC erstellt werden.

    Hierzu wird die Kommunikation über das Xpressnet (bzw. jede andere Transportschicht) getunnelt.
  • 1.Im Regler Setupmenu wird eingestellt: Ich bin rocrail Regler [über Xpressnet | über USB]
      Regler sendet: 0x3* <id> 0x20 0x01
      Syntax: 0x3* <id> 0x20 <code> (<id> markiert den Regler, 0x20 = config_message, code = 1 -> 'Hello')
  • 2. Rocrail sendet Textfelder, z.B. textfeld[1][1]=("Welcome to"); und textfeld[1][10]=(" rocrail");
      PC sendet: 0x3* <id> 0x21 0x00 0x00 'Welcome to'
      Syntax: 0x3* <id> 0x21 <x> <y> [string] (<id> markiert den Regler, 0x21 = text_message,x,y: Positionen, String=max 12 Zeichen)
  • 3. Regler sendet Tastendrücke.
      Regler sendet: 0x3* <id> 0x21 KEY_SOFT_1 0x01
      Syntax: 0x3* <id> 0x21 Tastencode Parameter (Parameter: 0x01 = gedrückt, 0x00 losgelassen, bei Drehrad ist der Parameter die Anzahl der Rotates)
  • N. Rocrail entläßt den Regler wieder.
      PC sendet: 0x3* <id> 0x20 0x00;
      Syntax: 0x3* <id> 0x20 <code> (<id> markiert den Regler, 0x20 = config_message, code = 0 -> 'Good Bye')
  • Das sieht dann so aus (im Prinzip):
    In der lenz_parser.c:
    case 0x3: // special Command push to XpressNet
                 xp_send_message(0x60 | pcc[1], pcc);
                 pc_send_lenz(pars_pcm = pcm_ack);
                 return;
                 break;

Stand der Funkanbindung, Tests

     Letzter update: 23.07.2010
    
    Erläuterungen:
       ok:      wurde getestet und hat funktioniert
       new:     ist neu kodiert/fehlerbereinigt, jedoch noch ungetestet
       failed:  ist beim Test nicht gegangen
    
    System:
      Connect, Disconnect:             ok
      Clock:                           ok
      Clock Set:                       ok
      Start, Halt, Stop:               ok
      Halt von Loks bei Disconnect:    ok
      Halt von Loks bei broken:        ok
       Autorecover nach broken:        ok (aus SILENT)
      mehrfache Handregler:            untested
      Stromsparfunktionen:             not implemented
      Networkquality:                  not implemented
      Config der Zentrale:             ok
    
    Lok:
      FS14:                            ok
      FS28:                            ok
      FS128:                           ok
      Richtung:                        ok
      kurze Addr:                      ok
      lange Addr:                      ok
      Nothalt:                         ok
      Licht:                           ok
      F1:                              ok
      F5:                              ok
      F8:                              ok
      F28:                             ok
      Lokübernahme von anderen Regler (Xpressnet): untested
      Lokübernahme von anderen Regler (WRP):       untested
      Lokübernahme zu anderem Regler (Xpressnet):  new
      Lokübernahme zu anderen Regler (WRP):        untested
      Stolennachricht:                             ok
      Pollen der geklauten Lok:                    failed
    
      Probleme, Fehler:
           Stolen bleibt am Schirm, wird nicht weggenommen
           Die Fahrstufe wird nicht richtig angefragt
           Gateway kommt bei stolen durcheinander (doppelte Anzeige)
    
    Weiche:
      Addr:                    ok
      Schalten:                ok
      Abfrage:                 ok
      extended Acc:            ok
    
    Prog:
      Prog-Mode Anzeige:       new
      CV read:                 new
      CV write:                new
      PoM read:                new
      PoM write:               new
      PoM Acc read:            not implemented
      PoM Acc Write:           not implemented
      PoM XAcc read:           not implemented
      PoM XAcc Write:          not implemented
    
      Addr set:                new
    
    Feedback:
      Query:                   new
      Send Feedback:           new
      Auto Notify:             new
      

Links