摘 要:本文基于Modbus/TCP協議,在.NET Framework框架下利用C#編程語言,設計了一款運行于windows系統下的監控軟件,該軟件可實現在風電廠中控室對風機進行數據采集、分析、處理,還可對風機進行遠程啟動、停機、復位、功率調節等控制,實踐表明,該系統運行穩定,有效地解決了風力發電機組遠程監控方面的問題,具有一定工程價值。
關鍵詞:風電場;遠程監控;SCADA;Modbus/TCP;PLC
中圖分類號:TP277 文獻標識碼:A 文章編號:1674-7712 (2014) 02-0000-01
對風力發電機組進行遠程監視控制十分必要,而風電廠遠程監控系統的軟件則是重中之重,它直接決定了整個系統的穩定性和效率。
Modbus/TCP協議目前應用廣泛,絕大多數廠商的PLC都支持Modbus/TCP協議,其具有良好的通用性,因此基于Modbus/TCP協議開發客戶端程序已成為風電遠程監控系統一種行之有效的方法。
一、Modbus/TCP協議
Modbus/TCP協議以一種非常簡單的方式將Modbus幀嵌入到TCP幀中,使其成為工業以太網應用層協議,Modbus協議層在TCP之上,其主要完成的任務為:在服務器端,負責解譯來自客戶端的Modbus幀,執行相應的請求[1]。
Modbus TCP協議的幀格式如表1所示。應用協議報頭分為4個部分,數據標識符用來標識Modbus幀的次序,每多發送一個Modbus幀,該值加1;協議標識符用來確認是不是Modbus協議,如果是Modbus協議用1表示,其他協議用0表示;接下來2個字節用來表示后續字節數,即從單元標識符開始一直到數據域結束的字節數,單元標識符用來標識Modbus串行線上的某個設備單元,由于風機都是網絡結構,所以這一字節并沒有實際意義,填0x0或0xFF即可。功能碼的含義如表2所示。數據域則添加要發送的數據,如果是向PLC發送讀請求的話,數據域為要讀取的寄存器起始地址和要讀取的寄存器個數,如果是向PLC發送寫請求,則數據域為要寫入的寄存器起始地址和要寫入的寄存器個數、需要寫入的字節數以及需要寫入的數據。
一、運用C#編程實現通訊
C#是微軟公司設計的一種編程語言,是從C和C++派生來的一種簡單、現代、面向對象和類型安全的編程語言,并且能夠與.NET框架完美結合[2]。
為了簡化網絡編程復雜度,.NET對套接字又進行了封裝,封裝后的類就是System.Net.Sockets命名空間下的TcpListener類和TcpClient類。但是要注意,TcpListener和TcpClient只支持標準協議編程。如果希望編寫非標準協議的程序,只能使用套接字來實現[3]。
核心代碼
值得一提的是,由于PLC與計算機的數據存儲方式可能不同,因此需要進行大小端判斷及轉換,轉換可以采用Reverse()方法。軟件界面的設計如圖2所示,通過該界面可以實現對風機進行啟停控制,功率調節,數據采集,繪制圖表,查看故障等功能,可滿足風電場遠程監控系統的絕大部分需求。
三、結束語
實踐表明,該軟件通過Modbus TCP協議與風力發電機組實現了數據交互,可通過上位機對機組進行啟動、停機、復位、限定功率等控制,查看機組各傳感器反饋數據,查看故障代碼,運行穩定,操作簡單,具有實際價值。
參考文獻:
[1]郝曉弘,祖守圓,徐維濤.基于VC的Modbus/TCP協議模型通信測試軟件的實現[J].微計算機信息,2006.
[2]明日科技.C#從入門到精通[M].北京:清華大學出版社,2012(09).
[作者簡介]肖一卓(1985-),男,本科,助理工程師,主要研究方向:風力發電機組電控系統;方玉琨(1987-),男,本科,助理工程師,主要研究方向:橋、門式起重機電控系統設計及調試。