JMRI

Índex

General

Instal·lació / Installation

  • JMRI Install Guide: Linux
  • Download
  • JMRI / JMRI (Github)
    • cescp / JMRI (fork)
  • From package
  • From source
    • JMRI Code: Getting the Code
    • Steps
      1. Dependències / Dependencies
        • Mageia
          • urpmi git
      2. git clone https://github.com/JMRI/JMRI.git
      3. cd JMRI
      4. Choose one of the following methods:

        • dependencies
          build
          run
          debug
          ant
          • Mageia: 
            • urpmi ant rhino
          • ant -p
          • ant clean
          • ant debug
          • ant decoderpro
          • ant panelpro
          • ant package-linux
            • cd dist/Linux/JMRI
            • ./DecoderPro
            • ./PanelPro
            • ...

          maven
          • mvn test
          • mvn compile net.ossindex:ossindex-maven-plugin:audit
          • mvn versions:display-dependency-updates
          • mvn versions:display-plugin-updates
          • mvn antrun:run -Danttarget=decoderpro
          • mvn antrun:run -Danttarget=panelpro

          Eclipse
          • Eclipse
            • Help -> Install new software
              • Work with: ...
                • Eclipse Java Development Tools
                • m2e Maven integration for Eclipse

          JMRI/build.xml
          • Debug As: 2 Ant Build
          • decoderpro
          Run -> Run configurations
          • Maven Build
            • JMRI DecoderPro
              • Main -> Base directory:
                • ${workspace_loc:/JMRI}
              • Environment
                • Variable: _JAVA_OPTIONS
                • Value: -Dawt.useSystemAAFontSettings=lcd
            • JMRI PanelPro

          NetBeans




  • Problemes / Problems
  • Directoris / Directories

    • Settings dir Profile Panel
      launch DecoderPro, PanelPro --settingsdir=.../jmri_second DecoderPro, PanelPro --profile=Profile_1
      preferences Edit / Preferences / Config Profiles / Search Paths Edit / Preferences / Config Profiles / Config Profiles PanelPro: Panels / Open Panels...

      /home/<user>/.jmri/
      • profiles.xml
      • log/
      • preferences/
        • preferences.properties
      My_JMRI_Railroad.jmri/
      El _meu_ferrocarril_al_JMRI.jmri/
      • roster.xml
      • roster/
        • loco_1.xml
        • static_decoder_1.xml
        • ...
      • profile/
        • profile.xml
          • <connection>...
        • profile.properties
      • programmers/
      • signal/
        • WarrantPreferences.xml
      • throttle/
        • ThrottlesPreferences.xml
        • WiThrottlePreferences.xml
      • panel1.xml
      • panel2.xml
      • ...

      Profile_1.jmri/
      • profile/
        • profile.xml
        • profile.properties
      • programmers/
      • throttle/
        • ThrottlesPreferences.xml
        • WiThrottlePreferences.xml


      ...

      .../jmri_second/
      • profiles.xml
      • log/
      • preferences/
        • preferences.properties
      My_JMRI_Railroad.jmri/
      ...


      ...

  • ...

Maquinari / Hardware

Desenvolupament / Development

  • JMRI: Technical Information
  • Logging
  • Eclipse
  • New decoder file
  • Z21 central station
    • JMRI/java/src/jmri/jmrix/roco/
      • ...
    • Usage of Z21 LAN Protocol
    • Z21
      • Z21 Traffic
      • Send z21 command
        • Examples:
          • 04 00 10 00 (LAN_GET_SERIAL_NUMBER: read the serial number of z21)
          • 04 00 85 00 (LAN_SYSTEMSTATE_GETDATA: read voltage, temperature ...)
          • 04 00 1A 00 (LAN_GET_HWINFO: read hardware type and firmware version)
          • 07 00 40 00 21 21 00 (LAN_X_GET_VERSION: read the X-Bus version of the z21)
          • 07 00 40 00 21 24 05 (LAN_X_GET_STATUS)
          • 07 00 40 00 21 80 a1 (LAN_X_SET_TRACK_POWER_OFF)
          • 07 00 40 00 21 81 a0 (LAN_X_SET_TRACK_POWER_ON)
    • Z21LocoNet
      • Monitor LocoNet
        • actions to manage turnout will be shown here
    • Z21XpressNet
      • XpressNet Monitor
        • Z21 actions with 40 00 will be shown here
      • Send XpressNet Command
        • Examples:
          • 21 21 00 (LAN_X_GET_VERSION: read the X-Bus version of the z21)
          • 21 24 05 (LAN_X_GET_STATUS)
          • 21 80 a1 (LAN_X_SET_TRACK_POWER_OFF)
          • 21 81 a0 (LAN_X_SET_TRACK_POWER_ON)
    • R-BUS
    • Accessories
      • DR4018
        CV47
        JMRI
        Table
        action Z21 Traffic (LocoNet, XpressNet)
        0: 8x Solenoid Turnout
        turnout
        set to closed 12:58:56.721: [08 00 A2 00 B0 04 30 7B]   LocoNet Tunnel Message: Requesting Switch at LT5 to Closed (Output On).
        12:58:56.725: [09 00 40 00 43 00 04 02 45]   XpressNet Tunnel Reply: Turnout 5 State Thrown
        12:58:56.822: [08 00 A2 00 B0 04 20 6B]   LocoNet Tunnel Message: Requesting Switch at LT5 to Closed (Output Off).
        set to thrown 12:59:26.936: [08 00 A2 00 B0 04 10 5B]   LocoNet Tunnel Message: Requesting Switch at LT5 to Thrown (Output On).
        12:59:26.939: [09 00 40 00 43 00 04 01 46]   XpressNet Tunnel Reply: Turnout 5 State Closed
        12:59:27.040: [08 00 A2 00 B0 04 00 4B]   LocoNet Tunnel Message: Requesting Switch at LT5 to Thrown (Output Off).
        1: 16x On/Off
        light
        set to on 12:53:02.609: [08 00 A2 00 B0 04 30 7B]   LocoNet Tunnel Message: Requesting Switch at LT5 to Closed (Output On).
        12:53:02.612: [09 00 40 00 43 00 04 02 45]   XpressNet Tunnel Reply: Turnout 5 State Thrown
        set to off 12:53:21.043: [08 00 A2 00 B0 04 10 5B]   LocoNet Tunnel Message: Requesting Switch at LT5 to Thrown (Output On).
        12:53:21.047: [09 00 40 00 43 00 04 01 46]   XpressNet Tunnel Reply: Turnout 5 State Closed

        signal

