首页> 中国专利> 一种基于时间桶的地铁综合监控系统时间序列触发方法

一种基于时间桶的地铁综合监控系统时间序列触发方法

摘要

本发明公开了一种基于时间桶的地铁综合监控系统时间序列触发方法,本发明创造从综合监控系统多专业子系统的现有技术基础和实际需求出发,将所有专业涉及时间序列控制的功能剥离出来,设计实现一种新的基于时间桶的定时触发模型,统一管理各个专业的时序调度计划,适应多种类型的控制需求,并通过实时注册/解注册机制支持各专业即时便利化的触发管理,在触发控制效率、系统资源节省、开发管理维护方面、应用需求覆盖程度具有显著优势。

著录项

  • 公开/公告号CN105227648A

    专利类型发明专利

  • 公开/公告日2016-01-06

    原文格式PDF

  • 申请/专利号CN201510595939.1

  • 发明设计人 朱超;经玉健;翁元;吴小俊;

    申请日2015-09-17

  • 分类号H04L29/08(20060101);

  • 代理机构32207 南京知识律师事务所;

  • 代理人张苏沛

  • 地址 210000 江苏省南京市浦口区星火路8号

  • 入库时间 2023-12-18 13:28:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-07

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L29/08 变更前: 变更后: 申请日:20150917

    专利权人的姓名或者名称、地址的变更

  • 2018-05-18

    授权

    授权

  • 2016-02-03

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20150917

    实质审查的生效

  • 2016-01-06

    公开

    公开

说明书

技术领域

本发明面向地铁/轻轨综合监控系统中出现的诸多按时间节点编排控制计划并依靠计算 机自动触发执行的需求,提供一种适应于多专业系统的统一定时触发软件模型,各专业应 用只需向模型注册告知自身的定时行为,即可接受该模型自动调度的触发消息并执行各自 对应的控制动作,大大减少了常规运维操作的工作量,提高了系统日常控制的准确度以及 自动化、智能化水平。

背景技术

地铁/轻轨综合监控系统(ISCSIntegratedSupervisoryControlSystem)采用一体化软硬件 平台和专用通信网络采集诸如供电系统、环境与设备监控系统、火灾报警系统、广播系统、 闭路电视系统、乘客信息系统等多个专业的实时数据和环境参数,并远程控制各专业系统 及设备的运行;这其中,按运营人员已编排好的带有时间序列特征的控制计划自动执行远 程控制并反馈控制结果越来越成为一种省时、及时并不可或缺的控制方式。比如:广播系 统需要在每天日常运营时间段循环依次播放数十条时长不等的已录制提示语音,在某个特 定节日临时播放多条特殊通知语音;乘客信息系统需要在常规时间段循环发布一系列乘车 提示信息,在节假日期间循环发布重要提示信息;视频监控系统需要在人机界面固定区域 循环显示地铁全线多个地点的实时视频监控画面;环境与设备监控系统需要按预先编制的 模式时间表执行特定的通风空调模式等等;此类需求均需要作为多专业集成核心的综合监 控系统能够实现计算机自动管理时间节点并能据此准确触发节点上的控制命令。

现有技术的缺陷:

1.目前现有综合监控系统中处理时间序列控制主要依靠定时器实现,由于每个时序计 划中的多个时间节点完全没有规律,因此需要每一条计划至少采用一个系统定时器并需要 根据变化时长频繁起停,考虑定时器在操作系统调度中优先级较低,有响应可靠性上的缺 陷;同时对于多个专业数以百计的控制需求,大量的定时器使用及频繁触发使得系统资源 开销大大增加。

2.现有综合监控系统对每个专业的时序控制由各专业程序分别设计处理,缺乏统一的 优化的管理调度和解决方案,不利于系统稳定、代码维护和程序升级。

3.现有综合监控系统对每个专业的时序控制灵活度不足,在各类时间点覆盖程度、循 环行为上不能根据各专业需求自由掌控,不利于地铁运营管理的多样化实施。

发明内容

针对现有技术中存在的缺陷,本发明创造从综合监控系统多专业子系统的现有技术基 础和实际需求出发,将所有专业涉及时间序列控制的功能剥离出来,设计实现一种新的基 于时间桶的定时触发模型,统一管理各个专业的时序调度计划,适应多种类型的控制需求, 并通过实时注册/解注册机制支持各专业即时便利化的触发管理,在触发控制效率、系统资 源节省、开发管理维护方面、应用需求覆盖程度具有显著优势。

