游客你好,登录后能编辑wiki哦!

全站通知:

电路实例教学(基础篇)

阅读

    

2020-03-31更新

    

最新编辑:逗比的马老师

阅读:

  

更新日期:2020-03-31

  

最新编辑:逗比的马老师

来自异星工厂WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
逗比的马老师
No-building-material-icon.png
本文来自:贴吧
原作者(御道风云)
原视频/文章地址https://tieba.baidu.com/p/5016121683
Signal each.png
,请注意文章时效!

摘要:

  • 【概述】电路基础教程,认识脉冲信号与信号处理,理解存储器原理并运用存储器实现更多需求。
  • 【关键字词】教程;电路;基础;脉冲信号;存储器
  • 【说明】这一篇内容比较多,也开始有一定难度,不过也是最关键的一篇。
    • 掌握之后绝大多数的电路需求都可以轻松完成。
    • 我讲的啰嗦些,尽量能更多的人理解。请耐心读完。
    • 如果是萌新,最好把上一篇入门篇阅读后再读此篇。



  • 在教程之前,安利一本书《编码的奥秘》。
《编码的奥秘》


  • 我对这本书让我见识到了什么叫深入浅出。
  • 让我这种菜鸡文科生都能看懂,我也是佩服作者。
  • 不过提前说,看完不会让你立马变大神,它主要了提供理论基础和编码思想,相当于普及读物。但可以让你学习相关知识飞速的提高。
  • 我写教程也在尽量学习这本书的叙述思路。
  • 不过我并没有看完,能看懂不代表不需要用脑子,懒癌晚期的我已经放弃治疗。
  • 书算是冷门书,某宝白菜价,网上电子书也一大堆。
  • 有兴趣的可以了解下,某豆评分9.2呢。

第一部分 深入认识信号 -- 脉冲信号与持续信号

  • 上一篇解释信号时,用信号灯作为了例子。红灯表示停,绿灯表示行,不同颜色的灯表达了不同的信号,而不同的信号承载着不同信息。
  • 但相同的信号也可以表达不同的意思。比如我的手机指示灯,绿灯表示电量充满,收到通知还是绿灯,但我却能清楚的分辨它们,因为收到通知时绿灯是闪烁的。
  • 电量充满时,绿灯会一直亮,这被称作持续信号。
    • 【持续信号:长时间稳定不变的信号】
  • 收到通知时,绿灯闪烁,这被称作脉冲信号。
    • 【脉冲信号:短暂或周期性的信号】←超重点
  • 还是那句老话,定义仅供理解,更严谨更深入的请查阅专业解释。
Db0ab27b02087bf49282671afbd3572c10dfcf73.jpg
  • 上图,可以看到箱子始终发出(红图,1)信号,这就是游戏中持续信号。


  • 传送带是一个很好的例子:
Cce4ba087bf40ad1fb8af7105e2c11dfa8ecce73.jpg
  • 把传送带设置为按持续信号读取,可以看到在红图经过该格传送带期间,始终发出(红图,1)信号。
C497c3f40ad162d9688052ef18dfa9ec8b13cd73.jpg
  • 设置为按脉冲信号读取,你会发现只在红图进入该格传送带的一瞬间,才有一个(红图,1)信号一闪而过,如果没有灯,你可能根本没注意到(抱歉截不到图...)。
Bd6bb2d162d9f2d3cc7f141ca0ec8a136227cc73.jpg
  • 建成这样,可以更清楚的认识脉冲信号与持续信号的区别。


  • 定义中说过周期性的信号也是脉冲信号,传送带一圈圈的转,红图一次次的被检测,灯一次次的亮,显然信号是有规律有周期的,因此上面传送带的信号也都可以称作为脉冲信号,换个时间尺度,又是一种理解,就像矛盾的对立统一一样。脉冲信号的周期性太复杂用不上,了解一下就行了,就不过多涉及。

第二部分 深入认识信号 -- 信号的计算处理

