当前位置:文档之家› OpenTTD火车教程

OpenTTD火车教程

OpenTTD火车教程
OpenTTD火车教程

前言

以前玩过TTD,觉得很好玩,近来发现OpenTTD,玩了一个多月的火车,颇有心得,并独创了一些设计,在此写出来,供大家开阔思路。

本人通常玩1024×1024无故障模式12格车站的地图,以采石油为主,因此后面提到的一些经验参数值,是指lev4磁悬浮(最大速度643)车头拖22节满载油罐车(总长度12格)的情况下。如果你所玩的场景与此不同,那这些参数值也会不同,需要你自己去摸索了。

基础篇

第一章信号灯

信号灯共有六种,分上下两排,其实功能是一样的,只是样式不同罢了。现从左至右依次说明

1、标准灯

方向性

当你使用标准灯在铁轨上点击时,铁轨的两边出现标准灯,再次点击则只在一边有,再次点击则跑另一边去了。如果你再仔细观察,可以看到,这个灯是有朝向的,这个朝向使得火车只能看见右边的灯(沿火车行驶方向的右边),因为只有这个灯是朝向它的,另一边的灯则是背向它。背向火车的灯,火车看不见,就只能把它当作永远的红灯处理,也就是不能通过。

利用这一点,我们就可以实现火车的单向行驶,例如下图:

如果有火车从左至右开进上面那条道,它将会遇到背向它的信号灯,于是不能通过,因此它的路由必然是下面那条道。

●区间性

通过铁轨相连的几个信号灯,围成一个区间,例如下图:

AB之间的铁轨是一个区间,CDEFG所包围的铁轨是一个区间,HIJK之间也是一个。

当一个区间里有火车时,属于该区间的标准灯变红灯,从而确保一个区间里只有一列火车,这就是标准灯的作用。例如,有车进入AB区间,并抛锚停在那里,此时A是红灯,尾随而至的下一列车,会因此停在A灯前,等待抛锚列车走出AB区间。

信号灯把铁轨分成两段,它自己也就与两段铁轨相连,也就属于两个区间,分别叫做前区间和后区间(以列车行进方向来看)。

如果你仔细观察,可以看到,当列车车头通过D灯时,会把所有前区间与D相同的灯(也就是CDE)置红,当车尾通过F灯时,把F后区间的所有灯(也就是CDE)置绿。这就是标准灯的工作方式。

总之,标准灯的作用就是确保一个区间里只有一列火车。

●停止位

标准灯还有个特性就是停止位,即列车可以在该灯前停止(红灯时)。

2、入口灯

入口灯同样具备标准灯的三个特性,但是红是绿,依赖于它的前区间的出口灯,当它前区间中有一个出口灯为绿时,它就为绿。这个规则的效果就是说,该灯的前区间是不宜停留的,如果有出路(有一个出口灯为绿),就允许列车进入该区间,并让列车赶紧从出口灯离

开此区间,否则列车就在后区间候着吧。

像前面那个图中,就可以把CDE换成入口灯,把FG换成出口灯。

3、出口灯

出口灯就是一个标准灯,只是兼具触发入口灯的功能。

4、复合灯

工具栏的提示信息说,“复合灯可以完全担当入口灯和出口灯的功能”,其实就是说,复合灯对于其前区间里的出口灯来说,它相当于入口灯,而对于它后区间里的入口灯来说,它相当于出口灯(即能触发这些入口灯)。

出口灯和入口灯,只能形成两级的控制关系,把复合灯往出口灯和入口灯中间加,就能形成多级控制关系,最终形成一种树形的铁路分支系统。最终效果就是,如果存在一条通过这个树形铁路区域的通路,就让列车通行,否则让列车在入口灯处等待。

由于后来出的高级灯已涵盖了这种树形控制功能,因此,这三种灯很少使用了,这里也不再多讲。

5、单向高级灯

