CN103297307A - Modbus ASCII从站快速捕获数据的方法及从站 - Google Patents

Modbus ASCII从站快速捕获数据的方法及从站 Download PDF

Info

Publication number
CN103297307A
CN103297307A CN2013101558631A CN201310155863A CN103297307A CN 103297307 A CN103297307 A CN 103297307A CN 2013101558631 A CN2013101558631 A CN 2013101558631A CN 201310155863 A CN201310155863 A CN 201310155863A CN 103297307 A CN103297307 A CN 103297307A
Authority
CN
China
Prior art keywords
slave station
communication message
main website
listens
intercepting
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.)
Granted
Application number
CN2013101558631A
Other languages
English (en)
Other versions
CN103297307B (zh
Inventor
黄伟
赵亦欣
刘娟
吕跃跃
彭正福
吴小军
刘静
杨智
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southwest University
Original Assignee
Southwest University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Southwest University filed Critical Southwest University
Priority to CN201310155863.1A priority Critical patent/CN103297307B/zh
Publication of CN103297307A publication Critical patent/CN103297307A/zh
Application granted granted Critical
Publication of CN103297307B publication Critical patent/CN103297307B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)

Abstract

本发明提供的一种Modbus ASCII从站快速捕获数据的方法及从站。其中方法包括:从站i侦听主站和被侦听的从站j间含从站j被侦听的功能码的通信报文,所述i、j为正整数;所述从站i判断所述侦听到的通信报文是否含有需要被捕获的数据;当判断结果为是时,所述从站i直接从所述侦听到的通信报文中捕获所需数据。本发明可以降低通信延迟,提高数据传输效率。

Description