DecoderPro

  • També és accessible des de: PanelPro -> Flota -> Flota / Also accessible from: PanelPro -> Roster -> Roster
  • Edita / Preferències... / Visualització / Aspecte: Nimbus
  • Estació de control / Command station
  • Single Programmer
    • Actions -> Single CV Programmer
  • Descodificador mòbil (locomotora)
    • Nova Locomotora
      • «New loco»
      • «Llegeix el tipus de descodificador»
        • z21 es posarà en mode PT (led verd): només hi pot haver una locomotora a la via (hauria de ser la via de programació)
        • Llegirà els valors de:
          • CV8: mfgID (manufacturer ID)
          • CV7: versionID
          • (CV250: productID)
          • CV29: configuration data
          • CV1: primary address
          • CV17-18: extended address
          • [CV19]: consist address
          • exemples
        • i els compararà amb els valors que hi ha al fitxer JMRI/xml/decoderIndex.xml
      • Seleccioneu la locomotora
        • Botó «Program» a baix a mà dreta
        • pestanya «Basic»
          • Speed steps: 28/128 (per a evitar problemes amb els llums / to avoid problems with lights [F0])
      • Fitxer de configuració (creat a partir del fitxer genèric ...):
        • ~/.jmri/El_meu_ferrocarril_al_JMRI.jmri/roster/...xml
    • «Identifica»
      • Troba la locomotora (que ja té una entrada a la llista) i marca la seva entrada (z21 es posarà un moment en mode PT)
    • Ús de la locomotora
      • seleccioneu l'entrada de la llista (o bé trobeu-la amb «Identify»/«Identifica»)
      • menú amb el botó dret: «Throttle»/«...» (o bé botó «Throttle» a baix a mà dreta)
  • Descodificador estàtic o d'accessoris
    • Nou descodificador estàtic (e.g. Digikeijs DR4018)
      • «New loco»
      • Decoder installed: Digikeijs / Stationary / DR4018
      • Roster ID: DR4018_1
      • Long (two byte) address: 9999
    • Lectura de valors CV (PT)
    • Escriptura de valors CV (POM, PT?)
      • si es fa servir POM, pot haver-hi altres descodificadors connectats, perquè POM envia l'adreça
      • a baix a la dreta, seleccioneu «Programming On Main»
  • Program on
    • Program on Mode
      Z21XpressNet Direct Byte
      Direct bit
      Paged
      Register
      Z21LocoNet Direct Byte
      Paged
      Register
      Address
      Command Station Op Switches
  • Program
  • Programació CV / CV programming:

    Single CV Programmer
    (direct address, CV, value)
    Program
    (window with tabs and fields defined in an xml)

    sigrok - DCC


    <programming>
      <mode>
    Examples
    mobile decoder Ops Byte
    • Short address
    • Long address
    OPSBYTEMODE


    Ops bit
    • Short address
    • Long address



    basic accessory decoder Ops Accessory Byte
    • Decoder address (9-bit)
    • Accessory address (11-bit)
    OPSACCBYTEMODE

    extended accessory decoder Ops Accessory Extended Byte
    • Signal Address
    OPSACCEXTBYTEMODE

  • Single Programmer
    • Actions -> Single CV Programmer
      • Superior (implícit) / Top (implicit): Programming Track
      • Inferior / Bottom: Program on Main
        • Ops Byte: for function decoders (locomotive) with short or long addresses
        • Ops Accessory Byte: for accessory decoders with CV29/541 b6 set to 0 (9-bit decoder or board address)
        • Ops Accessory Extended Byte: for accessory decoders with CV29/541 b6 set to 1 (11-bit accessory or output address)
          • Offset Address: check (NmraDcc)
          • Signal address: xx (NmraDcc: first accessory address, stored in CV_ACCESSORY_DECODER_ADDRESS_LSB (CV1), CV_ACCESSORY_DECODER_ADDRESS_MSB (CV9))
  • Config
    • create new config file
      • Creating A Custom Decoder File
      • Updating Decoder Definitions
      • Function Mapping in Programmer Files
      • minimum example
        • <?xml version="1.0" encoding="utf-8"?>
          <?xml-stylesheet type="text/xsl" href="../XSLT/decoder.xsl"?>
          <!-- Copyright (C) JMRI 2002, 2019 All rights reserved -->
          <!--                                                                        -->
          <!-- JMRI is free software; you can redistribute it and/or modify it under  -->
          <!-- the terms of version 2 of the GNU General Public License as published  -->
          <!-- by the Free Software Foundation. See the "COPYING" file for a copy     -->
          <!-- of this license.                                                       -->
          <!--                                                                        -->
          <!-- JMRI is distributed in the hope that it will be useful, but WITHOUT    -->
          <!-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or  -->
          <!-- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License  -->
          <!-- for more details.                                                      -->

          <decoder-config xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jmri.org/xml/schema/decoder.xsd" showEmptyPanes="no" >
            <version version="1" author="My Name" lastUpdated="20200830"/>
            <decoder>
              <family name="myname DIY" mfg="Public-domain and DIY" >
                <model model="My first model v1.x" lowVersionID="10" highVersionID="13" numOuts="4" connector="other"/>
                <model model="My first model v2.x" lowVersionID="20" highVersionID="24" numOuts="4" connector="other"/>
              </family>
              <programming direct="yes" paged="yes" register="yes" ops="yes" />
              <variables>
                <xi:include href="http://jmri.org/xml/decoders/nmra/shortAndLongAddress.xml"/>
                <variable CV="15" item="My first variable" comment="Range 0-30" default="0">
                  <decVal/>
                  <label>My first label in English</label>
                  <label xml:lang="ca">Primera etiqueta en català</label>
                  <comment>Range 0-30</comment>
                  <comment xml:lang="ca">Valors 0-30</comment>
                </variable>
                <variable CV="16" item="My second variable" comment="Range 0-30" default="0">
                  <decVal/>
                  <label>My second label in English</label>
                  <label xml:lang="ca">Segona etiqueta en català</label>
                  <comment>Range 0-30</comment>
                  <comment xml:lang="ca">Valors 0-30</comment>
                </variable>
                <variable CV="17" item="My third variable" comment="Range 0-30" default="0">
                  <decVal/>
                  <label>My third label in English</label>
                  <label xml:lang="ca">Tercera etiqueta en català</label>
                  <comment>Range 0-30</comment>
                  <comment xml:lang="ca">Valors 0-30</comment>
                </variable>
              </variables>
            </decoder>
            <pane>
              <name>My first pane</name>   
              <column>
                <display item="My first variable"/>
                <display item="My second variable"/>
              </column>
              <column>
                <display item="My third variable"/>
              </column>
            </pane>
          </decoder-config>
      • Family is described in decoder file (when changes are made, no need to restart the program)
        • JMRI/xml/decoders/Fleischmann_685x03.xml
        • fields are described in: FnMapPanel
        • <model> values will not be taken from here, but from decoderIndex.xml (manually updated)
      • To update file decoderIndex.html (when changes are made, a restart of the program is needed)
        • PanelPro
          • Debug -> Recreate Decoder Index
        • if you want to keep the new version of decoderIndex.html, copy it to JMRI/xml/decoderIndex.html
      • Your file can include files from nmra directory
    • índex que relaciona mfgID (CV8) i versionID (CV7) amb el fitxer corresponent (es fa servir a «Llegeix el tipus de descodificador»)
    • fitxer genèric per al tipus de descodificador:
      • a file can include files from other directories
        • include
          • <variables>
              <xi:include href="http://jmri.org/xml/decoders/nmra/shortAndLongAddress.xml"/>
              ...
            </variables>
        • other directories
          • parts/
            • enum-0ff0n.xml
            • enum-...xml
          • nmra/
            • shortAndLongAddress.xml (CV1, CV17, CV29)
            • ...
      • JMRI/xml/decoders/
        • decoder-config
          • copyright
          • authotgroup
          • revhistory
          • decoder
            • family
              • model
            • programming
            • variables
              • xi:include href="http://jmri.org/xml/decoders/nmra/shortAndLongAddress.xml"
              • variable CV="..." item="..."
                • decVal, shortAddressVal, longAddressVal, enumVal/enumChoice (see also parts/enum-...xml),
          • pane
            • name
            • column
              • label
              • separator
              • display item="..."
              • display ...
            • row
            • ...
          • pane
          • ...
    • fitxer específic per a aquell descodificador:
      • ~/.jmri/El_meu_ferrocarril_al_JMRI.jmri/roster/<nom_descodificador>.xml
    • xml/names.xml
      • definitiongroup
        definition

        name
        item
        CV
        Basic



        Short Address

        Long Address

        Advanced Ack
        29b4
        Address Format
        29b5
        Speed and Motor
        Vstart
        2

        Vmid
        6

        Vhigh
        5

        Accel
        3

        Decel
        4



        AnalogPowerConversion


        Identification


        Consisitng


        BEMF and Motot Control


        Lighting


        Function mapping


        Advanced


        Sound


