推气门设计
0 常用推气门
0.1 推气门
0.2 吞气门
0.3 隔热推气门
1 逻辑分析
1.1 理论逻辑分析
下文是把气体从左推向右。
第一步,进气;
第二步,开始推气;
第三步;
第四步;
第五步,完成一次推气循环;
循环到第一步,
从而实现把气体从左推向右。
1.2 简化逻辑
因为机械门在开门进气和关门推气有延迟,开门要完全打开才能进气,关门要完全关上才会推气,所以在实际应用的时候会简化理论逻辑,使电路更简单,一次循环耗时更短。
下文是把气体从左推向右。
第一步,进气;
在第一二步的中间时刻,①号门关闭和③号门打开同时发生,但开门要完全打开才能进气,关门要完全关上才会推气,所以①③号门能同时运作。
第二步,开始推气;
第三步,
循环到第一步,
2. 理论基础
2.1 基本了解
用逻辑代数0和1表示信号:
0表示红色信号——关门;
1表示绿色信号——开门。
上节《简化逻辑》的①②③号门可表示为:110,011,001循环。
理论逻辑①②③号门可表示为:110,010,011,001,000循环。
机械门收到信号到完全开门或关门需要3.8秒。
本文为了推气门稳定运行(防止电脑卡机等),开关门的时间算作4秒,给机械门足够的反应时间,故以4秒为一个时间步长。上节逻辑分析中每到下一步就是过去了4秒。
2.2 脉冲信号
脉冲信号:01信号定期交替,具有周期性的信号。
脉冲周期:波形从开始到结束、重复自身所用的时间。
脉冲信号的实现:时间传感器,缓冲门+过滤门+非门。
时间传感器设置绿色4秒、红色4秒,就是上图的脉冲信号。
下图脉冲001,绿色4秒,红色8秒。
缓冲门+过滤门+非门,三门首尾相连。
如果脉冲信号是由非门输出端引出,则过滤门代表绿色长度,缓冲门代表红色长度。
如果脉冲信号是由非门输入端引出,则与上相反。
2.3 延长信号长度
脉冲信号的1可以用缓冲门延长;0可以用过滤门延长。
脉冲0110,连接过滤门设置一个步长(4秒),变为0010。
脉冲0110,连接缓冲门设置一个步长(4秒),变为0111。
例如下图,脉冲信号+缓冲门,脉冲信号刚变为0,缓冲门还维持输出1。
对应的时间段是下图的黄色框。
2.4 缩短信号长度
- 缩短1信号长度:
锁存器+过滤门,过滤门时间就是1信号的长度。
脉冲1110,变为1000,则过滤门设置一个步长(4秒)。
脉冲1110,变为1100,则过滤门设置两个步长(8秒)。
当锁存器和过滤门收到1,锁存器立刻输出1,等待一段时间(过滤门时间),过滤门输出1给锁存器R端,强制锁存器输出0,从而实现缩短1信号的长度。
- 缩短0信号长度:
非门+过滤门+锁存器+非门,过滤门时间就是0信号的长度。
脉冲0001变为0111,则过滤门设置一个步长(4秒)。
脉冲0001变为0011,则过滤门设置二个步长(8秒)。
脉冲0001非门变为1110,缩短1变为1000,再非门变为0111,从而实现缩短0信号。
2.5 信号整体右移
- 右移指把整段信号向右移动。
脉冲1011,右移一个步长变为1101。
1011先过滤门4秒变为1001,再缓冲门4秒变为1101。
脉冲1011,右移两个步长变为1110。
1011先过滤门8秒变为1000,再缓冲门8秒变为1110。
所以实现右移只需要先过滤门再缓冲门,过滤门和缓冲门设置的时间相同,这个时间就是右移长度。
- 左移指把整段信号向左移动。
脉冲1110左移一个步长变为1101。
脉冲1000左移一个步长变为0001。
因为脉冲是循环,直接右移对应的步长来实现左移(此处为三个步长)。
常人理解的左移比较难实现,缺氧的信号修改都是对“未来”(右边)作修改,修改“过去”(左边)比较困难。
2.6 推气门波形图
《1.2 简化逻辑》的理论脉冲是110,011,001循环,但是没有考虑机械门开门和关门所需时间。
机械门开门和关门需要3.8秒(本文把开关门算作4秒)。
从关门到开门这个过程,气体还不能进入机械门,经过3.8秒机械门完全打开才能进入气体;
从开门到关门这个过程,气体还在机械门里面,经过3.8秒机械门完全关闭才会推走气体。
《1.2简化逻辑》的机械门波形图如下,
观察上图,之所以“气体能流进机械门”比“信号”延迟一个步长,是因为机械门开关门需要时间。
3 循环信号推气门设计
3.1 理论设计
《1.2简化逻辑》中的推气门①②③用逻辑代数可写成:110,011,001循环。
(1)分析规律:
分别写出三个门的逻辑,
①:1,0,0
②:1,1,0
③:0,1,1
对比发现,①和③的信号相反;
对于①和②,①相当于②缩短1信号一个步长,或②相当于①延长1信号一个步长。
对于②和③,②相当于③整体左移一个时间单位,或③相当于②整体右移一个时间单位。
(2)设计逻辑电路:
三个机械门的逻辑,任选两个相互修改作为脉冲信号(必须用非门+过滤门+缓冲门,且只能有一个非门),剩余一个逻辑由这两个逻辑中的一个修改得到。
①和③的信号相反,相当于连接非门。
再由③到①,因为已经用了非门,所以③到①用缓冲门+过滤门。
多写两个周期,方便分析,
③:0,1,1,0,1,1,0,1,1
①:1,0,0,1,0,0,1,0,0
③先缓冲门一个步长,变为 (0),1,1,1*,1,1,1*,1,1;
然后过滤门两个步长变为 (0),0,0,1*,0,0,1*,0,0;
括号为第一次循环第一步;*为缓冲门输出的信号。
tip.为什么过滤门能把1*11变为1*00,是因为过滤门是过滤③的1信号,而不是经过缓冲门处理的1*11。
由分析可知①修改成②比较简单,缓冲门一个步长。
推气门基础设计完成。
3.2 进气时间
推气门一次循环能推多少气体,取决于推气门110这一步流进了多少气体。
气体流入需要时间,据编者经验,等待4秒能流进靠近机械门的环境气压的90%,等待8s与环境气压一致。进气时间一般为4~8秒。
因为推气门常用在气体生产,产出一点气体就推走,所以一般设置是一次性推最多的气体,减少循环次数减轻电脑cpu负担。
理论设计里110只有一个步长(4秒),可以加多一个110,使110有两个步长(8秒)。
推气门①②③可设计为110,110,011,001循环。
分别写出①②③号门的逻辑:
①:1,1,0,0
②:1,1,1,0
③:0,0,1,1
设计逻辑电路:
①连非门变③。
③连缓冲门两个步长(8s),过滤门两个步长(8s)。
②由①连缓冲门一个步长(4s)得到。
不难发现,此推气门的进气时间就是缓冲门的时间。(只是这个推气门是,其他未必可以)
可以设置等待进气6秒,把步长4秒改成步长2秒,推气门①②③可设计为110,110,110,011,011,001,001循环。
可以设置等待进气5秒,把步长4秒改成步长1秒,推气门①②③可设计为110,110,110,110,110,,011,011,011,011,,001,001,001,001循环。
至于怎么设计就读者自己来啦。
3.3 暂停设计
在某些情况下需要暂停推气门,比如:维持一定气压,减轻电脑cpu负担等等。
暂停推气门的设计要求:
(1)至少关闭一个门,阻止左右气体流通;
(2)在暂停过程中,不能三门同时打开,防止高气压气体流向低气压处;
(3)在暂停过程中,如果有三门关闭的000步骤,中间门不能最后关闭,防止吞气。
对于110,011,001循环信号推气门,建议按非门->缓冲门->过滤门的顺序连接,暂停信号连接在过滤门和缓冲门中间。
过滤门有两个状态:(1)正在过滤1信号,即输出0信号,代表推气门正在推气。(2)输出1信号,代表推气门正在进气(①②门打开)。
推气门110,110,011,001。在011和001(推气)状态,过滤门属于(1),在110(进气)状态,过滤门属于(2)。
这两个状态分别收到暂停1信号:(1)暂停1信号与缓冲门1信号重叠,过滤门继续过滤缓冲门1信号,推气门继续推气,直到过滤完1信号,推气门进入并保持进气状态。(2)推气门保持进气状态。
推气门一般用在气体生产,用气压传感器替换信号开关。
气压传感器紧贴推气门,设置“低于x克”输出绿色信号(表示环境气压大于x克启动推气门)。
拥有完整功能的推气门设计完毕。
4 脉冲信号推气门设计*
本章为选看内容,自己设计出成品的难度较高。
4.1 理论设计
《1.2简化逻辑》中的推气门①②③用逻辑代数可写成:110,011,001循环。
(1)分析规律:
分别写出①②③号门的逻辑,
①:1,0,0
②:1,1,0
③:0,1,1
对比发现,①和③的信号全部相反;
对于①和②,②相当于①延长了1信号。
对于②和③,③相当于②整体右移一个时间单位。
(2)确定脉冲信号:
由①修改成②③比较简单,所以用①的逻辑信号作为脉冲信号,然后②③由①修改得到。
①信号是开门4秒再关门8秒循环,用时间传感器设置绿色信号4秒,红色信号8秒。
(3)设计其他信号:
③信号只需要对①用非门。
②信号可在①的基础上用缓冲门延长第一步的1信号4秒,就是②信号。
(4)实操:
①信号的实现:
③信号的实现:
②信号的实现:
4.2 进气时间
推气门一次循环能推多少气体,取决于推气门110这一步流进了多少气体。
气体流入需要时间,据编者经验,等待4秒能流进靠近机械门的环境气压的90%,等待8s与环境气压一致。进气时间一般为4~8秒。
因为推气门常用在气体生产,产出一点气体就推走,所以一般设置是一次性推最多的气体,减少循环次数减轻电脑cpu负担。
理论设计里110只有一个步长(4秒),可以加多一个110,使110有两个步长(8秒)。
所以推气门①②③可设计为110,110,011,001循环。
分别写出①②③号门的逻辑,
①:1,1,0,0
②:1,1,1,0
③:0,0,1,1
选①作脉冲,时间传感器绿色8秒,红色8秒;
②由①加缓冲门4秒得到;
③由①加非门得到。
不难发现,此推气门的进气时间就是时间传感器的绿色时间。(只是这个推气门是,其他未必可以)
可以设置等待进气6秒,把步长4秒改成步长2秒,推气门①②③可设计为110,110,110,011,011,001,001循环。
也可以设置等待进气5秒,把步长4秒改成步长1秒,推气门①②③可设计为110,110,110,110,110,,011,011,011,011,,001,001,001,001循环。
至于怎么画电路就读者自己来啦。
4.3 暂停设计
在某些情况下需要暂停推气门,比如:维持一定气压,减轻电脑cpu负担等等。
暂停推气门的设计要求:
(1)至少关闭一个门,阻止左右气体流通;
(2)在暂停过程中,不能三门同时打开,防止高气压气体流向低气压处;
(3)在暂停过程中,如果有三门关闭的000步骤,中间门不能最后关闭,防止吞气。
启动推气门的设计要求:
在启动时随机在脉冲的某个时刻,很大可能在进气状态或推气状态的中间,脉冲信号剩余时长不够,无法激活过滤门缓冲门这类时间逻辑门,在设计时注意优化逻辑电路避免出现漏气和吞气等问题。
其实,做脉冲信号推气门的暂停设计非常难,本文不作太详细的推导过程,直接给结论再分析结论。
4.3.1 经验设计
(经验设计,靠经验专门给这个推气门设计暂停,方法不通用,用在其他推气门未必行)
针对上文的推气门,暂停思路是用0信号覆盖推气门的逻辑电路:
如果在进气状态暂停,则立刻执行推气并停在最后一步;如果推气状态暂停,则继续推气并停在最后一步。
电路设计如下:
信号开关0信号为启动推气门,1信号为停止推气门。
当非门收到信号开关的1信号,强制锁存器进入推气状态并保持在最后一步。
时间传感器参数取反。比如绿4秒红8秒,则改为绿8秒红4秒。
推气门一般用在气体生产,用气压传感器替换信号开关,并且连接过滤门1~2秒,防止气压不稳定导致气压传感器鬼畜。
气压传感器紧贴推气门,设置“低于x克”输出绿色信号(表示环境气压大于x克启动推气门)。
拥有完整功能的推气门设计完毕。
4.3.2 通用设计
(玩家自己设计比较复杂的推气门时,不知如何设计暂停,则可直接用本节的通用设计。本节的通用设计用较为复杂的逻辑电路实现通用性,适配绝大部分推气门)
推气门的逻辑都为脉冲信号,脉冲循环的开始一般定义在0变1的时刻(上升沿)。以①号门脉冲为例:
设计电路提取出代表开始时刻的只有一瞬间的信号(上升沿)。
用“缩短1信号长度”的电路设计,过滤门0.1秒。用0.1秒的1信号表示开始时刻。
设计如下,信号开关输出1则启动推气门,输出0则停止推气门。(时间传感器绿色8.5s,红色7.5s)
当信号开关输出1,给到锁存器R端,强制锁存器输出0,推气门正常运作。
当信号开关输出0,不影响锁存器R端。当脉冲开始时提取到0.1秒的开始时刻信号,用缓冲门开始信号延长至一个脉冲周期,强制推气门保持在最后状态001,直至下周期。
推气门一般用在气体生产,用气压传感器替换信号开关,并且连接过滤门1~2秒,防止气压不稳定导致气压传感器鬼畜。
气压传感器紧贴推气门,设置“高于x克”输出绿色信号(表示环境气压大于x克启动推气门)。
5 实际使用优化
5.1 时间容错分析
逻辑门和建筑收到信号会延迟一点时间再反应(目测0.2s),如果电脑比较卡,帧数比较低,这个延迟会更长。如果逻辑电路设计的时间容错较短,可能会造成一些意想不到的问题。
推气门在时间容错上需要注意以下两个问题:
(a)推气门需要避免三门同时打开导致左右流通,或者先关左右门接着关中间门导致吞气。
(b)比较复杂的逻辑电路还要分析逻辑门的信号是否有冲突或续不上的情况。
对于情况(a),需要分析推气门从当前状态步到下状态,同时有两扇机械门开关的情况。
例如,推气门110,110,011,001循环。
110变110,无两扇门同时开关,无问题。
- 110变011,①③同时开关,需要分析:
理想情况是①关门的同时③开门,右边气体不会跑到左边。但是因为电脑卡顿等问题,还存在两种实际情况:
(1)①先关门,③慢零点几秒开门,110->010->011,这种情况无问题。
(2)③先开门,①慢零点几秒关门,110->111->011,有零点几秒是三门同时打开,所以需要给③加过滤门,延迟③开门。
过滤门0.1~2秒,具体看自己电脑情况,电脑越卡时间越长。
011变001,无两扇门同时开关,无问题。
- 001变110,①②③同时开关,需要分析:
因为电脑卡顿等问题,还存在三种实际情况:
(1)③先关门,①②慢零点几秒再开门,001->000->110,这种情况无问题。
(2)①②任意一扇门先开门,③慢零点几秒关门,①②另一扇再开门,这种情况无问题。
(3)①②先开门,③慢零点几秒关门,001->111->110,有零点几秒是三门同时打开,所以需要给①②加过滤门,延迟①②开门。
过滤门0.1~1.5秒,具体看自己电脑情况,电脑越卡时间越长。
推气门循环逻辑变为:110—8s->010—1s->011—4s->001—1s->000—4s->110
对于情况(b),需要具体情况具体分析,更看重玩家的游戏经验。
例如《4.3.2的通用暂停设计》,之所以时间传感器右侧加过滤门0.5秒,是因为下方逻辑门较多,逻辑门收到信号再处理然后输出,这套流程会有一点时间延迟(电脑卡等问题),造成下方信号输出比上方慢一点,所以用过滤门延迟上方信号,实现上下信号输出时间同步。如果不用过滤门,与门可能会鬼畜。
总之,对于情况(b),要么用过滤门延时,要么用缓冲门续1信号,具体情况具体分析。
5.2 缩短逻辑电路循环时间
在推气门110,110,011,001循环中,上文把一步算作4秒。
机械门开门和关门需要3.8秒。从关门到开门这个过程,气体还不能进入机械门,经过3.8秒机械门完全打开才能进入气体;从开门到关门这个过程,气体还在机械门里面,经过3.8秒机械门完全关闭才会推走气体。
由上节时间容错分析得到的推气门循环逻辑:110—8s->010—1s->011—4s->001—1s->000—4s->110
设等待进气为8秒,步长缩短为1~4s,具体参数根据自己电脑配置确定,此处延长至2秒。
110—8s->010—1s->011—2s->001—1s->000—2s->110
推气时间=1+2+1+2=6s,进气时间8秒。推气时间必须大于4.5秒,以防③号门不够时间打开。
由《3.1 理论设计》设计得到的时间门(过滤门和缓冲门),时间参数是4的倍数,也就是步长,在此进行相应缩短。
例如上图的2秒缓冲门,是由理论设计推到出来的时间门,原先是4秒,因为缩短步长至2秒,所以设置2秒。
5.3 最优进气时间*(未写)
上文已经设计好完全能用的推气门,这节不是必要,只是小提升,先咕了。
6 推气门延申设计(未写)
6.1 吞气门
6.2 真空隔热推气门