一种制造技术

技术编号:39663180 阅读:8 留言:0更新日期:2023-12-11 18:26
本发明专利技术公开一种

【技术实现步骤摘要】
一种RS485总线实现多主机间的通信方法


[0001]本专利技术涉及
RS485
总线通信
,具体是一种
RS485
总线实现多主机间的通信方法


技术介绍

[0002]RS485
总线是标注
RS485
网络中实现通信的所必备的线缆,通过传统的
RS485
总线实现
RS485
网络通信中,只能实现单个主机与多个从机之间的通信

在包括多个从机的通信中,若某一个从机希望向主机发送信息,只能等待主机通过轮询方式向该从机请求数据,才能够使得该从机使用总线向主机发送信息

由于采用轮询方式,导致数据的实时性较差,并且需要主机多次向从机询问是否有进行上报,增加了总线的通信负担,通信的效率低下

[0003]为了实现多主机间通信,现有技术通常采用
CAN
总线的通信方式,但是
CAN
总线的通信方式对于硬件设计和软件开发都需要使用到
CAN
通信协议,
CAN
通信协议较为复杂,门槛较高,导致所设计的
CAN
芯片相比于
RS485
芯片成本更高,不易于推广使用

[0004]综上,希望能够基于
RS485
实现多主机通信,并避免采用轮询方式,以提高通信的效率,成本更低


技术实现思路

[0005]针对现有技术的不足,本专利技术的目的是提供一种
RS485
总线实现多主机间的通信方法,其能够解决
技术介绍
描述的问题

[0006]实现本专利技术的目的的技术方案为:一种
RS485
总线实现多主机间的通信方法,应用于
RS485
通信网络,所述
RS485
通信网络包括主节点和若干次节点,为在总线上的每一个次节点配置占领码和总线占领码变量,占领码表征当前总线是否分配到自身次节点,总线占领码变量表征总线当前是否被次节点所控制,所述通信方法包括以下步骤:步骤1:若当前次节点需要向主节点发送数据,则先判断当前总线占领码变量是否为0,若是,则向主节点发送包括占领帧的占领总线请求,占领帧包括占领码和校验码;步骤2:发送占领帧后等待
t
时间,在
t
时间内,判断是否接收到主节点响应于占领总线请求所返回的总线状态返回码,若否,则随机延时一段时间后,再次向主节点发送占领帧,直至获得总线返回的总线占返回码;若是,则判断总线状态返回码中的占领码与本次发送的占领码是否一致,若是,则执行步骤3,若否,则判断总线状态返回码中的占领码是否为0,若是,则随机延时一段时间后,重新向总线发送占领帧,若否,则跳转至步骤1,重新判断当前总线占领码变量是否为0;步骤3:当前次节点向主节点发送数据,数据全部发送完毕后,向主节点发送释放帧,主节点接收到释放帧后,解除当前次节点对总线的控制,并重新跳转至步骤
1。
[0007]进一步地,在步骤1中,若当前总线占领码变量不为0,则继续判断当前总线占领码变量是否为
0。
[0008]进一步地,在步骤2中,
t
的取值按公式

得到:
‑‑‑‑‑‑①
式中,
c
表示光速,
τ
表示
TTL
电平转换时间加上处理器处理一帧数据帧的时间

[0009]进一步地,在步骤3中,当主节点接收到数据后,若所接收到的数据为占领帧,则判断占领帧中的占领码和校验码是否正确,若不正确,则返回总线状态返回码,并将总线状态返回码中的占领标志设为1,占领码设为0,以表示主节点接收到的占领帧有误,若正确,则发送相应的总线状态返回码给当前次节点,并开启定时器开始计时,若所接收到的数据为数据帧,则对数据帧进行
CRC
校验,若正确,则将定时器的计时重置为0,若
CRC
校验错误且连线超过预设次数,则判断当前占领总线的占领码异常并进行上报,若所接收到的数据既非数据帧,也非占领帧,而是异常帧,并且异常帧接收不超过预设次数,则重新接收数据,若异常帧超过预设次数,则判断为总线中某个次节点出现故障,上报总线异常

[0010]进一步地,在步骤2之后,步骤3之前,还包括步骤
S
:步骤
S
:在当前次节点占领总线时刻起,定时器开始计时,在当前次节点占领总线期间,每当接收到一帧有效数据帧,则定时器重置为0,若定时器从开始计时到当前时间的时长超过预设时长,均未接收到有效数据帧,则向当前节点发送总线返回状态码,并将总线返回状态码中的占领码设为0,以便以释放总线,并关闭定时器

[0011]本专利技术的有益效果为:本专利技术可实现当某一节点在需要向总线发送数据的时候,需要向总线发送总线占领码,以尝试占领总线,在数据发送结束时发送总线释放码进行释放总线,进而实现多主通信,对于次节点异常检测,则可通过使用定时器对占领总线的节点进行定时检测,进而保证该通信的健壮性和稳定性

本专利技术可实现多主通行,避免传统的
RS485
总线通信中的轮询策略,并提高了通信的健壮性和稳定性

附图说明
[0012]图1为本专利技术的流程示意图

具体实施方式
[0013]下面结合附图及具体实施方案,对本专利技术做进一步描述:如图1所示,一种
RS485
总线实现多主机间的通信方法,应用于
RS485
通信网络,所述
RS485
通信网络包括主节点和若干次节点,为在总线上的每一个次节点配置占领码和总线占领码变量,占领码表征当前总线是否分配到自身次节点,总线占领码变量表征总线当前是否被次节点所控制,所述通信方法包括以下步骤:步骤1:若当前次节点需要向主节点发送数据,则先判断当前总线占领码变量是否为0,若为0,则向主节点发送包括占领帧的占领总线请求,占领帧包括占领码和校验码,若
不是(即不为0),则继续判断当前总线占领码变量是否为
0。
占领码为0,也就意味着当前总线没有被任何一个次节点所控制,允许向主节点发送占领帧,以尝试占领总线

[0014]步骤2:发送占领帧后等待
t
时间,在
t
时间内,判断是否接收到主节点响应于占领总线请求所返回的总线状态返回码,若未接收到总线状态返回码,表明当前次节点可能与其他次节点同时向总线发送占领帧而导致数据冲突,使得主节点无法正确接收到数据,则需要随机延时一段时间后,再次向主节点发送占领帧,直至获得总线返回的总线占返回码

[0015]在本步骤中,等待
t
时间的目的在于通过延时
t
时长,使得在满足从次节点传输到本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
RS485
总线实现多主机间的通信方法,其特征在于,应用于
RS485
通信网络,所述
RS485
通信网络包括主节点和若干次节点,为在总线上的每一个次节点配置占领码和总线占领码变量,占领码表征当前总线是否分配到自身次节点,总线占领码变量表征总线当前是否被次节点所控制,所述通信方法包括以下步骤:步骤1:若当前次节点需要向主节点发送数据,则先判断当前总线占领码变量是否为0,若是,则向主节点发送包括占领帧的占领总线请求,占领帧包括占领码和校验码;步骤2:发送占领帧后等待
t
时间,在
t
时间内,判断是否接收到主节点响应于占领总线请求所返回的总线状态返回码,若否,则随机延时一段时间后,再次向主节点发送占领帧,直至获得总线返回的总线占返回码;若是,则判断总线状态返回码中的占领码与本次发送的占领码是否一致,若是,则执行步骤3,若否,则判断总线状态返回码中的占领码是否为0,若是,则随机延时一段时间后,重新向总线发送占领帧,若否,则跳转至步骤1,重新判断当前总线占领码变量是否为0;步骤3:当前次节点向主节点发送数据,数据全部发送完毕后,向主节点发送释放帧,主节点接收到释放帧后,解除当前次节点对总线的控制,并重新跳转至步骤
1。2.
根据权利要求1所述的
RS485
总线实现多主机间的通信方法,其特征在于,在步骤1中,若当前总线占领码变量不为0,则继续判断当前总线占领码变量是否为
0。3.
根据权利要求1所述的
RS485
总线实现多主机间的通信方法,其特征在于,在步骤2中,
t
的取值按公式
①...

【专利技术属性】
技术研发人员:苏泽锋赵定金明德
申请(专利权)人:广东保伦电子股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1