APP下载

分散控制系统SOE模件时间累计误差消除方法

2012-06-12吴胜华田海波

综合智慧能源 2012年1期
关键词:模件寄存器中断

吴胜华,田海波

(国电南京自动化股份有限公司研究院,江苏 南京 210003)

0 引言

事件顺序记录(SOE)系统在电厂分散控制系统中用于异常事件的记录,它所记录的事件发生时间、首发事件和连锁发生事件的间隔顺序,是系统故障和异常分析的最重要依据。目前,电厂中的分散控制系统(DCS)一般都具有SOE功能,对SOE事件记录的分辨率一般要求达到毫秒级,不同DCS其SOE的实现方法也不同,若要保证不同过程控制站内SOE模件的时间同步,SOE模件之间的时间同步就显得尤为重要。

1 存在的问题

SOE模件通常在2次授时之间由自身的定时中断计数来模拟时钟,因此,对模拟时钟造成影响的因素有2个。其一,模件一般采用石英晶体振荡器。石英晶体振荡器是由晶振体连续产生一定频率的时钟脉冲,计数器则对这些脉冲进行累计得到时间值。由于时钟振荡器的脉冲受环境温度、激励电平等多种不稳定性因素的影响,时钟本身存在误差。例如,某精度为±0.002%的时钟,其每分钟的误差为1.2 ms,若其工作的环境温度有较大变化,还会增加额外的误差,此误差不可能随晶振制造技术的发展而完全消除。其二,单片机中断的误差。定时器产生中断请求以后,并不一定能马上响应这个中断,若单片机正处理其他的中断(同级或更高级),要等其执行完其他中断,再执行一条主程序指令,才会响应定时器中断。因为程序千差万别,所以这类影响是随机的,很难纠正。

可见,SOE模件中的模拟时钟若不经定期同步校准,其自由运行一段时间后的累计误差会很大。

当不同位置SOE模件的起始模拟时刻一致时,可使不同SOE模件在同一时刻所产生的累计误差一致,从而使不同SOE模件所记录的SOE事件顺序与实际产生的事件顺序之间不会有差异。上述分析基于所有的SOE模件都是同一公司生产的类型相同的模件。由于同步校准后期误差增大,特别是在对时前后会达到最大(如图1所示),在对时时刻,SOE模件产生的累计误差为零,随着时间变化,累计误差越来越大,在下一次对时之前,此差值达到最大。若用1 ms间隔的SOE测试仪来测试SOE模件,会发现原本相差1ms的时间会有重叠或跳变。这样,对于某一不同时发生的事件,SOE模件可能会记录成相同的时间,从而造成事件顺序与实际发生的事件顺序不一致。

图1 SOE模件内部时钟示意图

2 解决方案

对于一般的SOE模件而言,要求事件分辨率在1 ms以内,即要求用1 ms间隔的脉冲测量SOE模件,SOE模件记录的事件时间不允许有重叠或跳变。这样,在对时前后使SOE模件在对时周期内产生的时间最大累计误差越小越好。

在对时周期内,SOE模件都是利用CPU的定时器中断计数来模拟时钟的,SOE模拟时间累计误差是随着时间的增加而线性累加的,在没有累计误差的理想情况下,SOE模件记录的连续事件发生的时刻之间的差值都应该为1 ms,由于晶体振荡器本身有一个周期,晶体振荡器本身问题造成的误差很难去除。例如11.059 2 M Hz的晶振,其1个周期为9×10-5ms,假设不考虑处理器分频、倍频等因素,若1 min对时1次,误差为5.4 ms,即定时寄存器值每改变±1,1 min后时间会与原来时间相差±5.4 ms。这样大的一个差值,很难在1 min的定时周期里通过改变定时寄存器值,使模件内部时钟的读数达到一个最理想的值。

当误差达到正负个定时周期时,若采用减去或加上定时周期的方法来修正该误差(上述例子中采用每10s减去±1ms的方法来修正),可在一定程度上缓解该问题,但此方法若用标准脉宽的方波脉冲去触发SOE事件,在产生修正误差的时刻,仍可能发生事件重叠或跳变的现象。

本文所要解决的问题正是在尽量不增加成本的情况下,用软件方法消除模件最大累计误差,让其在用标准脉宽为1 ms的方波脉冲测试时SOE事件基本无重叠或跳变,因为在每个定时中断产生时可以通过修改定时寄存器来减小误差。例如,在1 min对时1次的情况下,若在某一个定时寄存器值M时测量时长多出A ms,而改变成M+1定时寄存器值时测量时长少Bms,则采用X次M寄存器值后Y次M+1寄存器值,X和Y的取值由计算公式X×A=Y×B来确定,此时调整1 ms最多相差9×10-5ms。

在测试时,可尽量放长间隔时间,如调整对时周期至工程应用周期的10倍对SOE模件进行测量。例如:当定时寄存器设定为8848时,SOE记录时间为2011-01-31 T 11:22:33.444和2011-01-31 T 11:32:33.414,比实际时间慢了 30 ms,当减小计数器值至8847时,SOE记录时间为2011-01-31 T 11:22:33.444和2011-01-31 T 11:32:33.454,比实际时间快了10 ms,此时就可以在定时中断中设定3次寄存器设定值为8 847,1次寄存器设定值为8848,这样,每分钟对时的对时瞬间误差基本可以忽略不计。通过此方法可以使SOE模件在一个完整的对时周期内所产生的时间最大累计误差减小到最小。其效果如图2、图3所示。

3 结果验证

用HS-128 SOE测试信号发生器,设置1 ms间隔脉冲,对珙县电厂2×600 MW机组分散控制系统SOE模件的通道进行测试。修改程序前测试跨越对时时刻SOE状态如图4所示,序号1279及以下的时间整体推迟了1 ms。而在修改之后,未再出现此种情况。

找出SOE模件模拟时间比实际准确时间偏小的模式,再找出SOE模件模拟时间比实际准确时间偏大的模式,每产生m次偏小模式定时中断后,再产生n次偏大模式定时中断,通过这种方法,可以使得SOE模件在整个对时周期内,模拟时间与实际准确时间之间的误差达到最小。

猜你喜欢

模件寄存器中断
分散控制系统I/O模件地址自动识别方案
Lite寄存器模型的设计与实现
“单片机中断概述”微课教学设计
一种考虑GPS信号中断的导航滤波算法
二进制翻译中动静结合的寄存器分配优化方法
Linux中断线程化分析及中断延时测试
移位寄存器及算术运算应用
跟踪导练(二)(5)
maxDNA分散控制系统I/O模件冗余实现机制
DCS过程控制站内IO模件地址重叠识别方法