发明内容
针对现有技术中的一个或多个缺陷,本申请提供了一种消防控制系统,包括:
多个执行单元,所述执行单元配置成执行预设的功能;
通信单元;和
控制平台,所述控制平台通过所述通信单元与所述多个执行单元建立双向通信,其中所述控制平台上配置有多个软件功能模块,所述多个软件功能模块之间通过客户端-服务器模式进行通讯,或者通过星型模式进行通讯,
所述多个软件功能模块由所述多个执行单元的功能聚合而成。
根据本发明的一个方面,所述多个软件功能模块通过以下方式聚合而成:
将所述多个执行单元的功能按照能拆解的最小粒度进行拆解;
根据拆解后的最小粒度的功能之间的亲和度,聚合形成所述软件功能模块。
根据本发明的一个方面,在所述星型模式中包括消息转发模块,与所述消息转发模块通讯的其他软件功能模块可向所述消息转发模块订阅感兴趣消息。
根据本发明的一个方面,所述消息转发模块根据消息的优先级确定消息转发顺序。
根据本发明的一个方面,所述多个执行单元包括火灾报警控制器、联动控制器、气体灭火控制器、防火门监控器、电气火灾监控器和消防电源监控器中的一个或多个。
根据本发明的一个方面,所述多个软件功能模块包括事件管理模块、视图界面管理模块、历史记录维护模块和指示管理模块。
根据本发明的一个方面,每个软件功能模块具有根据其自身数据确定的优先级。
根据本发明的一个方面,每个软件功能模块的优先级根据该软件功能模块的数据归一化并加权平均从而确定。
根据本发明的一个方面,所述软件功能模块配置成可发出命令和事件消息,所述命令和事件消息具有可调节的重要性等级数据。
根据本发明的一个方面,所述消息转发模块配置成可接收新加入的软件功能模块的注册,并根据所述新加入的软件功能模块的优先级动态更新优先级列表。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
在本发明的描述中,需要理解的是,术语"中心"、"纵向"、"横向"、"长度"、"宽度"、"厚度"、"上"、"下"、"前"、"后"、"左"、"右"、"竖直"、"水平"、"顶"、"底"、"内"、"外"、"顺时针"、"逆时针"等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语"第一"、"第二"仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有"第一"、"第二"的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,"多个"的含义是两个或两个以上,除非另有明确具体的限定。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语"安装"、"相连"、"连接"应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接:可以是机械连接,也可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征之"上"或之"下"可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征"之上"、"上方"和"上面"包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征"之下"、"下方"和"下面"包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度小于第二特征。
下文的公开提供了许多不同的实施方式或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本发明提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1示出了根据本发明一个实施例的消防控制系统100,下面参考图1描述。
如图1所示,消防控制系统100包括多个执行单元101、通信单元103和控制平台105。其中所述执行单元101配置成执行预设的功能,执行单元101包括但不限于火灾报警控制器、联动控制器、气体灭火控制器、防火门监控器、电气火灾监控器和消防电源监控器中的一个或多个。控制平台103可通过服务器、中央控制器或者其他类型的计算设备来实现,其上可运行相应的控制软件。通信单元103用于在执行单元101和控制平台105之间建立双向通讯,从而执行单元101可以将其运行状态和数据上传到控制平台105,控制平台105可以向执行单元101发送相应的控制指令,以及可以发送相应的事件通知。
如图1所示,控制平台105上配置有多个软件功能模块,所述多个软件功能模块之间通过客户端-服务器模式进行通讯,或者通过星型模式进行通讯。下文将对客户端-服务器模式以及星型模式进行详细描述。所述多个软件功能模块包括事件管理模块、视图界面管理模块、历史记录维护模块和指示管理模块。控制平台105上的多个软件功能模块是由所述多个执行单元的功能聚合而成。
图2示出了根据本发明实施例的客户端-服务器模式。如图2所示,其中具有客户端角色和服务器角色。在本发明中,控制平台105上的一个或多个软件功能模块可作为服务器角色,一个或多个软件功能模块可作为客户端角色。根据本发明的实施例,在客户端与服务器之间进行通信时,仅可以由客户端发起通信请求,服务器进行应答,而不可以由服务器端发起请求。根据亲和度矩阵中的关系值,重新构建模块的关系矩阵,按照系统的设计指标,将只有相互关联紧密模块之间关系定义为单线关联关系,采用将两两相关均关联紧密的模块定义为树状关联关系。
图3示出了根据本发明实施例的星型模式。在图3的星型模式中,包括消息转发模块,与所述消息转发模块通讯的其他软件功能模块可向所述消息转发模块订阅感兴趣消息。如图3中所示,软件功能模块A向消息转发模块汇报事件B和事件E,软件功能模块向所述消息转发模块订阅模块A的B类事件,因此当消息转发模块接收到来自软件功能模块A的事件B的通知时,会自动将该事件通知给软件功能模块B。对于软件功能模块C订阅了模块A的E类事件,因此消息转发模块C会将事件E通知软件功能模块C。树状关系的架构引入了一个核心消息分发节点,用于对任意两个模块的关联进行管理,将关联紧密的多个模块转换为每个模块和核心节点的一对一耦合,将网状结构转换为星型结构,实现一定程度的解耦。
根据本发明的一个优选实施例,所述多个软件功能模块通过以下方式聚合而成:
将所述多个执行单元的功能按照能拆解的最小粒度进行拆解;
根据拆解后的最小粒度的功能之间的亲和度,聚合形成所述软件功能模块。
本发明提出的软件一体化平台通过对硬件层进行抽象,实现了核心业务逻辑和底层硬件平台的分离;将消防火灾报警控制器、消防联动控制器、气体灭火控制器、防火门子系统、电气火灾子系统、电源监控子系统等控制器的功能按照最小单位进行拆解,建立以最小功能单元为成员的数据集合,功能单元数为N,然后为集合建立一个NxN的亲和度矩阵表,用于表示每个功能单元和其他功能单元的关联关系,亲和度越高表示关联关系越紧密。根据系统的设计目标,设置一个亲和度的门限,根据这个门限,将关系紧密的功能单元(就是软件的模块)合并为模块,最终得到系统的功能模块,此步骤实现了高内聚的特性。
以火灾报警控制器和消防联动控制器两种为例说明,按照最小粒度拆解后可得到以下最小功能单元,其中最小功能单元指的是系统中的一部分功能,如果再将其拆解则无法以独立任务运行的软硬件功能。
亲和度的量化定义如下表所示:
最小粒度的亲和度矩阵如下
设定亲和度阈值30,可以聚合得到5种功能模块:
根据本发明的一个实施例,所述消息转发模块根据消息的优先级确定消息转发顺序。核心消息分发机制,是基于消防业务中不同事件的等级,从重要程度和紧急程度两个维度进行考虑,策略的主要思想是:优先处理紧急程度高的消息,确保重要程度高的消息被可靠的分发。
根据本发明的一个实施例,每个软件功能模块具有根据其自身数据确定的优先级。
根据本发明的一个实施例,每个软件功能模块的优先级根据该软件功能模块的数据归一化并加权平均从而确定。
根据本发明的一个实施例,所述软件功能模块配置成可发出命令和事件消息,所述命令和事件消息具有可调节的重要性等级数据。
根据本发明的一个实施例,所述消息转发模块配置成可接收新加入的软件功能模块的注册,并根据所述新加入的软件功能模块的优先级动态更新优先级列表。
图4示出了根据本发明的控制平台105的结构,包括用户接口层,业务逻辑层,物理层。
消防系统中的控制器将现场的各种部件产生的事件和状态的变化展示给用户,并将相关事件转发到远端;对应到软件架构上,最上层就是用户的交互层,用于事件的展示,接收并执行用户的操作。具体划分为事件管理模块、视图界面管理模块、历史记录维护模块、指示管理模块。各模块之间的关系如图4所示。
事件管理模块,在系统事件路由模块调用的回调函数中给自己发送消息,加快系统事件路由模块执行回调函数的时间。事件管理模块实时打印,如果因为打印机缺纸,故障,或打印队列满时直接丢弃消息,避免阻塞。
视图界面管理模块基CGUI,对于需要调用其它模块进行长时间处理的消息,不应该阻塞其它消息的接收。在系统桌面上新建主窗体,其它窗体都是主窗体的子窗体,视图界面管理任务接收的消息都先转给主窗体,由主窗体决定转发给哪一个窗体进行处理。
视图界面管理模块打印历史记录时,打印队列满时等待,缺纸,故障时给出提示并允许解除故障后继续打印。新的火警,故障等紧急事件可以打断打印过程。
历史记录维护模块自身不在RAM中保存记录,只从Flash中读取记录存入客户端指定位置。历史记录维护模块使用NorFlash与NandFlash分区存储策略,NorFlash各分区存满后移动到NandFlash。历史记录维护模块对外屏蔽NorFlash与NandFlash分区存储细节。为了降低NorFlash的写次数,采用500ms将RAM中保存的历史记录写入到NorFlash上。历史记录存储10万条,循环覆盖。
指示管理模块通过指示灯,扬声器的控制字实现对指示状态的控制,收到系统事件后根据当前系统状态,更新指示灯与扬声器输出。
每个任务需要以对外提供一个IF接口,异步调用由IF转换为消息后使用OSQPost发送给自己的任务,每个IF接口定义一个OSQPost消息所指向的消息结构体组成的队列,由IF接口维护消息结构体队列,消息结构体队列的大小与消息队列的大小相同。
所有字符串都以资源方式统一管理。使用CSV文件,使用Tab分隔,将CSV写入NorFlash中,开机时加载各字符串的地址,使用时根据字符串地址到NorFlash中读取。
模块间大容量数据采用传地址的方式,客户端申请内存,将内存地址以消息形式发送给服务端,服务端处理数据后放入客户端指定位置,并返回完成消息,客户端收到消息后,读出相应数据。用户权限管理采用三级密码机制。
业务逻辑层包含了所有消防系统的业务逻辑块,通过核心路由模块关联到一起,其中所有系统都涉及的模块包括:核心消息转发模块、守护模块、NETH、LPH、CLOUDH、SCPMH、SIM模块、PSR模块、系统日志模块;防火门、电气火灾和电源监控等子系统涉及的模块:SUBSYS模块;火灾报警涉及的模块:CKH、NOUH、BRDH模块;联动控制器涉及的模块:LGPH、CDH、Md2LGPH模块。
下面描述核心的消息分发机制。接收其他模块发送的各类消息,并根据事先定义的路由规则进行消息转发。维护多个消息队列,进行消息路由转发,各个队列区分优先级和可靠等级,优先处理高优先级事件队列,优先保证高可靠等级的事件。初始化时由各个模块注册,设置路由转发规则。要有一个机制,能够让各个模块启动后注册关注事件,只有模块注册过需要关注的,才会转发给这个模块。图5示出了消息分发机制。
模块的实现方式如下。转发机制的实现基于优先级表和重要等级表组合实现。优先级包括主优先级和子优先级,重要等级包括监视、故障、火警三种状态的等级数据。
每个模块在定义的时候,根据模块自身在系统中的位置、功能、设计机制等信息生成一组模块自身的原始数据,是在模块定义的过程中确定的一组信息值,定义如下:
在模块设计完成后,模块的原始数据即可得到,对原始数据进行归一化,然后进行加权平均得到该模块的优先级的一个数值,把所有模块的优先级数值进行比较,得到最终的优先级表中的每个模块的主优先级,主优先级决定了模块的优先级,模块内部各种消息的优先级通过子优先级进行区分,划分的方法:命令消息优先级最高,事件消息优先级命令中等,同步信息消息优先级最低。
重要等级信息是以消息类型为单位进行分配的一类数据,消息分为命令、事件、同步、其他四种类型,等级数据如下表所示
消息分发模块初始化过程中,在其他模块进行注册后,动态更新优先级列表,将新注册的模块插入到列表合适的位置。之一机制支持模块的动态注册和删除,达到模块的热插拔的特性。
模块上电的初始化处理如图6所示。
添加消息到转发序列中的处理主要依据消息源地址和消息类型来确定需要转发的队列,高优先级的消息放入高优先级队列组中,每个队列组包含各种重要等级的队列入口,在添加消息的时候通过消息的类别能够查到消息的重要等级,然后确定最终的消息入口,流程方法如图7所示。
如图8所示,消息的转发流程在SER的任务中循环处理,按照从高优先级到低优先级的顺序,查询,在本优先级队列为空的情况下再处理下一优先级的队列组,每次处理20个消息然后释放CPU一次。每个队列组中的不同重要登记需要根据其数值设置是否需要等待分发成功的状态,重要等级大于40的需要等待成功状态,小于等于40的不需要等待成功状态。
下面描述系统信息维护机制。该模块以共享库的形式为其他的模块提供接口服务。主要的复位类型包括:系统点位信息表;联动关系表以及事件队列(联动关系由联动解析模块维护)。模块的对外关系图如图9所示。
模块内部的实现主要基于以下的信息的交互流程,如图10所示。
添加/删除1条消息。由事件管理模块调用接口完成添加。在模块内,需要先获取对应的操作权限,获取失败时,添加失败,则模块后续再进行添加(或阻塞)。
获取1条事件消息。即根据readID获取事件消息。供VIEWM模块页面显示使用。
重新获取所有事件。当调用此函数时,获取信号量(读写锁),完成后释放信号量。保证在获取事件期间,没有新增加或删除事件。当通信模块缓冲出问题时(BUF满或异常)时,在延时一定时间后报通信故障。期间丢失的消息就丢失了。模块重新恢复正常后,可从事件队列获取当前消息,实时发生的事件也可处理。
按主机、类型或地址访问、读写事件队列。
下面参考图11描述物理抽象层。物理层将与硬件的交互抽象为业务逻辑相关的信息流接口。本层的相关模块主要完成功能:上行方向,接收外部总线的数据,转换为内部的数据结构并转发到对应的业务逻辑层相关模块;下行方向,从业务逻辑层接收数据,并发送到硬件发送数据区,控制器发送的速度和节奏,达到有序通讯的目的。
下面以CAN接口为例进行说明:上行方向,接收外CAN总线上的数据,并转发数据到业务逻辑层对应模块,处理CAN总线的相关事务,检测总线状态;下行方向,从业务逻辑层接收数据,并发送至CAN总线,控制发送的速度和节奏,发送队列设置两种优先级的队列,高优先级和低优先级,优先发送高优先级事件。
模块内部包含2个任务,分别处理上行和下行任务及逻辑。模块与上层业务逻辑层交互数据为CAN帧数据,下行任务内部维护1个队列,通过插队的方式实现高低优先级。
模块内部使用1个信号量、1个事件标志组和1个互斥量。信号量用于接收中断和接收任务之间的通讯;事件标志组包含2个标志:发送中断事件标志和发送队列事件标志,用于上层模块调用发送接口、发送完成中断及发送任务之间的通讯;互斥量用于保护下行任务数据队列的并发访问。
图12示出了下行数据发送流程,图13示出了上行数据接收处理流程,图14示出了中断处理流程。
根据本发明的一个实施例,系统采用了静态裁剪方法。在系统数据管理模块中,静态分配系统识别数据区域,系统软件构建之前,通过对静态分配的数据区域进行解析,得到需要包含的模块列表,以此为基础对整个系统的代码进行依赖的建立,并编译输出最终的烧录程序。系统识别数据的构成如下表所示
另外也可以使用动态使能的方法。动态使能是一种用户现场修改控制器类型的手段和方法,基于硬件探测和用户设置的两种数据相结合的方法,支持基于序列号的功能开通,在相同的硬件基础上,为不同的使用场景提供不同的软件功能,当希望增加额外的功能时,通过购买序列号的方式使能跟多的功能。
在软件构建的过程中,将所有的模块都包含进去,并在数据使能区域打开一项基本功能,当用户输入序列号后,通过静态数据块中的证书进行校验,校验通过后,可从序列号中提取新的使能功能列表,并更新到数据区,系统重新启动后按照使能功能列表中的控制器类别逐一加载相关模块。
在消防领域,存在消防火灾报警控制器、联动控制器、气体灭火控制器、防火门监控器、电气火灾监控器、消防电源监控器等各种系统的控制器,他们的功能虽然存在差异,但在很多的认证要求、现场使用需求和标准规范上存在共同性,在对应控制器的软件开发中,为了解决多种系统开发繁杂,维护工作量大的问题,开发一种一体化软件平台,提出了一种静态裁剪和动态使能的方法,并组织了一种针对消防控制器的软件架构平台,基于一个消防专用的消息转发机制和数据管理方法,设计了一种“星型+单线”结构和分层结构混合的软件架构。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。