这是一个工作方式不同于前几种的灯,它不是依靠静态的红绿灯来指示列车的行止,而是列车到达灯前时,在前区间里为列车寻找一条通路,如果找到,就锁定这条通路,并让列车通行。列车通过时,会逐段释放锁定的铁轨,让别的列车使用。如果找不到通路,列车就得在灯前停下来,系统每隔一段时间会为该车重新寻找通路。

从这个工作方式来看,高级灯会额外消耗系统资源(指你的电脑),当车多灯多的时候,可以看到车有时在高级灯前会突然一顿。所以能不用高级灯的地方尽量不要用。

高级灯的这种工作方式带来一个好处,即允许多列车同时进入一个区间。例如下图:

两列火车分别从自左向右行驶,上面那列到达C灯时,它锁定的铁轨是CF,下面那列到达E时锁定的是EG,于是两列车可以同时进入区间CDEFG,各行其道。这是标准灯所不能的。

单向高级灯同样具备标准灯的方向性、区间性和停止位,只不过它的区间性是指它可以

和其它灯构成区间,但已不再依据前区间是否有车来决定自己的红绿。

打开高级设置里的“显示预留的轨道”,你就可以看到列车锁定的铁轨,看着列车走几下,并留意锁定的铁轨,你就能理解这种工作方式了。

6、双向高级灯

双向高级灯在信号灯工具栏里的位置是第五个,单向高级灯才是第六个。把单向灯放前面是为了方便讲解,大家操作时要注意。

双向高级灯具有单向高级灯的功能,同时,它允许列车从其背面通过,这就意味着放置双向高级灯的铁轨不是单行道。

但是,其背面不具备停止位的,例如下图:

图中ABCDE全是双向高级灯,C灯对右边那列车来说,是背面,没有停止位,因此它只能在E灯前停下等待。当它通过E灯时,可以看到它的锁定路线是EA,而不只是EC。

另外,其背面是具有区间性的,可以和其它标准灯构成区间,只是永远是绿灯。

总之,双向高级灯的正面是单向高级灯,背面是不具备停止位的常绿灯。

第二章路点

路点的功能,大家应该很好理解,它相当于一个没有停止位的车站,即列车不能在路点前停下来,高级灯的锁定路线会穿过它。

另外,路点也不具备区间性,即它不可以与信号灯构成区间。

说到这里,大家可能还是很茫然,到底路点有什么用,或者说在什么情况下用。

路点的作用就是指示列车必须经过某地,看下图:

假设我用一个三站台的小站向外运旅客和邮件,不想混装,邮件车采用有货就装的策略,旅客车则是满载策略,投放6列旅客车和2列邮件车进行运输。这会出现一种情况,有三列旅客车占满了三个站台,但是客流量小,迟迟无法满载,阻塞了后面到来的邮件车。因此,我希望旅客车不要占满三个站台,空出一个给邮件车用。于是,就可以如图在两个站台前设置路点,让旅客车经过该路点进站满载(路点相当于车站,可以在执行计划中选择“前往”,然后点击路点,即可强制列车经过该路点),于是最左边那道就空出来给邮件车用了。

有人可能会说,这样一来,岂不是相当于分成两个站了,建两个站一样可以解决这个问题。其实是不一样的,当两列邮件车同时到达该站时,如果旅客那两站台有空,它们是可以进去的,特别的,邮件车不是2列,也是6列时,这个效果就与分站大大不同了。

也有人可能会说,如果有第三列旅客车到达,不让它进站满载,那它会停在干线上,同样会阻塞后面到来的邮件车。这就是另外的问题了,后面会给出解决方案,这里讲路点,就只拿路点来说,一步一步来。

OK,路点用的地方确实不多,就说到这吧。

第三章车库

大家不要以为车库不过是个购买火车和保养火车的地方,它的用处可大着呢。

从理论上说,车库相当于两个信号灯,中间并列无限多个停止位,这无限多个停止位,可以收容列车,这就是我们要用的地方。

再拿上章的例子来说,加个车库如图

把旅客车的执行计划改改,先进车库,再过路点,然后才进站满载,这样的话,第三列旅客车就会停在车库里等待空余站台,而不是停在干线上阻碍邮件车进站。

车库还有个用处,是帮助转弯,如果不够空间让列车急转弯,可以先用车库收容列车,再按需要的方向驶出去。当然,这样做会造成列车减速到0,但如果空间不够,那也是无可奈何之举。

第四章执行计划

1、命令

在上图左边点击光标处,会弹出右边的调度计划窗口,在这里可以设定列车的计划,经过哪些站点,卸货还是装货等。

如果你的计划是从A站到B站,但这两站之间的线路上有个C站,那么列车行驶到C 站时,会自动进行装卸货,即使你的计划中并没有C站装卸货。这时可以使用“不停车”,让列车经过C站时不装卸货。

装满任意货是针对混装列车的,只要有一种货物装满了,列车就会执行计划的下一步。

卸载这个下拉框里有个“联运”比较重要,联运是指往该站卸货,却不给该站使用(即使它需要),然后再由该站的其它列车运往其它站。我们可以在一片空地建个大型车站,然后用联运的方式把周边的各种货物运过来,集中在一起,然后再用车统一运往远方。

“跳过”是让列车跳过当前指令,执行下一条。这是人为干预列车执行计划的做法。

“前往”这个我就不说了。

选择“共享调度计划”后,再去点击别的列车,会使当前列车与目标列车的执行计划一致。共享计划后,两列车实行相同的执行计划,无论从哪列车进行计划的修改,都将影响另一列。如果不想共享了,可以点击“调度计划结束”(计划表的白字那行),然后选择退出即可。

“条件性命令跳过”给执行计划增加了条件判断,这就使得可以设计复杂的计划来完成高级的功能。选择“条件性命令跳过”之后,不是去点列车和车站,而是要点命令,想跳到哪条命令,就点哪条。

还拿上章的例子来说,虽然用车库收容了第三列旅客车,但是如果这列车上的旅客迟迟不能卸货,价值就会下降,影响收入,因此我们希望能先卸货,再进车库。那么,我们可以这样设置执行计划

1)进站卸货,若有货就装

2)跳到6(装载度大于40)

3)前往车库

4)前往路点

5)进站满载

6)。。。。。

这样的话,第三列旅客车就会先进站卸货并装货,如果能装到40%以上的货物时,就开出去了,否则如前策略,到车库里候着,满载再走。

2、时间表

在点出调度计划时按住ctrl键,或者点击前图中右边执行计划窗右上角的“时间表”,会弹出时间表如下图。

时间表可以对执行计划中的车站设定停留时间,在这个停留时间里,列车会执行装卸货的。要注意的是,使用了时间表,车站的选项就不要设成满载,否则列车的停留时间以满载而定,而不是时间表了。

还有就是,只有车站可以设定停留时间,路点和车库是不允许的。

如果列车到达某站时晚点2天,而该站设置的停留时间是5天,那么实际只会停留3天,相反,如果早到2天(在命令窗口使用“跳过”往往会造成),则会停留7天。点击“清除晚点计数器”,可以让列车在该站正好停留5天。

概念篇

第一章发车

指当列车由于进站、拐弯、或者在道口停下来之后,再次启动发出。

发车时,往往是不只一列车,而是一队车在等候发车,这里讨论的则是这一队车先后发出的关系。

●连发

例如在十字道口由于红灯停下来的一队车,当绿灯到来时,第一列车开出,那么第二列是何时开出的呢?显然是第一列车开出一个信号灯区间的距离,第二列车前信号灯由红变绿时,第三列又是等第二列开出一个信号灯区间的距离才开出,依次类推。这种方式,称为连发。

显然连发方式发车时的列车间距(发车间距)是一个信号灯区间,如果我们把信号灯区间设置为最小(1格),就可以获得最高效率。