为了实现上述发明目的,本发明采用的技术方案为:一种基于时间桶的地铁综合监控 系统时间序列触发方法,其特征在于:

第一步:专业子系统通过函数调用与注册单元建立主从关系,专业子系统即客户端、 模型即服务端;注册单元据此开辟双方数据交换空间,分为注册数据区和消息数据区:注 册数据区存放负责客户端到服务端的注册请求,消息数据区存放服务端到客户端的在各时 间节点的即时触发消息;

第二步:客户端发送在线注册请求至模型注册数据区,注册信息包含客户端使用者名 称、起止日期、时间、多个时间节点、执行间隔、循环模式信息;模型的注册单元接受该 请求,并检测数据逻辑合法性,再将信息转发给资源管理单元,由其负责分配时间桶资源 和加入桶队列;

第三步:资源管理单元在桶池中为新请求选用专属时间桶,并为时间桶贴上第二步骤 中的注册信息项标签;同时将新时间桶加入到检测队列尾部,供检测单元使用;

第四步:全局定时单元定时向检测单元发送检测指令;

第五步:检测单元据检测指令逐一扫描桶队列中每一时间桶的状态及其数据标签,维 护桶内的剩余时间;当某个时间节点到达时,将触发消息送达消息处理单元,同时继续向 桶注入距下一时间节点的时长;

第六步:消息处理单元根据客户名称找到对应消息数据区,写入触发通知及包含时间 序列索引的附加信息;

第七步:客户端获得触发通知及附加信息,根据自身的逻辑需求执行对应的系统控制 命令;

第八步:重复四~七步,直至时间桶到达桶底或客户端提出解注册请求,此时时间桶 已作废,空桶释放回桶池交由资源管理单元处理;

第九步:客户端通过函数调用向模型注册数据区发送在线解注册请求,结束触发控制, 解除二者间的联系,释放资源。

上述的基于时间桶的地铁综合监控系统时间序列触发方法,其进一步特征在于:

所述注册单元:

外部系统注册时调用模型的接口函数ts_CreateClient创建一个注册客户端,该函数包含 注册名称和缓冲大小两个参数;注册单元检查注册名称的唯一性,已存在的名称将被注册 单元拒绝;通过检查后注册单元为其开辟指定大小的注册数据区和消息数据区,其后数据 交互即在两个区域内进行;

外部系统调用模型的接口函数ts_RegisterRequests向注册单元提交具体的时序控制需求 组,其参数为一组包含详细时序信息的结构体ts_REQINFO组;

完成注册后,客户端调用ts_WaitForNotifications阻塞式等待模型消息单元的触发消息, 一旦等待被激活,则处理触发消息,向各自专业下发控制命令;该阻塞行为具有超时时间 设置,当超时动作先行发生时,给等待执行体执行其他必要动作的机会,待完成后重新进 入等待状态;

客户端根据需要在注册后的途中暂停或启用模型的触发工作以期与自身的工作进度相 配合;

当客户端认为时序控制任务已结束时,调用ts_UnRegisterRequests向注册单元提交具体 的解注册请求,注册单元负责销毁数据区归还系统资源。

上述的基于时间桶的地铁综合监控系统时间序列触发方法,其进一步特征在于:

所述资源管理单元是数据结构时间桶池和时间桶队列的管理者,其接受注册单元的注 册需求,分配桶资源,并将任务加入到桶调度队列。

所述时间桶为带有上下界和数据标签的并装有不定量时间的容器,是触发消息所依据 的核心数据结构,包含数据变量:

所述检测单元是产生触发消息的执行部件,基于独立线程,以时间桶队列为操作对象, 逐一扫描队列中指向的每一个对象,依据桶标签和桶状态进行处理判断。

所述消息处理单元:检测单元将包含客户端名称、触发的时间序列索引及上下文数据 指针信息通过加锁缓冲区传送给消息处理单元,消息处理单元通过事先开辟的消息区将信 息反馈给客户端;客户端ts_WaitForNotifications阻塞函数将被触发并开展后续数据处理过 程。

所述全局定时单元是检测单元执行的触发源,仅执行定时触发任务,采用独立线程实 现,通过加锁缓冲区与检测单元实现数据交互。

有益效果:本发明将综合监控多专业的时间序列控制功能剥离出来,实现一种新的基 于时间桶循环管理时间序列的触发模型,统一优化管理各个专业的时序调度计划,适应多 种类型的时间调度需求,并通过实时注册/解注册机制支持各专业即时便利化的触发管理, 在降低系统资源开销、确保触发即时性和效率、满足各类时间编排的运营需求、开发管理 维护方面具有显著优势。

