如何在深圳住房和建设局网站办事大厅中创建并优化一个有效的网站?
摘要:深圳住房和建设局网站办事大厅,网站建设 清远魔方网络,今天重大新闻国际新闻,做网站论文研究方法怎么写文章目录写在前面1 物理层2 数据链路层MSTP的流程如下noteMSTP帧格式3 网络层写在前面 这周加更一篇&#xff
深圳住房和建设局网站办事大厅,网站建设 清远魔方网络,今天重大新闻国际新闻,做网站论文研究方法怎么写文章目录写在前面1 物理层2 数据链路层MSTP的流程如下noteMS/TP帧格式3 网络层写在前面
这周加更一篇#xff0c;来弥补一下之前落下的进度。简单的说两句#xff0c;之前讲应用层的时候#xff0c;只是跟官方的手册来同步一下#xff0c;但是从个人理解来说#xff0c;自…
文章目录写在前面1 物理层2 数据链路层MSTP的流程如下noteMS/TP帧格式3 网络层写在前面
这周加更一篇来弥补一下之前落下的进度。简单的说两句之前讲应用层的时候只是跟官方的手册来同步一下但是从个人理解来说自下而上的讲解和理解是更有好处的。因此今天我就把物理层数据链路层和网络层放在一起来讲这样形成一个自下而上的知识体系应该更适合各位看官的理解。 物理层有很多比如MS/TP, IP等等在产品中比较常用也是这两种尤其是MS/TP因此在这里我就以MS/TP为例进行讲解。IP的东西如果有时间或者精力的话我再加进来。这里强调一下数据链路层也就是MS/TP还是很有用的肯定要弄懂。它是整个BACnet通信的基础也就是BACnet正常运行起来的前提条件就是MS/TP通信是正常的。调试BACnet的时候先是确定物理层的RS485是否正常然后用抓包工具看整个总线的MS/TP是否正常工作最后再看BACnet运行的service或者object是否正常。
1 物理层 其实正常说来MS/TP是数据链路层而物理层是RS485。RS485其实就是串口改成差分信号因此传输距离相对于串口有了很大的提升。作为firmware工程师我就不在这里说硬件隔离什么的东西我也不是很懂的。但是从firmware工程师的角度来物理层就是RS485或者说串口加使能引脚。
2 数据链路层
在这里的数据链路层就是在整个RS485拓扑里面的设备能够共同完整地进行通信。它采用的方式就MS/TPMASTER-SLAVE/TOKEN-PASS字面的意思就是主从设备的令牌传输。在整个RS485的总线中令牌是在主设备之间进行传输的而从设备只是对总线中的数据进行侦听而已。 在MS/TP的总线中每个设备都必须有一个唯一的地址来标识自己。这个地址是一个无符号的8bit数据其中以0xFF为目的地址的数据代表广播数据而0xFF不能作为源地址出现在MS/TP协议中。0-127都可以作为主节点和从节点的地址而128-254只能作为从节点的地址。
MSTP的流程如下
假如在整个MS/TP总线中存在地址分别为1、3、5的三个设备。我们分别叫它们为阿大阿二阿三。
阿大、阿二、阿三都在总线上等着收消息。三个人等了半天都没收到消息也不知道总线上都有谁阿大等不及了阿大先等不及的原因是address越小timeout的时间越小)阿大就开始问2地址有人不用的是Poll for Master消息没人回复阿大又开始问3地址有人不这时候阿二开始回复我在啊!(用的是Reply Poll for Master消息)阿大知道阿二在了就告诉阿二我用完总线了你可以用总线了也就是把token传给了3地址)阿二这时候也不知道他的令牌传给谁因此也需要在总线上问4地址的人在不在5地址的人在不在阿三开始回复说我在了。阿二就告诉阿三你可以说话了阿三按照同样的方法找到了阿大此时阿大、阿二、阿三就都知道它们的下一个设备了阿三就把令牌传给了阿大在阿大拥有令牌的这段时间阿大可以主动发起对话其它设备只能进行回复这样阿大说完话就让阿二说再让阿三说周而复始同时阿大、阿二、阿三还会周期的在总线上问其它的地址在不在这样就能保证新设备也能加入这个对话流程
note
需要注意的是
当总线上没有令牌的时候超时时间Tno_token 地址 * Tslot其中Tno_token是500msTslot是10ms。因此阿大最先发现没有令牌。当阿三问地址在不在的时候肯定有一个最大值才能问道阿大这个最大值是device object的一个property需要在初始化的时候进行设定max_master阿大、阿二、阿三每个人在自己的对话窗口期或者说令牌持有期能说多少话也是有限制的也是device的一个property需要在初始化的时候进行设定需要说明的是阿大、阿二、阿三都是MASTER这里面没有SLAVE首先在BACnet里面基本上没有SLAVE的使用了其次从字义上也可以理解SLAVE是无法获取令牌的也就是SLAVE无法主动发起对话只能等待其他人的问询从而进行回复阿大、阿二、阿三这种传递话语权和询问加入者的过程就是MS/TP的过程也就是数据链路层的过程它保证了总线上的节点或者设备能够相互完整顺畅的通信起来看到这里各位看官基本上应该理解了整个链路层或者说MS/TP的工作过程但是就会有看官问了BACnet的通信是在哪里的呢就是在阿大、阿二、阿三获取令牌之后每个人说的话就是BACnet相关的通信了
MS/TP帧格式
前导码帧类型目的地址源地址长度帧头CRC数据数据CRC2*U81*U81*U81*U82*U81*U8可以没有2*U8可以没有前导码由0x55和0xFF组成 帧类型包括 00 ———— Token用于将总线的主导权传递给目的地址01 ———— Poll For Master用于发现总线上的MASTER设备并决定令牌环上的后续设备02 ———— Reply To Poll For Master用于表示发送设备想加入到令牌环03 ———— Test_Request用于回环测试04 ———— Test_Response用于回环测试05 ———— BACnet Data Expecting Reply用于发送需确认的BACnet消息消息长度可以使0-50106 ———— BACnet Data Not Expecting Reply用于发送不需要确认的BACnet消息消息长度可以是0-50107 ———— Reply PostPoned当设备接收到需确认的消息的时候来不及处理这个消息就会回复Reply PostPoned用于告诉发送者回复的设备需要等一会才能回复32 ———— BACnet Extended Data Expecting Reply33 ———— BACnet Extended Data Not Expecting Reply8-21和34-127预留下来128-255是为开发者用作非BACnet的私有帧用的数据区的前两个字符必须填写唯一的开发者的id所以数据的长度最少应该是2个字节最大到501个字节
3 网络层
从上图中可以看到物理层和数据链路层有很多选择比如IP, RS485, LonTalk等等。但是网络层就一个选择那么网络层是干什么的呢网络层就是将具有多种物理硬件和数据链路层的设备整合起来进行通信的层。咱们在数据链路层也就是第2部分简单讲述了MS/TP的通信过程但这个MS/TP的通信过程能够完成的条件就是所有的设备都是以RS485为硬件进行通信。如果整个网络中既有IP设备又有RS485设备那怎么进行通信呢这时就需要BACnet的网络层的功能了。这部分的具体实现我就不在这里说明了。首先在开发的过程这部分的功能基本都是在协议栈中包含对于开发者来说就是个黑盒不需要太多关注其次我对这方面的研究还不足以通俗地把它讲解出来因为它的分支很多不像一个MS/TP一样能一个逻辑的把整套东西讲完。所以呢有兴趣的同学可以去研究一下协议本身。但是我建议你还是不要了除非开发的时候遇到什么问题因为就单单是它的帧头就会因为不同的情况有很多种形态看的时候有点难。
