单独使用燃料就能满足大多数熔炼需求,但按预设温度泵入气体可实现更多控制。而泵入不同温度的动态气体混合物则能达到极高的控制精度。我分享一些在制作自动气体管理系统后的发现,希望能对其他人有所帮助。 我将重点介绍搭建精确气体熔炼控制系统所需的一些基本方程式和关系。虽然有很多资源描述了必要信息,但它们往往技术性很强,或者需要较高的数学和物理知识水平才能理解;我会尝试用帮助我这个“门外汉”有效理解的方式来阐述这些内容。 本指南是什么?这并非一篇关于搭建气体熔炼装置的分步指南。相反,它是一系列实用信息的集合,旨在帮助你构建一个效率最大化的气体驱动熔炼炉,以节省研究时间、提供基本指导,并作为你开发独特解决方案的基础,来应对这一有趣的难题。 需要明确的是,这也不是基础气体熔炼装置的搭建指南。本文面向的是那些希望精确计算气体混合物比例的玩家——这些混合物需要将熔炉加热到特定温度和压力,并能在最短时间内以最少的原料气体消耗实现这一目标。简而言之,这是一种“过度优化”。不过,一旦搭建完成,它的功能性极强,运行起来也非常令人满足。我将讨论熔炉和IC逻辑的设置注意事项,概述气体混合的基本数学原理,提供一些在构建气体混合器时有用的公式和IC脚本示例,然后谈谈辅助话题,如燃料燃烧以及它如何补充气体熔炼设置。 为什么要费心进行气体熔炼? 在《太空工程师》中,大多数事物都在复杂性与效率/控制之间存在权衡,熔炉也不例外。简单地把燃料扔进去,然后有策略地排气、补充或忽略它,直到内容物达到所需的温度和压力,这足够简单。然而,这需要时间,而且拥有一个更易于管理的过程会更好。 燃料喷射是这条道路上的一步,但它也有自己的问题。首先,虽然可以计算一定量燃料燃烧释放的总能量,但由此产生的缓慢且不完全的燃烧并不适合快速、精确的冶炼。这足以让你接近目标温度,但要达到像哈氏合金和银金合金等金属所需的精确温度区间,往往还需要一些调整。 相比之下,气体冶炼利用的是你可能已经闲置的东西——通常是处于某种半受控温度下的气体。在有大气层的星球上,空气也能作为有用的成分,尤其是在金星和火神星上。 气体要求 根据你对复杂程度的需求,你可以通过几种不同方式搭建气体注入系统。首要且最重要的气体需求是超热气体,其温度需高于1800K。这一温度足以熔炼游戏中的所有物质,包括司太立合金。从效率角度而言,温度越高越好。 获取此类气体并不困难,只需在隔热储罐中燃烧燃料,无需复杂设置就能获得大量温度超过2000K的气体。氢气燃烧器的废料在滤除水分后,也非常适合用于此目的。 仅依靠超热气体就能达到温度阈值。但部分合金,如钨铬钴合金,需要高压且相对较低的温度。若拥有冷气体,能更快速地达到这些目标参数。不需要超级冷,温度保持在273-313K(0-40℃)左右就可以正常工作。这样能让你轻松达到那些压力目标。 一旦这两种气体整合到你的装置中,就不再有功能性限制了,但第三种气体有其使用场景,我称之为【实用气体】。理想情况下,这种气体应该是廉价且充足的,比如中温熔炉废气、来自火神星/金星的高温大气气体,或者其他你身边温度高于373.15K(100℃)的气体。有了这种充足的气体,你就可以将矿石送入熔炉加工、脱气以及进行装置调试,而无需动用通常储量更有限的超热气体和冷却气体。 不过,具体用哪种气体呢?其实关系不大,但有两个注意事项需要考虑。首先,你需要注意氧化剂与挥发性物质的组合。如果你在富含挥发性物质的伏尔甘大气中进行冶炼,并选择氧气作为冷却气体,会发现它对熔炉的冷却效果并不理想。使用像二氧化碳、污染物或氮气这类中性气体,即使是处理含氧化剂的矿石(如银、铅和金),也能进行无反应加工。 其次,在使用气体进行温度控制时,它们的比热容很重要。我将在后续章节中详细介绍这一点,但每种气体都有一个描述其温度每升高1开尔文所需能量的属性(可在【Stationpedia】中查看!)。比热容较高的气体具有更强的能量携带能力,因此更适合作为冷却剂或加热气体。在这方面,污染物和二氧化碳的效果更好,而氮气、氧气和挥发物的效果较差。 熔炉基础设施 熔炉是一个1000升的储罐,上面固定有两个涡轮增压容积泵(容量为100升),一个用于进气,一个用于出气。实际应用中,如果在输入端连接一个容积为100升(即10段管道)或以下的管道网络,假设进气泵设置为最大,熔炉每 tick 就能将该管道内的所有物质完全吸入其内部容积。 输入端只能连接一根管道,10段长的管道可以随意塑形,并且能顺利连接到各种气体输入源。由于管道内容物会在每个滴答周期排空,这使得你可以将所有输入直接连接到熔炉,精确控制熔炉每回合吸入的内容物。举个例子……

