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