張子實(shí),趙靜一,周 楓
(1.燕山大學(xué)機(jī)械工程學(xué)院,河北 秦皇島 066004;2.福氏新能源技術(shù)(上海)有限公司,上海 201210)
近年來(lái),風(fēng)電給風(fēng)電設(shè)備制造業(yè)帶來(lái)了巨大的市場(chǎng),同時(shí)也帶來(lái)了巨大的挑戰(zhàn)[1]。隨著風(fēng)力發(fā)電機(jī)組裝機(jī)容量的快速發(fā)展、累計(jì)運(yùn)行時(shí)間的持續(xù)增加,風(fēng)電機(jī)組的維護(hù)問題日益突出[2]。為了快速而準(zhǔn)確地進(jìn)行風(fēng)電機(jī)組故障診斷和設(shè)計(jì)優(yōu)化,需開發(fā)高效、穩(wěn)定的風(fēng)電數(shù)據(jù)采集系統(tǒng),并完善相應(yīng)的數(shù)據(jù)庫(kù)。
在風(fēng)機(jī)工作過(guò)程中,數(shù)據(jù)采集系統(tǒng)采集關(guān)鍵對(duì)象數(shù)據(jù)信息,并進(jìn)行數(shù)據(jù)分類、存儲(chǔ)和處理,從而實(shí)現(xiàn)風(fēng)機(jī)系統(tǒng)運(yùn)行實(shí)時(shí)監(jiān)控、故障及時(shí)分析,進(jìn)而提高風(fēng)力發(fā)電機(jī)組運(yùn)行的可靠性,延長(zhǎng)其使用壽命[3]。傳統(tǒng)的風(fēng)電數(shù)據(jù)采集系統(tǒng)使用VB、C等文本化語(yǔ)言編寫,使用Modbus 美國(guó)國(guó)家信息交換標(biāo)準(zhǔn)編碼(American standard code for information interchange,ASCII)或遠(yuǎn)程終端設(shè)備(remote terminal unit,RTU)串口通信模式[4],對(duì)于風(fēng)場(chǎng)中風(fēng)機(jī)數(shù)量較多、通信環(huán)境較差以及程序維護(hù)更新頻繁等狀態(tài)的適應(yīng)性較差。
本文在實(shí)際現(xiàn)場(chǎng)風(fēng)機(jī)變槳數(shù)據(jù)采集項(xiàng)目的基礎(chǔ)上,開發(fā)了一種基于LabVIEW和Modbus/TCP 通信協(xié)議的風(fēng)機(jī)實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)在LabVIEW環(huán)境下開發(fā),在計(jì)算機(jī)強(qiáng)大的圖形用戶界面(graphical user interface,GUI)的基礎(chǔ)上,充分利用Modbus/TCP通信協(xié)議高可靠性、低成本的優(yōu)勢(shì),對(duì)運(yùn)行中的風(fēng)電變槳系統(tǒng)數(shù)據(jù)進(jìn)行記錄。系統(tǒng)運(yùn)行穩(wěn)定、控制可靠、操作友好,為風(fēng)電自動(dòng)化領(lǐng)域的實(shí)時(shí)數(shù)據(jù)監(jiān)控和網(wǎng)絡(luò)化通信提供了一種有效的解決方案[5]。
Modbus/TCP是運(yùn)行在TCP /IP協(xié)議上的Modbus報(bào)文傳輸協(xié)議,即將Modbus協(xié)議幀嵌入到TCP/IP協(xié)議幀中,利用網(wǎng)絡(luò)傳輸Modbus協(xié)議報(bào)文[6]。Modbus通常用于設(shè)備之間監(jiān)控和數(shù)據(jù)采集(supervisory control and data acquisition,SCADA)的網(wǎng)絡(luò)通信,而TCP可以在軟件中高效地處理Modbus請(qǐng)求和響應(yīng),使用專用連接和標(biāo)志符來(lái)實(shí)現(xiàn)更有效的網(wǎng)絡(luò)連接。與串行鏈路Modbus ASCII或RTU通信相比,這種建立在以太網(wǎng)基礎(chǔ)上的通信協(xié)議可擴(kuò)展性更優(yōu),更易于集成不同網(wǎng)關(guān)設(shè)備,傳輸效率更高。
LabVIEW是NI公司開發(fā)的、使用圖標(biāo)函數(shù)代替文本語(yǔ)言創(chuàng)建應(yīng)用程序的虛擬儀器開發(fā)環(huán)境[7]。LabVIEW開發(fā)環(huán)境中集成了大量?jī)?nèi)置硬件驅(qū)動(dòng)程序、控件和可供擴(kuò)展的函數(shù)庫(kù),使得開發(fā)人員可以通過(guò)虛擬儀器程序(virtual instrument,VI)圖標(biāo)連線,高效地建立科學(xué)的編程體系,快速地在前面板(用戶操作界面)和后面板(程序框圖界面)完成模塊化調(diào)試運(yùn)行。
LabVIEW提供Modbus VI和Modbus I/O服務(wù)器,用于在不同類型總線或網(wǎng)絡(luò)連接的設(shè)備之間進(jìn)行Modbus通信[8]。標(biāo)準(zhǔn)的Modbus I/O功能性較為簡(jiǎn)單,通常需要配置購(gòu)買LabVIEW DSC和LabVIEW Real-Time附加模塊。而Modbus VI可通過(guò)Modbus Library的形式免費(fèi)下載安裝。Modbus VI和TCP VI可配合使用,功能完善、搭配方便。
Modbus/TCP采用C/S模式進(jìn)行報(bào)文傳輸。該模式基于4種類型的報(bào)文,即請(qǐng)求、指示、響應(yīng)和證實(shí)[9]。其數(shù)據(jù)幀由MBAP 報(bào)文頭、功能碼、數(shù)據(jù)域組成,去除了從機(jī)地址、校驗(yàn)碼,由TCP /IP和以太網(wǎng)校驗(yàn)的機(jī)制來(lái)校驗(yàn)傳輸數(shù)據(jù)的準(zhǔn)確性[10-12]。其采集數(shù)據(jù)內(nèi)容包含控制器和驅(qū)動(dòng)器數(shù)據(jù)兩部分,數(shù)據(jù)地址涵蓋了所有項(xiàng)目。
Modbus數(shù)據(jù)表如表1所示。
表1 Modbus 數(shù)據(jù)表
整個(gè)風(fēng)電數(shù)據(jù)采集系統(tǒng)包括數(shù)據(jù)前端采集設(shè)備、數(shù)據(jù)采集服務(wù)端程序模塊和遠(yuǎn)程監(jiān)控客戶端。系統(tǒng)運(yùn)行流程如圖1所示。數(shù)據(jù)前端采集設(shè)備安裝在風(fēng)機(jī)輪轂配電柜中,主要由DEIF AWC400變槳控制器、PHOENIX CONTACT 可組態(tài)嵌入式計(jì)算機(jī)Basic line BPC 2000及其他通信輔件組成。兩者都可以直接安裝在變槳控制柜或柜內(nèi)導(dǎo)軌上。其中:DEIF AWC400主要負(fù)責(zé)整合風(fēng)機(jī)自身和變槳電機(jī)驅(qū)動(dòng)器的數(shù)據(jù),并完成實(shí)時(shí)數(shù)據(jù)上傳;BPC 2000主要作為承載數(shù)據(jù)采集服務(wù)端程序的載體,使用Windows 7操作系統(tǒng)。數(shù)據(jù)采集服務(wù)端程序基于LabVIEW,在Windows操作系統(tǒng)開發(fā)運(yùn)行,由Modbus/TCP通信、數(shù)據(jù)處理存儲(chǔ)以及系統(tǒng)配置和狀態(tài)維護(hù)等部分等組成。系統(tǒng)根據(jù)用戶需要,完成程序配置更新,通過(guò)與數(shù)據(jù)前端采集設(shè)備通信得到數(shù)據(jù),并存儲(chǔ)在計(jì)算機(jī)本地或?qū)崟r(shí)地傳輸給遠(yuǎn)程監(jiān)控客戶端。遠(yuǎn)程監(jiān)控客戶端直接面向用戶。用戶可通過(guò)TeamViewer直接登錄風(fēng)場(chǎng)組態(tài)計(jì)算機(jī)進(jìn)行遠(yuǎn)程控制、實(shí)時(shí)監(jiān)控和文件傳輸。傳輸?shù)玫降臍v史數(shù)據(jù)及運(yùn)行日志可以作為分析風(fēng)機(jī)故障診斷的依據(jù)。
圖1 系統(tǒng)運(yùn)行流程圖
上位機(jī)軟件系統(tǒng)在LabVIEW環(huán)境下開發(fā)。整個(gè)程序整合為三大模塊:配置文件導(dǎo)入模塊、主通信循環(huán)模塊以及數(shù)據(jù)處理保存模塊。
①配置文件導(dǎo)入模塊。
系統(tǒng)通過(guò)讀取安裝目錄data support文件夾中的配置文件,將數(shù)據(jù)轉(zhuǎn)化為局部變量,完成對(duì)系統(tǒng)運(yùn)行狀態(tài)的初始化輸入與控制。data support文件夾由Set.txt、Error.txt、Modbus configuration.txt、Modbus name.txt和System operation record.xlsx等組成。其中:Set.txt主要負(fù)責(zé)設(shè)置通信IP地址及端口、采樣頻率、采樣周期以及異常狀態(tài)下調(diào)整參數(shù);Error.txt文件用于存儲(chǔ)系統(tǒng)運(yùn)行日志,內(nèi)容包含發(fā)生故障時(shí)間、次數(shù)和判斷依據(jù);Modbus configuration.txt 文件用于更改Modbus運(yùn)行狀態(tài),包括功能碼、起始地址和讀取數(shù)量等;Modbus name.txt文件用于存儲(chǔ)數(shù)據(jù)表頭標(biāo)志,以單列形式保存;System operation record.xlsx文件用于存放開發(fā)者系統(tǒng)版本號(hào)以及現(xiàn)場(chǎng)服務(wù)工程師更改配置時(shí)的文件存檔記錄條。
②主通信循環(huán)模塊。
整個(gè)主通信程序建立在while循環(huán)之上,通過(guò)定時(shí)結(jié)構(gòu)和事件結(jié)構(gòu),完成對(duì)程序運(yùn)行的監(jiān)控。初始化每個(gè)風(fēng)機(jī)的數(shù)據(jù)、IP、端口及通信標(biāo)志,將其綁定為唯一數(shù)組簇,初始化通信標(biāo)志為布爾假;TCP連接成功后,進(jìn)入Modbus通信,得到寄存器數(shù)據(jù);一輪循環(huán)過(guò)后,在下一輪循環(huán)中更新通信標(biāo)志直接使用通信成功的IP ref跳過(guò)TCP,直接進(jìn)行Modbus通信。如果中途出現(xiàn)通信異常,首先根據(jù)通信IP和端口再次連接TCP通信;在規(guī)定的循環(huán)時(shí)間內(nèi)如通信成功則返回主循環(huán),如通信失敗則返回空字符,直至通信成功再次返回主循環(huán)。通信異常的事件會(huì)被記錄在系統(tǒng)運(yùn)行日志中。
③數(shù)據(jù)處理保存模塊。
通信得到的寄存器數(shù)據(jù)首先被系統(tǒng)打包成一維數(shù)組;然后根據(jù)數(shù)據(jù)類型進(jìn)行分類整理,包括轉(zhuǎn)十進(jìn)制整形字符串、個(gè)別位置無(wú)符號(hào)化及狀態(tài)識(shí)別位數(shù)據(jù)導(dǎo)出等;最后在該一維數(shù)組首列添加當(dāng)前循環(huán)的系統(tǒng)時(shí)間,完成單次節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)。LabVIEW提供了整套數(shù)組處理函數(shù)、字符串處理函數(shù)以及定時(shí)時(shí)間函數(shù),在通信循環(huán)框內(nèi)就能方便地搭建處理系統(tǒng)。
數(shù)據(jù)保存建立在通信循環(huán)外的while循環(huán)中。保存測(cè)試數(shù)據(jù),或回放存儲(chǔ)的數(shù)據(jù)就要使用文件I/O操作。LabVIEW在文件I/O模塊中提供了創(chuàng)建拆分文件路徑、讀取及寫入電子表格、打開、關(guān)閉、查詢和刪除文件等函數(shù)模塊。先通過(guò)安裝文件根目錄拆分得到需要存儲(chǔ)數(shù)據(jù)的“data”文件夾路徑,在初始設(shè)定每1 s采集一次數(shù)據(jù)的條件下,將每5 min的數(shù)據(jù)及數(shù)據(jù)列名稱寫入電子表格,并以當(dāng)前最后一次保存時(shí)間為文件名保存。
當(dāng)系統(tǒng)發(fā)生異常斷電事故,系統(tǒng)會(huì)從Modbus傳輸來(lái)的數(shù)據(jù)中獲得辨識(shí),更改為異常狀態(tài)下的存儲(chǔ)周期。因?yàn)樵诋惓k娫礌顟B(tài)下,這段時(shí)間的數(shù)據(jù)具有更高的分析價(jià)值,縮短存儲(chǔ)周期可以獲得更多的分析數(shù)據(jù)。當(dāng)系統(tǒng)數(shù)據(jù)達(dá)到容量限定值而沒有及時(shí)導(dǎo)出數(shù)據(jù)時(shí),系統(tǒng)會(huì)根據(jù)設(shè)定溢出比例刪除最早的歷史數(shù)據(jù),不會(huì)發(fā)生容量崩潰。
在組態(tài)計(jì)算機(jī)上運(yùn)行程序需要將其編譯生成可執(zhí)行程序(簡(jiǎn)稱exe)文件,將生成的exe文件和一些用到的組件打包生成installer,即安裝程序,然后在目標(biāo)計(jì)算機(jī)上運(yùn)行安裝程序。運(yùn)行過(guò)程中生成的exe文件、LabVIEW運(yùn)行引擎以及其他所用到的工具包會(huì)自動(dòng)安裝到目標(biāo)計(jì)算機(jī)上。這種移植方法較為簡(jiǎn)單。
主程序運(yùn)行界面包含界面提示欄、標(biāo)題欄、Modbus配置欄、地址文件欄、通信狀態(tài)欄及數(shù)據(jù)展示欄。程序運(yùn)行過(guò)程中,系統(tǒng)計(jì)數(shù)欄數(shù)字跳動(dòng),MB Status狀態(tài)燈常亮。點(diǎn)擊停止存盤按鈕,程序停止,數(shù)據(jù)展示欄展示收集數(shù)據(jù),生成error日志記錄文件及生成完整數(shù)據(jù)記錄文件。為保證通電重啟后依舊可以采集數(shù)據(jù),程序更改了系統(tǒng)注冊(cè)表,設(shè)置了開機(jī)自啟動(dòng)。設(shè)備配置了無(wú)線網(wǎng)卡。用戶可以通過(guò)TeamViewer遠(yuǎn)程登錄該界面進(jìn)行監(jiān)控。隨著記錄時(shí)間增加,在data文件夾中會(huì)保存按時(shí)間順序排列的txt文件,可合并成一個(gè)數(shù)據(jù)文件,并導(dǎo)入Matlab進(jìn)行后續(xù)的數(shù)據(jù)分析。
以海西A1風(fēng)機(jī)的數(shù)據(jù)為例,重點(diǎn)分析驅(qū)動(dòng)器參數(shù)類的數(shù)據(jù)。導(dǎo)入合并后的數(shù)據(jù),用plot指令繪制得到的位置指令曲線如圖2所示。
圖2 位置指令曲線
由圖2可知,在將近10 h內(nèi),風(fēng)機(jī)大部分時(shí)間處于停機(jī)狀態(tài)。
風(fēng)力發(fā)電的高效穩(wěn)定依賴于風(fēng)機(jī)大量的實(shí)時(shí)數(shù)據(jù)分析。本文開發(fā)了基于Modbus/TCP通信協(xié)議的風(fēng)電數(shù)據(jù)采集系統(tǒng)。開發(fā)過(guò)程中,軟件直接調(diào)用軟件通信函數(shù),使系統(tǒng)搭建調(diào)試周期短;操作過(guò)程中,HMI界面友好,具有穩(wěn)定的異常狀態(tài)處理機(jī)制和靈活的文件配置機(jī)制;運(yùn)行過(guò)程中,實(shí)現(xiàn)了多對(duì)象高效率通信、采集數(shù)據(jù)完整、存儲(chǔ)穩(wěn)定,便于查詢處理。該系統(tǒng)已成功運(yùn)行一段時(shí)間并傳回階段性數(shù)據(jù),其系統(tǒng)模式為風(fēng)電數(shù)據(jù)采集系統(tǒng)開發(fā)提供了一種新的途徑。