林填達 ,張泉宏,曾 敏,胡小芳
(1.華南理工大學 機械與汽車工程學院,廣州 510640;2.廣東志高暖通設備股份有限公司,佛山 528244)
風機軸套自動涂膠機是一種基于機電一體化技術開發的新型風機軸套涂膠自動化設備。風機軸套自動涂膠機系統的總體結構如圖1所示。當自動涂膠系統工作時,觸摸屏作為人機界面,為系統正常工作提供所需的參數,同時監控、顯示系統的運行狀態。當系統發生錯誤時則產生報警。運動控制器根據觸摸屏所提供的設定參數控制工作平臺、進料系統、零件傳送系統、涂膠系統、卸料系統協調工作,并實時監控各個感應開關、各個按鈕的狀態,同時根據系統的運行狀態,控制三色燈的顯示狀態,實現對風機軸套的精確、快速涂膠??梢哉f,在風機軸套自動涂膠機系統中,人機界面的作用是無可替代的。該部分選用了支持Modbus協議的步科ET070型觸摸屏為人機界面,以STM32單片機為核心,并于2014年在江門市森柏實業有限公司投入使用。經實際工業生產使用驗證,該部分性能穩定,能夠滿足工業生產的要求。

圖1 風機軸套自動涂膠系統結構圖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,具有強大的圖形顯示功能和數據處理功能,支持RS-485和RS-232兩種通訊接口。配套的組件軟件Kinco HMIware功能強大,用戶可以以較快的速度掌握其使用方法,創建出直觀的畫面,完成數據顯示、監控狀態、報警功能等畫面的設計。在本文中,觸摸屏使用RS-232與單片機進行通訊,觸摸屏參數設置如下:PLC類型設為Modbus RTU,通訊類型選擇RS-232,波特率、數據位、奇偶檢測和停止位根據單片機的串口通訊配置來設置。
STM32系列單片機內核采用超低功率的ARM Cortex-M3處理器,具有高性能、低成本、低功耗的特點,同時集成了豐富出眾的外設系統,具有集成度高和開發便捷的優勢。STM32F103最高工作頻率可達72 MHz,內置有256 K的Flash和48 K的SRAM,在工業控制領域應用廣泛。
該部分的硬件結構主要由STM32單片機、步科ET070型觸摸屏以及電平轉換電路組成。觸摸屏作為上位機,通過串口向單片機發送查詢消息幀,并且接收STM32發送回來的消息回應幀。下位機STM32接收到查詢消息幀后,對其進行解析、執行和回應。MAX3232芯片則實現TTL電平與RS-232電平的雙向轉換。將STM32的PA9和PA10分別設為串口通訊的輸入輸出口。如圖2所示為系統通訊的連接圖。

圖2 系統通訊連接圖Fig.2 Communication circuit diagram of system
Modbus協議是Modicon公司開發的一種通訊協議,采用主從問答方式進行工作,允許1個主機與1個或者多個從機通訊,廣泛應用于自動化控制行業中,已經成為一種通用的工業標準[1]??刂破飨嗷ブg可以利用此協議進行通訊,連成工業網路[2-4]。
Modbus協議有2種傳輸方式:ASCII和 RTU。對于ASCII模式,一個8位字節分為2個ASCII字符傳輸;而采用RTU模式,一個8位字節則利用2個4位16進制字符傳輸??梢钥闯?,相對于ASCII模式,RTU模式表達同樣的信息需要的位數較少,在同樣的傳輸速率下能獲取更多的信息,可以提高通訊的效率[5]。本文采用RTU傳輸模式,RTU模式的消息幀結構如表1所示。

表1 Modbus RTU消息幀結構Tab.1 Frame format of Modbus RTU
使用RTU模式,2個消息幀之間至少要相隔3.5個字符時間。消息幀在傳輸的過程中必須作為一段連續的數據流。若消息幀內2字節之間的時間間隔超過1.5個字節的傳輸時間,則可認為消息幀是不完整的[6]。
系統的硬件結構是由觸摸屏與STM32單片機組成的。因步科ET070型觸摸屏本身支持Modbus協議,那么只要STM32單片機也支持Modbus協議,就可以實現觸摸屏與單片機之間的通訊了。
根據通訊的流程和功能,可將單片機的通信程序分為3個模塊,分別為初始化模塊、數據接收模塊、數據處理以及數據發送模塊。初始化模塊用于設定通訊波特率、串口接收以及定時器等方面。數據接收模塊主要由串口中斷服務函數和定時器計時函數組成。定時器計時函數主要用于計算STM32接收2個字節的時間間隔usart_ms,可用來判斷這2個字節是否屬于一個消息幀。而串口中斷服務函數用于接收主機發送過來的信息。若從機接收到主機發送過來的信息,則進入串口中斷服務函數,判斷接收到的字節與之前接收到的字節是否屬于同一個信息幀。若是,則將接收到的信息賦給Recive_Buf[Count],并令定時器的計數值 usart_ms 歸零,定時器重新計數。另外,若接收到的字節為新的消息幀的第一個字節,此時count為0,同樣把信息賦給 Recive_Buf[Count],并令定時器重新計數。 其程序流程如圖3所示。

