在Modbus RTU网络中基于设备类型的多节点选择通信方法转让专利

申请号 : CN201911423862.4

文献号 : CN111200547B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙宝石

申请人 : 苏州数言信息技术有限公司

摘要 :

本发明公开了一种在Modbus RTU网络中基于设备类型的多节点选择通讯方法,能够在一条Modbus指令中选择同类型设备中的一个、部分或者全部进行操作。例如,5排灯光关闭其中1排、3排或者全部。本方法不同于组播,组播消息对组内所有节点有效,无法选择其中部分节点。本方法运行效率高、灵活性高、可靠性高,且兼容Modbus RTU规范。

权利要求 :

1.一种在Modbus RTU网络中基于设备类型的多节点选择通信方法,其特征在于,包括:节点地址使用Modbus标准8 bit地址,消息格式与Modbus RTU规范完全兼容;支持分类筛选的从节点其8 bit地址从逻辑上被划分为模码和位码:模码表示设备类型,每类设备一个模码;位码则为该节点的选取位;模码的长度从1到8,因此模码的取值范围为0到255;位码的长度为8减去模码的长度,既从7到0,位码如果用二进制表示,仅在其中一个位上为1,其余位均为0;模码长度就是一个Modbus网络的节点分类筛选规则,可由Modbus主节点设定;仅包括模码的地址即位码或位掩码全为0的地址命名为基地址;

主节点发出指令的目标地址则从逻辑上被划分为模码和位掩码:模码与上述从节点地址的模码概念相同;位掩码则为需要筛选的从节点位码的按位求和;

从节点在收到主节点消息后,先判断消息目标地址中的模码是否与自己的模码相等,既设备类型是否一致,如果一致则用消息目标地址中的位掩码与自己的位码做与运算,如果结果为1则处理此消息,否则就忽略此消息。

2.如权利要求1所述的在Modbus RTU网络中基于设备类型的多节点选择通信方法,其特征在于,地址0x00始终为广播地址,所有从节点都能接收并处理主节点以目标地址0x00发出的广播消息。

3.如权利要求1所述的在Modbus RTU网络中基于设备类型的多节点选择通信方法,其特征在于,标准Modbus从节点的地址只能从基地址中选取;每种规则下所支持的标准Modbus从节点数量等同于此规则包括基地址数量,既设备类型数;支持位码选择的从节点数量和不支持位码选择的标准Modbus从节点即基地址数量之和就是一种规则所能包含从节点总数。

4.如权利要求1所述的在Modbus RTU网络中基于设备类型的多节点选择通信方法,其特征在于,系统能够在运行时修改模码长度既规则代码,系统可以通过标准Modbus寄存器读写指令修改设置,修改后立即生效,系统可无间断运行;对规则代码进行动态设置,规定某个特定的读写寄存器保存规则代码的值,主节点可以通过标准Modbus指令读取和修改规则代码。

5.如权利要求1所述的在Modbus RTU网络中基于设备类型的多节点选择通信方法,其特征在于,当主节点广播发出修改规则代码消息后,所有节点都能收到消息并修改模码长度,一条消息即可快速完成整个网络的逻辑划分;主节点启动后广播规则代码,确保从节点获得一致的规则设置,并建议主节点定期广播一次规则代码消息,以同步新上线的节点。

6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1到5任一项所述方法的步骤。

7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1到5任一项所述方法的步骤。

8.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1到5任一项所述的方法。

说明书 :

在Modbus RTU网络中基于设备类型的多节点选择通信方法

技术领域

[0001] 本发明涉及Modbus领域,具体涉及一种在Modbus RTU网络中基于设备类型的多节点选择通信方法。

背景技术

[0002] Modbus通讯协议在自动化控制领域应用非常广泛,具体又分为Modbus ASCII、Modbus RTU以及Modbus TCP三中通信模式,其中Modbus RTU在实际应用中最为普遍。
Modbus RTU协议是一个主从(master/slave)架构的串行协议:在一个ModBus网络中,包含
一个地址为0的主节点(master)和多个的从节点(slave),每一个slave设备都有一个唯一
的地址,地址值在1到247之间。
[0003] 传统技术存在以下技术问题:
[0004] Modbus RTU规范不允许有重复的节点地址,标准协议也没有广播和组播功能(通信协议地址为一个字节,表示确定的节点地址)。如果主节点需要把同一条指令发给多个从
节点,则必须逐一发送。这样不仅增加了主节点的处理负担,而且由于指令之间的间隔,造
成从节点动作不同步。例如,一个区域内有5排灯光,分别由5个从节点控制,主节点需要关
闭所有灯、或者关闭其中3排,则需要分别向5个从节点、或3个从节点发关灯指令。
[0005] 1.标准Modbus标准不支持广播和组播功能,主节点要把同一条指令发给多个从节点,必须逐一发送。
[0006] 2.部分地址扩展技术,虽然可以实现组播功能,但是仍然无法实现对组内目标节点进行筛选(只能全选),而且地址扩展技术无法兼容串行Modbus标准(相当于另外制定了
一个标准),不具有兼容性。

