MBUS协议_ofdm调制原理框图

MBUS协议_ofdm调制原理框图4.4slave设计传输特性:slaves被设计为具有两种不同恒定sink电流,因此在总线上电压有1V的变化的时候,sink电流的变化一定不能超过0.2%。为了传输一个Mark,一个单位负载被指定,一个单位负载由最大为1.5mA的恒定电流组成。如果slave需要更多的电流,就必须增加适当数量的单位负载。当发送一个space的时候,slave需要多增加11~20mA的电流消耗。Slave在接收…

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

Jetbrains全系列IDE稳定放心使用

4.4 slave设计

传输特性:slaves被设计为具有两种不同恒定sink电流,因此在总线上电压有1V的变化的时候,sink电流的变化一定不能超过0.2%。为了传输一个Mark,一个单位负载被指定,一个单位负载由最大为1.5mA的恒定电流组成。如果slave需要更多的电流,就必须增加适当数量的单位负载。当发送一个space的时候,slave需要多增加11~20mA的电流消耗。Slave在接收数据的时候,检查总线电源的最大值Vmax,Vmax可以在21V~42V之间。Slave端检测到的电压超过Vmax-5.5V时,slave端认为接收到一个Mark;当检测的电压小于Vmax-8.2V时,slave端认为接收到一个Space。

远程供电:在slave和总线系统间的接口称为总线接口,总线接口可以从总线系统获得所需要的电流。如果可能,所有slave都应该从总线获得电流,在这种情况下,一旦从总线获得电流失败,slave能够自动切换到电池供电或者重要的数据能够被保存。如果slave仅仅通过电池供电,那么选择的供电电池应该有几年的使用寿命,这可以减少维护成本。

保护措施:Slaves的总线接口是极性无关的,也就是说两条总线可以互换,而不会影响slaves的运行。总线接口的这种极性反接保护功能除了具有保护的作用外,还可以简化总线系统的安装。Slaves中的某一个可能出现短路的情况,在这种情况下为了维持总线的正常运行,在每个slave的总线上必须有保护电阻,电阻的值为430±10Ω。这限制了短路时电流的最大值为100mA(42V/420Ω),在总线接口上减少了能量转换为热量。

M-BUS总线收发器TSS721

    为了满足slaves的设计要求,TI公司开发了集成电路收发芯片TSS721。TSS721在MBus系统的slave设备中作为到总线的接口芯片使用,由于slave的设计中使用了TSS721芯片,减少了组成slave设备的组件,节约了成本。除了根据MBus规范进行数据的发送和接收,TSS721还能够为与之相连的微处理器提供工作电压,这样TSS721和微处理器就可以进行通信,通信的波特率可以在300~9600这个范围。TSS721的其他特性还包括反极性保护功能,给微处理器提供3.3V的恒定电源,总线电源故障指示。

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

                                                                                  TSS721收发器框图

下面结合TSS721的框图,详细的介绍它的各个功能:

反极性保护:总线首先通过外部保护电阻被带到桥式整流器BR,以提供反极性保护。通过桥式整流器后的整流电压变为统一方向的VB端和GND端的电压,能够在VB引脚上得到(即VB引脚上的电压就是整流后总线上的电压差)。为了避免整流后电压的减小,当反极性保护可以省掉的时候,总线电压可以直接在VB引脚和GND引脚之间进行连接。

数据接收:比较器电路TC3用于检测来自于master的信号,通过电容SC的充放电,TC3调整自身电压到Mark电压水平,通过比较电路TC3的比较,将结果通过TX或者TXI端送至微处理器接收端。当总线处于Mark状态的时候,SC电容充电直到电压等于Vmark-8.6V;在Space状态下,SC电容进行放电。充电和放电电流比大于30倍,这使得任何种类的Uart协议都可以独立于数据内容而工作。电容SC上的动态参考电平可以使比较器TC3和总线上Mark电平电压形成一种动态平衡。 由于SC电容充电和放电电流之间的比例关系,导致了在传输协议上的特别要求,就是每发送11个bit,必须保证至少第11个bit是逻辑1,也就是说是一个Mark。这样就能够保证SC电容不会放电太多,对Mark电压电平的匹配总是有效的。当一个低于Mark电压水平7.9v的电压出现在接收端,TSS721的TX引脚输出逻辑0(0v),反向引脚TXI上输出电源电压。

