電力系統遠程控制項目總結

很好,終於搞定了整個project,作爲一個有始有終的人,咳咳,今天我來完成這個summary。


時間:2012年11月-2013年2月

人物:三個中國人+四個芬蘭人+一個波蘭人+巴基斯坦人

地點:Technobotnia, Vasa, Suomi

任務:輸電線遠程監控系統


正如上面所說,這個系統是一個輸電線遠程監控系統,利用ABB的microSCADA遠程通過RTU控制電力系統上的VAMP Relay,從而控制電力網絡。microSCADA與RTU通過IEC60870-101協議以數傳電臺(radio modem)通信,RTU與Relay通過Modbus-RTU協議以串口通信。另外,安全起見,項目中沒有使用真實的電力系統,而是用了ABB的SIM600來模擬整個電力網絡。microSCADA需要監控的項目包括,每個relay的三相電路的電流值,remote/local狀態以及開關,同時,relay還需要在local端對overcurrent進行報警和切斷。整個系統的示意圖如下:


老師講我們這幾個人分爲了幾個小組,分別是microSCADA組,協議組,relay組,SIM600組,最後將大家的成果組合起來成爲整個系統。我們三個中國人是協議組,負責熟悉並實現IEC101,Modbus以及之間的轉化。從而實現軟件版的RTU。這裏就不講IEC101以及Modbus,主要講講最上面提到的部分。


1. Architecture

本次的軟件構架主要由我設計並實現。我設計了兩個類分別分析IEC101和Modbus,同時各有一個生成對方數據幀的函數。大體構架可以,但是細節方面還很欠缺,首先是函數細分不夠,尤其是生成對方數據幀的函數,長度巨大,很不符合模塊化的結構。同時,由於IEC101協議在執行命令之前需要hand-shaking,需要變量來儲存上次的數據幀。我愚蠢的使用了IF語句和全局變量,嚴重影響了整個程序的可看性。現在想想,堆棧絕對沒有問題,完全可以使用。


2. Const

這裏指C/C++裏面的const。曾經我很迷惑爲何要有const這個東西,一個變量變不變又如何呢,現在我明白了,爲的是保護變量的安全,使其在執行過程中不能被改變,這個非常重要,尤其是在這樣的處理數據幀的項目中。難怪之前看過一個變態const定義的面試題,太重要了。


3. C裏面的malloc以及free函數

這個一定要一起使用,太重要了。這裏我想吐槽一下,C語言執行速度快得原因很簡單,因爲一切從零開始,什麼都需要自己去實現,連內存分配之後都需要自己去回收。但是Java還有其它一些高級語言就不需要擔心這個問題,虛擬機會幫你回收,整個速度自然會慢些了。怪不得之前有人必須C語言是一把鋒利的小刀,用的好可以創造藝術品,但是稍不注意就會劃傷自己。具體選擇還是看應用範圍,實時性很高的環境首選C,實時性要求不高,網絡應用什麼的用個帶有虛擬機的Java可以了,雖然慢一些,但是安全,哈哈。


就說這麼多了,其它的技術性的東西都寫在technical manual裏面,就不再翻譯過來了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章