一種APF系統(tǒng)信息的顯示方案
基于拓普微智能顯示模塊
一、引言
科技的進步影響了所有產業(yè)的發(fā)展,其中電力發(fā)展速度是前所未有的,基本所有行業(yè)都需要電力支持。目前用電安全、節(jié)能、環(huán)保、經濟等關鍵詞不斷被重申,這使得APF有源濾波器的應用更加普遍。
與此同時,隨著APF應用廣泛,市場拓展,需要面對的使用場景也更復雜。其中用戶對機器的界面交互體驗尤為重視。迫使我們對APF產品的交互設計有新的要求。目前接觸了拓普微的智能顯示模塊HMT070ETD-1D,是一款高分辨率,高性能組態(tài)設計的串口屏。我們將通過該屏幕優(yōu)化APF系統(tǒng)信息交互,提升用戶體驗。
二、目標
基于HMT070ETD-1D的APF系統(tǒng)的界面開發(fā),我們將優(yōu)化所有參數(shù)的顯示,讓數(shù)據更迅速、直觀且準確的呈現(xiàn)在用戶面前。不同于傳統(tǒng)項目開發(fā),此次設計僅針對界面交互進行優(yōu)化,因此我們需要縮短常規(guī)開發(fā)周期,加快開發(fā)速度,并且有利于后續(xù)升級管理。主要實現(xiàn)以下目標:
1、實時顯示APF各項參數(shù)的數(shù)據
在有源濾波器運行過程中,系統(tǒng)的運行狀態(tài)以及各項參數(shù)信息需要進行實時上報供用戶查閱。屏幕可以根據信息類別、重要程度,優(yōu)先等級等,調整顯示格式。
2、便捷交互,方便控制、切換、修改參數(shù)
用戶可以通過屏幕控制切換顯示APF中不同種類的參數(shù)信息,并且可以對某些參數(shù)進行設置,例如開關切換、長按賦值、滑動切換、滑動賦值、鍵盤輸入修改等操作。
3、部分數(shù)據信息需要有圖形化顯示,
為了給用戶更直觀的顯示效果,屏幕可以支持將數(shù)據以柱狀圖、趨勢曲線圖、餅狀圖、表盤的形式顯示出來。
4、支持遠程數(shù)據查詢,遠程顯示工程更新
APF系統(tǒng)上屏幕顯示的數(shù)據信息,可以支持遠程查詢,或者遠程控制。同時屏幕中顯示工程也可以通過遠程進行更新升級。
三、功能需求分析
此次設計將通過智能顯示模塊HMT070ETD-1D和官方提供的上位機軟件SGTools。開發(fā)設計APF系統(tǒng)信息的顯示部分。將所有界面信息顯示,交互操作都集中在屏幕中實現(xiàn)。為了實現(xiàn)以上目標功能,APF系統(tǒng)信息顯示部分有如下功能需求:
1、變量數(shù)據刷新與數(shù)據格式化顯示
通過上位機開發(fā)工具SGTools,可以預先定義APF中各項參數(shù)的數(shù)字變量地址,添加數(shù)字控件到頁面中進行顯示。數(shù)字控件通過關聯(lián)數(shù)字變量后,底層通過協(xié)議指令,將數(shù)據發(fā)送到屏幕顯示。同時數(shù)字控件支持設置顯示的字體類型,顯示字體的大小,顯示字體的顏色,格式化顯示如小數(shù)點、浮點數(shù)等進行顯示。示意圖如下:

圖3-1 變量數(shù)據刷新與數(shù)據格式化顯示示意圖
?
2、屏幕便捷控制與控制數(shù)據下發(fā)
智能顯示模塊HMT070ETD-1D自帶電容觸摸屏,在開發(fā)工具SGTools中,有不同功能的觸摸鍵控件,通過添加這些控件可以在屏幕中實現(xiàn)相應的功能,例如切換頁面、開關切換、長按賦值、滑動切換、滑動賦值、鍵盤輸入等。觸摸鍵進行的變量賦值,數(shù)據操作,彈出鍵盤(菜單)的數(shù)據輸入會實時下發(fā)到串口中,供APF底層MCU判斷執(zhí)行對應任務。示意圖如下:

