带冲突检测的载波监听多路访问的RS485总线电路及方法与流程

文档序号:20211205发布日期:2020-03-31 11:03阅读:2508来源:国知局
带冲突检测的载波监听多路访问的RS485总线电路及方法与流程

本发明涉及rs485总线领域,具体涉及一种带冲突检测的载波监听多路访问的rs485总线电路及方法。



背景技术:

目前rs485总线以其构造简单、造价低廉、传输距离远、便于维护等优点在现场总线中得到广泛应用。rs485总线以双绞线为物理介质,工作在半双工的通信方式,即同一时刻,在总线上只能有一个节点出于发送状态,其他节点处于接收状态。一般rs485工作在主从模式下,由一个主节点若干个从节点组成,主节点不断轮询查询从节点的数据。采用轮询的方式导致数据的实时性较差,无法满足告警数据实时上送的需求。若减小轮询间隔,虽然在一定程度上提高了数据实时性,但是对于低功耗要求高的系统,处于休眠状态的节点会被频繁的唤醒,导致系统功耗增大。因此对于低功耗、实时性要求高的系统,rs485总线无法无法满足应用需求。



技术实现要素:

有鉴于此,本发明的目的在于提供一种带冲突检测的载波监听多路访问的rs485总线电路及方法,在传统rs485总线的基础上增加了载波监听、冲突检测的功能,在检测到总线冲突后,由硬件电路直接控制rs485收发管脚停止发送,无需软件干预,响应速度快。

为实现上述目的,本发明采用如下技术方案:

一种带冲突检测的载波监听多路访问的rs485总线电路,包括第一rs485芯片和第二rs485芯片;所述第一rs485芯片用于数据的收发,另第二rs485芯片用于总线的载波监听和冲突检测。

进一步的,所述电路还包括异或门、触发器、第一与门、第二与门和反相器;所述第一rs485芯片的第四引脚di通过第二电阻连接异或门的第二引脚b;所述第二rs485芯片的第一引脚ro通过第十三电阻连接异或门的第一引脚a;所述异或门的第四引脚y通过第十四电阻后分别连接触发器的第一引脚clk和反相器的输入端;所述触发器的第四引脚q和第六引脚oe分别连接第一与门的两个输入端;所述第一与门输出端通过第四电阻与第一rs485芯片的第三引脚de连接;所述第二与门的两个输入端分别连接第十八电阻一端和反相器输出端;所述第十八电阻另一端连接触发器的第五引脚vcc。

进一步的,所述电路通过mcu_tx、mcu_rx、mcu_dr和mcu_int4根线与mcu相连;所述mcu_tx通过第二电阻连接第一rs485芯片的4号引脚di;所述mcu_tx还连接于异或门的的第二引脚b;所述mcu_rx通过第八电阻与第一rs485的第一引脚ro连接;所述mcu_dr通过r17分别连接触发器的第六引脚oe和第一与门的输入端;所述mcu_int连接第二与门的输出端。

一种带冲突检测的载波监听多路访问的rs485总线电路的方法,包括以下步骤:

步骤s1:在数据发送之前通过mcu_int信号检测总线状态,若连续最小时隙内都为空闲,则判定总线空闲,进入发数据;

步骤s2:发送数据过程中时刻监控mcu_int信号状态,若检测到总线冲突,停止发送数据,mcu_dr切换到接收状态,mcu_int信号恢复空闲状态;待重发延时时间到达后,重新进行数据发送。

进一步的,所述步骤s1具体为:在接收数据之前,先进行载波检测,若总线空闲,q为高、触发器的第一引脚输入cs1为低,经u反相器输出cs2为高,mcu_int为高;若总线上有数据收发,cs2会变低,mcu_int会输出低,说明总线被占用需要延后随机时隙,再进行数据发送;若mcu连续检测1字节的间隔都保持为高电平认为总线空闲,马上进行数据发送。

进一步的,所述步骤s2具体为:发送数据过程中,mcu_dr输入高电平。当发送“0”时,mcu_tx为低,若总线信号为“1”,则monitor_rx信号为高,mcu_tx、monitor_rx分别输入异或门的a、b,异或门的y输出由低变为高,cs1上升沿信号输入触发器的clk,触发器上升沿触发,引脚q输出由高变为低;第一与门1脚mcu_dr为高,2脚q为低,与门输出uart_dr为低,将第一rs485芯片切换为接收状态,停止发送;第二与门1脚q为低,第二与门输出mcu_int一直保持为低,总线因冲突,停止发送。