8da914af2edda3cccea4cdd308e93901203f9225.jpg
  • 先从一个问题说起,
  • 在图中,
  • 上面的线路,传送带发送的脉冲信号(红图,1)经由6个算数运算器到达灯,算数运算器设置的都是(红图+0,红图)即不对信号进行修改。
  • 中间的线路,通过电线杆直接连到灯。
  • 下面的线路,经过6个机械臂到灯,机械臂未做任何设置。


  • 那么,当传送带发出脉冲信号后,那个线路上灯先亮?
  • 虽然脉冲信号很快,但实测时大多数厂长应该都可以直观看出来,中间和下面灯同时先亮,紧接着上面灯亮。
  • 而背后的机理就是我现在要说的:信号的传输。


  • 【红绿线长度不影响信号的传递。】
  • 因此中间的灯最先亮,而下面的线路本质上是这样的
6a3096dda3cc7cd93e6d412a3001213fb90e9125.jpg
  • 信号其实也是直接到达的,跟中间的线路没什么区别,机械臂并没有对信号产生影响。

  • 信号的传输的具体机理:
    • 【tick是信号处理的最小时间单位。】
    • 信号不可能即时处理,在游戏中,每1tick计算一次信号。理论上,现实中的1秒=60tick。就像电影中的每一秒的本质上是24张图片一样。游戏中的所谓信号传输本质上是1秒计算了60次而已(游戏中生产,加工等等本质上也是1tick计算一次数据)。


  • 【1tick时间内,运算器会处理一次信号,并将处理结果送达其他设施。】←超重点
  • 注意两个关键词,“一次信号”,“送达”。
  • 上一篇教程说过:信号网络中的信号会叠加。
  • 也就是说,在“送达”的过程中也会进行一次计算。
  • 什么是“一次信号”?这就要回到脉冲信号。
  • 前面说过,传送带发出的脉冲信号一闪而过,几乎不可能看清。
  • 这个“一闪”有多长?很多人可能猜到了,就是1tick时间。
  • 这种1tick时间的脉冲信号就是“一次信号”。
  • 那么持续信号不是“一次信号”,该怎么处理?
  • 回到上面的定义:tick是信号处理的最小时间单位。
  • 这个“信号处理”不单指信号的接收还指信号的发出。
  • 拿传送带的持续信号说事,假如物品经过传送带的时间是1秒,那传送带就发出1秒的持续信号。但是在本质上,传送带发出的是60个1tick时间的脉冲信号。
  • 那么持续信号的处理就是处理60次1tick时间的脉冲信号。
  • 那传送带发出的到底是脉冲信号还是持续信号?这就要牵扯到猫的死活了。
  • 不开玩笑了,这其实就是换一下理解角度,这本来就没有什么严格的定义。
  • 以上内容请尽量理解,是关键的基础。
  • 之后的内容,如无特殊说明,脉冲信号默认指代1tick时间的脉冲信号;tick简称t。

  • 回到那个灯先亮的问题,在了解信号处理后,上面的线路就是这样的:
Ccd94a1fbe096b638d192ea305338744eaf8ac65.jpg
  • (方便讲述,只画了3个运算器)
  • 每1t都会进行一次处理和送达。那整个线路总共耗时:传送带1t+ 6个运算器6t+ 灯1t=8t
  • 由此我们不但能知道灯亮的先后顺序,还能知道具体的耗时:
  • 上面的线路:8t
  • 中间的耗时:2t
  • 下面的耗时:2t
  • 在以后的讲述,耗时只考虑运算器产生的。


  • 最后留一个问题,上面的线路在其他保持不变的情况下,这样连线:
348006096b63f624175d49f08e44ebf81b4ca365.jpg
  • 不进行实测(实测用处也不大...),推想一下灯会怎么亮,精确到耗时t。这还是有一定难度的,不要问我答案,我也不知道┑( ̄Д  ̄)┍

第三部分 脉冲信号的运用 -- 没卵用的“流光”

  • 有什么用?
  • 放一圈灯,然后让灯一个接一个的亮和灭,让灯转着循环着亮,跟老虎机那种灯的转圈类似。
  • 如下图,现在亮的是下面第5个灯,接着第5个灯灭,第6个亮,之后6灭7亮,如此循环。
  • 虽然没什么卵用,但作为观赏,装下逼还勉强可以的。
