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