M-BUS是一种总线,他被广泛的应用于抄表行业。通信方式是一种半双工的,他在OSI模型中地位处于物理层、数据链路层、网络层(该层次是可扩展的,也可不要)、应用层。
物理层:使用物理介质进行bit的传输,主站到从站的bit流传输规定是用电平的切换来表示bit的逻辑0和1,从站到主站的bit流传输规定是通过用电流调制来实现。在主站到从站的bit流传输中,电压在22V到42V之间被认为是逻辑1,电压在12V到-10V之间,被认为是逻辑0。从站到主站的bit流传输中,电流在0mA到1.5mA之间被认为是逻辑1,电流在Imark+11mA到Imark+20mA之间被认为是逻辑0,每个从站的Imark取电流约等于1.5mA。
数据链路层:在这一层有多种协议来进行规定双方的通信。其中有一个协议规定了双方传输数据时,字节流的顺序是先低bit后高bit,这个在ARM体系中的内存中的小端模式有着类似的概念,如同小端模式一样,低地址对应于低字节,高地址对应于高字节。只不过是用在了数据链路的传输过程中,只要规定好了双方传输的字节序,才能准确的通信,所以这个可以看成是一个协议。还有一种协议,是规定了双方传输数据的传输帧的格式,有三种帧格式,分别是单字节帧、定长短帧、和变长长帧,而变长长帧应该是应用的最多的一种,这三种帧格式中,每一种帧的格式中都有很多字段,每一字段都有着不同的含义,包括校验信息,数据信息,控制命令信息,地址信息,还有用户数据区等,这也可以看成是一个协议,详细的可以在网上搜索。
应用层:定义了数据类型和数据结构,从站利用主站发来的数据类型和数据结构,可以将测量记录等信息进行处理成为一个长帧,然后放到用户数据区中发送给主站,主站利用数据类型和数据结构来对来的数据中的用户数据区中来解析处理,从而获得从站测量到的数据信息等。
由于在通信时由于距离的长度不同,干扰的不同,在总线上的电压可能不一样,由于从站设备的电源可以是由来自总线上的电压来进行供给,从站就需要来找到基站电压,来知道总线上传输过来的电压在什么变换程度上认为是逻辑0或逻辑1,所以为了让从站能够灵活的动态的获取到自己的基准电压,所以有了TI公司推出的TSS721A MUS接口芯片,该芯片的作用就是可以动态的识别逻辑电平。
本文出自 “whylinux” 博客,请务必保留此出处http://whylinux.blog.51cto.com/10900429/1892860
原文:http://whylinux.blog.51cto.com/10900429/1892860