这是我设置100升缓冲管道的方法。有额外的管道段向下延伸到框架中,以确保获得合适的容量。四个容积泵分别用于挥发物(同时作为我的冷气)、氧气、高温火山大气(公用)和燃烧室废气(超高温)。熔炉通过右侧墙壁直接连接到黑色管道。 在熔炉建造中使用的所有管道和储罐都必须进行隔热处理。未隔热的管道在游戏中存在的唯一意义,就是给玩家提供以有趣方式把自己炸飞的机会。由于这是一篇关于精确温度控制的指南,所以请使用隔热管道。熔炉的隔热方式完全取决于个人选择。你可以向包含熔炉的单个密封单元中注入约70摩尔的气体,这样就能轻松制作出保温效果相当好的熔炉。将单元内的空气抽成真空则更为简单,同样能防止熔炉过热烫伤你,但这种方式会有一定的辐射热损失。我个人觉得完全隔热的熔炉有点投机取巧,所以更倾向于使用真空隔热,但对于本指南的目的而言,这其实无关紧要——一个调校得当的系统无论是否进行隔热,都能维持所需温度。 气体输入应使用容积泵。虽然调节器、混合器以及其他用于控制气体流量的设备都有其适用场景,但在这种特定情况下,你需要的是容积泵。也可以在脚本中转换哈希值: lbn opmode -128473777 -623372820 Setting 1 lbn opmode HASH("StructureCircuitHousing") HASH("IC Primary") Setting 1 # 这两个函数是等效的,但后者会增加脚本文件大小 这些命令中的最后一个参数是批处理模式,它控制当存在多个值时模式如何汇总检索到的值。由于大多数时候你会寻址单个命名设备,所以这没什么太大影响,但如果出现错误,它确实会影响返回的值。我通常建议将批处理模式设置为Sum(1)。如果未找到设备,它将返回0。其他模式会返回NaN、Inf或nInf,这在代码中测试起来更麻烦。使用lbn而非在引脚上加载数值并没有本质区别,但除非你添加注释详细说明这些哈希值代表什么,否则可能会使代码的维护和可读性变得复杂。这个问题可以通过在代码中添加注释轻松解决。 在代码中添加注释。 如果你有许多设备需要以这种方式进行寻址,维护一个电子表格或名称哈希列表作为参考可以节省时间。 收集数据 为了对熔炉进行精确修改,需要了解熔炉内容物和各种气体输入的某些特定信息。以下是主要信息及其获取或计算方法: 主要气体属性:你可以直接从高级熔炉和任何连接的管道分析器中读取温度、压力和总摩尔数等逻辑类型数据。这满足理想气体方程中除体积外的所有变量。 比热容:对于单一气体进料,该气体的比热容可参考【Stationpedia】。对于多气体进料或熔炉内的物质,需要评估各种气体的比例,并确定总混合比热容。这种计算非常简单,只需将气体占比(来自Ratio___逻辑类型,如RatioOxygen、RatioNitrogen等)乘以该气体的比热容值即可。换句话说,总比热容就是该体积内所有气体摩尔数的平均比热容。 举个例子:燃料由2份挥发物和1份氧气组成。由此得出的占比为0.667的挥发物和0.333的氧气。挥发物的比热容为20.4 J/K,而氧气的比热容为21.1 J/K。按适当比例混合后,生成的燃料比热容为:(0.667×20.4)+(0.333×21.1)=20.633 J/K。 然而,当这种气体燃烧时,会转变为2份二氧化碳和1份污染物的混合物。二氧化碳的比热容值为28.2 J/K,而污染物的比热容值为24.8 J/K。综合来看,这种气体的热值为: (0.667×28.2)+(0.333×24.8)=27.067 焦/开尔文 这意味着燃烧后的气体每摄氏度温度所蕴含的能量比输入的燃料更多。 为什么这一点很重要呢? 简单来说,输入气体的比热容会影响混合后输出气体的最终温度。如果你将100摩尔、温度为273.15开尔文(0摄氏度)的挥发物(比热容20.4焦/开尔文)与等量、温度为373.15开尔文(100摄氏度)的二氧化碳(比热容28.2焦/开尔文)混合,得到的气体温度计算如下: 0摄氏度=273.15开尔文(氧气温度) 100摄氏度=373.15开尔文(二氧化碳温度) (0.5×28.2焦/开尔文)+(0.5×20.4焦/开尔文)=24.3焦/开尔文(混合气体的比热容) (273.15开尔文×20.4焦/开尔文×100摩尔)=557226焦(氧气中的能量) (373.15开尔文×282焦/开尔文×100摩尔=1,052,283焦(二氧化碳中的能量) 557,226焦+1,052,283焦=1,609,509焦(混合气体中的能量) 1,609,509焦÷24.3焦/开尔文÷200摩尔=331.17开尔文(混合气体的最终温度) 331.17开尔文=58.02摄氏度 但将温度颠倒后混合相同气体,结果如下: 100摄氏度=373.15开尔文(氧气温度) 0摄氏度=273.15开尔文(二氧化碳温度) (0.5×28.2焦/开尔文)+(0.5×20.4焦/开尔文)=24.3焦/开尔文(混合比热容保持不变) (373.15开尔文×20.4焦/开尔文×100摩尔)=761,226焦(氧气中的能量) (273.15开尔文×28.2焦/开尔文×100摩尔)=770,283焦(二氧化碳中的能量) 761,226焦+770,283焦=1,531,509焦(混合气体中的能量) 1,531,509焦÷24.3焦/开尔文÷200摩尔=315.13开尔文(混合气体的最终温度) 315.13开尔文=41.98C 你可以发现,比热容较高的气体会携带更多能量,因此与比热容较低的气体相比,它对最终混合温度的影响更大。 比热容计算 对于纯净或成分固定的气体输入,你可以在代码中直接定义比热容值,无需进行计算。然而,对于像熔炉内物质这类动态数值,你需要执行计算。这包括遍历各种气体的比例,并累加它们对最终比热容的贡献。你的脚本看起来会是这样: alias adfurn d0 # 高级熔炉 alias frspht r0 # 熔炉比热容 alias result r1 # 通用变量 l result adfurn RatioVolatiles # 熔炉中挥发物比例 mul frspht result 20.4 # 来自游戏百科的挥发物比热容 l result adfurn RatioPollutant # 然后对污染物执行相同操作 mul result result 24.8 add frspht frspht result # 将数值相加 l result adfurn RatioCarbonDioxide mul result result 28.2 add frspht frspht result 依此类推,对体积中的所有气体重复此操作。由于这是一个代码行数相对较多的脚本,你可以考虑在单独的IC中进行所有的比热容计算,并将结果写入逻辑存储芯片或IC板自身的设置变量中,以便其他脚本能够轻松引用。 熔炉流程 现在我们已经具备了熔炼所需的所有物理基础设施和信息,是时候考虑如何利用它们了。熔炉是整个流程的核心设备,我们必须明确它在任何时刻应该执行的操作。它的状态按顺序如下: 闲置 矿石处理 熔炼 排出 通风冷却 未激活 我们这里将重点关注矿石处理和熔炼阶段,因为这些是本指南的主题。让我们定义熔炉在任一状态下的必要操作,以及导致这些状态开始和结束的触发条件。 矿石处理 在矿石处理阶段,你需要将反应物放入熔炉。此阶段在你向输入端放入第一批反应物时开始,在最后一批反应物成功作为试剂在熔炉内处理完毕时结束。此阶段的要求很简单——只需熔炉内有一定气体,且气体温度超过100摄氏度,这样进气过程就能持续进行。 此阶段面临的挑战主要与矿石脱气有关。原始矿石会向熔炉空间释放气体,持续降低温度并升高压力。原因在于一个我会经常提及的公式:PV=nRT。这就是理想气体方程,它或许是《太空工程师》中最重要的数学公式。该公式表明,压强(千帕)乘以体积(升)等于气体的物质的量(n)乘以理想气体常数(R,数值为8.3144626,在IC10脚本中写作rgas)再乘以温度(开尔文)。这意味着,如果你知道输入气体的压强和温度,就可以将这些数值代入公式,从而计算出每升输入气体中含有多少摩尔的气体,或者确定为了吸入精确量的气体,应该将泵设置为何种参数。 这也意味着,每条输入管路上都需要一个管道分析器,或者与气源储罐相连接。此外,部分矿石可能会释放氧气或一氧化二氮,这些气体可能会燃烧并迅速升高温度和压力。根据你的目标,这可能是你需要的,也可能不是。 气体熔炼在此提供了一个燃料熔炼难以实现的机会,那就是我们可以通过熔炉创建持续的计量流。利用我们之前提到的PV=nRT方程,我们可以计算出实用气体的体积设置,以便将恒定数量的气体摩尔数注入进气管: 对于来自48MPa、900K气源的25mol目标: V = nRt / P V = 25mol * 8.3144626 * 900K / 48000kPa V = 3.或者,在IC脚本中: l gastmp gassrc Temperature # 加载源温度 l gasprs gassrc Pressure # 加载源压力 mul result gastmp rgas # rgas是一个特殊常数,设定为8.3144626 mul result result 25 # 你可以将这些合并,直接写成T * 207.86 div result result gasprs min result result 10 # 钳制到10L s volpmp Setting result # 泵被设置为3.8974 高级熔炉有相对较大的1000L容积,其内部泵每 tick 可排空100L。这意味着熔炉每 tick 最多能排出其内部容积10%的气体。因此,如果你向熔炉中注入25摩尔/刻的气体并将流出量调至最大,熔炉将稳定在250摩尔气体——其中每刻会移除25摩尔(10%),使其与流入量精确平衡。 如果矿石向熔炉中添加了额外的摩尔数,流出泵将突然能够抽取远超过流入量的气体,压力会迅速下降回到平衡设定值。这对温度也同样适用,因为炉内物质会以相同速度趋近于源气体的温度。这种效果无需额外的代码或逻辑,它只是熔炉参数的自然结果。 设定值可以通过改变容积泵注入的气体摩尔数来调整;熔炉内的气体量将始终是每刻注入气体量的十倍。如果希望根据目标压力进行选择,我们可以采用n=PV/RT的公式。不过,我们可以对基础形式进行优化: PV/RT = n (2000千帕×100升)/(8.3144626×900开尔文)=26.727摩尔 对于源气体体积,由上可知: V=26.727摩尔×8.3144626×900开尔文/48000兆帕 V=4.167升 然而,由于nRT项相同,且PV=nRT,通过P1/P2的比值可以更快得出结果: V2×P2=nRT=V1×P1 V2×P2=V1×P1 V2=V1×P1/P2 V2=100×(2000千帕/48000千帕) V2=4因此,要确定能提供压力P的容积泵设置,你只需: 移动目标值2000 获取气源压力 将结果与目标值相乘100 # P1 * V1 将结果除以气体压力 # / P2 将结果限制在最小值10 # 限制为10升 设置容积泵的设定值为结果 # 容积泵已适当设置。 调整设定值实际上是一种非常有效的方法,可以使物品在气源气体的温度下进行熔炼。从理论上讲,只要气源是超热气体,这就是运行基本单气源气体熔炉所需的全部;如果你想保留一罐2200K的燃烧废气,那么你可以使用这段代码片段,将储罐连接到你的熔炉,这样你就可以熔炼任何东西而不受最高温度的限制。 然而,这种方法对气源气体有些浪费。插入的物品会以每秒10个或每刻5个的速度转化为试剂;假设所有物品均通过斜槽输送且速率为25摩尔,那么我们消耗源气体的速率将为每刻25摩尔,即每矿石5摩尔。通过这种方式熔炼400克钢会消耗2千摩尔气体,这相当于666.67摩尔燃料产生的量;而如果直接在熔炉中燃烧燃料,实现这一过程的燃料成本不到十分之一。这种方法最适用于来自大气或废料源的低价值气体(例如氢气燃烧器产生的气体)。 简而言之,如果你拥有无限供应的热气体(如瓦肯星大气等),这是我所知道的在熔炼中利用它的最简单且最可靠的方法。可以通过降低熔炉的流出量来在一定程度上调整气体消耗速率。这样做会大大提高气体效率,但达到平衡状态的自我调节速度也会相应变慢。更高效且可控的平衡方法将在下一节关于熔炼的内容中讨论。 熔炼 这一阶段是在你处理完所有锭材后进行的,此时你需要达到正确的温度和压力以获得最终产品。对于基础矿石和部分合金,这个过程可能是瞬间完成的;如果你的源气体温度足够高,并且已按照前一节所述达到平衡状态,那么在完成试剂处理后的一 tick(游戏内时间单位),你就能得到锭材。 对于其他锭材,则需要进行调整。压力调节是最简单的,所以我先讲这部分。 压力调节 我们之前了解到,熔炉内置泵每一个游戏刻最多能抽出熔炉容积的10%。因此,要将压力向下调节至目标值: P = 当前游戏刻的压力。 T = 目标压力。 V = ((P - T) / P) * 1000 1000是将泵的容积设置与它所代表的熔炉容积比例相关联的系数。如果P = 16 MPa,T = 15 MPa,那么计算公式为: V = (16,000 kPa - 15,000 kPa) / 16,000 kPa * 1000 V = 62.5 将流出泵设置为62.5,就能抽出熔炉容积的6.25%,也就是1/16。 对于超过10%的压力偏差,只需将泵开满,下一个游戏刻再尝试调节。最终,你会进入一个范围,此时气泵可以开始精确地吸入少量气体以保持平衡。 降低压力很简单。 增加压力也“容易”,因为解决方法很简单。只需添加气体!你甚至不必担心过量,因为上述的超压解决方案会补偿任何多余的部分。 问题在于确保这些额外的气体处于正确的温度。因此: 调整温度 “我需要向熔炉中添加什么温度的气体?”是本指南的核心问题。具体来说,我们需要的信息是:一定单位的气体需要达到什么温度,才能将熔炉的总温度改变到目标值。这就是我们将在进料管中混合的那批气体的计划温度。在我们的设置中,接下来会提出第二个问题——如何混合可用气体才能最接近理想温度?通常计算出的温度会远超可用气体的最高或最低温度,这意味着我们需要持续向熔炉中通入纯超热或超冷气体,直到温度接近理想值,并且能够获得适合该批次温度目标的混合气体。 一旦达到理想温度,我们可以继续缓慢通入气体,其温度能够补偿熔炉可能产生的任何辐射热损失。氧气和挥发物管道应使用未混合的气体,因为容积泵可以处理任何混合情况。这样做能提供额外功能,例如可根据需求选择其中一种作为冷气使用。 控制方面,虽然理论上可以用逻辑组件完成所有这些操作,但那会很繁琐。我将介绍使用IC10驱动的熔炉管理解决方案,你需要至少一个IC外壳与熔炉、泵和分析仪连接在同一网络中。配备几个LED屏幕也很有帮助,这样你就能精确查看熔炉运行时的压力和温度。我还发现,使用图形显示电路板的控制台有助于了解熔炉的温度和压力变化。由于我们的超压解决方案仍在持续改进中,这让我们回到了之前章节讨论的机制——即恒定气流对源气体温度具有稳定作用。 这里的主要区别在于,我们通过容积泵实时合成源气体,使其达到我们所需的温度。这就涉及到一些复杂的操作了。 哦,看,数学公式。 这只是对之前比热容定义中内容的详细阐述,所以最终也不会太复杂。从A点到B点只需几个步骤。 我们通过取炉内各种物质比热容的平均值来得到炉内物质的比热容——在数据收集部分有相关示例。持续计算该数值并将其提供给你的集成电路。我们还需要每种输入气体的比热容。如果是静态进料,你可以计算一次并向脚本提供静态数值;对于变化的进料,则必须像计算熔炉那样进行计算。 从熔炉中,我们需要其内部的总摩尔数。由此得出: TT = 目标温度 TF = 熔炉温度 FN = 熔炉内摩尔数 AN = 计划添加的摩尔数 FC = 熔炉的比热容 AC = 添加气体的比热容 X = TT + ((FN * FC) / (AN * AC) * (TT - TF)) X = 为将TF改变为TT,添加气体必须达到的温度(单位:开尔文)。 你可能会注意到目前无法得知AC,但我们会对此进行说明。一些示例数值: X = 950 K + ((100 摩尔 * 26 焦/开尔文) / (25 摩尔 * 24 焦/开尔文) * (950 K - 800K)) X = 1600 K 添加25摩尔、温度为1600 K且比热容为24焦/开尔文的气体,可将熔炉内物质温度提升至目标温度950 K。 如前所述,若计算结果超出你拥有的气体的最高或最低温度,你只需向熔炉中通入任意体积的该气体,直至数值变得合理。若需要进行大幅调整,暂时降低压力以清除旧气体或许是值得的。如果你需要大幅提升温度和压力,加入少量燃料也可能是个不错的选择。 不过,若X处于你可用气体的温度范围内,我们就能进行一些更有趣的操作。我们将计算目标温度两侧两种气体的【能量差】D。我们会使用实用气体(u)和添加气体(a),添加气体可根据需求选择热气体或冷气体。实用气体将作为中间基准,我们要确定需要注入多少添加气体才能将温度调整至批次目标值。 C = 气体比热容 T = 气体温度 G = 温度目标 Du = Cu * (G - Tu) Da = Ca * (Ta - G) 注意这里的顺序是相反的——这是因为Tu是我们的【起点温度】,而Ta是朝着我们【目标温度】的方向。 如果我们尝试达到前例中的1600 K气体温度,并使用900 K的实用气体(u)和2200 K的超热气体(a): 混合比例 = Du / (Du + Da) Du = 23.203 J/K * (1600 K - 900 K) Da = 27.067 焦/开尔文 * (2200 开尔文 - 1600 开尔文) Du = 16242 焦(每摩尔) Da = 16240 焦(每摩尔) R = 16242 / (16242 + 16240) R = 0.5 我们所需的温度是两种源气体之间的能量中点,因此50/50的混合比例将使我们达到目标温度。不过,这里存在一个复杂情况。 批次比热容 目标批次温度假定所添加气体的比热容为24焦/开尔文。然而,我们的50/50混合的瓦肯大气和燃烧废气的比热容为: (23.203 * 0.5) + (27.067 * 0.5) = 25.13焦/开尔文 如果我们将这个数值代入批次温度计算,会得到修正后的所需温度为1570.65开尔文——也就是说,我们之前的混合气体温度过高,因为实际比热容高于我们的假设值,因此实际目标温度要低30度。运行上述混合计算,我们得到修正后的比例为0.489。 但请注意!细心的你会发现,0.489的混合比例会再次产生不同的比热容值,确实如此——现在的比热容值为: (23.203×0.511)+(27.067×0.489)=25.09焦/开尔文 你可以看出这个过程可能会持续一段时间,但即使经过一次迭代,我们也已经非常接近目标值了。此外,你可以通过保留上一次循环的比热容值来获得更好的初始计算点,因为上一时刻的气体混合比例会是当前计算的一个很好起点。 实际上,直接沿用前一时刻的比热容而不进行迭代计算,也是一个不错的解决方案。因此,你会遇到一些波动,这是因为气体混合不够精确,但熔炉温度仍会相当稳定。 如果你选择迭代,可以通过使用单次循环重新运行代码行来大幅减少对脚本大小的影响: main: yield move loopct 0 # 在每个周期开始时重置计数器 beq opmode 2 smelt # 循环从计数器为0开始 ... smelt: # 执行计算 # 并设置sp.heat变量 add loopct loopct 1 # 增加计数器 beq loopct 1 smelt # 如果是第一次循环,再次执行 # 在后续循环中继续设置泵 但请记住,集成电路每个周期仅执行128行代码,而我们希望每个周期运行整个循环。如果迭代会使你超过这个总量,就不要进行迭代。 修改和燃料熔炼 你知道Steam对这些部分有长度限制吗?我之前不知道。 无论如何,一旦你知道了混合气体的正确比例,只需将你所需的摩尔数乘以该值,然后计算出每个气体泵应设置为注入多少摩尔的气体。 这样就差不多解决了整个问题!既然我们已经涵盖了基础知识,那就来谈谈一些变体情况。 可能你没有公用气体供应,或者你最丰富的气体处于温度范围过低的状态,不适合矿石加工——比如你在火星上,想要使用加压的白天空气作为输入。上述设置可轻松调整为双气体配置,其中下限为冷气体,上限为超热气体。对于任何需要“公用气体”供给的情况(如矿石加工),你可以使用前一节中的气体混合计算方法,混合冷气体和超热气体,以最少的超热气体输入来达到目标温度。 在这种情况下,你的熔炼阶段实际上更简单,因为无需确定使用哪种气体组合;每次熔炼都会是冷气体和超热气体的某种组合。你还可以通过为熔炉添加一些燃料喷射功能,进一步节省超热气体。燃料喷射 虽然本指南是关于燃气驱动熔炼的,但某些目标可能会严重消耗你的超热气体供应——例如熔炼司太立合金或阿斯特罗洛伊合金时,熔炉需要大量的热气。你可能会发现,在开始熔炼批次时先加入一批燃料,然后从熔炼部分切换回精细控制回路以达到精确目标会更方便。 如果你要注入一批燃料以达到特定的温度和压力,我们可以先计算燃料燃烧的理论产热。这些计算将使用挥发性气体/氧气燃料,但如果你想使用超级燃料,同样的原理也适用。 1摩尔氧气 + 2摩尔挥发性气体 = 3摩尔污染物 + 6摩尔二氧化碳 + 572000焦耳 3摩尔燃料在293K时燃烧生成9摩尔废气,温度为要让图形控制台正常运行,你需要通过IC10或逻辑写入器持续向逻辑存储芯片写入所需数值。从控制台中选择该芯片,图形就会启动。 最后,最好为熔炉的激活/停用设置一些基本控制,包括一个能让自动化系统停止当前操作并为熔炉排气的控制。 IC10结构 考虑到所需的计算和操作数量,在构建熔炉逻辑时使用多个芯片可能是理想选择。不过,这会带来协调问题,因为多个芯片必须保持同步以避免错误。? K ? = (初始能量 + 燃烧能量) / 排气比热容 / 排气摩尔数 氧气比热容:21.1 J/K 挥发分比热容:20.4 J/K 燃料比热容:21.1 J/K * 0.333 + 20.4 J/K * 0.667 = 20.633 J/K 20.633 J/K * 3 摩尔 * 293 K = 18,136 J 多原子比热容:24.8 J/K 二氧化碳比热容:28.2 J/K 排气比热容 = 24.8 J/K * 0.333 + 28.2 J/K * 0.667 = 27.067 J/K (18,136 J + 572,000 J) / 9 摩尔 / 27.067 J/K = 2423 K 理论上这听起来很棒,但如果你尝试进行燃烧,会发现不会立即得到大量 2.4kK 的高温气体。实际情况是,气体燃烧过程较为缓慢,且随着未燃烧燃料量的减少,燃烧速率会逐渐降低。我一直没找到关于每 tick 燃烧多少燃料的精确计算方式,但我做了些实验,发现在第一 tick 会燃烧 16% 的燃料,之后这个比例会急剧下降。解决这个问题的方法有很多,但在此我推荐的方法是使用一个中央芯片来控制熔炉活动的进程,并配合功能芯片分别控制该活动的各个部分。 这个中央芯片会识别让熔炉在不同运行模式间切换的条件和触发因素,然后向其他芯片发送信号,告知它们熔炉当前所处的模式。我习惯将其命名为“运行模式”(opmode),它以整数形式呈现。 因此,中央芯片的代码如下: move opmode 0 # 默认情况,即“闲置”运行模式。brne condition_a value_a 2 # 相对分支条件移动 opmode 1 # 由第一个条件设置的模式 breq condition_b value_b 2 # 第二个条件移动 opmode 2 # 由第二个条件设置的模式 … s db Setting opmode # 将 opmode 写入 IC 外壳的 Setting 值 同时,其中一个次级芯片会像这样获取此 opmode: alias icmain d0 # 识别主外壳 main: yield # 芯片始终运行的代码放在这里,例如显示更新 l opmode icmain Setting # 加载 opmode beq opmode 1 oreprocess # 跳转到 opmode 的已定义函数 beq opmode 2 smelt # 这些函数均以“j main”结束 bgtz opmode main # 对于不在此芯片上的 opmode,返回 main # 芯片空闲时运行的代码放在这里,适用于 opmode 0 j main In the在上述示例中,芯片具有在操作模式1和2下运行的功能,其他情况下则会暂停。例如,另一个芯片可以具备操作模式3的指令,还有一个芯片可以负责操作模式4和5。以这种方式协调的芯片数量实际上没有限制。 如果需要,次级芯片也可以自行设置其操作模式。然后,三级芯片可以监控该外壳的设置并执行类似功能。只要逻辑结构确保在任何时刻只有一个芯片在运行其主动功能(即那些向熔炉和泵写入数值的功能),那么因重叠而导致错误的可能性就会降至最低。 在代码中考虑依赖关系也很重要。如果你有用于更新显示或向内存输出计算值以供通用的代码,该代码应处于无论操作模式如何都能运行的位置。如果这类功能足够多,那么专门使用一个芯片来运行这些支持性操作可能是合理的,这样你的主芯片就能节省空间用于更关键的任务。 批量名称操作:考虑到涉及的设备数量,每个芯片可能需要引用或写入六个以上的独特设备。对于像操作模式设置集成电路外壳这类只需在每个循环中引用一次的设备,通常最好避免为它们分配引脚,而是使用批量名称操作符sbn和lbn。如果你之前在IC上设置过太阳能电池板操作,应该对sb操作符很熟悉。它本质上相当于一个批量写入器,需要一个预制件ID,然后向网络上所有匹配的设备写入数据。与之对应的lb功能则相当于一个批量读取器。 这些功能的命名版本sbn和lbn会额外接收一个名称哈希参数,该参数将其作用范围限制为仅包含具有匹配预制件哈希和匹配名称哈希的设备,即网络上特定的已命名设备。 你可以使用平板中的配置卡盒来查找物品的名称哈希,也可以通过一些网站来获取特定名称对应的名称哈希。