数据发送:通过TC4控制恒流源CS1和恒流源CS3可以将RX和RXI引脚接收到的信号转换为总线电流,并进行电流脉冲编码。当发送Mark信号的时候,通过恒流源CS1从总线上吸取比较小的静态电流;当发送Space信号的时候,通过TC4将恒流源CS3接入总线系统,因此总线上增加额外的脉冲电流达到Ispace电流。静态电流(即恒流源CS1电流值)可以通过Ridd电阻在一定的范围内进行调节,脉冲电流(即恒流源CS3电流值)可通过Ris电阻进行调节。为了让处理器能够检测出MBus总线上产生的冲突,在RX(I)上的信号会被返回到TX(I)上。

    处理器供电:为了给微处理器供电,TSS721在它的VDD引脚输出3.3V电压。当限制到一个标准负载时,根据微处理器的数据手册可以消耗大概600mA的平均电流。对于脉冲电流的要求,储能电容STC被使用。当连接到总线的时候,这个电容将被充电到最大7V的电压,VDD引脚上的输出电压在Vstc=6V的时候是有效的。当总线电压供电失败,TSS721在PF引脚输出电压失败信号,这个信号可用于通知处理器将其数据保存在存储设备中(比如:EEPROM),同时由储能电容STC供电。另外,TSS721也允许使用一个FET(场效应)管连接到VS引脚在总线供电失败的时候,通过电池给TSS721供电。下图显示了通过TSS721给微处理器供电的三种方式。

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

 5 数据链路层

物理层对数据链路层做了一定的要求,在链路层除了使用300~9600波特率的数据速率进行半双工异步串行传输外,还包括至少每第11个比特是一个逻辑1,由于从设备间不能进行通信因此设备间必须是一个主从结构。

数据链路层的协议是基于国际标准IEC 870-5,IEC 870-5定义遥控设备及其系统的传输协议。MBus协议是基于IEC 870-5,但并没有使用到协议规定的全部功能。

5.1 传输参数

        MBus协议使用异步串行比特传输方法,使用开始和停止比特来对每个字符进行同步。由于总线上静止状态表示逻辑1(即Mark),因此开始比特必须是逻辑0(即Space),并且停止比特是逻辑1(Mark)。在开始和停止位之间是被传输的8个数据比特和1个奇偶校验位,这样就确保了每第11个比特是一个Mark的物理层要求。数据比特的传输按照由低到高的顺序,即数据的最低比特LSB(LSB = least significant bit)首先被传输到总线上。采用半双工的传输方式,波特率最少为300,下图为一个字符在发送和应答方向上的传输:

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

 5.2 帧格式

    根据IEC 870-5标准,三种不同的数据完整性类别(I1, I2 和 I3)被设计用于远程控制数据的传输。M-Bus数据链路层还采用IEC870-5数据完整性类别I2的信息帧格式来处理传输过程中可能产生的传输故障。

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

                                                                            MBus协议的帧格式

单字符:这种格式包含一个单一的字符,即E5H(十进制数为229),用于作为传输的接收应答。

短帧:这种格式具有固定的长度,10H作为开始字符,16H作为停止字符,中间包括C、A字段和C、A字段的校验和。

长帧:以68H作为开始字符,后面的长度字段(L字段)首先被传输两次,两个L字段后再次跟随开始字符68H。两个68H后依次是功能字段(C字段)、地址字段(A字段)和控制信息字段(CI字段)。L字段的值是用户数据(User Data)字段的长度加3(即C、A、CI三个字节)。用户数据字段后是校验和,校验和的范围是L字段指示的范围。最后16H字符被传输,作为帧的结束。

控制帧:控制帧为不带用户数据的长帧,L字段为固定长度3,校验和字段是C、A、CI字段的校验和。

5.3 各个字段含义

    下面描述的各个字段的长度都为1个字节,即8个比特。

C Field(Control Field, Function Field 控制字段、功能字段):除了标示功能和行为外,功能字段还指示了数据流的方向,还负责在调用和应答两个方向上的各种附加任务。

                                                                               控制字段编码

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

         最高比特位(MSB,most significant)是保留位,值为0。比特位6用于指示数据流传输方向。为了避免传输丢失和重传,帧控制比特(FCB)用来指示报文被成功的传输和处理。如果期望的应答丢失或接收失败,主机发送具有相同FCB的报文,从机使用相同FCB的报文作为应答。主机将FCV(帧控制比特有效,frame count bit valid)设置为1,表明FCB被使用过,如果FCV位为0,从机应该忽略这个FCB。

