MBUS协议_协议解析

MBUS协议_协议解析来自于我的163博客,一篇好好的技术文章,在163上居然提示不能显示,我2014年6月25日就翻译出来了,当时很多其他博客都是直接拷贝我的文章都能在网上发布。看了许多关于MBus协议的资料,感觉说的不具体、不完整、也不系统,本人准备结合一个具体的产品实现,从理论和实现上对MBus协议做一个详细的论述,如有不当之处,欢迎讨论。1介绍MBus(MeterB…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

来自于我的163博客,一篇好好的技术文章,在163上居然提示不能显示,我2014年6月25日就翻译出来了,当时很多其他博客都是直接拷贝我的文章都能在网上发布。

MBUS协议_协议解析

 

看了许多关于MBus协议的资料,感觉说的不具体、不完整、也不系统,本人准备结合一个具体的产品实现,从理论和实现上对MBus协议做一个详细的论述,如有不当之处,欢迎讨论。

 

1介绍

        MBus(Meter Bus)即仪表总线,MBus总线开发的目的是用于满足网络系统和远程抄表的需要,例如用于测量家里面气和水的消耗。MBus仪表总线可以满足由电池供电或远程供电的计量仪表的特殊要求。当计量仪表收到数据发送请求时,将当前测量的数据发送到主站,(主站可以是手持设备、计算机、或其他终端)。主站定期读取某栋建筑物中安装的计量仪表的数据。MBus在家庭电子系统中的其他应用有:报警系统、智能照明、热能控制。

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

 

2串行总线系统的基本原理

2.1串行总线应用和定义

数据处理系统互相通信的方法是根据相互间的通信距离来分类。根据相互间的通信距离,可以将网络分为:覆盖遍及世界的全球网络(Global Area Networks,GAN);覆盖大陆或大片地方的广域网(Wide Area Networks,WAN);覆盖距离可达几公里,或者被限制在特定的地理区域,如实验室,办公楼和办公场所的局部局域网络(Local Area Networks ,LAN)。局域网可以被用来连接一个终端设备、电脑、测量设备、自动化出来模块等。局域网中设备的连接方式(即拓扑结构)有下面三种方式:

星型拓扑:每个设备用一条独立的传输线连接到一个中央处理单元。每个设备可以顺序或者同时向中央处理单元传送数据。这种拓扑的一个缺点是增加了布线的需求。

环形拓扑:设备连接起来形成一个环形,数据从点到点的进行传输。这种拓扑的缺点是一个设备有故障,整个环形网络都不能够工作。

    总线拓扑:每个设备通过一条公共的总线连接在一起,这样在某一时刻只有一个设备能够传输数据。这种拓扑非常符合成本效益,一个设备出故障不会影响其他设备通信。数据可以在总线上传输到所以设备(即广播,Broadcasting),或者传输到某组设备(即组播,Multicasting)。

 

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

           一个串行总线可以被定义为一条传输路径,所有参加者在这条路径上使用相同的媒介,按照时间顺序传输他们的数据串(例如,一位一位传输)。相比之下,在并行总线系统中一个字节的各个独立比特是在一定数量的数据线上同时传输。这种并行传输方式增加了数据线和连接器的成本,但数据的传输时间比串行总线短。

2.2总线系统的基本功能

    根据传输和访问技术对串行总线系统进行分类,下图展示了各种形式的串行总线系统:

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

 

 

          总线第一层根据所使用的多路复用技术分为时分多路复用和频分多路复用,在频分复用下,总线传输媒介的频谱被分为频段,每个频段代表一个频道(Channel)。总线上的每个设备分配一个频道。

2.2.1接入技术

在总线系统中,总线传输媒介被全部总线设备一起共同使用,所有设备的各种传输要求都需要考虑。设备在总线上传输数据时使用的方法称为接入技术。这些接入技术必须保证总线设备不会在同一时刻使用总线,因为这样会导致总线冲突或者干扰,而且接入技术必须保证每个总线设备在总线上有一个确定的最小数据传输时间。各个设备对总线的分时使用,是通过一个分配逻辑系统来实现的。

使用中央分配逻辑,中央总线控制器接收到一个使用总线的请求,由中央总线控制器来决定设备能否占用总线和在什么时候占用总线。为了实现这种分配逻辑,有多种方法被用来注册总线的占用请求,如下所示:

*直接注册法:要求每个设备有一条独立的分支线与分配逻辑相连。

*轮询法:根据设备的传输要求,进行周期性的轮询。

*请求发送:使用发送者的标识符在一条公共线上请求发送。

*时隙法:每个设备在自己固定的时隙占用总线,不用考虑设备单独的请求。

中央分配逻辑的优势是减少了总线分配方法在单个设备上实现的复杂性。

总线分布式分配逻辑,要求总线上的每个设备需要具备能够识别总线是否被占用的功能。有多种方法可以用来判断总线是否正被占用,如下所示:

*互斥询问设备法:这种方法要求每个设备有一条请求线与之相连。

*周期性总线分配法:通过在总线设备间传输所有权标识(ownership)来实现。

*载波监听多址接入(CSMA,Carrier Sense Multiple Access):设备需要具有检测总线是否正在传输数据的能力,一旦发现总线空闲就开始传输自己的数据。为了避免冲突,这种冲突是在信号传输的时候出现的,例如,在以太网(Ethernet)这种总线系统中,设备能够在总线上使用它们自己的数据判断是否有总线冲突,一旦发现有总线冲突,立即停止传输数据,并在一个合适的时间间隔后开始从新传输数据。

分布式分配逻辑的实现,要求总线设备有更高的逻辑复杂性,但这种总线系统也有他的优势,某个中央总线控制器出现故障不会导致整个总线系统的崩溃。

2.2.2 通信设备的同步

    同步可以理解为通信的参与者对于信号传输和接收在时间上的协调。同步的各种方法可以根据数据的传输是同步还是异步来进行分类,同步技术的分类如下图:

 

 MBus协议详解(一) - 北极星 - xiebingsuccess的博客

     采用同步传输技术,一个稳定的时钟需要由一个中心站点或者一个通信设备提供,用于测量通信时间。异步传输技术可以分为具有应答的异步传输和没有应答的异步传输。采用具有应答的异步传输技术时,发送者在线上向接收者发送一个特殊的信号表示有数据需要发送,然后等待接受者的应答。不带应答的异步传输技术,对于并行比特传输需要在一条特殊的信号线上使用一个传输时钟,对于串行比特传输要用开始和停止比特来构成一个字符。

2.2.3 错误处理

在总线系统上导致传输错误的原因是多种多样的,特别是来自于外部的电磁干扰,例如电感耦合、高频干扰、电容耦合、由多个地导致的来自于地回路的直接耦合电流。一个总线系统必须确保能够发现和纠正传输错误,通过在数据传输过程中提供附加信息,使数据在接收的时候能够被检测。特别是在异步传输时,一个附加的奇偶比特通常和字符一起传输。通过这个附加的奇偶比特,使得奇偶条件(偶数个1,或者奇数个1)得到满足。另外一种方法是使用校验和的方法,校验和是通过精确的数学运算从传输的数据中得到的。接收者通过比较接收到的校验和,从接收到的数据中计算出的校验和是否相等来判断数据在传输中是否出错。奇偶校验位仅仅能够识别出奇数个错误比特。为了纠正错误,接收者需要发送一个应答给发送者,用于明确指示传输是否有错误。同时,发送者在一个固定时间段内检查数据接收者发出的应答,如果发生超时(timeout),发送者重传数据。为了详细说明一个字符编码的安全性,海明间距(Hamming Distance)被使用,在所有情况下,这能够识别总错误数减1个错误。

2.3 OSI参考模型

ISO-OSI参考模型为OSI标准得开发提供了一个基本原则,OSI参考模型由ISO组织设计,目的是为了确保来自于由不同厂家生产、具有不同体系结构的系统所发出的信息能够按照标准的处理程序被交换和解释。

这个模型在七个层次上分配通信的功能,两个通信对象对应的通信层上有一条虚连接。仅仅在最底层(Layer 1)存在物理连接用于信号的交换,除第一层外的每个通信层都是通过其下一层来获得必须的服务。OSI模型仅仅定义各层的功能和服务,而不定义各层的技术(即协议)实现。

如果两个应用程序之间存在如下面几点的协定(例如,存在协议),就可以在第七层上进行信息交换:

*在第6层上信息的表示。

*在第5层上内容和形式通信的流程。

*在第4层上信息的完整性和传输的安全性。

*在第3层上通过网络传输路由信息。

*在第2层上传输的安全性。

       *在第1层上的物理媒介。

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

 OSI模型的七个层次:

物理层:两个通信对象之间最基本的物理连接发生在最底层,通过指定线缆、通信距离、连接器的PIN脚、比特位的表示方法在物理层定义传输媒介的机械和电气特性。

数据链路层:这层确保在两个通信对象间建立一条可靠的运行连接。为此,数据链路层协议定义保护传输的方法、报文结构、访问传输媒介的方法、通信对象寻址和同步的方法。通过使用在2.2.3节描述的错误处理程序,数据链路层负责识别和纠正本层传输错误。

网络层:负责选择出网络中两个通信对象间最优化的传输路径并执行这个传输路径,同时将这种路由服务提供给传输层。当不同的网络通过网关相互连接,网络层的这种路由功能就非常重要。

传输层:传输层表示基于5~7层的应用和基于1~4层的传输间的边界层,传输层负责指导信息通过网络层、进行流量控制和将信息分组成单个的包。

会话层:会话层为一个通信“会话”提供打开、按顺序进行、终止这样一个处理过程。还包括两个系统间对话的控制,即他们各自传输特权的确定。

表示层:发送端应用程序的数据在表示层被转换成接收端应用程序能够解释的数据格式。这样,表示层就实现了数据格式和代码转换间的匹配。

应用层:此层是开放系统(OSI)和用户之间的接口,应用层给用户或者用户程序提供服务,这使得用户或者用户程序与开放系统很容易的工作。应用程序需要被开发,这样就可以通过应用层的协议来访问开发系统的功能。

在下图中从发送端到接收应用程序的数据流图,通过连续箭头指示可以看出。发送端的开销信息对于信息的传输和处理是必须的,开销信息被增加到每层的实际数据中,在接收端,这些开销信息按照他们被添加的相反顺序移除。

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

 按照OSI模型的数据传输

3 Mbus总线概述

3.1 消费者公用仪表总线系统要求

对于要求可靠性和成本效益的网络消费者仪表系统来说,有多种网络拓扑结构可以被考虑,但实际上只有总线拓扑结构式最适合的。下面将解释在这种总线系统上的仪表能够被读取所需要满足的要求。

最重要的要求是在长达几千米的距离上,多个设备(达到几百个)的互连。因为由仪表发送的数据被用于终端用户的计费,因此要求总线具有高度的传输完整性。另一方面,因为通常只有相对少量的数据需要传输,因此可以采用高速度来传输。为了保证数据传输的高度完整性,要求总线具有很强的抗电容电感耦合干扰能力。为了避免接地回路,总线上的从设备应该被电隔离。

对总线的进一步需求是整个系统的低成本,这要求总线使用的传输媒介不需要屏蔽、使用尽可能少的组件使仪表的单个成本减少、通过总线对仪表供电。另外系统的安装和维护成本需要考虑进来,可以采用多种方式来减少系统安装维护成本,比如极性反接保护、在总线系统运行期间允许附加设备的接入。

3.2 在OSI模型中的MBus

由于没有一个总线系统能够满足3.1节描述的要求,因此Meter-Bus(M-Bus)总线被开发出来。MBus由Paderborn大学的Dr. Horst Ziegler教授和TI公司的Deutschland GmbH 和 Techem GmbH共同开发的,MBus基于ISO-OSI参考模型设计,目的是为了实现一个开发系统,可以利用几乎任何可用的协议。

    由于MBus不是一个网络,因此它不需要一个传输和会话层,即其在OSI模型中的第4~6层是空的,因此,只有物理、数据链路、网络和应用层提供的功能。

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

                                                        在OSI模型中的MBus协议层

    由于在ISO-OSI模型中修改像波特率、地址这类参数是不允许的,因此在7层OSI模型的最上层和旁边定义了管理层。

 MBus协议详解(一) - 北极星 - xiebingsuccess的博客

                                               Mbus的管理层

        因此地址254、255被保留用于管理物理层,地址253用于网络层,这些地址仅在某些情况下被使用。使用这一新的层来直接管理每个OSI层的实现特点,这不符合OSI模型。

4 物理层

4.1.1操作原理

        Mbus是一个层次系统,由一个master(中央分配逻辑)来控制通信。MBus由master、许多slaves(终端设备仪表)、一条双线连接电缆组成。Slaves被并行的连接到传输媒介即连接电缆上。

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

                                                         MBus系统原理框图      

为了实现具有低成本传输媒介的总线网络,一条具有串行数据传输功能的二线电缆被使用。为了允许对远程slaves供电,总线上的比特描述如下:

由主到从的bit串传输,通过电压调制方式实现。一个逻辑1(称为Mark)对应于在总线的驱动器(repeater)上输出36V的标准电压,repeater是master的一部分;一个逻辑0(称为Space)被发送时,repeater减少总线电压12V,在总线驱动上输出24V的标准电压。也可以理解为在24v电压上进行的电压调制,发送Mark时候在24v基础上增加12v电压,发送Space的时候不增加12v电压。

    从slave到master发送的bit串,通过调制slave上的电流消耗进行编码。一个逻辑1是由最高1.5mA的恒定电流表示,一个逻辑0通过slave额外增加11~20mA的电流来表示。处于Mark状态的电流可用于给接口和仪表本身供电。

MBus协议详解(一) - 北极星 - xiebingsuccess的博客

                                                                                  MBus总线上的bit串表示

由于输出阻抗的原因,slave传输逻辑0(Space)的时候会导致repeater上输出电压的轻微减少,如上图所示Bus Voltage at Repeater上可以看到电压的轻微下降。在总线上的静止状态表示逻辑1(Mark),即在repeater上总线电压是36V,slave需要的最大恒定静态电流是每个1.5mA。当所有slave都不发送Space(逻辑0)的时候,Master端的repeater上将输出恒定的电流以驱动总线,换句话说就是在静止状态时slave将消耗恒定的电流。因为slave消耗恒定电流这个原因,而且线缆上存在阻抗,在slave端检测到的实际Mark电压会比36V低,具体低多少依赖于slave和repeater间的距离和slaves的总静态电流。因此,slave不必检测绝对的电压电平,而是对于Space检测一个12V的电压降。Repeater必须调整它自己到静态电流水平(Mark),并且将总线上11~20mA电流的增加解释为一个Space。在Mark状态被定义为36V时,这种处理方式是可以实现的。这意味着在任一时刻,只能在一个方向上进行传输:从master到slave,或者从slave到master,即半双工(Half Duplex)。

由于在master到slave方向的传输有一个12V电压的变化,在应答方向有最少11mA电流的变化,因此Mbus总线不仅实现了给slave供电,同时还获得了对外部干扰很强的抵抗力。

4.2 总线安装规范

MBus系统可以由多个区域(zones)的组成,每个区域有它的组地址,区域间通过区域控制器和更高层的网络进行相互连接。每个区域由多个段组成,这些段按顺序连接到远处的repeaters。然而,在通常情况下,一个MBus系统仅由单一的段组成,这个段通过本地repeater连接到个人电脑(PC),PC充当总线Master的角色。这个本地repeater将MBus信号转换为RS232接口信号。从现在开始,本地repeater将简单的称为repeater,本地repeater和PC的组合称为Master。

双线标准电话线缆(JYStY N*2*0.8 mm)被用于作为MBus总线传输媒介。一个slave和repeater间的最大距离是350m,这个长度对应的线缆电阻达到29欧姆。这个距离应用于标准配置有300~9600的波特率和最多250个slaves。可以通过限制波特率和减少总线上slaves的数量来增加总线的传输距离,由于需要给远程slave供电,在Space状态的总线电压一定不能低于12V。在标准配置的线缆总长度不能超过1000m,以满足180 nF的最大电缆电容的要求。

到目前为止还没有标准或者推荐一种MBus插头连接仪表到总线系统,但是MBus协议组正在定义一种合适的连接器。三种不同的插头必须对连接器定义:a) 安装模式、b)仪表固定安装、c)表手持连接。

