地址自动分配的串行总线通信方法与系统的制作方法_2

文档序号:9687390阅读:来源:国知局
r>[0058]步骤S32,若上端通信接口201通信连接成功后发送其身份标识给其上游定位模块
20。其上游定位模块接收到身份标识后会进行身份验证,身份验证通过后根据自身的模块序号计算新的模块序号,然后将计算得到的模块序号发送给定位模块20。
[0059]步骤S33,若下端通信接口202接收到其下游定位模块20发送的身份标识,则定位模块20对接收到的身份标识进行验证,验证通过后根据自身的模块序号计算新的模块序号,然后将计算得到的模块序号发送给其下游定位模块。
[0060]由于位于队首的定位模块20不具有上游定位模块,因此,其模块序号保持为默认值(例如0)。计算新的模块序号最简单的方式就是使模块序号+1,但可以理解的是,序号的规则并不受限制,也可是+2,+3或者任意值。
[0061 ]若对每个定位模块20均执行上述过程,则每个定位模块20会自动为其下游定位模块分配模块序号。当其中某个定位模块20被移除后,模块序号又会被重新分配,从而可以保证模块序号与实际的物理连接关系一一对应。
[0062]当在机架上安装定位模块20时,只要使定位模块20的连接顺序与某种顺序保持对应(例如从上到下、从下到上、从左到右、或者从右到右),则定位模块20的序号就准确反应了该顺序。如此,只要定位模块20在上报的数据内包含自身的模块序号,则机架控制器10就可以按照模块序号为序对数据进行处理,非常适用于对数据索引顺序有要求的数据采集场入口 ο
[0063]此外,定位模块20的上端通信接口201与下端通信接口 202的作用并不限于自动分配模块序号,还可以用于传输数据。例如,定位模块20将采集的数据加上其自身的模块序号后上报至其上游定位模块20。同时,定位模块20也接收其下游定位模块20上报的数据,直接转发至其上游定位模块20。当定位模块20不具有上游定位模块时,可将数据发送给机架控制器10。通过这种方式,并不是所有的定位模块20均需要直接与机架控制器10相连,从而可以增加机架控制器10所能接入的定位模块20的数量。
[0064]由于定位模块20之间建立的是全双式通信通道,所以上游定位模块20不需要轮询下游定位模块20的数据,下游定位模块20采集数据后与上一次上报的数据比较数据变化(Change Of Value,⑶V)是否超过设定的阈值,如果⑶V小于阈值则可以忽略数据,大于或等于阈值时则主动将数据推送给其上游定位模块20或者机架控制器10。采用这种方式可以最优化定位模块20的数据传输性能。
[0065]可以理解的是,定位模块20采集的数据并不限于向其上游定位模块20上报,还可以直接上报给机架控制器10,此时需要在所有的定位模块20与机架控制器10之间实现通信连接。
[0066]在一个实施方式中,定位模块20通过上述的8芯线缆与机架构控制器10相连。基于8芯线缆中的引脚P4与P5,在机架控制器10与定位模块20之间实现一个串行总线(例如RS485)通信系统,其中,机架控制器10为主机,而定位模块20为从机。串行总线具有通信距离长和多从机支持的优点。但是串行总线中的从机要求具有唯一的地址。
[0067]在本实施例中,从机的地址可通过地址线(引脚P7)进行分配,参阅图3,其具体过程如下:
[0068]步骤S11,主机启动后初始化多个I/O端口为输入模式。
[0069]I/O端口的数量依赖于从机的数量,与从机的数量--对应。本实施例中,从机数量为6个,则主机可初始化I/O端口 D4?D9为输入模式。缺省时,主机地直线端口输入模式为低电平(当然也可以定义为高电平)。
[0070]现在的CPU都具有大量的I/O端口,每条地址线只占用主机和从机各一个I/O端口,同时地址线只需要传输一个地址数据,所以只需要设计低速通信,不需要占用特殊端口(例如SP1、I2C、l-Wire或UART)等。当然采用这些特殊端口同样可行。
[0071 ]步骤S21,从机启动后通过地址线连接主机对应的I/O端口,发送连接信号。
[0072 ]假设从机对应的主机的I /0端口为D4,则从机启动后通过地址线连接主机的D4端口。具体地,从机初始化端口 D2为输出模式,发送一个电平信号(低-高-低)至主机的D4端口。例如,输出低电平保持50ms(时间可以定义为其他值),然后将端口D2拉高电平保持50ms(时间也可以定义为其他值),然后拉低电平。可以理解的是,此处的电平信号也可以任意约定。而上述的电平信号即为从机发送的连接信号。
[0073]步骤S22,从机将端口D2设置为输入模式,并开始侦听输入的地址信号。
[0074]例如,从机在端口D2启动摩斯电码侦听。当然,这里可以采用任何通信设计,能够传输要传输的数据即可。
[0075]步骤S23,若在设定周期(例如10s)内没有接收到任何数据,则从机停止侦听程序新重新执行步骤S21。
[0076]步骤S12,主机持续侦听I/O端口,当监测到预定的连接信号(例如电平信号下降沿高-低)时,表示有从机接入,执行步骤S13。
[0077]步骤S13,主机将分配的地址发送给从机。
[0078]首先,主机获取一个未被使用的地址,例如地址可以默认从1开始,每次分配使地址+1。然后,主机在延时预定时间(例如50ms)后在端口 D4启动摩斯电码发送所分配的通信地址1。
[0079]步骤S24,从机接收到主机发送的地址后按照接收到的通信地址初始化串行总线通信,准备接收主机发送的握手信号。
[0080]步骤S14,在步骤S13之后主机延时预定时间(例如100ms)后通过串行通信总线向分配的地址(例如1)发送握手信号。
[0081]步骤S25,从机在接收到主机握手信号后返回从机身份验证信息。
[0082]步骤S15,主机根据从机返回的身份验证信息进行验证,若验证从机成功,则完成通信地址的自动分配。
[0083]步骤S16,主机通过串行总线定时向从机发出轮询请求以获取数据,若请求超时,则主机重新侦听地址线发送的连接信号,即执行步骤S12。
[0084]步骤S26,从机在指定的时间内没有接收到主机请求,则从机重新执行步骤S21直至获得正确的总线通信地址。
[0085]在完成地址的分配后,主机与从机之间就可以采用串行通信总线完成通信。
[0086]此外,可以理解的是,在图1所示的机架服务器信息采集系统100中,串行通信总线并不限用于机架控制器10与定位模块20之间的网络连接。如图1所示,定位模块20内可包括多个(图1所示为6个)卡位单元21,定位模块20与卡位单元21之间也可以通过串行通信总线连接。此时,定位模块20内的主控制器为主机,而各卡位单元21为从机,主控制器给各卡位单元21分配地址的过程可与上述过程相同。在分配地址后,各卡位单元21通过串行通信总线与定位模块20通信,完成数据上报的操作。
[0087]串行总线总是通过主机轮询从机,当从机数量很多以及从机采集数据量较大时,串行总线通信效率下降,数据延时较大。为提升通信效率,可以通过只传输变化数据和产生新数据时从机主动通知主机推送数据,参阅图4,其具体过程可如下:
[0088]步骤S41,缓存每一条采集的数据。
[0089]步骤S42,将当前采集的数据与上一次上报的数据进行比较,如果变化幅度大于或等于设定阈值则执行步骤S43;否则,忽略掉当前采集的数据,并可从缓存中清除当前采集的数据。
[0090]步骤S43,更新从机的数据变化索引。
[0091]在初始状态下,从机的数据变化索引为一个默认值(例如0)。此后,每产生一条待上报的数据,可使从机的数据变化索引按照预定的规则增加或者减少,例如,每产生一条C0V数据,可使从机的数据变化索引增加1。
[0092]步骤S44,当接收到主机发送的数据轮询请求时根据轮询请求内的变化索引值获取所有待上报的数据返回给主机。
[0093]主机在接收到从机上报的数据后,会缓存上报的数据内包含的变化索引值,在下次发送数据轮询请求内可将该变化索引值包含在轮询请求内作为请求参数。
[0094]从机可将轮询请求内包括的变化索引值与从机数据变化索引进行比较,若两者相同,则说明距离上一次上报数据未产生新的待上报数据,此时获取的待上报的数据为空,此时从机可返回空数据包或者直接返回从机数据变化索引;若从机的数据变化索引值等于轮询请求内的变化索引的值+1,则说明距离上一次上报数据,有一条待上报的数据产生,此时,从机可最新的一条待上报数据与从机变化索引一并返回给主机;其他状态表示距离上一次上报数据,有多条待上报的数据产生,此时,从机可以获取上一次上报至今产生的所有待上报数据,并将其与从机数据变化索引一并返回。
[0095]由于现实物理世界中很多数据在短时间内基本保持不变,这种方式在不改变基本通信原则的前提下,可以级数级提升数据轮询速度和减少总线带宽占用。
[0096]串行总线轮询方式当从机数量很多时还是不能解决数据传输及时性,从机可通过复用地址线主动通知主
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1