一种在线快速搜索单线器件序列号的方法及系统转让专利

申请号 : CN201910220559.8

文献号 : CN109992534B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李恬晨

申请人 : 华北电力大学

摘要 :

本发明公开了一种在线快速搜索单线器件序列号的方法及系统,在测试过程中,通过生成一条正式码,依次发送给总线,从而得到一个器件的序列号,正式码就是所得到的序列号,而在生成正式码的同时,还生成一条预备码,预备码不是器件的序列号,但它可指导下一条正式码的生成,因而主机只需极少的次数即可识别总线上的全部器件,不需对总线进行额外的测试即可判断是否搜索完毕,而搜索过程中可自动生成序列号,供主机使用,不必人为另行输入,因而可较大程度上减小制造和维护的工作量,实用性高。

权利要求 :

1.一种在线快速搜索单线器件序列号的方法,其特征在于:包括以下步骤,步骤一,主机发送搜索ROM命令;

步骤二,所有单线器件接收到命令之后发送其序列号上的数据供主机读取,根据单线器件搜索协议,主机先读取所有单线器件的序列号第一位的数据,获得第一位的判别码;

步骤三,主机调用位处理子程序,根据第一位的判别码以及位处理子程序,生成第一位的正式码,并根据位处理子程序生成第一位的预备码;

步骤四,主机根据生成的第一位正式码进行序列号的挑选,挑选出与第一位正式码相同的若干单线器件的序列号;

步骤五,主机在剩下的若干单线器件中,继续重复步骤二至四的过程,得到下一位的正式码和预备码,如此往复循环,直至完成一轮所有位的数据读取和生成过程,继而得到一组正式码与预备码,此组正式码即为其中一个单线器件的序列号;

步骤六,主机保存上一组的正式码与预备码,并继续重复步骤一至五的过程,并生成余下单线器件的序列号,继而搜索到所有单线器件的序列号;

预备码生成方法为,对编码中的每一位,依次进行如下操作:如果主机接收到的判别码为“01”,则该位的预备码为0;如果主机接收到的判别码为“10”,该位的预备码为0;如果主机接收到的判别码为“00”,则检查对应位的现有预备码,若现有预备码为0,则将该位的预备码改为1,且将该位之前所有位的预备码,改为对应位的正式码,若现有预备码为1,则将该位的预备码改为0。

2.根据权利要求1所述的一种在线快速搜索单线器件序列号的方法,其特征在于:所述步骤三中,调用所述位处理子程序前,先由主机生成一组预备码,其预备码位上的数值均设置为0。

3.根据权利要求1所述的一种在线快速搜索单线器件序列号的方法,其特征在于:所述正式码生成方法为,对编码中的每一位,依次进行如下操作:如果主机接收到的判别码为“01”,则该位的正式码为0;如果主机接收到的判别码为“10”,则该位的正式码为1;如果主机接收到的判别码为“00”,则检查对应位的预备码,若预备码为0,则该位的正式码为0;若预备码为1,则该位的正式码为1,待查找完所有位上的数据,即生成一条正式码,也即某一单线器件的序列号。

4.根据权利要求1所述的一种在线快速搜索单线器件序列号的方法,其特征在于:所述步骤四中,所述序列号的挑选过程为,主机在对应位生成一位正式码数据后,总线上的所有单线器件读取该数据,如果其序列号的当前位与主机生成的正式码数据相同,此单线器件的序列号继续挂在总线上,等待挑选;如果其序列号的当前位与主机生成的正式码数据不同,此序列号退出总线通讯,不再向总线发送数据,直到主机再次发送复位脉冲将其唤醒。

5.根据权利要求1所述的一种在线快速搜索单线器件序列号的方法,其特征在于:所述步骤六中,所有单线器件序列号的搜索过程完成的判断标准为所有预备码的所有位全部为

0。

6.一种在线快速搜索单线器件序列号的系统,其特征在于:包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至5任一所述方法中的步骤。