Modbus ASCII从站快速捕获数据的方法及从站
技术领域
本发明涉及自动化控制领域,尤其涉及一种Modbus ASCII从站快速捕获数据的方法及从站。 
背景技术
Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。经过多年的发展,Modbus已被广泛应用在各种行业和领域中,并且Modbus可在串行通信或者以太网上实现,当在串行链路上实现时,采用RS485构成总线形网络拓扑,具有易于安装和节省电缆等优点。Modbus串行通信方式可以选择ASCII方式或RTU方式,分别被称为“Modbus ASCII”和“Modbus RTU”。 
目前在Modbus ASCII中的链路协议是一个主-从协议,在同一时间,总线上只能有一个主站,和一个或多个(最多247个)从站。Modbus ASCII中的通信主要是由主站发起,当从站没有收到来自主站的请求时,不会发送数据,从站之间不能相互通信。主站同时只能启动一个Modbus ASCII事务处理。 
在Modbus ASCII中,主站可用两种模式向从站发出请求,一种是单播模式,即主站寻址单个从站,从站接收并处理完请求之后,向主站返回一个报文(“响应”)。另一种是广播模式,即主站可以向所有的从站发送请求,对于主站发送的广播请求没有应答返回,并且广播请求必须是写命令。 
在Modbus ASCII中,请求和响应的基本格式如表一所示: 
表一: 
地址字段 功能码字段 数据字段 LRC字段
[0008] 其中地址字段只含有从站地址,在Modbus ASCII中主站没有特定地址,只有从站有一个地址;当主站请求从站时,主站通过将从站地址放置在地址字段中来寻址从站;当从站返回响应时,从站将自己的地址放到响应地址字段中,以便使主站知道哪个从站正在响应。其中功能码指示要执行何种操作,当主站请求从站时,功能码向从站说明应执行的动作;当从站响应主站时,功能码可说明从站正常响应或出现错误,正常响应时,从站简单返回原始功能码,不正常响应时,返回与原始功能码相等效的一个码,并把最高位设定为“1”;例如:主站要求从站读一组保持寄存器值,则请求中的功能码为:0000 0011,若从站正确接收请求的动作信息后,则返回相同功能码的正常响应;发现错误时,则返回一个不正常的响应,其中的功能码为:1000 0011。其中数据字段存储的是请求或响应参数。LRC字段存储LRC值,即“Longitudinal Redundancy Check,纵向冗余校验”。 
在Modbus ASCII中,对于数据输入,当某一个从站(可称为“数据源从站”)需要将采集的数据传递到另一个从站(可称为“数据应用从站”)中使用时,必须要等到轮询周期中,主站对数据源从站发起通信,将输入数据采集到主站后,再等待下一次主站与数据应用从站发起通信时,再将该数据下发到该从站。由于这一过程,需要主站转发,从数据源从站发出数据到数据应用从站收到数据,这中间存在一定的(严重时,存在近一个周期的)通信延迟。对于数据输出且需要两个站联动,但不允许采用广播方式时(由于广播通信方式会导致全网络中各个从站同时联动),如果某一个从站(可称为“数据源从站”)所接收的输出数据要传递到另外一个从站(可称为“数据应用从站”)中去关联使用,那么只能等到轮询周期中,主站对数据源从站发起通信,将输出数据下发到数据源从站,然后再等待主站与数据应用从站发起通信时,才能将该输出数据下发到数据应用从站,这中间同样存在通信延迟,无法保证两个从站的实时联动。 
发明内容
有鉴于此,本发明提供了一种Modbus ASCII从站快速捕获数据的方法及从 站。可以降低通信延迟,提高数据传输效率。 
本发明提供的Modbus ASCII从站快速捕获数据的方法,包括: 
从站i侦听主站和被侦听的从站j间含从站j被侦听的功能码的通信报文,所述i、j为正整数; 
所述从站i判断所述侦听到的通信报文是否含有需要被捕获的数据; 
当判断结果为是时,所述从站i直接从所述侦听到的通信报文中捕获所需数据。 
进一步,所述从站i侦听主站和被侦听的从站j间含从站j被侦听的功能码的通信报文,包括: 
从站i侦听主站和从站间的通信报文; 
从站i判断侦听到的主站和从站间的通信报文中所含从站地址是否与被侦听的从站j的地址相同; 
当判断结果为是时,从站i继续判断侦听到的主站和从站间的通信报文所含的功能码是否与从站j被侦听的功能码相同; 
当判断结果也为是时,执行所述从站i判断所述侦听到的通信报文是否含有需要被捕获的数据的步骤。 
进一步,主站和从站间的通信报文为主站下发给从站的请求或从站返回给主站的响应。 
进一步,所述从站i判断所述侦听到的通信报文是否含有需要被捕获的数据,包括: 
从站i识别所述侦听到的通信报文中所含功能码的类型; 
当识别到的类型为读操作时,判断所述侦听到的通信报文是否为主站下发给从站j的请求,若是,则判断结果为是; 
当识别到的类型为写操作时,判断所述侦听到的通信报文是否为从站j返回给主站的响应,若是,则判断结果为是; 
当识别到的类型为读/写操作时,判断结果为是。 
进一步,所述侦听到的通信报文中所含功能码包括:属于读操作的读线圈 状态、读输入寄存器、读保持寄存器或读离散输入,属于写操作的写单个寄存器、写单个线圈、写多个线圈或写多个寄存器,或者,属于读/写操作的读/写多个寄存器。 
进一步,从站i设置一个初始值为0的侦听计数器,每当从站i侦听到主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文时,对所述侦听计数器加1;当所述侦听计数器的值为1时,从站i认为所述侦听到的通信报文为主站下发给从站j的请求,当所述侦听计数器的值为2时,从站i认为所述侦听到的通信报文为从站j返回给主站的响应; 
所述方法还包括: 
当所述侦听计数器的值为2时, 
若从站i判断到所述侦听到的通信报文不含有需要被捕获的数据时,直接将所述侦听计数器清零; 
若从站i判断到所述侦听到的通信报文含有需要被捕获的数据时,则从站i在执行所述直接从所述侦听到的通信报文中捕获所需数据步骤之后,将所述侦听计数器清零。 
本发明提供的Modbus ASCII中的从站,包括: 
侦听模块,用于侦听主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文,所述j为正整数; 
判断模块,判断所述侦听模块侦听到的通信报文是否含有需要被捕获的数据; 
捕获模块,用于当判断模块的判断结果为是时,直接从所述侦听到的通信报文中捕获所需数据。 
进一步,所述侦听模块包括: 
侦听单元,用于侦听主站和从站间的通信报文; 
第一判断单元,用于判断所述侦听单元侦听到的主站和从站间的通信报文中所含从站地址是否与被侦听的从站j的地址相同; 
第二判断单元,用于当所述第一判断单元的判断结果为是时,判断所述侦 听单元侦听到的主站和从站间的通信报文所含的功能码是否与从站j被侦听的功能码相同; 
第一指示单元,用于当第二判断单元的判断结果为是时,向所述判断模块输出判断结果为是的指示信号。 
进一步,所述主站和从站之间的通信报文为主站下发给从站的请求或从站返回给主站的响应; 
所述判断模块,包括: 
识别单元,用于识别所述侦听模块侦听到的通信报文中所含功能码的类型; 
第三判断单元,用于当识别单元识别到的类型为读操作时,判断所述侦听到的通信报文是否为主站下发给从站j的请求; 
第四判断单元,用于当识别单元识别到的类型为写操作时,判断所述侦听到的通信报文是否为从站j返回给主站的响应; 
第二指示单元,用于当所述识别单元识别到的类型为读/写操作或第三判断单元的判断结果为是或第四判断单元的判断结果为是时,向所述捕获模块输出判断结果为是的指示信号。 
进一步,还包括: 
侦听计数器,所述侦听计数器的初始值为0,每当所述侦听模块侦听到主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文时,所述侦听计数器加1; 
当所述侦听计数器的值为1时,所述第三判断单元认为所述侦听到的通信报文为主站下发给从站j的请求,当所述侦听计数器的值为2时,所述第四判断单元认为所述侦听到的通信报文为从站j返回给主站的响应; 
清零模块,用于当所述侦听计数器的值为2时, 
若所述判断模块判断到所述侦听到的通信报文不含有需要被捕获的数据时,直接将所述侦听计数器清零; 
若判断模块判断到所述侦听到的通信报文含有需要被捕获的数据时,则在所述捕获模块直接从所述侦听到的通信报文中捕获所需数据之后,将所述侦听 计数器清零。 
本发明的有益效果: 
由于从站i对主站和被侦听从站j间的含从站j被侦听的功能码的通信报文进行侦听,并且在判断到侦听到的通信报文含其所需的数据时,直接从该侦听到的通信报文中捕获所需数据,因此可降低通信延迟,提高数据传输效率。 
附图说明
下面结合附图和实施例对本发明作进一步描述: 
图1是本发明提供的Modbus ASCII中从站快速捕获数据的方法的第一实施例的流程示意图。 
图2是图1中步骤S11的实施例的流程示意图。 
图3是本发明提供的Modbus ASCII中从站快速捕获数据的方法的第二实施例的流程示意图。 
图4是本发明提供的Modbus ASCII中从站的实施例的结构示意图。 
具体实施方式
请参考图1,是本发明提供的Modbus ASCII中从站快速捕获数据的方法的第一实施例的流程示意图。其包括: 
步骤S11、从站i侦听主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文。 
其中,i和j均为正整数,其可以为从站的站号,由于目前同一时间上,总线上的从站最多有247个,因此i和j可以为1至247间的正整数。 
具体的,如图2所示,是步骤S11的一种实施例的流程示意图。其包括: 
步骤S21、从站i侦听主站和从站间的通信报文。 
此处,步骤S21中指的从站包括从站i在内的与从站i位于同一网段内的其它从站,其中位于同一网段内的从站间能够相互接收通信报文。 
步骤S22、从站i判断侦听到的主站和从站间的通信报文中所含从站地址 是否与被侦听的从站j的地址相同。 
此处,从站j代指被侦听的从站。在系统设计阶段,从站i可以将同一网段中其它一个或多个从站做为被侦听的从站。并且,从站i维护一张记录被侦听从站的地址的侦听表。具体的,当从站i接收到主站和从站间的通信报文时,从站i从接收到的通信报文中取出从站地址,然后以该从站地址为关键词索引侦听表,如果能从该表中找到与取出的从站地址相同的地址,则说明接收到的通信报文为主站和被侦听的从站间的通信报文,需要做进一步处理(即步骤S23)。如果未能从该表中查找到与取出的从站地址相同的地址,此时需要进一步识别从通信报文中取出的地址是否与本站地址相同,如果与本站地址相同,则按标准Modbus ASCII通信,如果与本站地址不相同,则丢弃该通信报文。 
步骤S23、当步骤S22的判断结果为是时,从站i继续判断侦听到的主站和从站间的通信报文所含的功能码是否与从站j被侦听的功能码相同。 
此处,从站i中维护的侦听表中还记录了被侦听从站对应的被侦听功能码。由于被侦听从站对应的功能码有很多,本实施例可以仅对其中的一个或几个功能码进行侦听。一般的,Modbus ASCII中的功能码按类型分可以分为三类,分别是读操作、写操作和读/写操作,具体的可参考表二。 
具体的,步骤S22的判断结果为是时,从站i从接收到的通信报文中取出功能码,并将该功能码与被侦听从站的被侦听的功能码进行比较,如果相同,则执行步骤S12,如果不相同,则丢弃该接收到的通信报文,返回空闲状态。 
需要说明的是,被侦听从站可能存在多个被侦听的功能码,因此只要取出的功能码与多个被侦听的功能码之一相同,即步骤S23的判断结果为是,需要执行步骤S12。 
需要说明的是,在步骤S21和步骤S22之间,或者在步骤S22之后,还可以增加执行如下步骤:对接收到的通信报文进行LRC校验,如果校验正解,才执行步骤S22或者步骤S12。如果校验错误,丢弃接收到的通信报文,返回空闲状态。进行LRC校验的目的,如果LRC校验错误,则表明接收到的通信报文中的数据已经成为了错误的数据,即使该通信报文为被侦听从站的需被侦听的功能码的通信报文,也已经失去了实际用处。 
步骤S12、从站i判断步骤S11侦听到的通信报文是否含有需要被捕获的数据。 
其中,当步骤S11确定当前侦听到的通信报文中的地址与被侦听从站j的地址,功能码与被侦听从站j对应的被侦听功能码均相同时,还不足以说明侦听到的通信报文中含有从站i需要的数据。这是由于主站和从站间的通信报文包括:主站下发给从站的请求和对应的从站返回给主站的响应,并且在正常通信时,主站下发给从站的请求和从站返回给主站的响应中的地址和功能码相同,但是所携带的数据不同,因此符合步骤S11条件的通信报文未必一定含有从站i所需捕获的数据。另外,本领域技术人员还知道,如果通信报文中的功能码的类型为读操作时,那么从站j返回给主站的响应含有有效的数据,如果通信报文中的功能码的类型为写操作时,那么主站下发给从站j的请求中含有有效的数据,如果通信报文中的功能码的类型为读/写类型时,那么从站j返回给主站的响应和主站下发给从站j的请求中均含有有效的数据。但是,通过功能码并不能够区分出侦听到的通信报文到底是主站下发给从站j的请求,还是从站 j返回给主站的响应,因此可以设计一个侦听计数器,通过该侦听计数器的值来区分。 
具体的,侦听计数器的初始值为0,在启动侦听时,当通过前述的方法每判断到一次侦听到通信报文中的地址与被侦听从站的地址相同,且功能码与被侦听从站被侦听的功能码相同时,将侦听计数器的值加1。由于主站总是先向从站发出请求,从站再做出响应,因此,侦听计数器的值为1时可以表明是主站下发给从站的请求,侦听计数器为2时,可以表明是从站返回主站的响应,从而实现区分,再结合通信报文中的功能码,就可以知道当前侦听到的通信报文是否含有需要被捕获的数据。另外,在侦听完成一次请求和对应的响应后,还需要对侦听计数器清零,好为下一次的报文侦听和数据捕获做准备。 
步骤S13、当步骤S12的判断结果为是时,从站i直接从步骤S11侦听到的通信报文中捕获所需数据。 
此处,可以在系统设计阶段,根据从站i的实际需要,确定需要捕获从站j的哪个或哪几个数据。在步骤S13中,按照Modbus通信应用层协议步骤S11侦听到的通信报文,获得报文中全部数据;然后从获得的全部数据中,提取出预先确定的需要捕获的数据。。 
本实施例仅针对Modbus ASCII的单播而言,对数据输入,从站i可以直接从从站j向主站返回的响应中捕获所需数据,因此这中间不存在主站转发这一环节,可以降低通信延迟,提高实时性。对于数据输出,从站i可以直接从主站下发给从站j的通信报文中捕获所需数据,从而在降低通信延迟、提高实时性的基础上,还能够减少主从通信次数,提高通信效率。 
请参考图3,是本发明提供的Modbus ASCII中从站快速捕获数据的方法的第二实施例的流程示意图。下述步骤的执行主体是指从站i,从站j是指被侦听的从站。图3实施例其体包括: 
步骤S301、空闲状态。 
步骤S302、接收主站和从站间的通信报文。 
步骤S303、判断通信报文中的地址与本站地址是否相同。如果不相同,执 行步骤S304,如果相同,执行步骤S305。 
步骤S304、按照标准Modbus ASCII通信,返回空闲状态。 
步骤S305、判断通信报文中的地址与从站j的地址是否相同。如果相同,执行步骤S306,如果不相同,执行步骤S309。 
步骤S306、LRC校验。如果校验正确,执行步骤S307,如果校验错误,执行步骤S308。 
步骤S307、判断通信报文中的功能码是否与从站j的被侦听的功能码相同。如果不相同,执行步骤S308,如果相同,执行步骤S309。 
步骤S308、丢弃通信报文,返回空闲状态。 
步骤S309、侦听计数器加1。 
步骤S310、识别通信报文类型。如果类型为读操作,执行步骤S311,如果类型为写操作,执行步骤S313,如果类型为读/写操作,执行步骤S316。 
步骤S311、判断侦听计数器值。侦听计数器的值为1时,执行步骤S308,侦听计数器的值为2时,执行步骤S312。 
步骤S312、捕获所需数据,侦听计数器清0,返回空闲状态。 
步骤S313、判断侦听计数器值。侦听计数器的值为1时,执行步骤S314,侦听计数器的值为2时,执行步骤S315。 
步骤S314、捕获所需数据,返回空闲状态。 
步骤S315、丢弃通信报文,侦听计数器清0,返回空闲状态。 
步骤S316、判断侦听计数器值。侦听计数器的值为1时,执行步骤S317,侦听计数器的值为2时,执行步骤S318。 
步骤S317、捕获所需数据,返回空闲状态。从主站下发给从站j的请求中捕获。 
步骤S318、捕获所需数据,侦听计数器清0,返回空闲状态。从从站j返回给主站的响应中捕获。 
下面介绍相应于上述方法实施例的结构。 
请参考图4是本发明提供的Modbus ASCII中从站的实施例的结构示意图。 该从站包括: 
侦听模块1,用于侦听主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文。 
其中,i和j均为正整数,其可以为从站的站号,由于目前同一时间上,总线上的从站最多有247个,因此i和j可以为1至247间的正整数。 
具体的,侦听模块1的结构的实施例的示意图。其包括: 
侦听单元11,用于侦听主站和从站间的通信报文。 
第一判断单元12,用于判断侦听到的主站和从站间的通信报文中所含从站地址是否与被侦听的从站j的地址相同。 
此处,从站j代指被侦听的从站。在系统设计阶段,可以将同一网段中其它一个或多个从站做为被侦听的从站。并且,维护一张记录被侦听从站的地址的侦听表。具体的,当侦听单元11接收到主站和从站间的通信报文时,第一判断单元12从接收到的通信报文中取出从站地址,然后以该从站地址为关键词索引侦听表,如果能从该表中找到与取出的从站地址相同的地址,则说明接收到的通信报文为主站和被侦听的从站间的通信报文,需要做进一步处理。如果未能从该表中查找到与取出的从站地址相同的地址,此时需要进一步识别从通信报文中取出的地址是否与本站地址相同,如果与本站地址相同,则按标准Modbus ASCII通信,如果与本站地址不相同,则丢弃该通信报文。 
第二判断单元13,用于当第一判断单元12的判断结果为是时,判断侦听到的主站和从站间的通信报文所含的功能码是否与从站j被侦听的功能码相同。 
此处,维护的侦听表中还记录了被侦听从站对应的被侦听功能码。由于被侦听从站对应的功能码有很多,本实施例可以仅对其中的一个或几个功能码进行侦听。具体的,第二判断单元13从接收到的通信报文中取出功能码,并将该功能码与被侦听从站的被侦听的功能码进行比较。 
需要说明的是,被侦听从站可能存在多个被侦听的功能码,因此只要取出的功能码与多个被侦听的功能码之一相同,那么第二判断单元13的判断结果为 是。 
第一指示单元13,用于当第二判断单元的判断结果为是时,向所述判断模块输出判断结果为是的指示信号。 
需要说明的是,在第一判断单元12和第二判断单元13之间,或者在第二判断单元13之后,还可以增加执行如下处理:对接收到的通信报文进行LRC校验,如果校验正解,才执行后续的处理。如果校验错误,丢弃接收到的通信报文,返回空闲状态。进行LRC校验的目的,如果LRC校验错误,则表明接收到的通信报文中的数据已经成为了错误的数据,即使该通信报文为被侦听从站的需被侦听的功能码的通信报文,也已经失去了实际用处。 
判断模块2,用于判断侦听模块1侦听到的通信报文是否含有需要被捕获的数据。 
其中,当侦听模块1确定当前侦听到的通信报文中的地址与被侦听从站j的地址,功能码与被侦听从站j对应的被侦听功能码均相同时,还不足以说明侦听到的通信报文中含有从站i需要的数据。这是由于主站和从站间的通信报文包括:主站下发给从站的请求和对应的从站返回给主站的响应,并且在正常通信时,主站下发给从站的请求和从站返回给主站的响应中的地址和功能码相同,但是所携带的数据不同,因此侦听模块1侦听到的通信报文未必一定含有从站i所需捕获的数据。另外,本领域技术人员还知道,如果通信报文中的功能码的类型为读操作时,那么从站j返回给主站的响应含有有效的数据,如果通信报文中的功能码的类型为写操作时,那么主站下发给从站j的请求中含有有效的数据,如果通信报文中的功能码的类型为读/写类型时,那么从站j返回给主站的响应和主站下发给从站j的请求中均含有有效的数据。因此,判断模块2可以包括: 
识别单元21,用于识别所述侦听模块侦听到的通信报文中所含功能码的类型。 
第三判断单元22,用于当识别单元识别到的类型为读操作时,判断所述侦听到的通信报文是否为主站下发给从站j的请求。 
第四判断单元23,用于当识别单元识别到的类型为写操作时,判断所述侦听到的通信报文是否为从站j返回给主站的响应。 
第二指示单元24,用于当所述识别单元识别到的类型为读/写操作或第三判断单元的判断结果为是或第四判断单元的判断结果为是时,向所述捕获模块输出判断结果为是的指示信号。 
但是,通过功能码并不能够区分出侦听到的通信报文到底是主站下发给从站j的请求,还是从站j返回给主站的响应,因此本实施例的从站还包括:一个侦听计数器4,通过该侦听计数器的值来区分。 
具体的,侦听计数器4的初始值为0,在启动侦听时,当通过前述的方式每判断到一次侦听到通信报文中的地址与被侦听从站的地址相同,且功能码与被侦听从站被侦听的功能码相同时,将侦听计数器的值加1。由于主站总是先向从站发出请求,从站再做出响应,因此,侦听计数器的值为1时可以表明是主站下发给从站的请求,侦听计数器为2时,可以表明是从站返回主站的响应,从而实现区分,再结合通信报文中的功能码,就可以知道当前侦听到的通信报文是否含有需要被捕获的数据。另外,在侦听完成一次请求和对应的响应后,还需要对侦听计数器清零,好为下一次的报文侦听和数据捕获做准备,因此本实施例还包括:一个清零模块5,用于对侦听计数器进行清零处理。 
捕获模块3、当判断模块2的判断结果为是时,直接从侦听模块1侦听到的通信报文中捕获所需数据。 
此处,可以在系统设计阶段,根据从站i的实际需要,确定需要捕获从站j的哪个或哪几个数据。捕获模块3按照Modbus通信应用层协议解析侦听模块1侦听到的通信报文,获得报文中全部数据;然后从获得的全部数据中,提取出预先确定的需要捕获的数据。。 
本实施例仅针对Modbus ASCII的单播而言,对数据输入,从站i可以直接从从站j向主站返回的响应中捕获所需数据,因此这中间不存在主站转发这一环节,可以降低通信延迟,提高实时性。对于数据输出,从站i可以直接从主站下发给从站j的通信报文中捕获所需数据,从而在降低通信延迟、提高实时 性的基础上,还能够减少主从通信次数,提高通信效率。 
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。 

