APP下载

基于夏令时解决方案的PSCADA系统应用与研究

2020-03-02蔡一磊李佑文褚红健

江苏科技信息 2020年24期
关键词:冬令时钟标志

蔡一磊,李佑文,褚红健

(南京国电南自轨道交通工程有限公司,江苏南京 210032)

0 引言

夏时制,又称“日光节约时制”(Daylight Saving Time,DST),是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时”。一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个国家采纳夏时制的具体规定不同,全世界有近110 个国家每年要实行夏令时。在这些国家和地区实行夏令时制度,在每年进入夏令时时刻,当地时钟将向前拨快1 个小时,同时在离开夏令时进入冬令时时刻,再将时钟向后回拨1个小时,这就导致在离开夏令时进入冬令时时刻会有1 个小时的重复时间,分别为夏令时的最后1 小时和冬令时的第1 个小时。如某地区某年夏令时最后1 个小时为 9 月 21 日的 23 点至 24 点,那么在夏令时结束的一刻进入冬令时,时钟根据夏令时制度回拨1 个小时,就导致当地有两个9 月21 日的23 点至24点的时间。

随着国产电力调度系统国际化进程的推动,国产电力调度化系统走向越来越多的国家,上述问题已经无法回避,因此如何使系统真正支持多时区与夏令时提上了工作日程。

由于DSC-9000系统后台采用GMT时间,在转换为当地时间时并不区分该时间为夏令时时间还是冬令时时间,本文对夏令时制引入的问题进行探讨,并按模块介绍了DSC-9000 系统针对夏令时的整体解决方案[1]。

1 夏令时方案需求分析

PSCADA 电力监控系统包含控制中心级和站下设备级两个层级,针对站下设备采用监控系统时间进行对时的问题,在进出夏令时的时刻,由于设备的时间不会自动向前拨或者往回拨,所以需在时间切换时进行对时操作(精度为秒级)。除了系统本地实时报警需要提供系统当前时间所处时区的功能,还有时钟显示以及报警历史查询等功能均需判断当前系统所处时令,所以系统需增加当前是处于夏令时还是处于冬令时的标志来实现整体解决方案[2]。

由于设备上送带时标的状态或遥测信息时,它上送的信息中的时标没有时令标志,系统无法直接判断该时标信息属于冬令时还是夏令时,而在实时报警和历史报警中均需系统能提供该报警产生时间的时令信息,所以系统需要对上送的时标信息进行时令的判断。在进出夏令时附近上送的带时标的报警信息,该时标有可能是夏令时也有可能是冬令时,故需对进出夏令时附近的时标进行特殊处理。

另外,客户端显示的时间为当地时间,且不带有夏令时或冬令时的标志位。当时间在夏令时/冬令时切换的过程中,客户端无法立即获取服务器时间并及时将时钟调整1个小时。

而在实时报警显示窗口中,报警一般均是按照报警时间倒序排列,报警时间为当地时间且不带有夏令时或冬令时的标志位。但是由于夏令时最后1 小时和冬令时第1个小时在显示时完全相同,所以在这两个重复的1 个小时范围内报警依然是按照不带标志位的报警时间排序,会导致某些在冬令时时间范围内产生的报警排在夏令时内发生的报警前面。

而对于历史报警查询功能,由于在DSC-9000 系统报警数据库中存储的历史报警记录都是按照GMT时间来进行存储的,所以在实行夏令时时间的地区,在显示历史报警查询结果时需要将查询到的报警历史记录的GMT时间转换成当地的DST时间显示。在转换成当地的DST时间之后,又由于夏令时最后1小时和冬令时第1个小时在显示时完全相同,所以我们还需要在报警历史查询结果中将显示相同的时间信息加上不同的后缀标志来加以区分。

2 系统解决方案

2.1 规约采集程序解决方案

针对站下设备采用监控系统时间对时,在进出夏令时时间的时候进行判断并发送对时整点对时命令;由于设备上送带时标的报警信息中的时标没有时令标志,在正常情况下可以取操作系统当前时间的时令标志;而在进出夏令时附近5分钟内的时间范围内需要进行特殊处理,即判断该时间为夏令时还是冬令时,如果不在这个切换时间范围内,则按照正常情况取标志;同时通过写夏令时对象的DST属性来标记该时标的时制,该属性值为1的时候表示当前处于冬令时时间,为0的时候表示当前处于夏令时时间。

在进入夏令时或冬令时时刻,通过写入实时库夏令时判断对象的DST属性来表示系统当前所处时令,该属性值为1 时为冬令时时间,为0 为夏令时时间。规约采集程序还需要通过配置文件的方式记录每年进入夏令时的时间和出夏令时的时间,以供规约程序运行判断。

2.2 客户端时钟显示解决方案