说明书 :

一种在线快速搜索单线器件序列号的方法及系统

技术领域

[0001] 本发明涉及单线总线器件组网应用领域,尤其涉及一种在线快速搜索单线器件序列号的方法及系统。

背景技术

[0002] 单线(1-Wire)器件是美国Dallas半导体公司的产品。它是基于一根信号线实现互连通信的系列集成电路。单线器件易于实现工业现场温度采集、开关量控制等自动化控制网。截至2011年,单线器件已有30多种,包括DS1820(温度传感器)、DS2405(开关)、DS2450(A/D转换器)等。单线总线是一种简单的信号交换方式,它是在主机与外围器件之间通过一条线路进行双向通信。所有的单线总线器件都有一个共同的特征:在出厂时每个器件都有一个与其它任何器件互不重复的固定的64位2进制序列号。也就是说,每一个器件都是唯一的。这就使得在众多连到同一总线的器件中可以选择出任意一个器件。一旦器件的序列号已知,通过访问序列号,任何器件都可被唯一地选出以用于通信。单线总线通信具有线路简单、硬件开销少、成本低廉、便于扩展和维护等优点,已广泛应用于各个领域。
[0003] 以温度测量为例简单说明,温度测量可采用测温电阻或单线器件等方法,测温电阻的阻值随温度变化,通过测其阻值即可得到对应的温度,但是测量阻值需要一套电路,但测量点很多时,则需要多套电路和大量连线,总体结构非常复杂。采用单线器件DS1820,它完成了前端数字化,且用3根连线即可实现多点测温,结构简单,测温精度高,连接方便,维护方便。
[0004] 采用单线器件组网时,主机需要与指定序列号的器件进行通讯。器件的序列号可以通过离线测试来获取。在文献1“由单片机和多片DS1820组成的多点温度测控系统《.国外电子元器件》2001年第1期,戴蓉等.”中,离线测试的方法是,将所用的DS1820逐个与主机挂接,以读出其序列号。检测到序列号之后,需要将序列号人为输入到应用系统中。这造成在生产和使用过程中,需要额外测试,且维护不便。器件的序列号也可利用搜索ROM指令在线测试。但是如果采用简单的逐位检测法来进行识别,需要检测的次数为264。根据器件特性,每检测一次需要13毫秒,则全部检测需要76亿年,这是不可行的,因而需要寻找快速检测方法。

发明内容

