一种适用于RS485总线的自适应确定地址组网电路及方法与流程

文档序号:16513157发布日期:2019-01-05 09:28阅读:1266来源:国知局
一种适用于RS485总线的自适应确定地址组网电路及方法与流程

本发明涉及通信rs485总线技术领域,具体为一种适用于rs485总线的自适应确定地址组网电路及方法。



背景技术:

rs-485总线是工业上常用的一种数据通信总线,采用半双工工作方式,任何时候只能有一点处于发送状态。rs-485多用于点对多点的分布式主从通信系统,一般情况下是一个主机多个从机的网络架构,总线上的每个设备都必须事先设定唯一的设备地址,主机必须事先知道每一台从机的地址,从机仅需要事先知道主机地址即可。

存在的问题:

1、总线上的设备必须设定地址,如果不设定地址,会出现通信竞争问题,导致总线无法完成通信。一般情况下从机都必须设定地址,而且一般在系统上电前通过拨码开关或者系统上电后通过软件手动设定从机地址;主机地址不是必须设置,但通常都是需要设置的,也是在系统上电前通过拨码开关或者系统上电后通过软件手动设定地址。

2、地址的唯一性,总线上的设备地址具有唯一性,不可以出现地址冲突。

3、增加新的从机设备,需要升级主机程序。因为主机在工作过程中,并不知道新增加从机的设备地址,需要更新程序或者经过软件手动设定操作才能添加从机设备。



技术实现要素:

本发明的目的在于提供一种适用于rs485总线的自适应确定地址组网电路及方法,以解决上述背景技术中提出的总线上的设备必须设定地址,如果不设定地址,会出现通信竞争问题,导致总线无法完成通信。一般情况下从机都必须设定地址,而且一般在系统上电前通过拨码开关或者系统上电后通过软件手动设定从机地址;主机地址不是必须设置,但通常都是需要设置的,也是在系统上电前通过拨码开关或者系统上电后通过软件手动设定地址。地址的唯一性,总线上的设备地址具有唯一性,不可以出现地址冲突。增加新的从机设备,需要升级主机程序。因为主机在工作过程中,并不知道新增加从机的设备地址,需要更新程序或者经过软件手动设定操作才能添加从机设备的问题。

为实现上述目的,本发明提供如下技术方案:一种适用于rs485总线的自适应确定地址组网电路,包括rs485硬件单元和连接在rs485硬件单元上的a线端和b线端,所述rs485硬件单元通过数据线与mcu的数据传输接口连接,所述mcu上集成有竞争信号总线和应答信号总线,所述mcu接地处理。

优选的,所述a线端、b线端、竞争信号总线、应答信号总线和mcu的接地端集成连接在设备上。

优选的,所述竞争信号总线和应答信号总线均配置为开漏模式。

该适用于rs485总线的自适应确定地址组网电路的方法的具体步骤如下:

s1:检测总线状态:设备向rs485硬件单元、mcu的总线端检测空闲状态,并且设备向rs485硬件单元、mcu的总线端获得控制权;

s2:设备向纵向输出id:获得控制权后,设备向rs485硬件单元、mcu的总线端输出设备的id;

s3:排序设备id:当所有的设备均向总线端输出id后,总线端向每个设备反馈所有设备的id,总线端将所有设备的id排序,每个设备能够通过自身的id找到自身的排序位置;

s4:进入主、从设备状态:排序靠前的id对应的设备进入主设备状态,其他设备进入从设备状态。

优选的,所述id为设备自身携带的id编号或者mcu内部后续的编号。

与现有技术相比,本发明的有益效果是:本方案的具体优势在于:

1)具有总线上的任何设备都不需要设定地址,只要同时上电所有设备自动选取主机、自适应组网功能;

2)无需为每一个设备单独设置通信地址,所有设备自动获取自己在总线上的唯一通信地址,并且每一台设备都知道其他所有设备的地址;

3)安装简单、调试简单。

附图说明

图1为本发明的硬件结构示意图;

图2为本发明总线与设备的连接结构示意图;

图3为本发明的方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1-3,本发明提供一种技术方案:一种适用于rs485总线的自适应确定地址组网电路,包括rs485硬件单元和连接在rs485硬件单元上的a线端和b线端,rs485硬件单元通过数据线与mcu的数据传输接口连接,mcu上集成有竞争信号总线和应答信号总线,mcu接地处理。

其中,a线端、b线端、竞争信号总线、应答信号总线和mcu的接地端集成连接在设备上,竞争信号总线和应答信号总线均配置为开漏模式。

该适用于rs485总线的自适应确定地址组网电路的方法的具体步骤如下:

s1:检测总线状态:设备向rs485硬件单元、mcu的总线端检测空闲状态,并且设备向rs485硬件单元、mcu的总线端获得控制权;

s2:设备向纵向输出id:获得控制权后,设备向rs485硬件单元、mcu的总线端输出设备的id,id为设备自身携带的id编号或者mcu内部后续的编号;

s3:排序设备id:当所有的设备均向总线端输出id后,总线端向每个设备反馈所有设备的id,总线端将所有设备的id排序,每个设备能够通过自身的id找到自身的排序位置;

s4:进入主、从设备状态:排序靠前的id对应的设备进入主设备状态,其他设备进入从设备状态。

设定

竞争线忙碌:低电平