连发的特点就是这队车是连动发出的,而不需要等待前车完全过了道口,因此称为连发。

●轮发

假设这队车全部收容在车库里,现在前区间有空余轨道了,于是第一列车发出,那么第二列是何时开出的呢?显然是第一列车完全通过前区间时,第三列也要等第二列完全通过前区间,后面依次类推。这种方式,称为轮发。

轮发的发车间距是列车的车身长度加上前区间的长度,也就是说大于车身长度。

轮发的特点就是前车完全通过了指定区间,后车才发出,它们是轮流执行这个流程,因此称为轮发。

拿前面车库那章的车站图来看,如果站台上三列车都装满了货(或者卸完了货),等待发车,显然,每列车都得等前车开出第一个信号灯之外才能发车,所以,这种车站就属于轮发。

第二章装卸货

车站的装卸货是对处于站台内的每节车厢同时进行的,所以不管列车有多长,只要不超出站台长度,它们的装卸货时间都等于一节车厢满载(卸载)所需的时间。一旦列车长度超过站台长度,就会受到惩罚,装卸货时间变得非常长了,所以,列车长度尽量不要超过站台长度。

虽然一节车厢满载和满卸的时间相同,但是由于车站对装载和卸载的策略不同,使得运营中的火车装货和卸货效率是不一样的。

假设一个六站台的车站,同时来了六列车进行卸货,这六列车是可以同时卸货的。而装货不同,是先装满一列,再装第二列,按先来后到的顺序依次装载,只有在货物已超过第一列车的装载能力的情况下,第二列才会同时进行装载,所以有时可以看到两列车同时装载的情况,而三列同时装载就更罕见了。所以,从这个意义上说,三站台车站对装载已足够用了,但实际上,从其它方面考虑,三站台是不够的,初期可用。

列车的满载或满卸时间是4天,进站和出站时间分别是2天(指lev4磁悬浮车头拖22节满载油罐车的情况),而车站是轮发式的,所以对于只卸货的列车,要占用站台4+2+2=8

天,只装货的列车则还需加个等待装货的时间,假设是5天,那就需要13天,又卸货又装货的则需17天,所以一个站台一个月只能处理2至3列车。据此,你可以根据产量估算出需要多少站台。

第三章稳流准则

观察河流,可以发现在河面宽广的地方,水流速度慢,狭窄的地方水流急,因为只有这样才能保证河流的每个截面上的流量相等。如果某段河流的流量比其上游小,那势必造成这段积水,从而增宽河面,或者抬高水位,造成向下游流水速度增加,最终达到与上游流量相等的稳定状态。

对于车流也是一样的,如果在某段线路流量小于其它段,必然会造成堵车。但是车流是不会像河流那样自动调整的,只能靠我们人为设计来处理了。

稳流准则可以这样描述:要使我们的车流稳定,就必须在列车减速的地方(例如进站点、上坡、急转弯等)增加道路数(相当于河面增宽)。而在狭窄的地方(例如二进一的道口),就应该让列车尽量高速通过。

稳流准则是指导我们设计的一个准则。

第四章车间距准则

游戏中,大家设计出各种复杂漂亮的车站和道路,但是这些设计效率如何,何时需要对站台和道路进行改造,何时需要增加道路数,这条运营线路是否还能再增加火车,或者是否需要改造运营中的火车,给它们增加车头,这些都只能依靠感觉来。下面就给出个定量的依据。

一条线路上跑的车越多,显然效率越高,但还要看线路的长度,以及是否堵车的情况来,这使得我们难以车多少来做效率依据。如果一条运营线路达到了稳流状态(各段车流量相等),并且干线上的列车都是以最大速度行驶,我们可以干线上的列车平均间距作为效率的评判标准。

车间距具有稳定、可测量、直观、易用等特点,因此很适合做为效率标准,不过要注意的是,必须是在稳流状态,且干线列车全速行驶。下面举个例子来说。

