林填達 ,張泉宏,曾 敏,胡小芳
(1.華南理工大學(xué) 機械與汽車工程學(xué)院,廣州 510640;2.廣東志高暖通設(shè)備股份有限公司,佛山 528244)
風(fēng)機軸套自動涂膠機是一種基于機電一體化技術(shù)開發(fā)的新型風(fēng)機軸套涂膠自動化設(shè)備。風(fēng)機軸套自動涂膠機系統(tǒng)的總體結(jié)構(gòu)如圖1所示。當(dāng)自動涂膠系統(tǒng)工作時,觸摸屏作為人機界面,為系統(tǒng)正常工作提供所需的參數(shù),同時監(jiān)控、顯示系統(tǒng)的運行狀態(tài)。當(dāng)系統(tǒng)發(fā)生錯誤時則產(chǎn)生報警。運動控制器根據(jù)觸摸屏所提供的設(shè)定參數(shù)控制工作平臺、進料系統(tǒng)、零件傳送系統(tǒng)、涂膠系統(tǒng)、卸料系統(tǒng)協(xié)調(diào)工作,并實時監(jiān)控各個感應(yīng)開關(guān)、各個按鈕的狀態(tài),同時根據(jù)系統(tǒng)的運行狀態(tài),控制三色燈的顯示狀態(tài),實現(xiàn)對風(fēng)機軸套的精確、快速涂膠??梢哉f,在風(fēng)機軸套自動涂膠機系統(tǒng)中,人機界面的作用是無可替代的。該部分選用了支持Modbus協(xié)議的步科ET070型觸摸屏為人機界面,以STM32單片機為核心,并于2014年在江門市森柏實業(yè)有限公司投入使用。經(jīng)實際工業(yè)生產(chǎn)使用驗證,該部分性能穩(wěn)定,能夠滿足工業(yè)生產(chǎn)的要求。
圖1 風(fēng)機軸套自動涂膠系統(tǒng)結(jié)構(gòu)圖Fig.1 Structure diagram of automatic glue system for shaft sleeve of fan
ET070型觸摸屏具有65536色的 (2.54×7)cm,分辨率為(800×480)TFT 液晶屏,采用 400 MHz高速CPU,具有強大的圖形顯示功能和數(shù)據(jù)處理功能,支持RS-485和RS-232兩種通訊接口。配套的組件軟件Kinco HMIware功能強大,用戶可以以較快的速度掌握其使用方法,創(chuàng)建出直觀的畫面,完成數(shù)據(jù)顯示、監(jiān)控狀態(tài)、報警功能等畫面的設(shè)計。在本文中,觸摸屏使用RS-232與單片機進行通訊,觸摸屏參數(shù)設(shè)置如下:PLC類型設(shè)為Modbus RTU,通訊類型選擇RS-232,波特率、數(shù)據(jù)位、奇偶檢測和停止位根據(jù)單片機的串口通訊配置來設(shè)置。
STM32系列單片機內(nèi)核采用超低功率的ARM Cortex-M3處理器,具有高性能、低成本、低功耗的特點,同時集成了豐富出眾的外設(shè)系統(tǒng),具有集成度高和開發(fā)便捷的優(yōu)勢。STM32F103最高工作頻率可達72 MHz,內(nèi)置有256 K的Flash和48 K的SRAM,在工業(yè)控制領(lǐng)域應(yīng)用廣泛。
該部分的硬件結(jié)構(gòu)主要由STM32單片機、步科ET070型觸摸屏以及電平轉(zhuǎn)換電路組成。觸摸屏作為上位機,通過串口向單片機發(fā)送查詢消息幀,并且接收STM32發(fā)送回來的消息回應(yīng)幀。下位機STM32接收到查詢消息幀后,對其進行解析、執(zhí)行和回應(yīng)。MAX3232芯片則實現(xiàn)TTL電平與RS-232電平的雙向轉(zhuǎn)換。將STM32的PA9和PA10分別設(shè)為串口通訊的輸入輸出口。如圖2所示為系統(tǒng)通訊的連接圖。
圖2 系統(tǒng)通訊連接圖Fig.2 Communication circuit diagram of system
Modbus協(xié)議是Modicon公司開發(fā)的一種通訊協(xié)議,采用主從問答方式進行工作,允許1個主機與1個或者多個從機通訊,廣泛應(yīng)用于自動化控制行業(yè)中,已經(jīng)成為一種通用的工業(yè)標準[1]。控制器相互之間可以利用此協(xié)議進行通訊,連成工業(yè)網(wǎng)路[2-4]。
Modbus協(xié)議有2種傳輸方式:ASCII和 RTU。對于ASCII模式,一個8位字節(jié)分為2個ASCII字符傳輸;而采用RTU模式,一個8位字節(jié)則利用2個4位16進制字符傳輸??梢钥闯觯鄬τ贏SCII模式,RTU模式表達同樣的信息需要的位數(shù)較少,在同樣的傳輸速率下能獲取更多的信息,可以提高通訊的效率[5]。本文采用RTU傳輸模式,RTU模式的消息幀結(jié)構(gòu)如表1所示。
表1 Modbus RTU消息幀結(jié)構(gòu)Tab.1 Frame format of Modbus RTU
使用RTU模式,2個消息幀之間至少要相隔3.5個字符時間。消息幀在傳輸?shù)倪^程中必須作為一段連續(xù)的數(shù)據(jù)流。若消息幀內(nèi)2字節(jié)之間的時間間隔超過1.5個字節(jié)的傳輸時間,則可認為消息幀是不完整的[6]。
系統(tǒng)的硬件結(jié)構(gòu)是由觸摸屏與STM32單片機組成的。因步科ET070型觸摸屏本身支持Modbus協(xié)議,那么只要STM32單片機也支持Modbus協(xié)議,就可以實現(xiàn)觸摸屏與單片機之間的通訊了。
根據(jù)通訊的流程和功能,可將單片機的通信程序分為3個模塊,分別為初始化模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)處理以及數(shù)據(jù)發(fā)送模塊。初始化模塊用于設(shè)定通訊波特率、串口接收以及定時器等方面。數(shù)據(jù)接收模塊主要由串口中斷服務(wù)函數(shù)和定時器計時函數(shù)組成。定時器計時函數(shù)主要用于計算STM32接收2個字節(jié)的時間間隔usart_ms,可用來判斷這2個字節(jié)是否屬于一個消息幀。而串口中斷服務(wù)函數(shù)用于接收主機發(fā)送過來的信息。若從機接收到主機發(fā)送過來的信息,則進入串口中斷服務(wù)函數(shù),判斷接收到的字節(jié)與之前接收到的字節(jié)是否屬于同一個信息幀。若是,則將接收到的信息賦給Recive_Buf[Count],并令定時器的計數(shù)值 usart_ms 歸零,定時器重新計數(shù)。另外,若接收到的字節(jié)為新的消息幀的第一個字節(jié),此時count為0,同樣把信息賦給 Recive_Buf[Count],并令定時器重新計數(shù)。 其程序流程如圖3所示。
圖3 數(shù)據(jù)接收模塊流程圖Fig.3 Data receiving module flow chart
數(shù)據(jù)處理以及數(shù)據(jù)發(fā)送模塊主要功能為解析主機發(fā)送過來的消息幀,進行錯誤校驗以及生成從機的回應(yīng)消息幀。若接收到主機發(fā)送過來的信息,先判斷這些信息是否處于同一個消息幀。若是,則進行CRC校驗,并根據(jù)主機發(fā)送過來的信息,生成相應(yīng)的回應(yīng)消息,并將其通過串口發(fā)送給主機。其具體流程如圖4所示。
圖4 數(shù)據(jù)處理及數(shù)據(jù)發(fā)送模塊流程圖Fig.4 Data processing and transmission module flow chart
通訊程序的整體流程如下:觸摸屏若對STM32單片機發(fā)送查詢信息,單片機接收到每個字節(jié)時,都將進入串口中斷服務(wù)函數(shù)。接收查詢信息幀的第一個字節(jié)時,usart_flag應(yīng)為flase,表明之前的消息已經(jīng)處理完畢,usart_ms應(yīng)大于max_ms。max_ms的值應(yīng)大于3.5個字節(jié)的傳輸時間,根據(jù)波特率可以算出這個值。若接收到的字節(jié)不是消息幀的第一個字節(jié),則有usart_ms小于max_ms,usart_flag的值應(yīng)為true,表明有數(shù)據(jù)需要處理。將usart_ms置為0,重新計算下一個字節(jié)的傳輸時間。接收到的消息將存儲在數(shù)組Receive_Buf[Count]中,Count表示接收到的字節(jié)個數(shù)。若觸摸屏的查詢信息幀發(fā)送完畢,那么當(dāng)usart_ms大于max_ms時,STM32單片機將進入數(shù)據(jù)處理及發(fā)送模塊。usart_ms大于max_ms,usart_flag為true,說明查詢信息幀接收完畢,數(shù)據(jù)處理及數(shù)據(jù)發(fā)送模塊調(diào)用CRC校驗子程序,以此來判斷接收到信息幀的有效性。若CRC校驗錯誤,則將usart_flag改為 flase,usart_ms與 count重新置為 0,為重新接收消息幀做準備。若CRC校驗正確,單片機則將解析消息幀,并根據(jù)消息幀中的功能碼,分別執(zhí)行主機的查詢命令。常見的功能碼如表2所示。單片機生成回應(yīng)消息幀后,通過串口將其發(fā)送給觸摸屏,作為回應(yīng)。發(fā)送完畢后,數(shù)據(jù)處理及發(fā)送模塊將把usart_flag改為 flase,usart_ms與 count置為0,為接收觸摸屏的下一個查詢消息幀做準備。在數(shù)據(jù)處理和發(fā)送模塊工作時,數(shù)據(jù)接收模塊不工作。主機沒有得到從機的正確回應(yīng)時,將會再次發(fā)送查詢消息幀,因而不影響系統(tǒng)的正常工作。
表2 Modbus協(xié)議常用功能碼Tab.2 General function code of Modbus
以功能碼01為例來說明觸摸屏與單片機實際通訊數(shù)據(jù)格式。假定STM32單片機的地址編號為01,如果觸摸屏需要讀取0x1這個bit的狀態(tài),發(fā)送命令如表3所示。圖5為觸摸屏發(fā)送查詢消息幀的波形。
表3 觸摸屏發(fā)送的數(shù)據(jù)結(jié)構(gòu)Tab.3 Data touch-screen sending
圖5 觸摸屏發(fā)送消息幀波形圖Fig.5 Waveform of the message frame touch-screen sending
表4為0x1為0和1時,STM32回應(yīng)的數(shù)據(jù)結(jié)構(gòu),圖6為STM32回應(yīng)消息幀的波形圖。
表4 STM32回應(yīng)的數(shù)據(jù)結(jié)構(gòu)Tab.4 Data STM32 responding
圖6 STM32回應(yīng)消息幀波形圖Fig.6 Waveform of message frame STM32 responding
經(jīng)過測試,觸摸屏能夠正確顯示0x1這個bit的狀態(tài),觸摸屏與STM32單片機能夠正確通訊。
通訊系統(tǒng)主機采用了步科ET070型觸摸屏,從機采用了STM32單片機,通過Modbus協(xié)議,實現(xiàn)觸摸屏與STM32單片機的通訊,數(shù)據(jù)傳輸可靠穩(wěn)定,電路連接簡單,易于實現(xiàn)。目前該系統(tǒng)已成功應(yīng)用于風(fēng)機軸套自動涂膠機,能夠經(jīng)受實際工業(yè)生產(chǎn)的考驗。
[1]溫建明,魯五一,袁慶國.基于MODBUS協(xié)議的觸摸屏與單片機通信的實現(xiàn)[J].起重運輸機械,2008(7):39-42.
[2]呂國芳,唐海龍,李進.基于Modbus RTU的串口調(diào)試軟件的實現(xiàn)[J].計算機技術(shù)與發(fā)展,2009,19(9):236-238.
[3]孟華,王鵬達,李明偉.基于Modbus協(xié)議的觸摸屏與PIC單片機的通信實現(xiàn)[J].儀表技術(shù)與傳感器,2009(10):58-60.
[4] 張桂,金國強,李輝.基于ARM平臺Modbus RTU協(xié)議的研究與實現(xiàn)[J].電力科學(xué)與工程,2011,27(1):23-27.
[5] 祁建安,呂震中.基于MODBUS協(xié)議的DSP從站串口通訊模塊設(shè)計[J].測控技術(shù),2004,23(9):38-40.
[6]于正林,張龍,黃勇.Modbus通訊協(xié)議的FPGA實現(xiàn)[J].現(xiàn)代電子技術(shù),2010(11):203-207.