陳滔滔 陳爍彬 杜曉榮 吳偉密 蔣華



摘 要: 以變電站戶外高壓場地的燈光為研究對象,針對傳統的站內照明系統存在控制方式單一、資源利用率低等不足,利用MFC和WinSock編程開發出一款燈光遠程控制軟件,使運維人員能根據實際需要自主選擇和控制燈具的開斷,從而為變電站的照明設計管理提供了一種參考方案。該軟件由主控窗口、連接窗口和進度窗口三個部分組成,具有單燈和全局兩種操控方式。實驗結果表明,其可通過遠方后臺操控的形式靈活地改變燈光的狀態,進而達到節能的目的,具有較強的實用性與可靠性。
關鍵詞: 變電站; 燈光控制; MFC; WinSock; 遠程控制軟件
中圖分類號: TN911?34; TP319 文獻標識碼: A 文章編號: 1004?373X(2017)06?0179?04
Abstract: Taking the lamplight at outdoor high?voltage site in the substation as the research object, in order to overcome the shortcomings of single control mode and low resource utilization existing in the traditional lamplight system in the substation, a lamp light remote control software was developed based on MFC and WinSock to make the operation and maintenance staffs choose the lamp switching control autonomously according to their actual requirement, so as to provide a reference scheme for the illumination design management of the substation. This software is composed of the main control window, connection window and progress window, and has the control modes of single lamp and all lamps. The experimental result shows that the software can flexibly change the lamplight state in the form of remote background control to save the energy, and has high practicability and reliability.
Keywords: substation; lamplight control; MFC; WinSock; remote control software
0 引 言
隨著電網建設的日趨完善和穩步推進,智能、高效、綠色已成為當代電網的發展要求[1]。作為傳輸和轉換電能的主要場所,變電站在整個電網架構中發揮著不可或缺的作用[2]。然而,如今許多變電站室外高壓區域的照明仍舊采用就地控制的方式,運維人員只能通過往返場地來控制燈光的開斷[3]。此外,傳統的控制方式通常采用單個空氣開關控制多組燈光的方式,不但無法根據工作量和天氣條件來開啟或關閉燈光,而且由于電路電流過大容易造成空開跳閘的現象。
基于以上分析,本文介紹了一種適用于變電站的燈光遠控軟件。作為面向用戶的上位機軟件,它在現實操作中能夠與負責建立無線網絡和數據傳輸的AP接點以及直接控制場地高壓燈的燈控接點配合使用,從而實現站內燈光的遠方控制。而其遠程照明控制功能主要采用無線通信的方式來實現,在無需重新布線和鋪設電纜的同時避免了電能的過度浪費,而且還進一步提高了工作效率和能源利用率。
1 軟件的總體設計
1.1 軟件的開發環境
本軟件是以C++為編程語言[4],微軟基礎類庫(MFC)為圖形用戶界面庫[5]的基礎上設計和實現的,其開發平臺的詳細配置如下:操作系統為Windows 7 ultimate;主頻2.40 GHz 的Intel[?]Core(TM) i3?4000M處理器;4.00 GB內存;無線網卡為2×2 11 b/g/n Wireless LAN M.2 Adapter;編程環境為Microsoft Visual Studio 2010。
1.2 系統的整體架構
本軟件定位于變電運行人員使用的照明管理終端軟件,可以與AP接點和燈控接點共同構成無線遠程燈控系統,系統的總體框架如圖1所示。
由圖1可知,本上位機軟件包含了主控窗口、連接窗口、進度窗口三個模塊。對于AP接點和燈控接點而言,雖然其組成部分都包含了WiFi模塊和單片機芯片,但不同之處在于前者主要負責無線局域網的構建及指令數據的轉發,而后者的作用是作為下位機對指令數據進行接收和處理。
在軟件實際運行中,各個模塊在邏輯功能上是相互聯系的。軟件啟動后首先顯示程序的主控窗口,而在燈控操作之前需要與AP接點建立連接,具體可在連接窗口中輸入正確的IP地址和端口號來配置。當成功連接至服務器后,用戶可執行下一步,選擇并點擊主窗口的燈控按鈕,進而發送含上位機標識的燈控指令。
值得注意的是,此時進度窗口會自動彈出并顯示當前的進度。場地上的燈控接點根據接收到的指令信息完成燈光的開/關動作,然后發送含下位機標識的指令。當該指令返回到上位機軟件后,若經判斷與之前發送的指令相一致,主控窗口會同步更新燈光的狀態,以和現場情況相對應,由此便可實現變電站場地燈光的遠控操作。
1.3 軟件設計的UML圖
軟件在具體開發過程中的UML類圖[6]如圖2所示。從圖2可以看到,燈控軟件的三個組成模塊均采用了基于對話框的設計方式,而且是以類的形式呈現的。其中,主控窗口類CLightControlDlg、連接窗口類CConnectionDlg、進度窗口類CProgressDlg都繼承于MFC類庫中的對話框擴展類CDialogEx,故可在此基礎上適當地增加數據成員和成員函數,以實現各自的功能。
2 軟件各子模塊的設計
本軟件由主控窗口、連接窗口、進度窗口三個模塊組成的,下面將具體敘述各個模塊的開發過程。
2.1 主控窗口的設計
考慮到用戶主要通過主窗口來進行燈光的遠程控制,因此良好的交互性和操作的簡便性是該窗口設計的必備要素,并且軟件的研發目標定位于變電站的運行管理輔助工具,故還須體現與專業相符的特征。對此,可以將目標變電站的一次接線圖繪制到主界面上,使得室外場地燈光所在的各設備間隔名稱和位置能在后臺直觀的顯示。另一方面,由于MFC庫中并沒有內置燈光圖形控件,因而需要采用繪畫圓形圖案的方法將其繪制在接線圖上,以便用戶清晰地觀察到燈光的相應位置。軟件主窗口的界面如圖3所示。
為了使用戶通過點擊按鈕來發送燈控指令,進而實現燈光的遠程開啟和關閉,根據MFC的消息映射機制[7],需要為按鈕添加相應的響應事件。另外,系統的工作模式可分為單燈和全局兩種方式。在單燈模式下,每一盞燈光具有惟一的ID號,其作用是指定當前受控的燈光,以便于場地上的燈控接點正確識別,且在主窗口界面中有與燈光圖形一一對應的“開/關”按鈕。而在全局模式下,所有的燈光都具有相同的ID號,通過界面上的“全部開啟/關閉”按鈕可對其進行整體操作。圖4給出了按鈕響應事件的執行過程。
在軟件終端已連接至服務器的前提下,當用戶界面上的“開/關燈”按鈕被點擊后,相當于發起一次燈控操作,此時所有的燈控按鈕將無法被點擊,直到該次的燈控操作完成為止,這樣可以使整個系統變得更加穩定與可靠。
2.2 連接窗口的設計
燈控指令從軟件所在的終端發送到場地的燈控接點之前,需要經由AP接點進行中轉,而連接窗口則是終端與AP接點間相互通信的橋梁。通過連接窗口中相關參數的設置,便可建立兩者間的數據連接,而實現這一過程可采用基于TCP協議的客戶端/服務器(C/S)模式[8]。其中,AP接點作為TCP服務器,具有指定的IP地址和端口號,軟件終端設置為TCP客戶端。與此同時,為了提高研發效率,使用Windows套接字(WinSock)的編程方式[9]。它不僅對TCP協議進行了簡單的封裝,而且還提供了豐富的函數接口。連接窗口的用戶界面如圖5所示。
另外,在實際開發中還使用了多線程技術(Multithreading)[10],即連接模塊的通信功能由新創建的線程CWinThread類來負責執行,由此進一步提升了軟件的并發處理能力。連接窗口的主要實現過程如圖6所示。
需要強調的是,該模塊的通信功能既包括了連接至AP服務器,又包括接收其傳送過來的指令數據。當接收到的指令含有連接中斷標識時,意味著服務器與客戶端間的網絡斷線,需要重新連接,否則說明通信狀況良好。前面曾經提到,主控窗口的按鈕響應事件負責指令的發送,這里將接收的指令與之前發送的指令進行比較,若兩者一致便更新主界面燈光圖形的狀態,否則再次等待來自服務器的指令數據。
2.3 進度窗口的設計
由于一次燈控操作從發起到結束需要耗費一定的時間,這時將當前任務的完成情況展現給用戶是非常有必要的。對此,可在進度窗口中通過MFC庫中的CProgressCtrl類來建立進度條,如圖7所示。
為了使進度條的位置能根據工作的執行進度來定時更新,同樣要利用到MFC的消息映射機制。具體可設置一個具有規定時長的定時器,每經過相同的時間間隔,該定時器將發出ON_WM_TIMER()消息,此時與之對應的名為OnTimer()的函數將被響應[11],其內部的偽代碼如下:
CProgressCtrl* m_ProgressCtrl = 指向進度窗口中進度條的指針;
CLightControlDlg* m_LightControlDlg = 指向主控窗口的指針;
//使進度條位置參數ProgressValue的數值加1,并判斷其是否超過1 000,如果是則置0
if((ProgressValue++)>1 000)
ProgressValue = 0;
//根據當前的位置參數值更新進度條的位置
m_ProgressCtrl?>SetPos(ProgressValue);
//如果當前的燈控操作已完成,則隱藏進度顯示窗口并使主界面的燈控按鈕狀態恢復正常
if(m_LightControlDlg?>Loaded == TRUE)
{
ShowWindow(SW_HIDE);
EnableButton();
}
當用戶點擊主窗口界面的燈控按鈕時,進度顯示窗口將自動彈出,而且進度條位置參數的初始值為零。每經歷一定的時間間隔,系統都會執行OnTimer()函數,使進度條位置參數的數值不斷疊加,當該數值的范圍在規定值以內,將更新窗口中進度條的位置,否則重新置零。另外,系統將根據連接模塊的相應參數來判斷當前的燈控操作是否已完成,如果是則將進度窗口隱藏,同時恢復主控窗口中燈控按鈕的正常狀態,即使其能被用戶再次點擊。
3 實驗結果
在現實試驗中,將110 kV蓮塘站設定為目標變電站來測試遠程照明控制軟件的適用性。該變電站的相關參數為:室外高壓場地面積約2 090 m2,一次設備的獨立間隔為10個,有14盞功率為400 W的高壓射燈(鈉燈),其中與燈控軟件終端的最遠距離約55 m。整個照明遠控系統的無線局域網由AP接點負責組建,而每一盞射燈與負責接收指令并控制通斷的燈控接點直接相連。兩類接點的WiFi模塊與單片機模塊則分別選擇了HLK?RM04和STC89C52RC芯片。單燈模式下,以開啟#2電容器組的射燈為例,通過單擊軟件主控窗口中相應間隔的“開燈”按鍵,經歷一段時間后,高壓場地上的#2電容器組射燈將自動點亮,而軟件主界面上對應的燈光圖形狀態也隨之更新,如圖8所示。
此外,蓮塘變電站原有的燈控方式為14盞高壓射燈,分成5組,每組由一個空氣開關來控制。假定運維人員晚上在某個間隔進行倒閘操作時,只需打開該間隔的1盞燈光,即可滿足照明要求,但因為原來條件的限制僅能一次性開啟3盞燈光。如果以耗時0.5 h來算,原有方式消耗的電能為0.6 kW·h,而通過照明遠控軟件可實現單個燈光的開啟,所消耗的電能將降至0.2 kW·h,僅為原來耗電量的[13]。另一方面,在惡劣天氣或站內特巡的情況下可能需要打開場地上的所有燈光,而在軟件的全局模式下,可通過遠方點擊“全部開啟”按鈕來完成一鍵開啟。
4 結 語
本文介紹了變電站傳統照明燈控方式的不足,針對其存在的耗電量大、易于跳閘等缺陷,設計并研發出一種基于MFC和Socket的照明遠控軟件,其主要包括單燈模式和全局模式兩種工作方式。敘述了軟件的總體架構,并給出了相關的UML圖。在介紹軟件的整體工作流程后,對其各子模塊的設計進行了進一步的分析,具體闡述了主控窗口、通信窗口以及進度窗口的實現過程。最后給出該軟件在實際變電站中應用的效果。實例表明,與原有方式相比,該軟件具備較高的技術可行性,不僅實現了燈光的按需開啟,而且極大地節省了能源。
參考文獻
[1] 董旭柱,夏清,饒宏,等.對南方電網開展智能電網建設的思考[J].南方電網技術,2012,6(3):1?6.
[2] 王林梅,徐碩.智能變電站技術研究與應用[J].機電技術,2012,35(3):106?108.
[3] 錢怡,張輝.無人值班變電站通風、照明系統的現狀和改進措施[J].現代制造,2011(30):36?37.
[4] LIPPMAN S B, LAJOIE J, MOO B E. C++ primer [M]. 5th ed. New Jersey: Addison?Wesley, 2012: 1?28.
[5] 任哲.MFC Windows應用程序設計[M].3版.北京:清華大學出版社,2013:65?71.
[6] DENNIS A, WIXOM B H, TEGARDEN D. Systems analysis and design with UML [M]. 4th ed. Chicago: RR Donnelley, 2012: 195?198.
[7] 衛洪春,彭小利,蒲國林.MFC窗口創建過程的研究[J].現代電子技術,2014,37(11):151?154.
[8] DEAN J, HARRISON A, LASS R N, et al. Client/server messaging protocols in serverless environments [J]. Journal of network and computer applications, 2011, 34(4): 1366?1379.
[9] 李霞,陳松,張國琰.基于Socket的VC++與FLASH通信[J].重慶交通大學學報(自然科學版),2011,30(2):344?348.
[10] LASALLE D, KARYPIS G. Multi?threaded modularity based graph clustering using the multilevel paradigm [J]. Journal of parallel and distributed computing, 2015, 76: 66?80.
[11] 李國良,王培俊,侯磊,等.基于OpenGL的虛擬數控車床加工仿真系統研究[J].機械設計與制造,2011(11):168?170.