附图说明

图1为本发明实施例的时序触发模型外部交互及内部结构图。

图2为本发明实施例的桶池内存储空间链表图。

图3为本发明实施例的时间桶状态机示意图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细阐述。

本实施例将描述模型的基本处理流程,并对流程中涉及的每个处理单元工作原理做分 别阐述。

1.基本处理流程

本发明整体模型结构及数据流如图1所示,时序触发模型外部交互及内部结构示意图。

模型输入项:

各专业子系统向模型注册的定时触发需求;

模型输出项:

在时间桶每个时间节点到达时以消息方式向对应各专业子系统发送的执行命令的通 知;

模型处理流程:

第一步:专业子系统(即时序控制需求方,如图1中的广播系统、乘客信息系统等) 通过函数调用与注册单元建立主从关系,即客户端(专业子系统)与服务端(模型);注册 单元据此开辟双方数据交换空间,分为注册数据区和消息数据区:注册数据区存放负责客 户端到服务端的注册请求,消息数据区存放服务端到客户端的在各时间节点的即时触发消 息;

第二步:客户端发送在线注册请求至模型注册数据区,注册信息包含客户端使用者名 称、起止日期、时间、多个时间节点、执行间隔、循环模式等信息;模型的注册单元接受 该请求,并检测数据逻辑合法性,再将信息转发给资源管理单元,由其负责分配时间桶资 源和加入桶队列;

第三步:资源管理单元在桶池中为新请求选用专属时间桶,并为时间桶贴上第二步骤 中的注册信息项标签;同时将新时间桶加入到检测队列尾部,供检测单元使用;

第四步:全局定时单元定时向检测单元发送检测指令,该定时时间间隔属于模型配置 项,需要根据实际需要配置,如3分钟、1秒,150毫秒等,应满足所有客户端的最高时间 精度;

第五步:检测单元据检测指令逐一扫描桶队列中每一时间桶的状态及其数据标签,维 护桶内的剩余时间;当某个时间节点到达时,将触发消息(包含时间节点在序列中的索引) 送达消息处理单元,同时继续向桶注入距下一时间节点的时长;

第六步:消息处理单元根据客户名称找到对应消息数据区,写入触发通知及包含时间 序列索引的附加信息;

第七步:客户端获得触发通知及附加信息,根据自身的逻辑需求执行对应的系统控制 命令;

第八步:重复四~七步,直至时间桶到达桶底或客户端提出解注册请求,此时时间桶 已作废,空桶释放回桶池交由资源管理单元处理;

第九步:客户端通过函数调用向模型注册数据区发送在线解注册请求,结束触发控制, 解除二者间的联系,释放资源。

2.注册单元

注册单元是联系客户端注册需求与管理单元的纽带,负责与客户端数据交互缓冲区的 开辟、回收。具体原理如下:

首先,外部系统注册时调用模型的接口函数ts_CreateClient创建一个注册客户端,该函 数包含注册名称和缓冲大小两个参数。注册单元检查注册名称的唯一性,已存在的名称将 被注册单元拒绝(返回E_CLIENT_EXISTED错误码);通过检查后注册单元为其开辟指定大 小的注册数据区和消息数据区,其后数据交互即在两个区域内进行。需要指出的是,本申 请中模型代码实现为独立进程,两个区域的数据交互采用共享内存方式实现;若将模型与 客户端置于同一进程,则可采用加锁缓冲区形式可实现多个线程安全数据访问。

其次,外部系统调用模型的接口函数ts_RegisterRequests向注册单元提交具体的时序控 制需求组,其参数为一组包含详细时序信息的结构体ts_REQINFO组,每个结构体的数据 项包括:

客户名称:对应时间桶的拥有者;

起始时间:即时间序列触发的生效开始的日期+时间,早于该时间节点将不会触发 任何消息;对应时间桶刻度为桶顶;其中的时间部分数据(时分秒)用作每日的起 始时间限制。

终止时间:即时间序列触发的生效结束日期+时间,晚于该时间节点将不再触发任 何消息;对应时间桶刻度为桶底;其中的时间部分数据(时分秒)用作每日的终止 时间限制。

起始、终止时间应用举例如下:“2015-05-0105:30:00”至“2015-05-0323:00:00” 为一段表示特殊节日的时间段,早于前一时刻或晚于后一时刻将不会触发消息;同 时,5月1日至5月3日三天内,每天仅5点30分至23点间触发消息。