假设在相距600格的两站使用30列火车进行运输,两头滞留站台和车库的列车为10,那么干线上则是20,使用复线(就是一来一回的单行线),因此干线长1200,车身长度为12,于是车间距=1200/20-12=48,所以车间距是车身长度的4倍,我们把这个效率记为4X。

再拿前面提到的连发来看,列车发车间距是1格,能不能说效率就是1/12X呢。我们说过,必须是稳流且最大速度,所以这个效率不能算是1/12X,经过实际测算,连发车达到最大速度时,它们的间距大约为1倍车身长度(指lev4磁悬浮车头拖22节满载油罐车的情况),因此这个效率是1X。

连发是最优的发车方式,已不可能找到比这高效的了,因此1X可以说是线路的理论极限效率,只有在两头不装卸货,并完美解决掉头问题才有可能达到,因为一旦停下来装卸货就有效率的损失,并且再发车时效率又不可能超过连发。

除此之外,1X也可以看着行车的安全距离,对于1X的车间距,8格的隧道就有可能出

问题(因为8格内无法设置信号灯)。

说完连发,我们来看轮发。轮发的发车间距是车身长度+1(前区间长度),达到最大速度时的实测车间距大约为8倍车身长度,也就是说它的效率是8X。轮发是原始的,不需什么处理的,再考虑些效率损失,我们可以定义10X为自然效率。这个效率的意义是指,无需对线路做优化,自然就能达到的效率。拿前面600格30列火车的例子来说,如果使用列车少于20,你不需要对线路做优化,想咋建就咋建。如果产量提升了,投入运营列车超过了20,你就要考虑优化线路了。

有了理论极限效率和自然效率这两个基准点,这里我再根据经验,给几个中间点,当然,这是指lev4磁悬浮车头拖22节满载油罐车,并在无故障模式下。

5X是个良好的效率,必须对自然线路做适当优化才能达到。

3X是个优秀的效率,必须对线路做特殊处理,使用高级手段才能达到。

2X是完美的效率,我也不知道如何达到,目前我通常能达到3X,最好达到2.8X。

以上讨论都是指在一条线路上的,我知道自己只能做到3X,所以当产量造成超过3X时,我就会增加道路,使用四线(两去两回)进行运输。

应用篇

第一章地道进站

在高效运营的线路中,车间距很小,一列车有稍微的减速,都有可能被后面的列车追上,造成后车停止,从而引发一系列的停车,这种现象称之为追尾。追尾不会向现实生活中那样造成车祸,但是所有车停下来再启动,对效率造成很大的损失,在高效线路中,是绝对不允许的。

很多人为了避免线路交叉,喜欢使用桥来进站,我早期也是如此,下图就是我早期使用的。

但是玩过这游戏的人都知道,上坡和上桥对列车的速度影响是非常大的。像这个图,列车虽然上了桥,但是它的尾巴还在干线上,依然会阻碍10X外的列车,形成追尾。其实这样

效率还不如直接交叉

实际上,应该使用如下图的地道进站的方法,让列车在不减速的情况下完全离开主干道,不留尾巴在干线上。另外,这里毕竟有几个弯道,会造成减速,根据稳流准则,应该增加道路数,所以每条线路都分成两道。

这样的地道需要两边铁轨有两格的间距,如果只有一个,那就必须挖2格深度的地道了。这种地道我就不画了,大家自己去试吧。不过有一点要提醒的,挖地道是不能低于海平面的,如果海拔高度小于2,那就无法挖2格深的地道了。

第二章推挽车库

前面提到过,车库可以用来收容等待进站的列车,免得它们占着干线,影响后车。但是车库的三个引线中,只要有一个在用,其它两个就都不能使用,也就是说车库正在出车时,是无法让其它车进库的,如果此时刚好有车到来,就只能在干线上等待了。这个问题该如何解决呢。请看下图:

