
大家好。在本指南中,我将尝试解释基于中断和请求逻辑信号的火车物流系统。 更新18.11:修复了卸载站被多呼叫1列火车并在已满的车站长时间停留的错误 更新19.11:更新了液体请求站,增加了防呆保护,不会呼叫超出系统处理能力的火车 更新29.11:添加了实验性雷达站,可在多个仓库之间均匀分配请求 更新15.01:为装卸站的蓝图添加了更多参数同时对货运站和雷达站进行了修改,以尝试修复发送超出所需数量列车的漏洞。 简介 让我们从网络的组成部分开始: - 装载站 - 卸载站 - 固体货物货运站 - 液体货物货运站 - N列火车 本指南将概述如何创建一个类似LTN模组的原版火车网络。 基础 基本LTN逻辑: 我们的火车停靠在货运站中,等待轮到它们。收到请求后,所需数量的火车将按照动态生成的时刻表出发:装载→卸载→返回货运站。新基础中断系统 得益于全新的中断系统,开发者让我们能够通过配置特定的列车激活规则来动态创建列车时刻表。这使得列车更加灵活,我们不再需要为每列列车设定特定的资源类型。 所有车站和车库会通过雷达相互交换信号,以确保网络正常运行。如果你不想在整个工厂中铺设带有逻辑线路的电力线 列车 我们为列车设有两个物流网络: - 固体货物列车 - 液体货物列车 这是一款原版游戏,而非LTN,因此列车不知道自己运输的货物类型及其长度。此外,车库的设计也无法根据列车长度和货物类型进行区分。因此,我们至少需要两个用于不同类型货物的仓库,且列车长度需保持一致。 以下是列车的中断设置:

中断条件: 列车必须停靠在车库才能接收请求。 必须有请求信号发送至列车所在的车站(车库)。 列车必须为空车,否则无法发车。 请求的装载车站必须能够容纳该列车。 请求的卸载车站必须能够容纳该列车。 若所有条件均满足,系统将为列车分配临时时刻表,列车随即出发前往请求的车站。 参考:
这个信号被称为【信号参数】,它接收玩家可从外部(例如通过组合器)发送给车站的值。对我们而言,它会在列车时刻表中生成请求车站的名称。你可以在其他指南中了解更多关于信号和中断的内容。 请求车站 卸载车站会根据箱子容量或列车限制生成请求信号。如果有列车正前往该车站,它还会减少请求信号。其用途可在【请求信号使用】部分中查看。

默认情况下,此设计包含6个钢制箱子,车站最多可呼叫7列火车。不过,如果我们限制火车数量,车站将根据该限制发送请求。 该车站的参数可针对任意火车长度和钢制箱子数量进行调整。 供应站 当火车接近装货站时,装货站会降低请求信号。关于实施此功能的原因,您可以在【请求信号使用】部分中了解详情。

默认情况下,此蓝图包含6个钢制箱子,但此处的列车限制受箱子的填充水平影响,而非数量。因此,你可以随意添加箱子,只需用线路连接它们即可。 列车限制是根据箱子中的货物量和用户定义的限制来设置的。 此车站适用于任何长度的列车。该蓝图是参数化的。 depot 在depot中,如你所知,列车会等待请求的到来。每个depot都分配有一个雷达站,用于处理和筛选请求。需要重点说明的是:固体货物的请求存储在绿色网络中,而液体货物的请求存储在红色网络中。因此,雷达站的设计会根据depot中停放的列车类型而有所不同。发送仓库请求。如果您决定在星球工厂中分散布置多个同类型仓库,则需要进行请求筛选。筛选过程包括在雷达站之间分配请求,并禁止同一请求同时发送到多个仓库。雷达站:

