专利名称:一种事件顺序记录模块及其调整方法
技术领域:
本发明涉及控制领域,具体涉及一种事件顺序记录模块及其调整方法。
背景技术:
SOE (Sequence Of Event,事件顺序记录)模块是 DCS (DistributedControl System,分布式控制系统)中比较重要的模块,广泛应用于电力系统和大型企业的供电、用 电系统,是记录发电厂、变电站、大型企业等供电、用电系统的瞬态、稳态事件量信息,监测 系统运行,保存状态数据,记录和捕捉故障信息的重要系统;能以ms级的分辨率获取事件 信息,为事故分析提供依据。通常,SOE模块使用单片机的定时器产生Ims的时钟,使用单片机的定时器,使时 间不受程序执行的影响,保证了 Ims时钟的准确性;在扫描的通道有变位信息(即发生了 SOE事件)时,读取此时的时钟,并将此时钟与通道变位信息一起组成报文,上传给主控模 块。另外,分钟计时是靠软件计数器完成的,范围为0 60000,Ims定时器每产生一个溢出 中断,软件计数器值加1。目前的DCS系统如图1所示,SOE模块与对时模块组成下层硬件SOE采集系统。对 时模块负责每隔ι分钟发送对时脉冲给所有的SOE模块和服务器,使不同SOE模块时间保 持一致;SOE模块负责采集信号,记录信号时间,并把信息上传给主控模块;主控模块再通 过以太网上传信息给服务器。SOE模块的对时依靠对时模块发送的分脉冲来对时;1分钟内的时间是靠模块本 身来记录的,1分钟内与外部时钟源相比会有最大1. 5ms的偏差,两个模块之间最大会有 3ms的偏差(模块采用的晶振精度为25ppm,1分钟内的偏差为60000ms*25ppm = 1. 5ms), 所以无法实现不同SOE模块通道间Ims的分辨率的要求,而单依靠提高晶振精度不仅增加 了成本,而且高精度的晶振很难采购,且品质无法保证。目前DCS系统现场应用时,如果要求信号的分辨率达到1ms,则相关信号必须配置 在同一个SOE模块上,导致现场配线复杂,且最大信号容量为15个,影响了系统的易用性。
发明内容
本发明要解决的技术问题是如何提高不同SOE模块间的分辨率。为了解决上述问题,本发明提供了一种事件顺序记录模块,包括用于产生输出时 钟的定时器、晶振;还包括计数单元,用于每当收到对时脉冲时保存当前计数值,并以所述晶振为时钟基准 重新开始计数;处理单元,用于当收到所述对时脉冲时比较所述计数单元保存的计数值和理论值 N的偏差,在下次收到所述对时脉冲前根据该偏差调整所述定时器的初始值。进一步地,所述处理单元根据偏差调整所述定时器的初始值是指所述处理单元根据所述偏差确定是超前还是落后;调整所述定时器的初始值,如
4果超前则将所述定时器的初始值调低,如果落后则将所述定时器的初始值调高。进一步地,所述处理单元还用于当确定超前时将第一标识位置位,确定落后时将 第二标识位置位;所述处理模块调整所述定时器的初始值时,如果第一标识位置位则将所述定时器 的初始值调低,如果第二标识位置位则将所述定时器的初始值调高。进一步地,所述处理单元还用于用所述偏差整除N,得到的商取整后作为调整周期 T ;所述处理单元根据偏差调整所述定时器的初始值是指所述处理单元每当中断次数为T的整数倍时,根据偏差调整所述定时器的初始 值;当中断次数不是T的整数倍时,如果所述定时器的初始值为原始值则不进行调整,如果 不为原始值则调整为原始值。进一步地,所述处理单元每次调整所述定时器的初始值时的调整幅度为1。本发明还提供了一种事件顺序记录模块的调整方法,所述事件顺序记录模块包括 用于产生输出时钟的定时器和晶振;所述方法包括每当收到对时脉冲时保存当前计数值,并以晶振为时钟基准重新开始计数;当收到所述对时脉冲时比较所保存的计数值和理论值N的偏差,在下次收到所述 对时脉冲前根据该偏差调整所述定时器的初始值。进一步地,所述根据偏差调整所述定时器的初始值的步骤包括根据所述偏差确定是超前还是落后;调整所述定时器的初始值,如果超前则将所述定时器的初始值调低;如果落后则 将所述定时器的初始值调高。进一步地,根据所述偏差确定是超前还是落后的步骤中还包括当确定超前时将第一标识位置位,确定落后时将第二标识位置位。如果超前则将所述定时器的初始值调低是指如果第一标识位是置位的则将所述 定时器的初始值调低;如果落后则将所述定时器的初始值调高是指如果第二标识位是置位的则将所述 定时器的初始值调高。进一步地,任一项所述的方法还包括用所述偏差整除N,得到的商取整后作为调整周期T ;所述根据偏差调整所述定时器的初始值的步骤包括每当中断次数为T的整数倍时,根据偏差调整所述定时器的初始值;当中断次数 不是T的整数倍时,如果所述定时器的初始值为原始值则不进行调整,如果不为原始值则 调整为原始值。进一步地,每次调整所述定时器的初始值时的调整幅度为1。本发明的技术方案通过修正SOE模块定时器初始值提高计时的精度,减小计时的 偏差,使SOE模块与对时模块的时钟同步,从而使不同模块之间时间差最小化,最终提高了 分辨率。其优化方案在现有产品的基础上,利用现有的资源实现定时器初始值的调整。
图1是现有技术中的DCS系统示意图;图2是实施例一中的SOE模块的示意框图;图3是实施例一中采用CPLD时其输入输出端示意图;图4是实施例二中具体例子的流程示意图。
具体实施例方式下面将结合附图及实施例对本发明的技术方案进行更详细的说明。需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结 合,均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组计算机 可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况 下,可以以不同于此处的顺序执行所示出或描述的步骤。实施例一,一种事件顺序记录模块,如图2所示,包括用于产生输出时钟的定时 器、晶振;计数单元,用于每当收到对时脉冲时保存当前计数值,并以所述晶振为时钟基准 重新开始计数;处理单元,用于当收到所述对时脉冲时比较所述计数单元保存的计数值和理论值 N的偏差,在下次收到所述对时脉冲前根据该偏差调整所述定时器的初始值。本实施例中,所述理论值N可以但不限于设置为两次对时脉冲之间理论上的总计 数;比如假设一分钟发一次对时脉冲的话,如果中断周期为1ms,则N为60000。本实施例中,和图1所示系统一样,所述对时模块可以每隔1分钟(实际应用时不 限于该时长)发送所述对时脉冲到SOE模块。本实施例中,所述理论值可以根据实验、理论或经验设定。如果保存的计数值和所 述理论值之间没有偏差,则可以不进行调整。本实施例中,所述处理单元根据偏差调整所述定时器的初始值具体可以是指所述处理单元根据所述偏差确定是超前还是落后;调整所述定时器的初始值,如 果超前则将所述定时器的初始值调低,如果落后则将所述定时器的初始值调高。本实施例中,如果所述处理单元是用所保存的计数值减去理论值,则当所述偏差为 正数时确定是超前,为负数时确定是落后;如果所述处理单元是用理论值减去所保存的计数 值,则当所述偏差为负数时确定是超前,为正数时确定是落后。实际应用时,也可以采用其它 方式确定超前还是落后,比如根据保存的计数值和理论值的比值大于1还是小于1来确定。本实施例中,所述处理单元还可以用于当确定超前时将第一标识位置位,确定落 后时将第二标识位置位;所述处理模块调整所述定时器的初始值时,如果第一标识位置位则将所述定时器 的初始值调低,如果第二标识位置位则将所述定时器的初始值调高。本实施例的一种实施方式中,所述处理单元还可以用于用所述偏差整除N,得到的 商取整后作为调整周期T ;所述处理单元根据偏差调整所述定时器的初始值可以是指所述处理单元每当中断次数为T的整数倍时,根据偏差调整所述定时器的初始值;当中断次数不是T的整数倍时,如果所述定时器的初始值为原始值则不进行调整,如果 不为原始值则调整为原始值。也就是说,如果在中断次数为T的整数倍时调高/调低了定时器的初始值,则在接 下来的一次中断再将定时器的初始值调调低/调高为原始值。每当中断次数为T的整数倍时,调整所述定时器的初始值。该实施方式是对定时器的初始值进行周期性调整,在该实施方式中所述处理单元 每次调整所述定时器的初始值时的调整幅度为1,也就是调低或调高1 ;在其它实施方式 中,也可以不周期性进行调整,而是一次或分几次调整,调整的总幅度不大于所述偏差,每 次的调整幅度应尽量小,可以但不限于为1。本实施例中的SOE模块由于经过上述调整,单片机定时器计算出的时间可十分接 近对时模块的时钟。本实施例中,所述计数单元可以但不限于采用SOE模块本身的CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件);所述处理单元可以但不限于采用SOE 模块本身的单片机,所述定时器就是单片机中的定时器;这样可以不用增加额外的成本,就 能提高SOE的分辨率。当采用CPLD作为计数单元、单片机作为处理单元时,CPLD的输入输出端如图3所 示,adjust_pulse为所述对时脉冲输入端,clk_24M为晶振输入端,ADDRO, ADDRl、ADDR2 为单片机读取地址端口 ;DBOO DB07为数据总线输出端;在两次对时分钟脉冲输入之间, CPLD计数并保存计数值,根据单片机的读取地址把保存的计数值发送到数据总线上。实施例二,一种事件顺序记录模块的调整方法,所述事件顺序记录模块包括用于 产生输出时钟的定时器和晶振;所述方法包括每当收到对时脉冲时保存当前计数值,并以晶振为时钟基准重新开始计数;当收到所述对时脉冲时比较所保存的计数值和理论值N的偏差,在下次收到所述 对时脉冲前根据该偏差调整所述定时器的初始值。本实施例中,所述理论值N可以但不限于设置为两次对时脉冲之间理论上的总计 数;比如假设一分钟发一次对时脉冲的话,如果中断周期为1ms,则N为60000。本实施例中,所述根据偏差调整所述定时器的初始值的步骤具体可以包括根据所述偏差确定是超前还是落后;调整所述定时器的初始值,如果超前则将所述定时器的初始值调低;如果落后则 将所述定时器的初始值调高。本实施例中,根据所述偏差确定是超前还是落后的步骤中还可以包括当确定超前时将第一标识位置位,确定落后时将第二标识位置位。如果超前则将所述定时器的初始值调低是指如果第一标识位是置位的则将所述 定时器的初始值调低;如果落后则将所述定时器的初始值调高是指如果第二标识位是置位的则将所述 定时器的初始值调高。本实施例的一种实施方式中,所述方法还可以包括用所述偏差整除N,得到的商取整后作为调整周期T ;所述根据偏差调整所述定时器的初始值的步骤包括
每当中断次数为T的整数倍时,根据偏差调整所述定时器的初始值;当中断次数 不是T的整数倍时,如果所述定时器的初始值为原始值则不进行调整,如果不为原始值则 调整为原始值。也就是说,如果在中断次数为T的整数倍时调高/调低了定时器的初始值,则在接 下来的一次中断再将定时器的初始值调调低/调高为原始值。在该实施方式中,每次调整所述定时器的初始值时的调整幅度为1,也就是调低或 调高1 ;在其它实施方式中,也可以不周期性进行调整,而是一次或分几次调整,调整的总 幅度不大于所述偏差,每次的调整幅度应尽量小,可以但不限于为1。其它实现细节及替代方案可参见实施例一。下面用一个具体的例子进行说明,流程如图4所示进入中断后,判断是何种类型的中断;在对时脉冲引起的中断服务程序中进行如下操作->读取由CPLD计算出的计数值附;_>与理论值N(本例子中为60000)比较,计算出偏差值ΔΝ,并判定是落后还是超
、r -
IlJ ;->如果是落后,则 behind, flag= 1,exceed, flag = 0,并以 ΔΝ 去整除 60000(在 Ims的中断周期下,1分钟内软件总计数为60000)得出修正周期Tl ;_> 如果是超前,则 exceed, flag= 1,behind, flag = 0,并以 Δ N 去整除 60000 (在 Ims的中断周期下,1分钟内软件总计数为60000)得出修正周期Τ2 ;->如果不是超前也不落后,则 exceed, flag = 0,behind, flag = 0 ;_>退出中断。在Ims (设SOE采样周期为1ms)的中断服务程序中进行如下操作->判定 behind, flag, exceed, flag 是否为 1 ;->如果behind,flag, exceed, flag均为0,则不予修正,定时器初始值不变,为 0xf830 ;->如果判断exceed,flag = 1,则在中断次数为T2的整数倍时,调整定时器初始 值为0xf829,其他情况下仍保持为或调整回0xf830 ;->如果判断behind,flag = 1,则在中断次数为Tl的整数倍时,调整定时器初始 值为0xf831,其他情况下仍保持为或调整回0xf830 ;_>退出中断。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘 等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应 地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的 形式实现。本发明不限制于任何特定形式的硬件和软件的结合。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟 悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变 形都应属于本发明的权利要求的保护范围。
权利要求
1.一种事件顺序记录模块,包括用于产生输出时钟的定时器、晶振;其特征在于,还包括计数单元,用于每当收到对时脉冲时保存当前计数值,并以所述晶振为时钟基准重新 开始计数;处理单元,用于当收到所述对时脉冲时比较所述计数单元保存的计数值和理论值N的 偏差,在下次收到所述对时脉冲前根据该偏差调整所述定时器的初始值。
2.如权利要求1所述的事件顺序记录模块,其特征在于,所述处理单元根据偏差调整 所述定时器的初始值是指所述处理单元根据所述偏差确定是超前还是落后;调整所述定时器的初始值,如果超 前则将所述定时器的初始值调低,如果落后则将所述定时器的初始值调高。
3.如权利要求2所述的事件顺序记录模块,其特征在于所述处理单元还用于当确定超前时将第一标识位置位,确定落后时将第二标识位置位;所述处理模块调整所述定时器的初始值时,如果第一标识位置位则将所述定时器的初 始值调低,如果第二标识位置位则将所述定时器的初始值调高。
4.如权利要求1到3中任一项所述的事件顺序记录模块,其特征在于 所述处理单元还用于用所述偏差整除N,得到的商取整后作为调整周期T ; 所述处理单元根据偏差调整所述定时器的初始值是指所述处理单元每当中断次数为T的整数倍时,根据偏差调整所述定时器的初始值;当 中断次数不是T的整数倍时,如果所述定时器的初始值为原始值则不进行调整,如果不为 原始值则调整为原始值。
5.如权利要求4所述的事件顺序记录模块,其特征在于 所述处理单元每次调整所述定时器的初始值时的调整幅度为1。
6.一种事件顺序记录模块的调整方法,所述事件顺序记录模块包括用于产生输出时钟 的定时器和晶振;其特征在于,所述方法包括每当收到对时脉冲时保存当前计数值,并以晶振为时钟基准重新开始计数; 当收到所述对时脉冲时比较所保存的计数值和理论值N的偏差,在下次收到所述对时 脉冲前根据该偏差调整所述定时器的初始值。
7.如权利要求6所述的方法,其特征在于,所述根据偏差调整所述定时器的初始值的 步骤包括根据所述偏差确定是超前还是落后;调整所述定时器的初始值,如果超前则将所述定时器的初始值调低;如果落后则将所 述定时器的初始值调高。
8.如权利要求7所述的方法,其特征在于,根据所述偏差确定是超前还是落后的步骤 中还包括当确定超前时将第一标识位置位,确定落后时将第二标识位置位。 如果超前则将所述定时器的初始值调低是指如果第一标识位是置位的则将所述定时 器的初始值调低;如果落后则将所述定时器的初始值调高是指如果第二标识位是置位的则将所述定时器的初始值调高。
9.如权利要求6到8中任一项所述的方法,其特征在于,还包括 用所述偏差整除N,得到的商取整后作为调整周期T ;所述根据偏差调整所述定时器的初始值的步骤包括每当中断次数为T的整数倍时,根据偏差调整所述定时器的初始值;当中断次数不是 T的整数倍时,如果所述定时器的初始值为原始值则不进行调整,如果不为原始值则调整为 原始值。
10.如权利要求9所述的方法,其特征在于 每次调整所述定时器的初始值时的调整幅度为1。
全文摘要
本发明提供了一种事件顺序记录模块及其调整方法;所述事件顺序记录模块包括用于产生输出时钟的定时器、晶振;还包括计数单元,用于每当收到对时脉冲时保存当前计数值,并以所述晶振为时钟基准重新开始计数;处理单元,用于当收到所述对时脉冲时比较所述计数单元保存的计数值和理论值N的偏差,在下次收到所述对时脉冲前根据该偏差调整所述定时器的初始值。本发明能够提高不同SOE模块间的分辨率。
文档编号G05B19/418GK102081400SQ20111003961
公开日2011年6月1日 申请日期2011年2月17日 优先权日2011年2月17日
发明者万雪飞, 李贵永 申请人:北京和利时系统工程有限公司