客户端时钟显示模块原先的更新原理为,每10秒钟向后台请求一次服务器时间,在每次和服务器对时的间隔内,客户端自行每秒在服务器获取的时间基础上增加1 秒并显示出来。服务器向客户端返回的时间为当地时间,且不带有夏令时或冬令时的标志位。在原先的时钟模块处理模式下,当系统时间在夏令时/冬令时切换的过程中,客户端无法立即获取服务器的时间,及时将时钟调整1个小时以适应时区跳变带来的变化[3]。

针对上述问题,需要在客户端当前时间距离夏令时/冬令时切换时刻不足20 秒的时候,时钟显示模块加快客户端与后台服务器之间对时的频率,改为每1秒执行1 次,从而实现在夏令时转换过程中,系统时钟模块能及时获取服务器将时钟回拨或跳变之后的时间,在除了夏令时/冬令时切换的其余时刻,时钟显示模块与后台服务器的对时周期仍然保持10 秒不变。

另外,与规约程序处理方法一样,在关于clock模块的配置文件中也需要将该国家或地区每年进入夏令时的时间和出夏令时的时间按格式要求配置成功,以供客户端时钟程序运行判断。

2.3 客户端实时报警显示解决方案

在常规的电力监控系统项目中,客户端当前实时报警显示模块的窗口中,报警按照报警时间倒序排列,报警时间为当地时间且不带有夏令时或冬令时的标志位。

但是在夏令时时区的国家和地区,由于夏令时最后1小时和冬令时第1个小时在时间显示上会存在完全相同的时间,而在这两个重复的1个小时内报警依然是按照报警时间排序,会导致某些在冬令时内发生的报警排在夏令时内发生的报警前面,此时报警显示顺序的逻辑与报警产生顺序的逻辑不符。

另一方面,在确认全部报警和确认窗口范围内报警时,当前报警显示模块之前的设计逻辑规定了报警产生时间大于当前系统时间的报警无法被确认。所以导致在客户端时间处于冬令时第1个小时内,调度员执行“全部确认”和“确认可视报警”功能时,会使得某些在夏令时最后1 小时发生的报警无法被确认。如当前时刻为23:10(冬令时),此时执行“确认全部报警”操作时,会使得报警窗中一条时间为23:40(夏令时)的报警无法被确认。

规约采集通信程序能够通过DST 属性值来区分系统当前时间处于夏令时或冬令时。通过修改报警显示文本的配置,将DST属性添加到报警点的报警文本格式中,可以使报警显示内容中也可以带有一个用于区分系统时间所处时间范围的字段,如“夏令时,冬令时”“-S-,-W-”等。当前报警显示模块窗口结合报警时间和该字段就能够正确对夏令时最后1 小时和冬令时第1 个小时产生的报警按照报警产生的时间先后顺序进行正确的排序。

以伊朗德黑兰地铁项目为例,当时间处于重复的1个小时内,负责通信的规约程序能够根据系统当前的UTC 时间,在实时库中更新1 个时间的标志位属性,然后可以通过修改报警文本格式的配置,使得在那1小时内产生的报警内容中也带有1个用于时间范围区分的字段。在当前报警显示模块中,结合报警时间和该字段,如“夏令时,冬令时”“-S-,-W-”,调度员就能够正确将两次出现重复出现的时间段内的报警按照报警产生的先后时间进行排序。

另外,由于客户端的时钟模块无法添加夏令时或冬令时标志位,在执行“确认全部报警”和“确认窗口范围内报警”时,取消实时报警模块原先报警时间大于当前系统时间的报警无法被确认的功能设定,便可以解决因时钟跳变对确认报警带来的影响。

另外,在关于实时报警显示模块的配置文件中,也需要将该国家或地区每年进入夏令时的时间和出夏令时的时间按格式要求配置成功,以供客户端报警模块运行判断。

2.4 报警历史查询解决方案

报警历史查询模块依据工作站(客户端)的时区设置信息,将从报警历史库中获得的报警记录的UTC时间转成当地时区DST时间,并根据DST时间的开关是否配置为开启,将夏令时最后1 小时和冬令时第1个小时显示相同的时间信息加上不同的后缀标志加以区分,该标志位由规约采集程序判断并写入系统实时库。

3 结语

本文详细介绍了基于夏令时的电力监控系统解决方案,通过修改与夏令时功能的时间、报警等相关接口模块,使系统能支持夏令时地区的应用需求。另外,该方案还提供了灵活的配置方法,降低了国际化项目系统改造升级以及工程实施的难度。

猜你喜欢

冬令时钟标志
多功能标志杆的使用
别样的“时钟”
古代的时钟
认标志
首都的标志是只熊
冬令进补有膏方
冬令进补药膳
有趣的时钟
时钟会开“花”
医改进入新阶段的重要标志