周 彬,程進(jìn)軍,馬宏鋒
(1.蘭州工業(yè)學(xué)院 電子信息工程學(xué)院,甘肅 蘭州 730050;2.蘭州海默科技股份公司,甘肅 蘭州 730030)
倉(cāng)儲(chǔ)物流機(jī)器人[1-3]作為智慧物流的重要組成部分,順應(yīng)了新時(shí)代的發(fā)展需求,有效解決了傳統(tǒng)物流行業(yè)高度依賴(lài)人工、效率低下及業(yè)務(wù)高峰期分揀能力有限等瓶頸問(wèn)題。但是倉(cāng)儲(chǔ)物流機(jī)器人攜帶電池的容量有限,需要經(jīng)常進(jìn)行充電,而且機(jī)器人工作環(huán)境復(fù)雜且未知,傳統(tǒng)的鋰電池充電裝置多采用有線充電方式,每次充電需要插拔充電器接頭,易造成接觸不良、漏電等問(wèn)題,且使用不便、不安全。而無(wú)線充電基于電磁感應(yīng)現(xiàn)象、無(wú)需插拔充電插頭的特點(diǎn)更便于機(jī)器人進(jìn)行自主充電。
emWin[4]的開(kāi)源化大大降低了開(kāi)發(fā)嵌入式人機(jī)界面的開(kāi)發(fā)成本,同時(shí)提高了開(kāi)發(fā)設(shè)計(jì)觸摸屏軟件的效率。該設(shè)計(jì)借助emWin的優(yōu)勢(shì),通過(guò)STM32F767處理器直接對(duì)觸摸屏進(jìn)行編程設(shè)計(jì),實(shí)現(xiàn)倉(cāng)儲(chǔ)物流機(jī)器人無(wú)線充電的管理系統(tǒng),對(duì)機(jī)器人的充電過(guò)程、充電費(fèi)用和提醒機(jī)器人及時(shí)充電進(jìn)行調(diào)度管理。
倉(cāng)儲(chǔ)物流機(jī)器人無(wú)線充電管理系統(tǒng)硬件結(jié)構(gòu)如圖1所示。該系統(tǒng)采用STM32F767[5-6]作為中央處理單元,是基于高性能的ARM Cortex-M7 的32位內(nèi)核嵌入式ARM處理器,工作頻率高達(dá)216 MHz,處理器自帶320 KB SRAM和1 024 KB FLASH存儲(chǔ)器,這些足夠運(yùn)行emWin系統(tǒng);另外,STM32F767集成了諸如先進(jìn)定時(shí)器、GPIO口、DMA、SPI、I2C、CAN、LCD驅(qū)動(dòng)接口和12位的AD/DA等資源;加之,官方為STM32F767提供了豐富的固件庫(kù)和開(kāi)發(fā)資源,使得編程極其方便靈活,這一切都有利于倉(cāng)儲(chǔ)物流機(jī)器人無(wú)線充電管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。圖1中,系統(tǒng)硬件主要模塊有LCD顯示屏、電能計(jì)量表(電能表)、供電電源及其他器件等。
圖1 系統(tǒng)硬件結(jié)構(gòu)Fig.1 The system hardware structure diagram
各硬件模塊情況如下:
(1) LCD顯示屏
LCD顯示屏采用10寸大屏幕彩色觸摸顯示屏,顯示分辨率為1 280*800,支持1 600 W真彩顯示,色彩逼真,效果細(xì)膩。工作溫度范圍為-20~70 ℃,為emWin人機(jī)顯示提供了良好的硬件基礎(chǔ)。
(2)電能表
電能表選用在充電樁方面得到大量應(yīng)用的Piolt單相多功能電能表,此表能夠測(cè)量單相電壓、電流、有功功率、功率因數(shù)、頻率和有功電度等,并有1路RS485通信接口與各種系統(tǒng)的RS485進(jìn)行通信。
(3)供電電源
系統(tǒng)供電電源采用明緯超薄開(kāi)關(guān)電源MW-02-12,此電源輸入電壓范圍寬,能夠適應(yīng)不同的交流電壓輸入,廣泛應(yīng)用于各種工業(yè)領(lǐng)域,其輸入電壓為90~260 V的交流電,輸出12 V的直流電,為系統(tǒng)提供穩(wěn)定地電力供應(yīng)。
(4)其他器件選擇
此系統(tǒng)的交流接觸器、存儲(chǔ)器等器件均采用工業(yè)級(jí)器件,以保障系統(tǒng)在工業(yè)環(huán)境下能夠穩(wěn)定的應(yīng)用。
emWin是GUI的高級(jí)版本,由Segger公司研發(fā)。針對(duì)嵌入式平臺(tái),開(kāi)發(fā)穩(wěn)定、高效的圖形軟件庫(kù),emWin用于提供高效且獨(dú)立于處理器和顯示控制器的圖形用戶界面,用于任何使用圖形顯示進(jìn)行操作的應(yīng)用。它與單任務(wù)和多任務(wù)環(huán)境、專(zhuān)用操作系統(tǒng)或具有任何商業(yè)RTOS兼容,支持使用任何控制器的任何 (單色、灰度或彩色)顯示器 (如果有正確的驅(qū)動(dòng));在較小顯示器上無(wú)顯示控制器也可運(yùn)行;使用配置宏可支持任何接口;可在顯示器上的任何點(diǎn)上寫(xiě)入字符和位圖;利用編譯時(shí)間切換可進(jìn)行不同優(yōu)化;對(duì)于較慢的顯示控制器,可在存儲(chǔ)器中緩存顯示,將存取操作減到最少,從而獲得非常高的速度,結(jié)構(gòu)清晰。emWin[7]的最底層是硬件層,即最基本的板級(jí)支持軟件包(BSP),也稱(chēng)為底層驅(qū)動(dòng),提供了對(duì)硬件平臺(tái)資源最直接的訪問(wèn);emWin 軟件庫(kù)聯(lián)系著底層硬件和用戶應(yīng)用程序,它運(yùn)行在硬件層之上,為應(yīng)用程序提供基于消息機(jī)制的圖形用戶界面編程接口,它的主要組成部分是:字符顯示、2D圖形繪制、窗口管理和控件操作等。
倉(cāng)儲(chǔ)物流機(jī)器人無(wú)線充電管理系統(tǒng)[4]的人機(jī)交互界面主要由充電樁菜單、管理、設(shè)置按鈕和充電信息顯示、電池電量狀態(tài)可視化圖標(biāo)和充電二維碼等組成。制作管理界面編程主要是調(diào)用2D圖形和文字應(yīng)用程序接口函數(shù),采用 C 語(yǔ)言編寫(xiě)出對(duì)應(yīng)的應(yīng)用程序。
系統(tǒng)軟件以u(píng)COSIII[8-9]為操作系統(tǒng),采用多任務(wù)思想,整個(gè)系統(tǒng)劃分為人機(jī)界面交互、觸摸屏響應(yīng)、電能計(jì)量、無(wú)線通信、充電控制和數(shù)據(jù)存儲(chǔ)任務(wù)。軟件采用任務(wù)優(yōu)先級(jí)和時(shí)間片輪巡調(diào)度算法實(shí)現(xiàn)任務(wù)調(diào)度,任務(wù)之間既相對(duì)獨(dú)立又通過(guò)消息隊(duì)列和信號(hào)量相互聯(lián)系。系統(tǒng)軟件結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)軟件結(jié)構(gòu)Fig.2 The system software structure diagram
人機(jī)界面主要完成無(wú)線充電樁的人機(jī)交互功能[10-11]。該人機(jī)界面設(shè)計(jì)了登錄權(quán)限管理、用戶管理、充電信息和參數(shù)設(shè)置等6個(gè)無(wú)線充電樁的人機(jī)交互界面。主界面用emWin的Framewin框架,在框架中添加4個(gè)按鈕控件,分別實(shí)現(xiàn)登錄管理、用戶管理、充電信息和參數(shù)設(shè)置界面的切換功能;添加一個(gè)多頁(yè)顯示控件(Multipage),實(shí)現(xiàn)6個(gè)充電樁的充電信息顯示功能,界面創(chuàng)建代碼如下:
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[]= {
{ FRAMEWIN_CreateIndirect,"Framewin",ID_FRAMEWIN_0,0,0,1280,800,0,0x64,0 },
{ MULTIPAGE_CreateIndirect,"Multipage",ID_MULTIPAGE_0,0,0,1096,733,0,0x0,0 },
{BUTTON_CreateIndirect,"登錄管理",ID_BUTTON_0,1128,250,120,60,0,0x0,0 },
{BUTTON_CreateIndirect,"用戶管理",ID_BUTTON_1,1128,350,120,60,0,0x0,0 },
{BUTTON_CreateIndirect,"充電信息",ID_BUTTON_2,1128,450,120,60,0,0x0,0 },
{BUTTON_CreateIndirect,"參數(shù)設(shè)置",ID_BUTTON_3,1128,550,120,60,0,0x0,0 },
};
人機(jī)界面的其他界面用emWin的Windows框架,如充電信息界面,采用6個(gè)Windows框架,分別嵌入到Multipage上,實(shí)現(xiàn)充電信息顯示、充電操作和充電二維碼生成等功能,其顯示界面如圖3所示。
圖3 充電樁管理系統(tǒng)界面Fig.3 The interface of charging pile management system
觸摸屏任務(wù)主要完成人機(jī)界面的操作任務(wù),實(shí)現(xiàn)充電操作、用戶管理操作、充電參數(shù)設(shè)置、充電信息瀏覽和用戶登錄管理等操作任務(wù)。觸摸屏任務(wù)創(chuàng)建程序如下:
OSTaskCreate((OS_TCB* )&TouchTaskTCB,
(CPU_CHAR* )"Touch task",
(OS_TASK_PTR )touch_task,
(void* )0,
(OS_PRIO )TOUCH_TASK_PRIO,
(CPU_STK* )&TOUCH_TASK_STK[0],
(CPU_STK_SIZE )TOUCH_STK_SIZE/10,
(CPU_STK_SIZE )TOUCH_STK_SIZE,
(OS_MSG_QTY 0,
(OS_TICK )0,
(void* )0,
(OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR,
(OS_ERR* )&err);
電能計(jì)量任務(wù)根據(jù)充電狀態(tài)讀取電能表的計(jì)量數(shù)據(jù),然后根據(jù)設(shè)定的充電參數(shù)統(tǒng)計(jì)充電度數(shù),計(jì)算充電金額,統(tǒng)計(jì)充電時(shí)間等功能。電能計(jì)量任務(wù)流程如圖4所示。
圖4 電能計(jì)量任務(wù)流程Fig.4 The flow chart of Energy metering task
無(wú)線通信任務(wù)實(shí)現(xiàn)無(wú)線充電樁發(fā)射端和接收端的通信功能,充電樁發(fā)射端實(shí)時(shí)接收充電接收端的充電狀態(tài)信息,包括電池電壓狀態(tài)、電池充電電流和充電電池溫度等。當(dāng)充電樁端接收到信息后,根據(jù)電池狀態(tài)情況實(shí)時(shí)調(diào)節(jié)發(fā)射端的充電功率,使電池充電狀態(tài)處于最優(yōu)。
充電控制任務(wù)主要完成機(jī)器人無(wú)線充電的過(guò)程控制[12],當(dāng)用戶確認(rèn)開(kāi)始給機(jī)器人進(jìn)行充電時(shí),系統(tǒng)控制任務(wù)根據(jù)通信任務(wù)提交的電池參數(shù),計(jì)算需要充電電流的大小并設(shè)置充電電流,然后閉合交流接觸器開(kāi)始充電。充電控制任務(wù)流程如圖5所示。
圖5 充電控制任務(wù)流程Fig.5 The flow chart of Charge control task
數(shù)據(jù)存儲(chǔ)任務(wù)主要實(shí)現(xiàn)充電參數(shù)存儲(chǔ),實(shí)時(shí)存儲(chǔ)在充電樁上充電情況,如充電機(jī)器人編號(hào)、充電電量、分時(shí)電量、分時(shí)電價(jià)、充電金額、充電時(shí)間、充電電壓和充電電流信息。方便用戶對(duì)機(jī)器人充電情況的統(tǒng)計(jì)分析,優(yōu)化生產(chǎn)調(diào)配。
數(shù)據(jù)存儲(chǔ)任務(wù)中的參數(shù)保存程序如下:
void SaveParameter(char* Parmeter_TXT)
{
char result;
static FILTXTFile;
OS_ERR err;
u32wcnt;
OSSchedLock(&err);
result = f_open(&TXTFile,"2:/Parameter.txt",F(xiàn)A_CREATE_ALWAYS|FA_WRITE);
if(result == FR_OK)
{
do
{
result =f_write(&TXTFile,(void*)Parmeter_TXT,
strlen(Parmeter_TXT),&wcnt);
if(result) break;
}while(wcnt } f_close(&TXTFile); OSSchedUnlock(&err); } 該設(shè)計(jì)采用emWin進(jìn)行倉(cāng)儲(chǔ)物流機(jī)器人的無(wú)線充電管理系統(tǒng)設(shè)計(jì),能提供友好的充電管理開(kāi)發(fā)人機(jī)交互界面,通過(guò)此界面完成查看和管理任務(wù)。設(shè)計(jì)成果證明,開(kāi)發(fā)設(shè)計(jì)過(guò)程簡(jiǎn)捷高效,界面美觀、工作穩(wěn)定可靠,能對(duì)機(jī)器人進(jìn)行實(shí)時(shí)調(diào)度充電、有效防止了機(jī)器人因無(wú)法及時(shí)充電而停工的情況發(fā)生。推而廣之,emWin可以方便快速地嵌入到各類(lèi)儀器儀表中,除了倉(cāng)儲(chǔ)物流部門(mén),還可以在醫(yī)療技術(shù)、消費(fèi)電子、汽車(chē)電子和工業(yè)自動(dòng)化等嵌入式領(lǐng)域發(fā)揮巨大的作用。3 結(jié)束語(yǔ)