2024年9月26日发(作者:进信鸿)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.4
(22)申请日 2021.09.28
(71)申请人 中孚信息股份有限公司
地址 250101 山东省济南市高新区经十路7000号汉峪金谷A1-5号楼25层
(72)发明人 李栋 郭昆 韩建鹏 魏兰磊 王寿超
(74)专利代理机构 37205 济南舜源专利事务所有限公司
代理人 赵阳
(51)
H04L5/14(20060101)
H04L12/40(20060101)
H04L12/417(20060101)
(10)申请公布号 CN 113904762 A
(43)申请公布日 2022.01.07
权利要求说明书 说明书 幅图
(54)发明名称
一种带环形缓冲区的全双工485总
线通信系统及方法
(57)摘要
本发明提出的一种带环形缓冲区的
全双工485总线通信系统及方法,所述系
统包括:一个主机和多个从机,主机上的
发送端设有485发送总线,主机的接收端
设有485接收总线,所述从机的接收端设
有环形接收缓冲区,从机的发送端设有环
形发送缓冲区,环形接收缓冲区与485发
送总线数据连接,环形发送缓冲区与485
接收总线数据连接;所述485发送总线,
用于向从机发送主机的命令;所述485接
收总线,用于传输从机的响应数据、以及
总线监听和总线控制命令;所述环形发送
缓冲区,用于缓存从机处理主机发出的命
令后生成的响应帧。本发明能够解决现有
485总线的轮询机制无法处理总线竞争的
情况,进一步解决目前以硬件方式处理竞
争问题带来的系统复杂与成本昂贵的问
题。
法律状态
法律状态公告日
法律状态信息
2022-01-25
实质审查的生效
2022-01-07
公开
2023-09-26
授权
法律状态
实质审查的生效
公开
发明专利权授予
权 利 要 求 说 明 书
1.一种带环形缓冲区的全双工485总线通信系统,其特征在于,包括:一个主机和多个
从机,主机上的发送端设有485发送总线,主机的接收端设有485接收总线,所述从机
的接收端设有环形接收缓冲区,从机的发送端设有环形发送缓冲区,环形接收缓冲区
与485发送总线数据连接,环形发送缓冲区与485接收总线数据连接;
所述485发送总线,用于向从机发送主机的命令;
所述485接收总线,用于传输从机的响应数据、以及总线监听和总线控制命令;
所述环形接收缓冲区,用于避免高并发时的丢包;
所述环形发送缓冲区,用于缓存从机处理主机发出的命令后生成的响应帧。
2.一种带环形缓冲区的全双工485总线通信方法,其特征在于,包括:
将N台从机根据485接收总线的使用权优先级由高至低依次编号为一号从机至N
号从机;
总线系统上电后,一号从机最先抢占485接收总线的使用权并通过485接收总线向
主机发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权;二号
从机进行延时等待,当主机发出485接收总线的使用权后二号从机顺次抢占总线,并
通过485接收总线向主机发送环形发送缓冲区中的响应帧,发送完成后交出485接
收总线的使用权;
重复上述步骤直至N号从机的环形发送缓冲区中的响应帧发送完成,发送完成交出
485接收总线的使用权,主机向一号从机发出485接收总线的使用权;
主机对485接收总线的使用权的发送过程进行实时监控。
3.根据权利要求2所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述一号从机最先抢占485接收总线的使用权后,通过485接收总线向主机和其他从
机广播总线使用权声明。
4.根据权利要求3所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述主机端的接收端默认处于接收状态,主机接收到从机发送的总线使用权声明后,不
做处理,继续等待接收。
5.根据权利要求2所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述一号从机最先抢占485接收总线的使用权并通过485接收总线向主机发送环形发
送缓冲区中的响应帧,发送完成后交出485接收总线的使用权具体包括:
一号从机最先抢占485接收总线的使用权,通过485接收总线向主机发送缓冲区中
的响应帧,完成1帧数据响应或发现缓冲区已空后,立即向485接收总线发出总线使
用权接力令牌,总线使用权接力令牌的接收地址设置为二号从机。
6.根据权利要求2所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述二号从机进行延时等待包括:
若延时等待时间内,二号从机收到高优先级从机的总线使用权声明,二号从机将停止
延时等待计时且不会触发抢占总线行为,二号从机将持续等待,直到接收到总线使用
权接力令牌后,顺次抢占总线;
若延时等待时间内,二号从机未收到高优先级从机的总线使用权声明,二号从机将抢
占总线,并广播总线使用权声明。
7.根据权利要求5所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述主机对485接收总线的使用权的发送过程进行实时监控,具体为:
主机对总线使用权接力令牌传递过程进行监控,总线使用权接力令牌传递后,若从机
未广播总线使用权声明,表明从机异常,主机将切除异常从机。
8.根据权利要求7所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述主机将切除异常从机具体包括:
主机不再发送命令给异常从机,若异常从机为n号从机,主机命令n-1号从机重新传
递总线使用权接力令牌,并直接将总线使用权接力令牌传递给n+1号从机。
说 明 书
技术领域
本发明涉及通信技术领域,更具体的说是涉及一种带环形缓冲区的全双工485总线
通信系统及方法。
背景技术
传统的RS-485总线系统大多采用半双工的形式,系统中有一个主机和多个从机。为
了避免竞争,主机通过轮询方式向从机发送命令,对应从机收到命令,获取总线使用权,
并处理命令和响应命令,过程完成后重新将总线使用权返还主机。在等待总线处理
的过程中,其他从机只能等待,总线利用率低。
为了提高总线利用率和解决总线竞争问题,人们做出了相关努力,引入总线监听。但
是,总线监听通常需要增加许多硬件电路,成本较高。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种带环形缓冲区的全双工485
总线通信系统及方法,能够解决现有485总线的轮询机制无法处理总线竞争的情况,
进一步解决目前以硬件方式处理竞争问题带来的系统复杂与成本昂贵的问题。
本发明为实现上述目的,通过以下技术方案实现:
一种带环形缓冲区的全双工485总线通信系统,包括:一个主机和多个从机,主机上的
发送端设有485发送总线,主机的接收端设有485接收总线,所述从机的接收端设有
环形接收缓冲区,从机的发送端设有环形发送缓冲区,环形接收缓冲区与485发送总
线数据连接,环形发送缓冲区与485接收总线数据连接;所述485发送总线,用于向从
机发送主机的命令;所述485接收总线,用于传输从机的响应数据、以及总线监听和
总线控制命令;所述环形接收缓冲区,用于避免高并发时的丢包;所述环形发送缓冲区,
用于缓存从机处理主机发出的命令后生成的响应帧。
相应的,本发明还公开了一种带环形缓冲区的全双工485总线通信方法,包括:
将N台从机根据485接收总线的使用权优先级由高至低依次编号为一号从机至N
号从机;
总线系统上电后,一号从机最先抢占485接收总线的使用权并通过485接收总线向
主机发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权;二号
从机进行延时等待,当主机发出485接收总线的使用权后二号从机顺次抢占总线,并
通过485接收总线向主机发送环形发送缓冲区中的响应帧,发送完成后交出485接
收总线的使用权;
重复上述步骤直至N号从机的环形发送缓冲区中的响应帧发送完成,发送完成交出
485接收总线的使用权,主机向一号从机发出485接收总线的使用权;
主机对485接收总线的使用权的发送过程进行实时监控。
进一步,所述一号从机最先抢占485接收总线的使用权后,通过485接收总线向主机
和其他从机广播总线使用权声明。
进一步,所述主机端的接收端默认处于接收状态,主机接收到从机发送的总线使用权
声明后,不做处理,继续等待接收。
进一步,所述一号从机最先抢占485接收总线的使用权并通过485接收总线向主机
发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权具体包括:
一号从机最先抢占485接收总线的使用权,通过485接收总线向主机发送缓冲区中
的响应帧,完成1帧数据响应或发现缓冲区已空后,立即向485接收总线发出总线使
用权接力令牌,总线使用权接力令牌的接收地址设置为二号从机。
进一步,所述二号从机进行延时等待包括:
若延时等待时间内,二号从机收到高优先级从机的总线使用权声明,二号从机将停止
延时等待计时且不会触发抢占总线行为,二号从机将持续等待,直到接收到总线使用
权接力令牌后,顺次抢占总线;
若延时等待时间内,二号从机未收到高优先级从机的总线使用权声明,二号从机将抢
占总线,并广播总线使用权声明。
进一步,所述主机对485接收总线的使用权的发送过程进行实时监控,具体为:
主机对总线使用权接力令牌传递过程进行监控,总线使用权接力令牌传递后,若从机
未广播总线使用权声明,表明从机异常,主机将切除异常从机。
进一步,所述主机将切除异常从机具体包括:
主机不再发送命令给异常从机,若异常从机为n号从机,主机命令n-1号从机重新传
递总线使用权接力令牌,并直接将总线使用权接力令牌传递给n+1号从机。
对比现有技术,本发明有益效果在于:本发明提供了一种带环形缓冲区的全双工485
总线通信系统及方法,使485接收总线有序的切换总线使用权,不会产生竞争,且与传
统485轮询方式相比,总线占用过程不需要等待命令处理完成,提高了响应效率和总
线利用率。整个过程不需要增加新的硬件成本,系统简单易用。
由此可见,本发明与现有技术相比,本发明有效解决了现有485总线的轮询机制无法
处理总线竞争的情况,进一步地,用软件方式解决目前以硬件方式处理竞争问题带来
的系统复杂与成本昂贵的问题。本发明具有突出的实质性特点和显著的进步,其实
施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有
技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是
本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可
以根据提供的附图获得其他的附图。
附图1是本发明具体实施例一的系统结构图。
附图2是本发明具体实施例二的方法流程图。
附图3是本发明具体实施例三的主机侧实现的逻辑原理图。
附图4是本发明具体实施例三的从机侧实现的逻辑原理图。
图中,1为主机,2为从机,3为485发送总线,4为485接收总线,5为环形接收缓冲区,6
为环形发送缓冲区。
具体实施方式
下面结合附图对本发明的具体实施方式做出说明。
实施例一:
如图1所示,本实施例公开了一种带环形缓冲区的全双工485总线通信系统,包括:一
个主机1和多个从机2,主机上的发送端设有485发送总线3,主机的接收端设有485
接收总线4,所述从机的接收端设有环形接收缓冲区5,从机的发送端设有环形发送缓
冲区6,环形接收缓冲区5与485发送总线数据连接3,环形发送缓冲区6与485接收
总线数据4连接;所述485发送总线3,用于向从机2发送主机1的命令;所述485接
收总线4,用于传输从机2的响应数据、以及总线监听和总线控制命令;所述环形接
收缓冲区6,用于避免高并发时的丢包;所述环形发送缓冲区5,用于缓存从机处理主
机发出的命令后生成的响应帧。
通过上述结构可知,本系统包括一个全双工485总线,即一个485发送总线1(分别占
用主机的一组串口UART1和从机的一组串口UART1)和一个485接收总线2(分别
占用主机的一组串口UART2和从机的一组串口UART2)。一个主机,n个从机。其
中,主机1采用T680单片机,从机2采用STM32R8T6单片机。
通信网络采用全双工总线结构,从机2接收端一直处于接收状态,可以随时接收主机
1的命令。从机2接收端设有从机的环形接收缓冲区5,有效避免高并发时的丢包。
从机2会对接收到的命令进行处理。处理完成后,各从机不会立即响应,而是将响应
帧缓存在从机的环形发送缓冲区6中。
其中,环形接收缓冲区5和环形发送缓冲区6均为软件方法,在STM32R8T6芯片内
部实现,无需新增硬件。
实施例二:
相应的,如图2所示,本实施例公开了一种带环形缓冲区的全双工485总线通信方法,
包括如下步骤:
S1:将N台从机根据485接收总线的使用权优先级由高至低依次编号为一号从机至
N号从机。
S2:总线系统上电后,一号从机最先抢占485接收总线的使用权并通过485接收总线
向主机发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权。
总线系统上电启动后,一号从机会最先抢占485接收总线的使用权,并通过485接收
总线向主机和其他从机广播总线使用权声明。由于通信网络采用全双工总线结构,
主机接收端默认处于接收状态,主机接收到从机总线使用权声明后,不做处理,继续等
待接收。一号从机开始通过485接收总线向主机发送环形发送缓冲区中的响应帧,
完成1帧数据响应或发现缓冲区已空后,立即向485接收总线发出总线使用权接力
令牌,令牌接收地址设置为次优先级的二号从机。
S3:二号从机进行延时等待,当主机发出485接收总线的使用权后二号从机顺次抢占
总线,并通过485接收总线向主机发送环形发送缓冲区中的响应帧,发送完成后交出
485接收总线的使用权。
二号从机的优先级次于一号从机,它尝试在延时一定时间后抢占总线。若延时时间
内,收到高优先级从机的总线使用权声明,二号从机将停止计时且不会触发抢占总线
行为,二号从机将持续等待,直到接收到总线使用权接力令牌后,顺次抢占总线。若延
时时间内,未收到高优先级从机的总线使用权声明,二号从机将抢占总线,并广播总线
使用权声明。
S4:重复步骤S2-S3直至N号的环形发送缓冲区中的响应帧发送完成,发送完成交出
485接收总线的使用权,主机向一号从机发出485接收总线的使用权。
本步骤将总线使用权接力令牌顺次传递到更低优先级的从机。特别地,最低优先级
的N号从机将把总线使用权接力令牌顺次交还给一号从机。
其中,主机对485接收总线的使用权的发送过程进行实时监控。具体来说,总线使用
权接力令牌传递过程受主机监控。令牌传递后,若从机未广播总线使用权声明,表明
从机异常,主机将切除异常从机,方法是:若异常从机为n号从机,不再发送命令给n号
从机,主机命令n-1号从机重新传递总线使用权接力令牌,并直接将总线使用权接力
令牌传递给n+1号从机,保证总线使用权接力令牌传递过程闭环。
实施例三:
基于实施例二,本实施例还公开了一种带环形缓冲区的全双工485总线通信方法,具
体从主机侧和从机侧两个方面进行部署:
1、主机侧实现的逻辑如图3所示。
主机通过访问485接收总线,不断检查各从机总线使用权接力情况是否异常,若发生
异常,则不再发送关于异常从机的命令帧,且知会令牌传递跳过命令帧,通过485发送
总线发送正常从机的命令帧;若未见从机异常,则直接通过485发送总线发送正常从
机的命令帧。
2、从机侧实现的逻辑如图4所示。
从机根据初始优先级确定一个计时,计时的计算公式为:500*(n-1)ms,其中n为从机号。
当计时时间到达后,该从机抢占总线,并通过485接收总线广播总线使用权声明。接
着判断该从机发送端的环形发送缓冲区中是否有有效数据,若有有效数据,则通过
485接收总线完成1帧数据响应。接着交出总线使用权接力令牌给下一台正常的从
机,等待接收新的总线使用权接力令牌,以再次使用总线;若无有效数据,则直接交出
总线使用权接力令牌给下一台正常的从机,等待接收新的总线使用权接力令牌,以再
次使用总线。
当计时时间为到达,通过485接收总线接收到其他从机的总线使用权声明,则停止计
时,等待接收新的总线使用权接力令牌,以使用总线。
通过主机侧和从机侧的上述逻辑处理,485接收总线将有序的切换总线使用权,不会
产生竞争,且与传统485轮询方式相比,总线占用过程不需要等待命令处理完成,提高
了响应效率和总线利用率。整个过程不需要增加新的硬件成本,系统简单易用。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过
其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的
划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或
组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,
所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统
或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示
的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多
个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例
方案的目的。
结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本
发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本
领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限
定的范围。
2024年9月26日发(作者:进信鸿)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.4
(22)申请日 2021.09.28
(71)申请人 中孚信息股份有限公司
地址 250101 山东省济南市高新区经十路7000号汉峪金谷A1-5号楼25层
(72)发明人 李栋 郭昆 韩建鹏 魏兰磊 王寿超
(74)专利代理机构 37205 济南舜源专利事务所有限公司
代理人 赵阳
(51)
H04L5/14(20060101)
H04L12/40(20060101)
H04L12/417(20060101)
(10)申请公布号 CN 113904762 A
(43)申请公布日 2022.01.07
权利要求说明书 说明书 幅图
(54)发明名称
一种带环形缓冲区的全双工485总
线通信系统及方法
(57)摘要
本发明提出的一种带环形缓冲区的
全双工485总线通信系统及方法,所述系
统包括:一个主机和多个从机,主机上的
发送端设有485发送总线,主机的接收端
设有485接收总线,所述从机的接收端设
有环形接收缓冲区,从机的发送端设有环
形发送缓冲区,环形接收缓冲区与485发
送总线数据连接,环形发送缓冲区与485
接收总线数据连接;所述485发送总线,
用于向从机发送主机的命令;所述485接
收总线,用于传输从机的响应数据、以及
总线监听和总线控制命令;所述环形发送
缓冲区,用于缓存从机处理主机发出的命
令后生成的响应帧。本发明能够解决现有
485总线的轮询机制无法处理总线竞争的
情况,进一步解决目前以硬件方式处理竞
争问题带来的系统复杂与成本昂贵的问
题。
法律状态
法律状态公告日
法律状态信息
2022-01-25
实质审查的生效
2022-01-07
公开
2023-09-26
授权
法律状态
实质审查的生效
公开
发明专利权授予
权 利 要 求 说 明 书
1.一种带环形缓冲区的全双工485总线通信系统,其特征在于,包括:一个主机和多个
从机,主机上的发送端设有485发送总线,主机的接收端设有485接收总线,所述从机
的接收端设有环形接收缓冲区,从机的发送端设有环形发送缓冲区,环形接收缓冲区
与485发送总线数据连接,环形发送缓冲区与485接收总线数据连接;
所述485发送总线,用于向从机发送主机的命令;
所述485接收总线,用于传输从机的响应数据、以及总线监听和总线控制命令;
所述环形接收缓冲区,用于避免高并发时的丢包;
所述环形发送缓冲区,用于缓存从机处理主机发出的命令后生成的响应帧。
2.一种带环形缓冲区的全双工485总线通信方法,其特征在于,包括:
将N台从机根据485接收总线的使用权优先级由高至低依次编号为一号从机至N
号从机;
总线系统上电后,一号从机最先抢占485接收总线的使用权并通过485接收总线向
主机发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权;二号
从机进行延时等待,当主机发出485接收总线的使用权后二号从机顺次抢占总线,并
通过485接收总线向主机发送环形发送缓冲区中的响应帧,发送完成后交出485接
收总线的使用权;
重复上述步骤直至N号从机的环形发送缓冲区中的响应帧发送完成,发送完成交出
485接收总线的使用权,主机向一号从机发出485接收总线的使用权;
主机对485接收总线的使用权的发送过程进行实时监控。
3.根据权利要求2所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述一号从机最先抢占485接收总线的使用权后,通过485接收总线向主机和其他从
机广播总线使用权声明。
4.根据权利要求3所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述主机端的接收端默认处于接收状态,主机接收到从机发送的总线使用权声明后,不
做处理,继续等待接收。
5.根据权利要求2所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述一号从机最先抢占485接收总线的使用权并通过485接收总线向主机发送环形发
送缓冲区中的响应帧,发送完成后交出485接收总线的使用权具体包括:
一号从机最先抢占485接收总线的使用权,通过485接收总线向主机发送缓冲区中
的响应帧,完成1帧数据响应或发现缓冲区已空后,立即向485接收总线发出总线使
用权接力令牌,总线使用权接力令牌的接收地址设置为二号从机。
6.根据权利要求2所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述二号从机进行延时等待包括:
若延时等待时间内,二号从机收到高优先级从机的总线使用权声明,二号从机将停止
延时等待计时且不会触发抢占总线行为,二号从机将持续等待,直到接收到总线使用
权接力令牌后,顺次抢占总线;
若延时等待时间内,二号从机未收到高优先级从机的总线使用权声明,二号从机将抢
占总线,并广播总线使用权声明。
7.根据权利要求5所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述主机对485接收总线的使用权的发送过程进行实时监控,具体为:
主机对总线使用权接力令牌传递过程进行监控,总线使用权接力令牌传递后,若从机
未广播总线使用权声明,表明从机异常,主机将切除异常从机。
8.根据权利要求7所述的带环形缓冲区的全双工485总线通信方法,其特征在于,所
述主机将切除异常从机具体包括:
主机不再发送命令给异常从机,若异常从机为n号从机,主机命令n-1号从机重新传
递总线使用权接力令牌,并直接将总线使用权接力令牌传递给n+1号从机。
说 明 书
技术领域
本发明涉及通信技术领域,更具体的说是涉及一种带环形缓冲区的全双工485总线
通信系统及方法。
背景技术
传统的RS-485总线系统大多采用半双工的形式,系统中有一个主机和多个从机。为
了避免竞争,主机通过轮询方式向从机发送命令,对应从机收到命令,获取总线使用权,
并处理命令和响应命令,过程完成后重新将总线使用权返还主机。在等待总线处理
的过程中,其他从机只能等待,总线利用率低。
为了提高总线利用率和解决总线竞争问题,人们做出了相关努力,引入总线监听。但
是,总线监听通常需要增加许多硬件电路,成本较高。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种带环形缓冲区的全双工485
总线通信系统及方法,能够解决现有485总线的轮询机制无法处理总线竞争的情况,
进一步解决目前以硬件方式处理竞争问题带来的系统复杂与成本昂贵的问题。
本发明为实现上述目的,通过以下技术方案实现:
一种带环形缓冲区的全双工485总线通信系统,包括:一个主机和多个从机,主机上的
发送端设有485发送总线,主机的接收端设有485接收总线,所述从机的接收端设有
环形接收缓冲区,从机的发送端设有环形发送缓冲区,环形接收缓冲区与485发送总
线数据连接,环形发送缓冲区与485接收总线数据连接;所述485发送总线,用于向从
机发送主机的命令;所述485接收总线,用于传输从机的响应数据、以及总线监听和
总线控制命令;所述环形接收缓冲区,用于避免高并发时的丢包;所述环形发送缓冲区,
用于缓存从机处理主机发出的命令后生成的响应帧。
相应的,本发明还公开了一种带环形缓冲区的全双工485总线通信方法,包括:
将N台从机根据485接收总线的使用权优先级由高至低依次编号为一号从机至N
号从机;
总线系统上电后,一号从机最先抢占485接收总线的使用权并通过485接收总线向
主机发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权;二号
从机进行延时等待,当主机发出485接收总线的使用权后二号从机顺次抢占总线,并
通过485接收总线向主机发送环形发送缓冲区中的响应帧,发送完成后交出485接
收总线的使用权;
重复上述步骤直至N号从机的环形发送缓冲区中的响应帧发送完成,发送完成交出
485接收总线的使用权,主机向一号从机发出485接收总线的使用权;
主机对485接收总线的使用权的发送过程进行实时监控。
进一步,所述一号从机最先抢占485接收总线的使用权后,通过485接收总线向主机
和其他从机广播总线使用权声明。
进一步,所述主机端的接收端默认处于接收状态,主机接收到从机发送的总线使用权
声明后,不做处理,继续等待接收。
进一步,所述一号从机最先抢占485接收总线的使用权并通过485接收总线向主机
发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权具体包括:
一号从机最先抢占485接收总线的使用权,通过485接收总线向主机发送缓冲区中
的响应帧,完成1帧数据响应或发现缓冲区已空后,立即向485接收总线发出总线使
用权接力令牌,总线使用权接力令牌的接收地址设置为二号从机。
进一步,所述二号从机进行延时等待包括:
若延时等待时间内,二号从机收到高优先级从机的总线使用权声明,二号从机将停止
延时等待计时且不会触发抢占总线行为,二号从机将持续等待,直到接收到总线使用
权接力令牌后,顺次抢占总线;
若延时等待时间内,二号从机未收到高优先级从机的总线使用权声明,二号从机将抢
占总线,并广播总线使用权声明。
进一步,所述主机对485接收总线的使用权的发送过程进行实时监控,具体为:
主机对总线使用权接力令牌传递过程进行监控,总线使用权接力令牌传递后,若从机
未广播总线使用权声明,表明从机异常,主机将切除异常从机。
进一步,所述主机将切除异常从机具体包括:
主机不再发送命令给异常从机,若异常从机为n号从机,主机命令n-1号从机重新传
递总线使用权接力令牌,并直接将总线使用权接力令牌传递给n+1号从机。
对比现有技术,本发明有益效果在于:本发明提供了一种带环形缓冲区的全双工485
总线通信系统及方法,使485接收总线有序的切换总线使用权,不会产生竞争,且与传
统485轮询方式相比,总线占用过程不需要等待命令处理完成,提高了响应效率和总
线利用率。整个过程不需要增加新的硬件成本,系统简单易用。
由此可见,本发明与现有技术相比,本发明有效解决了现有485总线的轮询机制无法
处理总线竞争的情况,进一步地,用软件方式解决目前以硬件方式处理竞争问题带来
的系统复杂与成本昂贵的问题。本发明具有突出的实质性特点和显著的进步,其实
施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有
技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是
本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可
以根据提供的附图获得其他的附图。
附图1是本发明具体实施例一的系统结构图。
附图2是本发明具体实施例二的方法流程图。
附图3是本发明具体实施例三的主机侧实现的逻辑原理图。
附图4是本发明具体实施例三的从机侧实现的逻辑原理图。
图中,1为主机,2为从机,3为485发送总线,4为485接收总线,5为环形接收缓冲区,6
为环形发送缓冲区。
具体实施方式
下面结合附图对本发明的具体实施方式做出说明。
实施例一:
如图1所示,本实施例公开了一种带环形缓冲区的全双工485总线通信系统,包括:一
个主机1和多个从机2,主机上的发送端设有485发送总线3,主机的接收端设有485
接收总线4,所述从机的接收端设有环形接收缓冲区5,从机的发送端设有环形发送缓
冲区6,环形接收缓冲区5与485发送总线数据连接3,环形发送缓冲区6与485接收
总线数据4连接;所述485发送总线3,用于向从机2发送主机1的命令;所述485接
收总线4,用于传输从机2的响应数据、以及总线监听和总线控制命令;所述环形接
收缓冲区6,用于避免高并发时的丢包;所述环形发送缓冲区5,用于缓存从机处理主
机发出的命令后生成的响应帧。
通过上述结构可知,本系统包括一个全双工485总线,即一个485发送总线1(分别占
用主机的一组串口UART1和从机的一组串口UART1)和一个485接收总线2(分别
占用主机的一组串口UART2和从机的一组串口UART2)。一个主机,n个从机。其
中,主机1采用T680单片机,从机2采用STM32R8T6单片机。
通信网络采用全双工总线结构,从机2接收端一直处于接收状态,可以随时接收主机
1的命令。从机2接收端设有从机的环形接收缓冲区5,有效避免高并发时的丢包。
从机2会对接收到的命令进行处理。处理完成后,各从机不会立即响应,而是将响应
帧缓存在从机的环形发送缓冲区6中。
其中,环形接收缓冲区5和环形发送缓冲区6均为软件方法,在STM32R8T6芯片内
部实现,无需新增硬件。
实施例二:
相应的,如图2所示,本实施例公开了一种带环形缓冲区的全双工485总线通信方法,
包括如下步骤:
S1:将N台从机根据485接收总线的使用权优先级由高至低依次编号为一号从机至
N号从机。
S2:总线系统上电后,一号从机最先抢占485接收总线的使用权并通过485接收总线
向主机发送环形发送缓冲区中的响应帧,发送完成后交出485接收总线的使用权。
总线系统上电启动后,一号从机会最先抢占485接收总线的使用权,并通过485接收
总线向主机和其他从机广播总线使用权声明。由于通信网络采用全双工总线结构,
主机接收端默认处于接收状态,主机接收到从机总线使用权声明后,不做处理,继续等
待接收。一号从机开始通过485接收总线向主机发送环形发送缓冲区中的响应帧,
完成1帧数据响应或发现缓冲区已空后,立即向485接收总线发出总线使用权接力
令牌,令牌接收地址设置为次优先级的二号从机。
S3:二号从机进行延时等待,当主机发出485接收总线的使用权后二号从机顺次抢占
总线,并通过485接收总线向主机发送环形发送缓冲区中的响应帧,发送完成后交出
485接收总线的使用权。
二号从机的优先级次于一号从机,它尝试在延时一定时间后抢占总线。若延时时间
内,收到高优先级从机的总线使用权声明,二号从机将停止计时且不会触发抢占总线
行为,二号从机将持续等待,直到接收到总线使用权接力令牌后,顺次抢占总线。若延
时时间内,未收到高优先级从机的总线使用权声明,二号从机将抢占总线,并广播总线
使用权声明。
S4:重复步骤S2-S3直至N号的环形发送缓冲区中的响应帧发送完成,发送完成交出
485接收总线的使用权,主机向一号从机发出485接收总线的使用权。
本步骤将总线使用权接力令牌顺次传递到更低优先级的从机。特别地,最低优先级
的N号从机将把总线使用权接力令牌顺次交还给一号从机。
其中,主机对485接收总线的使用权的发送过程进行实时监控。具体来说,总线使用
权接力令牌传递过程受主机监控。令牌传递后,若从机未广播总线使用权声明,表明
从机异常,主机将切除异常从机,方法是:若异常从机为n号从机,不再发送命令给n号
从机,主机命令n-1号从机重新传递总线使用权接力令牌,并直接将总线使用权接力
令牌传递给n+1号从机,保证总线使用权接力令牌传递过程闭环。
实施例三:
基于实施例二,本实施例还公开了一种带环形缓冲区的全双工485总线通信方法,具
体从主机侧和从机侧两个方面进行部署:
1、主机侧实现的逻辑如图3所示。
主机通过访问485接收总线,不断检查各从机总线使用权接力情况是否异常,若发生
异常,则不再发送关于异常从机的命令帧,且知会令牌传递跳过命令帧,通过485发送
总线发送正常从机的命令帧;若未见从机异常,则直接通过485发送总线发送正常从
机的命令帧。
2、从机侧实现的逻辑如图4所示。
从机根据初始优先级确定一个计时,计时的计算公式为:500*(n-1)ms,其中n为从机号。
当计时时间到达后,该从机抢占总线,并通过485接收总线广播总线使用权声明。接
着判断该从机发送端的环形发送缓冲区中是否有有效数据,若有有效数据,则通过
485接收总线完成1帧数据响应。接着交出总线使用权接力令牌给下一台正常的从
机,等待接收新的总线使用权接力令牌,以再次使用总线;若无有效数据,则直接交出
总线使用权接力令牌给下一台正常的从机,等待接收新的总线使用权接力令牌,以再
次使用总线。
当计时时间为到达,通过485接收总线接收到其他从机的总线使用权声明,则停止计
时,等待接收新的总线使用权接力令牌,以使用总线。
通过主机侧和从机侧的上述逻辑处理,485接收总线将有序的切换总线使用权,不会
产生竞争,且与传统485轮询方式相比,总线占用过程不需要等待命令处理完成,提高
了响应效率和总线利用率。整个过程不需要增加新的硬件成本,系统简单易用。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过
其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的
划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或
组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,
所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统
或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示
的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多
个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例
方案的目的。
结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本
发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本
领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限
定的范围。