75833f01a18b87d6761ca0eb0e0828381e30fd0c.jpg
  • 具体怎么建?
  • 首先算数运算器首尾相连,连成一个圈。运算器都设置为(红图+0,红图),还是不对信号进行修改。
  • 然后放一圈灯,每个灯连一个运算器,接收运算器的信号。所有灯设置为(红图>0)。
  • 最后放一段传送带(别搞成环形),其中一节连一个运算器的输入口。传送带设置为获取脉冲信号。
  • 接着在传送带的起点放个红图就行了。
  • 结果是:红图经过传送带时,传送带发出脉冲信号(红图,1),然后这个(红图,1)信号在“循环”的信号网络中一圈圈的转,带动灯一圈圈的亮。
  • 这个实例还是很简单的,做完再来看这两句话:
  • tick是信号处理的最小时间单位。
  • 1tick时间内,运算器会处理一次信号,并将处理结果送达其他设施。
  • 是不是有了一个直观的认识?

  • 这个“流光“”显然还是很low,总不能多一个灯就加一个运算器吧,这就太臃肿了。要进行一下精简优化。
  • 优化还要从信号的一个问题说起,
  • 脉冲信号与持续信号要怎么转换?
  • 这个问题看似没啥用,但却是很多电路中关键的一步。在以后的例子中就能看出来的。
  • 比如传送带检测到“红图”时,让电闸打开一段时间。传送带的信号一闪而过,那电闸打开也会一闪而过。就算设置为持续信号也持续不了多久,根本实现不了需求。
  • 现在只说一下脉冲信号转为持续信号,持续信号转脉冲信号以后用到的时候再提。
  • 在编码中,有一个东西叫做SR锁存器。
  • 它的功能通俗的说是这样的:
  • SR锁存器有一个输入端,一个输出端,一个重置端。
  • 当输入端接收到一个信号后,将此信号锁定,在输出端持续的输出该信号。
  • 之后,不管输入端的接收到任何信号,都不会改变输出端的输出。
  • 只有当重置端接收信号时,才会解除锁定,恢复到初始状态。
  • 很显然,这个东西能完美的做到脉冲信号转为持续信号。
  • 找一找游戏中的物品,然而并没有这个东西,但我们可以根据这个思想来实现功能。
  • SR锁存器有一个关键的功能--锁定,也就是说将脉冲信号进行了“记录”,又或者说让脉冲信号不消失。
  • 再看一下之前的“流光”,传送带发出了一个脉冲信号,这个脉冲信号在运算器之间转啊转。
  • 有没有发现?这个脉冲信号并!没!有!消!失!这就是一种另类的锁定的。
  • 为什么没有消失?因为这个脉冲信号在循环。
  • 18个运算器组成了一个循环链。
  • 18个能循环,那17个,16个……5个,4个,甚至是1个能不能组成循环?
  • 答案已经出来了!
  • 只要将运算器的输入端与输出端相连,设置运算器不对信号进行修改。
  • 那么传入该运算器的脉冲信号就会一直循环,不会消失,而这个运算器也因此会始终发出持续信号。
  • 信号“锁定”!脉冲信号转持续信号完成。
97a29e9759ee3d6d3aa28d3f4a166d224e4ade7a.jpg
E008e1ee3d6d55fbc2a27cd264224f4a21a4dd7a.jpg
  • ps:误打误撞,竟然搞了一波完美的层层递进,由浅入深……

  • 接着我们来试试搞出来的“锁存器”好不好用。
Eeab8c9b033b5bb503f913083fd3d539b700bcbe.jpg
  • 传送带放一个物品,发出了一个脉冲信号,然后这个信号就被记录了,具体可以在电线杆或电灯上看出来。很成功。
  • 不过做电路总要把尽可能多的情况考虑到。
  • 再往传送带放一个物品,
