一种基于单环网的485多主通信方法和系统
技术领域
本发明涉及自动化领域、通信领域,具体涉及一种基于单环网的485多主通信方法和系统。
背景技术
485通信网络是一种采用差分平衡式传输的数字多点系统,其一般采用的是主从的通信方式,即一个主机带多个从机,同时,主机和多个从机之间采用半双工的通信模式,因此,485通信网络以其低成本、设计简单的优势得到广泛应用。
目前,485通信网络中采用半双工通信技术只能采用主机询问从机应答的方式,即主机逐一轮询总线上的从机,从机按照轮询机制回应主机,从而避免485通信网络中多个主体同时处于发送状态而造成总线上信号的冲突。但是,当单个主机挂接的从机数量较多时,采用轮询机制会导致轮询时间长,通信速度慢,无法满足数据的快速交换,进而使得通信效率低。
授权公告号为CN105591857B的专利公开了一种485多主通信的方法和装置该485多主通信的方法包括第一节点确定空闲等待时间,所述空闲等待时间为所述第一节点从总线上无数据传输到发送数据所等待的时间;检测在所述空闲等待时间内所述总线上是否有数据传输;若没有,则所述第一节点在所述空闲等待时间届满时发送数据。
这种485多主通信方法其实是一种纯软件的方法,每个节点通过检测总线空闲时间进行主动发送,当出现总线冲突时,又通过随机退避延时来解决节点同时发送的冲突问题。该方案由于没有时钟的同步机制,且每个节点的退避延时时间是随机的,当总线上节点数量较多时,任然很容易出现总线冲突的问题,导致485通信效率降低,在某种极端的情况下,有可能会导致总线上某些节点发送数据时永远会冲突的问题,因此使用该方法构建的系统存在不稳定因素。
授权公告号CN105677608B的专利公开了一种多主RS485总线仲裁方法及系统,该多主RS485总线仲裁方法应用于一个三线制RS485总线中,该三线制RS485总线包括两条信号传输线并设有一仲裁信号线COD,该方法包括以下步骤:1)设定总线占用检测机制,2)控制需要发送数据的节点按照总线占用检测机制对总线进行抢占;其中,总线占用检测机制包括:待发送数据的节点首先监听总线是否忙,如总线不忙,则占用总线进行数据发送并将仲裁信号线COD设为占用状态,当节点发送完数据后,释放仲裁信号线COD并将其由占用状态改为空闲状态,如总线忙,则等待预设时间后再次监听总线是否忙。该方法及系统较为适合事件性的数据发送场合,使得需要发送的关键信息可以及时传送。
这种方法是一种硬件配合软件解决485总线冲突的方法,通过将2线制485总线改为3线制485总线,增加的一根线为总线仲裁线,每个节点根据自己的空闲延时时间及总线仲裁线的状态判断是否可以发送数据。该方法增加了硬件设计的复杂性,且仲裁线的设计会影响总线的传输距离;另外用于仲裁线是所有节点共有的,当多个节点同时需要发送数据而抢占仲裁线时,每个节点的总线空闲时间是根据节点地址确定的,节点地址小的延时小,越容易占有485总线资源,节点地址大的延时大,越不容易占有485总线资源,因此在使用该方法的系统中,地址大的节点数据传输效率会比地址小的低。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于单环网的485多主通信方法和系统。
一种基于单环网的485多主通信系统,包括若干个基于单环网的485多主通信装置,所述装置设置有两个485通信端口:用于发送数据报文的发送端口、用于接收数据报文的接收端口;
所述若干个基于单环网的485多主通信装置两两相连,构成一个环形网络,且满足:
前一装置的发送端口与后一装置的接收端口相连;
在所述环形网络上,数据报文只能朝一个方向发送,形成一个单向的数据流网络;
所述每个基于单环网的485多主通信装置均有一个与其对应的地址。
可选地,所述装置包括:依次连接的数据触发方式配置模块、数据目的地址配置模块、数据主动发送模块和数据接收处理模块;
所述数据触发方式配置模块,用于对本装置主动发送数据报文的触发方式进行配置;
所述数据目的地址配置模块,用于有对需要发送的数据报文进行目的地址配置,保证不同的数据报文可以发送到不同地址的装置中;
所述数据主动发送模块,用于根据触发配置模块配置的触发方式和目的地址配置模块配置的目的地址,主动从本装置的发送端口发送数据报文;
所述数据接收处理模块,用于对所述装置的接收端口接收的数据报文进行源地址和目的地址判断,并根据判断结果做出转发处理或响应处理或消除报文处理。
可选地,所述数据接收处理模块进一步包括:
转发处理子模块、响应处理子模块、消除报文处理子模块、判断子模块;
所述判断子模块,用于判断被接收的数据报文的源地址或目的地址是否是本装置地址,以及用于判断被接收的数据报文是否需要被响应;
若接收的数据报文的源地址不是本装置地址且目的地址也不是本装置地址,所述转发处理子模块将该数据报文直接从本装置的发送端口转发出去;
若接收的数据报文的目的地址是本装置地址,且报文内容需要响应,所述响应处理子模块根据需要响应的内容组织成一帧响应报文,并设置该响应报文的目的地址为请求报文源地址,通过本装置的发送端口将响应报文发送出去;
若接收的数据报文的源地址是本装置地址,或者目的地址是本装置地址,且为不需要响应的报文,所述消除报文处理子模块将源地址为本装置地址的报文直接丢弃。
可选地,所述装置发送的报文格式中包含2字节前导码字段、1字节目的地址字段、1字节源地址字段、不定字节数的应用数据和2字节的CRC校验字段。
可选地,所述系统中基于单环网的485多主通信装置的数量不超过254个。
可选地,所述数据目的地址配置模块可对多个数据报文进行目的地址配置。
可选地,所述接收端口只负责接收数据,不允许发送数据;所述发送端口只负责发送数据,不允许接收数据。
一种基于单环网的485多主通信方法,应用于上述的系统,包括以下步骤:
S1:设置一种基于单环网的485多主通信系统,其包括若干个基于单环网的485多主通信装置,所述装置设置有两个485通信端口:用于发送数据报文的发送端口、用于接收数据报文的接收端口;
所述若干个基于单环网的485多主通信装置两两相连,构成一个环形网络,且满足:
前一装置的发送端口与后一装置的接收端口相连;
在这个环形网络上,数据报文只能朝一个方向发送,形成一个单向的数据流网络;
所述每个基于单环网的485多主通信装置均有一个与其对应的地址;
所述装置包括:依次连接数据触发方式配置模块、数据目的地址配置模块、数据主动发送模块和数据接收处理模块;所述数据接收处理模块包括:转发处理子模块、响应处理子模块、消除报文处理子模块、判断子模块;
S2:将所述若干个基于单环网的485多主通信装置看作若干个节点;
将其中一个基于单环网的485多主通信装置作为源节点,另外一个基于单环网的485多主通信装置作为目的节点,源节点向目的节点发出请求报文;源节点与目的节点的之间通过环网上其它节点的转发实现数据交互。
可选地,所述步骤S2进一步包括:
每个基于单环网的485多主通信装置都将自身作为网络中的主设备,根据装置自身应用需要主动向自身的发送端口发送数据报文;
每个基于单环网的485多主通信装置的接收端口会收到来自与它相连的另外一个基于单环网的485多主通信装置发送的数据报文,所述装置根据数据报文中的源地址和目的地址进行判断,作出转发或响应或消除的操作。
可选地,所述“根据装置自身应用需要主动向自身的发送端口发送数据报文”,进一步包括:
所述数据触发方式配置模块对所述装置主动发送数据报文的触发方式进行配置;
所述数据目的地址配置模块对需要发送的数据报文进行目的地址配置,保证不同的数据报文可以发送到不同地址的装置中;
所述数据主动发送模块根据触发配置模块配置的触发方式和目的地址配置模块配置的目的地址,主动从所述装置的发送端口发送数据报文。
可选地,所述“所述装置需要根据数据报文中的源地址和目的地址进行判断,作出转发或响应或消除的操作”,进一包括:
S21:所述判断子模块判断被接收的数据报文的目的地址是否是本装置地址;若是,进入步骤S22;若否,进入步骤S23;
S22:所述判断子模块判断被接收的数据报文是否需要被响应;若否,则处理结束;若是,则所述响应处理子模块根据需要响应的内容组织成一帧响应报文,并设置该响应报文的目的地址为请求报文源地址,通过本装置的发送端口将响应报文发送出去;
S23:所述判断子模块判断被接收的数据报文的源地址是否是本装置地址;若是,则所述消除报文处理子模块将源地址为本装置地址的报文直接丢弃;若否,则所述转发处理子模块将该数据报文直接从本装置的输出端口原样转发该述报文。
可选地,所述装置发送的数据报文格式中包含2字节前导码字段、1字节目的地址字段、1字节源地址字段、不定字节数的应用数据和2字节的CRC校验字段。
可选地,所述系统中基于单环网的485多主通信装置的数量不超过254个。
可选地,所述数据目的地址配置模块可对多个数据报文进行目的地址配置。
可选地,所述接收端口只负责接收数据,不允许发送数据;所述发送端口只负责发送数据,不允许接收数据。
与现有技术相比,本发明具有如下的有益效果:
本发明提出的一种基于单环网的多主485通信方法和装置,采用环网连接的方式,可以保证每个节点都是独占式的享有485总线,每个节点可以随时向总线上发送数据,而不需要任何延时退避,可以有效的提高总线的传输效率。
传统485总线不支持两个从节点之间交换数据,所有从节点只能与主节点进行数据交换,本系统可以解决传统485总线通信中出现的两个从节点之间不能直接通信的问题。在本系统中的所有节点都是对等实体,所有节点之间都可以进行数据的相互通信。
本发明提出的一种基于单环网的多主485通信方法和装置,可以在不需要额外设计复杂的总线监测仲裁电路的情况下,直接采用多节点并发的方式进行通信,从而有效解决传统485通信效率低的问题。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明具体实施例一种基于单环网的485多主通信系统的网络拓扑结构图;
图2是本发明具体实施例一种基于单环网的485多主通信方法的数据接收处理流程图;
图3为本发明具体实施例的基于单环网的485多主通信装置的模块连接示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
参见图1,一种基于单环网的485多主通信系统,包括N个基于单环网的485多主通信装置,其中N为正整数。
所述装置设置有两个485通信端口:用于发送数据报文的发送端口、用于接收数据报文的接收端口;这里称发送端口为端口B,接收端口为端口A。
端口A只负责接收数据,不允许发送数据;端口B只负责发送数据,不允许接收数据。
所述若干个基于单环网的485多主通信装置两两通过485总线相连,构成一个环形网络,且满足:
前一装置的发送端口与后一装置的接收端口相连;
在所述环形网络上,数据报文只能朝一个方向发送,形成一个单向的数据流网络;
所述每个基于单环网的485多主通信装置均有一个与其对应的地址。
如图3,所述装置包括:依次连接的数据触发方式配置模块、数据目的地址配置模块、数据主动发送模块和数据接收处理模块;
所述数据触发方式配置模块,用于对本装置主动发送数据报文的触发方式进行配置;该述触发方式包括定时触发方式、数据变化触发方式等。
所述数据目的地址配置模块,用于有对需要发送的数据报文进行目的地址配置,保证不同的数据报文可以发送到不同地址的装置中。所述数据目的地址配置模块可对多个数据报文进行目的地址配置。
所述数据主动发送模块,用于根据触发配置模块配置的触发方式和目的地址配置模块配置的目的地址,主动从本装置的发送端口发送数据报文。
这里的“主动”是指由本装置首先发起。
所述数据接收处理模块,用于对所述装置的接收端口接收的数据报文进行源地址和目的地址判断,并根据判断结果做出转发处理或响应处理或消除报文处理。
所述数据接收处理模块进一步包括:
转发处理子模块、响应处理子模块、消除报文处理子模块、判断子模块;
所述判断子模块,用于判断被接收的数据报文的源地址或目的地址是否是本装置地址,以及用于判断被接收的数据报文是否需要被响应;
若接收的数据报文的源地址不是本装置地址且目的地址也不是本装置地址,所述转发处理子模块将该数据报文直接从本装置的发送端口转发出去;
若接收的数据报文的目的地址是本装置地址,且报文内容需要响应,所述响应处理子模块根据需要响应的内容组织成一帧响应报文,并设置该响应报文的目的地址为请求报文源地址,通过本装置的发送端口将响应报文发送出去;对于目的地址是本装置的报文进行应用数据处理。
其中,所述装置发送的报文格式中包含2字节前导码字段、1字节目的地址字段、1字节源地址字段、不定字节数的应用数据和2字节的CRC校验字段。
所述系统中基于单环网的485多主通信装置的数量不超过254个。
一种基于单环网的485多主通信方法,应用于上述系统,包括以下步骤:
S1:建立一种基于单环网的485多主通信系统,其包括若干个基于单环网的485多主通信装置,所述装置设置有两个485通信端口:用于发送数据报文的发送端口、用于接收数据报文的接收端口;
所述若干个基于单环网的485多主通信装置两两相连,构成一个环形网络,且满足:
前一装置的发送端口与后一装置的接收端口相连;
在这个环形网络上,数据报文只能朝一个方向发送,形成一个单向的数据流网络;
所述每个基于单环网的485多主通信装置均有一个与其对应的地址;
所述装置包括:依次连接的数据触发方式配置模块、数据目的地址配置模块、数据主动发送模块和数据接收处理模块;所述数据接收处理模块包括:转发处理子模块、响应处理子模块、消除报文处理子模块、判断子模块;
S2:将所述若干个基于单环网的485多主通信装置看作若干个节点;
将其中一个基于单环网的485多主通信装置作为源节点,另外一个基于单环网的485多主通信装置作为目的节点,源节点向目的节点发出请求报文;源节点与目的节点的之间通过环网上其它节点的转发实现数据交互。
所述步骤S2进一步包括:
每个基于单环网的485多主通信装置都将自身作为网络中的主设备,根据装置自身应用需要主动向自身的发送端口发送数据报文;因为数据只能朝一个方向发送,因此每个装置在发送数据时都是独享整个总线,不会出现总线冲突的情况。
每个基于单环网的485多主通信装置的接收端口会收到来自与它相连的另外一个基于单环网的485多主通信装置发送的数据报文,所述装置根据数据报文中的源地址和目的地址进行判断,作出转发或响应的操作,保证整个网络中装置间的正常数据交互;或对数据报文进行消除的操作,防止报文一直在环网中转发。
其中,所述“根据装置自身应用需要主动向自身的发送端口发送数据报文”,进一步包括:
所述数据触发方式配置模块对所述装置主动发送数据报文的触发方式进行配置;
所述数据目的地址配置模块对需要发送的数据报文进行目的地址配置,保证不同的数据报文可以发送到不同地址的装置中;所述数据目的地址配置模块可对多个数据报文进行目的地址配置。
所述数据主动发送模块根据触发配置模块配置的触发方式和目的地址配置模块配置的目的地址,主动从所述装置的发送端口发送数据报文。
其中,所述“所述装置需要根据数据报文中的源地址和目的地址进行判断,作出转发或响应或消除的操作”,进一包括:
所述“所述装置需要根据数据报文中的源地址和目的地址进行判断,作出转发或响应或消除的操作”,进一包括:
S21:所述判断子模块判断被接收的数据报文的目的地址是否是本装置地址;若是,进入步骤S22;若否,进入步骤S23;
S22:所述判断子模块判断被接收的数据报文是否需要被响应;若否,则处理结束;若是,则所述响应处理子模块根据需要响应的内容组织成一帧响应报文,并设置该响应报文的目的地址为请求报文源地址,通过本装置的发送端口将响应报文发送出去;
S23:所述判断子模块判断被接收的数据报文的源地址是否是本装置地址;若是,则所述消除报文处理子模块将源地址为本装置地址的报文直接丢弃;若否,则所述转发处理子模块将该数据报文直接从本装置的输出端口原样转发该述报文。
其中,所述装置发送的数据报文格式中包含2字节前导码字段、1字节目的地址字段、1字节源地址字段、不定字节数的应用数据和2字节的CRC校验字段。所述系统中基于单环网的485多主通信装置的数量不超过254个。
本发明具体实施例采用环网连接的方式,可以保证每个节点都是独占式的享有485总线,可以最大限度的提高485通信效率;解决传统485通信中从机不能直接相互通信的问题,实现系统中的所有节点都是对等实体,所有节点之间都可以进行数据的相互通信。
本发明具体实施例以485总线为例,实际应用时,其它主从通信的其他总线都可以使用此系统和方法提高通信效率。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。