在应答方向,DFC(数据量控制,data flow control)位实现流控功能,DFC为1表明从机不能再接收数据。ACD(访问请求,access demand)位为1,表示从机希望传输类型1数据(Class 1 data),这时主机应该发送一个命令用于请求类型1数据。这样类型1数据就具有更高的优先级,相对于类型2数据来说它就能尽可能快的被传输。类型1数据支持、ACD比特位功能、DFC位功能不是标准要求的。

                          控制字段的比特0~3位用于编码消息的功能和行为,如下表所示:

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

                                          MBus协议控制码(F : FCB-Bit, A : ACD-Bit, D : DFC-Bit)

    A Field(Address Field,地址字段):地址字段在调用方向用于寻址接收者,在接收方向用于标识信息的发送者。这个地址长度为1字节,因此它的值为0~255。地址1~250能够被分配到各个从机,最多250个从机。没有配置的从机在出厂的时候分配的地址为0,当被连接到MBus总线的时候可以分配1~250个地址中的一个。地址254(FEh)和255(FFh)用于传输信息到所有的从机,即为广播地址(Broadcast)。地址255的广播没有从机应答,地址254的广播从机用它们自己的地址作为应答。当总线上有多个从机连接时,地址为254的广播会导致总线冲突,因此只能用于测试的目的。地址253(FDh)表面只在网络层进行寻址,而不是在数据链路层。地址251、252保留为以后使用。

    CI Field(control information field,控制信息字段):CI字段属于应用层的一部分,它被包含在使用的帧格式中,是为了在长帧格式和控制帧格式间进行区分。控制信息能够允许在主机和从机中实现多种行为。

    Check Sum(校验和):校验和用于识别传输和同步过程中的错误,是报文的特殊部分。校验和是校验范围内数据的算术和,不需要考虑进位。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181587.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • UE4 Slate三 SlateUI代码讲解

    UE4 Slate三 SlateUI代码讲解原创文章,转载请注明出处。点击观看上一篇《UE4Slate二用UMG思想去理解Slate+Slate编码》点击观看下一篇《UE4Slate四SlateUI如何做动画》虚幻引擎SlateUI介绍1>前言2>该继承自哪个基类来写呢?SCompoundWidget/SPanel/SLeafWidget2.1>基类:SUserWidget或者是SCompoundWidget2.2>基类:SPanel2.3>基类:SLeafWidget3>该如何新建一个S类组件呢.

  • PyCharm、Itellij IDEA最好用的插件和主题[通俗易懂]

    PyCharm、Itellij IDEA最好用的插件和主题[通俗易懂]免费分享我用过相对来说最好的几款PyCharm、ItellijIDEA的插件和主题

  • RegisterStartupScript的使用方法「建议收藏」

    RegisterStartupScript的使用方法「建议收藏」Asp.net中RegisterStartupScript方法的使用:MSDN如下说:允许 ASP.NET 服务器控件在 Page 中发出客户端脚本块。[Visual Basic]PublicOverridableSubRegisterStartupScript(_   ByVal key As String,_   ByVal script As String

  • getopt函数[通俗易懂]

    getopt函数[通俗易懂]getopt函数函数说明getopt–解析命令的可选项getopt只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下:对短选项的解析:cmd[-a][-b]对短选项及短选项的参数解析:cmd[-aa_argument][-bb_argument]选项a的参数也是可选的情况解析:cmd[-a[a_argument]]函数原型#include&…

  • openwrt旁路由设置的正确方式

    openwrt旁路由设置的正确方式最近在玩旁路由,踩了一些坑,也学习了点相关知识,特整理记录下。一、旁路由的配置上图是旁路由的连接方式,一般作为旁路由的只有一个LAN口,让他们ip在一个网段即可比如主路由网关192.168.0.1,旁路由配置成192.168.0.21.主路由配置:手动指定LAN为192.168.0.1。#DHCP配置中把网关和DNS改成旁路由ip地址,如192.168.0.2。2.旁路由配置:关闭DHCP,把网关改成主路由地址,如192.168.0.1,关闭桥接模式.采用路由模式。这样配置后,网络流量如下图

  • Linux系统平均负载3个数字的含义

    Linux系统平均负载3个数字的含义熟悉Linux系统的人都知道负载这个说法。负载就是指当前系统的资源使用情况。可以使用w,uptime和top命令实时查看监控系统的监控状况。越来越多人开始接触Linux操作系统,从VPS到无线路由的刷机系统(如OpenWRT、Tomato),同时也必不可少地会在各式各样的探针和系统监测界面上看到”系统平均负载”或者”LoadAverage…

发表回复

您的电子邮箱地址不会被公开。

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