Claims (10)

1.一种Modbus ASCII中从站快速捕获数据的方法,其特征在于:包括:
从站i侦听主站和被侦听的从站j间含从站j被侦听的功能码的通信报文,所述i、j为正整数;
所述从站i判断所述侦听到的通信报文是否含有需要被捕获的数据;
当判断结果为是时,所述从站i直接从所述侦听到的通信报文中捕获所需数据。
2.如权利要求1所述的方法,其特征在于:所述从站i侦听主站和被侦听的从站j间含从站j被侦听的功能码的通信报文,包括:
从站i侦听主站和从站间的通信报文;
从站i判断侦听到的主站和从站间的通信报文中所含从站地址是否与被侦听的从站j的地址相同;
当判断结果为是时,从站i继续判断侦听到的主站和从站间的通信报文所含的功能码是否与从站j被侦听的功能码相同;
当判断结果也为是时,执行所述从站i判断所述侦听到的通信报文是否含有需要被捕获的数据的步骤。
3.如权利要求1或2所述的方法,其特征在于:主站和从站间的通信报文为主站下发给从站的请求或从站返回给主站的响应。
4.如权利要求3所述的方法,其特征在于:所述从站i判断所述侦听到的通信报文是否含有需要被捕获的数据,包括:
从站i识别所述侦听到的通信报文中所含功能码的类型;
当识别到的类型为读操作时,判断所述侦听到的通信报文是否为主站下发给从站j的请求,若是,则判断结果为是;
当识别到的类型为写操作时,判断所述侦听到的通信报文是否为从站j返回给主站的响应,若是,则判断结果为是;
当识别到的类型为读/写操作时,判断结果为是。
5.如权利要求4所述的方法,其特征在于:所述侦听到的通信报文中所含功能码包括:属于读操作的读线圈状态、读输入寄存器、读保持寄存器或读离散输入,属于写操作的写单个寄存器、写单个线圈、写多个线圈或写多个寄存器,或者,属于读/写操作的读/写多个寄存器。
6.如权利要求4所述的方法,其特征在于:从站i设置一个初始值为0的侦听计数器,每当从站i侦听到主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文时,对所述侦听计数器加1;当所述侦听计数器的值为1时,从站i认为所述侦听到的通信报文为主站下发给从站j的请求,当所述侦听计数器的值为2时,从站i认为所述侦听到的通信报文为从站j返回给主站的响应;
所述方法还包括:
当所述侦听计数器的值为2时,
若从站i判断到所述侦听到的通信报文不含有需要被捕获的数据时,直接将所述侦听计数器清零;
若从站i判断到所述侦听到的通信报文含有需要被捕获的数据时,则从站i在执行所述直接从所述侦听到的通信报文中捕获所需数据步骤之后,将所述侦听计数器清零。
7.一种Modbus ASCII中的从站,其特征在于:包括:
侦听模块,用于侦听主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文,所述j为正整数;
判断模块,判断所述侦听模块侦听到的通信报文是否含有需要被捕获的数据;
捕获模块,用于当判断模块的判断结果为是时,直接从所述侦听到的通信报文中捕获所需数据。
8.如权利要求7所述的从站,其特征在于:所述侦听模块包括:
侦听单元,用于侦听主站和从站间的通信报文;
第一判断单元,用于判断所述侦听单元侦听到的主站和从站间的通信报文中所含从站地址是否与被侦听的从站j的地址相同;
第二判断单元,用于当所述第一判断单元的判断结果为是时,判断所述侦听单元侦听到的主站和从站间的通信报文所含的功能码是否与从站j被侦听的功能码相同;
第一指示单元,用于当第二判断单元的判断结果为是时,向所述判断模块输出判断结果为是的指示信号。
9.如权利要求8或9所述的从站,其特征在于:所述主站和从站之间的通信报文为主站下发给从站的请求或从站返回给主站的响应;
所述判断模块,包括:
识别单元,用于识别所述侦听模块侦听到的通信报文中所含功能码的类型;
第三判断单元,用于当识别单元识别到的类型为读操作时,判断所述侦听到的通信报文是否为主站下发给从站j的请求;
第四判断单元,用于当识别单元识别到的类型为写操作时,判断所述侦听到的通信报文是否为从站j返回给主站的响应;
第二指示单元,用于当所述识别单元识别到的类型为读/写操作或第三判断单元的判断结果为是或第四判断单元的判断结果为是时,向所述捕获模块输出判断结果为是的指示信号。
10.如权利要求9所述的从站,其特征在于:还包括:
侦听计数器,所述侦听计数器的初始值为0,每当所述侦听模块侦听到主站和被侦听的从站j间的含从站j被侦听的功能码的通信报文时,所述侦听计数器加1;
当所述侦听计数器的值为1时,所述第三判断单元认为所述侦听到的通信报文为主站下发给从站j的请求,当所述侦听计数器的值为2时,所述第四判断单元认为所述侦听到的通信报文为从站j返回给主站的响应;
清零模块,用于当所述侦听计数器的值为2时,
若所述判断模块判断到所述侦听到的通信报文不含有需要被捕获的数据时,直接将所述侦听计数器清零;
若判断模块判断到所述侦听到的通信报文含有需要被捕获的数据时,则在所述捕获模块直接从所述侦听到的通信报文中捕获所需数据之后,将所述侦听计数器清零。
CN201310155863.1A 2013-04-28 2013-04-28 Modbus ASCII从站快速捕获数据的方法及从站 Active CN103297307B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310155863.1A CN103297307B (zh) 2013-04-28 2013-04-28 Modbus ASCII从站快速捕获数据的方法及从站

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310155863.1A CN103297307B (zh) 2013-04-28 2013-04-28 Modbus ASCII从站快速捕获数据的方法及从站

