​Wireless M-Bus(wM-Bus)协议​​解析

一、协议概述​

​Wireless M-Bus​​ 是欧洲标准 ​​EN 13757​​ 系列定义的无线抄表协议,专为低功耗仪表(水表、电表、热表等)与数据采集设备(基站、手持设备)的通信设计。核心特性包括:

​低功耗​​:支持电池供电设备(10年以上寿命)。多模式通信​​:适应不同场景的传输需求(单向/双向、低速率/高速率)。安全扩展​​:预留加密与身份认证机制(如AES-128)。​​兼容性​​:兼容有线M-Bus(EN 13757-2)。

​二、通信模式分类​

wM-Bus定义三类通信模式及子模式,满足不同应用场景:

​模式​

​子模式​

​方向​

​典型应用场景​

​数据速率​

​占空比​

​帧特征​

​S

S1

仪表→采集设备

基站抄读(低功耗)

32.768 kbps

≤1%

长报头

S1-m

仪表→采集设备

手持设备/基站抄读

32.768 kbps

≤0.02%

短报头

S2

双向通信

基站抄读(接收器常激活)

32.768 kbps

≤1%

可选长报头

​T

T1

仪表→采集设备

便携设备快速抄读(短帧)

100 kbps

≤0.1%

短报头

T2

双向通信

便携设备交互(短帧+应答)

100/32.768 kbps

≤1%

曼彻斯特编码+短报头

​R

R2

双向通信

长距离通信(高灵敏度)

4.8 kbps

≤1%

中长报头+多频信道

​说明​​:

S1-m​​:每小时0.02%占空比,要求接收器持续激活。T2​​:仪表发送用100kbps,接收用32.768kbps。​​R2​​:支持多达10个频分信道,唤醒阶段用4.8kbps。

三、协议分层解析​

​3.1. 物理层(EN 13757-4)​

频段与调制​​:

主频段​​:868 MHz(欧盟SRD频段),子频段868.0–868.6 MHz。调制方式​​:FSK(频移键控)、GFSK(高斯频移键控)。数据速率​​:4.8 kbps(R模式)、100 kbps(T模式)。
功耗控制​​:
唤醒机制​​:从设备周期性监听唤醒信号(如S1模式每2秒唤醒1次)。占空比限制​​:≤1%(满足ERC 70-03法规)。

3.​​2. 数据链路层​

3.2.1 帧格式定义包含3块:

第一块:

L-Field

C-field

M-field

A-field

CRC-field

1字节

1字节

2字节

6字节

2字节

表2:块1帧格式

第二块:

CI-field

Data-field

CRC-field

1字节

15字节或((L-9)mod 16)-1字节

2字节

表3:块2帧格式

可选块:

Data-field

CRC-field

16字节或((L-9)mod 16)字节

2字节

表4:可选块帧格式

3.2.2 帧格式中块的定义

域EN60870-5-1(L-域)和EN60870-5-2(C-域,M-域和A-域)在下面的子序列子条款中规定。EN60870-5-2中的A-域符合里面M-域和A-域的拼接

L-field:长度域

这个域规定了包括C-field M-field A-field CI-field和用户数据字节数。不包含L-field和CRC域。

C-field: 控制域

它包含了表征报文的方向、提供的服务类型以及支持抑制报文丢失和重复传输的信息。它规定了帧的类型,依照EN60870-5-2,应该使用以下的C-field代码:

        对于发送端只有子模式S1的C-field C=44h(发送/无答复)

        如果表计是在安装模式:

                S2中C=06h来表示这个模式

                S1中C=46h来表示这个模式

        对于子模式S2,所有的C值均依照EN60870-5-2。

控制域格式:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3     Bit 2   Bit 1      Bit 0

保留

RES

1(启动站到从站)

启动报文位

PRM

0(从站到启动站)

帧计数位

FCB

帧计数有效位FC V

   F3      F2      F1       F0

         Function Code

            功能码

要求访问位ACD

数据流控制位DFC

表5:帧控制域格式

RES:保留备用

