MBus协议详解(二)

  • Post author:
  • Post category:其他



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



版权声明:本文为xiebingsuccess原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。