如果把两个车库如图那样对接起来,会是怎样呢。显然,一个车库在出车时,另一个必然不能出,但是可以进,反之亦然,一个车库在进车时,另一个不能进,但可出。所以这样的车库组合,就可以同时进出了。因为两个车库刚好工作在不同的状态,形成互补,我借用电子电路里的术语,称之为推挽车库。

推挽车库必须在高级信号灯下才能,使用标准灯是不可能同时进出的。而且这个高级信号灯要尽量的靠近车库的入口处,因为放得远了,在繁忙时,列车在灯前会有突然一顿的现象,关于这点,我不知道准确的原因,这里就不做解释了,总之,大家记住,使用推挽车库要尽量在入口处最近的地方放置高级灯,这是经验。

了解了推挽车库的工作原理,就应该知道,只要两个车库在高级信号灯下,拥有同一个

出口点和入口点,就可以算是推挽车库。如下图,左边那个是推挽车库的变形,右边那个不是,因为两个车库可以同时出车,造成干线上的车无法进库。

下图的两个也都不是。左边那个没有共一个出口点,造成可以同时出车;右边那个没有共一个入口点,也不能算是。

前一章地道进站法的车站图里,全部是推挽车库。

第三章分时器

在游戏中,我们经常会遇到多道并一道的情况,特别是出站,由多个站台最后并成一道或两道开往远方。下图是两道并一道的场景,最前面那列是下路车,当它车尾通过C灯时,后一列下路车往往未能到达B灯,而上路车已在A灯前等待,于是接下来是上路车过道口。最终结果是两路车交替通过道口,并且都是低速通过,都是以0的速度开始通过。这个情况相当于前面说的轮发。根据前面提的稳流准则,在这种“狭窄”的地方,我们应该提高列车通过道口时的速度。

现实生活中,十字路口通常采用分时制,在一个红灯时间内,另一条路上的车是以连发方式通过路口,只在红绿灯切换的一小段时间里是轮发,因此效率大大提高。然而,游戏中没有按时间变化的信号灯,这怎么办。没有,我们就给它创造出来,请看下图:

用一列小车(仅一个车头),在两个小站间来回奔跑,当小车停在上站时,A是红灯,停在下站时,B是红灯,我们只要通过时间表设置小车在上下两站的停留时间,就能实现上下两道的分时通行。

图中的车库是给小车用的,如果车流少,不需要分时了,可以把小车收回去。C处是个高级双向灯,它作用是隔离信号灯AB,没有它,小车无论在上站还是下站,AB都是红灯。另外,还需注意的是,小车的行走的线路(称为控制线路)要尽量与运营线路正交,防止串道。小车在上站和下站的停留时间可以不一样,可以根据实际车流情况,采取非平衡制。下图两个也是分时器

使用分时器重要的一点是,后面必须有一条长的、无分支的道路,在红灯时用来“存放”列车,这条道路称为跑道。我一般习惯使用5X(即5倍车身长度)的跑道,小车在上下站停留的时间设成刚好够5列车通过,让我们看看这个效率是多少。车流是如下通过的:先是上道以连发方式通过5列车,这5列车的总共车间距是4X,然后上下道切换,第六列车与第五列是轮发,车间距为8X,接下来下道连发5列车,车间距4X,所以最后总的车间距=4X+8X+4X=16X,一共过了10列车,平均车间距就是1.6X,这就是分时器的效率,够高的吧。

前面分析中,第五第六列车之间为8X,很是浪费,按前面提的行车安全距离为1X,这8X之间还可以插入三列车,那是否可以做到呢。这8X是发生在上下道切换时,如果切换时,仍然允许上道通行,只到过了三列车,才掐断上道。也就是说,多了个中间状态,允许上下道同时通行,这个很好实现,看下图,增加一个中间站,小车在此时,上下通行。另外,前面要增加一段跑道AB,后面跑道要从5X增加到8X。不过,不推荐使用这种分时器,因为这种分时器一旦出问题,会在AB段积留列车,造成分时器失效,而且恢复困难。况且,1.6X 已足够,效率瓶颈不在这里。