工作日设定:即时间序列触发的生效工作日数组,与起止时间无关,从周一至周日 共7个元素,值“0”表示不生效,值“1”表示生效;

至此,根据起始时间、终止时间、工作日设定三个数据项可以准确指定任意生效时 间点或者时间段,实现时间节点应用上的全覆盖,具有极强的时间设定灵活性。

时间序列数组:一组时间节点数据,如广播系统中出现的一个语音序列时长列表为 [18,26,10,33,22,15,49,12,33,21],即依次在每个时间数值流逝之后需要触发控制消 息;

时间序列数组元素个数;

时间单位:可以为分钟、秒、毫秒等,常规为1秒;得到此时间单位后,模型将以 定时单元的触发时间为基础单位,把时间序列数组中的数值参照此单位做统一计算 预处理;

循环次数:时间序列在桶内循环触发的次数,1表示仅触发一次即终止循环,-1表 示在起始和终止时间点内持续触发,其他值为普通循环次数;

备用上下文数据指针:注册时提供的额外辅助信息,做数据传递用,在消息触发返 回客户端时由客户端自行解释使用。

完成注册后,客户端调用ts_WaitForNotifications阻塞式等待模型消息单元的触发消息, 一旦等待被激活,则处理触发消息,向各自专业下发控制命令;该阻塞行为具有超时时间 设置,当超时动作先行发生时,给等待执行体执行其他必要动作的机会,待完成后重新进 入等待状态。

客户端可根据需要在注册后的途中暂停(ts_SuspendNotifications)或启用 (ts_RestartNotifications)模型的触发工作以期与自身的工作进度相配合。

当客户端认为时序控制任务已结束时,调用ts_UnRegisterRequests向注册单元提交具体 的解注册请求,注册单元负责销毁数据区归还系统资源。

3.资源管理单元

资源管理单元是模型内部核心数据结构时间桶池和时间桶队列的管理者。其主要任务 是接受注册单元的注册需求,分配桶资源,并将任务加入到桶调度队列。

桶池:时间桶池是为所有桶开辟的总内存空间,包含两个主要系统配置项:桶初始分 配空间大小和每次池满时增量新分配空间大小。每块空间都包含一个指向下一空间的指针, 最终形成一个桶存储区域的单向链表,供资源管理单元管理使用(如图2所示,桶池内存 储空间链表图)。系统设计人员应根据工程应用规模给出合适的总数,尽可能减少重新开辟 空间的次数。

资源管理单元为池内每个桶均赋予全局唯一的顺序索引号,并维护桶所有者与桶索引 的映射,便于在客户提出各种操作要求时能迅速定位目的桶。

资源管理单元在接受注册单元的注册需求后,从桶池中找到第一个空桶,该过程采用 bitmap算法,即资源管理单元拥有一张“bit”表,每一bit位与一个桶对象依次顺序对应, 位“0”表示桶为未占用,位“1”表示桶为占用。查找时以4字节(32位机)为单位,依 次从bit表中取出4字节并与4字节无符号整型最大值(0xFFFFFFFF)比较,当前者较小 时证明有空桶,则再取4字节中的2字节与0xFFFF比较,直至取到1字节与0xFF比较, 最后逐位操作并找到第一个“0”;当二者相等时再顺序取bit表第二个4字节......此方式每 次可批处理32个桶,复杂度为O(n/32),显著优化了桶查找效率(桶回收时将依靠桶与bit 位的一一对应关系采用直接索引方式找到对应bit位并置位“0”,复杂度为O(1))。

当查找结束仍无空桶时,则按系统配置增量大小新开辟桶空间,并将其地址首地址填 充在现有最后一个空间的指针上。同时将新空间中的第一个桶作为找到的空桶放入桶队列。

桶队列:当前有效时间桶组成的最小检测队列,供检测单元使用。队列内每个元素均 为指向桶池的桶指针。

资源管理单元将找到的空桶划归为新客户所有,贴上数据标签,放置在桶队列尾部, 即最后一个有效桶的后一个位置,交由检测单元调度,由此完成了整个注册过程。

此外,资源管理单元还将接收客户端的暂停、启动、解注册等中途请求,并根据各自 命令对时间桶分别做数据和状态处理。

4.时间桶

时间桶为带有上下界和数据标签的并装有不定量时间的容器,是触发消息所依据的核 心数据结构,包含如下几项关键数据变量:

数据标签(VL):注册单元中由客户端提供的信息体ts_REQINFO,为检测单元提供数 据支持,包含桶顶、桶底、工作日、桶时间序列节点等关键桶属性;