对于每个雷达,我们发送1个信号【D】,以便系统了解工厂内分布的仓库数量。 公共网络的信号会除以仓库数量,然后通过选择器组合器发送给列车。 接下来,我们计算除以仓库数量后的余数,同时执行以下操作: 通过选择器组合器将此信号发送给列车。 禁止将余数发送到其他仓库。 示例: 工厂内有2个仓库,且有一个交付3个铜矿的请求信号。 根据该方案,我们将3个铜矿信号除以2个仓库,系统中的每个仓库会收到1个铜矿信号。 我们需要以某种方式在仓库之间分配剩余的1个铜矿信号。在这种情况下,我们使用除法运算后的余数,该余数将随机分配到一个仓库,且不会重复。 重要提示:左下角的选择器组合器必须设置不同的更新间隔级别,以避免操作错误。 两个仓库之间的请求分配示例:
重要提示:如果信号等级低于仓库数量,请求将不会平均分配。相反,请求根本不会被复制。截图上的例子就是煤炭请求。 列车间的请求分配
列车请求通过雷达站发送,并经由车站间的组合器和信号灯进行处理。 车辆段内列车的信号分配原理: 1. 若车站有列车停靠,算术组合器会将请求信号减一。 2. 算术组合器的信号会传输至选择器组合器和比较器组合器。 3. 选择器组合器起到计时器的作用,确保车辆段内所有列车不会接收额外请求,从而防止派出的列车数量超过需求而导致错误。 4. 由于选择器组合器会延迟移除输出信号,比较器组合器则能实现请求信号的更快更新。比较器组合器的输出会发送至有列车停靠的车站。示例:如果我们需要交付2份铜矿的请求,最多需要派出两列火车; 向第一个 depot 车站发送明确请求 -> 2份矿石; 通过信号灯检查该车站是否有火车;如果有,则向下一个 depot 车站发送请求 -> 2-1份矿石=1份矿石; 如果下一个车站没有火车,则继续传递信号 -> 1份矿石; 这样,两列火车将收到请求信号并离开车站,无论它们在 depot 中的位置如何。 后续火车不会收到请求信号,因为信号已归零,所以多余的火车保持静止。 当一列火车离开 depot 车站时,公共网络中的请求信号会减去1,因为已有一列火车被分配去完成该请求。后续将说明如何从公共网络中减去。 在我的版本中,列车也会在车辆段加油。如果您有单独的加油站,请参考中断指南。 关于请求信号的使用 请求信号等级表示需要多少列列车来满足需求。其变化情况如下:

在装卸站,我们设置了一个配置来读取前往该站的列车数量。此外,每个车站都有一个算术 combinator,它将信号 C 乘以 -1,并在输出端以负号形式发送我们请求的资源。算术 combinator 的输出信号被发送到网络,这样我们的请求信号就会减去正在满足该请求的列车数量。

简单来说,当一列火车去执行请求时,它会一直持有请求信号,直到离开卸货站。结合车站的信号处理,这消除了多个(2个或更多)火车为了一个请求而到达装载站的问题。 其他 我想分享我的开发情况。我使用带有4节货运车厢的火车,有时会在装卸站遇到问题,这些车站无法总是均匀地装卸火车。结果,火车可能会在车站长时间停留而无所事事。你可以将逻辑连接到 inserter(机械臂)并控制均匀的装卸,但我不喜欢这样做,因为我不确定这种方法对性能的积极影响。(如果我说错了请纠正我)以下是我对假设问题的解决方案:装卸站

这里有4个区域,每个区域各有12个箱子。 在装载站,我会计算箱子填充量最少的区域,只有当4个区域都至少有可供1列火车装载的资源时,我才允许火车发车。 在卸载站,我会计算箱子空余空间最大的区域,只有当4个区域都至少有可供1列火车卸载的空间时,我才允许火车发车。

我为干货和液货设计了自定义参数化车站,并为不同列车长度设置了独立车站,按车厢段统计物品数量。还提供了适用于不同货物类型的列车、 depot 和雷达设施蓝图。所有蓝图中的组合器均已标注,若难以理解,可参考组合器的描述。这是我的第一篇指南,若有任何不清楚之处或蓝图运行异常,请留言告知,我会尽力提供帮助。感谢以下帮助测试漏洞和改进蓝图的伙伴:Kotbuz、M1A1、Reaper、Maelstrom。

本指南由俄语翻译而来,可能存在翻译不准确之处。
2026-02-19 19:00:12 发布在
Factorio
说点好听的...
收藏
0
0
