Run Round and Forming Existing Sevice
#1
Posted 20 October 2021 - 09:06 AM
I am using the $form in #dispose and setting a runround path. The loco gets as far as the entrance signal back into the platform but stops there all day long. I think I have set my signal script correctly as follows:-
if(!enabled||!route_set()||block_state()!=#BLOCK_CLEAR)
{
state = SIGASP_STOP;
}
else if(block_state()==#BLOCK_OCCUPIED&&TrainHasCallOn() )
{
state = SIGASP_STOP_AND_PROCEED;
}
else
{
state = SIGASP_CLEAR_2;
}
draw_state = def_draw_state (state);
The signal type in the configuration file is set to have the three aspects available.
The entry in the #dispose row the for the train in question is
$forms=SBY2 /runround=Firsby1RunRoundTT
SBY2 being the new train and Firsby1RunRoundTT being the run round path. $callon is set in the original train's column (SBY1).
Mick Clarke
MEC
#2
Posted 22 October 2021 - 01:00 AM
The runround function was a very early addition to the timetable functions, but has later been replaced by the separate $detach and $attach commands. These allow better control of the runround move. Also, the TrainHasCallOn function does recognize the $attach command and will see it as a valid callon situation.
It's quite easy to change the setup using the runround command, to a setup using $detach and $attach.
All that is needed is an additional train, e.g. named SBY2_runround.
Instead of $forms=SBY2 /runround=Firsby1RunRoundTT , set #dispose to $forms=SBY2 $detach /allleadingpower /forms=SBY2_runround
Set new train SBY2_runround as follows :
#name = SBY2_runround
#consist = (power consist of train)
#path = Firsby1RunRoundTT
#start = (appropriate start time)
#dispose = $attach = SBY2
There is no need to set an explicit $callon command, not for the original train nor for the runround move.
Regards,
Rob Roeterdink
#3
Posted 22 October 2021 - 07:02 AM
roeter, on 22 October 2021 - 01:00 AM, said:
The runround function was a very early addition to the timetable functions, but has later been replaced by the separate $detach and $attach commands. These allow better control of the runround move. Also, the TrainHasCallOn function does recognize the $attach command and will see it as a valid callon situation.
It's quite easy to change the setup using the runround command, to a setup using $detach and $attach.
All that is needed is an additional train, e.g. named SBY2_runround.
Instead of $forms=SBY2 /runround=Firsby1RunRoundTT , set #dispose to $forms=SBY2 $detach /allleadingpower /forms=SBY2_runround
Set new train SBY2_runround as follows :
#name = SBY2_runround
#consist = (power consist of train)
#path = Firsby1RunRoundTT
#start = (appropriate start time)
#dispose = $attach = SBY2
There is no need to set an explicit $callon command, not for the original train nor for the runround move.
Regards,
Rob Roeterdink
Thank you Rob for your suggestion. I am rather behind the curve on Timetables. The Timetable entries nearly work...The run round loco still gets stuck at the entrance ground signal back into the the platform. It only works if I manually clear the ground signals in the dispatcher.
Mick Clarke
MEC
#4
Posted 22 October 2021 - 08:15 AM
The run round and reconnect works automatically with this situation!
This however is not satisfactory from the signalling point of view.
Is the signal script the only means of enabling the call on? If so I guess this means my script and/or configuration is wrong!
Mick Clarke
#5
Posted 22 October 2021 - 04:03 PM
I would try something like:
if (!enabled || !route_set())
{
state = SIGASP_STOP;
}
else if (block_state ==# BLOCK_OCCUPIED)
{
if (TrainHasCallOn())
state =SIGASP_STOP_AND_PROCEED;
else
state = SIGASP_STOP;
}
#6
Posted 23 October 2021 - 10:15 AM
ebnertra000, on 22 October 2021 - 04:03 PM, said:
I would try something like:
if (!enabled || !route_set())
{
state = SIGASP_STOP;
}
else if (block_state ==# BLOCK_OCCUPIED)
{
if (TrainHasCallOn())
state =SIGASP_STOP_AND_PROCEED;
else
state = SIGASP_STOP;
}
Thank you for your suggestion. On looking at my original script it could never work as the signal sees the block as occupied in the first check so the run round loco will never proceed. The principle of your suggestion is correct but the actual script did not work. However, this script does work.
SCRIPT BRSemHome
extern float block_state ();
extern float route_set ();
extern float def_draw_state ();
extern float state;
extern float draw_state;
extern float enabled;
if(!enabled||!route_set())
{
state = SIGASP_STOP;
}
else if(block_state()==#BLOCK_OCCUPIED&&TrainHasCallOn() )
{
state = SIGASP_STOP_AND_PROCEED;
}
else if(block_state()!=#BLOCK_CLEAR)
{
state = SIGASP_STOP;
}
else
{
state = SIGASP_CLEAR_2;
}
draw_state = def_draw_state (state);
Many thanks everyone for help.
Mick Clarke
MEC
#7
Posted 23 October 2021 - 10:26 AM
if(block_state()==#BLOCK_OCCUPIED&&TrainHasCallOn() )
{
state = SIGASP_STOP_AND_PROCEED;
}
else if(block_state()!=#BLOCK_CLEAR||!enabled||!route_set())
{
state = SIGASP_STOP;
}
else
{
state = SIGASP_CLEAR_2;
}
Mick Clarke
MEC
#8
Posted 23 October 2021 - 11:31 AM
Weter, on 23 October 2021 - 01:20 AM, said:
If so, any existing consist would be enough, isn't it?
Yes, that's right. The run-round train will be formed of whatever is the power of the incoming train, and the #consist definition will be ignored.
Regards,
Rob Roeterdink
#9
Posted 24 October 2021 - 12:57 AM
if(block_state()==#BLOCK_OCCUPIED&&TrainHasCallOn()&&route_set() )
{
state = SIGASP_STOP_AND_PROCEED;
}
else if(block_state()!=#BLOCK_CLEAR||!enabled||!route_set())
{
state = SIGASP_STOP;
}
else
{
state = SIGASP_CLEAR_2;
}
draw_state = def_draw_state (state);
Mick Clarke
MEC
#10
Posted 11 November 2021 - 05:30 AM
systema, on 20 October 2021 - 09:06 AM, said:
Mick Clarke
MEC
Hello
Basically, the whole thing is wrongly approached.
In Hungary, the STATION AREA STARTS AT THE ENTRANCE SIGNAL AND CONTINUES TO THE EXTERNAL ENTRY SIGNAL. So a reversing unit can only go beyond the marker with a separate written permission. Between the entrance marker and the first gearbox min. The distance is 100 meters, this is stipulated by law. It can be much larger than 400-500 meters.
I believe that this is the prevailing principle throughout Europe.
So when running around or otherwise reversing, the train does not go beyond the entrance marker. As it does not go beyond the entrance marker, the use of TrainHasCallOn is not required. It can even be reversed so that the direction of travel is in the possession of the station. This prevents the other station from starting a train, which could jeopardize the reversing. Of course, the reverse is also true.
What would be good if the Exit marker gave a "restricted reversing" signal for such a movement. American tracks are not over-signaled as opposed to European tracks. A modern Spurplan has many reversing indicators. There are places where each shift is accompanied by three such tokens, but this is very rare.
Sincerely, Laci 1959