一种无线仪表数据传输及获取方法与流程

文档序号:13213733阅读:495来源:国知局
一种无线仪表数据传输及获取方法与流程
本发明涉及物联网通信
技术领域
,特别是涉及一种无线仪表数据传输及获取方法。
背景技术
:无线仪表监测网络是监视大型、远程环境的有力工具,随着微处理器和无线通信技术的发展,其重要性越来越突出。例如对于大型的天然气分输站,其占地面积在几万平方米以上,生产区和办公区的压力和温度仪表较多,所有仪表指示的信号最终传输到监控室的大屏或其他显示设备上。现场每个仪表自带无线通信功能,可发送可接收。仪表之间若通过有线通信,需要土建配合,挖沟、铺设管路、回填等施工成本较大,设备出现故障时,定位故障有时需要重新挖出线缆,维修成本较大,效率较低。目前主流技术方案逐步使用带有近距离无线通信模块的工业仪表。现场工业环境因防爆要求较高,故设备须使用小功率(50mw左右)无线发射设备,而小功率发射设备的通信距离一般在50米到70米左右,大部分仪表需要其他仪表作为中继才能把信号传输到控制室。在使用中继过程中,便产生了各种路由方案。目前在物联网的路由协议设计上,具有各种各样的算法。有基于能量均衡的算法,参考《基于zigbee技术的热计量表物联网路由协议研究》;有基于汇聚树的路由协议,参考开源物联网操作系统的tinyos实现的路由协议;有基于目的序列距离矢量(dsdv)的算法,参考《基于tinyos的无线传感器网络路由协议研究与实现》等。这些路由协议的优点是系统是一个自组网系统,当系统内增加或减少一个节点时,本节点无须人为参与,即可找到最优的信号传输路径。但这些常规使用的路由协议不适合分输站和仪表密集型(单个仪表/20平米)的场站使用,若使用常规的自组网协议会导致如下结果:由于现场用电限制严格,各仪表节点若出现“死节点”时调试工作基本不可进行;自组网系统里的各节点一直在参与节点间链路质量的评估和计算,当系统内节点数量较多时,信号同步或信道竞争问题突出,导致有效通信效率下降,节点之间通信过程复杂的同时导致软件固件的故障点增加。因此,如何避免大规模无线仪表通信过程的信道竞争,提高数据传输和获取效率,是本领域亟需解决的问题。技术实现要素:本发明的目的是提供一种无线仪表数据传输及获取方法,使无线仪表数据的传输及获取过程中,大规模无线仪表任意节点之间不存在信道竞争,提高通信效率。为实现上述目的,本发明提供了如下方案:一种无线仪表数据传输方法,所述方法包括:主控系统建立并存储各个仪表节点的路由路径;所述主控系统获取待查询仪表节点的节点id;所述主控系统从所述各个仪表节点的路由路径中确定所述待查询仪表节点的路由路径;所有所述仪表节点处于信号接收状态;所有所述仪表节点包括中继仪表节点和待查询仪表节点;所述主控系统根据所述待查询仪表节点的路由路径生成第一查询命令并将所述第一查询命令发送至所述中继仪表节点;所述中继仪表节点接收到所述第一查询命令后,根据所述第一查询命令生成中继查询命令,并由接收状态触发为发送状态,将所述中继查询命令发送给所述待查询仪表节点;所述中继查询命令发送完成后,所述中继仪表节点恢复至接收状态;所述待查询仪表节点接收到所述中继查询命令后,根据所述中继查询命令生成打包数据,并由接收状态触发为发送状态,将所述打包数据发送回所述中继仪表节点;所述打包数据发送完成后,所述待查询仪表节点恢复至接收状态;所述中继仪表节点接收到所述打包数据后,根据所述打包数据生成中继打包数据,并由接收状态触发为发送状态,将所述中继打包数据发送至所述主控系统;所述中继打包数据发送完成后,所述中继仪表节点恢复至接收状态;所述主控系统接收所述中继打包数据。本发明还公开了一种无线仪表数据获取方法,所述方法包括:建立并存储各个仪表节点的路由路径;获取待查询仪表节点的节点id;根据所述待查询仪表节点的节点id和所述各个仪表节点的路由路径确定所述待查询仪表节点的路由路径;根据所述待查询仪表节点的路由路径生成第一查询命令;将所述第一查询命令发送至中继仪表节点;接收所述中继仪表节点返回的中继打包数据并进行处理。可选的,所述建立并存储各个仪表节点的路由路径,具体包括:为每个所述仪表节点建立路由路径,并获取每条所述路由路径的信号质量;判断每个所述仪表节点的路由路径数目是否大于一条,获得第一判断结果;当所述第一判断结果表示所述仪表节点的路由路径为一条时,直接存储所述路由路径;当所述第一判断结果表示所述仪表节点的路由路径为多条时,按照所述信号质量从高到低的顺序排列并存储所述仪表节点的多条所述路由路径。可选的,所述根据所述待查询仪表节点的节点id和所述各个仪表节点的路由路径确定所述待查询仪表节点的路由路径,具体包括:根据待查询仪表节点的节点id从所述各个仪表节点的路由路径中提取出所述待查询仪表节点的所有路由路径;确定所述待查询仪表节点的所有路由路径中信号质量最高且可正常通信的路由路径为所述待查询仪表节点的路由路径。可选的,所述根据所述待查询仪表节点的路由路径确定第一查询命令,具体包括:所述第一查询命令的内容包括下一跳节点id、原始节点id、原节点id、目的节点id和路由表;确定所述待查询仪表节点的路由路径为所述第一查询命令中的所述路由表;确定所述路由表中的第一个节点id为所述第一查询命令中的所述原始节点id和所述原节点id;确定所述路由表中的第二个节点id为所述第一查询命令中的所述下一跳节点id;确定所述路由表中的最后一个节点id为所述第一查询命令中的所述目的节点id。本发明还公开了一种无线仪表数据传输方法,所述方法包括:仪表节点上电后,所述仪表节点处于接收状态并开启硬件地址过滤;所述仪表节点接收到查询命令时,所述仪表节点根据所述查询命令确定自身为中继仪表节点或待查询仪表节点;当所述仪表节点确定自身为中继仪表节点时,由接收状态触发为发送状态并修改所述查询命令,将修改后的查询命令传输至下一跳仪表节点;当所述仪表节点确定自身为所述待查询仪表节点时,由接收状态触发为发送状态并生成打包数据,将所述打包数据发送至下一跳仪表节点;所述仪表节点接收到所述打包数据时,由接收状态触发为发送状态并修改所述打包数据,将修改后的打包数据传输至下一跳仪表节点。可选的,所述仪表节点接收到查询命令时,所述仪表节点根据所述查询命令确定自身为中继仪表节点或待查询仪表节点,具体包括:所述查询命令的内容包括下一跳节点id、原始节点id、原节点id、目的节点id和路由表;当所述仪表节点接收到所述查询命令时,判断所述查询命令中的所述目的节点id和所述下一跳节点id与自身的节点id是否相同,获得第二判断结果;当所述第二判断结果表示所述目的节点id和所述下一跳节点id均与所述仪表节点自身的节点id相同时,确定自身为所述待查询仪表节点;当所述第二判断结果表示所述目的节点id与所述仪表节点自身的节点id不相同且所述下一跳节点id与所述仪表节点自身的节点id相同时,确定自身为中继仪表节点。可选的,所述当所述仪表节点确定自身为中继仪表节点时,由接收状态触发为发送状态并修改所述查询命令,将修改后的查询命令传输至下一跳仪表节点,具体包括:当所述仪表节点确定自身为中继仪表节点时,根据所述路由表将所述查询命令中的所述下一跳节点id更改成所述路由表里自身的节点id后面紧邻的第一个节点id,将所述原节点id更换为自身的节点id,获得所述修改后的查询命令;所述仪表节点由接收状态触发为发送状态,并将所述修改后的查询命令传输至下一跳仪表节点;所述下一跳仪表节点的节点id与所述修改后的所述查询命令中的所述下一跳节点id相同。可选的,所述当所述仪表节点确定自身为所述待查询仪表节点时,由接收状态触发为发送状态并生成打包数据,将所述打包数据发送至下一跳仪表节点,具体包括:当所述仪表节点确定自身为所述待查询仪表节点时,将接收到的所述查询命令中的所述原始节点id更换为自身的节点id,将所述目的节点id更换为所述路由表中的第一个id,将所述下一跳节点id更换为接收到的所述查询命令中的所述原节点id,获得修改后的查询命令;将所述修改后的查询命令和所述待查询仪表节点自身采集的待查询数据打包,生成所述打包数据;所述仪表节点由接收状态触发为发送状态,并将所述打包数据传输至下一跳仪表节点;所述下一跳仪表节点的节点id与所述修改后的查询命令中的所述下一跳节点id相同。可选的,所述仪表节点接收到所述打包数据时,由接收状态触发为发送状态并修改所述打包数据,将修改后的打包数据传输至下一跳仪表节点,具体包括:所述仪表节点接收到所述打包数据时,将所述打包数据解压获得查询命令和待查询数据;根据所述查询命令中的所述路由表将所述查询命令中的所述下一跳节点id更改成所述路由表里自身的节点id前面紧邻的第一个节点id,将所述原节点id更换为自身的节点id,获得修改后的查询命令;将所述修改后的查询命令和所述待查询数据打包,获得所述修改后的打包数据;所述仪表节点由接收状态触发为发送状态,并将所述修改后的打包数据传输至下一跳仪表节点;所述下一跳仪表节点的节点id与所述修改后的所述查询命令中的所述下一跳节点id相同。根据本发明提供的具体实施例,本发明公开了以下技术效果:1、本发明提供了一种无线仪表数据传输及获取方法。所述方法与现有技术的自组网系统协议相比,自组网系统中由仪表节点自主决定自身采集数据的发送,因此同一时刻各仪表节点一直在参与节点间链路质量的评估和计算,当系统内节点数量较多时,会造成信号同步或信道竞争问题突出,导致有效通信效率下降。而本发明所述的方法首先建立各个仪表节点的路由路径,由主控系统根据所述待查询仪表节点的路由路径获取所述待查询仪表节点的数据,并且同一时刻只有正在发送数据的仪表节点处于信号发送状态,其他仪表节点均处于信号接收状态,因此当有数据传输时,系统有且仅有一个节点占用无线信道,任意时刻没有信道竞争,有效提高了无线仪表数据的传输和获取效率,极大地提高了大规模仪表数据系统的通信效率。2、由于自组网系统里的各节点一直在参与节点间链路质量的评估和计算,因此节点之间通信过程过于复杂,容易导致软件固件的故障点增加,当某个仪表节点故障时,还会加剧未故障仪表节点的计算量,使得通信过程更加复杂。而本发明所述的方法一次为某个仪表节点建立多条路由路径,当某一条路由路径不能使用时,自动切换到其他路由路径,当某个节点的所有路由路径都无法使用时,重新为系统建立路由路径,减少了系统故障点对数据获取效率的影响,保障了系统数据传输的稳定性和通信效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例无线仪表数据传输及获取系统的系统结构图;图2为本发明实施例无线仪表数据传输及获取系统对应的路由图;图3为本发明实施例主控系统和无线仪表之间进行数据传输的方法流程图;图4为本发明实施例所有跳数探测过程的流程图;图5为本发明实施例当前跳仪表节点的路由路径探测过程的流程图;图6为本发明实施例当前仪表节点的路由路径探测过程的流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明的目的是提供一种无线仪表数据传输及获取方法,以使无线仪表数据的传输及获取过程中,大规模无线仪表任意节点之间不存在信道竞争,提高通信效率。为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。首先对本发明中出现的术语做一些解释说明。无线仪表监测网络是监视大型、远程环境的有力工具,随着微处理器和无线通信技术的发展,其重要性越来越突出。例如对于大型的天然气分输站,其占地面积在几万平方米以上,生产区和办公区的压力和温度仪表较多,所有仪表指示的信号最终传输到监控室的大屏或其他显示设备上。现场每个仪表自带无线通信功能,可发送可接收。因现场工业环境因防爆要求较高,故设备须使用小功率(50mw左右)的无线发射设备,而小功率发射设备的通信距离一般在50米到70米左右,大部分仪表需要其他仪表作为中继才能把信号传输到控制室。在使用中继过程中,便产生了各种路由方案。图1为本发明实施例无线仪表数据传输及获取系统的系统结构图。如图1所示,所述系统由主控室设备和多个现场仪表组成,主控室设备包括主控pc和汇聚节点。所述现场仪表部署在工业现场,任何一个现场仪表都带有无线传输单元,可发送可接收,即本发明所述的无线仪表。汇聚节点和主控pc通过网线相连,部署在主控室。汇聚节点也属于无线仪表,因此也带有无线传输单元,另外汇聚节点同时还带有rj45接口。低功耗的现场仪表由于发射功率小,大部分不能直接和汇聚节点发生信号通信,只能通过其他仪表的转发即多跳才能和汇聚节点通信,即任何现场仪表可以直接或经过多跳与汇聚节点无线连接。具体的,图2为本发明实施例无线仪表数据传输及获取系统对应的路由图。如该路由图所示,系统中共33个仪表节点(图中由圆圈表示),圆圈中的数字表示该仪表节点的编号。每个所述仪表节点即对应图1中的一个现场仪表,也就是说,本文中所述的现场仪表、无线仪表、仪表节点、无线仪表节点、节点、分机指代的对象均相同。其中,汇聚节点(sinknode):即主机节点,图2中编号为0的节点,所有编号非0的节点所发出的信号,最终通过不同的路径到达此节点。跳(hop):表示任意两个仪表节点之间的传输路径。在图2中表示为一条边(edge),即图2中的一条边称为1跳。例如信号从10号节点传输到汇聚节点,称为1跳;5号节点经过3号节点然后到达汇聚节点称为2跳。在图2所示的33个仪表节点中,一跳分机共8个,两跳分机共18个,三跳分机共7个。各仪表节点最大经过两级中继节点,即3跳到达主机。路由条目(routeitem):从某个节点a到节点b的经历的所有节点组成的一条路径,本发明中称为路由路径。近场通讯(nearfieldcommunication):近距离无线通讯,本系统中各节点使用433mhz的公用频段,各节点没有外加功率放大功能。信号质量(signalquality):假设节点a发送数据给节点b,用b的接收rssi-b作为一个指标,节点b返回数据给a,用a的接收rssi-a作为另一个指标,用<rssi-b,rssi-a>这对rssi数值来描述本系统中a-b之间的信号质量。下行传输:从0号节点发起经过若干中继节点到达目的节点。上行传输:从目的节点经过若干中继节点到达0号节点。在本系统中,由主控系统发出的命令通道称为下行通道,由节点返回到主控系统的数据通道称为上行通道。本系统内所述路由路径的建立、维护和存储工作由主控系统(主控pc)负责。所有现场仪表都有独立的地址编号,汇聚节点的地址为0。每次数据传输过程由且仅由主控系统控制0号节点发起。所有现场仪表上电后,所述仪表节点的无线通信模块处于接收状态并开启硬件地址过滤。空闲时,所有仪表节点保持接收状态。当所述仪表节点接收到数据时,由接收状态触发为发送状态,每个仪表节点在数据发送完成后恢复至接收状态。所述主控系统和各仪表节点的工作过程由图3所示。图3为本发明实施例主控系统和无线仪表之间进行数据传输的方法流程图。如图3所示,一种无线仪表数据传输方法,具体包括:步骤101:主控系统建立并存储各个仪表节点的路由路径。所述步骤101具体包括:步骤1011:主控系统为每个所述仪表节点建立路由路径,并获取每条所述路由路径的信号质量。步骤1012:判断每个所述仪表节点的路由路径数目是否大于一条,获得第一判断结果。步骤1013:当所述第一判断结果表示所述仪表节点的路由路径为一条时,直接存储所述路由路径。步骤1014:当所述第一判断结果表示所述仪表节点的路由路径为多条时,按照所述信号质量从高到低的顺序排列并存储所述仪表节点的多条所述路由路径。步骤102:所述主控系统获取待查询仪表节点的节点id。步骤103:所述主控系统从所述各个仪表节点的路由路径中确定所述待查询仪表节点的路由路径。步骤103具体包括:步骤1031:根据待查询仪表节点的节点id从所述各个仪表节点的路由路径中提取出所述待查询仪表节点的所有路由路径;步骤1032:确定所述待查询仪表节点的所有路由路径中信号质量最高且可正常通信的路由路径为所述待查询仪表节点的路由路径。步骤104:所有所述仪表节点处于信号接收状态;所有所述仪表节点包括中继仪表节点和待查询仪表节点。所有所述仪表节点上电后,所述仪表节点均处于信号接收状态并开启硬件地址过滤。步骤105:所述主控系统根据所述待查询仪表节点的路由路径生成第一查询命令并将所述第一查询命令发送至所述中继仪表节点。主控系统发出的查询命令结构如下表1所示:表1查询命令结构所述步骤105具体包括:步骤1051:所述第一查询命令的内容包括下一跳节点id、原始节点id、原节点id、目的节点id和路由表。步骤1052:确定所述待查询仪表节点的路由路径为所述第一查询命令中的所述路由表。步骤1053:确定所述路由表中的第一个节点id为所述第一查询命令中的所述原始节点id和所述原节点id。步骤1054:确定所述路由表中的第二个节点id为所述第一查询命令中的所述下一跳节点id。步骤1055:确定所述路由表中的最后一个节点id为所述第一查询命令中的所述目的节点id。例如,当所述待查询仪表节点为34号节点时,由于34号节点只存在一条路由路径(0,10,34),即确定路由路径(0,10,34)为主控系统和汇聚节点发出的所述第一查询命令中的所述路由表。确定所述路由表(0,10,34)中的第一个节点id(0)为所述第一查询命令中的所述原始节点id和所述原节点id。确定所述路由表中的第二个节点id(10)为所述第一查询命令中的所述下一跳节点id。确定所述路由表中的最后一个节点id(34)为所述第一查询命令中的所述目的节点id。即生成的第一查询命令如下:表2第一查询命令格式步骤106:所述中继仪表节点接收到所述第一查询命令后,根据所述第一查询命令生成中继查询命令,并由接收状态触发为发送状态,将所述中继查询命令发送给所述待查询仪表节点;所述中继查询命令发送完成后,所述中继仪表节点恢复至接收状态。所述中继仪表节点为一个或多个。本例中中继仪表节点为10。所述步骤106具体包括:步骤1061:所述仪表节点接收到查询命令时,所述仪表节点根据所述查询命令确定自身为中继仪表节点或待查询仪表节点。所述步骤1061具体包括:所述查询命令的内容包括下一跳节点id、原始节点id、原节点id、目的节点id和路由表;当所述仪表节点接收到所述查询命令时,判断所述查询命令中的所述目的节点id和所述下一跳节点id与自身的节点id是否相同,获得第二判断结果;当所述第二判断结果表示所述目的节点id和所述下一跳节点id均与所述仪表节点自身的节点id相同时,确定自身为所述待查询仪表节点;当所述第二判断结果表示所述目的节点id与所述仪表节点自身的节点id不相同且所述下一跳节点id与所述仪表节点自身的节点id相同时,确定自身为中继仪表节点。步骤1062:当所述仪表节点确定自身为中继仪表节点时,由接收状态触发为发送状态并修改所述查询命令,将修改后的查询命令传输至下一跳仪表节点。步骤1062具体包括:当所述仪表节点确定自身为中继仪表节点时,根据所述路由表将所述查询命令中的所述下一跳节点id更改成所述路由表里自身的节点id后面紧邻的第一个节点id,将所述原节点id更换为自身的节点id,获得所述修改后的查询命令;所述仪表节点由接收状态触发为发送状态,并将所述修改后的查询命令传输至下一跳仪表节点;所述下一跳仪表节点的节点id与所述修改后的所述查询命令中的所述下一跳节点id相同。步骤107:所述待查询仪表节点接收到所述中继查询命令后,根据所述中继查询命令生成打包数据,并由接收状态触发为发送状态,将所述打包数据发送回所述中继仪表节点;所述打包数据发送完成后,所述待查询仪表节点恢复至接收状态。所述步骤107具体包括:步骤1071:所述仪表节点接收到查询命令时,所述仪表节点根据所述查询命令确定自身为中继仪表节点或待查询仪表节点。所述步骤1071具体包括:所述查询命令的内容包括下一跳节点id、原始节点id、原节点id、目的节点id和路由表;当所述仪表节点接收到所述查询命令时,判断所述查询命令中的所述目的节点id和所述下一跳节点id与自身的节点id是否相同,获得第二判断结果;当所述第二判断结果表示所述目的节点id和所述下一跳节点id均与所述仪表节点自身的节点id相同时,确定自身为所述待查询仪表节点;当所述第二判断结果表示所述目的节点id与所述仪表节点自身的节点id不相同且所述下一跳节点id与所述仪表节点自身的节点id相同时,确定自身为中继仪表节点。步骤1072:当所述仪表节点确定自身为所述待查询仪表节点时,由接收状态触发为发送状态并生成打包数据,将所述打包数据发送至下一跳仪表节点。步骤1072具体包括:当所述仪表节点确定自身为所述待查询仪表节点时,将接收到的所述查询命令中的所述原始节点id更换为自身的节点id,将所述目的节点id换为所述路由表中的第一个id,将所述下一跳节点id更换为接收到的所述查询命令中的所述原节点id,获得修改后的查询命令;将所述修改后的查询命令和所述待查询仪表节点自身采集的待查询数据打包,生成所述打包数据;所述仪表节点由接收状态触发为发送状态,并将所述打包数据传输至下一跳仪表节点;所述下一跳仪表节点的节点id与所述修改后的查询命令中的所述下一跳节点id相同。步骤108:所述中继仪表节点接收到所述打包数据后,根据所述打包数据生成中继打包数据,并由接收状态触发为发送状态,将所述中继打包数据发送至所述主控系统;所述中继打包数据发送完成后,所述中继仪表节点恢复至接收状态。步骤108具体包括:所述仪表节点接收到所述打包数据时,将所述打包数据解压获得查询命令和待查询数据;根据所述查询命令中的所述路由表将所述查询命令中的所述下一跳节点id更改成所述路由表里自身的节点id前面紧邻的第一个节点id,将所述原节点id更换为自身的节点id,获得修改后的查询命令;将所述修改后的查询命令和所述待查询数据打包,获得所述修改后的打包数据;所述仪表节点由接收状态触发为发送状态,并将所述修改后的打包数据传输至下一跳仪表节点;所述下一跳仪表节点的节点id与所述修改后的所述查询命令中的所述下一跳节点id相同。当有多个所述中继仪表节点时,各中继仪表节点均按照步骤108所述的方法工作。步骤109:所述主控系统接收所述中继打包数据。主控系统接收所述中继打包数据,解压后得到查询数据,便可以对查询数据进行显示和处理。可见,本发明提供的一种无线仪表数据传输及获取方法与现有技术的自组网系统协议相比,自组网系统中由仪表节点自主决定自身采集数据的发送,因此同一时刻各仪表节点一直在参与节点间链路质量的评估和计算,当系统内节点数量较多时,会造成信号同步或信道竞争问题突出,导致有效通信效率下降。而本发明所述的方法首先建立各个仪表节点的路由路径,由主控系统根据所述待查询仪表节点的路由路径获取所述待查询仪表节点的数据,并且同一时刻只有正在发送数据的仪表节点处于信号发送状态,其他仪表节点均处于信号接收状态,因此当有数据传输时,系统有且仅有一个节点占用无线信道,任意时刻没有信道竞争,有效提高了无线仪表数据的传输和获取效率,极大地提高了大规模仪表数据系统的通信效率。由于自组网系统里的各节点一直在参与节点间链路质量的评估和计算,因此节点之间通信过程过于复杂,容易导致软件固件的故障点增加,当某个仪表节点故障时,还会加剧未故障仪表节点的计算量,使得通信过程更加复杂。而本发明所述的方法一次为某个仪表节点建立多条路由路径,当某一条路由路径不能使用时,自动切换到其他路由路径,当某个节点的所有路由路径都无法使用时,重新为系统建立路由路径,减少了系统故障点对数据获取效率的影响,保障了系统数据传输的稳定性和通信效率。本系统内所述路由路径的建立、维护和存储工作由主控系统(主控pc)负责。在步骤1011主控系统为每个所述仪表节点建立路由路径,并获取每条所述路由路径的信号质量之前,首先要定义如下四部分的数据结构:第一部分:系统支持容量定义(最大跳数,最大分机数量)//-------------------------------------------------------------------#definemax_hop16#definemax_subdev_cnt254//------------------------------------------------------------第二部分:路由数据结构定义(链表环、节点id、该节点路由字符串)其中,整个路由数据结构(st_route_entry)表示一条具体的路由路径,但任意指定的一个仪表节点可能有多条路由路径,因此通过所述路由数据结构中的第一个成员元素(node_list_item)把同一个仪表节点的多条路由路径通过链表组织起来。其中,node_id表示本节点的节点id。本系统内的所有现场仪表都有独立的地址编号,某个仪表的地址编号即为该仪表节点的节点id。所述地址编号可以是之前就设置好的,由主控系统直接进行获取。也可以由主控系统重新为所有仪表节点进行编号,从而获取各个仪表节点的id。其中,node_route_str表示针对本节点id的一条具体的路由路径,若本节点的路由路径有多条,便依赖第一个元素(node_list_item)进行组织。此路由数据结构用来存储每一条从当前节点到主机节点的路由信息,用逗号隔开的字符串来表示。如当前21号节点经过34和10号节点到达主机节点(0号节点),则本字符串记录为“0,10,34,21”。其中仪表节点的分机id最多占用3字节和1个逗号,故空间定义为[max_hop*4+2]。第三部分:探测过程中需要使用的链表//-----------------------------------------------------------list_tlist_has_build[max_hop+1];//-------------------------------------------------------此数据结构是一个数组,每个数组元素为一个链表,此链表保存当前跳数所有的路由路径,并且是已经探测完成的各跳路由路径。例如图2所示的路由图中,共有33个仪表节点,其中一跳分机共8个,两跳分机共18个,三跳分机共7个。各仪表节点最大经过两级中继节点,即3跳到达主机,因此最大跳述(max_hop)为3跳。每一跳为一组,算上0跳节点的0节点一组,共有4组,即定义为4条链表:第1条链表(0跳链表):只有一个0节点。第2条链表(1跳链表):有12、3、10、22、30、27、23、24共8个节点,表示这8个节点经过1跳可以到达0节点,每个节点有若干条路由路径,本链表串联这8个节点的所有路由路径。第3条链表(2跳链表):有1、11、2、4、5、13、6、7、20、34、33、35、8、14、32、29、16、26共18个节点,表示这18个节点经过2跳可以到达0节点,每个节点有若干条路由路径,本链表串联这18个节点的所有路由路径。第4条链表(3跳链表):有21、9、15、17、18、19、31共7个节点,表示这7个节点经过3跳可以到达0节点,每个节点有若干条路由路径,本链表串联这7个节点的所有路由路径。在路由路径的建立过程中,实时保存探测成功的路由路径信息,并供下一跳探测时使用。其中,已建立的各跳路由路径信息均按照第三部分定义的list_t数据存储格式存储,如下表3所示,其中每个list保存当前跳的路由路径:表3各跳路由路径信息的存储格式list_0list_1list_2…list_cur_hop-1list_cur_hop…list_max_hop其中list_0表示0跳链表,list_1表示1跳链表,list_cur_hop表示当前跳链表,list_cur_hop-1表示当前跳的前一跳链表,list_max_hop表示最大跳链表。第四部分:系统中所有的仪表节点信息//------------------------------------------------------------list_tlist_subdev_info;//---------------------------------------------------------此链表保存系统中待处理的所有仪表节点的信息,待处理的仪表节点的数量为max_subdev。若已经探测到某个仪表节点到主机节点的路由路径,则将此仪表节点从本链表中删除,并开始下一个仪表节点的路由探测过程。此链表中所有仪表节点信息的数据存储格式如下表4所示。其中每个node标识一个仪表节点,每个node的数据格式为st_route_entry格式。表4所有仪表节点信息的数据存储格式node_1node_2node_3…node_k…node_max_subdev在主控系统定义完成如上四部分的数据结构后,便可以开始进行步骤1011建立各仪表节点的路由路径,并获取每条所述路由路径的信号质量。首先进行路由路径探测过程的初始化,初始化过程包括以下三步:(1)设置好系统所有仪表节点的节点id,加入到list_subdev_info链表中,作为待处理节点,即还没有找到到达主机路径的节点,探测时依次从此链表头部取一个结点,进行探测。(2)初始化list_has_build[]这个数组链表,各跳链表清空。本数组保存各跳路由情况,跳数作为数组索引,每跳由若干个节点的路由信息组成。(3)生成0跳路由信息,并添加到list_has_build[0]链表中,伪代码过程如下:探测过程的初始化完成后,开始节点路由路径的探测过程,即开始建立各仪表节点的路由路径。图4为本发明实施例所有跳数探测过程的流程图。如图4所示,假设当前待处理的跳数为cur_hop。从第1跳开始,判断当前待处理的跳数cur_hop是否小于等于最大跳数max_hop,获得第三判断结果。当所述第三判断结果为否时,表示已经建立完成所有跳数的路由路径探测,结束所有跳数的探测过程。当所述第三判断结果为是时,判断待处理分机链表(list_subdev_info)是否不为空,获得第四判断结果。当所述第四判断结果为否时,表示待处理分机链表(list_subdev_info)已经是一个空集,即所有节点的路由路径都已建立完成,此时结束所有跳数的探测过程。当所述第四判断结果为是时,判断上一跳路由链表(list_has_build[cur_hop-1])是否不为空,获得第五判断结果。当所述第五判断结果为否时,结束探测过程。当所述第五判断结果为是时,进入当前跳仪表节点的路由路径探测过程。当所述当前跳仪表节点的路由路径探测过程结束后,当前待处理的跳数cur_hop加1,进入下一跳仪表节点的探测过程,直到建立完成所有跳数的路由路径,即直到cur_hop大于max_hop。图5为本发明实施例当前跳仪表节点的路由路径探测过程的流程图。当所述第五判断结果为是时,进入当前跳仪表节点的路由路径探测过程。如图5所示,当前跳仪表节点路由路径的探测过程是从待处理分机链表(list_subdev_info)的头部取得一个节点node_k,然后判断node_k节点信息是否非空,获得第六判断结果。当所述第六判断结果为否时,表示待处理分机链表(list_subdev_info)已经是一个空集,即所有节点的路由路径都已建立完成,此时结束当前跳的探测过程。当所述第六判断结果为是时,进入node_k节点路由路径的探测过程。当所述node_k节点路由路径的探测过程结束后,取node_k节点的下一个节点信息作为当前的node_k节点,进入下一个节点的路由路径探测过程,直到遍历待处理分机链表(list_subdev_info)中的所有待处理节点。图6为本发明实施例当前节点(node_k节点)的路由路径探测过程的流程图。当所述第六判断结果为是时,进入node_k节点路由路径的探测过程。如图6所示,对于当前跳数为cur_hop的当前待测节点node_k,首先从上一跳(cur_hop-1)已建立路由路径的链表(list_has_build[cur_hop-1])里依次取出每个节点id的首条路径信息(route_string_k),判断(route_string_k)的路由信息是否非空,获得第七判断结果。当所述第七判断结果为否时,结束当前节点的探测过程。当所述第七判断结果为是时,将所述首条路径信息(route_string_k)加上当前node_k节点的节点id组成一个新的针对node_k节点的路由路径(route_string_probing)。然后从0号节点发出信号沿路由路径(route_string_probing)进行连续3次探测并获得每次探测的信号质量。判断连续3次探测是否均收到探测回复且3次信号质量是否均大于设定的信号质量阈值,获得第八判断结果。当第八判断结果表示连续3次探测均收到探测回复且3次信号质量均大于设定的信号质量阈值时,即可确定本路径可用,将本节点(node_k)从待处理链表(list_subdev_info)里删除,并把本条路由路径(route_string_probing)添加到以当前待处理跳数cur_hop为索引的链表(list_has_build[cur_hop])里,然后取(route_string_k)的下一条路由信息作为当前(route_string_k),开始node_k节点下一条路由信息的探测过程。当所述第八判断结果为否时,也继续从上一跳链表(list_has_build[cur_hop-1]里取下一条路径进行探测,重复探测过程,直到上一跳保存的所有路径遍历完成,针对本节点(node_k)的探测结束。为了方便理解,现对图6所示的当前节点(node_k节点)的路由路径探测过程进行举例说明。例如当前跳数cur_hop=2,当前待测节点node_k为34号节点时,首先从上一跳(1跳)已建立路由路径的链表(list_has_build[1])里从首条路由路径开始依次取出每条路径信息(route_string_k)。由图2路由图可知,系统1跳节点有12、3、10、22、30、27、23、24共8个节点,即1跳已建立路由路径的链表(list_has_build[1])中包括0号节点到12、3、10、22、30、27、23、24共8个节点的已建立的路由路径(0,12)、(0,3)、(0,10)、(0,22)、(0,30)、(0,27)、(0,23)、(0,24)。那么,首先取出首条路由路径信息(0,12)作为(route_string_k)。当(route_string_k)不为空时,将所述首条路径信息(0,12)加上当前node-k节点的节点id(34)组成一个新的针对node-k节点的路由路径(route_string_probing),即(0,12,34)。然后从0号节点发出信号沿路由路径(0,12,34)进行连续3次探测并获得每次探测的信号质量。信号探测过程由主控系统控制0号节点发起,首先由主控系统构造路由探测命令,本命令包含此次信号探测过程的目的节点,命令结构如下表5所示:表5探测命令结构当此探测命令从主控系统发送到汇聚节点后,汇聚节点通过无线传输模块发出。由于所有仪表节点均处于接收状态并启用了地址过滤,因此接收到此探测命令说明本节点为此探测命令的目的节点或是下一跳节点。节点信号质量探测过程主要包括以下步骤:步骤201:主控系统根据node-k节点的路由路径(route_string_probing)构造探测命令,将所述探测命令发送至汇聚节点,再由汇聚节点通过无线传输模块发出至仪表节点。步骤202:所述仪表节点接收到探测命令时,所述仪表节点根据所述探测命令确定自身为下一跳仪表节点或目的节点。所述步骤202具体包括:如表5所示,所述查询命令的内容包括下一跳节点id、原始节点id、原节点id、目的节点id、路由表和信号质量。步骤2021:当所述仪表节点接收到所述查询命令时,判断所述查询命令中的所述目的节点id和所述下一跳节点id与自身的节点id是否相同,获得第九判断结果。步骤2022:当所述第九判断结果表示所述目的节点id和所述下一跳节点id均与所述仪表节点自身的节点id相同时,确定自身为目的节点。所述步骤2022具体包括:当所述仪表节点确定自身为所述目的节点时,本仪表节点重新构造一个返回命令,将接收到的所述探测命令中的所述原始节点id更换为本节点的节点id,将所述目的节点id换为汇聚节点id,将所述下一跳节点id更换为接收到的所述探测命令中的所述原节点id,将所述原节点id换成本节点id,并由接收状态触发为发送状态,携带本节点接收的信号质量按照路由表指定的路径原路返回。步骤2023:当所述第九判断结果表示所述目的节点id与所述仪表节点自身的节点id不相同且所述下一跳节点id与所述仪表节点自身的节点id相同时,确定自身为下一跳仪表节点。所述步骤2023具体包括:当所述仪表节点确定本节点为下一跳仪表节点,而目的节点不是本节点时,说明本节点是作为转发节点,根据所述路由表将所述探测命令中的所述下一跳节点id更改成所述路由表里自身的节点id后面紧邻的第一个节点id,将所述原节点id更换为自身的节点id,并由接收状态触发为发送状态,携带本节点接收的信号质量构造成一个新的探测命令发送至下一跳节点即可。这样从0号节点沿路由路径(route_string_probing)进行连续3次探测并获得每次探测的信号质量。判断连续3次探测是否均收到探测回复且3次信号质量是否均大于设定的信号质量阈值,获得第八判断结果。当第八判断结果表示连续3次探测均收到探测回复且3次信号质量均大于设定的信号质量阈值时,即可确定本路径可用,将本节点(node_k)从待处理链表(list_subdev_info)里删除,并把本条路由路径(route_string_probing)添加到以当前待处理跳数cur_hop为索引的链表(list_has_build[cur_hop])里,同时将本条路由路径的信号质量存储在主控系统中,然后取(route_string_k)的下一条路由信息作为当前(route_string_k),开始node_k节点下一条路由信息的探测过程。当所述第八判断结果为否时,也继续从上一跳链表(list_has_build[cur_hop-1]里取下一条路径进行探测,重复探测过程,直到上一跳保存的所有路径遍历完成,针对本节点(node_k)的探测结束。这样主控节点依次遍历所有节点,能够收到返回指令并且信号质量满足设定要求,即可认为此条链路满足通信条件,保存针对本节点的路由路径。当针对某个仪表节点,探测到路径有多个时,按照信号质量排序保存。下面以一个更为具体的实施例说明所述节点信号质量的探测过程。延续上面的例子,假设主控系统对1跳和2跳仪表节点的探测已经完成,10号节点通过一跳可以到达0号节点,需要对34号节点的路由进行探测,即探测路径(0,10,34)这条路径是否正常。那么具体的信号探测过程如下:1、主控系统构造如下表6所示的探测命令,并通过汇聚节点发送出去,汇聚节点发出后,进入接收状态,等待探测命令的返回。表6汇聚节点转发给10号节点的探测命令格式2、由于汇聚节点转发给10号节点的探测命令中的下一跳节点id为10,故只有10号节点可以接收到此命令,10号节点接收到此命令后,对比命令的目的节点为34,不能匹配自身节点id,故10号节点需要转发此命令。转发时需要确定本节点(10号节点)的下一跳,查看路由表的内容,得知路由表中本节点id后面紧邻的第一个节点id为34,即确定本节点的下一跳为34。把原节点id修改成本节点id,即10,并且填入接收时的信号强度a。10号节点由接收状态触发为发送状态,并将修改后探测命令发送给下一跳仪表节点(34),发出此探测命令后,恢复至接收状态。从10号节点发出的探测命令如下:表710号节点转发给34号节点的探测命令格式3、上述10号节点转发给34号节点的探测命令的下一跳节点为34,故只有34号仪表节点可以接收到此命令,34号节点收到此探测命令后,确定自身为目的节点。此时34号节点需要构造一个能够返回到汇聚节点探测命令,通知主控系统本条路由信息能够到达本节点,按照原路返回即34→10→0。故本探测命令的下一跳为10,原始节点id和原节点id为自身编号34,目的节点是汇聚节点0,并携带接收此包的信号强度b,即34号节点发出的探测命令格式如下:表834号节点构造的返回到10号节点的探测命令格式4、由于上述34号节点返回到10号节点的探测命令的下一跳节点为10,故只有10号节点可以接收到此命令,10号节点接收到此命令后,对比命令的目的节点为0,不能匹配自身节点id,故10号节点需要转发此命令,转发时需要确定本节点的下一跳,查看路由表的内容,得知本节点的下一跳为0,把原节点id修改成本节点id,即10,并且填入接收时的信号强度c,发出此包后,进入接收状态。从10号节点发出的命令如下:表910号节点转发给0节点的探测返回命令格式5、由于上述10号节点转发给0节点的探测返回命令的下一跳节点为0,故只有0号节点可以接收到此命令,0号节点接收到此命令后,对比命令的目的节点为0,此包就是本节点要接收的探测命令返回包,故本节点只需把接收此包时的信号强度d添加上,返回给主控系统即可,即0号节点返回给主控系统的探测返回命令内容如下:表100号节点返回给主控系统的探测返回命令格式6、若在一定的时间(500ms)内,主控系统收到了0号节点返回的如上的探测命令,即可判定本次探测命令正常返回,若信号质量a,b,c,d都大于设定的阈值,即可认为:从0经过10号节点转发,到达34号节点这样一条路径是正常的。当主控系统连续三次判定路由路径(0,10,34)正常时,即保存此条路由路径。若主控系统在特定的时间内没有收到探测返回,本条路由路径探测失败,继续探测下一条路由路径。那么后期针对34号节点的数据查询就需要使用10号节点以外的其他1跳节点。当0号节点到达34号节点的路由路径仅有(0,10,34)一条时,直接存储所述该条路由路径。当0号节点到达34号节点的路由路径有多条时,比较多条路由路径的信号质量a,b,c,d。按照综合信号质量从高到低的顺序排列并存储34号节点的多条路由路径。按照上述方法建立完成所有仪表节点的路由路径后,系统内任意节点都有一条或多条路由路径,即系统内任意节点都有一条或多条传输路径可以到主控系统软件平台。那么主控系统需要访问某个仪表节点时,使用建立好的针对本节点的路由路径即可。当本节点到主控系统的路由路径只有一条时,直接采用该条路径。若此条路由路径不能工作时(数据没有返回),则进行路由重新建立的过程,重新建立本系统仪表节点的路由路径。当本节点到主控系统的路由路径有多条时,优先采用按照综合信号质量从高到低的顺序排列存储的多条路由路径中信号质量最高的路由路径。若此条路由路径不能工作时(数据没有返回),自动选择信号质量次好的通信链路进行数据通信。若该节点的全部路由路径都不可用时,则进行路由重新建立的过程。可见,本发明在各仪表节点路由路径建立的过程中一次为某个节点建立多条路由,当某一条路由不能使用时,自动切换到其他路由,当某个节点的所有路由都无法使用时,重新为系统建立路由,具有建立和更新路由的方法简单、可以随时进行路由路径切换等特点,保障了系统通信的稳定性。并且在数据传输过程中,当没有数据传输时,系统任意节点在任意时刻都只处于信号接收状态,当有数据传输时,系统有且仅有一个节点占用无线信道,从而保证了任意时刻各仪表节点之间没有信道竞争。即,本发明所述的路由路径建立方法使用较低的系统复杂度,减少了技术故障点,提高了系统稳定性,适用于仪表密集型的场站。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1