异星工厂吧 关注:60,498贴子:385,432

#电路展示# 一种基于CAN总线的优先级发送电路(原版LTN)直播贴

只看楼主收藏回复

我又来水经验啦
经验+3


IP属地:湖南1楼2019-11-19 15:55回复
    首先交代下故事背景吧
    为了偷懒,曾经做过的尝试的链接如下:
    https://tieba.baidu.com/p/6193446817
    当时的话,信号电路对于我这种非专业人士来说还是有点困难。
    做出来的东西效果只能算过得去,并不是那么让人满意。
    大约是在今年的7,8月份,在B站上看完了一整个的系列视频
    啥视频?链接在这:https://www.bilibili.com/video/av48957974?from=search&seid=10047882282726957956
    萌生了在游戏里做cpu的想法,看完之后发现。。。游戏CPU好像很难用来控制火车(我猜的


    IP属地:湖南2楼2019-11-19 16:02
    回复

      这部分是供货站的电路,其中显示模块只是演示的时候便于观察增加的
      供货的控制逻辑如下:
      1·当站点新建时,编号为零。(调整完成后将红线链接至公网)
      2.当站点编号为零时,向主控制中心发送控制字(请求分配编号)
      3.当站点编号大于零时且火车装满货物,向主控中心发送控制字加编号(车站准备就绪)
      4.当收到主控中心发来控制字加编号(允许车站发车),应发车数计数器加一,车辆离站应发车数计数器减一
      5.车站开启条件:当有车在站内就关闭(防止火车一窝蜂的堵在一个站点)
      6.车站编号注销:当应发的车数计数器等于发送次数计数器时则编号没有在主控中心注册使用,发送控制字加编号到公网,并清除站点编号储存器。(这一点也是必须的


      IP属地:湖南4楼2019-11-19 16:30
      回复

        这是卸货站的控制电路,其中显示模块是为了方便演示添加的
        卸货的控制逻辑如下:
        1·当站点新建时,编号为零。(调整完成后将红线链接至公网)
        2.当站点编号为零时,向主控制中心发送控制字(请求分配编号)
        3.当矿站编号大于零,且被新建时,应到车辆计数器加十,待发送计数器加十(请求主控中心派车)
        4.当矿站大于零,且矿站内资源(需要供给的资源)被消耗一车皮时发送请求信号(请求主控中心派车)且应到车数计数器加一
        5.车站开启条件:应到车数计数器大于零(火车到站时,应到车数计数器减一)
        6.车站注销:应到车数计数器等于零时,且注销开关打开时进入注销程序,发送控制字加编号至公网(发送成功后清零编号存储器)


        IP属地:湖南5楼2019-11-19 16:44
        回复

          这是主控制中心的控制电路,其中显示模块是方便查看当前总线数据添加的。
          首先说编号的分配和回收逻辑吧
          1.当接收到控制字时,则发送未使用的编号到公网(编号加控制字)编号储存器减一
          2.当接收到控制字加编号时(有站点发起注销),储存编号的内存地址加一,将编号储存到内存
          3.当内存中有编号时,当下一个请求分配编号的信号来时,优先输出内存中的编号。
          接下来说控制派车的逻辑。
          1.当有车站准备就绪的信号来时,右边的内存地址加一,将编号储存到内存里
          2.当有请求派车的信号来时,等待分配编号发车的计数器加1。
          头有点昏了,直接运行看吧


          IP属地:湖南6楼2019-11-19 16:56
          回复
            先测试编号的分配是否正常。

            这是主控中心等待发送的编号值:N=65534

            这是卸货控制模块,并且还没有连接到公网。

            设置灯的条件为N=65534,那么当它请求主控分配编号时,它应该得到刚才主控中心等待发送的编号值。
            获得编号后它会向主控中心请求十辆车,这个应该在主控中心的待发送计数器上能看到。
            现在连接模块到公网

            信号分配是正确的,那么我们等待它全部发送完成再去看看主控中心的待发送计数器的值(应该是10)

            主控中心得到了正确的值。


            IP属地:湖南7楼2019-11-19 17:09
            回复
              接下来看一看供货车站,当然首先要检查编号的分配是否正确

              由于刚才先连接的是卸货车站,N=65534这个编号已经分配给了卸货车站
              现在主控中心的待发送编号指向了N=65533(这是正确的值)


              当我把供货控制模块连入公网时,箭头指向的灯:N=65533这个灯会亮(正确的情况下)
              好了,现在把供货控制模块连入公网看看情况

              连入公网后,供货控制模块获得了一个编号现在回过头去看看主控制中心的待分配编号吧
              正确的值应该是65532

              下面开启供货车站控制机器人运货的开关

              开启之后,供货控制电路在达到条件后(火车装满)就会向主控中心注册,主控中心接收到信号后会立即要求供货车站发车(之前卸货车站已经向主控中心请求发车10辆,但是由于没有准备就绪的车站所以主控中心未处理)


              现在它已经运行起来了,还记得之前说的:当卸货站获取到编号时会向主控中心请求发十辆车吗
              等待一会我们看看卸货站存储的货量是不是等于16K乘以10=160K,并且观察主控中心的计数器和内存情况。



              IP属地:湖南8楼2019-11-19 17:45
              回复
                接上一楼


                控制中心内存正确的储存了供货站的编号用于控制供货站发车
                两个小时过去了
                吃饭去咯


                IP属地:湖南9楼2019-11-19 17:51
                回复
                  简单来说,这套系统,通过一根红线进行通信,发车策略就是卸货站消耗一车皮的资源,供货站就发一辆车,最多支持32767辆火车的控制,缺点就是编号越小越难发送成功(优先级抢占)


                  IP属地:湖南来自Android客户端10楼2019-11-19 18:29
                  回复
                    这题目一股论文范,阔怕阔怕


                    IP属地:广西11楼2019-11-19 18:31
                    收起回复

                      有人看完了吗
                      ?


                      IP属地:广东12楼2019-11-19 20:03
                      回复

                        经过十四次派车调度,实际运行产生的误差仅为一组资源


                        IP属地:湖南13楼2019-11-19 21:29
                        收起回复
                          大佬恐怖如斯


                          IP属地:四川来自Android客户端14楼2019-11-20 20:43
                          收起回复
                            昨天刚开题答辩完,今天一刷就看到这帖子,这标题加内容层次,啊,放过我吧


                            IP属地:上海来自Android客户端15楼2019-11-21 08:12
                            收起回复
                              饶了我吧


                              IP属地:广东来自Android客户端16楼2019-11-21 09:22
                              收起回复