竞争线空闲:高电平

应答线回应:低电平

应答线空闲:高电平

总线竞争忙碌延时时间:每台设备在竞争总线发送自己的唯一id时,有可能出现总线忙碌状态(竞争线为低电平,表示别的设备发送流程还没有结束),需要延时一个时间后,再次竞争总线(查询竞争线电平状态),此延时时间就是总线竞争忙碌延时时间。此延时时间要求对于每台设备不能相同(否则会发生总线竞争碰撞),我们选择的cpu内部具有唯一的96位识别号,因此每台cpu的识别号不可能相同,我们就是使用cpu的唯一识别号作为随机数产生器的种子,产生每台设备不同的总线竞争延时时间,保证不会发生总线竞争碰撞。设定产生随机数的范围为5-100,因此每台设备的总线竞争忙碌延时时间范围设定为5-100ms之间。

应答时间:每台设备在收到别的设备发送的id号之后,都需要将应答线设置低电平一段时间,表示自己收到发送设备发送的id,此时间就是应答时间,设定为100ms

总线超时500ms:当每台设备都发送过自己的cpu唯一序列号之后,都会进入到接收任务状态,因此在总线竞争发送地址状态过后,总线会进入长期的无数据发送状态,规定超过500ms总线上在没有数据发送过,则认为总线竞争发送地址状态完毕。开始自选主机,之后id号最小的设备会主动担任主机功能,其他设备担任从机功能,最后总线进入一主多从工作模式。

使用cpu的定时器设定一个1ms的时间中断,每次进1ms的定时中断都令一个计数变量counter自动加一操作,设置程序当检测到竞争线或应答线上升沿(空闲状态)之后,就设定counter=0。因此,当counter计数值超过500时,说明上次竞争线或应答线上升沿(空闲状态)之后,超过500ms没有发生总线竞争和应答操作,认为总线竞争状态结束。

发送id帧格式:采用定长帧格式,长度是14个字节,96位的id占用起始的12个字节,最后两个自己设置为crc校验数据。

总线上的所有设备节点上电后都要先做自适应组网流程,组网完成后,再开始一主多从的工作模式。每个设备要完成自适应组网流程需要执行3个任务,发送本机id任务、接收别的设备id任务和自适应组网结束判断任务,并且这三个任务是并行执行的,互不影响。

1、发送本机id任务:

首先检查竞争线状态:空闲(高电平)、忙碌(低电平)

a:如果竞争线空闲(高电平)则设置竞争线忙碌(低电平),设置485总线为发送状态,发送自己的唯一id号帧格式(14个字节),发送完毕后,检查在应答时间100ms之内应答线是否有应答(低电平),如果应答线有应答(低电平)说明总线上至少存在一个另外的设备,并且成功收到自己发送的唯一id,之后释放竞争线,设置竞争线空闲(高电平),设置485总线为接收状态,结束发送任务;如果应答线没有应答(低电平),说明有可能总线上只有本机一台设备,或者有其他设备没有回应,报错并记录错误状态,供错误处理任务处理(正常情况不应出现此种情况),之后也是释放竞争线,设置竞争线空闲(高电平),设置485总线为接收状态,结束发送任务。

b:如果竞争线忙碌(低电平,说明有别的设备在占用总线发送自己的id),按照自己的唯一id生成的延时时间(5-100ms之间,总线上设备的cpu的id号是唯一的,因此每台设备延时时间是不一样的,保证了总线上的设备不会延时相同的时间)延时后再去检查竞争线状态,如果空闲执行a操作,如果忙碌重复b最开始操作开始延时,直到总线空闲执行a结束发送任务。注:发送自己id号,完成一次即可。

2、接收别的设备id任务:

各设备开机后,默认的485的状态就设为接收,cpu一直都在监听和接收485总线上的数据,当收到一包数据后,接收任务就首先执行id帧格式判断,通过crc的校验可以判断出收到的数据是否正确,如果数据校验不正确就不做任何处理,返回等待接收id数据;如果正确就按顺序编号存储收到的id号到一个n*12的二维数组(用于按顺序存储每次收到的12个字节的id数据),设置应答线为应答状态(低电平),时间为应答时间100ms,之后设置应答线为空闲状态(高电平),继续等待接收新id数据。

3、自适应组网结束判断任务:

此任务比较简单,就是判断总线超时counter的数值是否超过500,如果没有超过500,就继续等待,直到总线超时counter的数值超过500,此时说明竞争总线和空闲总线都已经空闲超过500ms,实际就是在过去的500ms以内都没有再发生竞争发送id的情况,因为之前发送任务设定的延时发送时间是5-100ms,所以经过5倍的延时时间都没有设备再发送id,因此可以肯定的表明所有的设备都已经结束发送自己id的任务。此时总线上的所有设备,都已经把自己cpu的唯一id发送出去,并且也接收和存储全部其他设备cpu的唯一id。将接收到的所有其他设备的id以及本机自身的id进行冒泡排序,从排序结果中查找出自身id所在位置序号。如果本机id是排在第一位则停止发送和接收任务,开始执行主机功能任务;否则也是停止发送和接收任务,开始执行从机功能任务。

至此,自适应组网的过程全部完成,已经自动选出主机、从机,并且每个总线上的设备都具有唯一id地址。后续的工作就是普通485总线的一主多从工作方式,不再赘述。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

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