时序索引(VI):实时指向当前循环扫描进行到时间序列中的哪一节点;该信息将传达 给客户端,用以指导其发送相匹配的控制命令或其他操作;

剩余时间(VR):由检测单元统一管理,为距下一最近时间节点的剩余时间;

循环次数(VT):序列已循环执行的次数;

桶状态(VS):时间桶实时所处状态,共四态:

空置态:桶未被使用,或已被回收;此时VR=-1,VI=-1,VT=-1;

就绪态:桶已被某一客户端占用,但未处于有效时间段内,并准备进入工 作态;此时VR=0,VI=-1,VT=0;

工作态:在桶内正常循环运转状态,为检测单元所管理;此时VI=m,VR=n, VT=p;其中:m∈[0,队列元素个数),n∈[0,对应索引时长],p∈[0,总循环 次数);三值实时循环变化;

挂起态:被客户要求临时暂停,并等待客户从暂停点唤醒;其中:VI=j, VR=k,VT=l;其中j,k,l数值同挂起前工作态并被固定直至唤醒;

包含四种状态的桶状态机如图3所示,时间桶状态机示意图。

5.检测单元

检测单元是产生触发消息的执行部件,基于独立线程,其任务是以时间桶队列为操作 对象,逐一扫描队列中指向的每一个对象,依据桶标签和桶状态进行处理判断,过程如下:

a.若桶处就绪态,检测是否具备转为工作态的条件,具备则转入工作态,否则跳过 该桶,检测下一个桶;

b.若处工作态,需根据终止日期时间及工作日做综合条件判断:

超过终止日期时间(年月日+时分秒)将被视为已到达桶底,则将桶归还给管 理单元,管理单元将其始终与队列尾部元素交换,将回收桶置换出队列,同时 队列元素总计数减1,此举最大限度减少数组数据操作和扫描工作量;

未超过终止日期时间的,但已达循环次数限制的,表示所有任务已执行完,视 为到达桶底,同上处理;

未超过终止日期时间,未达循环次数限制,但已超过终止时间(时分秒)的或 工作日设定不触发的,视为当日任务已完成(或当日无需触发),但桶依然有 效,置VR=0,不触发消息,转入就绪态,等待再度进入有效时间或工作日内;

上述条件均通过后,若桶内剩余时间VR大于0,则VR减1个单位;若VR为0, 则表明既定的时间节点已到,即刻向消息单元发送带有VI、上下文指针等附加 信息的触发通知,由其向客户端发送触发控制,同时修改当前时间序列索引VI=(VI+1)%桶总数,并再次向桶内注入下一时长,即VR=新VI的时长;若VI已达队尾则循环次数加1;

c.若处挂起态,则跳过该元素,检测下一个桶;

检测单元任务仅限于扫描管理,其他的桶资源管理、消息处理任务均与其分离开来以 保证检测单元的效率。

6.消息处理单元

检测处理单元将包含客户端名称、触发的时间序列索引及上下文数据指针等重要信息 通过加锁缓冲区传送给消息处理单元,消息处理单元通过事先开辟的消息区将信息反馈给 客户端。如前所述,客户端ts_WaitForNotifications阻塞函数将被触发并开展后续数据处理 过程。

7.全局定时单元

全局定时单元是检测单元执行的触发源,仅执行定时触发任务,采用独立线程实现, 通过加锁缓冲区与检测单元实现数据交互。本模型中采用select函数模式模拟定时任务, 其中n取值为时间序列中的时间单位,可精确到微秒。应考量操作系统对时钟精度支持程 度和满足所有客户端时间精度两个方面确定采用哪种方式的定时策略,如sleep系列函数、 各种系统锁超时唤醒等均为可选的定时模拟方式。

全局定时单元作为独立的执行体设计,可以消除由检测单元负责定时带来的延迟,无 论检测单元当前处于何动作,全局定时单元总能在固定时间间隔n内向数据缓冲区中放入 定时检测命令,即确保检测单元的检测频率与此时间间隔一致。

实施例中,部分函数含义如下:ts_CreateClient(创建客户端函数)、 ts_RegisterRequests(注册触发请求函数)、ts_REQINFO(注册信息结构体)、 ts_WaitForNotifications(消息等待函数)、ts_UnRegisterRequests(解注册函数)、 ts_SuspendNotifications(挂起消息触发函数)、ts_RestartNotifications(恢复消息 触发函数)。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明精神和原则之 内的,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号