发明内容

[0007] 本发明要解决的技术问题是提供一种在Modbus RTU网络中基于设备类型的多节点选择通信方法,能够在一条Modbus指令中选择同类型设备中的一个、部分或者全部进行
操作。本方法不同于组播,组播消息对组内所有节点有效,但无法选择其中部分节点。节点
地址使用Modbus标准8bit地址,消息格式与Modbus RTU规范完全兼容。本方法允许设置设
备类型数量和每种类型包含的设备数,系统在运行过程中可以通过标准Modbus寄存器读写
指令修改设置,修改后立即生效,系统可无间断运行。本方法运行效率高、可靠性好、灵活性
高、兼容性好。在一个串行Modbus网络中允许主节点将一条消息同时发给同类型设备中的
一个、部分或者全部,实现对操作对象灵活、精准的筛选。在使用Modbus标准8bit地址、遵从
Modbus RTU消息格式规范的前提下,实现基于设备类型的多节点筛选功能。能够在系统运
行时对节点分类筛选规则进行动态设置。
[0008] 为了解决上述技术问题,本发明提供了一种在Modbus RTU网络中基于设备类型的多节点选择通信方法,包括:节点地址使用Modbus标准8bit地址,消息格式与Modbus RTU规
范完全兼容;支持分类筛选的从节点其8bit地址从逻辑上被划分为模码和位码:模码表示
设备类型,每类设备一个模码;位码则为该节点的选取位。模码的长度从1到8,因此模码的
取值范围为0到255;位码的长度为8减去模码的长度,既从7到0,位码如果用二进制表示,仅
在其中一个位上为1,其余位均为0;模码长度就是一个Modbus网络的节点分类筛选规则,可
由Modbus主节点(master)设定;仅包括模码的地址(位码或位掩码全为0)命名为基地址。
[0009] 在其中一个实施例中,主节点发出指令的目标地址则从逻辑上被划分为模码和位掩码:模码与上述从节点地址的模码概念相同;位掩码则为需要筛选的从节点位码的按位
求和。
[0010] 在其中一个实施例中,从节点在收到主节点消息后,先判断消息目标地址中的模码是否与自己的模码相等,既设备类型是否一致,如果一致则用消息目标地址中的位掩码
与自己的位码做与运算,如果结果为1则处理此消息,否则就忽略此消息。
[0011] 在其中一个实施例中,地址0x00始终为广播地址,所有从节点都能接收并处理主节点以目标地址0x00发出的广播消息。
[0012] 在其中一个实施例中,标准Modbus从节点的地址只能从基地址中选取;每种规则下所支持的标准Modbus从节点数量等同于此规则包括基地址数量,既设备类型数;支持位
码选择的从节点数量和不支持位码选择的标准Modbus从节点(基地址)数量之和就是一种
规则所能包含从节点总数。
[0013] 在其中一个实施例中,系统能够在运行时修改模码长度既规则代码,系统可以通过标准Modbus寄存器读写指令修改设置,修改后立即生效,系统可无间断运行;对规则代码
进行动态设置,规定某个特定的读写寄存器保存规则代码的值,主节点可以通过标准
Modbus指令读取和修改规则代码。
[0014] 在其中一个实施例中,当主节点广播发出修改规则代码消息后,所有节点都能收到消息并修改模码长度,一条消息即可快速完成整个网络的逻辑划分;主节点启动后广播
规则代码,确保从节点获得一致的规则设置,并建议主节点定期广播一次规则代码消息,以
同步新上线的节点。
[0015] 基于同样的发明构思,本申请还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一项所
述方法的步骤。
[0016] 基于同样的发明构思,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一项所述方法的步骤。
[0017] 基于同样的发明构思,本申请还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任一项所述的方法。
[0018] 本发明的有益效果:
[0019] 1.Modbus RTU标准不支持组播功能,而针对此问题的现有技术都有明显缺陷,这些技术或者在硬件层面对网络进行物理隔离实现分组,或者将Modbus RTU标准8位地址成
倍扩大。这些技术不仅都无法兼容Modbus RTU标准,而且成本高、灵活性差。而且即便是这
些技术实现了组播功能也无法对同组的节点进行精准选择;
[0020] 2.Modbus协议历史悠久,现实中存在巨量的使用Modbus协议通讯的设备,不可能要求这些设备都修改程序。本发明与Modbus RTU标准完全兼容,也就是说使用基于设备类
型的多节点选择技术构建的Modbus网络既可以有新的支持位码选择的节点,也可以包括历
史遗留的标准节点,因此,应用空间巨大。
[0021] 3.本发明公开了一种与Modbus RTU标准完全兼容的基于设备类型的多节点选择通信方法,沿用Modbus RTU标准8位地址和地址范围,就能够实现在一条Modbus指令中选择
同类型设备中的一个、部分或者全部进行操作,大大提升了消息传递效率;并且配置简便,
允许动态进行规则代码设置。本方法运行效率高、可靠性好、灵活性高、兼容性好。
[0022] 4.本发明提供了8种节点分类筛选规则,既不同的设备类型数量和每类设备的从节点容量,可适用于多种应用场景。
[0023] 5.本发明提出的方法结构构简洁、处理高效,中低端微处理器即可支持其运行,具备功能和成本双重优势。