F204bb3b5bb5c9eadedd3015dc39b6003bf3b3be.jpg
  • 发现“锁存器”记录的信号变成了(红图,2),这个很好理解,新发出的脉冲信号与“锁存器”中循环的脉冲信号叠加了,变成了(红图,2)。不过这样一来这个“锁存器”就不合格了,有“存”的功能,但没有“锁”的能力。因此不能还称“锁存器”,我们给它起个名叫储存器。
  • 那么真正的锁存器能不能搞出来?答案是可行的,但比较麻烦,而且并没有必要,具体以后会提到。


  • 【储存器:接收信号种类不同的脉冲信号,通过信号的循环将信号储存。】
  • 储存器是把信号记录了,难道就这样一直记着?总要有清除办法才行。
  • 锁存器有重置端来解决这个问题,而我们只能自己实现了。
  • 我们知道储存是通过信号循环完成的,那只要打断这个循环,储存就自然会结束。
  • 看一下存储器的电路,能找到打断循环的几个方法:
  • 1.把运算器拆了重建……
  • 2.把电线拆了重建……
  • 3.直接更改运算器的设置,比如更改为(红图*0,红图)
  • 这些方法显然都需要人亲自操作,很多时候需要的是在得到一个信号时进行重置。
  • 通过信号进行重置,可以使用信号抵消的方法完成,具体怎么做就不说了,因为这是我走的弯路……
  • 再找下其他方法,
  • 之前说,储存器的信号循环需要设置算数运算器不对信号进行修改,设置为+0没有修改,那设置为*1也是没有修改啊。可以将算数运算器设置为(红图*A,红图),A信号的值是1,就是具有储存器功能,A信号值为0,就是储存器重置。可能有点绕,那就不用记了,因为这也是我走的弯路……
  • 这个思路从一开始就有问题,
  • 不对信号进行修改,判断运算器表示我也能做啊,为啥非要用算数运算器?
C5a4e3b5c9ea15cefac0d3ffbf003af33b87b2be.jpg
  • 由于输入端没有X信号输入,那X=0就是始终是成立的,然后“红图”信号就始终允许通过,最后循环成立,具有了储存器的功能。
  • 而进行重置也很简单,只需要向输入端发出一个X信号就行,一般是(X,1),然后X=0就不成立了,循环中断,完成重置。
  • 由此可以知道储存器分算数储存器和判断存储存器,而判断运算器的功能更优秀易操作,以后的叙述,如无特殊说明,储存器默认指代判断储存器。
  • 在以后的电路中,默认以X信号作为储存器重置的信号,用红电线进行连接。这是我个人的习惯,各位厂长当然也可以依自己的喜好选择,不过习惯不好改,我以后就按自己的习惯来设计电路了。还有“红图”这个东西,莫名其妙养成了这个习惯,不得不准备一箱子红图……

  • 之前提到:
  • 由于存储器再次接收一个相同种类的信号时,信号会叠加,因此不能称作“锁存器”只能说是存储器。
  • 但这个特点恰恰能让我们利用,发挥存储器的另一个极为重要的作用——计数器
  • 【计数器:接收信号种类相同的脉冲信号,通过信号的循环将信号叠加并记录】
C497c3f40ad162d96f2955f818dfa9ec8813cdab.jpg
  • 最初,红图经过传送带,发出一个(红图,1)脉冲信号,进入存储器,被记录
  • 接着,红图再次经过传送带,又发出一个(红图,1)脉冲信号,进入存储器与存储器本来存储的(红图,1)信号叠加变成(红图,2)。
  • 继续经过,与存储器的(红图,2)信号叠加,又变成了(红图,3)信号。
  • 如此往复。
  • 也就是说,最后的信号值就是红图经过传送带的次数。
  • 这样就实现了计数的功能。
  • 显然,存储器与计数器就是同一个东西,区别就在于怎么用。
  • 这个计数器就是“流光”进行精简优化要用到的东西,说了这么多终于到了。
  • 以上主要的基础知识也介绍完了,之后就以运用为主了。

  • 在“流光”中,关键的需求就是灯逐一的亮起和熄灭,通过设置灯的“启用条件”,可以让灯在接收到特定的信号时亮灭,再考虑的到计数器信号值逐次增加的特点,一个更加方便的实现方法就呼之欲出了。
  • 首先,将一个周期脉冲连上计数器:
4b8fb9e93901213f3e480a035de736d12e2e9512.jpg
  • 传送带发出周期脉冲,让计数器逐增加。
  • 接着更改一下计数器的重置条件,重置是根据“判断参数”决定的,我们将它改为(红图<10)
C7768101213fb80efcaa25083fd12f2eb8389412.jpg
  • 这样一来,当计数器的值大于9,就不符合(红图<10),循环中断,计数器自动就重置了。
  • 临时先用着 10 这个值,以后根据情况再改就行了。
  • 给这种计数器起个名字,叫 自重置计数器。以后再用到就不用费心说明了。



  • 摆一圈灯,用信号线连一块:
Ff9e993fb80e7becdca1473e262eb9389a506b12.jpg
  • 然后,灯的启用条件逐一设置为(红图=0),(红图=1),(红图=2),(红图=3)……
E7a0000e7bec54e7bf975ec1b0389b504ec26a12.jpg
  • 图中有18个灯,因此最后那个灯设置的应该是(红图=17)
  • 最后将灯的信号线连一下计数器的输入端。
  • 到这里思路已经很明显了,计数器从(红图,0)计数到(红图,9),
  • 每个值对应一个灯的亮起,这样就形成了灯逐一亮起熄灭的效果。由于有18个灯,还需要把计数器的(红图<10)改为(红图<18)。
  • 等等……再减一下传送带的长度,最终就是这样的:
7e91c3ec54e736d1a568c8d792504fc2d4626912.jpg
  • 来看一下效果图:

Bd73ece736d12f2e327eeabf46c2d56284356812.gif

  • 说明下,这只录了部分,为保证大小不超,还进行了1/2抽帧,
  • 通俗的说,GIF图是二倍速

  • GIF中,即时是在二倍速下,灯的转动速度仍然不快,
  • 而最初造出来的“流光”,结合tick的知识,可以知道速度是1t/1灯,达到了最快速度。
  • 对于现在的“流光”,我们还要想办法提高一下速度。
  • 速度是通过周期脉冲的频率进行控制的,接下来就详细说一下周期脉冲信号生成。


  • 首先是用箱子和机械臂构成循环来发出周期脉冲——机械臂周期脉冲:
5670cec6a7efce1bc3d6540aa651f3deb68f6595.jpg
  • 显然这种方法有很多弊端,速度也不快,因此只能算下策。


  • 接下来是用传送带构成循环来发出周期脉冲——传送带周期脉冲:
B0591fefce1b9d16a23a06a1fadeb48f8e546495.jpg
  • 这种方法好很多。
  • 其中周期频率最快的莫过于4格极速传送带构成循环,物品放内圈。(上图右边所示)
  • 还能进行一些修改,再一步提高频率,如 :
6170761b9d16fdfacf915a2ebd8f8c5496ee7b95.jpg
  • 如果还不满意,在传送带上多放几个物品,也可以提高频率。
  • 这速度似乎已经足够了
  • 但这并不是我们最终要使用的,较高的频率需要在传送带多放几个物品,这样的周期脉冲并不稳定,间隔时间不一,而且并不能达到极限频率,还不够优秀,因此此方法只能算中策。

  • 在编码领域,有一个东西叫做非门,
  • 它的作用可以这样理解:
  • 输入0,输出1;
  • 输入1,输出0。
  • 也就是说,它的输入与输出是相反的,
  • 之所以提到它,是因为非门有一个应用方法叫非门脉冲。
  • 先在游戏中把这个非门实现出来,
  • 输入输出……相反?
  • ……省略简单的思考过程……
  • 判断运算器恰好能胜任这个工作:
9c301c0f4bfbfbed32c6d7bf71f0f736adc31ff7.jpg
  • 很完美的实现了非门。
  • 而非门脉冲也很简单,就是输入端与输出端相连:
6290f3fbfbedab6499edac00fe36afc37b311ef7.jpg
  • 先推演一下非门输入端与输出端相连会发生什么,这需要一点想象能力和理解能力
  • 判断运算器初始是没有信号输入的,
  • 第1t:
  • (0)输入,输出(红图,1)并回到输入端
  • 第2t
  • (红图,1)输入,输出(0)并回到输入端
  • 第3t:
  • (0)输入,输出(红图,1)并回到输入端
  • 第4t
  • (红图,1)输入,输出(0)并回到输入端
  • ……
  • ……
  • ……
  • 这时,如果对其输出端的信号进行接收,获取到的信号是:
  • (0)—(红图,1)—(0)—(红图,1)—(0)…………
  • 这显然就是周期脉冲信号了,而且是游戏中频率最快的周期脉冲
  • 两个信号的间隔最低为1t,再快间隔就是0t了,就成了持续信号。
  • 我们给它接上一个电灯,再设置下电灯的启用条件(红图=1),
  • 可以看到电灯迷之闪烁,不注意就跟电灯是灰色的似的,

8d6443edab64034fe35223c6a6c3793108551df7.gif

  • (由于GIF帧率限制,上图基本上是0.5倍速。)
  • 由之前的1秒=60tick,可以知道这是因为电灯1秒闪烁了30次。
  • 这个方法是为上策。
  • 而且如果用不到这么快频率的周期脉冲,还可以精确调整频率。

  • 有上策的最快的周期脉冲生成方法,那“流光”的转动速度差不多就足够了。
  • 但,我们并不用这个方法……( ⊙ _ ⊙ )
  • 非门脉冲每2t发出一个信号,也就是说“流光”的速度是2t/1灯,
  • 而我们最初造的可是1t/1灯的速度呢,还差着呢
  • 但非门脉冲已经是最快的周期脉冲了,再快就是持续信号了……◔ ‸◔?
  • 对……我们不用周期脉冲,就用持续信号……(○´・д・)ノ
69ce4bdeb48f8c54acb325ef33292df5e1fe7f2a.jpg


  • 最终成品图:

35410c8f8c5494eec942efd924f5e0fe98257e2a.gif

  • 果然是没什么卵用O__O "…


  • 周期脉冲频率的调整,以后用到再提吧,这一部分就算结束了。

第三部分 实例-备用火电电路优化

Warning-icon.png
这是对上一篇:电路实例教学(入门篇)
第四部分 火电供电优化的改进
  • 回顾:
  • 用处:
  • 蒸汽发电与太阳能共用时,很多时候太阳能发电明明够了,蒸汽发电仍然工作.浪费燃料,产生污染.通过电路对电网进行处理,在蓄电池没电时控制电闸使蒸汽发电站工作.使蒸汽发电作为应急电使用.
  • 需求:
  • 在蓄电池电量小于5%时, 接通电闸使蒸汽发电站工作.


  • 关于改进
  • 小于5%时工作,那对应的大于5%就不工作了。
  • 接通电闸使蒸汽发电站工作后,如果蒸汽发电机站功率比较大,高于耗电量,那就会造成这样的局面:
  • 小于5%,工作,
  • 1秒后,大于5%,不工作
  • 1秒后,小于5%,工作
  • ……
  • 电闸不断的开开关关,迷之鬼畜。


  • 我们把需求调整为:
  • 在蓄电池电量小于5%时, 接通电闸使蒸汽发电站工作,之后若蓄电池电量大于30%,则停止工作。
  • 让电路效果更好些。

  • 先建出来个大概
8589d5224f4a20a42d98400399529822700ed094.jpg
  • 会发现很多问题, 明显的一个是:
  • 大于30%时停止工作对应的就是小于30%开始工作,这与小于5%开始工作是冲突的
  • 你可能会想到修改一下条件,比如将电闸的(Z=1)改为(Z=2)等等,但事实这并不理想。


  • 问题的解决需要从需求着手,
  • 分析一下需求,似乎只是在原来的基础上加了一句:之后若蓄电池电量大于30%,则停止工作。
  • 让蓄电池电量在30%时停止工作很简单,但关键的是“之后”这个词,
  • 也就是说在小于5%工作的前提下,才会进行大于30%停止工作。
  • 更详细的说明应该是:
  • 当蒸汽发电机未工作,小于5%时开始工作,大于5%时并不工作
  • 当蒸汽发电机已工作,小于30%时仍然工作。大于30%时停止工作


  • 也就是根据蒸汽发电机当前的状态,来决定按5%判断还是按30%判断。
  • 解决问题的关键就是对蒸汽发电机当前的状态进行记录,



  • 记录?这就是存储器大显身手的时候了,我们接上一个存储器。