这是50个燃烧周期,即25秒,在此期间80%的燃料已燃烧。由于我们实际拥有的能量和摩尔数比计算结果少,因此压力也较低——在50个周期时,我观察到压力为计算值的77%,温度为计算值的89%。

温度控制效果更好,这是因为较低的摩尔数使压力保持在较低水平,而燃烧产生的能量被输入到摩尔数更少且比热容更低的气体中。因此,未燃烧的燃料与已燃烧的废气相比,温度很容易升高。 顺便说一下,这就是超级燃料如此“超级”的原因。一氧化二氮燃烧与普通燃料一样产生572千焦的能量,但其反应方程式为: 1摩尔挥发物 + 1摩尔一氧化二氮 = 2摩尔氮气 + 2摩尔二氧化碳 普通燃料的输入与输出摩尔比为1:3,而超级燃料的比例为1:2,相对于产生的能量,其输出摩尔数仅为普通燃料的44%,且比热容更低,因此每升高1度吸收的能量更少!总之,所有这些都是为了说明,如果你在燃烧开始时使用燃料作为提升温度和压力的工具,那么你应该少像我们之前那样进行精确计算,而更多地将其视为让熔炉条件接近目标的粗略初步尝试。一旦燃烧速率减慢,且温度/压力没有明显变化,你就可以切换回更精细的熔炉控制脚本,将这些数值调整到所需状态。 注意事项与结论 这远非你在构建气体熔炼装置时会遇到的所有问题的全面概述,因此我会留下更多内容供你在设计过程中考虑。对于每种源气体,尤其是超热气体,容积泵每滴答可提供的摩尔数可能比你预期的要有限。如果容积泵无法提供足够的气体来满足方程式的需求,那么考虑如何调整你的计算是很有必要的。 如果冶炼过程陷入永远无法完成的状态——例如,由于插入了错误的反应物——你将如何终止该过程? 使用小输入管道向熔炉供料的技术效果很好,但你最终会想要关闭熔炉——这意味着要关闭输入。确保你有监控和故障保护措施,以防止在熔炉未准备好接收气体时,管道有任何输入气体进入,否则你会发现熔炉很快就会超压。 更一般地说,最好检查所有你阻止气体流经熔炉的情况,并确保有一些逻辑来检测这种操作是否即将导致爆炸。 从矿石中获得的气体可能很有价值,例如从银和铅中获得的一氧化二氮(N2O)。当你需要额外的熔炉温度/压力时,考虑如何最好地利用这个工具;当你不需要时,考虑如何安全地处理或收集这些气体。冶炼部分涉及的气体混合逻辑可扩展到任意数量、不同温度和成分的气体。如果你有多种原本会被浪费或排放的公用气体源,可以考虑如何将它们整合到冶炼流程中,以提供更大的灵活性,并避免消耗更宝贵的气体储备。 以上就是全部内容。 希望这些内容能对你有所帮助,因为这是我在建造自己的熔炉时希望能集中获取的信息汇总。如果我有遗漏的内容或你需要进一步澄清,请随时在下方留言。 祝你《太空工程师》之旅愉快!




换一换 




















