馬春雷,于華東,程顯明,楊連喜,張寶
(北京智芯微電子科技有限公司,北京,102200)
隨著智能電網建設的推進以及低壓電器生產技術的不斷發(fā)展,國家產業(yè)化調整給低壓電器行業(yè)發(fā)展帶來了新機遇。用電量的持續(xù)增長以及智能電網向更高水平發(fā)展,近幾年適用于12至1250安培低壓保護裝置的塑殼斷路器(Moulded Case Circuit Breaker,MCCB)的技術和性能有很多新的發(fā)展和動向[1]。塑殼斷路器是電力系統(tǒng)的中流砥柱,對其智能化的提升一直都是控制領域的熱點問題[2]。智慧開關屬于“控制與保護開關電器”范疇,是低壓電器中的新一代產品,它采用模塊化的單一產品結構型式,將斷路器、接觸器、過載繼電器、隔離器等主要功能于一體化的多功能電器[3],是傳統(tǒng)的斷路器、接觸器、熱繼電器、熔斷器等低壓電器的最佳替代產品[4]。以智能化、模塊化、可通信為主要特點的新一代智慧開關將成為市場主流產品。
由于使用過程中需求的改進或者應用程序BUG的修補,仍需要對智慧開關上的APP進行維護、更新,需要工程師到現場拆開殼體更新APP比較麻煩[5],而塑殼斷路器的定期維護[6]和軟件升級非常重要。
C#.Net框架是微軟公司推出的應用軟件開發(fā)平臺,可以進行高效、高質量的Windows應用程序開發(fā),得到了各個領域的廣泛應用[7]。
為滿足智慧開關軟件現場升級需求,依據DL/T 645-2007規(guī)約基于C#編程語言設計一款人機交互上位機軟件,實現了智慧開關內部APP本地和遠程升級功能,提高了通信效率。
DL/T 645-2007多功能電能表通信規(guī)約是為統(tǒng)一和規(guī)范多功能電能表與數據終端設備之間的數據交換而制訂,成為用戶和電網間雙向通信的必要環(huán)節(jié)[8]。協(xié)議采用主從結構的半雙工通信方式,電能表或其他計量設備為通信從站,并要求每個從站有唯一的地址編碼[9]。
主站主動發(fā)送信息給從站,而從站不會主動發(fā)信息,只是響應主站發(fā)送的請求信息。規(guī)定主站、從站之間數據傳遞的基本單位是字節(jié),每個字節(jié)包含8位二進制碼數據,傳輸時加上一個起始位,一個偶校驗位,一個停止位,如圖1所示。D0是字節(jié)的最低有效位,D7是字節(jié)的最高有效位,傳輸順序為先高位后低位[9]。
圖1 字節(jié)傳輸序列
數據標識分別用 DI3、DI2、DI1和DI0代表四個字節(jié)區(qū)分不同數據項,每個字節(jié)采用十六進制編碼。文件傳輸過程中只存在一個數據類別用DI3=06H,DI2=01H,DI1=05H來表示,DI0表示文件傳輸不同的屬性。表1列出主站主動與從站交互傳輸文件的五種不同的屬性。
表1 主站下發(fā)指令數據標識
表2列出了從站響應主站的五種屬性。
表2 從站響應指令數據標識
主站(上位機軟件)下發(fā)傳輸文件到終端設備,從站是指接收文件的設備(如智慧開關等)。主從交互是APP升級的關鍵環(huán)節(jié),首先,上位機軟件發(fā)送升級請求幀,下位機初始化正確響應上位機后進行文件寫入,然后,文件寫入全部完成后查詢數據塊保證文件傳輸完整,最后,進行CRC校驗并執(zhí)行升級,升級結束查詢軟件版本號。
如果是對多個從設備進行程序升級,首次升級時采用廣播地址的方式進行,進行兩個輪次的廣播下發(fā)寫數據升級命令。兩個輪次廣播下發(fā)完畢,查詢從設備的軟件版本號,如果有從設備升級失敗則以單播的方式對升級失敗的從設備進行不大于三個輪次的升級操作。
上位機軟件由設備管理、操作控制和數據顯示三大功能組成[10]。上位機軟件結構如圖2所示。
圖2 上位機軟件結構圖
(1)設備管理。設備管理完成智慧開關APP的準備工作,其主要功能如下:
①參數設定。參數設置,包括:波特率、校驗位、停止位、傳輸字節(jié)數、軟件版本號等。
②地址設定。設置要升級的下位機地址,可以實現一對多傳輸文件,也可以實現一對一傳輸。
③串口打開或關閉??赏ㄟ^串口實現主從交互通信功能。
(2)操作控制。操作控制是文件在向下位機傳輸過程中,可操作上位機軟件進行控制。
①文件瀏覽。通過文件瀏覽功能,實現指定類型的文件傳輸,過濾其他類型,提高效率。
②文件傳輸。文件傳輸前上位機軟件與下位機通信正常,保證文件順利傳輸,傳輸完成后實現CRC校驗功能。
③斷點續(xù)傳。智慧開關內部APP文件傳輸完成后,下位機會重新組幀進行APP文件升級,偶爾會出現異常幀的情況,導致升級失敗。為了防止該類情況發(fā)生,斷點續(xù)傳在文件傳輸完畢后,首先分析是否存在異常幀,若存在則上位機重新傳輸異常幀對應的數據塊。
④傳輸控制。傳輸過程中,控制傳輸的暫停和取消。
(3)數據顯示。能夠顯示傳輸進度,上位機發(fā)送報文信息和上位機接收的報文信息。
C#編程語言以安全、高效的優(yōu)點作為應用程序的首選。智慧開關內部APP升級的上位機軟件是基于C#編程語言,在Windows系統(tǒng)上開發(fā)完成,應用了Visual Studio .NET中集成的實用類庫,提高了編程效率[11]。上位機軟件操作流程如圖3所示。
圖3 上位機軟件操作流程
3.2.1 多線程
線程是程序執(zhí)行流的最小單元,在開發(fā)的應用軟件中,大多數線程的數量都不止一個,多個線程可以并發(fā)的執(zhí)行,共享進程的全局變量和堆的數據[12]。上位機軟件需要不間斷的監(jiān)聽下位機發(fā)送過來的數據[13],因此,通過應用Thread類開啟一個新的線程,并將IsBackground屬性設置為true[14],使其成為后臺線程以保證不間斷監(jiān)聽下位機消息。
Thread thtwo=new Thread();//開啟新的線程
thtwo.IsBackground=true;//設置成后臺模式
thtwo.Start();//線程啟動
3.2.2 斷點續(xù)傳
為提高智慧開關內部APP文件升級效率,APP文件傳輸完成后,通過斷點分析功能使上位機軟件主動和下位機進行交互,下位機將異常幀數據塊序號發(fā)送到上位機軟件,上位機軟件針對異常幀數據塊序號重新組幀并將新的幀數據塊發(fā)送至下位機完成APP文件傳輸。
private void button9_Click(object sender,EventArgs e)//斷點分析
{
falseNumFail.Clear();//清空字節(jié)數組
}
private void button11_Click(object sender, EventArgs e)//斷點續(xù)傳準備
private void button10_Click(object sender, EventArgs e)//啟動續(xù)傳
{
SendBreakFile();//繼續(xù)發(fā)送斷點文件
}
private void SendBreakFile()//發(fā)送斷點文件函數
falseNumFail為存放異常幀數據塊序號的字節(jié)數組,清空字節(jié)數組是為了每次斷點分析時異常幀數據塊序號不累加。
3.2.3 CRC校驗
CRC校驗是數據通信領域中應用最廣泛的查錯方法之一。下位機接收APP文件完成后,上位機軟件和下位機進行交互,下位機及時發(fā)送校驗碼至上位機軟件進行文件校驗,以保證每次升級時下位機接收到正確的APP文件。
public static void GetCRC32Table() //生成校驗碼表格函數
public static ulong GetCRC32Value() //獲得校驗值函數
{
GetCRC32Table();//生成校驗碼表格函數
}
軟件測試是檢測軟件功能的最終環(huán)節(jié)之一。將上位機軟件開發(fā)程序安裝到Windows系統(tǒng),用串口和智慧開關設備建立連接,進行APP文件傳輸功能測試,測試結果如圖4所示。由反復測試結果可知,上位機軟件運行情況良好,操作起來比較方便、快捷,主界面設計人性化,各項功能均滿足智慧開關內部APP升級需求。
圖4 上位機軟件測試結果
智慧開關在日常應用過程中,由于需求的改進,需要對內部APP進行維護、更新,需要工程師到現場拆開殼體更新APP比較麻煩。本文基于DL/T 645-2007規(guī)約和C#編程語言研發(fā)設計一款用于智慧開關APP文件升級的上位機軟件,解決了APP升級需要拆殼體的問題。經過多次反復測試,結果表明,該軟件不僅能夠滿足智慧開關內部APP升級需求,而且擁有人性化的主界面,同時運行穩(wěn)定,操作方便、簡單,提高了APP升級效率。