开云体育


Re: The future of control and automation - thoughts?

 

CAN stands for "Controller Area Network," a peer-peer network standard.
?
-- Andy


Re: Block occupancy without resistive wheelsets

 

Operations has a max train length value. ?This is used to limit train sizes between switching locations.

Dispatcher has a max train length for automatically controlled trains.

I am not aware of any other places where train length might be stored. ?

Dave Sand


----- Original message -----
From: "p.lavers via groups.io" <p.lavers=ntlworld.com@groups.io>
Subject: Re: [jmriusers] Block occupancy without resistive wheelsets
Date: Tuesday, March 18, 2025 9:48 PM

That JMRI has the facility to store the train length. This would allow the calculation of the position of the end of the train.


Re: Block occupancy without resistive wheelsets

 

That JMRI has the facility to store the train length. This would allow the calculation of the position of the end of the train.


Re: Block occupancy without resistive wheelsets

 

What do you mean by "record its length"? ?

Dave Sand


----- Original message -----
From: "p.lavers via groups.io" <p.lavers=ntlworld.com@groups.io>
Subject: [jmriusers] Block occupancy without resistive wheelsets
Date: Tuesday, March 18, 2025 7:28 PM

To ensure the whole train is considered when assessing block occupancy by current sensors and not just the current drawing locomotive the standard solution is resistive wheelsets. However JMRI knows (with speed profiling) the speed of a train and can also record its length. Along with block length these values would allow a calculation of the block occupied by the end of the train. Would it therefore not be possible to show a block as occupied until the end of the train had left it? I can't find any information on this functionality within JMRI. Is this something that could be implemented on top of JMRI in (say) python or java? Anyone explored this? Any ideas?


Re: Block occupancy without resistive wheelsets

 

yes adding further physical detectors is a solution.? however surely there is a software solution?


Re: Block occupancy without resistive wheelsets

 

开云体育

Here a method used by the modular Free-mo groups that do signaling. It is call MSS for Modular Signal Standard. It uses block track detectors to see the locos and anything drawing power from the rails. But to catch all the cars that likely do not have resistive wheelsets they use an optic detector at each block boundary. What it does it holds each block as active until the optic detector is no longer triggered.

?

When I train is passing from one block to the next, first the loco triggers the optic but then continues on and keeps the track block detector active. Next the cars keep both blocks active until the last car passes the optic detector. At that point the prior block clears. Now if the loco hasn’t reached the other end of the block, that block is active because of the loco. However it the loco has hit the next block, then the cars behind it are triggering the local block (and the next block too). This keeps this block active as if all those cars had resistors.

?

If you look at the website, you might get the clues from the graphics and other explanations there. Now you don’t need that interconnecting for a normal layout. All that’s because we never know which way the modules end up getting placed into the layout.

?

But the idea of combining current detection with the optic at the boundaries is really pretty good at giving the right results regardless of how many cars have resistive wheelsets. Only catch is they won’t detect a broken train that lost a car in the middle of a block.

?

-Ken Cameron, Member JMRI Dev Team

?

?


Re: The future of control and automation - thoughts?

 

Peter,
?
Just a couple of things I know about relating to some of your questions:
?
  • I believe Hornby have implemented Bluetooth control in some of their recent TT scale locomotives, using their HM7000 decoder
  • There is a project called 'EX-SensorCAM' that the DCCEX team are working on to use a camera watching a layout to provide the equivalent of block detection.? Have a look here:
  • I have personally used 2 x WiFi connected lights to provide scene ambient lighting (Night > Dawn > Morning > Midday > Afternoon > Dusk > Night) for my model railway layout.? Using 2 lamps (1 in the East and the other in the West) provides a shift in the light direction as well as varying the light intensity and colour.? I control the lighting via Jython scripts in JMRI, which sends data out of JMRI to control the lights.
  • One of the clubs I'm a member of has a string of W2812 style RGB LED strip for creating lighting effects controlled by an Arduino system.? This could be adjusted to be controlled from a DCC command station
  • The DCCEX project has recently included code to allow control of NeoPixel lights directly from the DCCEX command station, using their EXRAIL scripting system:
  • I believe some people have used AI to generate Jython code for JMRI, but (not having done this myself) I understand the AI generated code isn't perfect and needs some adjustment.? I have seen people post AI generated code in this group in the past.
So those are just some things I'm aware of that you might be interested in checking out.
?
Trevor.


Block occupancy without resistive wheelsets

 

To ensure the whole train is considered when assessing block occupancy by current sensors and not just the current drawing locomotive the standard solution is resistive wheelsets. However JMRI knows (with speed profiling) the speed of a train and can also record its length. Along with block length these values would allow a calculation of the block occupied by the end of the train. Would it therefore not be possible to show a block as occupied until the end of the train had left it? I can't find any information on this functionality within JMRI. Is this something that could be implemented on top of JMRI in (say) python or java? Anyone explored this? Any ideas?


Re: New Apple computer

 

Closing the loop on this thread. Backed up the Pro using Time Machine. Got the Air today and loaded up viaTime Machine. DecoderPro works great as always. Thanks for the help!
?
Fran Giacoma


Re: Print Car List #operationspro

 

Got it - I missed the Car Roster selection!


Re: Extra storage for C/I tracks #operationspro

 

Thanks Dan,? I am already using your second suggestion,? I hadn't thought of using track pools.??
?
?


Re: Print Car List #operationspro

 

Help: ?
?


Re: Print Car List #operationspro

 

Bill,
?
Open the Cars window from a location, then in the Cars window, under tools, print or preview.? Only cars at that location will be printed.
?
Dan


Re: LogixNG vs Jython performance #jython #logixng

 

George,

That is an interesting question.