[0005] 本发明所要解决的技术问题是:提供一种搜索效率高且逻辑运算简单的在线快速搜索单线器件序列号的方法及系统。
[0006] 为了解决上述技术问题,本发明是通过以下技术方案实现的:
[0007] 一种在线快速搜索单线器件序列号的方法,包括以下步骤,
[0008] 步骤一,主机发送搜索ROM命令;
[0009] 步骤二,所有单线器件接收到命令之后发送其序列号上的数据供主机读取,根据单线器件搜索协议,主机先读取所有单线器件的序列号第一位的数据,获得第一位的判别码;
[0010] 步骤三,主机调用位处理子程序,根据第一位的判别码以及位处理子程序,生成第一位的正式码,并根据位处理子程序生成第一位的预备码;
[0011] 步骤四,主机根据生成的第一位正式码进行序列号的挑选,挑选出与第一位正式码相同的若干单线器件的序列号;
[0012] 步骤五,主机在剩下的若干单线器件中,继续重复步骤二至四的过程,得到下一位的正式码和预备码,如此往复循环,直至完成一轮所有位的数据读取和生成过程,继而得到一组正式码与预备码,此组正式码即为其中一个单线器件的序列号;
[0013] 步骤六,主机保存上一组的正式码与预备码,并继续重复步骤一至五的过程,并生成余下单线器件的序列号,继而搜索到所有单线器件的序列号。
[0014] 作为优选,所述步骤三中,调用所述位处理子程序前,先由主机生成一组预备码,其预备码位上的数值均设置为0。
[0015] 作为优选,所述正式码生成方法为,对编码中的每一位,依次进行如下操作:如果主机接收到的判别码为“01”,则该位的正式码为0;如果主机接收到的判别码为“10”,则该位的正式码为1;如果主机接收到的判别码为“00”,则检查对应位的预备码,若预备码为0,则该位的正式码为0;若预备码为1,则该位的正式码为1,待查找完所有位上的数据,即生成一条正式码,也即某一单线器件的序列号。
[0016] 作为优选,所述预备码生成方法为,对编码中的每一位,依次进行如下操作:如果主机接收到的判别码为“01”,则该位的预备码为0;如果主机接收到的判别码为“10”,该位的预备码为0;如果主机接收到的判别码为“00”,则检查对应位的现有预备码,若现有预备码为0,则将该位的预备码改为1,且将该位之前所有位的预备码,改为对应位的正式码,若现有预备码为1,则将该位的预备码改为0。
[0017] 作为优选,所述步骤四中,所述序列号的挑选过程为,主机在对应位生成一位正式码数据后,总线上的所有单线器件读取该数据,如果其序列号的当前位与主机生成的正式码数据相同,此单线器件的序列号继续挂在总线上,等待挑选;如果其序列号的当前位与主机生成的正式码数据不同,此序列号退出总线通讯,不再向总线发送数据,直到主机再次发送复位脉冲将其唤醒。
[0018] 作为优选,所述步骤六中,所有单线器件序列号的搜索过程完成的判断标准为所有预备码的所有位全部为0。
[0019] 为达上述目的,本发明还公开了一种在线快速搜索单线器件序列号的系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至7任一所述方法中的步骤。
[0020] 与现有技术相比,本发明的有益之处是:所述在线快速搜索单线器件序列号的方法及系统,主机每向总线发送一次数据,即可得到一个在线器件的序列号,因而主机只需极少的次数即可识别总线上的全部器件,不需对总线进行额外的测试即可判断是否搜索完毕,而搜索过程中可自动生成序列号,供主机使用,不必人为另行输入,因而可较大程度上减小制造和维护的工作量,实用性高。

附图说明

[0021] 下面结合附图对本发明进一步说明:
[0022] 图1是查找一个单线总线器件序列号的流程示意图;
[0023] 图2是查找所有单线总线器件序列号的流程示意图;
[0024] 图3是位处理子程序的处理流程示意图。

具体实施方式