FCB:帧计数位:

        帧计数位0,1为了每个站连续的发送/确认或者请求/响应服务的变化位。

        帧计数位用来消除信息传输过程中的丢失或者重复。启动站向同一从动站传输新一轮的发送/确认(SEND/CONFIRM)或者请求/响应(REQUEST/RESPOND)传输服务时,将帧计数位(FCB)取反,启动站为每一个从动站保留一个帧计数位(FCB)的拷贝,若超时未由从动站收到所期望的报文,或者接收出现差错,则启动站不改变帧计数位FCB的状态,重复原来的发送/确认或者请求/响应服务。

        复位命令的情况下(见下表)帧计数位(FCB)常为零,从动站接收此命令将帧计数位置零,并期望下一次的从启动站到从动站的传输帧,其帧计数位(FCB)为1,帧计数有效位FCV为1。

FCV:帧计数有效位:

        FCV=0 表示帧计数位FCB的变化无效。

        FCV=1 表示帧计数位FCB的变化有效。

        发送/无回答服务、广播报文和其他不需要考虑信息输出的丢失和重复的传输服务,无需改变帧计数位FCB的状态,因此这些帧的帧计数有效位FCV常为零。

DFC:数据流控制位:

        DFC=0 表示从动站可以接收后续报文。

        DFC=1 表示从动站接收后续报文将引起数据溢出。

        从动(响应)站向报文启动站指出一个立即的连续的后续报文将引起缓冲区溢出。

ACD:要求访问位:有两种级别的报文数据,名称为1级数据和2级数据;

        ACD=0 表示从动站无1级用户数据要求传输。

        ACD=1 表示从动站要求传输1级用户数据。

        从动站向启动站指出希望传输1级用户数据。

        注-1级用户数据传输典型地被应用于事件传输或者高优先级报文的传输,2级用户数据典型地被用于循环传输或者低优先级报文传输。

PRM:启动报文位:

        PRM=0 表示是由从动(响应)站向启动站传输报文

        PRM=1 表示是由启动站向从动站传输报文。

功能码:定义帧的功能

非平衡传输:

        PRM=1 启动站到从站传输报文中控制域的功能码

功能码序号

帧类型

服务功能

帧计数有效位(FCV)的状态

0

发送/确认帧

复位远方链路

0

1

发送/确认帧

复位用户进程

0

2

发送/确认帧

为平衡传输过程保留

3

发送/确认帧

用户数据

1

4

发送/无回答帧

用户数据

0

5

备用

6-7

制造厂和用户协商定义

8

为要求访问的请求

以要求访问位响应

0

9

请求/响应帧

请求链路状态

0

10

请求/响应帧

请求1级用户数据

1

11

请求/响应帧

请求2级用户数据

1

12-13

备用

14-15

制造厂和用户协商定义

        PRM=0 从动站向启动站传输的报文中控制域的功能码

功能码序号

帧类型

服务功能

0

确认帧

认可:肯定认可

1

确认帧

否定认可:未收到报文,链路忙

2—5

备用

6—7

制造厂和用户协商定义

8

响应帧

用户数据

9

响应帧

否定认可:无所召唤的数据

10

备用

11

响应帧

链路状态或要求访问

12

备用

13

制造厂和用户协商定义

14

链路服务未工作

15

链路服务未完成

M-field:生产商ID

        此域包含唯一的表计的用户/生产商ID。这两个字节按照EN13757-3:2004,5.5的规定,15个最低有效位应该由ISO646(A-Z)中的三个字母组成。

        如果用户/生产商ID的这两个字节的最高有效位是零,则地址A(A-域)应该是6字节唯一的生产商地址(硬编码)。每个生产商对这个全球唯一的6字节负责。只要这个ID是唯一的,任何类型的编码或者编号方式,包括类型/版本/日期都可以使用。

        如果用户/生产商ID的这两个字节的最高有效位不是零,则6字节地址应该是该系统的最大的发送接收区中的唯一地址(软地址)。这个地址通常是在安装时分配给该设备的。只要这个唯一的地址需求是被执行了的,剩余的字节可以被用作用户的特定的用途。

