蔡一磊,李佑文,褚紅健
(南京國電南自軌道交通工程有限公司,江蘇南京 210032)
夏時制,又稱“日光節(jié)約時制”(Daylight Saving Time,DST),是一種為節(jié)約能源而人為規(guī)定地方時間的制度,在這一制度實行期間所采用的統(tǒng)一時間稱為“夏令時”。一般在天亮早的夏季人為將時間提前一小時,可以使人早起早睡,減少照明量,以充分利用光照資源,從而節(jié)約照明用電。各個國家采納夏時制的具體規(guī)定不同,全世界有近110 個國家每年要實行夏令時。在這些國家和地區(qū)實行夏令時制度,在每年進入夏令時時刻,當?shù)貢r鐘將向前撥快1 個小時,同時在離開夏令時進入冬令時時刻,再將時鐘向后回撥1個小時,這就導(dǎo)致在離開夏令時進入冬令時時刻會有1 個小時的重復(fù)時間,分別為夏令時的最后1 小時和冬令時的第1 個小時。如某地區(qū)某年夏令時最后1 個小時為 9 月 21 日的 23 點至 24 點,那么在夏令時結(jié)束的一刻進入冬令時,時鐘根據(jù)夏令時制度回撥1 個小時,就導(dǎo)致當?shù)赜袃蓚€9 月21 日的23 點至24點的時間。
隨著國產(chǎn)電力調(diào)度系統(tǒng)國際化進程的推動,國產(chǎn)電力調(diào)度化系統(tǒng)走向越來越多的國家,上述問題已經(jīng)無法回避,因此如何使系統(tǒng)真正支持多時區(qū)與夏令時提上了工作日程。
由于DSC-9000系統(tǒng)后臺采用GMT時間,在轉(zhuǎn)換為當?shù)貢r間時并不區(qū)分該時間為夏令時時間還是冬令時時間,本文對夏令時制引入的問題進行探討,并按模塊介紹了DSC-9000 系統(tǒng)針對夏令時的整體解決方案[1]。
PSCADA 電力監(jiān)控系統(tǒng)包含控制中心級和站下設(shè)備級兩個層級,針對站下設(shè)備采用監(jiān)控系統(tǒng)時間進行對時的問題,在進出夏令時的時刻,由于設(shè)備的時間不會自動向前撥或者往回撥,所以需在時間切換時進行對時操作(精度為秒級)。除了系統(tǒng)本地實時報警需要提供系統(tǒng)當前時間所處時區(qū)的功能,還有時鐘顯示以及報警歷史查詢等功能均需判斷當前系統(tǒng)所處時令,所以系統(tǒng)需增加當前是處于夏令時還是處于冬令時的標志來實現(xiàn)整體解決方案[2]。
由于設(shè)備上送帶時標的狀態(tài)或遙測信息時,它上送的信息中的時標沒有時令標志,系統(tǒng)無法直接判斷該時標信息屬于冬令時還是夏令時,而在實時報警和歷史報警中均需系統(tǒng)能提供該報警產(chǎn)生時間的時令信息,所以系統(tǒng)需要對上送的時標信息進行時令的判斷。在進出夏令時附近上送的帶時標的報警信息,該時標有可能是夏令時也有可能是冬令時,故需對進出夏令時附近的時標進行特殊處理。
另外,客戶端顯示的時間為當?shù)貢r間,且不帶有夏令時或冬令時的標志位。當時間在夏令時/冬令時切換的過程中,客戶端無法立即獲取服務(wù)器時間并及時將時鐘調(diào)整1個小時。
而在實時報警顯示窗口中,報警一般均是按照報警時間倒序排列,報警時間為當?shù)貢r間且不帶有夏令時或冬令時的標志位。但是由于夏令時最后1 小時和冬令時第1個小時在顯示時完全相同,所以在這兩個重復(fù)的1 個小時范圍內(nèi)報警依然是按照不帶標志位的報警時間排序,會導(dǎo)致某些在冬令時時間范圍內(nèi)產(chǎn)生的報警排在夏令時內(nèi)發(fā)生的報警前面。
而對于歷史報警查詢功能,由于在DSC-9000 系統(tǒng)報警數(shù)據(jù)庫中存儲的歷史報警記錄都是按照GMT時間來進行存儲的,所以在實行夏令時時間的地區(qū),在顯示歷史報警查詢結(jié)果時需要將查詢到的報警歷史記錄的GMT時間轉(zhuǎn)換成當?shù)氐腄ST時間顯示。在轉(zhuǎn)換成當?shù)氐腄ST時間之后,又由于夏令時最后1小時和冬令時第1個小時在顯示時完全相同,所以我們還需要在報警歷史查詢結(jié)果中將顯示相同的時間信息加上不同的后綴標志來加以區(qū)分。
針對站下設(shè)備采用監(jiān)控系統(tǒng)時間對時,在進出夏令時時間的時候進行判斷并發(fā)送對時整點對時命令;由于設(shè)備上送帶時標的報警信息中的時標沒有時令標志,在正常情況下可以取操作系統(tǒng)當前時間的時令標志;而在進出夏令時附近5分鐘內(nèi)的時間范圍內(nèi)需要進行特殊處理,即判斷該時間為夏令時還是冬令時,如果不在這個切換時間范圍內(nèi),則按照正常情況取標志;同時通過寫夏令時對象的DST屬性來標記該時標的時制,該屬性值為1的時候表示當前處于冬令時時間,為0的時候表示當前處于夏令時時間。
在進入夏令時或冬令時時刻,通過寫入實時庫夏令時判斷對象的DST屬性來表示系統(tǒng)當前所處時令,該屬性值為1 時為冬令時時間,為0 為夏令時時間。規(guī)約采集程序還需要通過配置文件的方式記錄每年進入夏令時的時間和出夏令時的時間,以供規(guī)約程序運行判斷。
客戶端時鐘顯示模塊原先的更新原理為,每10秒鐘向后臺請求一次服務(wù)器時間,在每次和服務(wù)器對時的間隔內(nèi),客戶端自行每秒在服務(wù)器獲取的時間基礎(chǔ)上增加1 秒并顯示出來。服務(wù)器向客戶端返回的時間為當?shù)貢r間,且不帶有夏令時或冬令時的標志位。在原先的時鐘模塊處理模式下,當系統(tǒng)時間在夏令時/冬令時切換的過程中,客戶端無法立即獲取服務(wù)器的時間,及時將時鐘調(diào)整1個小時以適應(yīng)時區(qū)跳變帶來的變化[3]。
針對上述問題,需要在客戶端當前時間距離夏令時/冬令時切換時刻不足20 秒的時候,時鐘顯示模塊加快客戶端與后臺服務(wù)器之間對時的頻率,改為每1秒執(zhí)行1 次,從而實現(xiàn)在夏令時轉(zhuǎn)換過程中,系統(tǒng)時鐘模塊能及時獲取服務(wù)器將時鐘回撥或跳變之后的時間,在除了夏令時/冬令時切換的其余時刻,時鐘顯示模塊與后臺服務(wù)器的對時周期仍然保持10 秒不變。
另外,與規(guī)約程序處理方法一樣,在關(guān)于clock模塊的配置文件中也需要將該國家或地區(qū)每年進入夏令時的時間和出夏令時的時間按格式要求配置成功,以供客戶端時鐘程序運行判斷。
在常規(guī)的電力監(jiān)控系統(tǒng)項目中,客戶端當前實時報警顯示模塊的窗口中,報警按照報警時間倒序排列,報警時間為當?shù)貢r間且不帶有夏令時或冬令時的標志位。
但是在夏令時時區(qū)的國家和地區(qū),由于夏令時最后1小時和冬令時第1個小時在時間顯示上會存在完全相同的時間,而在這兩個重復(fù)的1個小時內(nèi)報警依然是按照報警時間排序,會導(dǎo)致某些在冬令時內(nèi)發(fā)生的報警排在夏令時內(nèi)發(fā)生的報警前面,此時報警顯示順序的邏輯與報警產(chǎn)生順序的邏輯不符。
另一方面,在確認全部報警和確認窗口范圍內(nèi)報警時,當前報警顯示模塊之前的設(shè)計邏輯規(guī)定了報警產(chǎn)生時間大于當前系統(tǒng)時間的報警無法被確認。所以導(dǎo)致在客戶端時間處于冬令時第1個小時內(nèi),調(diào)度員執(zhí)行“全部確認”和“確認可視報警”功能時,會使得某些在夏令時最后1 小時發(fā)生的報警無法被確認。如當前時刻為23:10(冬令時),此時執(zhí)行“確認全部報警”操作時,會使得報警窗中一條時間為23:40(夏令時)的報警無法被確認。
規(guī)約采集通信程序能夠通過DST 屬性值來區(qū)分系統(tǒng)當前時間處于夏令時或冬令時。通過修改報警顯示文本的配置,將DST屬性添加到報警點的報警文本格式中,可以使報警顯示內(nèi)容中也可以帶有一個用于區(qū)分系統(tǒng)時間所處時間范圍的字段,如“夏令時,冬令時”“-S-,-W-”等。當前報警顯示模塊窗口結(jié)合報警時間和該字段就能夠正確對夏令時最后1 小時和冬令時第1 個小時產(chǎn)生的報警按照報警產(chǎn)生的時間先后順序進行正確的排序。
以伊朗德黑蘭地鐵項目為例,當時間處于重復(fù)的1個小時內(nèi),負責(zé)通信的規(guī)約程序能夠根據(jù)系統(tǒng)當前的UTC 時間,在實時庫中更新1 個時間的標志位屬性,然后可以通過修改報警文本格式的配置,使得在那1小時內(nèi)產(chǎn)生的報警內(nèi)容中也帶有1個用于時間范圍區(qū)分的字段。在當前報警顯示模塊中,結(jié)合報警時間和該字段,如“夏令時,冬令時”“-S-,-W-”,調(diào)度員就能夠正確將兩次出現(xiàn)重復(fù)出現(xiàn)的時間段內(nèi)的報警按照報警產(chǎn)生的先后時間進行排序。
另外,由于客戶端的時鐘模塊無法添加夏令時或冬令時標志位,在執(zhí)行“確認全部報警”和“確認窗口范圍內(nèi)報警”時,取消實時報警模塊原先報警時間大于當前系統(tǒng)時間的報警無法被確認的功能設(shè)定,便可以解決因時鐘跳變對確認報警帶來的影響。
另外,在關(guān)于實時報警顯示模塊的配置文件中,也需要將該國家或地區(qū)每年進入夏令時的時間和出夏令時的時間按格式要求配置成功,以供客戶端報警模塊運行判斷。
報警歷史查詢模塊依據(jù)工作站(客戶端)的時區(qū)設(shè)置信息,將從報警歷史庫中獲得的報警記錄的UTC時間轉(zhuǎn)成當?shù)貢r區(qū)DST時間,并根據(jù)DST時間的開關(guān)是否配置為開啟,將夏令時最后1 小時和冬令時第1個小時顯示相同的時間信息加上不同的后綴標志加以區(qū)分,該標志位由規(guī)約采集程序判斷并寫入系統(tǒng)實時庫。
本文詳細介紹了基于夏令時的電力監(jiān)控系統(tǒng)解決方案,通過修改與夏令時功能的時間、報警等相關(guān)接口模塊,使系統(tǒng)能支持夏令時地區(qū)的應(yīng)用需求。另外,該方案還提供了靈活的配置方法,降低了國際化項目系統(tǒng)改造升級以及工程實施的難度。