Publications (2)

Publication Number Publication Date
CN103297307A true CN103297307A (zh) 2013-09-11
CN103297307B CN103297307B (zh) 2016-09-14

Family

ID=49097651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310155863.1A Active CN103297307B (zh) 2013-04-28 2013-04-28 Modbus ASCII从站快速捕获数据的方法及从站

Country Status (1)

Country Link
CN (1) CN103297307B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716420A (zh) * 2014-01-03 2014-04-09 西南大学 Modbus ASCII从站自动获取站地址方法及从站
CN107168045A (zh) * 2017-06-26 2017-09-15 中国电子信息产业集团有限公司第六研究所 一种基于EtherCAT的通信冗余控制系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060238339A1 (en) * 2003-04-14 2006-10-26 Michael Primm Extensible Sensor Monitoring, Alert Processing and Notification system and Method
CN101309306A (zh) * 2008-07-16 2008-11-19 哈尔滨工业大学 在Modbus通信网络中为从节点设备分配地址的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060238339A1 (en) * 2003-04-14 2006-10-26 Michael Primm Extensible Sensor Monitoring, Alert Processing and Notification system and Method
CN101309306A (zh) * 2008-07-16 2008-11-19 哈尔滨工业大学 在Modbus通信网络中为从节点设备分配地址的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
赵威: "基于ModbusRTU协议转换器的监控器网络查询控制系统", 《中国优秀硕士学位论文全文数据库信息科技辑》, 15 November 2008 (2008-11-15) *
陈青: "侦听模式在数据采集中的应用", 《冶金自动化》, 31 August 2007 (2007-08-31) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716420A (zh) * 2014-01-03 2014-04-09 西南大学 Modbus ASCII从站自动获取站地址方法及从站
CN107168045A (zh) * 2017-06-26 2017-09-15 中国电子信息产业集团有限公司第六研究所 一种基于EtherCAT的通信冗余控制系统
CN107168045B (zh) * 2017-06-26 2020-12-11 中国电子信息产业集团有限公司第六研究所 一种基于EtherCAT的通信冗余控制系统