[0025] 下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围:
[0026] 一种在线快速搜索单线器件序列号的方法,其单线器件的工作过程以及工作原理参考文献2“DALLAS公司半导体手册.1996”中的单线器件的工作原理,在本实施例中,如图1至图3所示,以搜索64位序列号为例,设定序列号位数为n位,其n取值范围是0-63,,则所述搜索方法包括以下步骤,
[0027] 步骤一,主机向总线网络发送复位脉冲,然后读取存在脉冲,再向总线网络发送搜索ROM命令;
[0028] 步骤二,所有的单线器件在接收到主机的搜索ROM命令之后,根据搜索协议,将其对应的序列号从高位到低位依次发送当前位的原码和反码,如若当前位的原码为“1”,则反码为“0”,而若原码为“0”,则反码为“1”,每个位置的原码和反码均分两次送出,所有单线器件的原码及反码经“线与”逻辑运算后,供主机读取;主机逐位依次读取所有单线器件的序列号每一位上对应的所有数据,每读取一位数据后,根据读取的数据以及自定义数据识别规则,得到一个判别码,在实际应用中,主机开始会先读取所有单线器件的序列号第一位上的数据,继而得到第一位的判别码;
[0029] 步骤三,主机调用位处理子程序,根据第一位的判别码以及位处理子程序,生成第一位的正式码,并根据位处理子程序生成第一位的预备码,在本实际应用过程中,设判别码为a,所述自定义数据识别规则设定为,先设a为“00”、“01”、“10”、“11”中的任意一个,若判别码为“00”,则表示有单线器件连接着,在此数据位上,它们的值发生冲突,也即,所有单线器件的序列号在此数据位上,其上的值既有“1”,也有“0”,因而表现为值发生冲突;若判别码为“01”,则表示有器件连接着,在此数据位上,它们的值均为0,同理,所有单线器件的序列号在此数据位上,其上的都为“0”;若判别码为“10”,则表示有器件连接着,在此数据位上,它们的值均为1,同理,所有单线器件的序列号在此数据位上,其上的值都为“1”;若判别码为“11”,则表示没有器件与单线总线器件相连;
[0030] 另外,在调用所述位处理子程序前,先由主机生成一组预备码,其预备码位上的数值均设置为0,在位处理子程序中,如图1所示,设x(n)为正式码,y(n)为预备码,n的取值为0到63。所述位处理子程序包括正式码生成程序以及预备码生成程序,其中,所述正式码生成程序的生成过程为,对编码中的每一位,依次进行如下操作:如果主机接收到的判别码a为“01”,则该位的正式码x(n)为0;如果主机接收到的判别码a为“10”,则该位的正式码x(n)为1;如果主机接收到的判别码a为“00”,则需进一步检查对应位的预备码,若预备码y(n)为0,则该位的正式码x(n)为0;若预备码y(n)为1,则该位的正式码x(n)为1,待查找完所有位上的数据,即生成一条正式码,也即某一在线器件的序列号;所述预备式码生成程序的生成过程为,对编码中的每一位,依次进行如下操作:如果主机接收到的判别码a为“01”,则该位的预备码y(n)为0。如果主机接收到的判别码a为“10”,该位的预备码y(n)为0。如果主机接收到的判别码a为“00”,则需进一步检查对应位的现有预备码,若现有预备码为0,则将该位的y(n)预备码改为1,且将该位之前所有位的预备码y(n-1),改为对应位的正式码x(t),其中t=0,1,2……n-1,若现有预备码为1,则将该位的预备码y(n)改为0。
[0031] 步骤四,主机根据生成的第一位正式码数据进行序列号的挑选,挑选出第一位与生成的第一位正式码数据相同的若干单线器件的序列号,在实际应用中所述序列号的挑选过程为,当主机在对应位生成第一位正式码数据后,总线上的所有单线器件读取该数据,如果其序列号的当前位与主机生成的第一位正式码数据相同,此单线器件的序列号将继续挂在总线上,等待进一步挑选;如果其序列号的对应位与主机生成的第一位正式码数据不同,此序列号即退出总线通讯,不再向总线发送数据,直到主机再次发送复位脉冲将其唤醒,因而较大程度上提高了序号当前位的数据筛选效率;
[0032] 步骤五,主机在剩下的若干单线器件中继续重复步骤二至四的过程,得到下一位的正式码和预备码,直至完成一轮所有位的数据读取和生成过程,继而得到一组正式码与预备码,此组正式码即为其中一个单线器件的序列号;
[0033] 步骤六,主机保存上一组的正式码与预备码,并继续重复步骤一至五的过程,并生成余下单线器件的序列号,继而搜索到所有单线器件的序列号,当所有单线器件序列号的搜索过程完成后,预备码的所有位全部为0,如图2所示,设初始预备码为y(t)=0,t的取值为0至63,然后调用位处理子程序,查找单线器件序列号,在查找出一个单线器件的序列号之后,当y(t)不全为0时,继续返回查找程序,查找下一个单线器件的序列号,如此往复循环,直至当y(t)全为0时,结束序列号的搜索查找过程。
[0034] 为达上述目的,本发明还公开了一种在线快速搜索单线器件序列号的系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法中的任意步骤。
[0035] 下面结合具体应用实施例进行说明,在实施例中,以单线总线上挂接6个12位序列号的单线器件为例,来说明本发明的搜索过程。
[0036] 如表1所示,表中给出了6个单线总线器件A、B、C、D、E、F的序列号,其位数均为12位,在本发明中,所述技术方案的应用并不限于12位序列号,对于其它位数的序列号同样适用。
[0037] 搜索过程开始后,主机发送复位脉冲,读取存在脉冲,再向总线网络发送搜索ROM命令,6个单线总线器件接收到主机发送的搜索ROM命令后,将其序列号上的处于位地址1上的所有数据发送至主机,在此过程中,数据分两次发送,第一次发送,6个单线总线器件将其序列号上处于位地址1上的所有值的原码均发送至主机,第二次发送,6个单线总线器件将其序列号上处于位地址1上的所有值的反码均发送至主机,主机分两次读取发送的数据,由于在本实施例中,6个单线总线器件的序列号位于位地址1上的所有值的原码及反码不相同,值“1”和值“0”均存在,因而依据自定义数据识别规则,主机接收得到的判别码为“00”,然后调用位处理子程序,首先将预备码全置为0,,而由于预先设置的预备码在位地址1上的值为“0”,因而,根据位处理子程序中正式码的生成过程,在第一次读取过程中,主机在位地址1上生成的数据为“0”,也即为位地址1上的正式码,再根据预备码的生成过程,由于预置的预备码为0,因而第一次读取过程中,位地址1上的预备码为1,如此,则生成了位地址1上的正式码和预备码,其后,进行序列号的挑选过程,由于位地址1上的值为0,因而根据序列号的挑选方法,由于单线总线器件E、F的序列号中处于位地址1上的值为1,其与对应位的生成数据不相同,因而,其单线总线器件会退出总线通讯,不再向总线发送数据,直到主机再次发送复位脉冲将其唤醒,而主机则会继续读取剩下的A、B、C、D中的序列号在位地址2上的所有数据,包括原码及反码,同样地,剩下的单线总线器件A、B、C、D会将其序列号上的处于位地址2上的所有数据发送至主机,在此过程中,数据分两次发送,第一次发送,4个单线总线器件将其序列号上处于位地址2上的所有值的原码均发送至主机,第二次发送,4个单线总线器件将其序列号上处于位地址2上的所有值的反码均发送至主机,主机分两次读取发送的数据,其读取过程以及数据生成方式如上述位地址1中的方式相同,继而得到位地址2中的正式码以及预备码,如此往复并逐位生成数据,直至12位数据全部读取并生成完毕,继而完成第一轮数据的读取和生成过程,在此过程中,形成了一组12位的正式码以及预备码,此组正式码即为其中单线总线器件A的序列号,也即为最小的序列号,而此组预备码则为下一轮数据读取的参考预备码。
[0038] 在第一轮的数据读取和生成过程中,当读取至位地址3时,由于单线总线器件C、D的序列号对应位上值均为1,与对应位生成的数据不相同,因而在位地址3读取生成完之后,单线总线器件C、D会退出总线通讯,不再向总线发送数据,直到主机再次发送复位脉冲将其唤醒,同样地,当读取值位地址12时,由于单线总线器件B的序列号对应位上值为1,与对应位生成的数据不相同,因而在位地址12读取生成完之后,单线总线器件B会退出总线通讯,不再向总线发送数据,直到主机再次发送复位脉冲将其唤醒。
[0039] 根据上述主机读取数据和生成数据的方法,以及序列号的挑选方式,进行余下5轮的数据读取和生成过程,继而得到剩余5个单线总线器件的序列号,其中,主机读取到的单线总线器件的顺序为A、B、D、C、F、E,其序列号值依次增大。
[0040] 通过6轮操作,产生了6个器件的序列号,与已知的序列号相同。6轮搜索后,预备码又全部变为0,表明搜索结束。
[0041] 下表1为序列号的搜索过程:
[0042] 表1
[0043]
[0044] 需要强调的是:以上仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。