EN13757-3:2004,5.5的规定:

用户/生产商 ID 根据EN 62056-21制造商ID(三个大写字母)的ASCII码通过下面的公式计算得来

                        

注:flag association,UK(www.dlms.com/flag)负责管理维护EN 62056-21制造商ID的3个字符。

A-field:地址域

        这个地址A应该是唯一的(至少在该系统的最大的发送接收区域中)。每个用户/生产商应该保证这个ID是唯一的。如果这个协议被共同用于EN 13757-3 的应用层,并且CI-域是72h,78h或7Ah,则应该使用如下:A-域则应该为一连串的由EN 13757-3:2004,5.4,5.6,5.7中规定的“ID码”,“版本”和“设备类型信息”。

ID码:4字节,ID码是一个固定的制造编码或者用户可修改的数字,编码采用8BCD(4个字节)编                  码,因此可表示的范围为00000000到99999999。

版本:1字节,版本号是由制造商定义的表计的版本,通常用来保证在同一个版本中的ID码是唯一

设备类型信息:1字节,设备类型码。

设备类型编码表:

设备类型(之前的标准称介质)

二进制编码

Bit7…0

16进制编码

Other

0000 0000

00

Oil

0000 0001

01

Electricity

0000 0010

02

Gas

0000 0011

03

Heat

0000 0100

04

Steam

0000 0101

05

Warm Water(30-90oC)

0000 0110

06

Water

0000 0111

07

Heat Cost Allocator

0000 1000

08

Compressed Air

0000 1001

09

Cooling load meter(Volume measured at temperature :outlet)

0000 1010

0A

Cooling load meter(Volume measured at temperature :inlet)

0000 1011

0B

Heat(Volume measured at flow temperature:inlet)

0000 1100

0C

Heat/Cooling load meter

0000 1101

0D

Bus/System component

0000 1110

0E

Unknown Medium

0000 1111

0F

Reserved

10-14

Hot water(>=90oc)

0001 0101

15

Cold water

0001 0110

16

Dual register(hot/cold)water meter

0001 0111

17

Pressure

0001 1000

18

A/D converter

0001 1001

19

Reserved

1Ah-20h

Reserved for value

0010 0001

21h

Reserved

22h-FFh

注:此表从EN 1434-3标准中选择了一些元素进行了拓展。

CI-field:控制信息域

CI域指出了协议类型和下表中的自然信息。下表详细说明:

CI值

描述

备注

51h

发送数据(master to slave)

与EN 13757-3标准应用层兼容

71h

告警报告(slave to master)

与EN 13757-3标准应用层兼容

72h

带12字节全字头的变长数据格式(slave to master)

与EN 13757-3标准应用层兼容

78h

不带字头的变长数据响应(slave to master)

与EN 13757-3标准应用层兼容

7Ah

4字节短字头的变长数据响应(slave to master)

与EN 13757-3标准应用层兼容

81h

继电器应用

预留未来发展

82h

未来应用

兼容CENELEC TC 205标准

A0h- B7h

工厂指定

Data-field:用户数据域

用户数据域的格式定义和CI-域相关,下面分表描述:

CI-域=51h时,启动站向从动站发送数据

变长数据块(记录)(VDB)

MDH(opt)

制造商定义数据块头(可选)

Opt.Mfg.specific data (opt)

可选的制造商定义数据(可选)

变长字节

1字节

变长字节

CI-域=72h,78h,7Ah时,从动站向启动站响应数据,CI-域=78h,7A是从EN 1434-3中拓展的。

数据头

Data Header

变长数据块(记录)

(VDB)

MDH(opt)

制造商定义数据块头(可选)

Opt.Mfg.specificdata (opt)

制造商定义数据(可选)

0字节

(CI=78h)

4字节

(CI=7Ah)

12字节

(CI=72h)

变长字节

1字节

变长字节

由于无线应用中我们需要数据报尽量短,一般我们只用到CI=78h,所以无数据头,在此就不对数据头的编码格式进行说明,具体定义可以参看EN 13757-3中定义。

