樊東亮 白俊平 朱春穎 聞娜 黃亮 王健
摘 要:隨著新能源技術(shù)的發(fā)展,微電網(wǎng)已成為電力系統(tǒng)重要組成部分,但由于其能源的間歇性,易造成電能質(zhì)量下降。針對(duì)這一問(wèn)題,該文設(shè)計(jì)了一種基于C#的微電網(wǎng)電能質(zhì)量檢測(cè)系統(tǒng)?;赟TM32F429芯片的MCU將采集到的電能數(shù)據(jù)處理后,利用無(wú)線(xiàn)網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送至上位機(jī),基于C#開(kāi)發(fā)的上位機(jī)利用C/S模式與MCU通信,并將數(shù)據(jù)存儲(chǔ)于服務(wù)器中,為后續(xù)提高電能質(zhì)量提供數(shù)據(jù)支撐。運(yùn)行表明該系統(tǒng)準(zhǔn)確、快捷,實(shí)際應(yīng)用效果良好。
關(guān)鍵詞:微電網(wǎng) STM32 C# C/S
中圖分類(lèi)號(hào):TN918 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2019)02(a)-00-02
1 系統(tǒng)結(jié)構(gòu)
此設(shè)計(jì)方案主要由3個(gè)層次結(jié)構(gòu)分別是主站層(主要包括上位機(jī)、服務(wù)器和工作站)、通信層(主要實(shí)現(xiàn)數(shù)據(jù)傳輸)和遠(yuǎn)動(dòng)層(MCU數(shù)據(jù)采集終端)。
2 MCU(數(shù)據(jù)采集終端)硬件結(jié)構(gòu)
硬件結(jié)構(gòu)主要是由STM32F429芯片組成的MCU,該芯片外圍包括顯示屏、輸入按鍵、UART接口(RS232串口、RS485串口)、以太網(wǎng)通信、電能數(shù)據(jù)采集、傳感器等模塊。主要實(shí)現(xiàn)對(duì)光伏、風(fēng)力和儲(chǔ)能設(shè)備的電氣量參數(shù)進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,并將數(shù)據(jù)上傳至上位機(jī)進(jìn)行處理。
3 上位機(jī)通信程序設(shè)計(jì)
上位機(jī)通信程序依托C#編程語(yǔ)言,采用TCP/IP協(xié)議,調(diào)用套接字Socket來(lái)實(shí)現(xiàn)。
3.1 Socket通信
Socket是一種網(wǎng)絡(luò)上跨平臺(tái)的進(jìn)程間的通信機(jī)制,它是應(yīng)用程序的基石[1]。Socket分為兩種:
(1)流套接字,用TCP提供一條雙向的、可靠的、順序的、無(wú)重復(fù)的數(shù)據(jù)流。
(2)數(shù)據(jù)報(bào)套接字,用UDP提供雙向數(shù)據(jù)流,但不保證是可靠、有序、無(wú)重復(fù)的。
為了保證可靠的數(shù)據(jù)傳輸,程序采用TCP協(xié)議的流式Socket。首先服務(wù)器初始化,通過(guò)調(diào)用socket()建立一個(gè)套接字,然后調(diào)用bind()將該套接字和本地網(wǎng)絡(luò)地址聯(lián)系在一起,再調(diào)用listen()使套接字做好偵聽(tīng)的準(zhǔn)備,并規(guī)定它請(qǐng)求隊(duì)列的長(zhǎng)度,之后就調(diào)用accept()來(lái)接收連接??蛻?hù)在建立套接字后就可以調(diào)用connect()和服務(wù)器建立連接。連接一旦建立,客戶(hù)機(jī)和服務(wù)器之間就可以通過(guò)調(diào)用write()和read()來(lái)發(fā)送和接收數(shù)據(jù)。數(shù)據(jù)傳送結(jié)束后,雙方調(diào)用Close()關(guān)閉套接字。其流程圖如圖1所示。
3.2 多線(xiàn)程技術(shù)
傳統(tǒng)的應(yīng)用程序主要以單線(xiàn)程形式運(yùn)行,即程序的運(yùn)行控制權(quán)由單個(gè)線(xiàn)程獨(dú)占來(lái)完成所有任務(wù)。如遇到復(fù)雜任務(wù)時(shí),就會(huì)造成響應(yīng)速度慢的問(wèn)題。多線(xiàn)程技術(shù)可以利用CPU的空閑時(shí)間片,用較少的時(shí)間對(duì)用戶(hù)做出響應(yīng),這樣可以更好地利用系統(tǒng)資源,提高整體運(yùn)行效率[2]。因此,該系統(tǒng)上位機(jī)采用多線(xiàn)程技術(shù),通過(guò)區(qū)分不同的Socket,從而實(shí)現(xiàn)各通信間同時(shí)進(jìn)行,互不干擾,提高CPU的利用率。部分C#服務(wù)器程序如下。
(1)服務(wù)器初始化。
int port = 2000; //定義偵聽(tīng)端口
TcpListener tcplistener = new TcpListener ( port ) ; //實(shí)例監(jiān)聽(tīng)
private bool listener= true; //設(shè)定監(jiān)聽(tīng)標(biāo)示位,判斷偵聽(tīng)狀態(tài)
Treading Tread tcpServerTread; //創(chuàng)建線(xiàn)程,接收信息
(2)服務(wù)器開(kāi)啟循環(huán)監(jiān)聽(tīng)。
tcpServerThread=new Thread(new ThreadStart ( Listen ) );//實(shí)例化監(jiān)聽(tīng)程序
tcpServerThread.Start();//啟動(dòng)線(xiàn)程
private void listen()
{
while(listener)
{
tcplistener.Start ( ) ; //開(kāi)始監(jiān)聽(tīng)
TcpClient tcpclient = tcplistener.AcceptTcpClient ( ) ; //通過(guò)TCP連接請(qǐng)求
}
}
4 工作站軟件設(shè)計(jì)
該系統(tǒng)軟件設(shè)計(jì)依托C#編程平臺(tái)主要實(shí)現(xiàn)功能包括以下幾方面。
(1)SCADA(數(shù)據(jù)采集與監(jiān)視系統(tǒng))。管理人員通過(guò)軟件操作界面查看、監(jiān)測(cè)微電網(wǎng)中各分布式電源(風(fēng)力發(fā)電、光伏發(fā)電和儲(chǔ)能設(shè)備)、母線(xiàn)、負(fù)荷等電氣量(電壓、電流、功率等)。同時(shí)展示微電網(wǎng)系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),使管理人員深入了解系統(tǒng)運(yùn)行情況。
(2)事件信息管理。主要提供故障系統(tǒng)告警、查詢(xún)等功能,為用戶(hù)維護(hù)設(shè)備提供服務(wù)。
(3)氣象及發(fā)電量預(yù)測(cè)。該系統(tǒng)可通過(guò)網(wǎng)絡(luò)接口訪(fǎng)問(wèn)中國(guó)氣象網(wǎng),查詢(xún)當(dāng)前和未來(lái)氣象信息,利用該信息預(yù)測(cè)短期設(shè)備發(fā)電量,為系統(tǒng)穩(wěn)定運(yùn)行提供最優(yōu)方案。
(4)用戶(hù)信息管理。主要包括操作員姓名、電話(huà)、操作權(quán)限等功能。
(5)報(bào)表管理。主要包括電能質(zhì)量信息綜合分析報(bào)表、歷史數(shù)據(jù)報(bào)表等功能。
5 結(jié)語(yǔ)
該文設(shè)計(jì)了基于C#的微電網(wǎng)電能質(zhì)量監(jiān)測(cè)系統(tǒng),通過(guò)遠(yuǎn)程實(shí)時(shí)監(jiān)控微電網(wǎng)中光伏發(fā)電、風(fēng)機(jī)發(fā)電、儲(chǔ)能設(shè)備和負(fù)荷的電壓、電流、功率等電能參數(shù),保障電網(wǎng)良好的電能質(zhì)量,為系統(tǒng)的可靠性運(yùn)行奠定基礎(chǔ)。運(yùn)行表明,該系統(tǒng)具有實(shí)時(shí)性好、方便、快捷等特點(diǎn),具有很高的實(shí)用價(jià)值。
參考文獻(xiàn)
[1] 時(shí)珊珊,魯宗相,周雙喜,等.中國(guó)微電網(wǎng)的特點(diǎn)和發(fā)展方向[J].中國(guó)電力,2009,42(7):21-25.
[2] 蘇玲,張建華,王利,等.微電網(wǎng)相關(guān)問(wèn)題及技術(shù)研究[J].電力系統(tǒng)保護(hù)與控制,2010,38(19):235-239.