圖3-2 屏幕便捷控制與控制數(shù)據下發(fā)示意圖
?
3、屏幕對數(shù)據的圖形化顯示
SGTools開發(fā)工具中,有進度條,曲線,表盤這三個我比較常用的控件。三類控件都可以在屬性欄中進行顯示模式的配置,進度條支持顏色模式,圖標模式,圖標填充模式;曲線控件支持顯示點、線、頂部、底部、區(qū)域填充模式;表盤控件支持環(huán)形變色、混色、變盤指針、表盤旋轉等模式。以上控件可以更直觀的體現(xiàn)APF中的相關數(shù)據。實現(xiàn)方式與變量數(shù)據刷新一致。

圖3-3 屏幕對數(shù)據的圖形化顯示
?
4、遠程屏幕的數(shù)據控制與訪問,工程更新升級
智能顯示模塊HMT070ETD-1D支持網絡TCP/IP通信,在開發(fā)工具中可以定義屏幕的IP地址信息,TCP端口,TFTP端口號等信息。下載到屏幕中后IP信息會自動生效,然后可以在局域網內連接相應的IP進行APF遠程協(xié)議的數(shù)據交互。并且可以通過IP信息對遠程屏幕進行TFTP文件上載,從而實現(xiàn)遠程APF系統(tǒng)界面升級。

圖3-4 遠程屏幕的數(shù)據控制與訪問以及工程更新升級
?
四、設計實現(xiàn)
1、變量數(shù)據刷新與數(shù)據格式化顯示
APF的系統(tǒng)參數(shù)信息在我們底層有相應的寄存器的進行存儲,因此刷新到屏幕中的數(shù)據可以直接通過底層調用獲取。定義數(shù)據指針“Buf”。
構建底層數(shù)據刷新函數(shù)“topway_value()”;
說明:函數(shù)可以根據傳入的APF變量地址(Address)、參數(shù)類型(Type)、數(shù)據長度(Length)、寄存器數(shù)據指針(Buf),將信息實時通過串口刷新至屏幕對應位置進行顯示。
|
/******************************************************************************* * Function Name ?: topway_value * Description ???: 刷新變量數(shù)據 * Input ??????????: Address 變量地址?Type?變量類型?Length?數(shù)據長度?Buf?數(shù)據指針 * Output ??????? ?: None? * Return ?????? ??: None *******************************************************************************/ void topway_value(uint16_t Address,uint8_t Type,uint8_t Length,uint16_t *Buf) {? uint16_t len; if(Type == TOPWAY_VALUE_ADRESS)//16位數(shù)據地址 { ??topway_buf[0] = TOPWAY_DATA_START;// AA頭數(shù)據幀 ??topway_buf[1] = TOPWAY_VALUE_FNCCODE;// 82 功能碼 ??topway_buf[2] = TOPWAY_PARAMETER_ID1;// 00 地址ID高8位 ??topway_buf[3] = TOPWAY_PARAMETER_ID0;// 08 地址ID低8位 ??topway_buf[4] = (Address & 0xff00) >> 8;//地址高8位 ??topway_buf[5] = Address & 0xff; ????????//地址低8位 ??topway_buf[6] = Length;//數(shù)據長度 ? for(len=0;len ? { ?topway_buf[len + 7] = (*Buf & 0xff00) >> 8;//數(shù)據高8位 ?topway_buf[len + 8] = (*Buf & 0xff);//數(shù)據低8位 ????? ??? Buf++; ??? ? } ??topway_buf[7+Length*2] = TOPWAY_DATA_END_1;//尾數(shù)據幀1:0xCC ??topway_buf[8+Length*2] = TOPWAY_DATA_END_2;//尾數(shù)據幀2:0x33 ??topway_buf[9+Length*2] = TOPWAY_DATA_END_3;//尾數(shù)據幀3:0xC3 ??topway_buf[10+Length*2] = TOPWAY_DATA_END_4;//尾數(shù)據幀4:0x3C ??BufPut(&topway,topway_buf,11+Length*2); ?? ?}? ????else if(Type == TOPWAY_VALUE_POINT)//圖標地址 { ? for(len=0;len ? { uint16_t Write_value = *Buf + len; topway_buf[0] = TOPWAY_DATA_START;// AA頭數(shù)據幀 ?????topway_buf[1] = TOPWAY_VALUE_FNCCODE_1;// 3D 功能碼 ?????topway_buf[2] = TOPWAY_PARAMETER_ID1;// 00 地址ID高8位 ?????topway_buf[3] = TOPWAY_PARAMETER_ID0;// 08 地址ID低8位 ?????topway_buf[4] = (Address & 0xff00) >> 8;//地址高8位 ?????topway_buf[5] = Address & 0xff; ????????//地址低8位 topway_buf[6] = (Write_value & 0xff00) >> 8;//數(shù)據高8位 ?????topway_buf[7] = (Write_value & 0xff);//數(shù)據低8位 topway_buf[8] = TOPWAY_DATA_END_1;//尾數(shù)據幀1:0xCC ?????topway_buf[9] = TOPWAY_DATA_END_2;//尾數(shù)據幀2:0x33 ?????topway_buf[10] = TOPWAY_DATA_END_3;//尾數(shù)據幀3:0xC3 ?????topway_buf[11] = TOPWAY_DATA_END_4;//尾數(shù)據幀4:0x3C ?Address+=0x2;//取下一個地址 ?BufPut(&topway,topway_buf,12); } } else if(Type == TOPWAY_VALUE_32BIT)?//32位數(shù)據地址 {??topway_buf[0] = TOPWAY_DATA_START;// AA頭數(shù)據幀 ??topway_buf[1] = TOPWAY_VALUE_FNCCODE;// 82 功能碼 ??topway_buf[2] = TOPWAY_PARAMETER_ID1;// 00 地址ID高8位 ??topway_buf[3] = TOPWAY_PARAMETER_ID0;// 08 地址ID低8位 ??topway_buf[4] = (Address & 0xff00) >> 8;//地址高8位 ??topway_buf[5] = Address & 0xff; ????????//地址低8位 ??topway_buf[6] = Length/2;//數(shù)據長度 ? for(len=0;len { ?topway_buf[len+7] = (*Buf & 0xff);//數(shù)據低8位 ????? ??? Buf++; ??? ?? } ??topway_buf[7+Length] = TOPWAY_DATA_END_1;//?尾數(shù)據幀1:0xCC ??topway_buf[8+Length] = TOPWAY_DATA_END_2;// 尾數(shù)據幀2:0x33 ??topway_buf[9+Length] = TOPWAY_DATA_END_3;// 尾數(shù)據幀3:0xC3 ??topway_buf[10+Length] = TOPWAY_DATA_END_4;//尾數(shù)據幀4:0x3C ??BufPut(&topway,topway_buf,11+Length);? } } |
測試屏幕數(shù)據刷新如下顯示,其中有對部分參數(shù)進行格式化顯示,控制字符間距。

2、屏幕便捷控制與控制數(shù)據下發(fā)
APF系統(tǒng)的屏幕通過觸摸鍵進行的VP控制操作,按鍵信息返回操作都會下發(fā)數(shù)據到串口,因此我們需要對屏幕發(fā)出的串口數(shù)據進行甄別,獲取目標數(shù)據實現(xiàn)APF的控制。
構建串口的協(xié)議解析函數(shù)“queue_find_cmd()”
說明:函數(shù)用于監(jiān)視串口的數(shù)據接收,并將接收的信息篩選獲取符合協(xié)議的指令,返回有效指令數(shù)組(buffer),供控制程序進行判斷處理,執(zhí)行相應功能。?
|
/****************************************************************************** * 函數(shù)名稱: ?queue_find_cmd * 函數(shù)功能: ?獲取串口接收隊列中一個完整的幀 * 輸入參數(shù): ?緩存地址和大小 * 輸出參數(shù): ?無 * 返 回 值: ?無 *******************************************************************************/ INT16U queue_find_cmd(INT8U *buffer,INT16U buf_len) { ????INT16U cmd_size = 0; ????INT8U _data = 0; ????while(queue_size()>0)??//判斷隊列是否為空 ????{ ????????queue_pop(&_data);??//非空則提取數(shù)據 ????????if(cmd_index==0&&_data!=CMD_HEAD)??//幀頭出錯,跳過 ????????{ ????????????continue; ????????} ????????if(cmd_index ????????{ ????????????buffer[cmd_index++] = _data; ????????}? ????????if(_data==CMD_TAIL_CC)?//判斷是否為0xCC ????????{ ????????????//如果檢查0xCC成功,則下一步檢查0x33 ??//否則重新檢查? ????????????if(cmd_state==CMD_CHECK_TAIL_CC) ????????????{ ????????????????cmd_state=CMD_CHECK_TAIL_33; ????????????} ????????????else?{?cmd_state=CMD_CHECK_TAIL_CC;?} ????????} ????????else if(_data==CMD_TAIL_33) ????????{ ????????????//如果檢查0x33成功,則下一步檢查0xc3 ?//否則重新檢查 ????????????if(cmd_state==CMD_CHECK_TAIL_33) ????????????{ ????????????????cmd_state=CMD_CHECK_TAIL_C3; ????????????} ??????????? else?{?cmd_state=CMD_CHECK_TAIL_CC;} ????????} ????????else if(_data==CMD_TAIL_C3) ????????{ ????????????//如果檢查0xC3成功,則下一步檢查0x3C ?//否則重新檢查 ????????????if(cmd_state==CMD_CHECK_TAIL_C3) ????????????{ ????????????????cmd_state=CMD_CHECK_TAIL_3C; ????????????} ????????????else?{?cmd_state=CMD_CHECK_TAIL_CC;} ????????} ????????else if(_data==CMD_TAIL_3C) ????????{ ????????????//如果檢查0x3C成功,則幀尾正確,否則重新檢查 ????????????if(cmd_state==CMD_CHECK_TAIL_3C) ????????????{ ????????????????cmd_state=CMD_CHECK_TAIL_OK; ????????????} ????????????else?{?cmd_state=CMD_CHECK_TAIL_CC;} ????????} ????????else ????????{ ????????????cmd_state = CMD_CHECK_TAIL_CC; ????????} ????????//得到正確的一幀指令 ????????if(cmd_state==CMD_CHECK_TAIL_OK) ????????{??//重置標志位,返回數(shù)據長度 ????????????cmd_size = cmd_index; ????????????cmd_state = CMD_CHECK_TAIL_CC; ????????????cmd_index = 0; ????????????que._head = 0; ????????????que._tail = 0; ????????????return cmd_size; ????????} ????} ????return 0; } |
?
3、屏幕對數(shù)據的圖形化顯示
屏幕對數(shù)據的圖形化顯示與數(shù)據顯示實現(xiàn)的方式一致,主要通過底層實時刷新數(shù)據,屏幕接收變量數(shù)據后將會依據控件的屬性設置顯示對應效果的圖形。
底層的數(shù)據刷新類似第1點。這里不作設計解析。圖形化顯示效果如圖:

圖4-2 曲線顯示

圖4-3 功率狀態(tài)顯示
?
4、遠程屏幕的數(shù)據控制與訪問,工程更新升級
屏幕的網絡IP、TCP端口、TFTP端口、網關設置如圖:
?
圖4-4 網絡設置
①屏幕支持RJ45網口,可以通過該接口實現(xiàn)TCP/IP協(xié)議通信,網絡的通信設計類似第1點的串口設計。以下不作詳細解析,根據屏幕的IP信息,網絡端口做以下設置。測試如圖:

圖4-5 TCP/IP協(xié)議通信測試
②遠程文件更新測試,首先遠程通過TCP/IP協(xié)議發(fā)送屏幕復位指令,讓屏幕進入遠程更新模式。然后通過命令行“cmd”執(zhí)行tftp應用的相關上載命令,進行顯示工程升級,我的測試結果如圖4-6。期間工程文件傳輸都成功完成,在網絡連接正常的情況下沒有出現(xiàn)錯誤。

圖4-6 遠程TFTP文件傳輸測試1
另外也可以通過拓普微官方提供的“遠程升級工具”進行TFTP文件上載。測試如圖:

圖4-7 遠程TFTP文件傳輸測試2
?
五、總結
智能顯示模塊HMT070ETD-1D顯示方案綜合測試下來比較順利,期間進行的測試都能通過。圖像數(shù)據顯示流暢,按鍵反饋迅速,功能測試正常。在官方提供的上位機軟件SGTools中,可以很方便的設計出數(shù)據相關的UI顯示效果。上位機軟件也很直觀,資源欄、屬性欄、控件區(qū)、工具欄、輸出欄視圖排布接近主流軟件使用習慣,個人比較容易上手。
此次基于拓普微平臺的智能模塊開發(fā)還算比較成功,滿足了我們開發(fā)的設計需求。并且官方提供的技術支持也非常及時,加速了我們整個項目組的開發(fā)進程。
審核編輯:湯梓紅
電子發(fā)燒友App




















































評論