3.2.3 VDB格式说明:

变长数据块(记录)(VDB):在VDB中包含了数据、数据编码格式、数据长度、数据类型和单位等信息。具体格式如下表:

DIF

DIFE

VIF

VIFE

Data

1字节

0…10字节

1字节

0…10字节

0…N字节

数据信息块DIB

值信息块VIB

数据记录头DRH

数据信息块(DIB)

包含DIF、DIFE、VIF、VIFE和Data域,由于水表应用中不需要DIFE,VIFE,因此只介绍DIF和VIF的格式定义,其他域的定义参看EN 13757-3中定义。

数据信息域(DIF)
Bit 7 Bit6 Bit 5 Bit 4 Bit 3  Bit 2  Bit 1  Bit 0

E

拓展位

LSB of storage number

存储数的最低有效位

Function Field

功能域

Data field:length and coding

数据域:数据长度和编码

DIF中数据域决定了从启动站传输的数据长度和编码方式。下表包含Data field中数据的编码格式:

Bit位长度

编码

含义

编码

含义

0

0000

无数据

1000

选择读出

8

0001

8bit  整数/二进制

1001

2位BCD

16

0010

16bit 整数/二进制

1010

4位BCD

24

0011

24bit 整数/二进制

1011

6位BCD

32

0100

32bit 整数/二进制

1100

8位BCD

32/N

0101

32bit 实数

1101

变长

48

0110

48bit 整数/二进制

1110

12位BCD

64

0111

64bit 整数/二进制

1111

特殊功能

功能域:决定了数据的类型:

编码

描述

编码

描述

00b

瞬时值

01b

最大值

10b

最小值

11b

错误状态中的值

存储数的最低有效位:我们置零就可以了,代表存储的数据是有效值。

拓展位(E):如果E=1则代表了DIF或者VIF后面紧跟着DIFE和VIFE域,一般我们抄表中使用不到在此都置零。关于DIFE和VIFE,在此不做介绍。

值信息域(VIF)

值信息域一般是规定数据值的单位和单位系数。

Bit 7 Bit6  Bit 5 Bit 4   Bit 3  Bit 2  Bit 1  Bit 0

拓展位E

值的单位和单位系数

具体含义见基本VIF表编码表

编码

描述

范围编码

范围

E000 0nnn

能量

10(nnn-3) Wh

0.001Wh 到10 000Wh

E000 1nnn

能量

10(nnn)   J

0.001kJ 到10 000kJ

E001 0nnn

容积

10(nnn-6)m3

0.001 l到10 000 l

E001 1nnn

质量

10(nnn-3)kg

0.001 kg到 10 000kg

E010 00nn

时间

nn=00b 秒

nn=01b 分

nn=10b 时

nn=11b 天

表计供电周期

E010 01nn

操作时间

编码同上

表计累计周期

E010 1nnn

电力

10(nnn-3) W

0.001 W 到10 000 W

E011 0nnn

电力

10(nnn) J/h

0.001 J/h 到10 000 J/h

E011 1nnn

流量

10(nnn-6) m3/h

E101 10nn

流动温读

10(nn-3)0c

0.001 oc到1oc

以上只是部分编码,查看完整编码请参看EN13757-3标准。

CRC域:循环冗余校验

CRC是根据前面数据块的信息计算出来的,是根据EN 60870-5-1.FT3产生的。

CRC生成多项式为:

X16+X13+X12+X11+X10+X8+X6+X5+X2+1

CRC初始值为零。最终的CRC由补码表示

四、应用场景与数据解析示例​

​场景:水表读数上传​

主站发送查询​​:


CI=52h(选择从设备) + A字段=水表地址

水表响应​​:


CI=72h(长帧头) + DIF=04(32位整数) + VIF=13(升) + 数据=00001500(1500升)

主站解析​​:

DIF=04 → 数据类型为32位整数

VIF=13 → 单位升(L)

数据值1500 → 当前读数为1500升。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容