王志強(qiáng) 蘭 強(qiáng)
摘要:文章介紹了基于RS-232的觸摸屏與以PIC單片機(jī)為控制中心的CO2 氣體保護(hù)窄間隙焊機(jī)之間的通信,也簡單介紹了Modbus通信協(xié)議,最后給出了硬件電路連接圖、程序流程圖。
關(guān)鍵詞:串口通訊;觸摸屏;單片機(jī);Modbus通信協(xié)議
中圖分類號:TG457.6 文獻(xiàn)標(biāo)識碼:A文章編號:1006-8937(2009)20-0045-02
觸摸屏是目前最新穎的輸入設(shè)備,操作簡單,使用方便,感受直觀,操作者只需用觸筆或手指輕輕觸碰屏幕上不同的功能區(qū)域,即可控制機(jī)械設(shè)備實現(xiàn)各種操作,使得人機(jī)交互更為直接 [1,2] 。近年來單片機(jī)在工業(yè)自動控制領(lǐng)域中使用越來越廣泛, 它與觸摸屏相結(jié)合, 能夠組成良好的人機(jī)交互界面。同時利用觸摸屏作為交互界面,能夠便捷地實現(xiàn)窄間隙焊機(jī)的功能,抗干擾性好,操作方便,并且主從通信可靠性好。
1系統(tǒng)結(jié)構(gòu)
實現(xiàn)觸摸屏與單片機(jī)的通訊,主要是解決通訊協(xié)議的問題,這里采用Modbus通信協(xié)議來解決。根據(jù)協(xié)議可以規(guī)定觸摸屏作為主站,PIC單片機(jī)為從站,觸摸屏與單片機(jī)之間采用RS-232兼容接口直接連接,波特率設(shè)置為9600kb/s,由觸摸屏發(fā)出輸入指令信號RS--232電平[3],經(jīng)由MAX232芯片轉(zhuǎn)換為TTL電平信號后輸入至單片機(jī),由單片機(jī)經(jīng)程序處理后發(fā)出信號控制電機(jī)工作。電機(jī)工作過程中,通過光電開關(guān)組向單片機(jī)反饋脈沖信號。單片機(jī)將運(yùn)行結(jié)果以TTL電平信號輸出,通過MAX232芯片轉(zhuǎn)換為RS232電平信號輸出至觸摸屏予以顯示,單片機(jī)將運(yùn)行結(jié)果以TTL電平信號輸出,通過MAX232芯片轉(zhuǎn)換為RS232電平信號輸出至觸摸屏予以顯示.系統(tǒng)結(jié)構(gòu)如圖1所示。
2串口通信
2.1Modbus通信協(xié)議簡介
為實現(xiàn)觸摸屏與單片機(jī)的通訊常用到Modbus協(xié)議,這是一種串行主從通信協(xié)議 。首先設(shè)置一個設(shè)備為主機(jī) ,其它設(shè)備為從機(jī)。單獨(dú)的主機(jī)和從機(jī)通信不需要編號;一個主機(jī)對應(yīng)多個從機(jī)時,須對每一個從機(jī)設(shè)置編號。Modbus協(xié)議定義了主機(jī)查詢及從機(jī)應(yīng)答的信息幀格式。通訊時 ,主機(jī)先向從機(jī)發(fā)出請求信息 ,如果數(shù)據(jù)幀符合相應(yīng)的地址要求,則從機(jī)接收通訊命令并從中讀取數(shù)據(jù)信息,然后執(zhí)行該信息中的任務(wù),并把執(zhí)行的結(jié)果返還主機(jī)。若從機(jī)接收到的校驗碼顯示錯誤 ,則說明數(shù)據(jù)在傳輸過程中出錯 ,則此次請求被從機(jī)視為無效,同時功能碼被修改,錯誤的信息代碼被返還主機(jī),然后等待主機(jī)再次發(fā)送。這里采用 CRC校驗方式[4]來檢驗數(shù)據(jù)的傳送情況。并采用異步傳輸方式傳送信息 ,以字節(jié)為單位。
Modbus協(xié)議可以支持ASCII碼或者二進(jìn)制格式的數(shù)據(jù)傳輸。在ACSII碼方式下每字節(jié)數(shù)據(jù)被分成兩個字節(jié)傳送;而在二進(jìn)制方式下每字節(jié)數(shù)據(jù)可用一個字節(jié)傳送。實際中常采用二進(jìn)制數(shù)據(jù)方式。
二進(jìn)制數(shù)據(jù)幀傳送的標(biāo)準(zhǔn)結(jié)構(gòu)如表1所示。
在使用二進(jìn)制模式下,信息傳送開始前至少需要3.5個字符的靜止時間,精致時間可以通過設(shè)置的波特率來計算。發(fā)送完最后一個字符后,也要求至少經(jīng)過3.5個字符的靜止時間,才發(fā)送下一個新數(shù)據(jù)。
2.2硬件電路設(shè)計
由于觸摸屏的通信串口RS232的電平是-10v~+10v,對于常規(guī)的單片機(jī)應(yīng)用系統(tǒng),信號電壓為TTL電平,電壓為0~+5v,所以要實現(xiàn)單片機(jī)與觸摸屏的通信,就需用MAX232來進(jìn)行電平轉(zhuǎn)換。
首先對單片機(jī)的RC6、RC7口設(shè)置,將其置為異步串行通信的模式,再通過MAX232芯片完成電平的轉(zhuǎn)換,最后與觸摸屏接口相連,就構(gòu)成了相應(yīng)的硬件電路。觸摸屏]接口的管腳2為TXD,管腳3為RXD。該系統(tǒng)的電路圖如圖2。
3通信程序設(shè)計
觸摸屏與單片機(jī)的通信程序用C語言編寫。編譯工具用PICC 9.50軟件。程序主要分為初始化模塊、數(shù)據(jù)處理模塊及發(fā)送模塊。主程序流程圖如圖3所示。
所用PIC單片機(jī)含有一個USART模塊,它有一個八位的波特率發(fā)生器(BRG),BRG可在同步通信下工作,也可異步通信方式下工作。用于異步通信方式時, TXSTA的BRGH位(D2)可用來控制波特率。
首先對串行口進(jìn)行的初始化,程序如下 :
Void init ()
{
GIE=1 //允許全局中斷
SPBRG=25; //設(shè)置波特率,設(shè)置為9600
TXSTA=0x04; //設(shè)置異步高速方式
RCSTA=0x80; //允許同步串行口工作
TRISC= TRISC&0x8o;//RC7(RX)設(shè)置為輸入方式,對外部呈高阻狀態(tài)
TRISC= TRISC&0xbf;//RC6(TX)設(shè)置為輸出
PIR1=0x00;//請中斷標(biāo)志
PEIE=1; //允許串行通信接口接中斷
RCIE=1; //設(shè)置USART允許接收中斷
TXIE=1; //設(shè)置USART發(fā)送中斷允許
}
實現(xiàn)PIC的數(shù)據(jù)接收需要一個中斷程序,該中斷函數(shù)將觸摸屏發(fā)來的數(shù)據(jù)幀存儲在一個定義過的數(shù)組中。當(dāng)PIC接收數(shù)據(jù)幀完成時,對接收結(jié)束標(biāo)志置1,然后進(jìn)入數(shù)據(jù)處理及發(fā)送模塊。應(yīng)用過程中中斷是否被響應(yīng),可以通過檢測外圍接口中斷允許寄存器PIE1的RCIE實現(xiàn)[5]。數(shù)據(jù)的處理與發(fā)送模式,可以通過Modbus協(xié)議對應(yīng)的功能碼來實現(xiàn)。
4結(jié) 語
通過運(yùn)用基于RS-232的觸摸屏技術(shù)以及Modbus協(xié)議,實現(xiàn)了PIC單片機(jī)與觸摸屏之間的通訊。以觸摸屏作為窄間隙焊機(jī)的操作界面,不僅僅簡化的操作,更進(jìn)一步提高了工人的工作環(huán)境,提高了工人的工作效率。實際使用證明該方法數(shù)據(jù)傳輸穩(wěn)定可靠, 并提供了良好的人機(jī)交互環(huán)境。系統(tǒng)工作穩(wěn)定可靠,能夠滿足控制過程要求。
參考文獻(xiàn):
[1] 李大勇.小靈通話費(fèi)信息觸摸屏查詢系統(tǒng)的設(shè)計與實現(xiàn)[J].數(shù)據(jù)庫與信息管理,2007,(4):4-5.
[2] 彭樹生,莊志洪,趙惠昌.PIC單片機(jī)原理及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2001.
[3] 周罡,鄭建彬.基于RS-232的在線簽名數(shù)據(jù)采集系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006,(9):68-70.
[4] 潘洪躍.基于MODBUS協(xié)議通信的設(shè)計與實現(xiàn)[J].測量與設(shè)備,2002,(8).
[5] 周航慈.單片機(jī)應(yīng)用程序設(shè)計技術(shù)[M].北京:北京航空航天大學(xué)出版社,1991.