圖3 數據接收模塊流程圖Fig.3 Data receiving module flow chart
數據處理以及數據發送模塊主要功能為解析主機發送過來的消息幀,進行錯誤校驗以及生成從機的回應消息幀。若接收到主機發送過來的信息,先判斷這些信息是否處于同一個消息幀。若是,則進行CRC校驗,并根據主機發送過來的信息,生成相應的回應消息,并將其通過串口發送給主機。其具體流程如圖4所示。

圖4 數據處理及數據發送模塊流程圖Fig.4 Data processing and transmission module flow chart
通訊程序的整體流程如下:觸摸屏若對STM32單片機發送查詢信息,單片機接收到每個字節時,都將進入串口中斷服務函數。接收查詢信息幀的第一個字節時,usart_flag應為flase,表明之前的消息已經處理完畢,usart_ms應大于max_ms。max_ms的值應大于3.5個字節的傳輸時間,根據波特率可以算出這個值。若接收到的字節不是消息幀的第一個字節,則有usart_ms小于max_ms,usart_flag的值應為true,表明有數據需要處理。將usart_ms置為0,重新計算下一個字節的傳輸時間。接收到的消息將存儲在數組Receive_Buf[Count]中,Count表示接收到的字節個數。若觸摸屏的查詢信息幀發送完畢,那么當usart_ms大于max_ms時,STM32單片機將進入數據處理及發送模塊。usart_ms大于max_ms,usart_flag為true,說明查詢信息幀接收完畢,數據處理及數據發送模塊調用CRC校驗子程序,以此來判斷接收到信息幀的有效性。若CRC校驗錯誤,則將usart_flag改為 flase,usart_ms與 count重新置為 0,為重新接收消息幀做準備。若CRC校驗正確,單片機則將解析消息幀,并根據消息幀中的功能碼,分別執行主機的查詢命令。常見的功能碼如表2所示。單片機生成回應消息幀后,通過串口將其發送給觸摸屏,作為回應。發送完畢后,數據處理及發送模塊將把usart_flag改為 flase,usart_ms與 count置為0,為接收觸摸屏的下一個查詢消息幀做準備。在數據處理和發送模塊工作時,數據接收模塊不工作。主機沒有得到從機的正確回應時,將會再次發送查詢消息幀,因而不影響系統的正常工作。

表2 Modbus協議常用功能碼Tab.2 General function code of Modbus
以功能碼01為例來說明觸摸屏與單片機實際通訊數據格式。假定STM32單片機的地址編號為01,如果觸摸屏需要讀取0x1這個bit的狀態,發送命令如表3所示。圖5為觸摸屏發送查詢消息幀的波形。

表3 觸摸屏發送的數據結構Tab.3 Data touch-screen sending

圖5 觸摸屏發送消息幀波形圖Fig.5 Waveform of the message frame touch-screen sending
表4為0x1為0和1時,STM32回應的數據結構,圖6為STM32回應消息幀的波形圖。

表4 STM32回應的數據結構Tab.4 Data STM32 responding

圖6 STM32回應消息幀波形圖Fig.6 Waveform of message frame STM32 responding
經過測試,觸摸屏能夠正確顯示0x1這個bit的狀態,觸摸屏與STM32單片機能夠正確通訊。
通訊系統主機采用了步科ET070型觸摸屏,從機采用了STM32單片機,通過Modbus協議,實現觸摸屏與STM32單片機的通訊,數據傳輸可靠穩定,電路連接簡單,易于實現。目前該系統已成功應用于風機軸套自動涂膠機,能夠經受實際工業生產的考驗。
[1]溫建明,魯五一,袁慶國.基于MODBUS協議的觸摸屏與單片機通信的實現[J].起重運輸機械,2008(7):39-42.
[2]呂國芳,唐海龍,李進.基于Modbus RTU的串口調試軟件的實現[J].計算機技術與發展,2009,19(9):236-238.
[3]孟華,王鵬達,李明偉.基于Modbus協議的觸摸屏與PIC單片機的通信實現[J].儀表技術與傳感器,2009(10):58-60.
[4] 張桂,金國強,李輝.基于ARM平臺Modbus RTU協議的研究與實現[J].電力科學與工程,2011,27(1):23-27.
[5] 祁建安,呂震中.基于MODBUS協議的DSP從站串口通訊模塊設計[J].測控技術,2004,23(9):38-40.
[6]于正林,張龍,黃勇.Modbus通訊協議的FPGA實現[J].現代電子技術,2010(11):203-207.