CN117914642A - 一种Modbus总线共享监听装置 - Google Patents
一种Modbus总线共享监听装置 Download PDFInfo
- Publication number
- CN117914642A CN117914642A CN202311703717.8A CN202311703717A CN117914642A CN 117914642 A CN117914642 A CN 117914642A CN 202311703717 A CN202311703717 A CN 202311703717A CN 117914642 A CN117914642 A CN 117914642A
- Authority
- CN
- China
- Prior art keywords
- message
- modbus
- data
- request message
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012806 monitoring device Methods 0.000 title claims abstract description 7
- 238000004891 communication Methods 0.000 claims abstract description 31
- 238000012544 monitoring process Methods 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims description 36
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000000034 method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种Modbus总线共享监听装置,包括:Modbus信息配置模块、处理器和RS485通信模块;Modbus信息配置模块,根据Modbus协议和需求的数据提前做好对应配置,生成读取数据的Modbus请求报文;RS485通信模块,接入原modbusRTU通信链路,监听原主站,得到监听报文;处理器,接受监听报文,并根据请求报文获取需要读取的数据。本发明的有益效果是:接线简单,无数量限制,成本低。
Description
技术领域
本发明涉及数据传输领域,尤其涉及一种Modbus总线共享监听装置。
背景技术
Modbus是一种常用的通信协议,用于在工业自动化系统中实现设备之间的通信。它最初是由Modicon公司于1979年开发的,用于将可编程逻辑控制器(PLC)与其他设备(如传感器、执行器等)连接起来。
在工业领域,多主站(Multi-Master)的Modbus网络架构被广泛应用。
传统的Modbus协议采用了一主多从(Master-Slave)的通信方式,其中一个主站(Master)负责发送指令,而其他设备(从站/Slave)则接收并执行这些指令。然而,由于一些特定的应用需求,多主站架构被提出来解决一些限制。
多主站的Modbus网络允许多个主站同时发送和接收数据,从而提高系统的灵活性和实时性。这种架构常用于需要多个控制设备对同一组从设备进行监控和控制的场景。
例如,在工厂自动化中,不同的主站可以同时读取和控制各个工作单元的从站设备,以实现集中监控和分散控制的要求。
多主站的Modbus网络需要更复杂的通信机制和冲突处理机制,以确保多个主站之间的数据交互不发生冲突和干扰。例如,使用仲裁机制来解决多个主站同时发送指令时的冲突,或者使用分时多路复用(Time Division Multiplexing)来实现多个主站同时访问同一组从站的通信。
然而多主站的方案大多都需要改动原总线,且安装时必须停止原有的采集。这对工业流程自动化进程的效率有一定影响,比如暂时停止一段时间数据采集,用于安装新的总站,且安装过程繁琐。
发明内容
为了解决现有技术无法在不改动原总线或不停止原总线的情况下,仍能实现新设备的总线数据采集的技术问题,本发明提出了一种Modbus总线共享监听装置,该装置能够通过监听Modbus总线的方式,识别数据采集时原主站和从站互相发送的请求/响应报文,并对其进行解析,从而获得从站的实时数据信息,在不影响原总线线路和原主站的情况下实现虚拟多主站的功能。
具体的,装置包括:
Modbus信息配置模块、处理器和RS485通信模块;
Modbus信息配置模块,根据Modbus协议和需求的数据提前做好对应配置,生成读取数据的Modbus请求报文;
RS485通信模块,接入原modbusRTU通信链路,监听原主站,得到监听报文;
处理器,接受监听报文,并根据请求报文获取需要读取的数据。
本发明提供的有益效果是:
1、本发明装置的使用不需要改动原有的总线,只需找个适当的位置将设备接入总线即可。
2、因为装置通过监听获取响应报文解析数据,实际并不会发送任何报文,完全不影响原主站和从站发送(或接收)请求/响应报文,故需要的情况下,可几乎没有限制的在总线上接入此设备。
3、Modbus信息配置表生成对应的Modbus请求报文格式,每次修改信息配置表,会实时修改生成的Modbus请求报文,以达到实时控制设备读取的数据内容。
4、该装置同样可以用于已实现多主站的ModbusRTU链路中,同样可以起到指定共享某主站查询的从站数据,其成本低且结构简单,为多主站新增新主站提供一种新的选择。
附图说明
图1是本发明装置的结构示意图;
图2是本发明装置接入总线示意图;
图3是本发明装置工作流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。
请参考图1,图1是本发明装置结构示意图;
本发明提供了一种Modbus总线共享监听装置,包括:
Modbus信息配置模块、处理器和RS485通信模块;
Modbus信息配置模块,根据Modbus协议和需求的数据提前做好对应配置,生成读取数据的Modbus请求报文;
作为一种实施例而言,Modbus信息配置模块的主要作用如下:
提供给处理器本装置需要读取哪些数据信息,用此信息生成对应的读取数据的Modbus请求报文,故应提供地址码、功能码、起始地址、读取寄存器数量等信息。
RS485通信模块,接入原modbusRTU通信链路,监听原主站,得到监听报文;
作为一种实施例,RS485通信模块,用于将设备接入原有的modbusRTU通信链路中,监听链路上原主站发送的报文,并报文数据发送给处理器。
处理器,接受监听报文,并根据请求报文获取需要读取的数据。
作为一种实施例,处理器为发明核心功能应用部分,主要用于接收RS485通信模块监听的报文数据,并根据控制器中配置的协议信息,对报文进行识别、验证、分析、处理操作,从而得到需要读取的数据。
总的来说,本发明的多主站功能的实现主要分为监听、识别(截取完整报文)、验证、识别报文(需要的请求和响应报文)、解析报文。
关于监听,通过RS485通信模块将装置接入总线中即可,因Modbus-RTU为半双工的主从模式通信,总线上同一时刻只有一方发送报文,故只需将装置接入总线即可清晰地监听总线上传输的报文。
作为一种实施例,请参考图2,图2是本发明装置接入总线示意图。
在RTU模式,报文帧由时长至少为3.5个字符时间的空闲间隔区分,因此作为一种实施例,本发明实现识别功能的过程如下:
所述RS485通信模块接收报文时,以接入时刻t为基准,若在3.5个字符时间内未接收到数据,则表示上一包报文发送完成,下一次接收到的数据即为下一包报文的起始数据。
需要特别说明的是,在下一次3.5个字符时间内未接收到数据后说明这一包报文结束,之前截取到的数据即为这一次发送的报文数据,接收报文数据时,如果两个字符之间的空闲间隔大于1.5个字符时间,则报文帧被认为不完整应该被丢弃。
需要说明的是,RS485通信模块根据报文的字节数以及功能码区分通信链路上的请求报文和读取报文。
作为一种实施例而言,验证的具体过程如下:
首先在报文通过CRC等校验,报文接收成功后,检查其报文结构以及功能码等信息,确定此报文是否为读取数据的请求或响应报文。
识别报文,对于01、02、03和04四个查询从站数据的请求报文来说,请求报文皆为8个字节。即收到8个字节的报文并其第二个字节(即功能码)值为01或02、03、04时,可将其认为Modbus的读取数据的请求报文。
而读取数据的响应报文相较于与其对应的请求报文多出一个1字节的字节数部分和一个偶数字节数的数据部分,响应报文的总字节数长度一定为奇数,故可以根据报文的字节数长度和功能码确定其为Modbus读取数据的响应报文。
需要说明的是,Modbus通过请求/响应报文的格式读取数据,且ModbusRTU同一时刻只能发起一个事务处理,响应报文又不会返回数据所在的起始地址(即直接收到一个响应报文时无法确定其返回的是什么数据),所以作为一种实施例而言,所述处理器先接收一个请求报文,并判断请求报文是否符合Modbus信息配置模块中配置的Modbus信息生成的Modbus请求报文,若不符合直接丢弃报文,若符合则等待下一包报文,判断其是否为响应报文,并且此响应报文是否与上一包收到的请求报文相对应,是,则解析其数据并发送给需要的设备,否则连同上一包请求报文一起丢弃。
需要说明的是,本发明解析报文的过程如下:
所述处理器对最后识别成功的正确报文通过Modbus协议进行解析,获取从站返回的数据。
需要说明的是,装置工作的流程如下:
S1、确定需要读取的数据以及从站信息,在Modbus信息配置表中进行配置;
S2、通过RS485通信模块接入原主站与从站间的总线;
S3、处理器通过Modbus协议接收在总线上监听到的报文,对报文进行校验;若校验失败,则丢弃报文,重新监听总线,直至得到完整报文;
S4、处理器根据自身状态进行完整报文的不同处理。
需要说明的是,步骤S4具体如下:
S41、若处理器处于没有接受过请求报文的空闲监听状态,则首先判断所述完整报文是否为请求报文,若为非请求报文,则丢弃此完整报文,保持空闲监听状态;若为请求报文,则进一步判断其是否与Modbus信息配置模块中的报文是否一致,若不一致,则丢弃此完整报文,保持空闲监听状态,否则保留此完整报文,并进入已接受一包请求报文的状态,继续监听总线,等待下一包的完整报文;
S42、若处理器处于已接受一包请求报文的状态,对于下一包的完整报文,仍然先判断其类型是属于请求报文还是响应报文,若为非响应报文,则丢弃此报文以及之前保留的请求报文,重新回来空闲监听状态,等待下一次完整报文;若为响应报文,判断其是否与已接受的请求报文相对应,若是,则处理器根据Modbus协议对响应报文进行解析,并展示结果数据,否则,处理器丢弃此报文以及之前保留的请求报文,重新回来空闲监听状态,等待下一次完整报文。
作为一种实施例而言,请参考图3,图3是本发明装置工作的流程示意图。
首先确定需要读取的数据有哪些,并了解对应从站数据的相关信息,在Modbus信息配置表中做好对应的配置,以便装置正确的识别请求报文。此处用于识别在总线上原主站发送的请求报文,故配置原主站不会发送的请求报文,并不影响功能,也不会起作用。
配置完成后通过485线将装置接入到总线中,只需将装置的RS485模块与原主站或从站通过485线连接即可。
每当原主站和从站通过总线互相通信发送报文时,因为装置已接入总线,故装置也能‘听’到总线上传输的报文,从而起到监听原主站和从站互相通信的请求/响应报文。
为了获得主站读取的从站数据,装置会根据Modbus协议接收在总线上听到的报文,协议会对接收到的报文进行校验,验证报文的准确性和完整性。若报文校验失败,则丢弃报文,重新监听总线,直至接收到完整的报文后,进入下一步。
当装置接收到一包完整的报文后,先看自身情况,是没有接收过请求报文的空闲监听状态,还是已经接收过一包请求报文的状态。
若装置是空闲状态,先判断报文是请求报文还是响应报文。
由上述识别报文处解释可知,可通过报文字节数是否8个字节和功能码等信息判断报文是否为请求报文。
若非请求报文或是请求报文但与Modbus信息配置表中无一致报文,则丢弃此报文,保持装置空闲监听状态。若报文为Modbus配置表中对应请求报文,这保留此报文,进入已接收一包请求报文的状态并继续监听总线,等待下一包对应的响应报文。
若装置已接收过一包请求报文,同样先判断报文是请求报文还是响应报文。
通过报文的总字节长度的奇偶性可以将必定为偶数的8字节长度的请求报文或其他偶数字节数报文过滤,对于剩下的报文通过功能码等信息判断报文是否为响应报文。
若报文非响应报文或是响应报文但与之前接收的请求报文不一致,则丢弃此报文以及之前保留的请求报文,使重新回到空闲监听状态,等待下一次报文。若报文为保留请求报文对应的响应报文,则其中数据为需要读取的数据。对此响应报文根据Modbus协议进行解析,解析失败则丢弃报文,装置回到空闲监听状态。解析成功则展示结果数据,装置同样回到空闲监听状态,开始新一轮监听。
若不需要继续使用装置时,拆除连接的485线,即可将装置拆除。
最后,作为一种实施例,本发明将模块功能嵌入到WirelessHART的网关和节点中,Modbus信息配置表的存储和部分处理器功能(Modbus报文解析)由WirelessHART网关实现,节点芯片上有处理器以及无线传输射频,其底板上有RS485通信模块,具有实现发明的所有模块功能。在WirelessHART网关和节点上实现本发明功能后,通过将节点接入到一处正在通过ModbusRTU的读取数据的总线中,此总线上由电脑分别模拟主站和从站,周期发送读取数据报文。
根据功能码情况将实施例分为01、02、03和04四种类型。每种功能码类型,根据接入总线时的情况分为总线空闲、正在发送报文、第一包报文为对应配置的请求报文、第一包报文为非配置的请求报文或响应报文、报文不完整等情形分别进行测试。
测试结果,根据手动控制报文发送的实时测试,各功能码测试全部通过。设备能够正确识别完整的报文,以及清晰的筛选出符合配置需要的请求报文。
总线空闲时,会等待3.5个字符时间,若此时间内总线上没有发送任何报文,则准备开始接收数据,若每3.5个字符时间内,总线上有数据传输,则不接收数据,直至空闲时间超过3.5个字符时间后,再开始接收数据。
总线正在发送报文时,报文完整的情况下,每1.5个字符时间内都会收到数据,知道此报文发送结束后,经过3.5个字符的结束时间,设备才判断后续再次接到数据为新一包报文的起始数据,开始接收报文数据。
当设备接收数据后,对于第一包数据是响应报文或非配置的请求报文时,能够正确丢弃不需要的报文,而收到对应配置的请求和响应报文时,能够正确识别。
当发送报文时,突然停止发送导致报文不完整时,设备能够正确判断,并丢弃报文。
本发明的有益效果是:
1、本发明装置的使用不需要改动原有的总线,只需找个适当的位置将设备接入总线即可。
2、因为装置通过监听获取响应报文解析数据,实际并不会发送任何报文,完全不影响原主站和从站发送(或接收)请求/响应报文,故需要的情况下,可几乎没有限制的在总线上接入此设备。
3、Modbus信息配置表生成对应的Modbus请求报文格式,每次修改信息配置表,会实时修改生成的Modbus请求报文,以达到实时控制设备读取的数据内容。
4、该装置同样可以用于已实现多主站的ModbusRTU链路中,同样可以起到指定共享某主站查询的从站数据,其成本低且结构简单,为多主站新增新主站提供一种新的选择。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种Modbus总线共享监听装置,其特征在于:包括:
Modbus信息配置模块、处理器和RS485通信模块;
Modbus信息配置模块,根据Modbus协议和需求的数据提前做好对应配置,生成读取数据的Modbus请求报文;
RS485通信模块,接入原modbusRTU通信链路,监听原主站,得到监听报文;
处理器,接受监听报文,并根据请求报文获取需要读取的数据。
2.如权利要求1所述的一种Modbus总线共享监听装置,其特征在于:
所述RS485通信模块接收报文时,以接入时刻t为基准,若在3.5个字符时间内未接收到数据,则表示上一包报文发送完成,下一次接收到的数据即为下一包报文的起始数据。
3.如权利要求2所述的一种Modbus总线共享监听装置,其特征在于:在接收报文数据时,若两个字符之间的空闲间隔大于1.5个字符时间,则接收到的数据应该丢弃,等待下一次接收。
4.如权利要求1所述的一种Modbus总线共享监听装置,其特征在于:RS485通信模块根据报文的字节数以及功能码区分通信链路上的请求报文和读取报文。
5.如权利要求1所述的一种Modbus总线共享监听装置,其特征在于:所述处理器先接收一个请求报文,并判断请求报文是否符合Modbus信息配置模块中配置的Modbus信息生成的Modbus请求报文,若不符合直接丢弃报文,若符合则等待下一包报文,判断其是否为响应报文,并且此响应报文是否与上一包收到的请求报文相对应,是,则解析其数据并发送给需要的设备,否则连同上一包请求报文一起丢弃。
6.如权利要求1所述的一种Modbus总线共享监听装置,其特征在于:所述处理器对最后识别成功的正确报文通过Modbus协议进行解析,获取从站返回的数据。
7.如权利要求1所述的一种Modbus总线共享监听装置,其特征在于:装置工作的流程如下:
S1、确定需要读取的数据以及从站信息,在Modbus信息配置表中进行配置;
S2、通过RS485通信模块接入原主站与从站间的总线;
S3、处理器通过Modbus协议接收在总线上监听到的报文,对报文进行校验;若校验失败,则丢弃报文,重新监听总线,直至得到完整报文;
S4、处理器根据自身状态进行完整报文的不同处理。
8.如权利要求7所述的一种Modbus总线共享监听装置,其特征在于:步骤S4具体如下:
S41、若处理器处于没有接受过请求报文的空闲监听状态,则首先判断所述完整报文是否为请求报文,若为非请求报文,则丢弃此完整报文,保持空闲监听状态;若为请求报文,则进一步判断其是否与Modbus信息配置模块中的报文是否一致,若不一致,则丢弃此完整报文,保持空闲监听状态,否则保留此完整报文,并进入已接受一包请求报文的状态,继续监听总线,等待下一包的完整报文;
S42、若处理器处于已接受一包请求报文的状态,对于下一包的完整报文,仍然先判断其类型是属于请求报文还是响应报文,若为非响应报文,则丢弃此报文以及之前保留的请求报文,重新回到空闲监听状态,等待下一次完整报文;若为响应报文,判断其是否与已接受的请求报文相对应,若是,则处理器根据Modbus协议对响应报文进行解析,并展示结果数据,否则,处理器丢弃此报文以及之前保留的请求报文,重新回到空闲监听状态,等待下一次完整报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311703717.8A CN117914642A (zh) | 2023-12-11 | 2023-12-11 | 一种Modbus总线共享监听装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311703717.8A CN117914642A (zh) | 2023-12-11 | 2023-12-11 | 一种Modbus总线共享监听装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117914642A true CN117914642A (zh) | 2024-04-19 |
Family
ID=90691419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311703717.8A Pending CN117914642A (zh) | 2023-12-11 | 2023-12-11 | 一种Modbus总线共享监听装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117914642A (zh) |
-
2023
- 2023-12-11 CN CN202311703717.8A patent/CN117914642A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040054829A1 (en) | Method, system and program for the transmission of modbus messages between networks | |
CN112055096B (zh) | 自动设置设备通信地址的方法及装置 | |
CN110912944B (zh) | 一种can设备安全测试系统及测试方法 | |
CN110955626A (zh) | 一种在串行链路上实现Modbus通信的方法与系统 | |
CN101300534A (zh) | 用于传输周期性和非周期性数据的方法和系统 | |
CN115242689B (zh) | 一种车载网关测试方法、系统及计算机可读存储介质 | |
CN104852825A (zh) | 总线通讯测试方法及系统 | |
CN114500305B (zh) | 设备监控方法、装置、设备、存储介质及程序产品 | |
KR101334017B1 (ko) | 차량 네트워크의 메시지 무결성 체크 시스템 및 방법 | |
CN114422288B (zh) | 基于Modbus协议的通讯系统 | |
CN112422485B (zh) | 一种传输控制协议的通信方法及装置 | |
CN112367236B (zh) | Lin总线的数据调度方法及系统 | |
CN115657646B (zh) | 一种can控制器的测试方法及装置 | |
KR20200139059A (ko) | 제어기 진단 장치 및 그 방법 | |
CN112015163B (zh) | 一种快速识别can总线上诊断主体的方法及装置 | |
CN112165422A (zh) | 一种一主多从温度控制系统及地址自动匹配方法 | |
CN117914642A (zh) | 一种Modbus总线共享监听装置 | |
Dekanic et al. | Integration of CAN bus drivers and UDS on Aurix platform | |
CN113938351A (zh) | 数据采集方法、系统及计算机可读存储介质 | |
CN108989112B (zh) | 用于模拟节点间通信的系统 | |
CN103370906B (zh) | 通信系统 | |
CN109981394B (zh) | 基于增强型can总线协议分析仪的通信方法和装置 | |
JP2002290310A (ja) | 無線通信システム | |
CN111930582A (zh) | 系统管理总线检测平台、处理器及系统管理总线检测方法 | |
CN220210465U (zh) | 一种多电机传动系统的内部通信装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |