石小仕, 姚婭川, 吳昊翰, 劉富瑞
(1.四川輕化工大學(xué)自動化與信息工程學(xué)院, 四川 自貢 643000;2.人工智能四川省重點實驗室, 四川 宜賓 644000;3.廣安市廣安區(qū)花橋鎮(zhèn)人民政府, 四川 廣安 638550)
在螺絲機的使用過程中,工人需要實時了解機器的運行狀態(tài)、工件鎖付情況以及對參數(shù)進行及時調(diào)整,因此需要設(shè)計出一套實際可用的螺絲機HMI系統(tǒng)來方便工人與機器進行交互。
早期的HMI系統(tǒng)是由七段數(shù)碼管、LED燈、開關(guān)按鍵等簡易電子元件構(gòu)成,同時還需設(shè)計出相應(yīng)的邏輯控制電路,這種HMI系統(tǒng)功能簡單,顯示內(nèi)容少,可操作性差[1],早期的HMI系統(tǒng)存在的問題,引起了許多專家學(xué)者及企業(yè)的關(guān)注,人們紛紛開始對螺絲機或其它產(chǎn)品的HMI系統(tǒng)進行升級改造。例如,蔡湘云[2]等人將螺絲機連接PC,利用PC的顯示屏作為人機交互窗口,這樣可以豐富顯示內(nèi)容,但是因為外加了PC使得螺絲機的一體化程度降低;林敏、覃羨烘[3-4]等人采用PLC作為系統(tǒng)主控制器,可以使用簡單方便的梯形圖進行程序設(shè)計,但張紅[5]等人卻提到各種不同的HMI系統(tǒng)與不同廠商的PLC產(chǎn)品之間可能支持不一致的通信協(xié)議,比如西門子PLC的某些型號只能使用其廠商默認的專用PPI協(xié)議,這使得HMI系統(tǒng)可移植性變差;鄭恒亮[6]等人設(shè)計的動車HMI系統(tǒng),給出了一種切屏更新算法,在切屏?xí)r才刷新數(shù)據(jù),減少了數(shù)據(jù)的傳輸量,但此方法依然是傳統(tǒng)的數(shù)據(jù)交換方式,需要有CPU參與其中。可見,各個領(lǐng)域改進的HMI系統(tǒng),解決了一些早期HMI系統(tǒng)存在的問題,但是也衍生出了其他的方面不足。
本設(shè)計在總結(jié)前人設(shè)計經(jīng)驗的基礎(chǔ)上,再結(jié)合螺絲機自身工作的需求,采用STM32作為螺絲機HMI系統(tǒng)的主控制器。相比于PLC控制器,STM32不僅可以降低設(shè)計成本,而且可以更靈活地進行軟件系統(tǒng)設(shè)計。通信協(xié)議引入工業(yè)自動化領(lǐng)域通用的Modbus協(xié)議,加強了螺絲機HMI系統(tǒng)的可移植性,并且在主從設(shè)備中間數(shù)據(jù)交換時,使用了數(shù)據(jù)預(yù)裝載附加DMA功能的方法解決了系統(tǒng)在實際生產(chǎn)中發(fā)現(xiàn)的切屏刷新延遲的問題。同時,為了提高了機器的一體化程度并豐富界面顯示內(nèi)容,引入4.3寸工業(yè)觸摸屏作為人機交互窗口,工業(yè)觸摸屏實物圖如圖1所示。
圖1 觸摸屏實物圖
設(shè)計的螺絲機HMI系統(tǒng)主要面向流水線工人和車間維修人員,故系統(tǒng)的設(shè)計應(yīng)考慮到參數(shù)顯示是否清晰直觀、操作是否流暢、切屏邏輯是否合理等問題。同時,針對不同的操作人員,系統(tǒng)要設(shè)置不同的操作權(quán)限,以防止螺絲機在運作過程中發(fā)生錯誤操作。系統(tǒng)主要由3個模塊構(gòu)成,分別是通信模塊、人機交互模塊、數(shù)據(jù)存儲模塊,系統(tǒng)構(gòu)成框圖如圖2所示。
圖2 螺絲機HMI系統(tǒng)構(gòu)成框圖
數(shù)據(jù)存儲模塊是由E2PROM芯片24C16通過I2C總線進行搭建,能夠儲存用戶常用的工件坐標(biāo)信息和機器工作日志,并能實現(xiàn)當(dāng)用戶開機后系統(tǒng)快速恢復(fù)上次工作狀態(tài)的功能。人機交互模塊,該模塊與操作人員有著最頻繁的接觸,在該模塊中操作人員不僅可以通過界面查看當(dāng)前工件螺絲的鎖付進度、工件加工數(shù)據(jù)、文件管理信息等內(nèi)容,而且可以進行觸屏操作來對待鎖付工件的坐標(biāo)進行補償,以及選擇U盤或E2PROM內(nèi)存儲的文件。
本設(shè)計采用HollySys的HT8421T型工業(yè)級觸摸屏,該屏內(nèi)置AM3352芯片,屏幕主要參數(shù)見表1。
表1 工業(yè)觸摸屏參數(shù)表
觸摸屏通過RS485接口與控制器進行連接,其硬件電路采用磁耦隔離方案,電路原理圖如圖3所示。圖3中,ADuM1411為三入一出四通道數(shù)字隔離芯片,PSM712用于熱拔插保護,F(xiàn)1、F2自恢復(fù)保險是防止負載過大導(dǎo)致485芯片損壞。
圖3 螺絲機HMI系統(tǒng)部分硬件電路圖
3.1.1 螺絲機HMI系統(tǒng)中的Modbus協(xié)議
Modbus協(xié)議是廣泛應(yīng)用于工業(yè)自動化領(lǐng)域的一種數(shù)字通信協(xié)議[7],該協(xié)議已經(jīng)成為一種通用工業(yè)標(biāo)準(zhǔn),因此采用Modbus協(xié)議作為螺絲機HMI系統(tǒng)的通信協(xié)議可以加強系統(tǒng)的可移植性。一個完整的基于Modbus協(xié)議的通信過程包括主設(shè)備的查詢和從設(shè)備的回應(yīng)兩部分,在本設(shè)計中將螺絲機的電機和電批作為執(zhí)行機構(gòu),工業(yè)觸摸屏作為主站,控制器作為從站,主、從設(shè)備通信原理圖如圖4所示。
圖4 主、從設(shè)備通信原理圖
在異步串行通信中,Modbus協(xié)議主要有RTU和ASCII兩種模式,根據(jù)實際情況,本設(shè)計采用遠程終端單元(RTU)模式,該模式下的消息幀格式見表2。
表2 消息幀格式
其中,螺絲機HMI系統(tǒng)涉及到的功能碼有01、03、04、05,各碼解釋如下:
(1)功能碼01:讀線圈狀態(tài),從一個遠程設(shè)備中讀1~2000個連續(xù)的線圈狀態(tài);
(2)功能碼03:讀保持寄存器,從遠程設(shè)備中讀保持寄存器連續(xù)塊的內(nèi)容;
(3)功能碼04:讀輸入寄存器,從遠程設(shè)備中讀1~125個連續(xù)輸入寄存器;
(4)功能碼05:寫單個線圈,將一個遠程設(shè)備中的一個輸出寫為ON或OFF。
3.1.2 參數(shù)計算
遵從Modbus RTU協(xié)議要求,傳輸過程中每一個信息幀之間至少間隔3.5個字符位,因此需要計算出相應(yīng)的幀間超時時間。在本設(shè)計中,串口的波特率設(shè)為9600 bit/s,1個字符一般情況下包括1個起始位、8位數(shù)據(jù)位、1位校驗位、1位停止位,這樣說來3.5個字符需要38.5 bit,將以上數(shù)據(jù)帶入式(1)中,可得幀間超時時間Tot約為4 ms,然后開啟控制器的通用定時器用來計時,根據(jù)式(2)可計算定時器的溢出時間,本設(shè)計將定時器的預(yù)分頻系數(shù)PSC設(shè)為72,那么裝載值為ARR=Tot。
(1)
(2)
式(1)、(2)中,Tot:幀間超時時間;B:波特率;Tout:定時器溢出時間;W:字符數(shù);L:字符長度;ARR:定時器裝載值;PSC:定時器預(yù)分頻系數(shù);HCLK:控制器時鐘頻率。
為了保證接收數(shù)據(jù)的正確性,還需對信息幀進行錯誤檢測,Modbus協(xié)議的RTU模式多采用CRC校驗,假設(shè)預(yù)置了一個16位的寄存器,這里稱該寄存器為CRC寄存器,再定義一個整型變量k,CRC校驗算法流程如圖5所示,圖中Byte從信息幀的第一個字節(jié)開始。
圖5 CRC校驗算法流程圖
在螺絲機HMI系統(tǒng)中,不同界面切換后會對顯示的數(shù)據(jù)進行相應(yīng)的更新,顯示數(shù)據(jù)更新的快慢是衡量系統(tǒng)優(yōu)越性的關(guān)鍵因素之一。團隊在設(shè)計初期便遭遇到了切屏相關(guān)的問題,當(dāng)界面進行切換后,新界面上的基本固件雖然顯現(xiàn)迅速,但是一些需要實時操作的數(shù)據(jù)在屏幕上的刷新卻存在一定的延遲。
切屏延時問題的存在,不僅影響了用戶的操作體驗,而且會拖慢工業(yè)生產(chǎn)進度,影響工件螺絲鎖付效率,特別是在機器運作時工人不能及時解讀到相關(guān)參數(shù)還可能造成潛在的安全隱患。為了解決問題,團隊對系統(tǒng)進行了切屏優(yōu)化。
3.2.1 數(shù)據(jù)預(yù)裝載
螺絲機HMI系統(tǒng)顯示的數(shù)據(jù)主要來源于U盤或者E2PROM內(nèi)。以E2PROM為例,分析發(fā)現(xiàn),屏幕上需要顯示的螺孔坐標(biāo)、待鎖工件型號、機器工作日志等數(shù)據(jù)都存放在E2PROM中,每當(dāng)切換到相應(yīng)數(shù)據(jù)的顯示界面時,從機需要先對24C16芯片進行讀操作,這明顯延長了主機上顯現(xiàn)出相關(guān)內(nèi)容的時間。為此提出了一種數(shù)據(jù)預(yù)裝載的方法,該方法充分利用了開機時設(shè)備初始化的空檔期,因為控制器啟動速度快于屏幕加載,開機后屏幕會有一個開機畫面的過程,在這期間在控制器中開辟一個緩存空間,并將E2PROM內(nèi)的數(shù)據(jù)提前讀取到控制器的緩存中,然后將顯示框地址與控制器緩存中對應(yīng)數(shù)據(jù)地址進行直接映射,之后若要顯示相關(guān)數(shù)據(jù)便可直接從控制器緩存中獲取。
數(shù)據(jù)預(yù)裝載的思想專門為備用數(shù)據(jù)在控制器中開辟了存儲空間,省去了之前現(xiàn)場操作外設(shè)的繁瑣步驟。將HMI系統(tǒng)連接JLINK仿真器對數(shù)據(jù)預(yù)裝載情況進行硬件調(diào)試,可見控制器緩存中得到的預(yù)裝載數(shù)據(jù)如圖6所示。
圖6 數(shù)據(jù)預(yù)裝載結(jié)果圖
3.2.2 啟動DMA功能
如果單純的使用串口進行主、從設(shè)備之間的數(shù)據(jù)交互,頻繁地觸發(fā)串口中斷,不僅會嚴(yán)重影響CPU的執(zhí)行效率,而且也會間接的降低數(shù)據(jù)的轉(zhuǎn)移速度。因此,為了切屏后數(shù)據(jù)刷新不出現(xiàn)卡頓,開啟控制器的DMA(Direct Memory Access:直接內(nèi)存存取)功能用于數(shù)據(jù)交互。DMA是一種可以減輕CPU負擔(dān)的數(shù)據(jù)轉(zhuǎn)移方式,其優(yōu)勢在于DMA總線獨立于控制器內(nèi)核。開啟該功能后主、從機之間可以實現(xiàn)數(shù)據(jù)直接傳輸,不像傳統(tǒng)數(shù)據(jù)傳輸那樣需要經(jīng)歷CPU寄存器環(huán)節(jié),這樣即能保證主、從設(shè)備間數(shù)據(jù)的高效傳輸,又能在數(shù)據(jù)傳輸?shù)耐瑫r為CPU騰出更多資源參與界面刷新的其他工作。
DMA的配置過程如下:
(1)使能DMA時鐘
RCC_AHBPeriphClockCmd();
(2)初始化DMA通道參數(shù)
DMA_Init();
(3)使能串口DMA發(fā)送
USART_DMACmd();
(4)使能DMA通道啟動傳輸
DMA_Cmd();
(5)查詢DMA傳輸狀態(tài)
DMA_GetFlagStatus();
(6)獲取/設(shè)置通道當(dāng)前剩余數(shù)據(jù)量
DMA_GetCurrDataCounter();
DMA_SetCurrDataCounter();
對切屏優(yōu)化效果的驗證,會在以下現(xiàn)場試驗章節(jié)詳細說明。
3.3.1 界面設(shè)計原則
螺絲機HMI系統(tǒng)界面是操作人員與機器交互的重要媒介,是人、機對話最為直接的平臺,因此與其他圖形界面設(shè)計一樣,螺絲機HMI系統(tǒng)界面設(shè)計也應(yīng)遵循直觀性、豐富性、邏輯合理性。
3.3.2 界面設(shè)計步驟
圖7 界面設(shè)計組態(tài)軟件窗口
螺絲機HMI系統(tǒng)的界面設(shè)計借助HollySys公司開發(fā)的HT8001CN組態(tài)軟件進行,軟件窗口如圖7所示。本設(shè)計選用的該組態(tài)軟件適配為工業(yè)觸摸屏,軟件提供大量的圖形對象可以像搭積木那樣方便地建立界面的圖形接口,縮短了開發(fā)周期。界面設(shè)計完成后,HT8001CN組態(tài)軟件最終會生成相應(yīng)的配置文件,設(shè)計人員可以用通過SD卡或USB接口將配置文件下載到工業(yè)觸摸屏中進行調(diào)試。
螺絲機HMI系統(tǒng)界面設(shè)計步驟如下:
(1)變量規(guī)劃。設(shè)計過程中用表格來記錄和整理所需變量的分配情況;
(2)界面配置。利用HT8001CN組態(tài)軟件提供的基本控件來進行界面配置,對界面上的控件進行編號,并分配變量地址和返回值,指定按鍵的觸發(fā)條件,HT8001CN提供的基本控件見表3。
表3 基本控件表
(3)美化界面。利用PS、美圖秀秀等圖像處理軟件對界面中的背景、圖標(biāo)、字體等相關(guān)元素進行藝術(shù)加工,最后再將結(jié)果導(dǎo)入到組態(tài)軟件中;
(4)調(diào)試與修改。把設(shè)計最終生成的配置文件借助SD卡或USB接口下載到工業(yè)觸摸屏中,并將屏幕通過RS485連接到控制器開始數(shù)據(jù)通信,進行界面的調(diào)試和修改。
3.3.3 界面框架及程序設(shè)計
圖8 界面框架圖
螺絲機HMI系統(tǒng)界面框架如圖8所示??蚣苤忻總€子模塊對應(yīng)一個子界面,每一級子界面又包含若干個功能二級界面。在接收觸摸按鍵值后,主設(shè)備進行相應(yīng)的界面跳轉(zhuǎn),并向從設(shè)備發(fā)送請求。當(dāng)從設(shè)備收到請求后,會先對信息幀進行CRC校驗,然后進行功能碼判斷。一切無誤后,從設(shè)備會給予主設(shè)備回應(yīng),主設(shè)備對回應(yīng)信息幀進行分析,最后對界面內(nèi)容進行刷新,進入正常的人機交互狀態(tài),界面程序設(shè)計流程如圖9所示。
圖9 界面設(shè)計程序流程圖
將設(shè)計完成的基于Modbus協(xié)議的螺絲機HMI系統(tǒng)投放到工廠的生產(chǎn)線中進行實地試驗,現(xiàn)場試驗如圖10所示。
圖10 現(xiàn)場試驗圖
試驗前期,先對觸摸屏的參數(shù)、通信參數(shù)等系統(tǒng)重要參數(shù)進行配置,如圖11所示。
圖11 系統(tǒng)重要參數(shù)配置
現(xiàn)場試驗中,對比了切屏優(yōu)化前后各個界面跳轉(zhuǎn)時相應(yīng)數(shù)據(jù)刷新的結(jié)果,并記錄了主要界面刷新時間。切屏優(yōu)化前后數(shù)據(jù)刷新時間對比見表4。
表4 切屏優(yōu)化前后數(shù)據(jù)刷新時間對比表
從表4中可以看出,采用數(shù)據(jù)預(yù)裝載附加DMA功能的方法對切屏進行優(yōu)化有著顯著的效果。特別是U盤內(nèi)和E2PROM內(nèi)的數(shù)據(jù)刷新,在未優(yōu)化時,系統(tǒng)需要提前操作U盤或者24C16芯片,這將會消耗大量時間,而采用該方法后,數(shù)據(jù)刷新時間縮短了約3~4秒。對于鎖付監(jiān)控,因為該界面為動畫展示過程,涉及數(shù)據(jù)存取情況較少,所以優(yōu)化效果不明顯??傊瑪?shù)據(jù)預(yù)裝載附加DMA功能的方法適用于數(shù)據(jù)量大、外設(shè)數(shù)據(jù)傳輸頻繁的情況,能有效的提升用戶操作的流暢感。
產(chǎn)線上的操作工人與維修人員是螺絲機HMI系統(tǒng)最終的服務(wù)對象,他們對于系統(tǒng)的使用有著最直接的體驗感受,因此他們對于系統(tǒng)的綜合性評價也有著不可忽視的話語權(quán)。將該設(shè)計在產(chǎn)線上投入使用一個月后,設(shè)計團隊對產(chǎn)線工人和維修人員進行了問卷調(diào)查,調(diào)查結(jié)果如圖12所示。
圖12 用戶調(diào)查結(jié)果
由圖12中可以看出,系統(tǒng)的穩(wěn)定性和直觀性得到了用戶的肯定,但是界面的美化和按鍵的邏輯性得分相對較低,這將是該套系統(tǒng)在今后還需要進一步改進的地方。
本設(shè)計基于Modbus協(xié)議的螺絲機HMI系統(tǒng),采用STM32作為系統(tǒng)控制器,并嵌入4.3寸工業(yè)觸摸屏作為HMI系統(tǒng)人機交互的窗口,系統(tǒng)的通信協(xié)議引用工業(yè)自動化領(lǐng)域通用的Modbus協(xié)議。本文中還給出了該協(xié)議重要參數(shù)的計算方法以及CRC校驗流程。針對切屏后界面數(shù)據(jù)刷新延時的問題,開啟了控制器DMA功能,并提出了一種數(shù)據(jù)信息預(yù)裝載的辦法,有效地對切屏進行了優(yōu)化。最后遵循界面設(shè)計的原則,設(shè)計出了邏輯合理、簡潔直觀、功能齊全的系統(tǒng)界面。該設(shè)計已在工廠流水線上成功投入使用,具有很高的社會經(jīng)濟價值。