Beacon types for route developers
The following beacon types are recognised by the UkTrainSys plugin (for details regarding how to use each beacon, please see further down):
|
Beacon Type
|
Purpose
|
20 |
Represents a pair of Automatic Power Control (APC) magnets, or a neutral section, depending upon the optional data parameter |
23 |
Used to tell the AI guard whether or not an upcoming station has stopping location constraints which should
be observed, or ignored |
24 |
Used by the AI guard; defines the start (or end) of station limits, and used to determine the location of the
upcoming stopping location, and the permitted underrun and overrun distances in metres |
|
|
50 |
Used by the AI Support feature; the optional data determines which AI function to perform upon passing this beacon, or otherwise informs the AI Support of something for it to be aware of |
|
|
44000 |
Represents an AWS permanent magnet or electromagnet |
44001 (deprecated) |
Represents a permanently installed and energised AWS magnet (for use with permissible speed advanced warning
indicator boards, for example) |
44002 |
Represents a TPWS Overspeed Sensor System (OSS) arming or trigger induction loop, associated with a signal |
44003 |
Represents a TPWS Trainstop Sensor System (TSS) arming or trigger induction loop, which is permanently energised. |
44004 |
Represents a TPWS Overspeed Sensor System (OSS) arming or trigger induction loop, which is permanently energised (for use with permissible speed advanced warning indicator boards, for example) |
|
|
More information
openBVE's .Beacon command has the following format:
Track.Beacon Type; BeaconStructureIndex; Section; Data; X; Y; Yaw; Pitch; Roll
Please see the
Developing for openBVE section of the official openBVE homepage for more information.
A note regarding backwards compatiblity
In many cases, the beacons recognised by the UkTrainSys plugin are the same as with Simon Gathercole's previous generation of C++ Windows-only plugins written for BVE 4. However, in some cases, UkTrainSys supports new, enhanced functionality via differently formatted beacon commands, while retaining backwards compatibility with beacon commands found in routes written with Simon's plugins in mind.
This documentation focuses on the new functionality which is provided by UkTrainSys, and openBVE route and train developers are encouraged to use the new functionality and beacon command parameters, if developing add-ons for openBVE. If you need to know about the legacy, backwards compatible beacon parameters and behaviours, then you can see the
Legacy Behaviour section, further down.
Beacon types and the Automatic Power Control system
Beacon 20:
This beacon serves two purposes...
Firstly, it can represent a pair of Automatic Power Control (APC) magnets, used to trip open the air-blast/vacuum circuit breaker (ACB/VCB) between a pantograph and the traction power equipment, just before passing a neutral section in the overhead line equipment. The beacon can also be used to re-close the ACB/VCB if it is already open. For example:
1000, .Beacon 20;0
1046, .Beacon 20;0
This
.Beacon 20 command should be located where your APC magnets are required, both before
and after the neutral section.
Note: the
BeaconStructureIndex value will depend upon what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage for more information.
Secondly, the
.Beacon 20 command can specify the start and end of the actual neutral section itself (i.e. the earthed, non-energised, 4 metre ceramic bead section, which is spliced into the overhead line). For example:
1030, .Beacon 20;-1;;-1
1034, .Beacon 20;-1;;-1
The
Data parameter of
-1 in these
.Beacon 20 commands, tells the UkTrainSys plugin to treat these as the start and end of the neutral section.
Note: the
BeaconStructureIndex value is -1 here, as we don't want any object to be displayed at the location of this beacon. Please see the
Developing for openBVE section of the official openBVE homepage for more information.
Putting it all together:
To simulate a fully equipped neutral section, your route file commands would be as follows:
1000, .Beacon 20;0, ; first pair of APC magnets
1030, .Beacon 20;-1;;-1, ; commencement of neutral section
1034, .Beacon 20;-1;;-1, ; termination of neutral section
1046, .Beacon 20;0, ; second pair of APC magnets
- When the train's Automatic Power Control (APC) recevier passes 1000 metres, the APC system will command open the air blast/vacuum circuit breaker (ACB/VCB), interrupting the power supply from the pantograph to the traction power equipment.
- When the APC receiver location is between 1030 and 1034 metres, overhead line voltage is lost completely.
- When the train's APC receiver passes 1046 metres, the APC system will command the air blast/vacuum circuit breaker to re-close, restoring the power supply from the pantograph to the traction power equipment.
If the train's pantograph inadvertently comes to a halt between
1030 and
1034 metres, then the train will have no power source, and you will have to either release the brakes and hope that your train is on an incline, such that it rolls out of the neutral section due to gravity, or you will have to declare a train failure. In the latter case, in reality, your train would need to be rescued by another train!
If the train's pantograph inadvertently comes to a halt between
1000 and
1030 metres, or
1034 and
1046 metres, then the air blast/vacuum circuit breaker can be re-closed manually, and the train can be moved, so that another attempt to coast through the neutral section can be made.
Beacon types and the AI Guard
Beacon 23:
This beacon is used to tell the AI guard whether or not an upcoming station has stopping location constraints which should be observed,
or ignored (or rather, whether subsequent
.Beacon 24 commands should be ignored or not). If the stopping point is to be monitored, then the AI guard will signal the driver with audible buzzer codes if the train stops outside of the defined stopping
location limits, provided the train is within defined station area limits. If the stopping location is to be monitored, the
Data parameter should be a value other than 0, such as 1. For example:
Note: the
BeaconStructureIndex value is -1 here, as we don't want any object to be displayed at the location of this beacon. Please see the
Developing for openBVE section of the official openBVE homepage for more information.
Beacon 24:
This beacon is used by the AI guard, and serves three purposes. Firstly, it's presence alone determines the start (or end) of station
limits. The location of the first
.Beacon 24 command following a
.Beacon 23 command in the route, determine the start
of the station area limits, and the location of the second
.Beacon 24 command determines the end of the station area limits.
This beacon is also used to determine the location of the upcoming stopping location, and it also used to determine the permitted
underrun and overrun distances from this stopping location, in metres. Provided a
.Beacon 23 command with a
Data
parameter other than 0 was passed previously, the plugin will act upon the parameters passed via a
.Beacon 24 command.
As mentioned already, this beacon type should be placed twice; once before the station, and once after the station. The first
.Beacon 24 command before the station, defines the start of the station limits (the AI guard will monitor whether or not the
train stops in the wrong place after passing this beacon), and should have a format as follows:
All the information which the plugin requires is passed via the
Data parameter. The
Data parameter must be
at least 7 digits in length, and contain only numbers.
The first three digits represent the distance from the
.Beacon 24 command to the
.Stop command, as defined in the route file (you'll need to work out this distance value yourself, and change the value if you
subsequently relocate either the
.Stop or
.Beacon 24 commands). In this example, the beacon is 195 metres from the
.Stop command.
The 4th and 5th digits define the permitted underrun in metres. In this case, the permitted underrun is 75 metres.
Note: For best results, the
BackwardTolerance parameter of openBVE's
.Stop command, should match this value.
The 6th and 7th digits define the permitted overrun in metres. In this example, the permitted overrun is 25 metres.
Note: For best results, the
ForwardTolerance parameter of openBVE's
.Stop command, should match this value.
The 8th and 9th digits are OPTIONAL and can be omitted, if there is only one stopping location at the upcoming station. These specify how many cars a train must have at maximum, for the stopping point to apply to the train. In the above example, the stopping location specified by this beacon command, only applies if the train has 3 cars or less. If the train has 4 cars or more, then the beacon information is ignored. You should place a subsequent
.Beacon 24 command which specifies no cars at all, to act as a "catch all" for trains of any length.
Note: As the
Data parameter must be
at least 7 digits in length, you can insert zeros where necessary. For example, if your distance from the beacon to the
.Stop command is 99 metres, then you would specify this as 099. As a more silly example, if the distance was 9 metres, then this would be specified as 009.
The second placement of this beacon, which defines the end of the station limits (once passed this beacon, the AI guard no longer
monitors where the train stops), should have the following format:
Note: the
BeaconStructureIndex value is -1 in the above examples, as we don't want any object to be displayed
at the location of these beacons. Please see the
Developing for openBVE
section of the official openBVE homepage for more information.
Putting it all together:
So, in your route file, you would end up with something like the following, which allows for an
Underrun/BackwardTolerance of
25 metres, and an
Overrun/ForwardTolerance of
30 metres (simple example wtih only one stopping location):
1000, .Beacon 23;-1;;1
.Beacon 24;-1;;2002530
; --- Start of station platform at 1025m ---
1025, .Sta MyStation;10.0000;10.0130;;1;0;;;20;30;;0
1200, .Stop 0;25;30, ; All car stop point
; --- End of station platform at 1225m ---
1400, .Beacon 24;-1;;0
If you had a station with two stopping points - one for 3 car trains or less, and one for 6 car trains or less (but greater than 3), plus a third for any train which is greater than 6 cars in length, you could use the following in your route file (advanced example):
1000, .Beacon 23;-1;;1
.Beacon 24;-1;;150509903
.Beacon 24;-1;;225502506
.Beacon 24;-1;;2252525
; --- Start of station platform at 1025m ---
1025, .Sta MyStation;10.0000;10.0130;;1;0;;;20;30;;0
1150, .Stop 0;50;99;3, ; 3 car stop point (tolerances assume 3 * 25m length cars)
1225, .Stop 0;50;25;6, ; 6 car stop point (tolerances assume 6 * 25m length cars)
.Stop 0;25;25, ; >6 car stop point (assumes little, as any train length >6 cars is handled)
; --- End of station platform at 1250m ---
1400, .Beacon 24;-1;;0
If you wanted to disable AI guard monitoring of this station, for example if the train is not scheduled to stop in a particular route
file, you can simply change
.Beacon 23;;;1 to
.Beacon 23;;;0.
Final note: If you forget to place the final
.Beacon 24 command in your route file, then the AI guard will stop monitoring the stopping location, 500 metres after the stopping location which has been determined by UkTrainSys.
Beacon types and the AI Support feature
Beacon 50:
This beacon is used by the AI Support. Upon passing
.Beacon 50, the optional
Data parameter contains information which the AI Support feature can use to perform some action within the cab, in response to passing over this beacon. The
Data parameter is an integer ranging from zero upwards. Currently supported values are as follows:
|
Data parameter
|
AI Support Instruction
|
0 |
Sound the horn (lever forward first, then backwards) |
1 |
Sound the horn (lever backwards first, then forwards |
|
|
40 |
Informs the AI Support that the next stopping point is at the terminal station on the route. Only place this beacon 50 command prior to the last .Stop command in the route |
41 |
Instructs the AI Support to lower the pantograph (or stop the diesel engine), when the train next stops and the doors open (i.e. at a station). Only place this beacon 50 command prior to the last .Stop command in the route |
|
|
920dxxxxx |
Informs the AI Support that there is a neutral section ahead (or behind)
- d should be 1 (ahead);
- xxxxx should be a value between 00000 and 99999, which is the distance between the beacon and the neutral section, in metres.
If d is 1, then UkTrainSys interprets the neutral section as being xxxxx number of metres ahead of the beacon location, and the beacon is ignored when travelling backwards. The AI doesn't currently drive backwards, so there's no need to handle reverse direction behaviour yet.
You should pad your distance value with zeros where appropriate. For example, if your neutral section is 200 metres ahead, the distance passed to the plugin would be 00200. The full .Beacon command would therefore be:
.Beacon 920100200
Note: If the tap changer is enabled, then this takes up to 35 seconds to run down from notch 38. When deciding where to place a neutral section ahead beacon, you should check to see how far a train which is travelling at the permitted linespeed, can travel within at least 35 seconds. This will let you know where the beacon should be placed. If the tap changer is not enabled, then UkTrainSys will remember that the beacon has been passed, and will return the power handle to the off position, 5 seconds before reaching the calculated location of the neutral section. If you jump to a station, the information passed via the beacon is discarded. |
|
|
For example:
The
Section parameter of
0 in this
.Beacon 50 command, would instruct the AI Support feature to blow the horn, first by moving the horn lever forwards, then backwards.
Note: the
BeaconStructureIndex value is -1 here, as we don't want any object to be displayed
at the location of this beacon. Please see the
Developing for openBVE
section of the official openBVE homepage for more information.
Beacon types and the Automatic Warning System (AWS)
There is just a single beacon required for prototypical Automatic Warning System (AWS) simulation.
Beacon 44000:
This beacon represents either an AWS permanent magnet with it's south pole facing upwards, or an AWS electromagnet with it's north pole facing upwards (the latter is associated with a signal). Which of these the beacon represents, is determined by the optional
Data parameter.
An AWS permanent magnet by itself, always primes the AWS, and starts a delay period which lasts for
1000 milliseconds. If this delay period elapses, an AWS warning is issued.
An AWS electromagnet should immediately follow an AWS permanent magnet, and the electromagnet is energised only when the associated signal is showing a clear (green) aspect. When the aforementioned permanent magnet primes the AWS, detection of the electromagnet within the delay period, causes an AWS clear indication to be issued. If the associated signal is showing a restrictive aspect (red or yellow), then the electromagnet is de-energised, and therefore it is not detected by the AWS equipment. Thus, the AWS delay period elapses, and an AWS warning is issued.
Note: As with the real AWS, if you drive at a very low speed over an AWS inductor, while the associated signal is showing a green aspect, then the AWS delay period may elapse before the electromagnet is reached, and an AWS warning will be issued. If the AWS warning is not acknowledged, then the warning will automatically clear upon passing the electromagnet (provided no brake demand has occured). So, when approaching a green signal at very low speeds, you may briefly hear the warning horn and be presented with the AWS sunflower, and then hear the AWS bell and see the sunflower instrument go black.
AWS inductor associated with a signal:
For an AWS inductor associated with a signal, use the following pair of
.Beacon 44000 commands:
100.0, .Beacon 44000;-1;;180, ; AWS permanent magnet (south pole)
101.0, .Beacon 44000;0;1;360, ; AWS electromagnet (north pole)
Firstly, note the spacing between the two
.Beacon 44000 commands - they should be
1 metre apart. There is no absolute limit, but this ensures reliable operation.
Secondly, note the order in which the commands appear - as with the real AWS, they must appear in this sequence, to work correctly in the normal (forward) direction of travel. If the order is reversed, then they would only be suitable for the opposite direction of travel.
Thirdly, the
Data parameter of
180 in the first
.Beacon 44000 command, represents the magnet's south pole, and the
Data parameter of
360 in the second
.Beacon 44000 command, represents the north pole.
The
Section parameter of the first
.Beacon 44000 command can be omitted, because this beacon represents a permanent magnet which is always detectable. This primes the AWS, ready to detect the state of the second
.Beacon 44000 command.
With the second
.Beacon 44000 command, the
Section parameter of
1, references the next section ahead, and if the signal apsect associated with section
1 is green, an AWS clear indication will be issued when this beacon command is encountered. If the aspect is red or yellow, the beacon is ignored, and and AWS warning will be issued, 1 second after the first beacon was passed.
Note: the
BeaconStructureIndex value will depend upon
what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage
for more information.
AWS permanent magnet associated with a temporary or permanent speed restriction:
For an AWS inductor associated with a temporary or permanent speed restriction, use the following
.Beacon 44000 command:
100.0, .Beacon 44000;0;;180, ; AWS permanent magnet (south pole)
The
Data parameter of
180, represents the magnet's south pole.
The
Section parameter of the
.Beacon 44000 command can be omitted, because this beacon represents a permanent magnet which is always detectable. This primes the AWS, and as there is no second
.Beacon 44000 command, an AWS warning will be issued, 1 second after this beacon is passed.
Note: the
BeaconStructureIndex value will depend upon
what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage
for more information.
A note on opposite direction of travel, as well as bi-directional signalling and AWS suppression:
If a train is driven backwards over an AWS inductor associated with a signal, then an AWS warning will be issued, as the beacon representing an electromagnet is passed first, but as the AWS is not yet primed, the electromagnet beacon is not acted upon. When the AWS is subsequently primed by the permanent magnet, the delay period will elapse, thus issuing an AWS warning, regardless.
openBVE does not presently support bi-directional signalling, however, the UkTrainSys plugin does support AWS suppression, which prevents an AWS permanent magnet from being detected. This would be linked to the signalling system, such that when trains are permitted to travel in the opposite direction, AWS permanent magnets which are only meant to apply to signals in the normal direction of travel, would be suppressed (and vice-versa).
To suppress an AWS permanent magnet, you can do use the follwing
.Beacon 44000 command:
100.0, .Beacon 44000;-1;;270, ; AWS suppression
The
Data parameter of
270, tells UkTrainSys that this
.Beacon 44000 command represents a suppression magnet.
The
Section parameter can be omitted, to unconditionally suppress the
subsequent AWS permanent magnet
(in the direction of travel). In future, UkTrainSys could be expanded to act upon a section which applies to the opposite direction of travel, where the aspect of that section could conditionally suppress the subsequent AWS permanent magnet (remember, openBVE doesn't currently support bi-directional signalling - this is an idea for future use only).
The AWS permanent magnet which is to be suppressed, MUST be located within 2 metres of the suppression beacon (a distance of
0.5 metres is recommended).
For example, to suppress an AWS permanent magnet in the opposite (reverse) direction of travel only:
100.0, .Beacon 44000;-1;;180, ; AWS permanent magnet (south pole)
100.5, .Beacon 44000;-1;;270, ; AWS suppression
101.0, .Beacon 44000;0;1;360, ; AWS electromagnet (north pole)
In the above example, the suppression beacon is encountered before the beacon representing the permanent magnet,
ONLY if the train is travelling backwards, and if the train is travelling backwards, the permanent magnet will be ignored by the UkTrainSys plugin. If the train is travelling forwards, the AWS permanent magnet will still be detected, as usual.
To suppress an AWS permanent magnet in the normal (forward) direction of travel only:
99.5, .Beacon 44000;-1;;270, ; AWS suppression
100.0, .Beacon 44000;-1;;180, ; AWS permanent magnet (south pole)
101.0, .Beacon 44000;0;1;360, ; AWS electromagnet (north pole)
In this example, the suppression beacon is encountered before the beacon representing the permanent magnet,
ONLY if the train is travelling forwards, and the permanent magnet will be ignored by the UkTrainSys plugin in the forward direction. If the train is travelling backwards, the AWS permanent magnet will still be detected, as usual.
If you want to suppress an AWS permanent magnet in both directions of travel, then you can either remove the beacon representing the permanent magnet altogether, or place a suppression beacon both before and after the beacon representing the permanent magnet.
Beacon types and the Train Protection and Warning System (TPWS)
Beacon 44002:
This beacon represents a TPWS Overspeed Sensor System (OSS) induction loop, associated with a signal. This beacon supports prototypical TPWS operation, where the permissible speed is determined by the spacing between a pair of OSS induction loops, combined with a pair of train-borne timers, and also allowing for induction loop nesting and interleaving, and opposite direction of travel. When the section referenced by the
Section parameter of a
.Beacon 44002 command has an aspect of 0 (i.e. the section is occupied by a train), the induction loop is energised.
To simulate prototypical TPWS Overspeed Sensor System behaviour, a pair of
.Beacon 44002 commands should be placed in the route file, where the first
.Beacon 44002 command represents the OSS arming induction loop, and the second
.Beacon 44002 command represents the OSS trigger induction loop.
When the plugin registers passing the OSS arming induction loop (identified by one of two frequencies which should be emitted from it), one of two timers associated with either frequency is started within the plugin, which counts to
974 milliseconds on passenger trains, and
1218 milliseconds on freight trains (this timeout period can be set via the
UkTrainSys.cfg file - please
see below for more information). If the associated timer has not expired by the time a matching OSS trigger induction loop is encountered (which is identified by one of two different frequencies which should be emitted from it), then the TPWS deems that the train is travelling too fast, and will issue an OSS Brake Demand. Thus, the speed at which a TPWS equipped train is permitted to travel on approaching a red signal, is determined by both the timeout period, and the distance between the two
.Beacon 44002 commands which are emitting recognised frequencies.
For prototypical TPWS simulation, the
.Beacon 44002 commands should be used as follows (both of these examples would create an OSS with a permissible speed of around 56 km/h).
For the normal direction of travel, the following beacon should be used (applies to ordinary uses of TPWS in a route):
1004.85, .Beacon 44002;0;1;64250, ; TPWS OSS arming loop
1020.00, .Beacon 44002;0;1;65250, ; TPWS OSS trigger loop
Firstly, note the
spacing between the two beacons, which is 15.15 metres (
1020 - 1004.85 = 15.15). This determines the OSS permissible speed (a very easy and quick formula for calculating the distance for a given speed, can be found below).
The
Section parameter of
1, references the next section ahead, and if section
1 is occupied, the loops are energised. If the timer which is triggered by the arming loop, has not expired before the trigger loop is reached, then passing the second
.Beacon 44002 command will trigger a TPWS OSS Brake Demand.
The
Data parameter of
64250 in the first
.Beacon 44002 command, represents the arming frequency of 64250 Hz (64.25 kHz).
The
Data parameter of
65250 in the second
.Beacon 44002 command, represents the trigger frequency of 65250 Hz (65.25 kHz).
The frequencies must exactly match the values shown in the above example, and they must appear in the order shown. This means that the OSS is only recongnised when travelling in the forward direction, and is ignored if travelling backwards over the beacons. If you inadvertently get the frequencies the wrong way around, then the OSS will only be effective if you
are travelling backwards!
Note: the
BeaconStructureIndex value will depend upon what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage for more information.
TPWS+ (OSS+):
If a TPWS+ (Plus) installation is being simulated, then the same pair of beacons (with the same frequencies specified in the same order), should be used. The first occurance of the pair of
.Beacon 44002 commands (the OSS+), should be located around 750 metres in the rear of the associated signal, and the beacon pair should be spaced further apart, so that they allow a higher permissible speed than the inner pair of
.Beacon 44002 commands.
OSS induction loop spacing: The formula for working out the correct spacing between the
.Beacon 44002 commands, and hence correctly setting the permissible speed, is as follows. You can use either the passenger train OSS timeout, or the freight train OSS timeout, to calculate the beacon spacing. However, I would recommend using the passenger train timeout value.
If using the passenger train OSS timeout period of 974 ms:
distance[m] = 0.27056 * speed[km/h]
If using the freight train OSS timeout period of 1218 ms:
distance[m] = 0.33833 * speed[km/h]
You can also calculate the beacon spacing with any OSS timeout value, by using the following formula:
distance[m] = ((permittedspeed[km/h] * 1000) * timeout[s]) / 3600
For passenger trains, timeout is 0.974 seconds;
For freight trains, the timeout is 1.218 seconds.
Beacon 44003:
This beacon represents a TPWS Trainstop Sensor System (TSS) induction loop, associated with a signal. When the section referenced by the
Section parameter of a
.Beacon 44003 command has an aspect of 0 (i.e. the section is occupied by a train), the TSS induction loop is energised.
To simulate prototypical TPWS Trainstop Sensor System behaviour, a pair of
.Beacon 44003 commands should be placed in the route file, where the first
.Beacon 44003 command represents the TSS arming induction loop, and the second
.Beacon 44003 command represents the TSS trigger induction loop.
When the plugin registers passing the TSS arming induction loop (identified by one of two frequencies which should be emitted from it), one of two detection states associated with either frequency is activated within the plugin. If the TSS trigger induction loop (which is identified by one of two different frequencies which should be emitted from it), is detected
after the arming loop is detected, but while the trigger loop is still within range of the arming loop, then the plugin will recognise this condition as a valid TSS installation, and will issue a TSS Brake Demand. The use of an arming and trigger loop, together with specific frequencies, allows for prototypical behaviour when travelling backwards over the induction loops, for example.
For prototypical TPWS TSS simulation, the
.Beacon 44003 commands should be used as follows:
100, .Beacon 44003;0;1;66250, ; TPWS TSS arming loop
101, .Beacon 44003;0;1;65250, ; TPWS TSS trigger loop
The
Section parameter of
1, references the next section ahead, and if section
1 is occupied, the TSS induction loops are energised.
Note the
spacing between the two
.Beacon 44003 commands - they are 1 metre apart. They can be spaced up to 2 metres apart, but any more than this, and the TSS trigger loop will be out of range of the TSS arming loop, and the TSS will not work. The TPWS will only act upon the detection of the trigger frequency, if it is close enough to the arming loop at the time.
If you were to switch the above
.Beacon 44003 commands around, such that the trigger loop comes before the arming loop, then the TSS would only be recognised as such, if the train was travelling backwards over the TSS.
Note: the
BeaconStructureIndex value will depend upon what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage for more information.
Putting it all together:
A typical signal with AWS and standard TPWS, could be declared as follows (the OSS beacon spacing of 15.15 metres, would give around a 56 km/h permissible speed):
1004.85, .Beacon 44002;0;1;64250, ; TPWS OSS arming loop
1020.00, .Beacon 44002;0;1;65250, ; TPWS OSS trigger loop
1036.0, .Beacon 44000;-1;;180, ; AWS permanent magnet (south pole)
1037.0, .Beacon 44000;0;1;360, ; AWS electromagnet (north pole)
1219.00, .Beacon 44003;0;1;66250, ; TPWS TSS arming loop
1220.00, .Beacon 44003;0;1;65250, ; TPWS TSS trigger loop
.SigF 4;1;-2.1;5.85, ; Signal
.Section 0;2;3;4, ; New section
A typical signal with AWS, TPWS and TPWS+, is declared as follows (the OSS+ beacon spacing of 25.97 metres, would give around a 96 km/h permissible speed, while the OSS beacon spacing of 15.15 metres, would give around a 56 km/h permissible speed):
444.03, .Beacon 44002;0;1;64250, ; TPWS OSS+ arming loop
470.00, .Beacon 44002;0;1;65250, ; TPWS OSS+ trigger loop
1004.85, .Beacon 44002;0;1;64250, ; TPWS OSS arming loop
1020.00, .Beacon 44002;0;1;65250, ; TPWS OSS trigger loop
1036.0, .Beacon 44000;-1;;180, ; AWS permanent magnet (south pole)
1037.0, .Beacon 44000;0;1;360, ; AWS electromagnet (north pole)
1219.00, .Beacon 44003;0;1;66250, ; TPWS TSS arming loop
1220.00, .Beacon 44003;0;1;65250, ; TPWS TSS trigger loop
.SigF 4;1;-2.1;5.85, ; Signal
.Section 0;2;3;4, ; New section
Note that in these examples, the TPWS induction loops, AWS magnets, and signal command, are placed
before the
.Section command for the upcoming signal.
Beacon 44004:
This beacon represents a permanently energised TPWS Overspeed Sensor induction loop, not associated with a signal, but rather, for
example, a permissible speed indicator board.
This beacon is essentially identical to
.Beacon 44002, as detailed above, except that
.Beacon 44004 will always arm the relevant TPWS OSS timer, regardless of signal aspects. As such, you can omit the
Section parameter:
1004.85, .Beacon 44004;0;;64250, ; TPWS OSS arming loop
1020.00, .Beacon 44004;0;;65250, ; TPWS OSS trigger loop
Note: the
BeaconStructureIndex value will depend upon what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage for more information.
The same notes with regard to the OSS induction loop arming and trigger frequencies, apply to this beacon as well.
For advanced developers - interleaving and nesting TPWS induction loops:
As with the real TPWS, the UkTrainSys plugin allows you to nest or interleave TPWS induction loops. This is done, for example, when an OSS associated with a signal, is located in the same place as an OSS associated with an upcoming permanent speed restriction. It can even allow TPWS to be prototypically simulated on a bi-directionally signalled line (more for future use).
OSS:
The UkTrainSys plugin identifies TPWS induction loops by the beacon type, but also by the frequency being emitted from the beacon, specified via the optional
Data parameter. UkTrainSys actually simulates two train-borne timers (Timer A and Timer B), and each is independent of the other, and both can be operative simulataneously. Each timer is started or triggered, by a different arming and trigger frequency pair. For example:
OSS Timer A, is armed and triggered by the following
frequencies:
1004.85, .Beacon 44002;0;1;64250, ; TPWS OSS arming loop (Timer A)
1020.00, .Beacon 44002;0;1;65250, ; TPWS OSS trigger loop (Timer A)
OSS Timer B, is armed and triggered by the following different
frequencies:
1004.85, .Beacon 44002;0;1;64750, ; TPWS OSS arming loop (Timer B)
1020.00, .Beacon 44002;0;1;65750, ; TPWS OSS trigger loop (Timer B)
Note that the trigger frequency intended for Timer B, will not be recognised as a trigger for Timer A, or vice-versa.
What this arrangement means, is that two OSS installations can co-exist in the same location, and not intefere with each other. For example, imagine that a signal has an OSS associated with it (OSS A), and this has a set speed of 56 km/h. Now imagine, that there is a permanent speed restriction just beyond this signal, and this also has an OSS associated with it (OSS B), with a set speed of 96.56 km/h. In this scenario, safety requirements necessitate both of these OSS installations co-existing in the same place. To accomodate this scenario, the TPWS OSS induction loops (four in total), can be
interleaved:
1004.85, .Beacon 44002;0;1;64250, ; TPWS OSS A arming loop
1010.88, .Beacon 44004;0;;64750, ; TPWS OSS B arming loop
1020.00, .Beacon 44002;0;1;65250, ; TPWS OSS A trigger loop
1037.00, .Beacon 44004;0;;65750, ; TPWS OSS B trigger loop
In the above example, OSS B is permanently energised (as
.Beacon 44004 commands are used). Whenever a train is travelling above 96.56 km/h while passing through OSS B, the UkTrainSys plugin's Timer B will recognise the OSS B arming frequency, and then the OSS B trigger frequency, and respond accordingly. If the signal associated with OSS A is showing a proceed aspect, then OSS A is not energised, and is never detected.
If however, the signal associated with OSS A,
is showing a red aspect, then OSS A is energised
as well. As you can imagine, if there were only one timer, and one pair of frequencies, then this would complicate things somewhat, and the spacing between the induction loops would be detected incorrectly. However, as each OSS induction loop emits it's own unique frequency, the UkTrainSys plugin will recognise only the OSS A arming and trigger frequencies as relating to Timer A, and only the OSS B frequencies as relating to Timer B. One does not affect the other.
The TPWS OSS induction loops can also be
nested. In the following example, imagine that the permanent speed restriction just beyond this signal, is set at a higher speed, and that it's associated OSS (OSS B), has a set speed of 120.7 km/h:
0916.30, .Beacon 44004;0;;64250, ; TPWS OSS A arming loop
1004.85, .Beacon 44002;0;1;64750, ; TPWS OSS B arming loop
1020.00, .Beacon 44002;0;1;65750, ; TPWS OSS B trigger loop
1037.00, .Beacon 44004;0;;65250, ; TPWS OSS A trigger loop
Note how in this example, one OSS is contained within the other (nested). As with the first example, each OSS induction loop emits it's own unique frequency, so the UkTrainSys plugin will recognise only the OSS A arming and trigger frequencies as relating to Timer A, and only the OSS B frequencies as relating to Timer B. One does not affect the other
TSS:
Lastly, the Trainstop Sensor System (TSS) TSS induction loops, are also identified by two frequency pairs, one pair associated with Detection A, and the other, with Detection B. One does not affect the other.
TSS Detection A, is armed and triggered by the following
frequencies:
1004.85, .Beacon 44003;0;1;66250, ; TPWS TSS arming loop (Detection A)
1020.00, .Beacon 44003;0;1;65250, ; TPWS TSS trigger loop (Detection A)
TSS Detection B, is armed and triggered by the following different
frequencies:
1004.85, .Beacon 44003;0;1;66750, ; TPWS TSS arming loop (Detection B)
1020.00, .Beacon 44003;0;1;65750, ; TPWS TSS trigger loop (Detection B)
Beacon types and legacy behaviour
The UkTrainSys plugin is also backwards compatible with beacon commands intended for use with Simon Gathercole's previous generation of C++ Windows-only plugins for BVE 4. Developers creating new routes for openBVE are encouraged to use the new functionality and behaviour previously mentioned, rather than using the old, legacy behaviour, which is not as realistic or flexible.
Beacon types and the Automatic Power Control system (legacy behaviour)
Beacon 20 (legacy behaviour - deprecated):
The UkTrainSys plugin supports a legacy behaviour for this beacon. You can use a single
.Beacon 20 command to communicate both the location of the first set of APC magnets, as well as the distance to the second set of APC magnets. This does not, however, allow for the actual neutral section to be simulated, or for driving backwards through a neutral section with the Automatic Power Control system still working.
For this, you need to use the new behaviour, which was described earlier on.
To use only the simplified legacy behaviour, take the following example:
If relying upon the legacy behaviour, this
.Beacon 20 command should be located where the APC magnets are required, before the neutral section
only. The
Data value of
46 tells the UkTrainSys plugin the distance (in metres) to the second pair of APC magnets, and when the train reaches the correct location, the circuit breaker will re-close.
Note: the
BeaconStructureIndex value will depend upon what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage for more information.
Beacon types and the Automatic Warning System (legacy behaviour)
The UkTrainSys plugin also supports the old AWS behaviour modelled in Simon Gathercole's range of BVE4 plugins, although
this legacy behaviour is less flexible and not as realistic, and it's use is not encouraged in new routes designed for openBVE.
Beacon 44000 (legacy behaviour - deprecated):
This beacon represents an AWS magnet associated with a signal. When the section referenced by the
Section parameter of a
.Beacon 44000 command has an aspect of 0 (i.e. the section is occupied by a train), passing over this beacon will trigger an
AWS warning within the cab. Use the beacon as follows:
The
Section parameter of
1, references the next section ahead, and if section
1 is occupied, an AWS warning is triggered.
Note: the
BeaconStructureIndex value will depend upon
what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage
for more information.
Beacon 44001 (legacy behaviour - deprecated):
This beacon represents a permanently energised AWS magnet not associated with a signal, but rather, for example, a permissible speed
advanced warning indicator board. Use the beacon as follows:
No section parameter is required here, as
.Beacon 44001 will always trigger an AWS warning, regardless.
Note: the
BeaconStructureIndex value will depend upon
what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage
for more information.
Beacon types and the Train Protection and Warning System (legacy behaviour)
The UkTrainSys plugin also supports the old TPWS behaviour modelled in Simon Gathercole's range of BVE4 plugins, although
this legacy behaviour is less flexible and not as realistic, and it's use is not encouraged in new routes designed for openBVE.
Beacon 44002 (legacy behaviour - deprecated):
In the case of standard TPWS, this beacon should be located as the final loop amongst the set of two OSS induction loops. In the case of TPWS+ (Plus), this beacon should be located as the last of the first pair of OSS induction loops,
and the last of the second pair of OSS induction loops. When the section referenced by the
Section parameter of this
.Beacon 44002 command has an aspect of 0 (i.e. the section is occupied by a train), passing over this beacon will trigger a TPWS OSS Brake Demand if the train is travelling above the permitted speed when passing over the beacon. Use the beacon as follows:
The
Section parameter of
1, references the next section ahead, and if section
1 is occupied, passing over this beacon will trigger a TPWS OSS Brake Demand if the train is
travelling above the permitted speed when passing over the beacon.
The
Data parameter of
56 defines the permitted speed in (kilometres per hour) when passing over this TPWS Overspeed Sensor, when the section referenced by the
Section parameter has an aspect of 0.
If a TPWS+ (Plus) installation is being simulated, then the first occurance of the
.Beacon 44002 command should have a higher speed than the second
.Beacon 44002 command.
Note: the
BeaconStructureIndex value will depend upon
what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage
for more information.
Beacon 44003 (legacy behaviour - deprecated):
This beacon represents a TPWS Train Stop Sensor induction loop, associated with a signal. When the section referenced by the
Section parameter of a
.Beacon 44003 command has an aspect of 0 (i.e. the section is occupied by a train), passing
over this beacon will trigger a TPWS TSS Brake Demand. Use the beacon as follows:
The
Section parameter of
1, references the next section ahead, and if section
1 is occupied, passing over this beacon will trigger a TPWS TSS Brake Demand.
Note: the
BeaconStructureIndex value will depend upon what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage for more information.
Beacon 44004 (legacy behaviour - deprecated):
For legacy behaviour, you can use this beacon as follows:
No section parameter is required here, as
.Beacon 44004 will always trigger a TPWS OSS Brake Demand if the train is
travelling above the permitted speed when passing over the beacon.
The
Data parameter of
56 defines the permitted speed (in kilometres per hour) when passing over this TPWS Overspeed Sensor.
Note: the
BeaconStructureIndex value will depend upon
what objects you have loaded within your route file; please see the
Developing for openBVE section of the official openBVE homepage
for more information.