一、协议概述
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升。















暂无评论内容