最后,再发一个三路分时器,这种分时器不常用,就不做解释了。只提示两点:1、路点是用来调头的;2、箭头处的高级灯是用来隔离的。这个图还有个缺点,就是中路比两旁有优势。其它的,大家就自己思考,自己改进吧。

第四章齿轮

如上图,两个路点用来设置小车的执行计划,使得小车以逆时针在圆环转圈。小车每转一圈,最多放过一列车。而小车是否放过列车,取决于A灯,也就取决于输入端过来的控制信号。同时,小车是否在AC区间这个信号可从输出端输出。D灯是隔离用的。

小车每转一圈,精确的放过一列车,并且能够传动(输入输出控制信号),因此称之为齿轮。

下图是无输入端的齿轮,通过设置小车在小站的停留时间来确定放车间隔。要注意的是,小车要够长,因为停在小站时,是靠它的尾巴阻挡干线上的列车。

齿轮的变化和应用,大家可根据自己的需要来设计。

第五章状态机

通过CTRL,把AD建为一个站,BC为一个,把小车的执行计划设置为在这两个小站间来回运动。当小车在C站时,根据执行计划,它可以去A站,也可以去D站,但是去A站要走弧线,路程远,它是不会去的,因此它会选择CD段。这样一来,小车有两个稳定的运动状态,要么在AB间运动,要么在CD间运动。当EF间有车通过时,CD和AB受阻,这时小车只好从C运动到A。列车通过后,AB段解除阻碍,于是小车就在AB间运动,不会返回C站。有车再次通过EF时,AB受阻,小车返回CD运动。也就是说,每当有一列车通过EF,小车状态翻转一次。

为了不让小车影响主干道的列车运行,E处要使用高级灯。

当小车从C运动到A时,如果列车还未能完全通过EF,则AB段仍然处于阻塞状态,小车就会由A走弧线返回C,造成失调。所以EF要尽量短。

当小车刚好运行到CD信号灯之间时,主干道有列车通过,此时控制失效,只有等小车到达D站后,控制才重新有效,如果此时列车已完全通过了EF,就会造成遗漏,所以从这里来说,列车通过EF的时间要比小车通过CD的时间长才行,所以EF又不能太短。

实践发现,当有车通过EF时,偶尔会出现小车在AB处等待红灯的情况(几率小于5%),这应该系统的BUG。

这个状态机最大的缺点就是,小车的状态信息难以完整取出利用,这就使得它没有什么实用价值。但它的意义在于,是利用红灯触发事件。我在这里给出这个图的目的,是让大家开阔思路。

第六章卡位法

假设从甲地到乙地有一条主干道,沿途有几个小站,小站上的车装满了货就会进到主干道,然后运往乙地。刚从小站出来的列车,速度是很低的,直接让它进主干道,很容易被主干道上的快车追上,造成追尾,因此,我们可以在小站前加一跑道,让列车在跑道上跑到最大速度时才进主干道,这样可以避免追尾。但是,当列车走到进主干道的道口时,有可能刚好主干道上也有一列车走到这里,于是造成停车,这种现象称之为碰撞,在车多时是很容易发生。卡位法就是用来解决碰撞问题的。

卡位法基于以下思想,如下图,假设主干道上车流中有两列车之间的距离超过3X,那么我们可以在中间插入一列虚拟列车,如图中间那列。虚拟列车以最大速度,随着车流运动,对车流无任何影响。假设某时刻,小站从O点出发出一列车,此时虚拟列车处于B点处,过了一段时间后,小站车跑到了A点,并达到最大速度,并且虚拟列车刚好走到C点,那么小站车此时进入主干道将与虚拟列车重合,对主干道的车流不造成任何影响。

