Started by Octavius, October 26, 2015, 09:37:24 PM
0 Members and 1 Guest are viewing this topic.
Quote from: Spenk009 on February 07, 2016, 06:06:54 PMI speak German, I could assist here. What sections were you thinking of?
Quote from: jamespetts on February 21, 2016, 02:16:05 PMAs to directional reservations, do see my reply in the other post to Vladki regarding these in the earlier signalling systems. Do I understand correctly that your issue is regarding the use of bidirectional signals? The system was designed thus to be relatively simple: anything that uncouples bidirectional signals with bidirectional track would take a huge amount of time and effort that could better be spent on other things. The basic principle is that a directional reservation is made from the first bidirectional signal on a train's route to the first unidirectional signal after the first bidirectional signal on that route. That should be simple enough to remember. The reason to use bidirectional signals at the North station is to start the directional reservation for trains heading towards the single track section: the deadlocks occur when trains enter that single track section without having made a directional reservation because they have yet to encounter a bidirectional signal.
QuoteIt is important for me to know whether any given reported problem is common to all implementations, including British implementations, or whether any such problem is only a problem in so far as implementing other signalling systems is concerned, as I need to know whether I am likely to need to change the existing system or add further options, leaving the existing system in tact.
QuoteThis may have been different in the days of time interval signalling, but I have not had any success in finding detailed information about how stations, in particular, were signalled, save that smaller stations often had a single "T" shaped signal (similar to the Swedish practice previously discussed) for all trains departing from that station. I cannot find any information about what signalling was used for arriving trains.
QuoteI am not entirely sure that I understand the reference to time interval and token block not making much sense in the context of line block signalling and signalling at stations. As stated on the public forum, time interval signalling in the context of junctions (including those at stations) is not currently working and awaiting being fixed: I am in the process of making this work as I have discovered it worked in reality (but have been distracted by pakset works since December and have not had the chance to finish this). As to token block, this should work correctly for stations if it be used correctly (the token block signals as the starter signals, absolute block signals (including choose signals if appropriate) as the home and distant signals). - and -I see that the discussion has moved beyond track circuit block to token block systems. Is the problem that the current token block system, as implemented, does not properly represent UK signalling (or otherwise causes significant game-play issues when so used), or is the issue that it cannot properly be adapted to represent Swedish/Czeslovakian signalling systems? I should note that token block signals should clear the reservation of a platform for which they are the starting signal once a train has passed it (provided that the signal is actually on a platform tile, not beyond the station). Can you confirm that this works? If this has ceased to work, I should be grateful if you could start a new thread with a bug report, as I am afraid that I shall not remember to look back at this thread to remind myself of all the bugs that need fixing when I return to coding signalling. The idea is that the token block signals are used as the starter signals on platforms, with normal (uindirectional) distant and stop signals on the single line section itself.
/ / _____________________________/ /West ______/_____________________/_\______/ East _____/_____________________/___\________________________ [station house]
Quote from: jamespetts on June 17, 2016, 11:56:04 PMAs to the diagram drawn by Ves above, does anyone have any idea as to precisely how such a layout might have been signalled in the days of time interval signalling? I am trying to avoid if possible having to create any significant new abstractions or mechanisms, which would involve a very significant amount of work and may possibly have adverse performance implications.
QuoteFinally for now, I have implemented an earlier suggestion on this thread of having a signal's working method visible in the tooltip and the signal's information window, and also having a train's current working method visible in the convoy detail window, which I hope is helpful.
Quote from: Ves on June 18, 2016, 08:47:57 AMDon't worry, take the time that is needed! :-)I don't have any concrete Swedish or English example at the moment, but I would assume that, whatever the signal system is used, the train would be held back at the platform/siding until the entire trip to next station/siding can be booked. In other words a combination of absolute block and whatever working method on the line it self.
QuoteThat is really great news! This will help troubleshooting and add some clearance as to what is happening on the tracks I think!
Quote from: Vladki on June 18, 2016, 01:58:17 PMI'm trying to set up a testing server (thank to Isaac), where we could test various layouts. Do you have any sugesstions or hints how to compile (without SDL) or just any useful tips for running a experimental game server?
QuoteAs I said earlier, Czech railways do not use token block too much. The transition went from time-interval to absolute block. The only reason to use token block is to save on infrastructure and operation costs (signals, signalmen). But you lose on throughput, so now something like token-block is used only on very low traffic branches.
QuoteFor implementing telegraph + time interval, I think that the directional reservation could be used for that - reserve as far as next junction, clear right after the train. Similar method cloud be used to enable sigle track operation with absolute block.
QuoteOr you could reconsider my earlier sugesstion on changing how longblock signals work: Do not make them an alias for token block, but make them as explicit markers for directional reservations in all working methods. (Or at least time interval, absolute, circuit block, cab signalling, movng block). E.g. for absolute block - normal signal would make "red" reservation up to next signal, long singal would make "blue" reservation up to the next long singal (in addition to normal "red" reservation to next signal). Choose signals pose a little problem so blue reservation could end on choose signal to make it simpler.
QuoteJunctions out of station: Most of railway junctions (I know about) that are not within a station, are usually not far from the station (a few km at most) - and were for long time operated in absolute block mode (even on single tracks). To avoid deadlock, the direction of traffic had to be agreed between stations on both sides of junction (just as if there was no junction at all). It certainly needed a smart signalmen (and timetable) to avoid deadlocks.
QuoteCombination of token-block with other methods. In real life, the drivers and signalmen know whether a token is needed for particular stretch of track or not. But we do not have such information in simutrans. Neither the token itself is simulated (if I recall correctly what James said). I have played a bit with token block and find it quite unpractical and non-intuitive how to use at all. Consider a simple line with passing loops (two tracks with one-way sings on one side and token-block signal on the other. Trains arrive from both sides, stop, and wait forever because the track behind is still reserved for them. I can fix that by putting an entry signal in front of the station, but then next train can follow in the same direction, while the passing loop is occupied. Deadlock again. Unfortunately I have no good idea how to solve that.
Quote from: jamespetts on June 18, 2016, 03:38:13 PMI am not sure that I fully understand the question - are you having any trouble compiling? If you are, it might be better to start a new thread about it.
QuoteIn reality, token block was used as a safety system: to ensure that no two trains were ever simultaneously permitted to be on a stretch of single track at the same time, all trains entering the section needed to have a token, and the machines at either end of the section would only release one token at a time. This was, in effect, a more efficient and semi-automatic implementation of the earlier staff and ticket system.
QuoteAnother problem is, as stated in the previous post, to give players an incentive to upgrade to token block when it becomes available. We cannot have a possibility of a head-on collision as an incentive, as that would result in a deadlock which could cause problems for an unattended player in an online game, and in any event, Simutrans has generally preferred to avoid simulating disasters of any sort.
QuoteDo you have any idea how time interval or absolute block actually worked in practice on single track lines in Czeslovakia (or whatever it was called at the relevant time)? In particular, do you know where the signals would be placed, and where the trains would have to be relative to the signals for a section to clear? Would only one train be allowed in the section at once, or would multiple trains (in the same direction, separated by time intervals) be permitted?
QuoteA problem with the latter system would be that it would actually be preferable for the player than token block signalling, so there would be no incentive to upgrade.
QuoteThis raises quite a number of complexities. Firstly, reserving to "the next junction" is ambiguous. The code needs to determine at precisely what tile that it stops reserving further.
QuoteIs the idea here to have a signal that can be used to instigate a directional reservation that only affects trains travelling in one direction?
QuoteThere are plenty of junctions in the UK that are some distance from stations - at least, far enough that they had to have their own signalbox in the days of mechanical/absolute block signalling; they would typically have the sort double track section described in my previous post.
QuoteI have just fixed a bug with token block reservation that caused unreservation incorrectly. See this saved game file for a demonstration of how to set up a single track railway with a passing loop using token block signalling. Does this make things any clearer?
QuoteEdit: I have investigated the way in which junctions were designed from stations on double track lines with a branching single track line. From what I have found, these, too, like the junctions away from stations, had a length of double track line immediately beyond the station before reverting to single track. I suggest that the token block signal should go on this stretch of double track line.Edit 2: I have rigged up a test and demonstration track for a mix of single and double track running using a mix of absolute and token block signalling: download it here. This appears to work as intended. Does this answer any questions on how to signal this sort of arrangement?
Quote from: Vladki on June 18, 2016, 09:02:49 PMRight now I have to sort out cross compiling (my PC is 32-bit linux, and server is 64-bit linux), but that is off-topic here. I'll google more...
QuoteSure it was a safety system, but it is also a low-cost solution, with lower throughput, if compared to absolute block signalling.Token block machine is the logical upgrade to one-staff method. It allows you to run more trains in the same direction. The logical upgrade from time-interval is absolute block. If you do not consider security, there's little to no reason to upgrade from time-interval to token block. (maybe to cut costs, if traffic has declined).
QuoteI can describe quite exactly absolute block with telephone communication, as it is still in use. I suppose that telegraph communication was almost the same, it just took more time to negotiate. Let's have a track with stations A,B and signalbox X half-way between them. The communication is something like this. A->B: Train 1 has arrived to A. I have a train 2 for B, do you accept it? (X is listening to this)B->A: Yes I accept (switching direction)X->A: Acknowlege... X->A: Train 2 has passed X A->X: AckThen the communication continues between AXB just as at dual track absolute block. Station A can dispatch next train after it passes X, until station B asks to change directions. Then they have to wait until the track is clear and can switch directions. German and Swedish description (if it can help you): https://de.wikipedia.org/wiki/Zugmeldebetrieb https://sv.wikipedia.org/wiki/T%C3%A5ganm%C3%A4lanSignal placement: on approach to a station there is distant signal, then entry signal, then switches and platform. At the end of platform (or beyond) is departure signal and then switches, end of shut sign, and the line. Train arrival is acknowledged when it passes the entry signal. Train cannot pass departure signal if the line is not clear (except for shunting). When the train stops at station it must fit between the departure signals in opposite directions.---Distant>---Entry>---<end-of-shunt---|switches|---<departure---|platforms|---departure>---|switches|---end-of-shunt>---<Entry---<distant---(Maybe you can assume entry=home signal, and departure=start signal, but I'm not really sure it is so.)For time interval I suppose the "direction switch" was very similar to absolute block. They had to acknowledge the arrival of the last train in sequence.Without telegraph they had to use ticket+staff system, or something similar. I found in some articles, that trains had colored flags or lights telling if there are more trains following or not. But this has the same implementation problems as ticket+staff. Also I found a note about a departure signal that was electrically controlled from the next station, and was locked at danger if train(s) was coming in opposite direction. However it was not described in much detail, so I don't know when one could clear the signal in safe manner.
QuoteSure, you could reduce the max_speed for time interval signals. But I would do the same for token block. You cannot catch a token at 100 km/h. (but you can accelerate afterwards). I know I repeat myself, but the upgrade path from time interval is to start using absolute block.
QuoteYes, that is. In real life there is distincion between stations (passing loops), and signalboxes on the line. Directional reservation is always from one station to another, while absolute reservation is only up to the next signal. So I think it would be better if player had explicit control of the endpoints of the directional (blue) reservation. Actually I do not like the way the directional reservation is implemented for circuit block, because there are places where bidirectional signals are not desirable. This would remove the automatic directional reservations completely and will put the player in full control.The czech junctions are also far enough to have their own signalbox, but it was more like the signalboxes along the line, than the signalbox at station.
QuoteI have a problem with that save - I cannot see the token block signals, but when I click at and of platforms/loop I get an info box about token signal being there. Have you made any changes to pak that are not in git yet?This example looks as useable workaround. Though I have not seen such layout in real world, I can deal with that in a game. And I have the same problem with disappeared token signals in this save. Debug output:ERROR: roadsign_t::finish_rd: roadsing: way/ground missing at 228,165 => ignore
Quote from: jamespetts on June 18, 2016, 10:22:10 PMIf you have full terminal access, you can compile on your server, can you not? That is what I do.
Quote from: Isaac.Eiland-Hall on June 18, 2016, 10:41:39 PMThe server in question is set up as a shared server, so it might not be possible right now, but I can perhaps figure out how to give permissions. Offhand, this is something I don't know how to do, but I can always google. hehNot sure if I need to grant sudo or something else...
QuoteI am having some trouble with the time interval with telegraph mode at this juncture: in particular, finding a way of making it usable for single line working whilst retaining a reason for the player to upgrade to token block working when that becomes available. The difficulty is made all the greater by a lack of material about the details of how time interval signalling actually worked when accompanied by the telegraph.
QuoteThe material that I have found so far is from rule books of the Eastern Counties Railway from 1848 and 1856, which do not go much further than stating that the signalman must send a telegraph message to the signalman at the other end of the single line section to check whether the line is clear, and, if it is, may send a train along it. I had thought that this might work in a similar way to token block, but without reserving beyond a station stop (as there would always have to be a signal at the end of the section), but this is problematic when used with double track running as it reserves rather too much rather too soon.
QuoteAs to the diagram drawn by Ves above, does anyone have any idea as to precisely how such a layout might have been signalled in the days of time interval signalling? I am trying to avoid if possible having to create any significant new abstractions or mechanisms, which would involve a very significant amount of work and may possibly have adverse performance implications.
QuoteFrom what I have read of UK practice concerning diverging single and double track other than at stations, there was generally a short stretch of double track (about a train's length) on what was otherwise the single track line just beyond the junction. If replicated in Simutrans, this would allow for a mix of token and absolute block signalling to work as currently implemented. In more modern times, this practice has largely been discontinued (and it is not necessary in the current implementation of track circuit block, cab signalling or moving block).This is why I asked for detailed examples: I do not know whether there were any junctions signalled in this way without a short stretch of double track until modern times and, if so, how they were signalled. One thing that would be very difficult to achieve in the current implementation of signalling is having a signal behave differently depending on the route beyond the signal that the train takes. This is (in simple terms) because the code iterates over the route tile by tile, and triggers the signal's behaviour when it gets to the tile with the signal on it, without yet having checked what tiles are ahead. It is also conceptually very difficult for the code to determine which tiles belong to a stretch of double track and which tiles belong to a stretch of single track.
QuoteI'm trying to set up a testing server
QuoteI have played a bit with token block and find it quite unpractical and non-intuitive how to use at all. Consider a simple line with passing loops (two tracks with one-way sings on one side and token-block signal on the other. Trains arrive from both sides, stop, and wait forever because the track behind is still reserved for them. I can fix that by putting an entry signal in front of the station, but then next train can follow in the same direction, while the passing loop is occupied. Deadlock again. Unfortunately I have no good idea how to solve that.
QuoteA->B: Train 1 has arrived to A. I have a train 2 for B, do you accept it? (X is listening to this)B->A: Yes I accept (switching direction)X->A: Acknowlege...X->A: Train 2 has passed XA->X: Ack
QuoteSignal placement: on approach to a station
QuoteWithout telegraph they had to use ticket+staff system, or something similar. I found in some articles, that trains had colored flags or lights telling if there are more trains following or not
QuoteYes, that is. In real life there is distincion between stations (passing loops), and signalboxes on the line. Directional reservation is always from one station to another, while absolute reservation is only up to the next signal. So I think it would be better if player had explicit control of the endpoints of the directional (blue) reservation. Actually I do not like the way the directional reservation is implemented for circuit block, because there are places where bidirectional signals are not desirable. This would remove the automatic directional reservations completely and will put the player in full control.
QuoteHowever, it is very difficult to have a distinction between a station area and a signalbox off a station for the reason given in the previous post.
QuoteThis is very interesting, thank you. I wonder how the directional telegraph system actually worked: did the signllers have to remember the direction (or write it on a piece of paper or something), or was there a solid state telegraph instrument showing the currently set direction (perhaps interlocked with the starting signals at the entrance to the section on either side so that neither could be pulled off unless the direction were set correctly)? Were two trains allowed in the same direction? If so, how would the signaller at the receiving end know how many trains to wait for before reversing the direction?
QuoteThe time interval signals already have a lower maximum speed than absolute block signals (135km/h rather than 160km/h), but this is unlikely to make any practical difference on steam operated single track branch lines, and so unlikely in and of itself to be an incentive to upgrade. Token block signals need not have a lower maximum speed: remember, trains need to slow down and stop momentarily just before the token signal to collect the token, so there is no further need to restrict the maximum speed beyond the token signal.
Quote from: Ves on June 19, 2016, 12:13:05 AMThe main incentive to upgrade to token block signals from time interval signals could be the cheaper labour (in game maintenance) costs. Somehow, many things where better and easier in the past but have been changed to the worse due to it being cheaper for the ones paying the bill.The choice the player make is wether to pay more for the more effective and "easy/intelligent" working method or pay less for the new and rather "square" system that removes some flexibility.Rising labour costs should take care of that.
QuoteRegarding vladkis suggestion of having directional reservations up to the last junction being difficult to implement, could maybe get solved this way: The signal will check if there are any junctions between this and the next signal on the trains route, and then if true, create a directional reservation up until the next signal. If there is no junction after the signal, it behaves as a normal time interval signal. Otherwise, since it is actually equipped with telegraph, it could direction reserve the entire route until the first one way sign or another working method signal.
QuoteI support this! Maybe not necesarily to unchain directional reservation from bidirectional signals completely, merely adding the option to create a directional reservation from a single faced signal.
QuoteOne can say that you already have created a distinction between "station area" and "line stretch", due to the different working methods. Frankly, the only working method that really works inside a station is the absolute block and also the track circuit (and cab signal. The moving block behaves as cabsignal after a choose signal). All other working methods are not really practical inside a station with more than one track and I think one should aim to keep them outside the "station area". Please read my suggestion further down with regards to a 2 block signal which could keep absolute block (or track circuit or cab signal) inside the station and let the other working methods work from outside the station.
QuoteFor Sweden, I think there was an interlocking machine inside the signalbox to choose the direction, otherwise it was done by pen and paper. No troubble with counting trains, the two stations would communicate and at all times agree on how many trains there should be on the line. Upon arrival, the recieving station would telegraph back again to the previous station and tell everything is ok. Of corse there are emergency protocolls if one station is not answering, but that is not needed in simutrans!I remember we have talked about a "spoken token block" signal, I dont know how far you are in those thoughts? If there was the possibility to remove that the train must stop next to the signal the paksetauthor could treat the working method as a set of "logics" and use it as a modern signal system. The original token block signals (the one intended to actually have a token cabinet) should then have maxspeed=0 (zero) to force the train to stop as it currently does.My impression from reading about real world signalling in general is that it rely heavily on logic (if this signal is green, then that must be red etc). In Simutrans, the working methods decides the overall logic rules and then much of it is simulated automatically behind the scene like tracks only can be reserved by one train at any time and junctions are automatically interlocked and directional reservation etc.However, the player cant really create more specific interlocking, such as a signal that only can be green if the next signal also is green. I mentioned it briefly earlier, but what about implementing the 2 block signal from Standard?It would solve, I think, many of the issues that Vladki and I are talking about. Also due to the fact that the Experimental signals are unidirectional, the "two block signal" will not be as clumpsy as it might be with Standards bidirectional signals.
QuoteCan either of you think whether there are any situations in which you would want a bidirectional signal that is not one that creates a directional reservation in the track circuit block method, or will having either bidirectional signals or "longblock" signals creating directional reservations suffice?
QuoteWhat you describe as the "2 block signal" is, I believe, the same as the pre-signal from Standard (which, of course, is not a pre-signal at all in real world terms). Does this method of signalling actually reflect any real life use case, or is it intended as a workaround for some Simutrans specific issues? I am still a little unclear on how this type of signal would help in stations.
Quote from: Vladki on June 18, 2016, 11:18:15 PMInstalling g++ and libstdc++6-dev should be enough. Thank you in advance.
Quote from: Vladki on June 19, 2016, 02:10:15 PMI think many of the issues stem from different history in our countries. It seems that Czech (or Austro-Hungarian) and Swedish practices were in fact quite similar, while UK was in a bit different situation. The most important is, that all Austro-Hungarian railways were first built as single-track. The funding and revenues were not so big as in UK. Lines were upgraded to double track, only when the traffic was too high.
QuoteBack to the idea of special signals for directional reservations: Even in circuit block, you can think of the line as being split into small blocks - signal to signal, where only one train is permitted, and longer blocks - station to station, where multiple trains in the same direction are permitted. Making these blocks explicit (e.g. by redefining the use of long-signals), could help to solve also the problem of junctions without passing loops. No need to have two levels of signalboxes, just two levels of signals: block, and long-block. Is that description clear?
Quote from: Isaac.Eiland-Hall on June 19, 2016, 02:17:04 PMg++ installed, but couldn't find libstdc++6-dev. Will one of these do? http://addled.us/libstdc.txt If so, which?
Quote from: JamespettsIn respect of the compilation problems, these mystify me: I do not understand why things are not consistent on different computers. Can you make sure that you have the latest pakset sources from the half-heights branch on Github compiled with a version of makeobj-experimental compiled from the latest sources on devel-new in Github, and that it is a totally clean installation of the pakset (i.e., all old sources deleted)?
$ git diffdiff --git a/makeobj-experimental b/makeobj-experimentalindex fdde4c9..bfa2e4b 100755Binary files a/makeobj-experimental and b/makeobj-experimental differdiff --git a/ways/signals-narrow.dat b/ways/signals-narrow.datindex 833c29d..318c2b1 100644--- a/ways/signals-narrow.dat+++ b/ways/signals-narrow.dat@@ -871,7 +871,7 @@ Cursor=images/signal-icons-ex.5.5 --------------------------------------- obj=roadsign copyright=JamesPetts-narrow-name=lq-semaphore-token-white+name=lq-semaphore-token-white-narrow waytype=narrowgauge_track cost=10000 signal_upgrade_cost=5000
QuoteI am afraid that this is unlikely to work economically, and also has no historical precedent: it does not take more people to work a time interval with telegraph system than it takes to work a token block system: it is just that the token block system is safer and more reliable. After 1889, all passenger railways in the UK were not allowed to use time interval signalling. Many had already upgraded to absolute/token block decades earlier. There really needs to be a line capacity difference.
QuoteVes: as to the spoken token block (D3 in CZ) - I think there is no need for different behavior to physical token block. I remember that at one such line, the driver had to get out of the engine, go to the station building and get the permission to continue by phone. Nowadays they can get it over radio or mobile phone, or a special radio device (RETB in UK, D4 in CZ), but that usually happens on places where those trains stop anyway. At least it would be an incentive to upgrade to proper signalling.
QuoteAs to the idea of allowing unidirectional signals to create a directional reservation, can I get an idea of which problems that this would solve if I were to implement this and which problems would therefore remain? How much more of Czech/Swedish practice could be simulated by this expedient than is currently possible?
Quote from: Octavius on June 19, 2016, 07:45:25 PMYes, and mostly a matter of Britain and areas heavily influence by that country versus continental Europe. As far as I can tell, on most of the European continent (Germany, Switzerland, Benelux, Italy) railway practices have always been more similar to Austria and Sweden than to Britain. Or maybe one should say those countries were all influenced by Germany.That's exactly the difference between automatic block signals (fully automatic, decentral, often permissive) and centrally controlled signals (human controller in a control centre, or a computer with manual override). That would be very intuitive to use for those somewhat familiar with real world signalling practices.
Quote from: Vladki on June 19, 2016, 07:48:09 PMThanks Isaac. Some libstdc++*-dev is already installed, and it seems to be sufficient. But compilation fails on missing zlib-dev (or libz-dev) and libbz2-dev.
Quote from: Isaac.Eiland-Hall on June 20, 2016, 01:43:19 AMInstalled: zlib1g-dev and libbz2-devPlease do let me know if anything else is needed; of course I'm glad to do this as soon as I see.
QuoteThe way in which signalling logic works in Simutrans is that a train will try to reserve a route ahead whenever it first moves off. Whether it succeeds in reserving that route ahead will determine whether it is allowed to move off. It will iterate through each tile on its route until its next stop, and decide whether to reserve the whole way to its next stop, part of the way, or not at all. If it reserves the whole of or part of the way, it will start moving, and note the tile at which the reservation ends as a tile at which it will have to stop. It will prepare to start braking in time for that tile. As it approaches that end tile, it will check whether it can reserve further on, and the process is repeated until it gets to its next stop. The signals along the way, as well as reservations by any other train, just influence in various ways the logic used by the train in determining where it can reserve.