Abbdf74a20a44623654cd9a69122720e0ef3d794.jpg
  • (X是重置信号,暂时没啥用)
  • 测试一下,发现这剧本好像不对……
89d598a4462309f7fde9d1d67b0e0cf3d5cad694.jpg
  • 存储器的信号疯狂往上涨,这储存的毛线啊( `д′)
  • 检查一下信号,发现问题是蓄电池发出的是持续信号,存储器接收的也是持续信号,存储器进行记录需要脉冲信号。
  • 电路总比你想象的麻烦一些……w(゚Д゚)w
  • 需求已经明确了,我们还可以找其他的实现办法……
  • 不过这里就不去找了,知道一些“套路”可以用简单的思路实现需求。

  • 重点知识:持续信号转脉冲信号。
  • 没找到很好的例子,就不复现发现方法的过程了。
  • 先看电路图:
2fcf8d2ac65c1038dc4bb706bb119313b17e8959.jpg
  • 是不是看起来很简单,就用了一个运算器,其实实际也很简单
  • 注意一下箭头的颜色,使用的信号线要不一样。
  • 用箱子发出持续信号,灯接收脉冲信号,实际建一下
F3b57e5c103853436bfafee59a13b07ecb808859.jpg
  • 效果图:

00c3a8385343fbf22319dfe7b97eca8064388f59.gif

  • 可以看到,把红图放箱子里,灯只闪了一下,说明灯只接受了一个脉冲信号。


  • 来推演一下过程,说明一下其中的原理
  • 第1t
  • 箱子输出(红图,1)送达运算器和灯


  • 第2t
  • 箱子输出(红图,1)送达运算器和灯
  • 灯亮
  • 运算器根据(红图,1)输出(红图,-1)到达灯


  • 第3t
  • 箱子输出(红图,1)送达运算器和灯
  • 灯接收(红图,1),(红图,-1)两个信号,不亮
  • 运算器根据(红图,1)输出(红图,-1)到达灯


  • 第4t
  • 同第3t
  • …………


  • 【持续信号转脉冲信号:通过时间差进行信号抵消】
  • 原信号先到达灯让灯亮,1t后负值信号到达灯,
  • 两个信号抵消就没有了,灯不亮。
  • 因此灯只会接收最开始的那个信号,
  • 进而实现了持续信号转脉冲信号。

  • 上面说的只是持续信号转脉冲信号的核心部分,
  • 虽然实现了,但还要做些调整
  • 接着上面的信号推演过程
  • 假设在第30t时,箱子的红图拿走了,持续信号停止输出,


  • 第29t
  • 箱子输出(红图,1)送达运算器和灯
  • 灯接收(红图,1),(红图,-1)两个信号,不亮
  • 运算器根据(红图,1)输出(红图,-1)到达灯


  • 第30t
  • 箱子不输出信号
  • 灯接收(红图,1),(红图,-1)两个信号,不亮
  • 运算器根据(红图,1)输出(红图,-1)到达灯


  • 第31t
  • 箱子不输出信号
  • 灯接收(红图,-1),不亮
  • 运算器没接收到任何信号,无处理


  • 第32t
  • 箱子不输出信号
  • 灯没有接收到任何信号,不亮
  • 运算器没接收到任何信号,无处理


  • 也就是说,这个电路可以将持续信号转换为脉冲信号,
  • 但在持续信号结束时也会发出一个负值的脉冲信号



  • 简单整理一下整个信号流程
  • 有两个关键点
  • 第1t,箱子开始输出持续信号(红图,1)
  • 第2t,灯接收(红图,1),亮
  • ……
  • 第30t箱子停止输出持续信号
  • 第31t,灯接收(红图,-1),不亮


  • 因为除2t,31t外灯接收的一直是0信号,也就是说
  • 这个电路可以将(红图,1)这个持续信号
  • 转换为两个脉冲信号(红图,1)(红图,-1)


  • 很显然,(红图,-1)这个脉冲信号不是我们需要的
  • 我们要加一个限制器,或者说是过滤器
  • 将(红图,-1)这个脉冲信号拦下。
  • 这用一个判断运算器就能简单的完成
  • 电路图:
93640afb43166d226829ab584f2309f79252d2c4.jpg
  • 可以想象这个电路会在很多地方用到,
  • 因此要用到通配符,使电路具有适配型。
  • 适配性是指在不同的情况仍然可以简单方便的使用
  • 通配符是编程领域的一个名词,是游戏中的*信号
  • 下一篇会详细说明通配符,
  • 这里只简单的使用
  • 选择黄色的*信号:
7464fb166d224f4a08c7cddf00f790529a22d1c4.jpg
  • 黄色的*信号是“每个信号”
  • 可以理解为对每个信号都进行相同的操作。
  • 这样不管我们想要对什么信号进行处理都可以直接用这个电路:
8589d5224f4a20a46f40820b99529822700ed0c4.jpg


  • 持续信号转脉冲信号,结束

  • 有了持续转脉冲,就可以愉快的使用存储器了,
77aa8bfa828ba61e2d1a5be24834970a324e59a3.jpg
  • 考虑到存储器(4号)只用记录两个状态——蒸汽发电工作中OR蒸汽发电未工作
  • 可以将存储器改为自重置计数器
319c298fa0ec08fa558a806a50ee3d6d57fbda91.jpg


  • 到目前,我们实现了这样的功能:
  • 当蓄电池小于5%,发出一个脉冲信号让自重置计数器记为(Z,1),表示蒸汽发电已经工作
  • 接下来,我们要实现以下功能:
  • 当蓄电池大于30%,发出一个脉冲信号让自重置计数器记为(0),表示蒸汽发电已经停止工作
  • 这个很简单,直接加上就行了
F73273ef76094b36e4a08920aacc7cd98c109d69.jpg
  • 还有一些问题没有解决,
  • 回到需求:
  • 当蒸汽发电机未工作,小于5%时开始工作,大于5%时并不工作
  • 当蒸汽发电机已工作,小于30%时仍然工作。大于30%时停止工作


  • 也就是根据蒸汽发电机当前的状态,来决定按5%判断还是按30%判断。


  • 蒸汽发电的工作状态我们已经获取了,接下来就要通过工作状态控制按5%判断还是按30%判断,
  • 下图:
9d2a71ea15ce36d3f92a11fd33f33a87e850b175.jpg


  • 到此就完成了。
  • 图中为了进行测试,连的是常量箱,实际应用连的是蓄电池


  • ps:
  • 1.最后的成品电路并非是最优的电路,主要是为了理解和讲述的方便而设计的。
  • 2.这个电路有很多种实现方法,建议厂长们多多尝试,可以get到很多有用的电路技巧。
  • 我采用这个方法主要是为了说明持续转脉冲,其实本来是想用来讲暂存器的,但发现除了这个例子,好像也没什么地方可以说持续转脉冲了。

  • 之前那个蓄电池的只能说是教学性质的电路,这里放一个实用性质的实现方法;
  • 来源不详...
13fd3d35e5dde7111e430294adefce1b9c16615b.jpg
4c8cdb2762d0f703ae74c7f702fa513d2797c573.jpg


  • 这个电路可以看出是对存储器的高级运用.利用了存储器循环时的时差.
  • 这种实现只可意会不可言传,一般伴随着沉思者雕塑,混乱的草稿纸,一闪即逝的灵感....
  • 比我工业式流水线方法制作的电路不知道高到哪里

  • 由于个人精力原因,
  • 该贴暂定完结.
  • 主要内容基本上都讲了,也就差一些无关紧要的练习了,
  • 因为执行力跟不上各种各样突如其来的想法,后半段一心多用,质量已经并不能让自己满意了.
  • 不太想烂尾或者让大家等着了,或许我缺少些耐心吧.
  • 不过放心,我的精力仍然在异星工厂上,还是这个游戏的***粉.
  • 大家以后可能会在其他方面看到我的身影.


  • 最后感谢大家的支持和认可.