进一步的,所述重发延时时间采用退避算法计算,具体为:

重发延时=r*最小时隙

其中,最小时隙为1个字节的发送时间;根据节点设备的id产生随机数r。

本发明与现有技术相比具有以下有益效果:

1、本发明具有载波监听、冲突检测的功能,在检测到总线冲突后,由硬件电路直接控制rs485收发管脚停止发送,无需软件干预,响应速度快。

2、本发明。在保证rs485总线性能的情况下,实现rs485总线多主机的功能。

附图说明

图1是本发明电路原理图;

图2是本发明一实施例中控制方法流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

请参照图1,本发明提供一种带冲突检测的载波监听多路访问的rs485总线电路,包括第一rs485芯片和第二rs485芯片;所述第一rs485芯片用于数据的收发,另第二rs485芯片用于总线的载波监听和冲突检测。

在本实施例中,所述电路还包括异或门、触发器、第一与门、第二与门和反相器;所述第一rs485芯片的第四引脚di通过第二电阻连接异或门的第二引脚b;所述第二rs485芯片的第一引脚ro通过第十三电阻连接异或门的第一引脚a;所述异或门的第四引脚y通过第十四电阻后分别连接触发器的第一引脚clk和反相器的输入端;所述触发器的第四引脚q和第六引脚oe分别连接第一与门的两个输入端;所述第一与门输出端通过第四电阻与第一rs485芯片的第三引脚de连接;所述第二与门的两个输入端分别连接第十八电阻一端和反相器输出端;所述第十八电阻另一端连接触发器的第五引脚vcc。

在本实施例中,所述电路通过mcu_tx、mcu_rx、mcu_dr和mcu_int4根线与mcu相连;所述mcu_tx通过第二电阻连接第一rs485芯片的4号引脚di;所述mcu_tx还连接于异或门的的第二引脚b;所述mcu_rx通过第八电阻与第一rs485的第一引脚ro连接;所述mcu_dr通过r17分别连接触发器的第六引脚oe和第一与门的输入端;所述mcu_int连接第二与门的输出端。mcu_tx用于rs485数据发送。mcu_rx用于rs485数据接收。mcu_dr用于rs485芯片收发控制,高电平为发送数据、低电平为接收数据。mcu_int反应rs485总线状态,若总线忙或总线冲突输出低电平,若总线空闲输出高电平。

在本实施例中,一种带冲突检测的载波监听多路访问的rs485总线电路的方法,包括以下步骤:

步骤s1:先进行载波检测;若总线空闲,q为高、cs1为低,经u7反相器cs2为高,mcu_int为高;若总线上有数据收发,cs2会变低,mcu_int会输出低,说明总线被占用需要延后随机时隙,再进行数据发送。若mcu连续检测1字节的间隔都保持为高电平认为总线空闲,马上进行数据发送。

步骤s2:发送数据过程中,mcu_dr输入高电平。当发送“0”时,mcu_tx为低,若总线信号为“1”,则monitor_rx信号为高,mcu_tx、monitor_rx分别输入异或门(u3)的a、b管脚,异或门(u3)的y输出由低变为高,cs1上升沿信号输入d触发器(u4)的clk,d触发器(u4)上升沿触发,q管脚输出由高变为低。与门(u5a)1脚mcu_dr为高,2脚q为低,与门(u5a)输出uart_dr为低,将rs485芯片(u1)切换为接收状态,停止发送。与门(u5b)1脚q为低,与门(u5b)输出mcu_int一直保持为低,总线因冲突,停止发送。

当mcu在发送过程中检测到mcu_int为低电平,就说明rs485接口电路因为总线冲突停止发送。mcu停止发送,并输出mcu_dr为低,d触发器(u4)/oe输入低,d触发器(u4)的q输出为高阻,则q信号为高。该电路重新进入载波监听状态。mcu根据简化的退避算法,延时随机时隙重新检测总线状态,并进行数据重发。

在数据发送之前通过mcu_int信号检测总线状态。若连续最小时隙内都为空闲,则判定总线空闲。进入发数据,发送数据过程中时刻监控mcu_int信号状态,若检测到总线冲突,停止发送数据,mcu_dr切换到接收状态,mcu_int信号恢复空闲状态。待重发时间到达后,重新进行数据发送。

在本实施例中,所述重发延时时间采用退避算法计算,具体为:

重发延时=r*最小时隙

其中,最小时隙为1个字节的发送时间;根据节点设备的id产生随机数r,r的取值范围(0~255)。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1