PanelPro

  • Estació de control / Command station
  • Create control panels using:
    • name
      image
      description
      usage
      tutorial
      Panel Editor jmri_control_panel_editor

      "lets you graphically draw a Panel exactly the way you want it,
      and then animate parts of it to show the status of your layout and let you click to control it."
      • graphical control panels
      • as many panels as you like
      • can be used to control the railroad
      • flexibility over appearance
      • supports warrants and automatic running
      • modular layouts
      • complicated panels for large layouts

      JMRI panel tutorial - Part 2
      Control Panel Editor "works like Panel Editor but provides an alternative interface.": menus, drag and drop

      Layout Editor jmri_layou_editor
      "provides tools to make a smart schematic of your layout while constructing the logic for signals, etc.
      This constrains how the panel appears a little, but it can save significant time when first bringing your layout up."
      • logical description of the layout
      • only for a single layout
      • designed for automation and semi-automation
      • can directly control turnouts and signals
      • needed by other jmri tools
      JMRI panel tutorial - Part 1
      Switchboard Editor jmri_switchboard_editor
      "is a graphic, straightforward control interface, showing a range of switch keys to watch and control items."
      • basic inputs: sensors
      • basic outputs: turnouts, lights

  • Passos / Steps
    • Launch PanelPro
      • Or, from DecoderPro: File->Open PanelPro Window
    • Create items with the following names (from Tables, or directly before adding items to the panel):
      • system name
        user name
        prefix
        type
        address

        • X: Z21XpressNet
        • L: Z21LocoNet
        • N: NCE
        • I: Internal
        • T: turnout, output in signal mast
        • S: sensor
        • L: light
        • H: signal head
        • B: block
        • Y: section
        • Z: transit
        • AL: audio listener
        • AB: audio buffer
        <integer>
        (free)
    • Panels -> New Panel -> [Panel Editor, Control Panel Editor, Layout Editor, Switchboard Editor]
  • Tutorials
      • Part 1 - Focusing on the Layout Editor (pdf) (xml)
        • 1.1 Background
        • 1.2 Layout Editor
        • 1.3 Panel Editor
        • 1.4 Getting Started
          • Connection1 (Edit -> Preferences)
            • System Manufacturer: NCE
            • System connection: Simulator
          • Download gif files:
            • mkdir ~/.jmri/panels && cd ~/.jmri/panels
            • wget http://quaker-valley.com/CTC/sampleCTC.gif
            • wget http://quaker-valley.com/CTC/QV_CTC.gif
        • 1.5 JMRI Tables
          • 1.5.1 Turnout Table
            • type
              • internal turnouts (IT): represent parts of your panel
              • connected to hardware turnouts (NT, XT, LT...)
            • Tools -> Tables -> Turnouts
              • Add: NT1, NT2, NT3, NT4, IT5
          • 1.5.2 Sensor Table
            • type:
              • internal sensors (IS)
              • connected to hardware sensors (NS,...): block detectors, push buttons, toggle switches
            • Tools -> Tables -> Sensors
              • Add: IS801 (BLOCK 801) - IS806 (BLOCK 806), IS901 (INTERLOCK 1) - IS904 (INTERLOCK 4)
        • 1.6 Layout Editor Development
          • Panels -> New Panel -> Layout Editor
            • Options
              • Grid Options
                • Show Grid in Edit Mode
                • Snap to Grid when Adding
            • Put all turnouts on grid (shift + click)
              • Turnout: LH, Name: Turnout 1 (top left), Rotate: 180
              • Turnout: RH, Name: Turnout 2 (bottom left), Rotate: 180
              • Turnout: LH, Name: Turnout 3 (bottom right)
              • Turnout: RH, Name: Turnout 4 (top right)
              • Turnout: LH, Name: Turnout 5 (bottom centre)
        • 1.7 Adding Track
          • Adding track (hold shift + click start over an anchor point + move to another anchor point + release):
            • seccions superior i inferior / top and bottom sections:
              • Track: Track Segment, Mainline
            • secció esquerra / left section:
              • Track nodes: Anchor Point
              • Track: Track Segment, Mainline
              • left click on central circle: Change to: circle; Flipped
              • Track: Track Segment, Mainline
              • left click on central circle: Change to: circle; Flipped
            • secció dreta / right section:
              • Track: Track Segment, Mainline
              • left click on central circle: Change to: circle
            • via morta / dead end:
              • Track nodes: End Bumper
              • Track: Track Segment
            • internal left
              • Track: Track Segment
              • left click on central circle: Change to: circle
            • internal right
              • Track Nodes: Anchor Point
              • Track: Track Segment
            • titles:
              • Label: Label Text
            • Options: disable Edit Mode
            • Options: Save Location and Size
            • Turnout are now functional
        • 1.8 SAVE your work
          • Panels -> Store Panels: JMRI Layout Panel
      • Part 2 - Developing a CTC Panel with Panel Editor (pdf) (xml)
        • Layout Panel Panel Editor
          element block nivell / level
          elements
          Select the type of icon to Add to Panel System name / User name Change Icon... Logix
          Logix






          • Select from: Program Directory / icons /...
          • drag to one of the status





          detectors
          Sensor
          • NS801 / Detector 801
          • NS802 / Detector 802
          • NS803 / Detector 803
          • NS804 / Detector 804
          • NS805 / Detector 805
          • NS806 / Detector 806
          • USS / plate / levers
            • Active: switch-on switch-on
            • Inactive: switch-off switch-off
            • Unknown: switch-unknown switch-unknown
            • Inconsistent: switch-inconsistent switch-inconsitent
          Levers simulate presence sensors
          Logix
          Conditional

          Name
          State Variable (if)
          Action (then)
          IX801 / Block 801
          IX801C1 / Block 801 Occupied
          • Sensor "NS801" state is "Sensor Active" switch-on
          • On Change To True, Set Sensor, "IS801" to Active red
          • On Change To True, Play Sound File from file, ...toggle-on.wav
          IX801C2 / Block 801 Unoccupied
          • Sensor "NS801" state is "Sensor Inactive" switch-off
          • On Change to True, Delayed Set Sensor, "IS801" to Inactive white, after 5 seconds
          • On Change to True, Play Sound from File, ...toggle-of.wav
          IX802 IX802C1

          IX802C2

          IX803 IX803C1

          IX803C2

          IX804 IX804C1

          IX804C2

          IX805 IX805C1

          IX805C2

          IX806 IX806C1

          IX806C2



          • top segment track
          • 2 external left segment tracks
          • internal left segment track
          • 2 bottom segment tracks; turnout NT5
          • external right segment track
          • 3 internal right segment tracks
          • Block 801
          • Block 802
          • Block 803
          • Block 804
          • Block 805
          • Block 806
          10 block sensors
          Sensor
          • IS801 / BLOCK 801 (extrem / end x2)
          • IS802 / BLOCK 802 (Weston principal / main)
          • IS803 / BLOCK 803 (Weston secundari / siding)
          • IS804 / BLOCK 804 (yard turnout x2)
          • IS805 / BLOCK 805 (Eastville principal / main)
          • IS806 / BLOCK 806 (Eastville secundari / siding)
          • smallschematics / LEDs
            • Active: yellow red
            • Inactive: gray white
            • Unknown: red red
            • Inconsistent: red red
          Presence sensors and turnout status set the interlock sensors
          Logix
          Conditional

          Name
          State Variable
          Action
          IX901 / Interlock 901
          IX901C1 / Turnout Normal Occupied
          • R1: Sensor "IS801" state is "Sensor Active" red
          • R2: Sensor "IS802" state is "Sensor Active" red
          • R3: Turnout "NT1" state is "Turnout Closed"
          • On Change To True, Set Sensor, "IS901" to Active red
          IX901C2 / Turnout Normal Unoccupied
          • (R1 or R2) and R3
          • R1: Sensor "IS801" state is "Sensor Inactive" white
          • R2: Sensor "IS802" state is "Sensor Inactive" white
          • R3: Turnout "NT1" state is "Turnout Closed"
          • On Change To True, Delayed Set Sensor, "IS901" to Inactive white, after 5 seconds
          IX901C3 / Turnout Reverse Occupied
          • R1: Sensor "IS801" state is "Sensor Active" red
          • R2: Sensor "IS803" state is "Sensor Active" red
          • R3: Turnout "NT1" state is "Turnout Thrown"
          • On Change To True, Set Sensor, "IS901" to Active red
          IX901C4 / Turnout Reverse Unoccupied
          • (R1 or R2) and R3
          • R1: Sensor "IS801" state is "Sensor Inactive" white
          • R2: Sensor "IS803" state is "Sensor Inctive" white
          • R3: Turnout "NT1" state is "Turnout Thrown"
          • On Change To True, Delayed Set Sensor, "IS901" to Inactive white, after 5 seconds

          • NT1 / Turnout 1
          • NT2 / Turnout 2
          • NT3 / Turnout 3
          • NT4 / Turnout 4
          • Block 901
          • Block 902
          • Block 903
          • Block 904

          interlock sensors
          Sensor
          • IS901 / INTERLOCK 1
          • IS902 / INTERLOCK 2
          • IS903 / INTERLOCK 3
          • IS904 / INTERLOCK 4
          • smallschematics / LEDs
            • Active:  red red
            • Inactive: gray white
            • Unknown: ?
            • Inconsistent: ?



          10 turnout lamps (on left)
          Right Hand Turnout
          • NT1 / Turnout 1
          • NT2 / Turnout 2
          • NT3 / Turnout 3
          • NT4 / Turnout 4
          • USS / sensor
            • Closed (recte): green-on green-on
            • Thrown (desviat): green-off green-off
            • Unknown: s-unknown s-unknown
            • Inconsistent: s-inconsistent s-inconsistent
          Levers and code buttons control turnouts (and associated green/amber lamps)
          Logix
          Conditional

          Name
          State Variable
          Action
          IX03 / Turnout Lever 3 IX03C1 / Lever Normal (recte)
          • R1: Sensor "Turnout Lever 3" state is "Sensor Inactive"I-left
          • AND R2: Sensor "Code Button 4" state is "Sensor Active"code
          • AND R3: Sensor  "IS901" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT1" to Closed
          IX03C2 / Lever Reverse (desviat)
          • R1: Sensor "Turnout Lever 3" state is "Sensor Active"I-right
          • AND R2: Sensor "Code Button 4" state is "Sensor Active"code
          • AND R3: Sensor  "IS901" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT1" to Thrown
          IX05 / Turnout Lever 5 IX05C1
          • R1: Sensor "Turnout Lever 5" state is "Sensor Inactive"I-left
          • AND R2: Sensor "Code Button 6" state is "Sensor Active"code
          • AND R3: Sensor  "IS902" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT2" to Closed
          IX05C2
          • R1: Sensor "Turnout Lever 5" state is "Sensor Active"I-right
          • AND R2: Sensor "Code Button 6" state is "Sensor Active"code
          • AND R3: Sensor  "IS902" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT2" to Thrown
          IX09 / Turnout Lever 9 IX09C1
          • R1: Sensor "Turnout Lever 9" state is "Sensor Inactive"I-left
          • AND R2: Sensor "Code Button 10" state is "Sensor Active"code
          • AND R3: Sensor  "IS903" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT3" to Closed
          IX09C2
          • R1: Sensor "Turnout Lever 9" state is "Sensor Active"I-right
          • AND R2: Sensor "Code Button 10" state is "Sensor Active"code
          • AND R3: Sensor  "IS903" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT3" to Thrown
          IX11 / Turnout Lever 11 IX11C1
          • R1: Sensor "Turnout Lever 11" state is "Sensor Inactive"I-left
          • AND R2: Sensor "Code Button 12" state is "Sensor Active"code
          • AND R3: Sensor  "IS904" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT4" to Closed
          IX11C2
          • R1: Sensor "Turnout Lever 11" state is "Sensor Active"I-right
          • AND R2: Sensor "Code Button 12" state is "Sensor Active"code
          • AND R3: Sensor  "IS904" state is "Sensor Inactive"white
          • On Change to True, Set Turnout, "NT4" to Thrown



          10 turnout lamps (on right)
          • USS / sensor
            • Closed (recte): amber-off amber-off
            • Thrown (desviat): amber-on amber-on
            • Unknown: s-unknown s-unknown
            • Inconsistent: s-inconsistent s-inconsistent


          10
          levers (over turnout plate)
          Sensor
          • IS03 / Turnout Lever 3
          • IS05 / Turnout Lever 5
          • IS09 / Turnout Lever 9
          • IS11 / Turnout Lever 11
          • USS / plate / levers
            • Active: I-right I-right
            • Inactive: I-left I-left
            • Unknown: I-unknown I-unknown
            • Inconsistent: I-inconsistent I-inconsistent



          10
          code buttons (over signal plate)
          Sensor
          • IS04 / Code Button 4
          • IS06 / Code Button 6
          • IS10 / Code Button 10
          • IS12 / Code Button 12
          • USS / plate / levers
            • Active: code-press code
            • Inactive: code code-press
            • Unknown: code-unknown code-unknown
            • Inconsistent: code-inconsistent code-inconsistent




          text







          tracks (static) Icon

          • USS / track / turnout / left / east: east-l east-l
          • USS / track / turnout / right / west: west-r west-r
          • USS / track / block: block block





          plates (static)
          Icon

          • USS / plate / numbered-plates / turnout sw-3
            • sw-3: (77,337)
            • sw-5: (142,337)
            • sw-9: (272,337)
            • sw-11: (337,337)
          • USS / plate / numbered-plates / signal si-4
            • si-4: (77,435)
            • si-6: (142,435)
            • si-10: (272,435)
            • si-12: (337,435)
          • USS / plate / base-plates / misc codeuss-plate




          2
          backgorund icons (static)
          Icon

          • USS / background panel-left-7panel-blank-7panel-blank-7panel-blank-7panel-blank-7panel-blank-7panel-blank-7panel-blank-7panel-right-7
            • Panel-left-7
            • Panel-blank-7: (12,0)
            • Panel-blank-7: (77,0)
            • Panel-blank-7: (142,0)
            • Panel-blank-7: (207,0)
            • Panel-blank-7: (272,0)
            • Panel-blank-7: (337,0)
            • Panel-blank-7: (402,0)
            • Panel-right-7: (467,0)




          1






        • To add an icon to the Panel Editor:
          1. Select the type of icon to Add to Panel
          2. Change Icon...
            • Icon: 1 icon
            • Sensor: 4 icons
            • Right Hand Turnout: 4 icons
            • ...
          3. Add to Panel
        • 2.1 Panel Editor Development
          • create a new panel
            • Panels -> New Panel -> Panel Editor
        • 2.2 Adding Turnout and Signal Plates
        • 2.3 Adding Turnout Levers and Code Buttons
          • "The turnout or switch lever is an internal sensor that through the Logix controls the railroad turnouts."
        • 2.4 Adding Turnout Lever Logix
        • 2.5 The CTC Panel Track Diagram
          • Panel -> Edit -> Open Editor
          • add tracks (static) to Panel Editor
            • Select the type to Add to Panel: Left HandTurnout
              • NT1 -> Add to Panel
            • Select the type to Add to Panel: Icon
            • Change Icon...
              • View on: Dark Gray
              • Program Directory / icons / USS / track / turnout / left / east
                • drag east-l to Icon
                • Add to Panel (twice)
              • Program Directory / icons / USS / track / turnout / ritgh / west
                • drag west-r to Icon
                • Add to Panel (twice)
              • Program Directory / icons / USS / track / block
                • drag block (left-click over draw, not text) to Icon
                • Add to Panel (15 times)
                • drag "b-45-dark" to Icon
                • Add to Panel (Rotate 90 degrees)
          • add text to Panel Editor:
            • Add text
              • "WESTON", Font -> Font Size: 16, Font -> Font Color: Yellow
              • "EASTVILLE", Font -> Font Size: 16, Font -> Font Color: Yellow
              • "3", Font -> Font Size: 16, Font -> Font Color: Yellow
              • "5", Font -> Font Size: 16, Font -> Font Color: Yellow
              • "9", Font -> Font Size: 16, Font -> Font Color: Yellow
              • "11", Font -> Font Size: 16, Font -> Font Color: Yellow
          • add block sensors to Panel Editor
            • IS801, IS802, IS803, IS804, IS805
          • 2.5.1 Activating the Block Sensors
            • ...
        • 2.6 Adding Block Detection to the Layout Panel
          • Options -> Edit
          • Add block 801:
            • Tables -> Blocks
              • Add...
                • System Name: 801
                • User Name: Block 801
                • Sensor: BLOCK 801 (IS801)
          • Associate Block 801 to Main track
          • Block Sensor Occupied Track Color Layout Panel
            Block 801 BLOCK 801 / IS801 Red
            • top segment track
            Block 802 BLOCK 802 / IS802 Red
            • 2 external left segment tracks
            Block 803 BLOCK 803 / IS803 Orange
            • internal left segment track
            Block 804 BLOCK 804 / IS804 Red
            • 2 bottom segment tracks
            • turnout 5
            Block 805 BLOCK 805 / IS805 Red
            • external right segment track
            Block 806 BLOCK 806 / IS806 Orange
            • 3 internal right segment tracks
            Block 901 INTERLOCK 1 / IS901 Red
            • turnout 1 / NT1
            Block 902 INTERLOCK 2 / IS902 Red
            • turnout 2 / NT2
            Block 903 INTERLOCK 3 / IS903 Red
            • turnout 3 / NT3
            Block 904 INTERLOCK 4 / IS904 Red
            • turnout 4 / NT4
          • ...
        • 2.7 Panel Startup Route
          • Tools->Tables -> Sensor: IS999 / RESET
          • Tools->Tables->Routes:R999
            • Turnouts:
              • NTx / Turnout x: Include, SetClosed
            • Sensors:
              • ISxx / Turnout lever x: Include, SetInactive
              • ISxx / Code Button x: Include, SetInactive
              • NS80x / Detector 80x: Include, SetInactive
            • Sensors that trigger this Route:
              • RESET, On Active
          • Panel Editor: add RESET sensor
          • ...
        • ...
      • Part 3 - Adding Signals and Simple Signal Logic (pdf) (xml)

        • Table -> Signal Heads Set Signals... Edit Logic...






          Protects Sensors Red when Turnout... Protects Signal
          NT1 IH4EU / Signal 4 East Upper Throat - Continuing




          IH4EL / Signal 4 East Lower Throat - Diverging




          IH4WM / Signal 4 West Main Continuing




          IH4WS / Signal 4 West Siding Diverging



          NT2 IH6WU / Signal 6 West Upper Throat - Continuing




          IH6WL / Signal 6 West Lower Throat - Diverging




          IH6EM / Signal 6 East Main Continuing Main Leg of Turnout
          • BLOCK 804
          • INTERLOCK 2
          Turnout 2 state is Thrown
          • Signal 10 East Upper
          • Signal 10 East Lower

          IH6ES / Signal 6 East Siding Diverging Diverging Leg of Turnout
          • BLOCK 804
          • INTERLOCK 2
          Turnout 2 state is Closed
          • Signal 10 East Upper
          • Signal 10 East Lower
          NT3 IH10EU / Signal 10 East Upper Throat - Continuing




          IH10EL / Signal 10 East Lower Throat - Diverging




          IH10WM / Signal 10 West Main Continuing




          IH10WS / Signal 10 West Siding Diverging



          NT4 IH12WU / Signal 12 West Upper Throat - Continuing




          IH12WL / Signal 12 West Lower Throat - Diverging




          IH12EM / Signal 12 East Main Continuing




          IH12ES / Signal 12 East Siding Diverging



        • 3.1 Adding Signals to the Layout Panel
          • Tables -> Signals -> Signal Heads
            • signals near turnout 3 (Virtual)
              • IH4EU, Signal 4 East Upper
              • IH4EL, Signal 4 East Lower
              • IH4WM, Signal 4 West Main
              • IH4WS, Signal 4 West Siding
          • ...
      • ...
  • Desviaments / Turnouts
    • z21 (blanca/white)
      • cal una versió de JMRI que arregli els problemes amb «z21 turnout timeout» / you need a version of JMRI which solves problems with "z21 turnout timeout"
      • PanelPro / Tools / Tables /Turnouts: afegiu desviaments Z21XpressNet / add Z21XpressNet turnouts
      • quan feu servir per primera vegada un desviament Z21XpressNet, automàticament es crea el seu corresponent desviament Z21LocoNet / when an XPressNet turnout is used, the corresponding Z21LocoNet turnout is automatically created
      • haureu d'invertir els desviaments Z21XpressNet, perquè l'estat sigui consistent amb la realitat i amb l'estat donat pel clon de tipus Z21LocoNet (creat automàticament) / you need to invert Z21XpressNet turnouts in order to have consistent status with reality and Z21LocoNet clone (automatically created)
  • Senyalització / Signaling
    • JMRI: Signaling
    • JMRI: Defining Your Own Signaling System
      • index.shtml - Free-form description of the signal system
      • aspects.xml - Define the complete set of available aspects
      • appearance-*.xml - One file for each type of SignalMast, defining how to display each aspect (defined by aspects.xml)
        • E.g. ADIF signals created from signals.py (fpm):
          • appearance-SL_4A_high.xml
          • appearance-SL_4B_high.xml
          • appearance-SL_3C_high.xml
          • appearance-SL_3D_high.xml
          • appearance-SL_2E_high.xml
          • appearance-SL_2G_high.xml
          • appearance-SL_2F_high.xml
          • appearance-SL_2I_low.xml
          • appearance-SL_2H_low.xml
          • appearance-SL_2J_low.xml
      • Validation
        • PanelPro -> Debug -> Validate XML File
        • Use xmlstarlet
          • xmlstarlet val -s http://jmri.org/xml/schema/aspecttable.xsd -e aspects.xml
          • xmlstarlet val -s http://jmri.org/xml/schema/appearancetable.xsd -e appearance...xml
      • xml -> html (no need to create them, as xml will be rendered as html when accessing them through an http server, which makes use of xml/XSLT/ translation files)
        • xmlstarlet tr ~/src/JMRI/xml/XSLT/aspecttable.xsl aspects.xml >aspects.html
        • ...
      • nginx conf to render xml files:
        • /etc/nginx/default.conf
          • server {
                listen       80;
                server_name  _;

                location /jmri {
                    alias /disc/src/JMRI;
                    autoindex on;
                }
            }
        • http://127.0.0.1/jmri/xml/signals/
      • francesc.pinyol.m / jmri-signals
        • Exemple / Example
          • ...
    • Estructura de fitxers / File structure
      • resources/icons/<smallschematics|largeschematics>/aspects/<system_name>-<system_year>/
        • index.php
        • <CPL|PL|SE|SL|>-<number_signal_heads>-<high|low>-<abs|pbs>/
          • index.php
          • rule-<rule_number>.<gif|png|jpeg>
      • xml/signals/<system_name>/
        • appearance-<CPL|PL|SE|SL|>_<number_signal_heads>_<high|low>_<abs|pbs>.xml (sample-appearance.xml)
          • CPL: Color Position Light
            PL: Position Light
            SE: Semaphore
            SL: Searchlight
          • abs: absolute
            pbs: permissive
          • content
            • <aspectname>
            • <show>
            • ...
            • <reference>
            • ...
            • <imagelink type="small">../../../resources/icons/smallschematics/aspects/...
            • <imagelink type="large">../../../resources/icons/largeschematics/aspects/...
        • aspects.xml (sample-aspects.xml)
          • aspect



            name indication rule
            speed
            speed2
            route
            dccAspect
            Adif





            (signalSpeeds.xml)






            Clear
            Proceed

            Normal
            Normal


            Vía libre
            VL
            FF1A
            Approach Limited
            Proceed approaching next signal at limited speed.
            Proceed prepared to pass next signal not exceeding 60 MPH and be prepared to enter diverging route at prescribed speed.








            Advance Approach
            Proceed preparing to stop at the second signal
            Proceed prepared to pass next signal not exceeding 50 MPH and be prepared to enter diverging route at prescribed speed.








            Approach Diverging









            Approach Medium
            Proceed prepared to pass next signal not exceeding 40 MPH  and be prepared to enter diverging route at prescribed speed.







            Approach Medium (Diverging)
            Proceed prepared to pass next signal not exceeding 40 MPH  and be prepared to enter diverging route at prescribed speed.








            Approach restricting
            Proceed prepared to pass next signal at restricted speed.








            Approach
            Proceed prepared to stop at next signal.
            Proceed prepared to stop at next signal, trains exceeding 30 MPH immediately reduce to that speed.

            Medium
            Medium





            Diverging Clear
            Proceed through diverging route
            Proceed on diverging route not exceeding prescribed speed through turnout. (Prescribed speed is 60 MPH).

            Medium Medium




            Diverging approach medium









            Diverging Approach
            Proceed through diverging route preparing to stop at next signal

            Limited
            Limited





            Restricting
            Proceed at restricted speed.








            Restricting (diverging)
            Proceed at restricted speed.








            Restricted proceed
            Stop, then proceed at restricted speed.








            Proceed






            Rebase autorizado
            RA'
            FF8B,C
            Caution






            Anuncio de precaución
            PR
            FF3
            Stop
            Stop

            Stop
            Stop


            Parada
            P
            FF7
            Stop and proceed






            Rebase autorizado
            RA
            FF8A
            Unlit
            Unlit

            Stop Stop




  • XML
    • structure






      • layout-config jmriversion major




        minor



        test



        modifier



        sensors
        • class
        sensor
        • inverted
        systemName


        userName


        turnouts
        • class
        operations
        operation
        • name
        • class
        • interval
        • maxtries



        defaultclosedspeed



        defaultthrownspeed



        turnout
        • feedback: DIRECT
        • inverted: false
        • automate: Off
        systemName


        userName


        memories
        • class
        memory
        • value
        systemName


        signalmasts
        • class





        signalgroups
        • class





        signalmastlogics
        • class
        logicDelay



        blocks
        • class
        defaultspeed



        block
        • systemName
        • length
        • curve
        systemName


        userName


        permissive


        occupancysensor


        path
        • todir
        • fromdir
        • block
        beansetting
        • setting
        turnout
        • systemName

        oblocks
        • class





        layoutblocks
        • class
        layoutblock
        • systemName
        • occupancysensor
        • occupiedsense
        • trackcolor
        • occupiedcolor
        • extracolor
        systemName


        userName


        routes
        • class
        route
        • userName
        systemName


        userName


        routeOutputTurnout
        • systemName
        • state: CLOSED



        routeOutputSensor
        • systemName
        • state: INACTIVE



        warrants
        • class





        logixs
        • class
        logix
        • userName
        • enabled
        systemName


        userName


        logixConditional
        • systemName
        • order: 0, 1, ...



        conditionals
        • class
        conditional
        • systemName
        • userName
        • antecedent
        • logicType
        • triggerOnChange
        systemName


        userName


        conditionalStateVariable
        • operator
        • negated
        • type
        • systemName
        • dataString
        • num1
        • num2
        • triggersCalc



        conditionalAction
        • option
        • type
        • systemName
        • data
        • delay
        • string



        timebase
        • class
        • time
        • rate
        • startrate
        • run
        • master
        • sync
        • correct
        • display
        • startstopped
        • startrunning
        • startsettime
        • startclockoption
        • showbutton
        • startsetrate





        LayoutEditor
        • class
        • name
        • x
        • y
        • ...





        panelEditor
        • class
        • name
        • x
        • y
        • height
        • width
        • editable
        • positionable
        • showtooltips
        • controlling
        • hide
        • panelmenu
        • scrollable
        • redBackground
        • greenBackground
        • blueBackground





        filehistory operation type




        date




        filaneme

  • ...

OperationsPro

...

http://www.francescpinyol.cat/jmri.html
Primera versió / First version: 24.V.2019
Darrera modificació: 8 d'agost de 2022 / Last update: 8th August 2022

Valid HTML 4.01!

Cap a casa / Back home