前言
"没玩过强冷核电的GTNH生涯注定是不完整的"
在目前版本的GTNH设计中,IC2核电扮演着游戏中期不可或缺的角色。当玩家进入EV阶段解锁了AE和各种GT++大机器后,本来就不小的供电压力又迈上了新的台阶,而靠着传统的化学能发电显然难以填充如此巨大的电力缺口。
虽然其他方案仍具可行性且效果并不逊色,但GTNH的核电倍率是10,哪怕你用以前玩IC2的那些老掉牙的普通核电方案也能有不错的输出,而像强冷这种比较极端的设计更是无比强劲。
然而,强冷核电高性价比的背后是可控性差的缺点,通过学习前人的经验,新手很简单便能寻思出一套不那么完美但勉强能用的玩意儿,即便这个玩意很可能在你的下一次不当操作后爆炸...
但是,玩核电不玩99%MOX就像是占着矛坑不拉矢...
查阅了很多资料和视频后,我很失望,没能从中get到强冷核电的要点,只觉的在一味的模仿前人的作品。Man,What can I say
利用闲暇时间不断探索,在IV阶段沉淀了半年后,便有了此篇教程的诞生。
该设计旨在性能与成本间求平衡,提出了一种在EV阶段便可建造的、经济的、安全的、可拓展的强冷核电方案。
而本文旨在教会你们如何设计、建造这样的一座核电,并令读者具备编写和调试SFM以及程序出现问题时Debug的能力。SFM程序本质就是玩连连看
声明
作者不是原教旨主义者,阶段警察们如果感觉到冒犯就不要看了,继续出警就好了~另外刷子和bug玩家也没必要看了,刷点东西然后卡个核电bug多轻松啊您说是不是~ 杂♥鱼~杂♥鱼,出警的出不明白的杂·♥鱼·管·理·
本文性质为个人教程,可能存在作者高浓度的口胡和精神污染内容。请知悉,写教程本是用爱发电,作者并无充当保姆的责任,但不意味着不鼓励读者留言提问!不是很想动Wiki那坨,也不想让人乱动我写的这坨,在我的个人教程里我作为作者的权力是无限的!
适用版本为2.6.x~2.7.x,该程序在这两个版本经过了长时间低tps运行后仍然稳定,而其他版本均未经测试 。从理论上该设计不存在受tps扰动就容易失效的组件(不绝对,看你如何定义扰动,但崩服也未使程序失效过)。
引导:如何食用本文?
在阅读之前,希望你是个mc老手,有仔细阅读任务书,参考过GTNH中文Wiki的"核反应堆"页面与"史蒂夫工厂管理" 页面,已有实践经验而非纯mc新手,否则接下来的文字对你来说全都是无稽之谈。即阅读门槛至少为科技mod入门玩家。师傅,你是干什么的?
本文的推荐食用方式为:顺序阅读。这是一篇传承功法,而不是防自学教柴,本教程并不存在如同图纸一样死板的章节。想不学原理直接抄作业的现在就可以坠机了。
为什么点击目录标题并不能准确的跳转到对应页面?因为教程很玉藻的长而网页并不会完全加载教程所有内容,把进度条拉到底再回来就可以了!
为什么长图片不能完全显示?可以通过图片底部的进度条拖动观看,也可以点击放大直接观看!每一个矛都看的 · 清↑清↑楚↓楚↓
本文的核心思想:寻找可靠的替代方案解决现有技术难以实现的环节,当组件可靠且组件间耦合可靠时,可以认为由各组件组成的系统是可靠的。系 统 工 程 !
一句话概括99%MOX恒温技术:只在反应堆停机时更换冷却单元。
电源管理的意义:减少开关发电机的频率,以尽可能的避免燃料浪费和服务器卡顿。然而频繁开关反应堆并不影响其发电效率。
善用百科和Wiki,遇到新名词可以先查查看,机器特性搞不懂可以自己开单机试试,格物致知。
探究:思路与关键问题
本章正式开始教程本体,以问答的形式介绍一些组件的关键特性。
为什么使用史蒂夫工厂(SFM)管理?SFM与OC相比有何优缺点?
与其说为什么使用了SFM,不如说我们别无选择。SFM的造价便宜(?),功能够用,非常适用于一些需要一定复杂判断功能的特定场合。更重要的是:SFM系统的运行不需要电力供应!你不用担心停电导致整个系统瘫痪!这为我们省去了很多麻烦的冗余设计。其实用OC也就是多加个掉电检测的事~
SFM功能较为简单,图形化编程上手容易,运行不耗电,但bug较多,不当使用有崩服隐患。移植性差,每次复制都需要重新填写当前系统中可识别方块的信息。
OC功能强大,但用代码编程上手较难,运行需要电力,也就是说停电会导致系统瘫痪,但一旦入门你会发现写代码比连线容易的多,且代码可以轻易复制,移植性好,容易扩展。OC的崩服能力甚至更胜一筹,且OC的运行对服务器造成的压力更大。
已知SFM有哪些bug?
不要在服务器使用触发器的"延迟触发"模式连接"红石信号发射器",这会造成崩服和无限月读,只能回档解决。"延迟触发"在服务端是有bug的,哪怕在单机模式可以运行!我知道你想模仿wiki使用延迟触发实现停机更换元件,但这样做会崩服。孩子,这不好笑
慎用"工厂贴标器",尤其不要对着同一个方块多次贴标,容易造成SFM系统不识别。在服务器中,一旦你退出游戏你贴的标就都没啦!
在使用"管理器复制器"复制程序时,请勿直接直接把程序复制到一个已有程序的工厂管理器上。因为其上存在的旧程序不会在新程序被写入时被清除,操作前也不会有对话框提醒你是否要执行覆盖,而使用过的"管理器复制器"其中的程序也会消失。 SFM是一个毫无人机功效的过时mod,尽管如此,其在自动化应用中其仍发挥着关键作用。
如何正确使用"温度监控器"?
如果不使用OC的话,我们必须使用核电控制2的"温度监控器"来实时读取反应堆堆温。
要正确放置"温度监控器",需要将其贴在以核反应堆为中心5×5×5格空间内的任意非边缘方块上。
右键打开GUI,可以通过点击按钮来设置堆温阈值,或者直接使用键盘输入。
注意看GUI数字底部的的波形标志,上升沿形状表示普通输出模式,当到达阈值温度时发出红石信号;下降沿表示反相输出模式,当到达阈值温度时不发出红石信号,而未到达阈值温度时发出红石信号。
当"温度监控器"输出红石信号时,会变红并尝试强充能临近的6个方块,但不会向临近"核反应堆"或"核反应仓"发射红石信号,我想这玩意儿大部分的使用场合都是直接贴在反应堆上的。显然这是模组作者的怜悯
注意!"温度监控器"存在bug,其强充能的方块临近的方块只有状态更新后才能接收到红石信号。一般情况下不会涉及这个BUG,但要是有人乱放方块就不好说了。
禁止将"温度监控器"贴在与核反应堆(仓)相邻的导电方块上并设置为普通输出模式,这会形成正反馈。在到达堆温时激活"温度监控器"→"温度监控器"强充能导电方块→导电方块再持续激活反应堆,从而产生核爆!
也就是说,这样做但是开启反相模式就是一个最简单的负反馈温控开关。比较无脑,无法兼容更复杂的应用场合。
那么,存在可以供温度监控器附着的不导电方块吗?有的,守卫者玻璃可以轻松做到,同时,守卫者玻璃还具备抗熔和抗核爆的特性,是一种用途广泛的防护材料,唯一的缺点就是贵。IC2保险箱也行,但是你确定会创造一块自己都拆不下来的破石头吗。
而导管框架具备不传导红石信号和抗熔特性,是一种比较经济的填充物。
注意,硬化导管框架只能抗苦力怕和TNT爆炸而并不能抗核爆,别妄想这玩意儿能有多硬。没我的硬
如何应对高堆温熔化机制?
答:找不会熔化的方块就好了。我们姑且把会被反应堆熔化的方块称作"易熔方块",把不会被反应堆熔化的方块称作"阻燃方块"。
众所周知,当你的反应堆堆温达大于其总热容的85%时,以核反应堆为中心5×5×5格空间内的方块将有概率变成岩浆。也就是说,随着时间的推移,它会熔化这个空间内所有不抗熔的方块。
很遗憾,绝大部分注册为"block"的方块都会被融化,比如大部分建筑方块,而各种红石元件、活塞、SFM的工厂线缆、GT机器方块等也会被熔化。
而几乎所有注册为"blockmachines"的方块都不会被融化,比如各种GT机器,而PR的各种门、EIO的各种导管及导管框架、SFM的功能组件、温度监控器等也不会被熔化。
如果你有尝试过流体核电,应该不难发现:"反应堆访问接口"、"反应堆红石接口"和"反应堆流体接口"也具有阻燃的特性,这也是为什么你的流体核弹出问题时总是外壳先融化。
在搭建SFM系统时,对于单个反应堆,需要至少3种部件用于对其进行控制,分别是:"红石信号发射器"、"红石信号接收器"和"工厂线缆"。而"工厂线缆"是易熔的,无法用于高温堆。
我们可以使用"高级集线器"代替"工厂线缆","高级集线器"在具备其内容物功能的同时也保留了"工厂线缆"与容器交互和连线的功能,但不与其他SFM组件合成就无法使用。
或者,也可以使用"反应堆访问接口"和"反应堆红石接口"进行代理,从而规避了易熔组件暴露在熔化范围内。
至于使用"矢量变换接口"进行代理,与前两者相比实在是小贵,还需要额外研究神秘。真的有必要使用它吗?我们有更为经济的选择。
下表列出了该教程内可能用到的阻燃方块:
所属mod方块名称Steve's Factory Manager红石信号接收器Steve's Factory Manager红石信号发射器Steve's Factory Manager高级集线器Ender IO导管框架Ender IO绝缘红石导管Nuclear Control 2温度监控器Gregtech 5能量分配器IndustrialCraft 2反应堆访问接口IndustrialCraft 2反应堆红石接口
反应堆如何向外输电?
答:使用"能量分配器"配合线缆或者其他方式进行输电。
能量分配器的本质是种变压器方块,每种电压等级都支持320A电流,可以将小于等于其电压等级的电转换为统一电压等级的电,并且可以将ICEU转化为GTEU储存在其内置缓存中并输出!
注意,要想不浪费电能,你使用的能量分配器的EU缓存要大于你反应堆每个周期的发电量!或者说,能量分配器的最大输出功率要大于反应堆的输出功率。
能量分配器+能量探测覆盖板是我们维持堆温稳定的关键出装!
如何正确使用能量分配器
注意,使用能量分配器时,我们使用默认模式(1进5出),输入面正对6个核反应仓的最外侧,禁止对着核反应仓内侧使用!这会造成ICEU转换GTEU不完全从而造成电能的浪费,极端情况下甚至无法输出电能。
为什么不直接使用线缆输电呢?不仅是因为使用线缆会造成输入损失,还因为我们无法检测线缆的工作状态,这会对我们程序的设计造成致命的影响。
如何判断反应堆工作状态(是否停机)?
答:使用"能量分配器"输电,安装"能量探测覆盖板"检测"输入功率",根据覆盖板发出的红石信号判断反应堆是否在工作。
如上文所述,能量探测覆盖板可以完美检测GT机器,因为此类"机器外壳"方块存在着能量缓存区,本质上是一种把输入的电进行整流后输出的机器(有源器件),而导线只起到确定电网拓扑结构的作用,会计算压降,但没有缓存也不会'加工'电力。
"变压器"类方块的特性是能够主动转换外界输入的不同电压等级(能量包i)的GTEU,能够主动转化外界IC机器能量缓存中的ICEU,将它们整流成统一的电压等级(能量包)输出。而"机器外壳"类方块不具备转化ICEU的能力。
"变压器"类方块按输出能力有如下种类
名称输入能力最大输出能力变压器(电压等级+1) 1A电压等级 4A高电流变压器(电压等级+1) 4A电压等级 16A高能变压器(电压等级+1) 16A电压等级 64A能量分配器小于等于电压等级的任意电流电压等级 320A其中,"变压器"类方块可以颠倒输入输出,实现升压或降压,但总输出功率不变。
"能量探测覆盖板"有6种探测模式:"能量缓存"、"电力缓存"、"蒸汽缓存"、"平均输入功率"、"平均输出功率"和"电力缓存(含电池)",和两种输出模式:"常规"和"反转"。
顾名思义,我们选择探测"平均输入功率",由于反应堆产生的功率全部在此输出,在能量分配器输出功率不小于反应堆输出功率的前提下,可以认为能量分配器的"平均输入功率"等效于核反应堆的"平均输出功率"。
而为了得到比较"干净"的红石信号输出,我们选择"反转"输出,由于其探测机制类似于红石比较器,此设置可以避免覆盖板产生较弱的红石信号。
如此设置,那么在反应堆开启,输出电力时,覆盖板不输出红石信号;而在反应堆关闭,不输出电力时,覆盖板输出红石信号,我们便得到了反应堆的停机判据。效果如下图所示
如何正确使用EIO的导管框架和绝缘红石导管?
绝缘红石导管的优点是只传导连接面的红石信号!这样能够更精准的按需求传导相邻方块发出的红石信号,避免信号"乱窜",对于空间紧凑的使用场合很有帮助。
答:"导管框架"和"绝缘导管框架"需要先在"喷涂机"中喷涂成其他方块的材质才能使用!而"绝缘红石导管"需要使用任意扳手(GT扳手、以太扳手、AE扳手)手动设置交互面。
"喷涂机"交互界面如下,放入电容可以升级其工作速度。
手持扳手时,"导管框架"会变透明以便观察和更改,破坏"导管框架"并不会将其中包含的导管一起破坏。
使用扳手右键"绝缘红石导管"任意面以建立连接,"绝缘红石导管"本身会自动与可被识别的红石元件连接。
"绝缘红石导管"也有频道设置和强充能方块的能力,右键其端口打开GUI中即可设置。
MOX燃料棒与萤石燃料棒在机制上有何区别?
答:"MOX"类燃料棒的发电加成与"堆温百分比"正相关;"萤石燃料棒"的转化速度与相邻燃料棒产热和"堆温本身(热量)"正相关。
也就是说,要想MOX发电效率最大化只需要将堆温推到99%就可以了,而想提高萤石燃料棒的转化速度需要尽可能的堆高反应堆的热容量。也就是说,使用各种"反应堆隔板"来提高反应堆热容可以有效提高萤石燃料棒的转化速率。详细公式可以参考wiki"核反应堆"页面。
谬误 — 三种反应堆隔板的真实热容
对于目前稳定正式版(2.7.0)来说,百科和wiki上对于反应堆隔板的数据均存在着错误。目前版本测得的真实数据如下:
物品名称热容量加成反应堆隔板+1000/个高热容反应堆隔板+2000/个密封反应堆隔板+500/个反应堆热容量是自动烤机的必须数据!确定要用瞪眼法挨个调教每个反应堆的堆温吗?
那么,这些数据是如何测得的呢?并不需要翻看代码,只需要在游戏内使用工业信息屏即可,对目标反应堆使用"远程传感工具",将得到的"反应堆传感定位卡片"放入"工业信息屏"便会自动计算并显示出当前反应堆的最大热量等信息。
注意!NC2的任何传感器都是一次性的,在确定反应堆位置之前不要轻易使用!
"反应堆传感定位卡片"可以在组装机分解为电路板,但造价不止这些!
燃料棒如何摆放最具效率?(堆内布局)
一般的,用于发电的最佳反应堆布局已经写在了任务书上,即40个四联燃料棒+14个冷却单元的经典强冷布局,如下图所示。
该布局实现了反应堆内燃料棒数量的最大化,同时也有着不错的效率!注意一定不要放错任何一个冷却单元的位置,否则反应堆会很快爆炸,尤其是使用了高产热燃料棒的时候。
一种高转化速率萤石燃料棒转化堆摆法
我们知道,对于萤石燃料棒,反应堆热容量越高越好。
但由于外部系统操作反应堆需要一定时间(SFM约3个周期,也就是说最少3秒),过快的转化速度反而会造成燃料的浪费,看来任务书中给出的方案也不是那么尽善尽美?
也就是说,我们需要一种比较折中的摆法,既有不错的转化速度,又能够每次同时转化复数个燃料棒...
一种使用12个四联燃料棒、4个冷却单元、33个高热容反应堆隔板,能够每次转化5个萤石燃料棒的摆法如图所示。
经计算,该堆的最大热容为76000,经过公式计算每个周期(1s)可以增加416点萤石燃料棒转化进度,也就是说,约25s完成一轮转化,每次产出5个阳光化合物燃料棒。该方案中的每个萤石燃料棒转化速度都是相同的,能够大大减少系统交互所浪费的时间,比起官方方案更适合自动化控制。
如何自动烤机(在反应堆堆温达到设定温度后停机)?
如题,使用"瞪眼法"十分折磨人。如果在服务器中,到达99%堆温取出燃料棒时刚好卡顿了的话......
答:利用"温度监控器"设计一个"保险"就好了。这个电路具有在达到设定堆温时自动切断红石信号的作用,一般的,作者推荐你使用纯硬件的保险以避免软件保险的各种不确定风险。
硬件温控保险设计
一种使用"温度监控器"、"绝缘红石导管"和"粘性活塞"为核心组件的具有复位功能的可控温控保险装置如下图所示:
如图,开机信号通过"红石灯"传导至反应堆,当拉下錾制石砖上的拉杆时激活"粘性活塞",移开"红石灯"从而断路停机。或当反应堆堆温达到设定值时,"温度监控器"发出高温信号,激活"粘性活塞",移开"红石灯"从而断路停机。
须知"温度监控器"所贴附的方块必须为非导电阻燃方块!例如"导管框架"和"守卫者玻璃"。
该装置的温控精度取决于你放入反应堆的燃料棒的产热能力,可以首先使用产热较大的燃料棒以快速升温,再使用产热较小的燃料棒精准调整温度。不要使用产热过大的燃料棒以至于无法给予保险装置充分的反应时间!
一根四联铀燃料棒每秒产热96,也就是说每个周期可以令反应堆升温不到1%,约105个周期后堆温达才到100%,是一种比较理想的烤机燃料棒。我们将温度监控器阈值设定为9900,堆温则在第104个周期时达到96×104=9984,此时激活保险并停机。也就是说,如果你设定的堆温大于9984,那么反应堆则会在升温到9984后继续工作一个周期,这时堆温为10080,在温控保险工作的同时也将核爆。
这个保险装置从本质上来说就是一个或非门级联一个与门。控制信号和温度信号输入或非门的两输入端,只有当两者均为0时,或非门才输出1至与门的输入端,在这时如果与门另一输入端输入了开机信号1,与门才能输出1,从而激活反应堆开始工作。
也就是说,你也可以使用逻辑门电路来制造这样一个温控保险,但这样的保险装置延迟较大,浪费空间且成本高昂,不推荐使用。
如何导出被夹在方块内部的覆盖板发出的红石信号?
如题,大部分多方块机器的主机方块都被嵌在机械方块里,只露出一个正面,而正面是无法安装覆盖版的,大化反就是个典型的例子,有什么办法能引出贴在主机方块侧面的覆盖版发出的红石信号吗?
答:在主机方块旁边放置仓室并使用"使用红石信号发射器"和"红石信号接收器"覆盖板。
歧义—红石信号发射/接收器覆盖版的命名与用法
"红石信号发射/接收器"覆盖板的命名可能存在着一些争议,按照目前的命名,可以这样理解:
发射指的是从发射器处接收红石信号,按设定频率转换为无线信号发射给接收器,即从此面接收红石信号。
接收指的是从发射器处接收设定频率的无线信号,转换为红石信号后发射出去,即从此面发射红石信号。
也就是说,命名中"发射"和"接收"的是无线信号而不是红石信号,覆盖版本身起到一个桥梁的作用,而这座桥是单向的,请务必分清楚谁是进谁是出。
"红石信号发射/接收器"覆盖板可以直接通过合成切换"内"和"外"模式。
"(内)"指的是,覆盖版发射/接收所安装的方块本身产生或传导的红石信号。
"(外)"指的是,覆盖版发射/接收所安装的方块相邻的外部方块产生或传导的红石信号。
在大多数需要传导红石信号的场合,我们都用"外"模式,毕竟覆盖版这玩意儿只能贴在GT机器或框架上,而这些方块却又大多不导电。
如下图所示,轻松导出维护提示覆盖版发出的红世信号。
普通发射/接收器覆盖版的可以通过组装机配方合成进阶覆盖版
注意,"进阶红石信号发射/接收器"覆盖板与普通"红石信号发射/接收器"覆盖板不共享频道!
"进阶红石信号发射器"覆盖板可以使用"反转"模式来反相输入的红石信号。
"进阶红石信号接收器"覆盖版内置"门模式",可以选择与门、或门、与非门、或非门四种逻辑,并不限同频发射器的数目(应该是有极限的,但一般场景我们用不到这么多输入端),你也可以选择"模拟"模式把他当作普通的接收器来用,"模拟"模式只支持一个发射器。
什么是电源管理?电源管理的意义?
答:参考现实中的手机和电脑,电源管理都是必不可少的存在,通常把该功能集成到一块芯片上。简单来说,电源管理就是用电策略和充放电策略,是为了更高效的使用电源和保护设备而存在的。尤其是在电网中,电源管理是维持电网稳定的关键技术。
在GTNH中,通常我们的电网都是由"发电机"、"能量缓存设备"和"用电器"组成的,而强冷核电是一种发电机为IC2核反应堆、缓存设备为蓝波顿超级电容库的特殊电网。由于用电需求并不稳定,我们需要合理控制发电,在用电高峰时不跳电,在不用电时也不浪费燃料发电。
从特性上来说,单方块发电机是最方便省心的:直接消耗燃料生产EU,没有用电需求也不浪费燃料。
核电从各种意义上来说都是清洁能源:无污染、开机不须预热、直接输出电力。但这玩意只要开机,即便是能量缓存溢出了也不会自动关机。只要简单的阈值开关就能轻松控制核电。
而GT的多方快发电机就更夸张了:污染高、开机需要预热、输出不稳定、需要消耗额外材料(如转子、助燃剂等),满足必须特性(如助燃剂必须充足否则吞燃料)。要处理这种垃圾电,我们就需要花一点心思了。
"蓝波顿超级电容库"或"能源站"这类大规模能量缓存机器是整个电网的核心枢纽,我们可以根据其余电进行电源管理设计,即根据其实时电容量来控制发电机组的启停。
电量阈值开关
单阈值开关是一种十分简单有效的电源管理策略,适用于不须预热的发电机。
思路如下图,当电网剩余电量低于阈值时则打开发电机,当电网剩余电量高于阈值时关闭发电机。简单粗暴,但频繁的开关行为会造成服务器压力。
乒乓式双稳态阈值开关
双稳态开关比起单阈值开关略显复杂,但适用于绝大多数发电机。
比起单阈值开关,双稳态开关需要读取两个阈值,即"低电量"阈值和"高电量"阈值,并新增一个表示电网充放电状态的"行程"变量,根据电网充放电状态选择"充电"策略或"放电"策略。也就稍微饶了俩弯儿,不是么?
开始时,电网电量低于"低阈值",此时为"充电"周期,开启发电机发电直到电量突破"高阈值",此时为"放电"周期,关闭发电机,直到电网电量低于"低阈值",重复这个循坏。
乒乓式双稳态阈值开关可以显著减少发电机组的开关频率从而减少发电机频繁预热造成的燃料浪费和服务器压力,而对比单阈值开关也不会增加太多成本,从需求上来说也并不需要更复杂的设计了,非常建议给你的通化做上这么个玩意儿!
NC2工业信息屏如何显示兰波顿超级电容库的信息?
答:使用"GT传感器"或"数据发射器覆盖版",推荐使用"数据发射器覆盖版",因为其能够重复利用。
未升级的"工业信息屏"需要红石信号才能激活!其内部GUI的数字代表对应的行,可以点击数字前的方框自行删减不需要显示的信息。
注意!蓝波顿超级电容库的致命BUG
非常有必要单独开一个标题去说明!蓝波顿超级电容库存在致命缺陷!那就是:
在服务器中,当你的电容库的多方快结构未成形时,若往主机上贴覆盖版会造成立刻崩服并无限月读,只要该区块被加载就会触发崩服!
所以不要急于给刚放下的电容库主机方块贴能量探测覆盖版!
强冷系统硬件设计
一座优秀的核电站应该具有以下特点:
安全稳定:硬指标。
防呆:从设计上减少给人犯错的机会,标准的操作流程能从源头避免核爆。防呆不防傻啊~
经济:尽量压缩建造成本,以减少你的坐牢时间。
易维护:简约紧凑的布局,科学的走线,合理的规划空间。
可拓展:便于堆核以提高发电。
美观:优秀的设计不需任何雕琢,天生便是美的。任谁见到印度电线杆一样的东西都会无法避免的焦躁,而令人赏心悦目的构造能舒缓人的情绪,
本章开始便是教程的"作业"部分,作者的设计并非最优解,如果你有特性更优秀的设计请不要吝啬,分享出来给大伙瞅瞅吧!
最小系统
要想一座强冷核电站正常运行,如下每个要素都必不可少。
至少一台核反应堆。
至少一台真空冷冻机。
一台蓝波顿超级电容库(不推荐使用能源站,性价比实在是太低了)。
控制系统、外置逻辑电路、必要的缓存容器。
这里比较推荐的做法是,为蓝波顿超级电容库和真空冷冻机机组单独分配一个区块,将反应堆安排在其他区块,以便走线。
加上电容库和冰箱,单区块平面最多可以放下10个反应堆,但这会非常拥挤,而且浪费电容库的IO资源。
不要将核反应堆或核反应仓放置在区块边缘!偶尔会造成反应堆无法正常加载,原因不明。
如果不在设计之初预留好拓展位的话,到后面不够用就只能重建了,bro,这真的很痛苦。
最小可控反应堆单元设计
一个最小可控反应堆单元由如下四部分组成。
6仓核反应堆:最基础的组件。
外置温控保险:反应堆使能和烤机必须组件。
SFM的各种IO组件:红石信号接收器、红石信号发射器、高级集线器等等交互用组件。
能量分配器和能量探测覆盖版:电力输出组件和反应堆状态反馈组件。
这样的"单元"具备良好的可拓展性,以便使用SFM统一控制,默认情况下一台"工厂管理器"可以容纳最多511条命令,也就是说每个"单元"相应的控制程序也能在其中堆叠,而不必给每个"单元"都配一台工厂管理器。
这样一个"单元"的建造过程如下图所示:
先确定"基座"位置,作者选择下置能量分配器以便后续走线。
别忘了设置好能量探测覆盖版。
接下来放置SFM相关组件,一个"红石信号接收器"紧贴"能量探测覆盖版"有"能量探测器"的一面,以接收反应堆"停机判据"信号.
与任意SFM组件合成的"高级集线器"紧贴核反应仓,用于与反应堆进行物品交互。推荐使用"伪装方块"与"高级集线器"合成,"伪装方块"造价便宜且不为SFM系统引入多余的端口。
而"红石信号发射器"用于输出开机信号,我们把它紧贴在"温控保险"红石灯侧面,别忘记在写程序时将开机信号设置为"强充能"。
你应该发现了。"红石信号接收器"、"红石信号发射器"和与"高级集线器"相邻的"核反应仓"的位置处于相同xz坐标上,这有利于方便我们后续程序的编写,减少"工厂贴标器"的使用。
如下图所示,不难看出,红色玻璃所填充的区域是高堆温会造成熔化的区域,在该区域内的方块全部为"阻燃方块",不会被熔化而造成失效。
该方案是不使用"代理"的纯"直触"方案,如果你不想制造"伪装方块",也可以选择用"反应堆访问接口"进行代理,如下图所示,只须把"高级集线器"与"红石信号接收器"合成放置在原"红石信号接收器"位置,再把"反应堆访问接口"放置其上。
然而,虽然该"单元"在功能上已经不缺什么了,但仍存在着巨大的问题:高堆温时会着火!
如果火只烧在反应堆上其实还无伤大雅,但一旦烧在"能量分配器"上,GT的机器机制就会开始发力,着火的机器有概率爆炸!最好用阻燃材料将这些空隙填充起来,"导管框架"是比较经济的选择,而且可以模仿绝大多数方块的贴图。
你看,这样做不仅解决了烧火的问题,还能让你的反应堆更加美观,何乐而不为呢?使用"红石灯"传导红石信号,也能够方便的观察到反应堆是否开机。
通常情况下,我们把两个这样的单元并联在一个工厂线缆上使用。单个区块平面内,推荐建造4个这样的"单元"。
注意不要把工厂线缆放在高堆温熔化机制作用范围内!
电源管理电路设计
对于单阈值开关来说,只须一个"能量探测覆盖版"根据需求设定"能量缓存"探测阈值即可。
举个例子,你的蓝波顿电容库有9个IV蓝波顿电容,也就是说总容量为5,400,000,000EU,你想把阈值设定为50%,就把能量缓存探测数值设定为5,400,000,000/2=2,800,000,000EU。
再用一个"红石信号接收器"引入至SFM系统即可。
而对于乒乓式双稳态阈值开关,还需要一个外置电路用来表示电网充放电状态,我们先回顾一下原理图。
也就是说,需要在充电行程到达高阈值电量时发出一个红石信号,即满电信号;而在放电行程下降至低阈值电量时也发出一个红石信号,即缺电信号。
在设置"能量探测覆盖版"时,我们便将检测低阈值"缺电信号"的覆盖版切换为"反转"模式,即电量小于该值时发出红石信号;而检测高阈值"满电信号"的覆盖版维持"常规"模式,即电量大于该值时发出红石信号。
注意,阈值是我们自己按需要设的,上图的"低阈值"为总电量50%,而"高阈值"为总电量80%。这个范围越宽,开关机频率越低,但过低的值不利于电网储存电能。
那么,如何将两个电平信号按有无转化为一个电平信号呢?使用RS锁存器吧!相信学过数电的同学不会陌生。万恶之源
只要将两信号各接在RS锁存器的两端,RS锁存器即可将其两侧输入信号转换为电平信号,以方便使用SFM红石信号判断程序。
你可以直接使用PR的单方块RS锁存器。
以PR的RS锁存器为例,简单介绍该装置的原理。
该装置有两个输入端R和S,两个输出端Q和Q非,在该例中我们只使用一个输出端Q。
默认情况下,输入R=0,S=0,输出Q=0;R=1,S=0时输出Q=1;R=0,S=1时输出Q=0;理论上不允许R=S=1,定义此时输出为0。
在实际使用过程中,R和S同时为0时即为初始充电状态,此时输出Q为0;
当电网充电至高阈值时R=0而S=1,此时Q输出为1,电网进入放电状态;
当电网放电至低阈值时R=1而S=0,此时Q输出为0,电网进入充电状态;
周而复始。
如果你不想做PR的RS锁存器,也可以使用原版红石电路制作的锁存器。原版RS锁存器翻转速度不如PR的,但用在该例中也足够了。
如图所示,一种比较简洁的原版RS锁存器由2个面对面放置的"投掷器"、两个"红石中继器"和至少一个"红石比较器"组成,别忘了在任意一个投掷器中放一个任意物品。
没有放入物品的投掷器即为输出Q,其下路即为R,旁路即为S。
与PR的RS锁存器相比明显更加占用空间(在原版科技里甚至是节省空间的设计),且造价也不比PR的便宜到哪去,原版方案仅提供缺少模组时的参考作用。
同样的,我们使用"红石信号接收器"将电网充放电信号引入SFM系统即可。
一种九宫格强冷核电规划
好的开始并不意味着成功,而糟糕的开始一定意味着以后做什么都会受到糟糕的影响。与其造成一坨然后矢上雕花,不如一开始就别弄成一坨。
我想对于绝大多数GT人来说,"规划"二字并不陌生。具有丰富经验和优秀设计能力的选手总能提前为各种功能建筑留好空位以便战个未来,而不是把一切堆成一坨然后拆东墙补西墙。对于这类聚焦于"工艺"的整合包,减少拆卸、维修系统所占用你的精力就是增加突破阶段的精力,你也不想重做十次甚至九次铂处理罢(呕。
核电作为一个横跨至少4个阶段的发电建筑,是十分值得我们研究的。一个不需要大拆大补,只需要随着发展更换某些组件的规划就显得十分有价值。
根据经验,6~8个核反应堆已经足够游戏中期使用了。
如果发电不够可以接着堆核,输出功率不够可以更换能量分配器和线缆,那么根据该思路不难得出如下规划:
如题,若一个区块最多只建造4个反应堆单元,4个区块就有16核,通过升级迭代足够满足我们的使用需求。而已知蓝波顿和冰箱占据一个区块,容易得出一种占地面积5区块的强冷核电布局,即中心区块放置电容库、冰箱和工厂管理器及必要的逻辑电路,与其相邻的4个区块放置核反应堆。这种类似于PCB板的设计非常便于走线和日后更换元件!
如图所示,该设计能高效利用蓝波顿超级电容库底面中心的9个方块,在这9个方块之中,最中心方块为动力仓,用于给真空冷冻机供电,周围的8个方块为能源仓,用于接收反应堆产生的EU。自然而然地,冰箱需要位于电容库的下方。
这种设计最大的好处之一是能够充分利用蓝波顿超级电容库的IO资源,换句话说,电容库上所能承载的仓室是有限的,这样做能方便我们将电力从侧面引出到AE网络再通过P2P传递到我们需要的任何角落!
把SFM的工厂线缆埋在地面,减少反应堆和电容库所处平面上的走线,也方便我们后期升级维护。
强冷系统SFM软件设计
这是本教程最为关键的一章,即SFM程序的编写,这也是真正难倒大多数人的一步。从程序的设计到落地使用,作者将一步步带你走完整个流程。
用于强冷的SFM程序的本质就是根据各个端口接收到的物品判断和外部红石信号,决定是否发射开机信号启动反应堆的扫描流程。
有学习过单片机的同学应该不难理解,几乎所有的程序都遵循着上述方式运行,除非你把它写死了......
部分SFM基础命令的用法及特性
在设计SFM程序之前,我们应该先了解SFM为你准备的各种命令的用法,以及一些相关的机制,否则谈何设计?编程就像盖房子,而我们需要从烧砖的这一步就开始了解。
对于强冷核电来说,这些命令已经足够使用了,其他偏门的玩意儿如果感兴趣可以自己查一下用法,B站上甚至有作者的视频教程。
基本概念:方向、探测面、输出方向
要想正常使用各种命令,首先我们必须弄明白"方向"在SFM系统中的概念。几乎所有的SFM元件都需要事先指定方向才能使用!或者说,SFM系统具有精确到面的交互模式。为什么不弄个智能识别
SFM系统的交互方向,指的是从SFM元件指向被交互方块的方向。
举个例子:
上图中要想正常激活活塞或者与箱子进行物品交互,需要在对应的命令中选择"上"方向;相反,如果想要激活红石灯或者与容量进行物品交互,需要在对应的命令中选择"下"方向。
如果是水平面相邻的方块,交互方向就自然按规则选择"东"、"西"、"南"、"北"。
当然了,如果你嫌麻烦可以把东南西北上下都选上,但我只推荐选择要用到的那一面,以避免产生奇怪的问题。
触发器
触发器是所有程序不可缺少的环节,它决定了你的程序以何种频率,以何种规则运行。
默认模式即"在范围内"的触发器每个时间区间激活一次命令。
默认模式的命令激活十分僵硬,使用"红石控制"模式以通过外部信号控制命令的激活。"红石控制"模式的本质是一个可控时钟。
如下图,需要一至少一个"红石信号接收器"或包含其的集线器方块才能够正常使用该模式,设置为"反向选择"以反转输入信号。
注意!该命令的翻译有误,命令下方四个引脚的正确翻译依次为:"上升沿瞬间触发一次"、"高电平持续按周期触发"、"持续按周期触发"、"下降沿瞬间触发一次"。
弄明白"红石控制"触发器的用法,我们便有了控制程序的开关,在系统关机或维护时能够按需关闭程序。你也不想对着反应堆来个热插拔检修吧?想啊,很想啊
物品输入端&物品输出端
物品输入和输出命令是SFM系统和外界进行物品交互和物流行为的命令。
顾名思义,物流方向是从"物品输入端"所选择的容器到"物品输出端"所选择的容器。
物品输入输出命令由三个部分组成:物品栏选取(指定容器)、方向(指定交互面)、物品设定(指定过滤)。
物品输入输出命令的使用方法如下,左键搜索框输入文字进行搜索,需要等待一段时间,待出现物品图标后左键选取该物品到名单中,名单有白名单和黑名单两种模式,顾名思义,右键物品图标可进入详细设置,可以设置检测物品的数量是否到达指定的值。
SFM准备了六种物品检测模式,分别是
"精确检测":检测不带NBT的物品,或者说NBT为默认值的物品。这个检测模式由于要求过于苛刻很少使用到
"独立检测NBT":检测NBT数据和设置相同的物品。这个检测模式是被最广泛使用的
"模糊识别":检测同种但NBT数据不同的物品,只要是同种物品就能被检测,不管状态如何,比如掉了耐久的工具和盔甲。这个检测模式用来检测带耐久度的物品
"矿物辞典支持":检测带有相同矿物辞典标签的物品,比如沙子和红沙都带有标签"sand"。比不过矿典过滤卡的一根毛
"Mod Detection":即模组识别,识别相同mod的物品。EIO同样支持模组过滤
"全部,忽略附加数据":只要容器内有物品,不为空就能通过检测。常用来检测容器非空
注意,SFM系统不缓存物品,只是物品的搬运工~
所有物品输入输出端指令并不会按你的连接顺序运行!也就是说,输入输出不分先后,只遵循过滤规则!无论你用什么方式去连接,只要是同一个周期内被激活的物品输入输出端,都算,而这涉及到了你写的程序如何被编译。
由于物品输入输出端不按连线顺序激活,在同一个程序里的不同输入输出必须设定好过滤,否则带来的后果就是物品在你的各种容器之间乱窜!在核电中,这样带来的后果将是灾难性的!
物品条件判断器
物品条件判断器的详细用法与物品输入输出端相同,只不过物品输入输出端以物流过滤的形式输出检测结果,而物品条件判断器以激活下一个命令的形式输出检测结果。
类似的,物品输入输出端有黑白名单模式,物品条件判断器也有"全部满足(与)"和"至少满足一个(或)"模式,能够让我们轻松实现一些简单的判断逻辑。
物品条件判断器是SFM系统在强冷核电中唯二有用的条件分支命令,是组成程序最关键的关节之一。
流向控制器
SFM中流向控制器的作用十分好理解,那就是将触发信号"一分多"或"多合一"。
很遗憾,流向控制器目前只支持固定模式,即"一分二"、"二合一"、"一分五"、"五合一"。
分离设定不会影响到触发信号的传导,但若使用其连接物品输入输出端的话,物品分配模式会受到分离设定的影响。在本教程中该命令只用来路由触发信号,不讨论分配物品的情况。没什么研究的欲望
注意,在需要级联流向控制器的情况下,如果你的程序对触发延迟敏感,请尽可能的保持所有输入端在同一级(输出端同理)!
红石信号发射端
顾名思义,红石信号发射器的作用就是根据SFM系统程序设定向外发射红石信号。红石信号发射器发射红石信号可以精准到面,也可以选择"强充能"模式。
注意!红石信号发射器是没有"自动复位"功能的!被写入了状态的发射器在被拆掉之前会持续保持这个状态,除非你给它写入新的状态!
红石信号发射器可以选择多种输出方式,这里的输出全部为电平信号。
"固定":即触发后输出固定强度的红石信号,可以输入0~15,这是最常用的输出模式。
"循环开关":即每被触发一次反转一次红石信号电平,类似于一个D触发器,低电平红石信号强度即为0,高电平即为15.
"最大值":输出0到你输入的数字这个区间的最大值,即你输入多少它输出多少,如果输入0则其最大值也为0。不推荐使用该命令。
"最小值":同理,输出0到你输入的数字这个区间的最小值0。该命令有BUG,无法正常覆盖掉已经被写入过状态的发射器,故不推荐使用该命令。
"递增":每收到一次触发信号增加你输入数字的值的红石信号强度。举个例子,对于初始状态输出为0的发射器,输入数值3,选择递增模式,则每触发一次增加3的红石信号强度,第五次触发时强度增加到15,也就是最大值。
"递减":同理,每收到一次触发信号减少你输入数字的值的红石信号强度,直到归零。
"递增循环":同递增,但每次红石信号强度递增到15时,从(0+上次递增到15后的余数)开始递增。
"递减循环":同递减,但每次红石信号强度递减到0时,从(15-上次递减到0后的余数)开始递减。
"递增/递减"模式类似于计数器,而"循环递增/循环递减"模式类似于计时器。为什么不使用红石计划呢?
"脉冲"模式即将触发信号转换为能自定义脉宽的红石信号脉冲,并保留输出特性。也就是说,把本来的电平信号按设置替换成制定了脉宽的脉冲信号。
"脉冲"模式的四个选项与红石信号发射器的历史状态有关。以红石信号发射器的历史状态为基础电平发射脉冲。举个例子,本来发射强度为5的信号,你设置为脉冲模式,什么都不会发生,再更改信号强度为1,你会发现发射器不被触发时信号强度为5,每次被触发都会有一段预设脉宽的强度为1的脉冲。
至于"延申旧的"、"保持所有"、"保持旧的"、"保持新的"这四个选项,原谅我暂时没看出来有什么区别,毕竟有着触发器的前车之鉴,我无法再相信翻译了,很多特性都是游戏内测得的。SFM就是有很多五花八门的功能但就没人告诉你该怎么用,如果是我孤陋寡闻了的话请在评论区留言。
红石条件判断器
红石条件判断器可以检测"红石信号接收器"所接收的红石信号或"红石信号发射器"所发射的红石信号。
如图所示,红石条件判断器可以精准到面的进行信号检测,还可以勾选"反向选择"以反转接收到的红石信号。
红石条件判断器是SFM系统在强冷核电中唯二有用的条件分支命令,是组成程序最关键的关节之一。
不得不说,该命令能够检测到红石信号发射器发出的信号是很绝妙的设计,这样就能在程序内反馈了,免去了增加外部电路的麻烦。
命令组&节点组
有的时候,你的命令实在是太多太复杂了,以至于一整个屏幕都塞不下......
命令组和节点组便是为此而诞生的!这两个命令能够轻松将其他命令打包,妈妈再也不用担心我的屏幕不够用辣!
命令组的使用很简单:创建一个新命令组,起个好名字,打开它在里面写程序就好了,通过拖拽命令可以自由使其移入或移出命令组。
注意!直接删除命令组会导致其中包含的命令直接天女散花在你的屏幕上!所以如果没有把握不要随便复制整个命令组,作者至今没能找到删除整组命令的方法。
而节点组就是作为命令组的端口或者说桥梁而存在的。顾名思义,作为整个模块的端口,节点组一般位于程序模块的首端和末端,用于输入和输出触发信号。节点组必须放置与命令组中使用,而一个命令组最多支持5对输入输出节点。
如果不能将程序模块化,那么写程序的过程将会令人十分痛苦,尤其是SFM这种连连看程序,不然光是控制一个反应堆的程序就够占满整个屏幕了。
值得一提的是。命令组和节点组本身也占用了单个工厂管理器的最大命令数,所以说,在写SFM程序的时候,套娃并不是越多越好!
强冷程序模块化设计原理
有学员反应,Wiki上的核电教程版本太老,写的太笼统,看不懂,凉席皮,你就不会自己设计一个给他看看吗?强冷课堂,手搓SFM强冷程序,现在开课!
言归正传,当我们熟悉了SFM系统给我们准备的命令后,就可以开始画流程图了,画流程图可以帮助我们理清思路,提前发现设计上的不妥之处,将设计风险前移。分层设计的思想可以把看起来难以完成的工作分摊到各个环节,鳞次栉比的层次感与优雅的分割比例便是'美'本身。
本章提出了一种模块化设计的SFM程序,旨在能够稳定运行的同时具有良好的可读性,以便在实用的同时加深读者的理解。换句话说,该设计大可不必囿于SFM,只要能在每个环节找到合适的替代!
整体—主控程序:可控时钟+子程序
如图所示,主控程序由一个可控时钟和若干反应堆控制子程序组成。
在设计主控程序的时候,我考虑了安全性和服务器友好这两个因素,具体表现在可控时钟的设计上。
为什么要用可控时钟呢?因为不想SFM程序在核电关机时仍然运行,以减少对服务器资源的消耗。
为什么要在开关程序之前刷新各红石信号发射器端口状态(强制关机)呢?因为你无法确定什么时候崩服会造成你的红石信号发射器卡在发射红石信号的状态,这和单片机程序使用前先定义端口电平是同样的道理。
这样做,我们便能够确保开机时和关机后反应堆均为停机状态,且只有使用时激活程序。
子程序—安保程序、电源管理与更换程序
每个反应堆控制子程序都对应着一个最小可控反应堆单元,即"一硬一软"。实际上有更先进的办法录入子堆数据(get函数)和管理子堆(也是函数),但奈何SFM它不支持啊,没办法啦,只能穷举法了。
如图,反应堆控制子程序由三部分组成,分别是"安保程序"、"电源管理程序"和"更换程序"。
其中,对于普通发电堆,我们只需要更换其冷却单元和枯竭的燃料棒就好了,注意,无论何时,更换冷却单元的优先级为最高!
而对于转化阳光化合物的反应堆,只须增加一个"萤石-阳光化合物燃料棒更换程序"就好了。
只有当安保程序、电源管理程序通过,各个更换程序都没被激活时,开启反应堆!这样做便能确保整个流程的安全。
安保程序
也许同学们会有疑问,为什么没有把温控放在安保程序里?对此我的回答是:温控不配出现在每个命令都要占用宝贵内存空间的程序里。
那么,为什么我会这么说呢?
第一,我们已经做了外置的硬件温控保险,这套保险系统独立于软件运行且有tick级别的响应速度,而SFM每个周期最小也得是1s(20tick),这显得软件温控变得多余。
第二,当你的堆温来到99%时,任何温控保险都将失效,因为更进一步就是核爆了。温控保险存在的意义在于为你自动烤鸡,只要你算出目标温度然后填在NC2温度监控器里。
那么,剩下的安保手段就只有'检测反应堆状态是否正常'这一种思路了。参考了很多前人的设计,其中我认为最必要的两条是"冷却单元检测"和"满堆检测"。只要正确摆放了反应堆内的冷却单元和燃料棒,靠着这两条检测不会出现什么逆天的情况。
电源管理程序
其实对于核电来说,我们只需要一个简单的单阈值容控就可以了。核反应堆不存在开机预热的设定,而如果你深入研究过IC2核电也能发现一种名为"脉冲堆"的设计,便是依托于核反应堆这一优点。
但制造一个双阈值容控也并不复杂,只需要很简单的外置逻辑电路,不会为我们增加什么成本。更何况双阈值容控可以大幅减少核反应堆的开关机频率,从而为我们节省宝贵的服务器性能。
单阈值容控的原理非常简单:即一个阈值开关。
双阈值容控的原理并不复杂:增加一个代表电网状态的"行程"变量,据其选择高或低阈值策略即可。下次也还说非常简单!
电源管理程序存在的意义除了帮助我们节省核燃料,本身还是我们判断反应堆工作状态,得到"停机判据"的基石!有没有想过,当蓝波顿电容库被充满,能量分配器内的EU便不再输出,能量探测覆盖版将失效,得到的判据永远都为"停机",如果这时候运行"冷却单元更换程序"便会出现危险操作,然后瞬间爆炸!
反应堆内容物更换程序
任何"更换程序"运行的前提都是能够得到准确的"停机判据",以确保只在停机时进行更换操作,避免任何"危险操作"导致的热量积累。这是保证99%MOX核电安全运行的核心技术。
无论是更换冷却单元也好,更换燃料棒也罢,我们只在一个程序周期内更换一种物品,以维持物品所处的位置和避免物品到处乱窜,这一点至关重要。当整个流程需要更换多种"内容物"时,我们须分清孰轻孰重,安排合适的更换顺序(优先级)。显然,更换冷却单元是最重要的事。
再次提醒一遍,这个程序的本质是根据外部信号判断是否发射开机信号,也就是说,任何一个条件的不满足最后指向的结果都是"关机",而开机的条件则是唯一的,那就是通过了所有"考验"。
现在,把所有的程序模块按顺序首尾相连,整个程序便能按设计要求运行了,所谓高内聚低耦合,不过如此。如此设计的好处不只是条理明晰,还能为后续的检修工作提供方便。毕竟一个刚出厂的新程序,Debug是其不可避免的环节!
实战!SFM程序的编写与技术细节
再了解了原理后,我们便可着手于实践了。
须知,纸上得来终觉浅,唯有实践出真知。再优秀的理念,如果不和现实接轨,那也是空中楼阁,中看不中用的东西!
读到这里,如果在座的你真的把每章都弄明白了,那即便不看本章,也能够凭借自己的实力去完成作业了,吗?
其实还剩下一块硬骨头要肯,这块硬骨头叫做"技术细节"。它把自己隐藏的非常好,只会在第一次时冒出来,被解决了就不会再为难你了,每种不同的路径它都各不相同,但解决他们的方法却雷同:那就是实践。不是让你拿着石剑去山西煤矿和凋零骷髅battle
勇敢的少年啊,快去大do特do吧!
主控命令
按上一节我们设计的流程图,不难在SFM中搭建出这样的命令组。
"CLOCK"即为系统总控时钟,是一个设置为"红石控制"的触发器,开关机激活"SHOTDOWN"程序重置所有红石信号发射器的信号强度为0,当外界持续输入红石信号时,激活时钟,按设置周期触发子程序,这里取最小周期(1s)以获得最快的接口状态刷新率。
在这里有两组子程序,分别对应"常规发电堆"和"萤石棒转化堆"。
"常规发电堆"和"阳光化合物转化堆"的程序如下图所示,使用单阈值电源管理的程序能够多节省2个命令数。
使用"单阈值电源管理"的发电堆子程序命令数为27;
使用"双阈值电源管理"的发电堆子程序命令数为29;
使用"单阈值电源管理"的转化堆子程序命令数为35;
使用"双阈值电源管理"的转化堆子程序命令数为37;
而单个工厂管理器的命令容量为511,16个使用"双阈值电源管理"的发电堆所占用的总命令数为16×29+8=472个,并未到达极限。
注意,当一台工厂管理器中包含了太多命令时,注视它也会造成严重的掉帧和卡顿!BYD天域使魔的强有力竞争者
判断和检测命令
各个命令的详细设置如下
"CLOCK"为输入节点,用于输入触发信号。
"CltFilled"为物品条件判断器,用于检测核反应堆内是否有足够的冷却单元,在这里"物品栏选取"对应的核反应仓,"方向"如实选择,"特定数量"为14个,检测逻辑为"至少选择一个",检测模式为"模糊识别",选择你使用的冷却单元设置,也可以混用不同种类的冷却单元。
"RctFilled"为物品条件判断器,用于检测反应堆是否被填满,在这里"物品栏选取"对应的核反应仓,"方向"如实选择。检测逻辑为"至少选择一个",选择任意物品,比如圆石,"特定数量"为54,也就是反应堆的最大容量,检测模式为"全部,忽略附加数据"。
"Capicity"为红石条件判断器,接收阈值开关也就是能量探测覆盖版发出的红石信号,红石信号接收器和对应方向的探测面需要自行设置,当电容量达到设定阈值时,覆盖版不再输出红石信号,检测模式为正逻辑。
"CapThsymbol"为红石条件判断器,接受外置电源管理逻辑电路发出的红石信号,红石信号接收器和对应方向的探测面需要自行设置。
"LowCapTh"为红石条件判断器,接受低阈值开关能量探测覆盖版发出的红石信号,红石信号接收器和对应方向的探测面需要自行设置。该命令为真时即电量低于低阈值时进入下一步,否则关机。
"HighCapTh"为红石条件判断器,接受高阈值开关能量探测覆盖版发出的红石信号,红石信号接收器和对应方向的探测面需要自行设置。该命令为真时即电量高于高阈值时关机,否则进入下一步。
三个命令检测模式均为正逻辑,须严格按照程序逻辑推导出外部电路的设置。
外部电路如图所示,在前文中已经详细说明过该电路的用法。使用"红石信号发射/接收器(覆盖版)"引出电容库上俩能量探测覆盖版发出的信号,具体位置自行配置即可,也可以只用一个"红石信号接收器"分不同的面来接受这三个红石信号。
"CltRunOut"为物品条件判断器,检测核反应堆中是否有耗尽的冷却单元,真则进入冷却单元更换程序,假则进入下一步。反应堆位置和方向需要自行配置,这里检测逻辑为"至少满足一个",检测模式为"独立检测NBT",物品选择你使用的冷却单元,通常检测5个百分数就足够了,对于热容量更大的冷却单元可以适当放宽检测量。
"RodDeplete"为物品条件判断器,检测核反应堆中是否有枯竭的燃料棒,真则进入燃料棒更换程序,假则进入下一步。反应堆位置和方向需要自行配置,这里检测逻辑为"至少满足一个",检测模式为"独立检测NBT",物品选择你使用的燃料棒的枯竭版本。
"TransCpl"为物品条件判断器,检测核反应堆中是否有阳光化合物燃料棒,真则进入萤石燃料棒更换程序,假则进入下一步。反应堆位置和方向需要自行配置,这里的检测逻辑为"至少满足一个",检测模式为"独立检测NBT",物品选择"阳光化合物燃料棒"。
"START"和"STOP"为红石信号发射端,用于发出开机信号,红石信号发射器的位置和发射方向需要自行配置。START即为开机,发射强度为15的强充能红石信号;STOP即为关机,将红石信号发射器的所有面的信号强度都置为弱充能0。
"AltClt"为物品条件判断器,检测存放新冷却单元的容器内是否有充足的冷却单元,真则进入反应堆停机检测,假则关机。冷却单元的存放容器的位置和方向需要自行配置,这里的检测逻辑为"至少满足一个",检测模式为"独立检测NBT",对于发电堆摆法的"特定数量"为14,即容器内至少存在14个同种的冷却单元才能通过检测。对于阳光化合物转化堆的"特定数量"为4,我们需要根据我们实际使用的摆法调整这个检测命令。
"AltRods"为物品条件判断器,检测存放新燃料棒的容器内是否有充足的核燃料,真则进入反应堆停机检测,假则关机。新燃料棒的存放容器的位置和方向需要自行配置,这里的检测逻辑为"至少满足一个",检测模式为"独立检测NBT",对于发电堆摆法的"特定数量"为40个,即容器内至少存在40个同种燃料棒才能通过检测。对于阳光化合物转化堆的"特定数量"为12,我们需要根据我们实际使用的摆法调整这个检测命令。
"AltGlowsRod"为物品条件判断器,检测存放萤石燃料棒的容器内是否有充足的萤石燃料棒,真则进入反应堆停机检测,假则关机。萤石燃料棒的存放容器的位置和方向需要自行配置,这里的检测逻辑为"至少满足一个",检测模式为"独立检测NBT",对于本文中提出的摆法的"特定数量"为5个,即容器内至少存在5个萤石燃料棒才能通过检测。
"PowSig"为红石条件判断器,用来接受能量分配器上能量探测覆盖版发出的红石信号,也就是"停机判据"。由于覆盖版本身设置为了反转模式,在SFM中的命令就变成了正逻辑,真则进入"更换程序",假则关机。
反应堆内容物更换命令
强冷程序中真正起到物流作用的也就这么短短4个命令,一切的判断和检测都是为了给他们创造一个安全的运行环境,避免反应堆内部元件的"热插拔"。
再次提醒一遍,SFM程序中的物品输入输出端并不是按照连线顺序进行操作的,在同一套命令组中若存在若干个物品输入输出端命令,则必须严丝合缝的设置好输入输出的白名单或黑名单。即一对输入输出端的白名单设置须完全相同。
注意,物品检测模式为"精准检测"的白名单不能使物品输入输出端正常工作,设置白名单时请务必使用"独立检测NBT"模式。
冷却单元更换命令
"HotCltFrom"为物品输入端,用于从核反应堆内输入热冷却单元到其专用容器。
"HotCltTo"为物品输出端,用于将从核反应堆输入的热冷却单元输出至其专用容器内。
"NewCltFrom"为物品输入端,用于从存放新冷却单元的容器内输入新冷却单元到其他容器。
"NewCltTo"为物品输出端,用于将从专用容器输入的新冷却单元输出至核反应堆内。
燃料棒更换命令
"DplRodFrom"为物品输入端,用于从核反应堆内输入枯竭的燃料棒到其专用容器。
"DplRodTo"为物品输出端,用于将从反应堆输入的枯竭燃料棒输出至其专用容器内。
"NewRodFrom"为物品输入端,用于从存放新燃料棒的容器内输入新燃料棒到核反应堆。
"NewRodTo"为物品输出端,用于将从专用容器输入的新燃料棒输出至核反应堆内。
萤石燃料棒更换命令
"SnmRodFrom"为物品输入端,用于从核反应堆内输入阳光化合物燃料棒到其专用容器。
"SnmRodTo"为物品输出端,用于将从反应堆输入的阳光化合物燃料棒输出至其专用容器内。
"GlsRodFrom"为物品输入端,用于从存放萤石燃料棒的容器内输入新燃料棒到核反应堆。
"GlsRodTo"为物品输出端,用于将从专用容器输入的萤石燃料棒输出至核反应堆内。
如何Debug你的SFM程序?
终于,你完成了这一大坨又臭又长的连连看......
你制作好了子程序模板,只需复制后填写好反应堆单元的各种信息就能够使用了。
得益于最小可控反应堆单元中SFM元件都在同一XZ坐标的优秀设计,我们不需要用工厂贴标器不停打胶,只须找到同一个坐标的元件,把他们填到同一个子程序的命令组里。
你摆好了反应堆内的冷却单元和燃料棒,拉下了可控时钟的开关,等待着核反应堆被激活后发亮的指示灯。
一秒、两秒、三秒......半分钟过去了,可是什么都没有发生。
你开始复盘,到底是哪里出了问题?你检查了每个最小可控反应堆单元,并未发现硬件上有什么遗漏,那问题只能出在软件上面了,到底是哪条命令出现了错误?
光凭瞪眼法显然是很难确定错误的位置的,我们需要确定每个命令是否都正常运行,显然不正常的命令不会继续向下输出触发。
你灵机一动,拿出来了个用剩下的红石信号发射器,将其输出模式设置为"循环开关",这样当其每接受到一次触发,都会翻转一次状态,能非常明显的判断你的上一级命令到底有没有好好工作。
通过逐级排查,你终于发现了自己在编写的某个命令时犯下的低级错误,可能是检测模式没写对,可能是选错了方块,也可能是设置错了输出面方向。
要知道,人无完人。错误的发生对每个人来说都是不可避免的,一个优秀的系统不该给予操作者过多犯错的空间,而优秀的操作者也必定有他自己的纠错机制。所谓风险控制,便是要从系统层面上提前规避谬误对整体造成的不良影响,发生错误不可怕,可怕的是明明不知道错误在哪,却还要继续放任其发生,无法溯源,让你搭建的系统成为一个巨大的黑箱,丧失可控性,最后走向崩溃。
最后一课:安全启动程序—用核爆填出来的强冷核电安全操作手册
行百里者半九十。
不,就算说是半九十九都不为过,越是最后关头便越是危险,功亏一篑不算冤,功败垂成真的会令人心态爆炸!如果因为回档导致要我再重新造一遍这玩意儿还不如让我去做高烷汽油发电!
越是精密的程序越害怕误操作。尤其是你的99%MOX堆,最好在落成后用守卫者玻璃包起来以防你的坑爹队友乱动导致轻而易举了!
那么,一个全新落成的强冷核电,我们如何操作才能够最大程度上保证它不瞬间爆炸呢?
在建成后不要着急开机,先检测电线是否连接到位,蓝波顿超级电容库和真空冷冻机是否启动,以及是否在专用容器内准备了足够多的冷却单元。前文中提到过,无法向外输出电力会让我们的停机判据失效!
不要直接烤机!先把所有温控保险上的温度监控器的阈值调整为1,然后使用钍或铀燃料棒,开机后观察程序是否正常运行,是否出现堆温波动导致激活保险的情况,以及是否存在冷却单元烧毁的情况。
最好如此使用足够长的时间,观察你的电容库内余电量,确保电源管理程序正常工作。观察燃料棒更换程序运行后是否出现物品在各个容器乱窜的情况。
若如此能够长期稳定运行,无论哪个更换环节都没出现差错,就可以开始烤机,安排MOX燃料了。
烤机完毕后别急着塞燃料棒和冷却单元,打开单机创造模式,我们放下个核反应堆,摆好元件后启动,确定摆法无误;再打开你的生存模式或服务器,在摆放完每个堆的燃料棒和冷却单元后,都和单机里正确的那个进行一次对比,以确保不会因摆放错了冷却单元和棒子导致启动后瞬间爆炸!不要太过相信自己的大脑,一定要确保在任务栏切换游戏进程进行同位置对比后未发现任何异常,这样做能最大程度上规避脑子和眼睛抽风导致的装填错误。
在你的99%MOX堆开机之前,确保核电站周围没有可疑的家伙,不止是怪物,尤其指玩家。最好建造个"石棺"把你的核电站封装起来,而不是暴露在外。如果想防核爆最好还是使用守卫者玻璃,钨钢等级以下的防爆石防不了一点,就是个纯装饰。
如果严格遵守上述启动流程却还是出现了意想不到的情况的话,请立刻留言说明是哪个环节被忽略了。
尾声
到这里,感谢您观看此篇教程。
该教程的起草工作早在24年年底就已经开始了,此篇教程的撰写相当不容易,虽然曾有着IC2的游玩经验,但GTNH对我来说确实是第一次,这是一个非常锻炼人思维能力的好游戏,味道十分的硬核,比起MITE有过之而无不及吔!
该教程的撰写过程是将查阅到的资料与自己的实践经验相结合并浓缩为自己语言的过程。作者非常讨厌循规蹈矩的严肃论文,在组织语言时可能过于口语化和玩了很多梗,但这都是为了能更方便读者理解其中蕴含的原理。我认为思路远比结果重要,既要授人以鱼,也要授人以渔。寓教于乐,才能让知识更好的传承下去。
感谢服务器里大佬们对我家的赞助和支持,有了社区的关爱我才能走得更远。
🍉
🤣👉🤡
[某服土皇帝管理和他的杂❤鱼猫头肖子的逆天言论.png]
撒,细数你们的罪恶吧:
冷嘲热讽,盯着新手霍霍,从来不说人话
当土皇帝,双重标准,包庇小团伙,对新人重拳冲击
乱扣帽子,乱用私刑,不分是非的把接受老登遗产的玩家统统打成作弊玩家
人身攻击,通过攻击别人给自己找优越感
没有技术,大权在握但从未解决服务器卡顿问题,只顾着党同伐异
玩GTNH很了不起吗?我看这没及格诗人
这是什么新型的宗教吗?那我一定是异端
他的游戏设计真的如此神圣吗?到后期纯粹就一坨
只是个玩物罢了,你会把斐济杯当成圣杯供起来吗?
如果你的游戏理解停留在原教旨主义,就别来碰瓷了
解构了你神圣的技术壁垒还真是对不起呢
别·教·我·玩·游·戏 🤟
告别电量焦虑:Windows 10节电模式一键关闭指南,轻松提升电脑性能!
正在阅读:剑灵无形剑属性介绍【详解】剑灵无形剑属性介绍【详解】