附图说明

[0024] 图1是本发明在Modbus RTU网络中基于设备类型的多节点选择通信方法中的支持位码选择的从节点判别消息是否归属的流程图。
[0025] 图2是本发明在Modbus RTU网络中基于设备类型的多节点选择通信方法中的一个支持基于设备类型的多节点选择Modbus网络实例。
[0026] 图3是本发明在Modbus RTU网络中基于设备类型的多节点选择通信方法中的主节点动态更新规则代码的工作流程图。

具体实施方式

[0027] 下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
[0028] 本发明公开了一种在Modbus RTU网络中基于设备类型的多节点选择通讯方法,能够在一条Modbus指令中选择同类型设备中的一个、部分或者全部进行操作。例如,5排灯光
关闭其中1排、3排或者全部。本方法不同于组播,组播消息对组内所有节点有效,无法选择
其中部分节点。本方法运行效率高、灵活性高、可靠性高,且兼容Modbus RTU规范。
[0029] 本发明公开了一种在Modbus RTU网络中基于设备类型的多节点选择通讯方法,能够在一条Modbus指令中选择同类型设备中的一个、部分或者全部进行操作。根据本方法,节
点地址使用Modbus标准8bit地址,消息格式与Modbus RTU规范完全兼容。独特之处在于,支
持分类筛选的从节点其8bit地址从逻辑上被划分为模码和位码:模码表示设备类型,每类
设备一个模码;位码则为该节点的选取位。模码的长度从1到8,因此模码的取值范围为0到
255;位码的长度为8减去模码的长度,既从7到0,位码如果用二进制表示,仅在其中一个位
上为1,其余位均为0。模码长度就是一个Modbus网络的节点分类筛选规则,可由Modbus主节
点(master)设定。仅包括模码的地址(位码或位掩码全为0)命名为基地址。相对应地,主节
点发出指令的目标地址则从逻辑上被划分为模码和位掩码:模码与上述从节点地址的模码
概念相同;位掩码则为需要筛选的从节点位码的按位求和。从节点在收到主节点消息后,先
判断消息目标地址中的模码是否与自己的模码相等,既设备类型是否一致,如果一致则用
消息目标地址中的位掩码与自己的位码做与运算,如果结果为1则处理此消息,否则就忽略
此消息,流程如图1所示。
[0030] 举例说明,节点分类筛选规则3对应的模码长度就是3位,而剩余的5位就是位码。因此,表1示例的节点分类筛选规则3下的1个基地址和5个支持位码选择的从节点地址。这5
个支持位码选择的从节点地址的含义为:模码1表示设备类别为1,5个地址均为同种类别;
而5个地址的位码分别是第0位到第4位为1。
[0031] 当主节点所发消息的目的地址为0x21(二进制的00100001,既模码为1,位掩码为1)时,选择的目标节点就是表中的地址1(从节点0x21,既模码为1,位码为1);
[0032] 当主节点所发消息的目的地址为0x35(二进制的00110101,既模码为1,位掩码为21)时,选择的目标节点就是表中的地址1、3、5(从节点0x21、0x24、0x30,既模码为1,位码分
别为1、4、16);
[0033] 当主节点所发消息的目的地址为0x3F(二进制的00111111,既模码为1,位掩码为31)时,选择的目标节点为表中全部5个地址。
[0034] 特别地,本方法规定当主节点所发消息的目的地址仅包括模码(位掩码为0)既基地址时,发给基地址的消息仅针对标准Modbus从节点。换言之,标准Modbus从节点的地址只
能从模码中选取。因此,每种规则下所支持的标准Modbus从节点数量等同于此规则包括模
码数量(基地址数量),也就是设备类型数。
[0035] 此外,目标地址0x00始终为广播地址,也就是说所有从节点都能接收并处理主节点以目标地址0x00发出的广播消息。
[0036] 表1:节点分类筛选规则3的从节点地址示例
[0037]
[0038] 图2是按本发明说述方法构建的一个Modbus支持按设备类型进行多节点选择的网络实例。其节点分类筛选规则为3,包括一个主节点;两个标准从节点,地址分别为32和64;
和三个支持位码选择的从节点,地址分别为33、36和48,三个节点都是同一种设备类型(模
码均为1)。标准从节点可以是任何不支持分组功能的第三方Modbus设备。
[0039] 表2分别描述了8种节点分类筛选规则(模码长度从1位到8位)下的设备类型数量和节点容量,其中规则8为默认工作模式。
[0040] 表2:Modbus节点分类筛选规则表
[0041]
[0042] 需要指出的是,规则8的位码长度为0,也就是说没有支持位码选择的从节点,而全部地址都被模码覆盖。因此,使用此设置时节点地址实质上就是Modbus标准地址。由此可
见,Modbus标准编址可以看做本方法的一个特例,本方法可完全兼容和覆盖Modbus地址标
准。此外,本发明提出的编址方法还有以下关键特征:
[0043] 模码位数越多支持的设备类型数量越多,但每种类型所包含的从节点地址就越少。因此,选择规则时应依据项目中设备类型的数量,避免类型过多,但每种类型包含的从
节点数量不足。
[0044] 支持位码选择的从节点数量和不支持位码选择的标准Modbus从节点(基地址)数量之和就是一种规则所能包含从节点总数。
[0045] 无论使用哪种规则,地址0x00始终为广播地址,也就是说所有从节点都能接收并处理主节点以目标地址0x00发出的广播消息。
[0046] 无论使用哪种规则,本方规定当主节点所发消息的目的地址仅包括模码(位掩码为0)时,此消息仅针对标准Modbus从节点。换言之,标准Modbus从节点的地址只能从基地址
中选取。因此,每种规则下所支持的标准Modbus从节点数量等同于此规则包括模码数量,既
设备类型数。
[0047] 本发明公开了一种在Modbus RTU网络中基于设备类型的多节点选择通信方法。根据本方法,系统能够在运行时修改模码长度既规则代码,系统可以通过标准Modbus寄存器
读写指令修改设置,修改后立即生效,系统可无间断运行。对规则代码进行动态设置,本方
法规定某个特定的读写寄存器保存规则代码的值,如寄存器40001(注:此地址不特别限定,
在具体项目实施时可以根据实际需求指定一个地址即可),因此,主节点可以通过标准
Modbus指令读取(功能码3)和修改(功能码6)规则代码。例如:
[0048] 消息[01][03][9C][41][00][01][FA][4E],表示向地址为01的从节点读取40001(0x9C41)寄存器数据,既读取模码长度既规则代码。
[0049] 消息[00][06][9C][41][00][03][B6][5E],表示广播(目的地址为00)写40001(0x9C41)寄存器数据,既模码长度既规则代码修改为3。
[0050] 当主节点广播发出修改规则代码消息后,所有节点都能收到消息并修改模码长度,一条消息即可快速完成整个网络的逻辑划分。本方法要求主节点启动后广播规则代码,
确保从节点获得一致的规则设置,并建议主节点定期(如每隔300秒)广播一次规则代码消
息,以同步新上线的节点。因此,主节点动态维护规则代码的工作流程应如图3所示。
[0051] 下面给出本发明的一个具体应用场景:
[0052] 以智慧教室作为应用场景举例:
[0053] 本智慧教室教室的主控节点(master)需要控制多种Modbus终端设备,包括:5路照明、4个电动窗帘、2台空调、1个新风等。其中,新风为标准Modbus设备,无法联系厂家修改程
序。此应用场景需要满足两个关键目标:
[0054] 1、在一个Modbus网络中实现对上述设备的控制,不允许有多个物理网络。
[0055] 2、照明、窗帘和空调都有多个,根据使用场景很多时候需要开关其中的一部分。因此,需要能够方便地实现单控、全控和部分控制。
[0056] 如果没有本发明提供的方法,上述需求基本无法同时满足。
[0057] 使用本发明提供的方法构建一个支持基于设备类型的多节点选择Modbus网络网络,规则代码1,2,3都能满足需求,这里我们采用规则代码3(既3位模码),可支持多达8种设
备类型和8个Modbus标准从节点,每种设备类型下包括5个支持位码选择的从节点。网络具
体定义如下:
[0058] 模码000(二进制)对应照明设备类型,5路照明的从节点地址分别为1,2,4,8,16
[0059] 模码001(二进制)对应电动窗帘设备类型:4个窗帘的从节点地址分别为33,34,36,40
[0060] 模码010(二进制)对应空调设备类型:2台空调的从节点地址分别为65,66
[0061] 新风的从节点为基地址64
[0062] 控制消息举例:
[0063] 1、控制新风,则向地址64地址发消息;
[0064] 2、控制第1路照明,则向地址1发消息;
[0065] 3、同时控制第1,3,5路照明,则向地址21发消息(0+1+4+16);
[0066] 4、同时控制两台空调,则向地址67发消息(64+1+2);
[0067] 5、如果要控制所有设备,比如放学关闭全部设备,则向0x00发广播消息。
[0068] 本发明的关键技术如下:
[0069] 本发明公开了一种与Modbus RTU标准完全兼容的基于设备类型的多节点选择通信方法,沿用Modbus RTU标准8位地址和地址范围,就能够实现在一条Modbus指令中选择同
类型设备中的一个、部分或者全部进行操作,大大提升了消息传递效率;并且配置简便,允
许动态进行规则代码设置。
[0070] 本发明完全兼容Modbus RTU通信规范,具有广泛的兼容性。本发明提出的编址方案节点结构简洁、处理高效,中低端微处理器即可支持其运行。
[0071] Modbus RTU的8位节点地址被划分为表示设备类型模码以及表示节点的选取位的位码两部分。模码的长度从1到8,因此模码的取值范围为0到255;位码的长度为8减去模码
的长度,既从7到0,位码如果用二进制表示,仅在其中一个位上为1,其余位均为0。模码长度
就是一个Modbus网络的节点分类筛选规则,可由Modbus主节点(master)设定。
[0072] 主节点发出指令的目标地址则从逻辑上被划分为模码和位掩码:模码根据权力3要求中的的模码概念相同;位掩码则为需要筛选的从节点位码的按位求和。
[0073] 仅包括模码的地址,既位码或位掩码全为0的地址,被称为基地址。
[0074] 从节点在收到主节点消息后,先判断消息目标地址中的模码是否与自己的模码相等,既设备类型是否一致,如果一致则用消息目标地址中的位掩码与自己的位码做与运算,
如果结果为1则处理此消息,否则就忽略此消息。
[0075] 地址0x00始终为广播地址,所有从节点都能接收并处理主节点以目标地址0x00发出的广播消息。
[0076] 标准Modbus从节点的地址只能从基地址中选取。每种规则下所支持的标准Modbus从节点数量等同于此规则包括基地址数量,既设备类型数。
[0077] 支持位码选择的从节点数量和不支持位码选择的标准Modbus从节点(基地址)数量之和就是一种规则所能包含从节点总数。
[0078] 系统能够在运行时修改模码长度既规则代码,系统可以通过标准Modbus寄存器读写指令修改设置,修改后立即生效,系统可无间断运行。对规则代码进行动态设置,本方法
规定某个特定的读写寄存器保存规则代码的值,如寄存器40001(注:此地址不特别限定,在
具体项目实施时可以根据实际需求指定一个地址即可),因此,主节点可以通过标准Modbus
指令读取(功能码3)和修改(功能码6)规则代码。
[0079] 当主节点广播发出修改规则代码消息后,所有节点都能收到消息并修改模码长度,一条消息即可快速完成整个网络的逻辑划分。本方法要求主节点启动后广播规则代码,
确保从节点获得一致的规则设置,并建议主节点定期(如每隔300秒)广播一次规则代码消
息,以同步新上线的节点。
[0080] 以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明
的保护范围之内。本发明的保护范围以权利要求书为准。