索尼承诺将“增加PS5主机供应”
2023-01-31
更新时间:2022-04-08 22:51:53作者:佚名
缺氧怎么实现严格依序的过程循环?大家有尝试过吗?有玩家用门电路实现了这个循环过程,这里给大家带来了“sunny白水004”分享的缺氧实现严格依序的过程循环方法图文攻略,感兴趣的小伙伴们一起看下这位玩家的具体过程吧。
实现严格依序的过程循环方法图文攻略
先说一下事情的缘起,在建造污水处理厂时发现,污水池里繁殖了大量细菌,即使经过净化器处理也无法去除。开始我以为带菌净水只要不喝,拿来电解制氧就没事,没想到这神奇的外太空细菌连电解都杀不死啊,随着氧气在基地里到处飘,实在不能忍。后来发现用液体加热器把水加热到75度以上就可以灭菌,于是设计了这样的系统:
左边是带菌水,经过中间的加热池加热到75度以上,然后排到右边的公共净水池。在实际做的时候发现,如果只是简单的用温度和水压来控制泵和加热器的话,很容易乱套。比如热好的净水还没排净,新的带菌水又进来把净水污染了;或者净水正排到一半温度突然低了,加热器又重新开始加热等等。所以我希望设计这样一套电路,能够让放水→加热→排水这3个过程严格依照顺序运行,并不断循环。推而广之,对于任意多个需要按顺序运行的过程,都能做到只有过程n运行完毕,过程n+1才能够开始,而其他所有过程则保持待机。如下图所示:
这里的终止条件从各类传感器传来,用于控制过程的终止。可以发现,这里传递给下一过程的运行信号必须为脉冲信号,如果是持续信号的话,过程n+1则不能正常终止。既然是脉冲信号,那么需要电路具备“自持”的能力,来把运行信号保持住。
基于以上思路,在反复实验和简化后,我找到了一种相对满意的设计方案,如下图:
电路大佬可能看到这里就明白了,下面给对电路不太熟的人再解释一下。这个游戏内电路的运作机制是,每0.1秒作为一个tick,一个门电路在当前tick的输出值,取决于上一个tick的输入值。其实电路值每一个tick都在刷新,所谓的“连续信号”只是连续很多tick的值都相同而已。以最简单的非门来举例:
开始时输入0,输出1。在tick2输入变化为1,而此时非门的输出取决于tick1的输入,所以仍然为1,直到tick3才根据tick2的输入变成0。如果之后每个tick的输入都相同,那么输出也一直不变,看起来就像是输出连续的信号0一样。
下面我们来细致分析一下这个电路的工作过程:
Tick1,设备在等待运行信号,没有工作。
Tick2,前一个过程结束后传来了运行信号,设备开始工作。
Tick3,外来运行信号消失,但由于上面与门的输出连回了输入,可以把这个信号自我保持下去。
然后一直工作到Tick90都没有发生变化。
Tick91,由传感器传来的终止条件满足了,但是与门的输出还要多等一个tick再改变。
Tick92,下方与门输出变为1,向下一个过程输出了运行信号。
Tick93,上方与门输出变为0,设备停止工作。
Tcik94,下方与门停止输出,最终成功输出了2个tick的运行信号脉冲给下一个过程。
通过分析可见,这个设计完全实现了之前的构思,严格按照顺序运行每个过程并可不断循环。
最后把游戏里的具体实现图贴一下。
需要注意的是,电路刚开始建成的时候不存在运行信号,所以在左下角加了一个手动开关,开一下再关掉,整个电路就可以正常运行了。
后来我还用这套设计建了个天然气加热系统,把所有的天然气加热到120度再烧掉,从中可以赚一些负热量。
结合游戏内的实际运行图会容易懂些,我们先来看第一个过程“送水”工作时的运行图:
绿线表示值为1(激活),红线表示值为0(待命)。可见只有送水的水泵在工作,而蓝箭头所指的压力传感器,当压力高于900kg时,将控制送水过程终止。
第二个过程,加热:
现在加热器正在工作,当温度传感器超过76度时,加热过程即终止。
第三个过程,排水:
当压力低于500kg时,传感器将使排水过程终止,之后启动过程1,完成循环。
后记:其实在学习了一些电路知识后(本人非电子专业),最开始是用RS触发器做的,但是这种现实中的东西照搬到游戏里给人非常繁琐的感觉,就想了很多办法去简化,最后才变成这个样子。