一種APF系統(tǒng)信息的顯示方案
基于拓普微智能顯示模塊
一、引言
科技的進(jìn)步影響了所有產(chǎn)業(yè)的發(fā)展,其中電力發(fā)展速度是前所未有的,基本所有行業(yè)都需要電力支持。目前用電安全、節(jié)能、環(huán)保、經(jīng)濟(jì)等關(guān)鍵詞不斷被重申,這使得APF有源濾波器的應(yīng)用更加普遍。
與此同時(shí),隨著APF應(yīng)用廣泛,市場(chǎng)拓展,需要面對(duì)的使用場(chǎng)景也更復(fù)雜。其中用戶對(duì)機(jī)器的界面交互體驗(yàn)尤為重視。迫使我們對(duì)APF產(chǎn)品的交互設(shè)計(jì)有新的要求。目前接觸了拓普微的智能顯示模塊HMT070ETD-1D,是一款高分辨率,高性能組態(tài)設(shè)計(jì)的串口屏。我們將通過(guò)該屏幕優(yōu)化APF系統(tǒng)信息交互,提升用戶體驗(yàn)。
二、目標(biāo)
基于HMT070ETD-1D的APF系統(tǒng)的界面開(kāi)發(fā),我們將優(yōu)化所有參數(shù)的顯示,讓數(shù)據(jù)更迅速、直觀且準(zhǔn)確的呈現(xiàn)在用戶面前。不同于傳統(tǒng)項(xiàng)目開(kāi)發(fā),此次設(shè)計(jì)僅針對(duì)界面交互進(jìn)行優(yōu)化,因此我們需要縮短常規(guī)開(kāi)發(fā)周期,加快開(kāi)發(fā)速度,并且有利于后續(xù)升級(jí)管理。主要實(shí)現(xiàn)以下目標(biāo):
1、實(shí)時(shí)顯示APF各項(xiàng)參數(shù)的數(shù)據(jù)
在有源濾波器運(yùn)行過(guò)程中,系統(tǒng)的運(yùn)行狀態(tài)以及各項(xiàng)參數(shù)信息需要進(jìn)行實(shí)時(shí)上報(bào)供用戶查閱。屏幕可以根據(jù)信息類別、重要程度,優(yōu)先等級(jí)等,調(diào)整顯示格式。
2、便捷交互,方便控制、切換、修改參數(shù)
用戶可以通過(guò)屏幕控制切換顯示APF中不同種類的參數(shù)信息,并且可以對(duì)某些參數(shù)進(jìn)行設(shè)置,例如開(kāi)關(guān)切換、長(zhǎng)按賦值、滑動(dòng)切換、滑動(dòng)賦值、鍵盤輸入修改等操作。
3、部分?jǐn)?shù)據(jù)信息需要有圖形化顯示,
為了給用戶更直觀的顯示效果,屏幕可以支持將數(shù)據(jù)以柱狀圖、趨勢(shì)曲線圖、餅狀圖、表盤的形式顯示出來(lái)。
4、支持遠(yuǎn)程數(shù)據(jù)查詢,遠(yuǎn)程顯示工程更新
APF系統(tǒng)上屏幕顯示的數(shù)據(jù)信息,可以支持遠(yuǎn)程查詢,或者遠(yuǎn)程控制。同時(shí)屏幕中顯示工程也可以通過(guò)遠(yuǎn)程進(jìn)行更新升級(jí)。
三、功能需求分析
此次設(shè)計(jì)將通過(guò)智能顯示模塊HMT070ETD-1D和官方提供的上位機(jī)軟件SGTools。開(kāi)發(fā)設(shè)計(jì)APF系統(tǒng)信息的顯示部分。將所有界面信息顯示,交互操作都集中在屏幕中實(shí)現(xiàn)。為了實(shí)現(xiàn)以上目標(biāo)功能,APF系統(tǒng)信息顯示部分有如下功能需求:
1、變量數(shù)據(jù)刷新與數(shù)據(jù)格式化顯示
通過(guò)上位機(jī)開(kāi)發(fā)工具SGTools,可以預(yù)先定義APF中各項(xiàng)參數(shù)的數(shù)字變量地址,添加數(shù)字控件到頁(yè)面中進(jìn)行顯示。數(shù)字控件通過(guò)關(guān)聯(lián)數(shù)字變量后,底層通過(guò)協(xié)議指令,將數(shù)據(jù)發(fā)送到屏幕顯示。同時(shí)數(shù)字控件支持設(shè)置顯示的字體類型,顯示字體的大小,顯示字體的顏色,格式化顯示如小數(shù)點(diǎn)、浮點(diǎn)數(shù)等進(jìn)行顯示。示意圖如下:
圖3-1 變量數(shù)據(jù)刷新與數(shù)據(jù)格式化顯示示意圖
2、屏幕便捷控制與控制數(shù)據(jù)下發(fā)
智能顯示模塊HMT070ETD-1D自帶電容觸摸屏,在開(kāi)發(fā)工具SGTools中,有不同功能的觸摸鍵控件,通過(guò)添加這些控件可以在屏幕中實(shí)現(xiàn)相應(yīng)的功能,例如切換頁(yè)面、開(kāi)關(guān)切換、長(zhǎng)按賦值、滑動(dòng)切換、滑動(dòng)賦值、鍵盤輸入等。觸摸鍵進(jìn)行的變量賦值,數(shù)據(jù)操作,彈出鍵盤(菜單)的數(shù)據(jù)輸入會(huì)實(shí)時(shí)下發(fā)到串口中,供APF底層MCU判斷執(zhí)行對(duì)應(yīng)任務(wù)。示意圖如下:
圖3-2 屏幕便捷控制與控制數(shù)據(jù)下發(fā)示意圖
3、屏幕對(duì)數(shù)據(jù)的圖形化顯示
SGTools開(kāi)發(fā)工具中,有進(jìn)度條,曲線,表盤這三個(gè)我比較常用的控件。三類控件都可以在屬性欄中進(jìn)行顯示模式的配置,進(jìn)度條支持顏色模式,圖標(biāo)模式,圖標(biāo)填充模式;曲線控件支持顯示點(diǎn)、線、頂部、底部、區(qū)域填充模式;表盤控件支持環(huán)形變色、混色、變盤指針、表盤旋轉(zhuǎn)等模式。以上控件可以更直觀的體現(xiàn)APF中的相關(guān)數(shù)據(jù)。實(shí)現(xiàn)方式與變量數(shù)據(jù)刷新一致。
圖3-3 屏幕對(duì)數(shù)據(jù)的圖形化顯示
4、遠(yuǎn)程屏幕的數(shù)據(jù)控制與訪問(wèn),工程更新升級(jí)
智能顯示模塊HMT070ETD-1D支持網(wǎng)絡(luò)TCP/IP通信,在開(kāi)發(fā)工具中可以定義屏幕的IP地址信息,TCP端口,TFTP端口號(hào)等信息。下載到屏幕中后IP信息會(huì)自動(dòng)生效,然后可以在局域網(wǎng)內(nèi)連接相應(yīng)的IP進(jìn)行APF遠(yuǎn)程協(xié)議的數(shù)據(jù)交互。并且可以通過(guò)IP信息對(duì)遠(yuǎn)程屏幕進(jìn)行TFTP文件上載,從而實(shí)現(xiàn)遠(yuǎn)程APF系統(tǒng)界面升級(jí)。
圖3-4 遠(yuǎn)程屏幕的數(shù)據(jù)控制與訪問(wèn)以及工程更新升級(jí)
四、設(shè)計(jì)實(shí)現(xiàn)
1、變量數(shù)據(jù)刷新與數(shù)據(jù)格式化顯示
APF的系統(tǒng)參數(shù)信息在我們底層有相應(yīng)的寄存器的進(jìn)行存儲(chǔ),因此刷新到屏幕中的數(shù)據(jù)可以直接通過(guò)底層調(diào)用獲取。定義數(shù)據(jù)指針“Buf”。
構(gòu)建底層數(shù)據(jù)刷新函數(shù)“topway_value()”;
說(shuō)明:函數(shù)可以根據(jù)傳入的APF變量地址(Address)、參數(shù)類型(Type)、數(shù)據(jù)長(zhǎng)度(Length)、寄存器數(shù)據(jù)指針(Buf),將信息實(shí)時(shí)通過(guò)串口刷新至屏幕對(duì)應(yīng)位置進(jìn)行顯示。
/******************************************************************************* * Function Name : topway_value * Description : 刷新變量數(shù)據(jù) * Input : Address 變量地址Type變量類型Length數(shù)據(jù)長(zhǎng)度Buf數(shù)據(jù)指針 * 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ù)據(jù)地址 { topway_buf[0] = TOPWAY_DATA_START;// AA頭數(shù)據(jù)幀 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ù)據(jù)長(zhǎng)度 for(len=0;len { topway_buf[len + 7] = (*Buf & 0xff00) >> 8;//數(shù)據(jù)高8位 topway_buf[len + 8] = (*Buf & 0xff);//數(shù)據(jù)低8位 Buf++; } topway_buf[7+Length*2] = TOPWAY_DATA_END_1;//尾數(shù)據(jù)幀1:0xCC topway_buf[8+Length*2] = TOPWAY_DATA_END_2;//尾數(shù)據(jù)幀2:0x33 topway_buf[9+Length*2] = TOPWAY_DATA_END_3;//尾數(shù)據(jù)幀3:0xC3 topway_buf[10+Length*2] = TOPWAY_DATA_END_4;//尾數(shù)據(jù)幀4:0x3C BufPut(&topway,topway_buf,11+Length*2); } else if(Type == TOPWAY_VALUE_POINT)//圖標(biāo)地址 { for(len=0;len { uint16_t Write_value = *Buf + len; topway_buf[0] = TOPWAY_DATA_START;// AA頭數(shù)據(jù)幀 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ù)據(jù)高8位 topway_buf[7] = (Write_value & 0xff);//數(shù)據(jù)低8位 topway_buf[8] = TOPWAY_DATA_END_1;//尾數(shù)據(jù)幀1:0xCC topway_buf[9] = TOPWAY_DATA_END_2;//尾數(shù)據(jù)幀2:0x33 topway_buf[10] = TOPWAY_DATA_END_3;//尾數(shù)據(jù)幀3:0xC3 topway_buf[11] = TOPWAY_DATA_END_4;//尾數(shù)據(jù)幀4:0x3C Address+=0x2;//取下一個(gè)地址 BufPut(&topway,topway_buf,12); } } else if(Type == TOPWAY_VALUE_32BIT)//32位數(shù)據(jù)地址 {topway_buf[0] = TOPWAY_DATA_START;// AA頭數(shù)據(jù)幀 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ù)據(jù)長(zhǎng)度 for(len=0;len { topway_buf[len+7] = (*Buf & 0xff);//數(shù)據(jù)低8位 Buf++; } topway_buf[7+Length] = TOPWAY_DATA_END_1;//尾數(shù)據(jù)幀1:0xCC topway_buf[8+Length] = TOPWAY_DATA_END_2;// 尾數(shù)據(jù)幀2:0x33 topway_buf[9+Length] = TOPWAY_DATA_END_3;// 尾數(shù)據(jù)幀3:0xC3 topway_buf[10+Length] = TOPWAY_DATA_END_4;//尾數(shù)據(jù)幀4:0x3C BufPut(&topway,topway_buf,11+Length); } } |
測(cè)試屏幕數(shù)據(jù)刷新如下顯示,其中有對(duì)部分參數(shù)進(jìn)行格式化顯示,控制字符間距。
2、屏幕便捷控制與控制數(shù)據(jù)下發(fā)
APF系統(tǒng)的屏幕通過(guò)觸摸鍵進(jìn)行的VP控制操作,按鍵信息返回操作都會(huì)下發(fā)數(shù)據(jù)到串口,因此我們需要對(duì)屏幕發(fā)出的串口數(shù)據(jù)進(jìn)行甄別,獲取目標(biāo)數(shù)據(jù)實(shí)現(xiàn)APF的控制。
構(gòu)建串口的協(xié)議解析函數(shù)“queue_find_cmd()”
說(shuō)明:函數(shù)用于監(jiān)視串口的數(shù)據(jù)接收,并將接收的信息篩選獲取符合協(xié)議的指令,返回有效指令數(shù)組(buffer),供控制程序進(jìn)行判斷處理,執(zhí)行相應(yīng)功能。
/****************************************************************************** * 函數(shù)名稱: queue_find_cmd * 函數(shù)功能: 獲取串口接收隊(duì)列中一個(gè)完整的幀 * 輸入?yún)?shù): 緩存地址和大小 * 輸出參數(shù): 無(wú) * 返 回 值: 無(wú) *******************************************************************************/ INT16U queue_find_cmd(INT8U *buffer,INT16U buf_len) { INT16U cmd_size = 0; INT8U _data = 0; while(queue_size()>0)//判斷隊(duì)列是否為空 { queue_pop(&_data);//非空則提取數(shù)據(jù) if(cmd_index==0&&_data!=CMD_HEAD)//幀頭出錯(cuò),跳過(guò) { 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) {//重置標(biāo)志位,返回?cái)?shù)據(jù)長(zhǎng)度 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、屏幕對(duì)數(shù)據(jù)的圖形化顯示
屏幕對(duì)數(shù)據(jù)的圖形化顯示與數(shù)據(jù)顯示實(shí)現(xiàn)的方式一致,主要通過(guò)底層實(shí)時(shí)刷新數(shù)據(jù),屏幕接收變量數(shù)據(jù)后將會(huì)依據(jù)控件的屬性設(shè)置顯示對(duì)應(yīng)效果的圖形。
底層的數(shù)據(jù)刷新類似第1點(diǎn)。這里不作設(shè)計(jì)解析。圖形化顯示效果如圖:
圖4-2 曲線顯示
圖4-3 功率狀態(tài)顯示
4、遠(yuǎn)程屏幕的數(shù)據(jù)控制與訪問(wèn),工程更新升級(jí)
屏幕的網(wǎng)絡(luò)IP、TCP端口、TFTP端口、網(wǎng)關(guān)設(shè)置如圖:
圖4-4 網(wǎng)絡(luò)設(shè)置
①屏幕支持RJ45網(wǎng)口,可以通過(guò)該接口實(shí)現(xiàn)TCP/IP協(xié)議通信,網(wǎng)絡(luò)的通信設(shè)計(jì)類似第1點(diǎn)的串口設(shè)計(jì)。以下不作詳細(xì)解析,根據(jù)屏幕的IP信息,網(wǎng)絡(luò)端口做以下設(shè)置。測(cè)試如圖:
圖4-5 TCP/IP協(xié)議通信測(cè)試
②遠(yuǎn)程文件更新測(cè)試,首先遠(yuǎn)程通過(guò)TCP/IP協(xié)議發(fā)送屏幕復(fù)位指令,讓屏幕進(jìn)入遠(yuǎn)程更新模式。然后通過(guò)命令行“cmd”執(zhí)行tftp應(yīng)用的相關(guān)上載命令,進(jìn)行顯示工程升級(jí),我的測(cè)試結(jié)果如圖4-6。期間工程文件傳輸都成功完成,在網(wǎng)絡(luò)連接正常的情況下沒(méi)有出現(xiàn)錯(cuò)誤。
圖4-6 遠(yuǎn)程TFTP文件傳輸測(cè)試1
另外也可以通過(guò)拓普微官方提供的“遠(yuǎn)程升級(jí)工具”進(jìn)行TFTP文件上載。測(cè)試如圖:
圖4-7 遠(yuǎn)程TFTP文件傳輸測(cè)試2
五、總結(jié)
智能顯示模塊HMT070ETD-1D顯示方案綜合測(cè)試下來(lái)比較順利,期間進(jìn)行的測(cè)試都能通過(guò)。圖像數(shù)據(jù)顯示流暢,按鍵反饋迅速,功能測(cè)試正常。在官方提供的上位機(jī)軟件SGTools中,可以很方便的設(shè)計(jì)出數(shù)據(jù)相關(guān)的UI顯示效果。上位機(jī)軟件也很直觀,資源欄、屬性欄、控件區(qū)、工具欄、輸出欄視圖排布接近主流軟件使用習(xí)慣,個(gè)人比較容易上手。
此次基于拓普微平臺(tái)的智能模塊開(kāi)發(fā)還算比較成功,滿足了我們開(kāi)發(fā)的設(shè)計(jì)需求。并且官方提供的技術(shù)支持也非常及時(shí),加速了我們整個(gè)項(xiàng)目組的開(kāi)發(fā)進(jìn)程。
-
lcd
+關(guān)注
關(guān)注
34文章
4388瀏覽量
166751 -
HMI
+關(guān)注
關(guān)注
9文章
578瀏覽量
48384 -
串口屏
+關(guān)注
關(guān)注
8文章
522瀏覽量
37189 -
智能模塊
+關(guān)注
關(guān)注
0文章
30瀏覽量
6103
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論