服務(wù)熱線
18971653633
風(fēng)電場網(wǎng)絡(luò)通訊采用光纜傳輸,風(fēng)機(jī)與風(fēng)機(jī)之間的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用可自愈式以太環(huán)網(wǎng)結(jié)構(gòu),風(fēng)場級拓?fù)浣Y(jié)構(gòu)為多環(huán)結(jié)構(gòu)。風(fēng)機(jī)機(jī)艙與塔基之間的連接光纜為多模光纜。風(fēng)機(jī)與風(fēng)機(jī)之間及風(fēng)機(jī)與監(jiān)控中心之間的連接均為單模光纜。風(fēng)場通訊網(wǎng)絡(luò)環(huán)內(nèi)采用100M光纖以太網(wǎng)絡(luò)。核心交換機(jī)與風(fēng)場監(jiān)控系統(tǒng)服務(wù)器的接口采用1000M以太網(wǎng)。
硬件系統(tǒng)包括數(shù)采服務(wù)器2臺、數(shù)據(jù)服務(wù)器2臺、應(yīng)用服務(wù)器2臺(應(yīng)用服務(wù)器通常與數(shù)采服務(wù)器合二為一)、發(fā)布機(jī)1臺、I/O機(jī)1臺,操作員站1臺、若干安全隔離設(shè)備。其中,數(shù)據(jù)服務(wù)器存放歷史數(shù)據(jù),具體實施過程中,甲方可根據(jù)風(fēng)場規(guī)模進(jìn)行服務(wù)器配置,小規(guī)模風(fēng)場可將數(shù)采服務(wù)器、數(shù)據(jù)服務(wù)器、應(yīng)用服務(wù)器合而為一,對于大規(guī)模風(fēng)場可部署多臺數(shù)采服務(wù)器、數(shù)據(jù)服務(wù)器及應(yīng)用服務(wù)器,軟件采用模塊化設(shè)計,可部署于同一臺服務(wù)器也可分別部署。
服務(wù)器采用龍芯3C5000L服務(wù)器處理器芯片,2.2G/16核,基于*自主的LoongArch®龍芯指令系統(tǒng),支持雙路、四路機(jī)架式及塔式、高密度等多種服務(wù)器及存儲產(chǎn)品形態(tài)。雙路32核服務(wù)器具備高性價比,四路64核服務(wù)器性能好,算力強(qiáng)。龍芯3C5000L完善支持Docker、KVM等虛擬化應(yīng)用,適合數(shù)據(jù)中心、云計算以及高性能計算等領(lǐng)域廣泛應(yīng)用。詳細(xì)參數(shù)如下。
四、軟件設(shè)計說明
將軟件分為三層,其組成和框架如下圖2。
關(guān)于該系統(tǒng)開發(fā),軟件部署主要包括風(fēng)機(jī)數(shù)采服務(wù)器程序、應(yīng)用服務(wù)器程序、數(shù)據(jù)服務(wù)器程序、發(fā)布機(jī)程序、I/O機(jī)程序。
將該監(jiān)控系統(tǒng)程序根據(jù)功能結(jié)構(gòu)劃分為三層,采集層、服務(wù)層、前端網(wǎng)站,每部分均可根據(jù)服務(wù)器分布情況獨(dú)立安裝部署,程序之間均采用標(biāo)準(zhǔn)UDP或TCP協(xié)議。
I/O機(jī)主要完成協(xié)議轉(zhuǎn)換及第三方接口通訊功能,主要通訊協(xié)議均部署在該服務(wù)器,在實際應(yīng)用中,各技術(shù)協(xié)議是以應(yīng)用的方式呈現(xiàn)的,可根據(jù)系統(tǒng)程序框架,自由添加協(xié)議,可對每個協(xié)議進(jìn)程進(jìn)行添加、關(guān)閉和配置。按照程序開發(fā)架構(gòu)方式,各通訊協(xié)議均可部署至任何一臺服務(wù)器。
發(fā)布機(jī)包含了完整的網(wǎng)站服務(wù)、UI、網(wǎng)閘通訊、歷史數(shù)據(jù)記錄及查詢功能,將風(fēng)機(jī)數(shù)據(jù)發(fā)布至公網(wǎng),可遠(yuǎn)程訪問查看該風(fēng)場狀態(tài)。
(一)軟件架構(gòu)
根據(jù)軟件的三層結(jié)構(gòu),軟件的設(shè)計框架如圖3所示。
1、SCADA展示層,首先需通過“檔案管理”模塊,錄入風(fēng)機(jī)模塊信息,并導(dǎo)入模塊點(diǎn)表;
2、根據(jù)模塊信息組合出風(fēng)機(jī)類型,配置風(fēng)機(jī)相關(guān)的通信參數(shù);
3、數(shù)據(jù)服務(wù)的部分,根據(jù)配置的風(fēng)機(jī)相關(guān)信息,生成數(shù)采所需的配置信息:如鏈路配置,IO點(diǎn)表信息,創(chuàng)建風(fēng)機(jī)通信的模塊;
4、風(fēng)機(jī)配置完成后,數(shù)采的部分開始工作:各個通信模塊通過點(diǎn)表信息,采集風(fēng)機(jī)的數(shù)據(jù),并將數(shù)據(jù)寫入實時數(shù)據(jù)緩存;
5、實時數(shù)據(jù)rtdb緩存將數(shù)據(jù)進(jìn)行整理,分發(fā)給不同的應(yīng)用模塊
6、實時數(shù)據(jù)模塊:指令通道,用于單獨(dú)處理SCADA下發(fā)的指令,并將指令下發(fā)給數(shù)采來控制風(fēng)機(jī);emqx主要用于SCADA頁面的實時數(shù)據(jù)訂閱/發(fā)布;redis主要用于緩存實時數(shù)據(jù),并緩存一些統(tǒng)計信息;
7、能量管理算法模塊:處理風(fēng)場本地調(diào)度、電網(wǎng)調(diào)度、集控調(diào)度;并將調(diào)度的過程進(jìn)行記錄;
8、歷史數(shù)據(jù)的部分是通過實時數(shù)據(jù)的接口進(jìn)行周期或者變位存盤;并定期做數(shù)據(jù)調(diào)度,處理統(tǒng)計信息;并需根據(jù)主控上傳的報警信息,處理報警數(shù)據(jù)的存盤;
9、SCADA展示層數(shù)據(jù)源從兩個方面獲?。簩崟r數(shù)據(jù)主要通過訂閱的方式從實時數(shù)據(jù)區(qū)獲?。粴v史統(tǒng)計信息主要從歷史數(shù)據(jù)庫中獲??;
(二)通信層設(shè)計
1、風(fēng)機(jī)設(shè)備模型:如圖4所示。
1).根據(jù)不同的風(fēng)機(jī)類型點(diǎn)表,對點(diǎn)表進(jìn)行抽象分類,并對分類的數(shù)據(jù)點(diǎn)進(jìn)行編碼,并生成數(shù)據(jù)點(diǎn)表;
2).數(shù)據(jù)點(diǎn)表可以在檔案管理里面進(jìn)行相關(guān)的處理;
3).展示層所有的標(biāo)量數(shù)據(jù)顯示都是根據(jù)指標(biāo)碼的形式反向查詢數(shù)據(jù)檔案進(jìn)行顯示;
2、數(shù)據(jù)傳輸流程:如圖5所示。
1).數(shù)采的部分采用成熟的QTouch采集軟件框架,里面涵蓋豐富的設(shè)備通信驅(qū)動,保證現(xiàn)場所有的設(shè)備能夠正常聯(lián)網(wǎng)通信;所有的數(shù)據(jù)進(jìn)入實時共享內(nèi)存區(qū),供其它接口實時訪問;
2).在數(shù)采服務(wù)器與數(shù)據(jù)服務(wù)器分離的情況下,前置服務(wù)器用于接收數(shù)采傳輸?shù)膶崟r數(shù)據(jù),此部分需代碼重新開發(fā)調(diào)整
3).報警引擎的部分:需在QTouch的報警體系下進(jìn)行重定義代碼級開發(fā)調(diào)整;
4).消息中間件:采集第三方emqx消息中間件,redis實時數(shù)據(jù)緩存;用做數(shù)據(jù)的實時訂閱和發(fā)布(此功能需代碼開發(fā)調(diào)整);
5).此部分會用到兩套emqx中間件:一套用作頁面實時展示的數(shù)據(jù),一套用作控制下發(fā)的操作,確保控制的實時有效而不受其它模塊影響
6).一套redis實時數(shù)據(jù)緩存服務(wù):主要用于頁面的實時曲線數(shù)據(jù)緩存部分的數(shù)據(jù);
7).原始數(shù)據(jù)直接根據(jù)接收端的數(shù)據(jù)緩存直接存儲:此部分需代碼級開發(fā)
8).根據(jù)業(yè)務(wù)邏輯,將數(shù)據(jù)進(jìn)行分庫分表存儲:如,分鐘、小時、天、月、年進(jìn)行分表存儲;業(yè)務(wù)邏輯存儲部分,單一個模塊,直接從實時數(shù)據(jù)庫中獲取數(shù)據(jù);
9).分表策略;仍然以風(fēng)機(jī)為單位,單個風(fēng)機(jī)分為模擬量表、開關(guān)量表(模擬量和開關(guān)量分開,主要是因為模擬量可以按照秒級存儲,開關(guān)量按照狀態(tài)變化來存儲);以橫向存儲為原則,即單個風(fēng)機(jī)在一個時刻存儲在數(shù)據(jù)庫中為一條數(shù)據(jù);
10).web發(fā)布:采用成熟的apache web服務(wù)器框架進(jìn)行發(fā)布應(yīng)用,前端采用的是SSM框架進(jìn)行代碼開發(fā);
11).與第三方數(shù)據(jù)交互主要采用OPC UA、或者104等通信協(xié)議來進(jìn)行交互;
(三)服務(wù)引用層
1.系統(tǒng)服務(wù)
整個系統(tǒng)提供七大服務(wù):數(shù)采服務(wù)、消息中間件服務(wù)、存儲數(shù)據(jù)服務(wù)、數(shù)據(jù)服務(wù)、數(shù)據(jù)調(diào)度服務(wù)、數(shù)據(jù)推送服務(wù)、web服務(wù),如圖6所示:
2.服務(wù)集群部署:如圖7所示
(四)數(shù)據(jù)庫層
1.功能與數(shù)據(jù)流向圖
從原始數(shù)據(jù)進(jìn)入系統(tǒng)到數(shù)據(jù)輸出到前端供WEB系統(tǒng)應(yīng)用,整個數(shù)據(jù)流向分為:原始數(shù)據(jù)、數(shù)據(jù)預(yù)處理、數(shù)據(jù)應(yīng)用三個階段。
原始數(shù)據(jù),即由前置通訊解析完成后所取得的設(shè)備數(shù)據(jù),此數(shù)據(jù)不作任何二次計算。在原始數(shù)據(jù)中,由于數(shù)據(jù)存儲的頻率到秒級、要求存儲的周期至少3個月,設(shè)備數(shù)量在300臺左右,因此在原始數(shù)據(jù)的存儲上以設(shè)備為單位進(jìn)行分表。則300臺設(shè)備其原始數(shù)據(jù)為300套數(shù)據(jù)單元表。
數(shù)據(jù)預(yù)處理:為提高系統(tǒng)訪問速度,給予前端應(yīng)用良好的體驗效果,故應(yīng)以最小的延時時間讓用戶盡快獲取到數(shù)據(jù)。在原始數(shù)據(jù)進(jìn)入數(shù)據(jù)庫后,再根據(jù)應(yīng)用功能的要求進(jìn)行數(shù)據(jù)的二次計算,包括發(fā)電量、故障統(tǒng)計、風(fēng)速統(tǒng)計,也包括最大值、最小值等數(shù)據(jù)的計算。整個數(shù)據(jù)的預(yù)處理,將會在后臺以不同的頻率時行調(diào)度執(zhí)行,執(zhí)行完成的結(jié)果寫入固定的數(shù)據(jù)表中,再給其它功能調(diào)度使用。
數(shù)據(jù)應(yīng)用:數(shù)據(jù)應(yīng)用的直接體現(xiàn)為用戶前端的數(shù)據(jù)查詢。根據(jù)分表的原則,以秒級為單位,則單臺風(fēng)機(jī)的月累計數(shù)據(jù)量為:86400條,連續(xù)保存三個月,則為:26萬條。數(shù)據(jù)應(yīng)用查詢以單臺風(fēng)機(jī)查詢時,可以保持良好的體驗。
2.實體和屬性
實體是實體-關(guān)系模型的基本對象,是現(xiàn)實案例中各種事物的抽象。凡是可以相互區(qū)別并可以被識別的事、物、概念等對象均可認(rèn)為是實體。本系統(tǒng)數(shù)據(jù)庫中,以單臺風(fēng)機(jī)為基礎(chǔ),按實體進(jìn)行劃分如下:
數(shù)據(jù)分表
2.1原始表
①表命名規(guī)則:
fan_sto_風(fēng)機(jī)編號_sec_201901 : 秒級存儲(按月、風(fēng)機(jī)編號分表)
fan_sto_風(fēng)機(jī)編號_min : 分級存儲(按月、風(fēng)機(jī)編號分表)
fan_sto_風(fēng)機(jī)編號_hour : 時級存儲(按月、風(fēng)機(jī)編號分表)
fan_sto_風(fēng)機(jī)編號_day : 天級存儲(按月、風(fēng)機(jī)編號分表)
②外鍵關(guān)聯(lián):
sto_field_id 風(fēng)場編號 >>關(guān)聯(lián)>>dwf_field風(fēng)場表的dwf_id
sto_fan_id 風(fēng)機(jī)編號 >>關(guān)聯(lián)>>dgf_fan風(fēng)場表的dgf_id
③取值方案:
原始表根據(jù)數(shù)據(jù)類型分為:模擬量。模擬量根據(jù)數(shù)據(jù)粒度分為:秒級、分鐘級、小時級,其中,秒級存儲原始值;分鐘級存儲整分時刻原始值;小時級存儲整點(diǎn)時刻原始值;
④原始數(shù)據(jù)存儲及自動創(chuàng)表原則:
原始數(shù)據(jù)儲存單風(fēng)機(jī)一個月數(shù)據(jù),自動創(chuàng)建數(shù)據(jù)表。自動創(chuàng)建數(shù)據(jù)表可以調(diào)用存儲過程,亦可以在代碼中創(chuàng)建。
⑤表數(shù)據(jù)容量估算:
秒級數(shù)據(jù)單月存儲量:60秒*60分*24小時*31天=268萬
分鐘級數(shù)據(jù)單月存儲量:60分*24小時*31天=4.46萬
原始數(shù)據(jù)表結(jié)構(gòu):
數(shù)字量存儲:
①表命名規(guī)則:
fan_std_風(fēng)機(jī)編號_年份 : 開關(guān)量量化即儲存(按年、風(fēng)機(jī)編號分表)
②外鍵關(guān)聯(lián):
std_field_id 風(fēng)場編號 >>關(guān)聯(lián)>>dwf_field風(fēng)場表的dwf_id
std_fan_id 風(fēng)機(jī)編號 >>關(guān)聯(lián)>>dgf_fan風(fēng)場表的dgf_id
③取值方案:
開關(guān)量量化即儲存
④原始數(shù)據(jù)存儲及自動創(chuàng)表原則:
每臺風(fēng)機(jī)每年一張表,自動創(chuàng)建數(shù)據(jù)表。自動創(chuàng)建數(shù)據(jù)表可以調(diào)用存儲過程,亦可以在代碼中創(chuàng)建。
⑤表數(shù)據(jù)容量估算:
單表一年數(shù)據(jù):41次*365天*200開關(guān)量=299萬
即每天風(fēng)機(jī)的所有開關(guān)量平均變化不超過41次時,單表一年數(shù)據(jù)不超成功300萬條
2.2實時表
實時表主要用來存儲單臺風(fēng)機(jī)實時數(shù)據(jù),單臺實時數(shù)據(jù)包括:實時值、狀態(tài)值、統(tǒng)計值和靜態(tài)檔案。
實時值:實時刷新風(fēng)機(jī)的參數(shù)值由消息隊列推送于前端應(yīng)用。另外一部分實時值包括氣象數(shù)據(jù)、箱變信息也一并由消息隊列推送于前端應(yīng)用。
狀態(tài)值:風(fēng)機(jī)運(yùn)行狀態(tài)由設(shè)備端上送風(fēng)機(jī)狀態(tài),(變化上送和存儲)主動存儲到設(shè)備狀態(tài)數(shù)據(jù)表中。
統(tǒng)計值:由歷史數(shù)據(jù)進(jìn)行統(tǒng)計,包括:日發(fā)電量、月發(fā)電量,報警數(shù)據(jù)量,累計運(yùn)行時間、累計維護(hù)次數(shù)等統(tǒng)計值。
設(shè)備檔案:包括設(shè)備編號、設(shè)備類型等靜態(tài)信息。
2.3設(shè)備狀態(tài)
設(shè)備狀態(tài),主要記錄風(fēng)機(jī)通訊狀態(tài)變化。當(dāng)風(fēng)機(jī)發(fā)生故障,通訊中斷時通知系統(tǒng)用戶。當(dāng)風(fēng)機(jī)排除故障,通訊恢復(fù)正常后通知系統(tǒng)用戶。設(shè)備狀態(tài)以變位方式存儲。
2.4統(tǒng)計表
統(tǒng)計表主要針對37項統(tǒng)計項,分為自由統(tǒng)計和報表下載;自由統(tǒng)計由:普通統(tǒng)計、分段統(tǒng)計、風(fēng)玫瑰圖報表、功率曲線報表組成;報表下載由:日報表、月報表、年報表、日分段報表、月分段報表、年分段報表、損失電量報表、時間可利用率報表、發(fā)電量可利用率報表組成。
37項統(tǒng)計方法說明如下:
發(fā)電量:查詢首尾時間的總發(fā)電量相減;
耗電量:查詢首尾時間的耗電量相減;
風(fēng)機(jī)可以用率:1-(風(fēng)機(jī)自身故障小時數(shù)/統(tǒng)計小時數(shù));
最小風(fēng)速:查詢時間段內(nèi)的瞬時風(fēng)速取最小值;
最大風(fēng)速:查詢時間段內(nèi)的瞬時風(fēng)速取最大值;
平均風(fēng)速:查詢時間段內(nèi)的瞬時風(fēng)速進(jìn)行累加/查詢到的記錄條數(shù);
最小有功功率:查詢時間段內(nèi)的有功功率取最小值;
最大有功功率:查詢時間段內(nèi)的有功功率取最大值;
平均有功功率:查詢時間段內(nèi)的有功功率累加/查詢到的記錄條數(shù)
最小無功功率:查詢時間段內(nèi)的無功功率取最小值;
最大無功功率:查詢時間段內(nèi)的無功功率取最大值;
平均無功功率:查詢時間段內(nèi)的無功功率累加/查詢到的記錄條數(shù)
低環(huán)境溫度:查詢時間段內(nèi)的環(huán)境溫度取最小值;
最高環(huán)境溫度:查詢時間段內(nèi)的環(huán)境溫度取最大值;
平均環(huán)境溫度:查詢時間段內(nèi)的環(huán)境溫度進(jìn)行累加/查詢到的記錄條數(shù);
有效風(fēng)小時數(shù):查詢首尾時間的有效風(fēng)小時數(shù)相減;
有效風(fēng)時率:有效風(fēng)小時數(shù)/統(tǒng)計小時數(shù)*100%;
風(fēng)機(jī)可用小時數(shù):風(fēng)機(jī)正常運(yùn)行小時數(shù)+非風(fēng)機(jī)自身故障停機(jī)小時數(shù);
風(fēng)機(jī)正常運(yùn)行小時數(shù):查詢首尾時間的風(fēng)機(jī)正常運(yùn)行時間相減;
發(fā)電小時數(shù):查詢首尾時間的發(fā)電小時相減;
停運(yùn)小時數(shù):統(tǒng)計總時間-統(tǒng)計時間段的風(fēng)機(jī)正常運(yùn)行小時數(shù);
故障停機(jī)小時數(shù);查詢首尾時間的故障停機(jī)時間相減;
風(fēng)機(jī)自身故障停機(jī)小時數(shù):查詢首尾時間的風(fēng)機(jī)自身故障停機(jī)時間相減;
非風(fēng)機(jī)自身故障停機(jī)小時數(shù):故障停機(jī)小時數(shù)-風(fēng)機(jī)自身故障停機(jī)小時數(shù);
維護(hù)小時數(shù):查詢首尾時間的服務(wù)時間相減;
故障停機(jī)次數(shù):查詢時間段內(nèi)的故障為TRUE的記錄條數(shù);
風(fēng)機(jī)自身故障停機(jī)次數(shù):查詢時間段內(nèi)的風(fēng)機(jī)自身故障停機(jī)為TRUE的記錄條數(shù);
非風(fēng)機(jī)自身故障停機(jī)次數(shù):故障停機(jī)次數(shù)-風(fēng)機(jī)自身故障停機(jī)次數(shù);
維護(hù)次數(shù):查詢時間段內(nèi)的工作模式為維護(hù)的記錄條數(shù);
并網(wǎng)次數(shù):查詢時間段內(nèi)的并網(wǎng)為TRUE的記錄條數(shù);
偏航次數(shù):左偏次數(shù)+右偏次數(shù);
左偏次數(shù):偏航在逆時針運(yùn)行模式為TRUE的記錄條數(shù);
右偏次數(shù):偏航在順時針運(yùn)行模式為TRUE的記錄條數(shù);
滿發(fā)小時數(shù):統(tǒng)計周期內(nèi)風(fēng)機(jī)發(fā)電量/風(fēng)機(jī)容量;
人工停機(jī)小時數(shù):查詢首尾時間的人工停機(jī)時間相減;
環(huán)境溫度過低停機(jī)小時數(shù):查詢首尾時間的環(huán)境溫度過低停機(jī)時間相減;
風(fēng)暴停機(jī)小時數(shù):查詢首尾時間的風(fēng)暴停機(jī)時間相減;
3.數(shù)據(jù)庫主從熱備
數(shù)據(jù)庫主從熱備目前行業(yè)通用的工具是使用:keepalive實現(xiàn)主從熱備,無縫切換。其配置簡單,實用性高。keepalived的作用是檢測后端TCP服務(wù)的狀態(tài),如果有一臺提供TCP服務(wù)的后端節(jié)點(diǎn)死機(jī),或者工作出現(xiàn)故障,keepalived會及時檢測到,并將有故障的節(jié)點(diǎn)從系統(tǒng)中剔除,當(dāng)提供TCP服務(wù)的節(jié)點(diǎn)恢復(fù)并且正常提供服務(wù)后keepalived會自動將TCP服務(wù)的節(jié)點(diǎn)加入到集群中。這些工作都是keepalived自動完成,不需要人工干涉。
KeepAlive主機(jī)配置:
KeepAlive從機(jī)配置: