My openBVE videos and other comments from users and myself can also be found via my YouTube channel.
Blog and Progress Updates
26th November 2010
UkTrainSys plugin update; enhanced simulation of neutral sections and Automatic Power Control, neutral section test route released, and new screenshots showing improved Brecknell Willis Highspeed pantograph models and new sunset backdropsPosted by Anthony Bowden on 26th November 2010 at 9:25 pm
Firstly, I just wanted to say thank you for the positive reception with which the UkTrainSys cross-platform .NET plugin has been received; this was very nice to see! Based on feedback, I’ve now updated the UkTrainSys plugin, so that the AI driver will operate the Driver Reminder Appliance en-route. I’ve also implemented an enhanced neutral section and Automatic Power Control simulation, but first, a little background information might be in order…
Neutral section (phase break) installations
For those who don’t know, a neutral section (or phase break), isolates different phases of the power supply being fed to the overhead electrification system from each other. This is accomplished by inserting a short length of insulated material into the contact wire, which the pantograph head can still slide across at speed. In the UK, I gather these insulated sections are typically comprised of glass-fibre rods with ceramic collars threaded on to them, with the total length of the neutral section itself, being only around 4 metres.
At either side of the neutral section, are a pair of track mounted magnets, called APC (Automatic Power Control) magnets. Whenever an APC receiver on an electric train detects these magnets, the APC system flips the state of the air-blast/vacuum circuit breaker (ACB/VCB) between the pantograph and the on-train traction equipment, interrupting or connecting the supply from the pantograph and overhead line.
Thus, when a train approaches the first pair of magnets prior to a neutral section, the ACB/VCB is commanded open, such that there is no power being drawn from the overhead line when passing through the neutral section (this prevents the pantograph from drawing an arc and accidentally connecting one of the power supply phases to earth – the neutral section cantilever/support tubes are earthed so that the two separated phases aren’t connected in the event of an arc). When the train passes the second pair of APC magnets after the neutral section, the ACB/VCB is commanded closed again, and power from the overhead line can be taken.
See the illustration to the left, for an overview of the installation. The yellow arrow indicates the direction of travel; the red line indicates which parts of the contact wire are still live, even if the Automatic Power Control system has opened the train’s air-blast/vacuum circuit breaker, and finally, the blue line shows the location of the neutral section itself.
Updated UkTrainSys cross-platform .NET plugin (v0.3.1.3), with enhanced neutral section and APC simulation
Anyway, an updated version of the UkTrainSys plugin is now available together with the class 323’s 3D cab (version 0.3.1.3 – downloads can be found further down), and I’ve made some improvements to the simulation of electric trains. Firstly, I’ve modified the pantograph behaviour – when the pantograph is rising or lowering, pressing the Up/Reset or Down button has no effect until either operation is completed. Pressing the Up/Reset button when the pantograph is already raised, will just re-close the air-blast/vacuum circuit breaker (ACB/VCB) if it’s open.
Secondly, and more importantly, I’ve significantly improved the simulation of neutral sections, and Automatic Power Control. Now, the APC magnets and the actual neutral section itself can be declared separately. This means that every time the correctly defined APC magnet beacon is passed, it will flip the current state of the train’s ACB/VCB. This however, does not affect the actual availability of line voltage from the contact wire.
What this means, is that if the ACB/VCB is tripped open by an APC magnet, but your train stalls because you weren’t travelling fast enough, you can now manually re-close the ACB/VCB by pressing the pantograph up/reset button. If the train’s pantograph is not within the separately defined 4 metre long neutral section, you can take power from the overhead supply once again, and move the train backwards or forwards as appropriate, so you can try to build up enough speed in order to coast through the neutral section without stalling, this time. If the train’s pantograph does stop within the neutral section, then line voltage is not available, even if you try to re-close the ACB/VCB. In this case, you have to hope that your train is on a gradient, such that if the brakes are released, the train will roll out of the neutral section due to gravity. If this isn’t possible, then you have some explaining to do!
There is a more interesting aspect to this, though – with UkTrainSys, you can now drive backwards through a neutral section, not just forwards, and still have the full simulation experience. On a unit like the 323, (I think) the APC receiver is located on the bogie beneath the pantograph, on the second coach. The beacon receiver on an openBVE train is located at the front of the train, however – where the driver is (thereabouts). If travelling forwards, then when the front of the train passes an APC magnet beacon, this triggers a point-based event, and a check can then be performed, which will only carry out the ACB/VCB operation when the train is so many metres beyond the beacon; i.e the distance between the front of the train, and the location of where the APC receiver is supposed to be. But what happens if the train is travelling backwards? The location where the APC receiver is supposed to be, will pass the APC beacon before what is now the rear of the train (where the driver and openBVE’s beacon receiver are located), will pass the beacon, and hence trigger a beacon related event. This obviously won’t work properly, as the action triggered by the beacon, won’t happen until it’s beneath the driver’s position, which is too late when travelling backwards.
So, the UkTrainSys plugin now includes what I’m calling the “Offset Beacon Receiver Manager” (OBRM). Whenever the UkTrainSys plugin passes an APC magnet beacon while travelling forwards, the plugin stores information about the beacon in an array. The stored information includes the beacon type, it’s location, it’s optional data, and an offset distance which equates to the distance between the front of the train, and the location of where the APC receiver is supposed to be. The OBRM continually checks whether the train is currently travelling forwards or backwards, and whether the APC receiver location has passed the actual beacon location, taking direction of travel into account. When the trigger point occurs, the OBRM issues a command to the APC system, rather than doing this via the SetBeacon() method. The only other thing to mention, is that jumping to a station clears the encountered beacon history, so you actually have to drive forwards over a beacon for it to be stored by the OBRM.
This means that you can drive an EMU like the 323 through a neutral section backwards, but it also means that a Driving Van Trailer (DVT) with an electric loco pushing a rake of coaches from behind, can respond to the APC magnets at the correct time and location, whether travelling forwards or backwards, too.
Short neutral section test route, for use with UkTrainSys and the class 323 with 3D cab
I’ve prepared a short test route so that you can try this new feature. The route includes two neutral sections; the first on level track, and the second on an incline. Using the class 323 with the latest version of the 3D cab update and UkTrainSys plugin, you can drive through the neutral sections and play with the new behaviour.
On the first run, just pass through a neutral section as normal – it should seem pretty much identical to the neutral section experience in Network West Midlands, using Simon Gathercole’s BVE 4 UKMUt plugin.
On the second run, you can do things differently though – approach a neutral section slowly, and let your pantograph (where the APC receiver is located) pass the first pair of APC magnets, such that the VCB is tripped open, and then apply the brakes and come to a halt. You’ll note that the Line Volts indicator extinguishes, the VCB indicator light illuminates, and that you can’t take traction power – your train appears stuck. However, when the 323 has stopped, you can now reset the VCB by placing the reverser to Neutral and pressing the ‘2’ key – you should hear the VCB closing with a thud. Provided your pantograph is in contact with a live section of overhead line, the Line Volts indicator will illuminate again, and the VCB indicator will extinguish. Now you can take traction power. But what happens if your train is so close to the dead section of overhead line, that you can’t accelerate enough to coast through the neutral section, without stalling? You have to go to the external view by pressing ‘F2’, so you can see what side of the neutral section your pantograph is on, and choose whether to move the train forwards or backwards, such that you can take a “run up” at the neutral section, next time.
If you do stop with your pantograph in contact with the neutral section itself, then there is no line voltage, and resetting the VCB or lowering and raising the pantograph won’t change this. If you are on level track, your train is stuck there (you can cheat, and jump to another station, though). If however, you are on a gradient (the second neutral section is on an incline), then you can move the reverser to Neutral, and move the power handle to Off, and then release the brakes. Your train will now begin to roll backwards due to gravity (in reality, you would need permission from the signaller to do this). When your pantograph makes contact with a live section of overhead line again, the Line Volts indicator will light up, and you can take traction power again. If you continue rolling backwards, you’ll pass the APC magnet prior to the neutral section – this will trip open your VCB, despite heading away from the neutral section, and you’ll have to apply the brakes, stop the train, move the reverser to Neutral, and press the ‘2’ key to reset the VCB. Once done, you can take power, and go back as far enough as is required, to build enough speed in the forward direction to successfully coast through the neutral section.
Screenshots showing new sunset backdrops, and improved Brecknell Willis Highspeed pantograph models
Finally, I’ve been busy taking photos of sunsets again this week, and I just wanted to post a few more screenshots of the latest enhancement to the Cross-City South v2.0 and Watford Junction to Rugby routes. I’ve also, finally, got around to improving the Brecknell Willis Highspeed pantograph model, which now includes a full 3D pantograph head, with textures used throughout:
I hope you like the latest developments. 🙂
20th November 2010
New cross-platform .NET plugin for UK trains released, class 323 3D cab and Cross-City South v1.31.09 update, openBVE v1.2.9 development branch, .NET plugins and AI supportPosted by Anthony Bowden on 20th November 2010 at 7:30 am
New cross-platform .NET plugin for UK trains (EMUs currently), 323 3D cab / X-City South v1.31.09 updates, and openBVE v1.2.9 AI support
After the latest development branch of openBVE (v1.2.9 series) was released last month, I started work on a new open source, cross-platform plugin written in C#, which I wanted to be a suitable alternative to the plugin currently used by the class 323 EMU. Simon Gathercole’s UKMUt.dll has served me well since BVE Trainsim 4 was released, but after the latest openBVE developments, I knew the time had come to create a new plugin which could be developed to take advantage of the new possibilities which openBVE now provides. I also wanted to create a plugin which could be updated as openBVE develops, either by myself, or with help from other programmers and developers, so that the community doesn’t need to experience plugin-related problems for too long.
This new plugin is called UkTrainSys (short for UK Train System of course); it is modular in design, and aims to simulate a variety of systems that trains which run on the UK’s rail network may be equipped with. Initially, I’m working to recreate as much of the functionality found in Simon Gathercole’s range of BVE 4 plugins as necessary, although some new features are included as well. So far, the plugin features the following:
- Automatic Warning System (AWS);
- Train Protection and Warning System (TPWS);
- Driver Reminder Appliance (DRA);
- Vigilance Device;
- Traction and brake interlocks;
- Battery which can be discharged, recharged and overloaded;
- Overhead supply;
- Pantograph and vacuum circuit breaker;
- Automatic Power Control;
- Power supply and electrical system circuit breakers (more for future use);
- In-cab blower;
- Head and tail lights;
- AI guard for station stop monitoring and buzzer codes;
- AI Support which assists openBVE’s AI human driver in handling systems simulated by the plugin automatically
(including support for visible in-cab driver’s hands and arms).
Note: Wipers, windscreen rain effects and diesel engine simulation are yet to be started. I’m also planning for various other systems to be inlcuded in future, such as TPWS+ (TPWS Plus), RETB, ERTMS, random failures, and a tap changer.
Users of trains which include plugins developed for BVE 4, will likely know that when openBVE’s AI human driver is enabled, the AI driver may not always be able to operate a plugin enabled train correctly, simply because openBVE has no way of knowing what systems are simulated by a plugin, and even if openBVE did know what systems were simulated, it still wouldn’t know what to do with them. Hence, the new UkTrainSys plugin uses openBVE v1.2.9’s AI Support feature, which lets the plugin assist openBVE’s AI human driver with operating the systems which are simulated by the plugin.
When you start a route, and enable openBVE’s AI human driver by pressing Ctrl+A, while using the latest release of the class 323’s 3D cab in combination with the UkTrainSys plugin (see below for the download), you will see the AI driver’s arms and hands reach out for the controls, and interact with them whenever necessary. The AI human driver will run through the startup and self-test procedure for you, pressing the AWS reset button, raising the pantograph if required, and setting the taillights and headlights. The plugin takes the time-of-day into account, so the correct headlight setting is chosen based upon the in-game time (and updated as the day goes on). The AI driver will deactivate the DRA before departure, respond to the guard’s buzzer signal with a buzzer response, cancel AWS warnings as they occur, respond to TPWS brake demands, re-raise the pantograph if it is lowered mid-journey, and so-on. The UkTrainSys plugin’s AI Support will also respond to a new beacon type, which instructs the AI driver to blow the horn at certain locations.
The UkTrainSys plugin also has it’s own project homepage, where just the plugin, source code, current and planned feature list, changelog and documentation can be found. Train developers with an interest is using the UkTrainSys plugin, now or in future, may wish to visit the following page and read the documentation.
Note: If you have downloaded the updated class 323’s 3D cab with the pre-configured UkTrainSys plugin, remember that you should not overwrite the UkTrainSys.cfg file included with the class 323 3D cab update!
UK Train System (UkTrainSys)
Cross-platform .NET Plugin
[Alpha release now available]
I’ve also been working on some new backdrops for both Cross-City South v2.0 and Watford Junction to Rugby. I was happy with the daytime backdrops which you’ve all seen already, but the sky portions of the last set of sunset and sunrise backdrops were entirely hand-made (replacing low resolution BVE4-era images), and I wanted to replace these with photographic textures of a similar quality to the daytime backdrops instead. Fortunately, there as been some favourable weather during the past few days, so I was able to take some nice photographs. Here are the new sunrise and sunset scenes, shown with the 323’s latest 3D cab update, and the openBVE v1.2.9 / UkTrainSys plugin enabled AI support feature in use:
Recent openBVE v1.2.9 development branch updates
Towards the beginning of the November, openBVE v184.108.40.206 was released (now up to v220.127.116.11), and Michelle introduced a new set of experimental preprocessing directives. These take the form of $if(), $else() and $endif(), and obviously, these allow for conditional parsing of blocks of code within a route file. This can be an alternative means of achieving what can be accomplished with the $Include directive, which is handy when only a small block of code needs to be conditional.
Personally, I’m finding this very handy for such features as temporary speed restrictions (TSRs). In this scenario, I can randomly introduce TSRs at different locations, so routes can be rather more fun to drive. At the start of the file, we can declare a variable $Sub(0), which has a random number assigned from within a certain range, and then use the value stored in $Sub(0) as a condition which is used by $if() directives. If the value held by $Sub(0) is zero, then the code within any $if() block which depends upon this variable is not used, but if the value is greater than zero, then it is. By using the $else() directive, we can show something else if the TSR is not to be included, such as discarded sections of old rail, left there by the track workers after they made their repairs and removed the TSR. Spate indicators could be handled in a similar way.
$Sub(100) = $Rnd(0;1)
; Enclose the route commands related to a TSR within $if()/$else()/$endif() directives…
3000, .Beacon 44001;0, ; portable AWS magnet
3183, .Freeobj 0;0, ; 20 mph TSR advanced warning board
4200, .Freeobj 0;1, .Limit 33;0, ; commencement of 20 mph TSR
4305, .Freeobj 0;3;5, ; no TSR so show discarded old rails instead
4400, .Freeobj 0;2, .Limit 97;0, ; termination of TSR
It’s also possible to use these new preprocessing directives elsewhere in the route file. For example, a different object could be assigned to a free object index, depending upon a condition being true. You can also nest these new preprocessing directives; i.e. place $if/$else()/$endif() selection statements within other selection statements, for example:
4200, .Freeobj 0;1, .Limit 33;0, ; commencement of 20 mph TSR
4205, .Freeobj 0;4;-4, ; track workers shown based upon another $Sub variable but only if the TSR is shown
4305, .Freeobj 0;3;5, ; no TSR so show discarded old rails instead
Support for these new preprocessor directives is still experimental, and not guaranteed to be included in the next stable release of openBVE, however I’ve not encountered a problem with the feature thus far, at least with regard to the things I’d like to use the feature for, and it’s really very easy to use. Some more testing would be beneficial, but I hope the feature stays, and I’ll certainly be making use of it if it does.
Other news – Chashinai .NET plugin updated with AI support, new Network West Midlands video, and FEVF railway updates
In case you weren’t aware, the new cross-platform .NET plugin which is used by the trains which run on the Chashinai Railway, was updated earlier this month to include AI support, which is a lot of fun, especially with the Chashinai 9000 series train complete with ATS-Sn, ATS-P, ATC and TASC. As with the new UkTrainSys plugin, the updated Chashinai Railway plugin’s AI support assists openBVE’s AI human driver in operating the safety systems, so you can enable the AI human driver and even watch the startup procedures handled by the AI driver. The plugin source code is available as well, of course.
Chashinai Railway Takahagi Line (9000 series train, ATS-P, AI driver enabled)
I also wanted to quickly mention that Steve Green has posted a short YouTube video of the upcoming Network West Midlands 2010 update, demonstrating animated level crossing barriers interlocked with the signalling, together with updated objects such as a new AWS magnet, which I thought looked really good: