Context
Basis_Scenario_U4_running.zip
This issue is related to #16855 (railway switches and moving block behavior).
I am building a simulation of a highly automated subway line with UTO (Unattended Train Operation) in a CBTC environment, where Moving Block is the primary safety system.
Problem
When using --railsignal-moving-block, safety function a) (block section guarding for distance keeping) is correctly disabled, as described in the documentation. However, safety function c) — guarding bidirectional sections against head-on collisions — remains active and is still enforced by rail signals.
In my simulation, this causes rail signals to turn red at reversing sections in order to protect the bidirectional used track. This leads to train queues and congestion when the simulation is run at scale (e.g., headway factor 100), because trains are held at the signal even though Moving Block should be handling all spacing and safety functions.
Additionally, it seems that rail signals are required for the simulation to run at all — removing them causes the simulation to fail or produce incorrect behavior. This creates a dependency on fixed-block infrastructure that contradicts the intent of Moving Block operation.
Expected Behavior (Real World)
In a real CBTC / UTO environment:
- Moving Block handles all safety-relevant spacing and collision avoidance — including on bidirectional sections.
- In full UTO operation, wayside signals are operationally irrelevant and would not impose any movement authorities on a regular basis.
Current Behavior in SUMO
--railsignal-moving-block disables function a) as documented.
- Function c) still causes signals to turn red on bidirectional sections, blocking trains even in Moving Block mode.
- The simulation appears to require rail signals to function correctly, making it impossible to model a purely Moving Block / CBTC system without fixed-block side effects.
Question / Feature Request
Is there a way to:
- Fully disable rail signal enforcement (including function c) on specific sections or globally, to simulate a pure CBTC Moving Block environment?
- Additionaly: configure signals so that in Moving Block mode, bidirectional section protection is handled by the
Rail carFollowModel rather than by signal states? Alternatively would it be nice, if there is an option for MovingBlock mode, to disable safety functions manualy. So that users can decide if safety function an and c should be disabled.
I will attach my scenario as a ZIP file for reference.
Thank you!
Context
Basis_Scenario_U4_running.zip
This issue is related to #16855 (railway switches and moving block behavior).
I am building a simulation of a highly automated subway line with UTO (Unattended Train Operation) in a CBTC environment, where Moving Block is the primary safety system.
Problem
When using
--railsignal-moving-block, safety function a) (block section guarding for distance keeping) is correctly disabled, as described in the documentation. However, safety function c) — guarding bidirectional sections against head-on collisions — remains active and is still enforced by rail signals.In my simulation, this causes rail signals to turn red at reversing sections in order to protect the bidirectional used track. This leads to train queues and congestion when the simulation is run at scale (e.g., headway factor 100), because trains are held at the signal even though Moving Block should be handling all spacing and safety functions.
Additionally, it seems that rail signals are required for the simulation to run at all — removing them causes the simulation to fail or produce incorrect behavior. This creates a dependency on fixed-block infrastructure that contradicts the intent of Moving Block operation.
Expected Behavior (Real World)
In a real CBTC / UTO environment:
Current Behavior in SUMO
--railsignal-moving-blockdisables function a) as documented.Question / Feature Request
Is there a way to:
RailcarFollowModel rather than by signal states? Alternatively would it be nice, if there is an option for MovingBlock mode, to disable safety functions manualy. So that users can decide if safety function an and c should be disabled.I will attach my scenario as a ZIP file for reference.
Thank you!