4.3 repeaters规格

    See chapter ‘Electrical Requirements Master’ in the document ‘WG4N85R2.DOC’。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181456.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月16日 上午9:16
下一篇 2022年10月16日 上午9:16


相关推荐

  • 安卓dtmf识别_使用Goertzel算法识别DTMF信号

    安卓dtmf识别_使用Goertzel算法识别DTMF信号Goertzel算法Goertzel算法由GeraldGoertzel在1958年提出,用于数字信号处理,是属于离散傅里叶变换的范畴,目的是从给定的采样中求出某一特定频率信号的能量,用于有效性的评价。这个算法有几个关键的参数:采样率R,指的是需要分析的数据每秒钟有多少个采样目标频率f,指的是需要检测并评价的这个频率的值检测区段采样值数量N,也就是每N个采样这个算法会对频率f给出评价检测区段包含目…

    2025年5月28日
    4
  • 交换机的Access口与Trunk口

    交换机的Access口与Trunk口基本概念 Access 类型的端口只能属于 1 个 VLAN 一般用于连接计算机的端口 Trunk 类型的端口可以允许多个 VLAN 通过 可以接收和发送多个 VLAN 的报文 一般用于交换机之间连接的端口 处理流程 Acess 端口收报文 收到一个报文 判断是否有 VLAN 信息 如果没有则打上端口的 PVID 并进行交换转发 如果有则直接丢弃 缺省 Acess 端口发报文 将报文的 VLAN 信息剥离 直接发送出去 trunk 端口收报文 收到一个报文 判断是否有 VLAN 信息 如果没有则打上端口的 PVID 并进行交换转发 如果

    2026年3月19日
    2
  • 关于Raid0,Raid1,Raid5,Raid10的总结

    关于Raid0,Raid1,Raid5,Raid10的总结RAID0定义:RAID0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就

    2022年7月1日
    23
  • gamma校正 matlab,Gamma校正 ——图像灰度变化 OpenCV (十)

    gamma校正 matlab,Gamma校正 ——图像灰度变化 OpenCV (十)Gamma校正(C++、OpenCV实现)1.作用:Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:伽玛校正由以下幂律表达式定义:2.函数原型voidcalcHist(constMat*images,intnimages,constint*channels,InputArraymask,OutputArrayhist,int…

    2026年2月18日
    4
  • Java中随机数

    Java中随机数    在Java中主要提供了两种方式产生随机数,分别为调用Math类的random()方法和Random类提供的产生各种数据类型随机数的方法。1.Math.random()方法这个方法默认生成大于等于0.0且小于1.0的double型随机数,即0<=Math.random()<1.0。虽然Math.random()方法只可以产生0~1之间的double型数字,其实…

    2022年7月8日
    25
  • ant打包war时报错:java.lang.IllegalArgumentException: MALFORMED

    ant打包war时报错:java.lang.IllegalArgumentException: MALFORMED在配置 jenkins 的自动发布时发现有些工程打包成 war 再发布到 tomcat 的时候会出现如下错误 java lang IllegalArgum MALFORMED 找了好久最终发现是因为 war 目录中存在中文文件名 应该是因为打包 war 时编码的问题导致打包后的 war 内中文文件名无法正确读取 最后将所有中文文件名修改之后重新打包问题解决

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号