1.一种总线式探测控制系统节点折分扫描搜索方法,其特征在于包含下述步骤:一、系统初始化:从控制器读取每条回路上所有探测设备的类别和身份识别号信息,并将探测设备按照正整数1,2,3,...,n进行逐一编号;然后对n个探测设备进行折分,即对n/2取整,令i=int(n/2),并记1,2,3,...,i组成的整数集合M为探测设备的前半部分,i+1,i+2,...,n组成的正整数集合N为探测设备的后半部分,M={1,2,3,...,i},N={i+1,i+2,...,n};二、系统的折分扫描:初始化完毕,系统进入折分扫描状态,由控制器依次向探测设备前半部分组成的集合M和后半部分组成的集合N发送巡检信号;若集合M或集合N中的所有探测设备正常工作,则分别向控制器反馈正常工作的信息,控制器继续下一轮的扫描;若集合M或集合N中有探测设备反馈故障或报警信息,则进入步骤三,控制器转入故障或报警的搜索状态;三、系统故障或报警的折分搜索:系统故障或报警的折分搜索的主要步骤为:(一)是判断探测设备发生故障或报警的部分:判断是前半部分探测设备还是后半部分探测设备发生故障或报警,还是前、后两部分探测设备均发生故障或报警;(二)是确定搜索处理的先后顺序:按照先M后N的顺序逐步进行搜索处理,若M和N均发生故障或报警,则先将后半部分N探测设备的相关信息进行存储,再对前半部分M进行故障或报警的搜索定位处理;(三)是对要搜索处理部分的探测设备按照编号进行逐次折分搜索:在对每部分探测设备处理的过程中,对该部分探测设备按照编号逐次进行折分搜索,直至将该部分探测设备个数折分为1为止,然后将探测设备故障或报警信息情况反馈回控制器,按此方法不断循环,搜索出所有故障或报警的探测设备;步骤(三)具体的判断步骤是:(1)判断前半部分探测设备是否有故障或报警;若是,执行(2);若否,执行(4);(2)判断后半部分探测设备是否有故障或报警;若是,执行(5);若否,执行(3);(3)判断前半部分探测设备个数是否为1个;若是,执行(8);若否,执行(6);(4)判断后半部分探测设备个数是否为1个;若是,执行(8);若否,执行(7);(5)将后半部分探测设备的相关信息情况进行存储,存储后执行(3);(6)将前半部分探测设备折分为新的前半部分和新的后半部分,执行(1);(7)将后半部分探测设备折分为新的前半部分和新的后半部分,执行(1);(8)将故障或报警的探测设备ID号反馈回控制器,执行(9);(9)判断是否还存储有(5)中未处理的探测设备信息数据;若是,执行(10);若否,执行(11);(10)读取(5)中存储的后半部分探测设备的相关信息情况,执行(4);(11)故障或报警折分搜索结束,系统进入初始化状态。
技术领域
本发明涉及一种扫描搜索方法,尤其是一种总线式探测控制系统的扫描搜索方法。
背景技术
总线式探测控制系统以其容量大、实时性好、组网方便、通信距离远、数据传输速度快等特点在日常的火灾报警控制系统中得到了广泛的应用。
目前,火灾报警控制系统中对探测设备(节点)的实时扫描搜索普遍采用的方法为遍历法(轮询法)。即通过控制器向每一探测设备逐一发送信号,探测设备收到信号后,根据探测到的实时情况向控制器反馈正常、故障或报警的实时信息,与此同时,将探测设备的唯一身份识别号(ID)号反馈回去,控制器根据探测设备反馈回来的信息情况进行相应的处理。
这种方法存在的主要不足是:只有逐一扫描整条回路的所有探测设备,才能确定该条回路各探测设备的工作情况。如果考虑最不利的情况,比如一条回路上有一个探测器在控制器刚刚对其进行过扫描后发生报警,那么要确定该探测器报警则需要扫描完整个周期。当前,市场上广泛应用的火灾报警器每条回路最多能连接256个探测设备,如果将回路的256个探测设备扫描一遍(一个周期)才能确定该探测器故障或报警则将大大延缓报警时间,延误火灾报警的最佳时机。同时,探测器如果发生一次报警就认定为发生火灾,进行报警处理,也很大程度地增加了虚警或误报的可能,这样也不利于系统的稳定工作和长期运行。
发明内容
为了克服现有技术的不足,本发明提供了一种总线式探测控制系统节点扫描搜索方法——折分(二分)扫描搜索方法。
本发明解决其技术问题所采用的折分(二分)扫描搜索方法包括如下步骤:
一、系统初始化:从控制器读取每条回路上所有探测设备的类别和身份识别号信息,并将探测设备按照正整数1,2,3,…,n进行逐一编号;然后对n个探测设备进行折分,即对n/2取整,令i=int(n/2),并记1,2,3,…,i组成的整数集合M为探测设备的前半部分,i+1,i+2,…,n组成的正整数集合N为探测设备的后半部分,M={1,2,3,…,i},N={i+1,i+2,…,n});
二、系统的折分扫描:初始化完毕,系统进入折分扫描状态,由控制器依次向探测设备前半部分组成的集合M和后半部分组成的集合N发送巡检信号;若集合M或集合N中的所有探测设备正常工作,则分别向控制器反馈正常工作的信息,控制器继续下一轮的扫描;若集合M或集合N中有探测设备反馈故障或报警信息,则进入步骤三,控制器转入故障或报警的搜索状态;
三、系统故障或报警的折分搜索:系统故障或报警的折分搜索的主要步骤为:
(一)是判断探测设备发生故障或报警的部分:判断是前半部分探测设备还是后半部分探测设备发生故障或报警,还是前、后两部分探测设备均发生故障或报警;
(二)是确定搜索处理的先后顺序:按照先M后N的顺序逐步进行搜索处理,若M和N均发生故障或报警,则先将后半部分N探测设备的相关信息进行存储,再对前半部分M进行故障或报警的搜索定位处理;
(三)是对要搜索处理部分的探测设备按照编号进行逐次折分搜索:在对每部分探测设备处理的过程中,对该部分探测设备按照编号逐次进行折分搜索,直至将该部分探测设备个数折分为1为止,然后将探测设备故障或报警信息情况反馈回控制器,按此方法不断循环,搜索出所有故障或报警的探测设备;
步骤(三)具体的判断步骤是:
(1)判断前半部分探测设备是否有故障或报警;若是,执行(2);若否,执行(4);
(2)判断后半部分探测设备是否有故障或报警;若是,执行(5);若否,执行(3);
(3)判断前半部分探测设备个数是否为1个;若是,执行(8);若否,执行(6);
(4)判断后半部分探测设备个数是否为1个;若是,执行(8);若否,执行(7);
(5)将后半部分探测设备的相关信息情况进行存储,存储后执行(3);
(6)将前半部分探测设备折分为新的前半部分和新的后半部分,执行(1);
(7)将后半部分探测设备折分为新的前半部分和新的后半部分,执行(1);
(8)将故障或报警的探测设备ID号反馈回控制器,执行(9);
(9)判断是否还存储有(5)中未处理的探测设备信息数据;若是,执行(10);若否,执行(11);
(10)读取(5)中存储的后半部分探测设备的相关信息情况,执行(4);
(11)故障或报警折分搜索结束,系统进入初始化状态。
本发明的有益效果是总线式探测控制系统节点折分扫描搜索方法,与当前广泛应用的遍历法(轮询法)相比,具有以下优势:
(1)在正常工作情况下,系统通过将探测设备折分为两部分分别进行扫描,可大大缩短扫描时间、提高扫描频率、增强系统的可靠性。尤其是,回路连接的探测设备越多,其性能提高越明显,扫描搜索的效果越好。
(2)在故障或报警情况下,系统通过将故障或报警部分探测设备进行多次折分,能够更快速、准确地将故障或报警探测设备进行定位,及时、有效地将实时故障或报警信息反馈回控制器,从而控制系统能在第一时间做出相应的处理。
(3)在故障或报警情况下,系统在将故障或报警部分的探测设备进行多次折分的同时也对故障或报警部分的探测设备进行了多次的确认,使得故障或报警更加地确定,减少了误警或虚警的可能,增强了系统的稳定性。
本发明是在正常工作情况下,通过对探测设备进行折分扫描搜索,可以有效缩短巡检周期;在探测设备报警或故障情况下,可对报警或故障情况进行多次确认,提高了报警的准确性、增强了系统的稳定性和可靠性。
附图说明
图1是连接255个探测设备的火灾报警系统回路,其中第255个探测器发生报警。
图2是连接12个探测器的火灾报警系统回路,其中第2、4、6、8、10、12个探测器均发生报警。
图3是总线式探测控制系统节点折分扫描搜索方法的工作流程图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
折分(二分)扫描搜索方法包括如下步骤:
一、系统初始化:从控制器读取每条回路上所有探测设备的类别和身份识别号信息,并将探测设备按照正整数1,2,3,…,n进行逐一编号;然后对n个探测设备进行折分,即对n/2取整,令i=int(n/2),并记1,2,3,…,i组成的整数集合M为探测设备的前半部分,i+1,i+2,…,n组成的正整数集合N为探测设备的后半部分,M={1,2,3,…,i},N={i+1,i+2,…,n});
二、系统的折分扫描:初始化完毕,系统进入折分扫描状态,由控制器依次向探测设备前半部分组成的集合M和后半部分组成的集合N发送巡检信号;若集合M或集合N中的所有探测设备正常工作,则分别向控制器反馈正常工作的信息,控制器继续下一轮的扫描;若集合M或集合N中有探测设备反馈故障或报警信息,则进入(三),控制器转入故障或报警的搜索状态;
三、系统故障或报警的折分搜索:系统故障或报警的折分搜索的主要步骤为:
(一)是判断探测设备发生故障或报警的部分;判断是前半部分探测设备还是后半部分探测设备发生故障或报警,还是前、后两部分探测设备均发生故障或报警;
(二)是确定搜索处理的先后顺序;按照先M后N的顺序逐步进行搜索处理,若M和N均发生故障或报警,则先将后半部分N探测设备的相关信息进行存储,再对前半部分M进行处理;
(三)是对要搜索处理部分的探测设备按照编号进行逐次折分搜索;在对每部分探测设备处理的过程中,对该部分探测设备按照编号逐次进行折分搜索,直至将该部分探测设备个数折分为1为止,然后将探测设备故障或报警信息情况反馈回控制器,按此方法循环,搜索出所有故障或报警的探测设备。
步骤(三)具体的判断步骤是:
(1)判断前半部分探测设备是否有故障或报警。若是,执行(2);若否,执行(4);
(2)判断后半部分探测设备是否有故障或报警。若是,执行(5);若否,执行(3);
(3)判断前半部分探测设备个数是否为1个。若是,执行(8);若否,执行(6);
(4)判断后半部分探测设备个数是否为1个。若是,执行(8);若否,执行(7);
(5)将后半部分探测设备的相关信息情况进行存储,存储后执行(3);
(6)将前半部分探测设备折分为新的前半部分和新的后半部分,执行(1);
(7)将后半部分探测设备折分为新的前半部分和新的后半部分,执行(1);
(8)将故障或报警的探测设备ID号反馈回控制器,执行(9);
(9)判断是否还存储有(5)中未处理的探测设备信息数据。若是,执行(10);若否,执行(11);
(10)读取(5)中存储的后半部分探测设备的相关信息情况,执行(4);
(11)故障或报警折分搜索结束,系统进入初始化状态。
实施例一:图1为一条连接255个探测设备的火灾报警系统回路,假如回路中第255个探测器在一次扫描正常工作之后发生报警,若采用遍历(轮询)法,那么要确认此次报警,就只能将探测设备全部巡检一遍,进行255次扫描之后才能确定此次报警。即控制器共需进行255次扫描,才能确认1次报警信息。
而如果采用折分(二分)扫描搜索方法,那么具体的扫描搜索方法如下:
一、系统初始化:将回路探测设备按照1,2,3,…,255编号,并对其折分为前半部分M和后半部分N(M={1,2,3,…,127},N={128,129,…,255});
二、系统的折分扫描:由控制器依次向探测设备前半部分组成的集合M和后半部分组成的集合N发送巡检信号。前半部分探测设备正常工作,反馈回正常工作信息;后半部分探测设备有报警,反馈回报警信息,系统进入故障或报警的折分搜索状态;
三、系统故障或报警的折分搜索:故障或报警的折分搜索方法及过程如下:执行(1),判断前半部分探测设备是否有故障或报警,因为前半部分无报警,说明只有后半部分有故障或报警,则转到执行(4);因为后半部分探测设备数不为1,需继续进行折分,则转到执行(7);将后半部分探测设备进一步折分为新的前半部分128,129,…,191和新的后半部分192,193,…,255,转到执行(1);经过判定,依然是后半部分报警,转到执行(1);由于后半部分探测设备数还不为1,故转到执行(7);将后半部分探测设备进一步折分为新的前半部分192,193,…,223和新的后半部分224,225,…,255,转到执行(1);经过判定,依然是后半部分报警,继续执行(4);依此继续进行折分、判别;最终,先后共经过8次折分、8次判别,确定第255个探测器发生报警,进而向控制器返回该探测器的位置及ID信息,作出报警的相应处理。即控制器先后进行8次扫描,共8次对该探测器的报警信息进行了确认。在大大提高扫描速度、降低报警时间的同时,也增加了报警确认的次数。
实施例二:为考虑更复杂的情况,图2为一条连接12个探测器的火灾报警系统回路,假如回路中第2、4、6、8、10、12个探测器均发生报警,如采用遍历(轮询)法,要将这些报警探测器全部扫描搜索出来,那么就必须进行2+4+6+8+10+12=42次扫描,而如果采用折分(二分)扫描搜索方法,那么具体的扫描搜索方法如下:
一、系统初始化:将回路探测器按照1,2,3,…,12编号,并对其折分为前半部分M和后半部分N(M={1,2,3,…,6},N={7,8,…,12});
二、系统的折分扫描:由控制器依次向探测设备前半部分组成的集合M和后半部分组成的集合N发送巡检信号。若探测设备正常工作,反馈回正常工作信息;若探测设备有报警,反馈回报警信息,系统进入故障或报警的折分搜索状态;
三、系统故障或报警的折分搜索方法及判断过程:
执行(1),因为前半部分1,2,3,…,6号探测器有报警,故执行(2);因为后半部分7,8,…,12号探测器也有报警,故执行(5),将后半部分7,8,…,12号探测器信息暂时存储,执行(3);因为前半部分探测器为1,2,3,…,6号个数不为1,故执行(6),将1,2,…,6号探测器进一步折分为和新的前半部分1,2,3号和新的后两半部分4,5,6探测器,执行(1);因为前半部分1,2,3号探测器有报警,故执行(2);因为后半部分4,5,6号探测器也有报警,故执行(5),将4,5,6号探测器信息暂时存储,执行(3);因为前半部分1,2,3号探测器个数不为1,故执行(6),将1,2,3号探测器再进一步折分为前半部分1号和后半部分2,3号探测器,执行(1);因为前半部分1号探测器已无报警,故执行(4);因为后半部分2,3号探测器个数不为1,故执行(7),将2,3号探测器继续折分为前半部分2号和后半部分3号探测器,执行(1);因为前半部分2号探测器有报警而后半部分3号探测器无报警,故执行(3);因为前半部分2号探测器个数为1,故执行(8),将2号探测器报警信息反馈回控制器,执行(9);因为有存储的末处理的探测设备信息数据,故执行(10),读取存储的4,5,6号探测器信息,执行(4);因为4,5,6号探测器个数不为1,故执行(7),将其折分为前半部分4号和后半部分5,6号探测器,执行(1);因为前半部分4号和后半部分5,6号探测器均有报警,故执行(5),将后半部分5,6号探测器信息暂时存储,执行(3);因为前半部分4号探测器报警且个数为1,故执行(8),将4号探测器报警信息反馈回控制器,执行(9);因为有存储的末处理的探测设备信息数据,故执行(10),读取存储的5,6号探测器信息,执行(4);因为5,6号探测器个数不为1,故执行(7),将其折分为前半部分5号和后半部分6号探测器,执行(1);因为前半部分5号探测器无报警,后半部分6号探测器报警且个数为1,故执行(8),将6号探测器报警信息反馈回探测器,执行(9);因为还有存储的末处理的探测设备信息数据,故执行(10),读取存储的7,8,…,12号探测器信息,执行(4);因为7,8,…,12号探测器个数不为1,故执行(7),将其折分为新的前半部分7,8,9和新的后半部分10,11,12两部分探测器,执行(1);因为前半部分7,8,9号和后半部分10,11,12号探测器均有报警,故执行(5),将10,11,12号探测器信息暂时存储,执行(3);因为前半部分7,8,9号探测器个数不为1,故执行(6),将7,8,9号探测器再进一步折分为前半部分7号和后半部分8,9号探测器,执行(1);因为前半部分7号探测器无报警,故执行(4);因为后半部分8,9号探测器个数不为1,故执行(7),将8,9号探测器继续折分为前半部分8号和后半部分9号探测器,执行(1);因为前半部分8号探测器有报警而后半部分9号探测器无报警且前半部分探测器个数为1,故执行(8),将8号探测器报警信息反馈回控制器,执行(9);因为还有存储的末处理的探测设备信息数据,故执行(10),读取存储的10,11,12号探测器信息,执行(4);因为后半部分探测器个数不为1,故执行(7),将其折分为前半部分10号和后半部分11,12号探测器,执行(1);因为前后两半部分均有报警,故执行(5),将后半部分11,12号探测器信息暂时存储,执行(3);因为前半部分10号探测器报警且个数为1,故执行(8),将10号探测器报警信息反馈回控制器,执行(9);因为还有存储的末处理的探测设备信息数据,故执行(10),读取存储的11,12号探测器信息,执行(4);因为后半部分11,12号探测器个数不为1,故执行(7),将其折分为前半部分11号和后半部分12号探测器,执行(1);因为前半部分11号探测器无报警,后半部分12号探测器报警且个数为1,故执行(8),将12号探测器报警信息反馈回控制器,执行(9);因为已经没有存储的末处理的探测设备信息数据,故执行(11),系统折分搜索结束,进入初始化状态。
这样先后共进行了11次折分6次存储和6次读取,就将2、4、6、8、10、12共6个报警探测器的信息全部反馈回控制器,扫描次数与时间也远小于采用轮询法的42次扫描。




评论
全部评论
共{{commentCount}}条{{rs.Msg_Content}}