Here is a simple LogixNG. ?It waits for a sensor state change and then replicates that change to another sensor.
?

Here is the same logic using Jython.

import java
import jmri

class Bridge(java.beans.PropertyChangeListener):
??? def propertyChange(self, event):
??????? t1 = java.util.Calendar.getInstance().getTimeInMillis()
??????? print 'start event :: {}'.format(t1)

??????? src = sensors.getSensor(str(event.getSource()))
??????? srcname = src.getDisplayName()
??????? destname = 'LCC' + srcname[3:]

??????? dest = sensors.getSensor(destname)
??????? dest.setCommandedState(src.getKnownState())

??????? t2 = java.util.Calendar.getInstance().getTimeInMillis()
??????? print 'event done :: {}'.format(t2)

b = Bridge()
s = sensors.getSensor('LNT-Jython')
s.addPropertyChangeListener(b)
print 'pcl added to {}'.format(s.getDisplayName())


Here is the console log output.

16:14:58,525 jmri.jmrit.logixng.actions.LogData??? WARN? - start [JMRI LogixNGThread]
16:14:58,531 jmri.jmrit.logixng.actions.LogData??? WARN? - done [JMRI LogixNGThread]
start event :: 1742332499718
event done :: 1742332499720
16:15:38,074 jmri.jmrit.logixng.actions.LogData??? WARN? - start [JMRI LogixNGThread]
16:15:38,075 jmri.jmrit.logixng.actions.LogData??? WARN? - done [JMRI LogixNGThread]
start event :: 1742332539710
event done :: 1742332539711


There is extra overhead to capture the run times. ?There is also some "first time" overhead.

Of course, there will be differences depending on the actual logic. ?Another issue is selecting how to implement the logic.

For example, the LogixNG uses the "Listen on beans" action. ?This is very efficient. ?This can also be done using a a very long if-then-else-if statement. ?This would not be efficient.

I have not seen any noticeable differences in performance.

Dave Sand


----- Original message -----
From: "George Hofmann via groups.io" <george.hofmann=gmail.com@groups.io>
Subject: [jmriusers] LogixNG vs Jython performance #logixng #jython
Date: Tuesday, March 18, 2025 10:00 AM

I'm just starting to delve into LogixNG. It certainly looks ingenious and powerful. But I wonder, how does it compare in performance to performing the same tasks in a Jython program? Is there any overhead?
?
Thanks
George


Re: Extra storage for C/I tracks #operationspro

 

On Tue, Mar 18, 2025 at 03:05 PM, Bill Rutherford wrote:
I also want some extra storage space available to each C/I track so if a given track has 8 car spots available but 10 cars that should be placed on the C/I track the software has somewhere to put them.
Bill,
?
One solution is to pool your C/I tracks with "general storage".? You would set the minimum track length for each C/I track to 8 cars.? Now if the program needs more, it can grab the space from general storage.? Your operators seeing that there are already 8 cars on the C/I track would simply place the cars on the general storage track.? The program will think the cars are on the C/I track.? Now when it comes time to pull the cars from the C/I track, your operators won't find all of the cars sitting there, some can be found on the general storage track.? You would provide instructions to look in the general storage track when cars aren't spotted on the correct C/I track.? The benefit of this solution is that the "extra" track space is limited to whatever "general storage" is, and can be shared with all C/I tracks, or not.? No need to run an extra train, just to move the cars from general storage directly into the train demanding the cars.
?
Another way to organize your C/I yard, is having sets of cars grouped by destination anywhere in your yard, and the program will automatically adjust the length needed if you pool them together.? So rather than thinking this physical track is for cars going to X, you instead organize your tracks by groups of cars going to certain destinations.? Sometimes it will be physical track 1 going to destination X, and sometimes track 2, 3 etc. going to destination X depending on car space requirements.? You'll need some sort of system to keep track of the groups of cars.? Could be as simple as a small white board, or magnet board with markers, or cards.
?
Dan


Re: Print Car List #operationspro

 

I would have thought so also but it isn't an option in the show cars window from a location.


Re: Labels in JMRI Roster

 

开云体育

Heath, My two cents.

?

BLI decoders (Paragon) only show up in BLI locomotives and the difference between steam and diesel can be determined. BLI has a common assignment for functions that they use.

?

This is not the case for ESU decoders which could be in any manufacturer’s loco and the same decoder can be used for both steam and diesel. Just look at the differing use of functions among the loco manufacturers that use ESU decoders. Not to mention the difference between use of functions in the EU versus US.

?

Mark Granville


Re: Print Car List #operationspro

 

Under Tools in the Cars window, print or preview.
?
Dan


Print Car List #operationspro

 

When editing a location there is an option to show cars under the tools menu.
?
Is there a way to print the list from JMRI once it loads?? Right now I am taking a screen shot, pasting it into another software and printing it that way
?
?
Thanks in advance!


Extra storage for C/I tracks #operationspro

 

I have a yard setup with 8 C/I tracks for various next destinations so we can sort cars as they come into the yard.
?
I also want some extra storage space available to each C/I track so if a given track has 8 car spots available but 10 cars that should be placed on the C/I track the software has somewhere to put them.
?
To make it more complicated lets assume that the outbound train can only handle eight cars
?
So, ten cars come into the yard for Woodsville.? Eight go onto the Woodsville C&I track and the other two go into "general storage"
?
When the time comes for the Woodsville train it grabs the eight from the C/I track, freeing up room for the other two cars to be placed on the C/I track for the next train.
?
A yard job then runs and puts the two from general storage onto the Woodsville C/I track
?
Two questions:
What would the real railroad do?
Is there a way to accomplish either my idea or the prototype solution in JMRI?
?
Thanks!