要实现卡位法,关键就是要找到AB点的位置。利用一点物理知识,可以推出OA=OB,这里我就不做推导了。OA是列车从0加速到最大速度的距离,这个可以通过试验得出,对于lev4磁悬浮车头拖22节满载油罐车,这个距离是130格,可以通过增加车头来减少这个距离。

下图是个实现图。先确定O点位置,然后往两头找AB点位置。找到B点后,分别向前后延伸一段距离,作为探测区间,然后在探测区间范围内,向主干道伸出探测线(如图中所示)。

当探测区间的主干道上有列车时,O为红灯,小站不能出车。只有探测区间无车时,小站才能出车,这就确保小站车在A点进主干道时不会发生碰撞。实践发现,探测区间为4X (B点向前1.5X,向后2.5X(含虚拟列车自身长度))时,才能确保安全。所以当运营效率高于4X时,小站会被压制,难以出车。

主干道的探测区间段上的信号灯必须全部使用高级灯,这样,主干道的车才不会受小站车影响。

第七章周期法(时隙法)

卡位法有缺点,需要很长跑道OA和控制线路OB,需要精确的探测区间,并且在高于4X的效率时不好用。为了解决这个碰撞问题,我们可以换一种思路。

假设从甲地往乙地运输货物,沿途有abcedfg七个小站,每个小站都采用跑道把列车速度提到最大才进主干道,这个进主干道的位置分别为ABCDEFG点。如果能保证bcdefg六个站的车到达A点时不会是周一,那么,只要能让a站的列车在到达A点时正好是周一,那它就不会与其它站的列车发生碰撞。同样,B对应周二,C对应周三。。。

拿上一章的实现图来说,小站的起跑点O是可以在跑道上任意挪动的,只要确保OA够达到最大速度即可。所以,对于bdcefg小站,我们可以改变起跑点位置,来确保它们发出的列车到达A点时不会是周一。

要让a站列车在周一到达A点,就要用到前面介绍的无输入端齿轮。无输入端齿轮图中的B点就对应小站的起跑点O。

最后则是七个小站齿轮的时钟同步问题。这个很好解决,控制小车是采用时间表来实现定期放车的,这个时间表里有个“起始时间”,通过设定这个,就能解决同步问题。

这个方法我还没来得及实现,但从上面分析看,应该是可行的,不过实现起来恐怕很麻

烦,需要多次的测试和调整。这里只是提出个思路,供大家参考。

第八章跑步进站法

我们通常都是使用静止进站法,即让进站车在站台最进的地方(图中B灯)等候,等前车完全出站(车尾通过A灯),B灯变绿,后车才能进站。这种方式是轮发,效率为8X,我们不能做成连发,是因为AB间是车站,不能像跑道一样,每格放置信号灯。

但是,前车一出站,车头通过A,就会使A灯变红,如果我们能够利用红灯触发,使等待在C处的后车启动,那么前车车尾通过A时,后车刚好到达B处进站,与前面静止进站法不同的时,此时后车是带着速度的。这种方法,称为跑步进站法。

跑步进站法的关键是要能红灯触发,前面的状态机就是我在考虑这个问题是得到的,但还是不成功的,因此,跑步进站法我也没有实现,这里也是把思路提出来供大家参考。

最后,让我们再来看看跑步进站法的效率。后车在C处等候,前车一动,后车也就跟着动,这是连发方式。但是,它们的发车距离是BC,而不是跑道上连发方式时的1格。因此,

这个效率可不是1X。假设静止进站法进站所花时间为t,可以推导出跑步进站法为()

=0.414t,所以跑步进站法的效率大约为0.4*8X=3.2X,再考虑一些效率损失,可以看做是4X。

结束语

我的介绍就到此结束了,但设计之路还远未止于此。看了本教程,难道你就没有自己的想法吗,还不赶快动手,设计一些精巧实用的东西出来。

相关主题
文本预览
相关文档 最新文档