Also Published As

Publication number Publication date
CN103297307B (zh) 2016-09-14

Similar Documents

Publication Publication Date Title
CN103634150B (zh) 一种冗余的高安全性can总线通信方法
CN101626333B (zh) 一种can总线系统及其中的应用层通讯方法
CN103399546B (zh) 三冗余控制方法及系统
CN103248547A (zh) Modbus RTU从站快速捕获数据的方法及从站
CN105450489A (zh) 输出优先实现最短报文的HEBus高效现场总线系统及通信方法
CN101447894B (zh) 识别分节点物理地址、网络配置及维护方法、网络系统
CN102347879A (zh) 基于环型以太网和辅助网络的d-bus高速总线技术
CN105187283A (zh) 基于EtherCAT协议的工业控制网络从站通信方法及装置
CN109932966B (zh) 一种基于m-lvds总线实时高效数据传输方法
CN106681949A (zh) 基于一致性加速接口的直接内存操作实现方法
CN104866528A (zh) 多平台数据采集方法及系统
CN105700859A (zh) 一种基于网络处理器实现硬件表遍历的方法及装置
CN101945031A (zh) 一种高速现场总线从站相互通信的实现方法
CN103186440A (zh) 检测子卡在位的方法、装置及系统
CN101895462B (zh) 串行通信网关
CN105307282B (zh) 一种防止多用户终端接入冲突的方法及装置
CN103297307A (zh) Modbus ASCII从站快速捕获数据的方法及从站
CN103678423A (zh) 数据文件导入系统、装置及方法
CN101561795A (zh) 一种分布式系统中的数据同步方法及装置
CN103997509A (zh) 一种基于面向服务的体系结构的服务处理方法及装置
CN109120731B (zh) 一种通用型通讯方法、系统及装置
CN101707589A (zh) 用于多端口网卡的端口自动切换实现方法和装置
CN202093355U (zh) 一种plc以太网通讯模件
CN201773394U (zh) 一种profibus总线接口装置
CN111010286A (zh) 基于串行总线的智能注册方法、装置、电子设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 402460 No. 160 Changyuan Street College Road, Rongchang District, Chongqing

Patentee after: Southwest University

Address before: 400715 No. 2, Tiansheng Road, Beibei District, Chongqing

Patentee before: Southwest University

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 400715 No. 2, Tiansheng Road, Beibei District, Chongqing

Patentee after: Southwest University

Address before: 402460 No. 160 Changyuan Street College Road, Rongchang District, Chongqing

Patentee before: Southwest University