李英爽
(浙江大學(xué) 電氣工程學(xué)院,杭州 310027)
觸摸屏是近些年快速發(fā)展起來(lái)的一種全新的人間交互界面,它具有堅(jiān)固的外殼,豐富的操作界面,以及標(biāo)準(zhǔn)的通信協(xié)議。工業(yè)上觸摸屏的應(yīng)用可使人機(jī)交互更加直觀(guān),且易于操作[1]。
本系統(tǒng)中觸摸屏和單片機(jī)仿照PPI 協(xié)議進(jìn)行通信[2]。PPI 協(xié)議是西門(mén)子S7 -200 系列PLC 使用的一種獨(dú)有的通信協(xié)議。通過(guò)此協(xié)議,西門(mén)子S7 -200 系列PLC 可以與一些交互設(shè)備進(jìn)行通信。PPI 協(xié)議最大特點(diǎn)就是使用此協(xié)議不需要再編寫(xiě)PLC 的通信程序,這樣極大地節(jié)省了PLC 有限的程序存儲(chǔ)空間。所以很多與S7 -200 系列PLC 的交互設(shè)備都使用了PPI 協(xié)議,這些使用PPI 協(xié)議的交互設(shè)備一般不可移植到其他系列的設(shè)備中。本文通過(guò)Atmega128 模仿PPI 協(xié)議的通信方式,實(shí)現(xiàn)了觸摸屏使用PPI 協(xié)議與Atmega128 單片機(jī)的通信。
首先通過(guò)監(jiān)控西門(mén)子S7 -200 系列PLC 與觸摸屏之間的數(shù)據(jù)通信,可以分析出PPI 協(xié)議通訊采用主從方式,主站向從站發(fā)送請(qǐng)求,從站做出應(yīng)答。主站收到應(yīng)答信息后發(fā)送確認(rèn)信息,從站收到確認(rèn)信息后完成讀寫(xiě)操作并返回響應(yīng)的數(shù)據(jù)[3]。從站不主動(dòng)發(fā)送信息,而是等候主站向其發(fā)送請(qǐng)求或查詢(xún),按要求應(yīng)答。PPI 協(xié)議通訊設(shè)置采用8 個(gè)數(shù)據(jù)位,1個(gè)停止位,偶校驗(yàn)位,波特率可自行選擇。主設(shè)備向從設(shè)備發(fā)送命令式,其格式為:起始符、數(shù)據(jù)長(zhǎng)度、目標(biāo)地址、源地址、功能碼、目的服務(wù)存取點(diǎn)、源服務(wù)存取點(diǎn)、數(shù)據(jù)單元、校驗(yàn)和、結(jié)束符。表1 即為典型PPI 協(xié)議幀格式的組成[4]。
PPI 協(xié)議可以實(shí)現(xiàn)1 次讀取、寫(xiě)入1 個(gè)數(shù)據(jù)或多個(gè)數(shù)據(jù)。在PLC 內(nèi)部對(duì)不同的數(shù)據(jù)類(lèi)型、不同存儲(chǔ)器類(lèi)型進(jìn)行操作時(shí),具體的數(shù)據(jù)長(zhǎng)度有所不同。本文以讀取西門(mén)子S7 -200系列PLC 一個(gè)V 存儲(chǔ)器的一個(gè)雙字節(jié)為例進(jìn)行研究,具體的數(shù)據(jù)格式如表2 所示。
表1 PPI 數(shù)據(jù)幀結(jié)構(gòu)
表2 觸摸屏讀取S7 -200 系列PLC 寄存器VD100 的指令格式
表2 中:SD 為起始符,固定為68H;LE、LEr 為從DA 到DU 的數(shù)據(jù)長(zhǎng)度,以字節(jié)記,如果讀1 個(gè)數(shù)據(jù),則始終為1BH;DA 為目的地址,默認(rèn)情況下,PLC 的地址為02H;SA 為源地址,默認(rèn)情況下,PC 機(jī)地址為00H,HMI 設(shè)備的地址為01H;FC 為功能碼,讀寫(xiě)數(shù)據(jù)時(shí)可保持以上數(shù)據(jù)不變;CC 為目的服務(wù)存取點(diǎn),讀寫(xiě)數(shù)據(jù)時(shí)可保持以上數(shù)據(jù)不變;GU 為源服務(wù)存取點(diǎn),讀寫(xiě)數(shù)據(jù)時(shí)可保持以上數(shù)據(jù)不變;DU 為數(shù)據(jù)單元,包括讀取數(shù)據(jù)的長(zhǎng)度、類(lèi)型、地址;FSC 為校驗(yàn)和,為DA 到DU 的數(shù)據(jù)和;ED 為結(jié)束符,始終為16H。
當(dāng)PLC 接收到如表2 的正確數(shù)據(jù)格式時(shí),會(huì)返回給觸摸屏一個(gè)應(yīng)答信號(hào)E5H。當(dāng)觸摸屏收到E5H 后,發(fā)送確認(rèn)信息為10H 02H 00H 5CH 5EH 16H。當(dāng)PLC 接收到以上數(shù)據(jù)時(shí)會(huì)把相應(yīng)的數(shù)據(jù)發(fā)送給觸摸屏,若讀取的數(shù)據(jù)為1 個(gè)雙字節(jié)就會(huì)返回31 個(gè)字節(jié),其中Byte[25]到Byte[28]就是要讀取的數(shù)據(jù)。讀取的數(shù)據(jù)都是高字節(jié)內(nèi)容在前。
本次設(shè)計(jì)采用威綸通MT6070IH 觸摸屏,其具有2 種通信方式:RS232 和RS485。在RS485 通信方式下,信號(hào)傳輸?shù)木嚯x遠(yuǎn),同時(shí)擁有多機(jī)通信的功能,并且具有良好的抗干擾能力,所以觸摸屏與西門(mén)子S7 -200 系列PLC 通信方式為RS485 通信。本系統(tǒng)是用單片機(jī)代替西門(mén)子S7 -200 系列PLC,單片機(jī)與觸摸屏采用的通信方式為RS232 通信,其通信框圖如圖1 所示。ATmega 128 具有2 個(gè)串行通信端口,本研究用的是ATmega128 的RXD1(PD2)和TXD1(PD3)串行通信口,目標(biāo)是實(shí)現(xiàn)ATmega128 采集旋轉(zhuǎn)編碼器的數(shù)據(jù),并把這個(gè)數(shù)據(jù)發(fā)送給觸摸屏來(lái)顯示。PE4 與PE5 用來(lái)讀取旋轉(zhuǎn)編碼器的數(shù)據(jù)。
圖1 單片機(jī)部分硬件通信框圖
在觸摸屏與單片機(jī)數(shù)據(jù)通信時(shí),可能會(huì)產(chǎn)生很多未知的問(wèn)題。有時(shí)它們之間的發(fā)送和接收的數(shù)據(jù)可能會(huì)發(fā)生錯(cuò)亂。為了更好地實(shí)現(xiàn)他們之間的通信,根據(jù)RS485 通信的特點(diǎn),用計(jì)算機(jī)串口調(diào)試助手來(lái)保存并監(jiān)控?cái)?shù)據(jù)通信過(guò)程,進(jìn)而分析單片機(jī)與觸摸屏之間的PPI 協(xié)議實(shí)現(xiàn)。監(jiān)控電路原理如圖2 所示。通過(guò)MAX485 芯片把差分信號(hào)轉(zhuǎn)換成RS485 信號(hào),RS485 信號(hào)再通過(guò)MAX232 芯片轉(zhuǎn)換成RS232 信號(hào),并通過(guò)串口把RS232 信號(hào)送給PC 機(jī)。通過(guò)串口調(diào)試助手把讀到的16 進(jìn)制數(shù)據(jù)顯示出來(lái)。
圖2 PC 機(jī)監(jiān)控電路原理
觸摸屏里已經(jīng)集成了PPI 協(xié)議,在編程時(shí)直接選擇西門(mén)子S7 -200 系列PLC 為編程對(duì)象,而單片機(jī)里沒(méi)有集成PPI協(xié)議,這里就要用單片機(jī)來(lái)仿做一個(gè)PPI 協(xié)議通信的過(guò)程。
前面已經(jīng)介紹過(guò)PPI 協(xié)議的特點(diǎn),就是主設(shè)備發(fā)送查詢(xún)指令,從設(shè)備做出回應(yīng),從設(shè)備不主動(dòng)發(fā)送任何指令。本研究中觸摸屏主動(dòng)發(fā)送指令,單片機(jī)對(duì)觸摸屏每次發(fā)送來(lái)的指令進(jìn)行判斷,如果為正確指令則單片機(jī)做出相應(yīng)的回應(yīng)。當(dāng)觸摸屏得不到單片機(jī)的回應(yīng)時(shí),觸摸屏?xí)粩嗟陌l(fā)送查詢(xún)指令。
單片機(jī)軟件部分設(shè)計(jì)包含2 部分:一部分為通信程序,包括串口通信初始化、數(shù)據(jù)收發(fā)、中斷處理3 個(gè)模塊;另一部分為對(duì)旋轉(zhuǎn)編碼器的數(shù)據(jù)采集程序,包括外部中段初始化、中斷處理。
串口通信程序流程如圖3 所示。初始化模塊完成串口的發(fā)送波特率、數(shù)據(jù)位個(gè)數(shù)等基本參數(shù)設(shè)定,并啟動(dòng)引腳串行通信模式;數(shù)據(jù)收發(fā)對(duì)數(shù)據(jù)完成收發(fā)的操作過(guò)程;中斷過(guò)程完成對(duì)觸摸屏指令的分析,以做出正確的回應(yīng)。
圖3 串行通信流程
讀編碼器的程序流程如圖4 所示。初始化模塊完成對(duì)外部中斷的初始化、中斷觸發(fā)方式的設(shè)定;中斷程序是對(duì)編碼器發(fā)送來(lái)的脈沖信號(hào)做分析,判斷是加還是減,并把響應(yīng)數(shù)據(jù)賦給發(fā)送數(shù)據(jù)變量。
圖4 讀編碼器程序流程
當(dāng)單片機(jī)接收到觸摸屏發(fā)送的數(shù)據(jù)時(shí),單片機(jī)會(huì)進(jìn)入串口終端程序。串口中斷程序接收觸摸屏發(fā)來(lái)的所有數(shù)據(jù),并存入數(shù)組,調(diào)用驗(yàn)證函數(shù)進(jìn)行數(shù)據(jù)驗(yàn)證,看格式是否符合,解析出觸摸屏索要數(shù)據(jù)的類(lèi)型及位置。如果數(shù)據(jù)格式正確就回復(fù)一個(gè)確認(rèn)碼E5H,若不正確就不做任何操作,等待重新接收數(shù)據(jù)。發(fā)送E5H 之后。觸摸屏?xí)祷匾唤M數(shù)據(jù),若為10H 02H 00H 5CH 5EH 16H,則把旋轉(zhuǎn)編碼器的數(shù)值賦給發(fā)送變量,并通過(guò)RS485 發(fā)送給觸摸屏。最終數(shù)據(jù)在觸摸屏上顯示出來(lái)。
在整個(gè)數(shù)據(jù)通信過(guò)程中用上位機(jī)檢測(cè)到的數(shù)據(jù)為:
1)觸摸屏發(fā)送數(shù)據(jù):16H 1BH 1BH 68H 02H 00H 6CH 32H 01H 00H 00H 00H 00H 00H 0EH 00H 00H 04H 01H 12H 0AH 10H 06H 00H 01H 00H 01H 84H 00H 03H 20H 8FH 16H。
2)單片機(jī)發(fā)送數(shù)據(jù):E5H。
3)觸摸屏發(fā)送數(shù)據(jù):10H 02H 00H 5CH 5EH 16H。
4)單片機(jī)發(fā)送數(shù)據(jù):68H 16H 16H 68H 00H 02H 08H 32H 03H 00H 00H 00H 00H 00H 02H 00H 05H 00H 00H 04H 01H FFH 04H 00H 08H 00H 00H 01H 10H 36H 16H。
以上為觸摸屏通過(guò)PPI 協(xié)議讀取一次數(shù)據(jù)的全過(guò)程,其中第4 次發(fā)送的數(shù)據(jù)第25 字節(jié)到第28 字節(jié)為讀取的數(shù)據(jù),高字節(jié)在前25 位,讀得的數(shù)據(jù)為272。
[1]吳興中,朱松林,彭新良.利用單片機(jī)實(shí)現(xiàn)對(duì)云臺(tái)的控制[J].四川兵工學(xué)報(bào),2011(3):71-73.
[2]郝莉,王東興.PROFIBUS 從站與S7-200PLC 的通訊研究[J]. 北京機(jī)械工業(yè)學(xué)院學(xué)報(bào):綜合版,2000(2):45-49.
[3]李冬清.S7-200 系列PLC 與監(jiān)控計(jì)算機(jī)通信實(shí)現(xiàn)方法[J].冶金動(dòng)力,2005(5):91-92.
[4]李紹民,潘登.S7-200PLC 與上位機(jī)的通信[J].大連民族學(xué)院學(xué)報(bào),2009(3):209-211.