80C196MC的外設(shè)事務(wù)服務(wù)器及其應(yīng)用
關(guān)鍵詞:單片機 變頻器 通信
引言
變頻器在工業(yè)現(xiàn)場中應(yīng)用越來越廣泛。為了能實現(xiàn)整個自動化系統(tǒng)的協(xié)調(diào)控制,同時能監(jiān)視多臺變頻器的運行狀況,方便地對單一變頻器或多臺變頻器實行啟停、正反轉(zhuǎn)、升降速、參數(shù)設(shè)置等操作是非常必要的。本文介紹利用變頻器的主控芯片80C196MC內(nèi)的外設(shè)事務(wù)服務(wù)器PTS在變頻器中實現(xiàn)異步串行通信的方法。
1 關(guān)于外設(shè)事務(wù)服務(wù)器PTS
1.1 PTS和普通中斷
90C196MC高性能16位單片機內(nèi)部“嵌入”了各種以往被認為是“外圍設(shè)備”的電路。外設(shè)事務(wù)服務(wù)器PTS(Peripheral Transaction Server)就是一種被嵌入的“外設(shè)”。它是一種微代碼硬件中斷處理器,對中斷可提供一種類似于DMA(直接存儲器訪問)的響應(yīng),其CPU 的開銷比普通中斷系統(tǒng)(基于上是一種軟件中斷服務(wù)系統(tǒng))要少得多。為便于理解PTS的工作過程,圖1示出了PTS和普通中斷流程的主要差別。從圖1可以看出:
①PTS的執(zhí)行是靠CPU硬件微代碼來完成的;而普通中斷是靠中斷正常的程序,由PC入棧、現(xiàn)場保護、用戶服務(wù)程序、恢復(fù)現(xiàn)場與PC出棧來完成。顯然后者對CPU的開支要比前者多得多。
②通常中斷所做的是相同的工作,如不斷的連續(xù)A/D轉(zhuǎn)換、數(shù)據(jù)組的傳遞、通信的多字節(jié)傳遞等。PTS正利用這點,由一個程序啟動PTS,讓之在PTS計數(shù)器單元控制下不中斷正常程序靠硬件微代碼(即類似DMA的插入)來分時完成,在PTS計數(shù)單元完成后轉(zhuǎn)化為一次普通中斷,通過普通中斷進行一系列PTS完成后的結(jié)果處理。
③在80C196MC中,PTS優(yōu)先級總是比普通中斷優(yōu)先級要高,并且有近16個中斷源,對應(yīng)用16位的允許位和響應(yīng)位的字寄存器進行各自控制;同時,PTS和普通中斷是各位相對應(yīng)的,這樣使得PTS完成后轉(zhuǎn)化為一次普通中斷就變得很簡單。
④在80C196MC中,與PTS有關(guān)的控制有:總允許位PSW.10以及各中斷源的選擇位PTSSEL寄存器。其中PSW.10通過EPTS指令置位,允許PTS服務(wù)。與普通中斷有關(guān)的控制有:總允許位PSW.9以及中斷屏蔽寄存器INT-MASK。
1.2 PTS實現(xiàn)串行輸入/輸出模式
80C196MC沒有硬件通用異步收發(fā)器UART,但是利用專門的PTS模式可以方便且低軟件開銷地實現(xiàn)串行輸入和輸出功能。既可實現(xiàn)異步SIO(ASIO)功能,也可實現(xiàn)同步SIO(SSIO)功能。采用16MHz晶振,用PTS完成波特率為9600的半雙工串行輸入輸出時,CPU的的開銷只有4%左右。
PTS SIO模式占用2個控制塊,每個控制塊包含8個8位寄存器,如圖2所示。
這2個控制塊的地址不一定是連續(xù)的,但它們都應(yīng)在寄存器RAM區(qū)內(nèi),控制塊首地址都應(yīng)能被8整除。
2 程序設(shè)計
采用80C196MC異步串行輸入/輸出模式實現(xiàn)變頻器與計算機之間的通信,其初始化程序主要包括P2端口和定時器的初始化以及PTS SIO模式初始化等。
首先將接收端的CAPCOMP1設(shè)置為下降沿捕獲方式。當(dāng)CAPCOMP1捕捉到起始位的前沿后,進入接收中斷服務(wù)子程序,其程序流程如圖3所示。
下面介紹程序中應(yīng)注意的要點:
①接收程序中,采用EPA CAPCOMP1捕獲/比較模塊。它首先利用其捕獲功能造成1次普通中斷,而不是1個PTS周期。在這次啟動中斷中,把CAPCOMP1模塊切換成比較方式,啟動PTS周期。
②10個PTS周期后,將產(chǎn)生1次END of PTS中斷。該中斷與啟動斷共享1個中斷向量,因此,在該中斷服務(wù)程序中必須判斷本次中斷是啟動中斷還是END-of-PTS中斷。區(qū)分的依據(jù)可以是CAPCOMP1 CON.6(CE位):若CE=0,模塊為捕獲方式,表明是啟動中斷;反之,模塊已切換為比較方式,表明是END-of-PTS中斷。
③END-of-PTS中斷服務(wù)中,必須禁止捕獲/比較模塊,并清除相應(yīng)中斷是掛位。為繼續(xù)接收或發(fā)送后續(xù)的數(shù)據(jù)幀,在退出中斷前必須重新設(shè)置捕獲/比較模塊的方式以及PTSCB中的PTSCOUNT-PTSCON1、DATA等寄存器;必須重置PTSSEL的相應(yīng)位,允許相應(yīng)的PTS服務(wù)。
④在發(fā)送任何數(shù)據(jù)前,用于TXD的端口(P2.0)引腳必須初始化為“1”;向TXD腳寫“0”,即上當(dāng)于發(fā)起始位,整個數(shù)據(jù)的傳輸過程就開始了。
3 通信協(xié)議
上位機(計算機)與下位機(變頻器)之間每次通信均是7個字節(jié),每個字節(jié)8位。其通信協(xié)議格式如下所示:
STX | ADDR | CM1 | CM2 | DATA1 | DATA2 | BCC |
報頭 | 地址 | 命令1 | 命令2 | 數(shù)據(jù)1 | 數(shù)據(jù)2 | 異或校驗 |
其中,報頭STX=02H,地址ADDR為下位機(變頻器)的編號,BCC為各幀數(shù)據(jù)異或后的結(jié)果。下面結(jié)合不同的操作分別介紹其它各幀的含義。
3.1 讀數(shù)據(jù)
根據(jù)變頻器參數(shù)的不同使用級別,將其參數(shù)分為F、P、E三級數(shù)據(jù):F組數(shù)據(jù)主要為用戶常用的一級參數(shù),如給定頻率等;P組數(shù)據(jù)為專業(yè)用戶或廠內(nèi)的整定數(shù)據(jù),如閉環(huán)PID參數(shù)等;E組數(shù)據(jù)為顯示及當(dāng)前狀態(tài)的臨時參數(shù)與數(shù)據(jù),如輸出頻率、輸出速度等。
CM1:0FXH(X表示變頻器參數(shù)組號)
F0:讀取F組數(shù)據(jù)
F1:讀取P組數(shù)據(jù)
F2:讀取E組數(shù)據(jù)
CM2:表示參數(shù)在組內(nèi)的代號
DATA1、DATA2:建議寫入00
3.2 寫數(shù)據(jù)
CM1:0EXH(X表示變頻器參數(shù)組號)
CM2:含義同讀數(shù)據(jù)
DATA1:數(shù)據(jù)高位字節(jié)
DATA2:數(shù)據(jù)低位字節(jié)
3.3 讀/寫控制
CM1:0CCH
CM2:控制字節(jié),其格式如下所示:
CON | FEQ | STA | STOP | FORE | BACK | UP | DOWN |
各位含義如表1所列。
表1
CON | 1控制字節(jié)有效 | 0控制字節(jié)無效 |
FEQ | 1頻率值有效 | 0頻率值無效 |
STA | 1啟動 | 0狀態(tài)不變 |
STOP | 12停機 | 0狀態(tài)不變 |
FORE | 1正轉(zhuǎn) | 0狀態(tài)不變 |
BACK | 1反轉(zhuǎn) | 0狀態(tài)不變 |
UP | 1升速 | 0狀態(tài)不變 |
DOWN | 1減速 | 0狀態(tài)不變 |
當(dāng)CON=1且FEQ=1時,DATA1、DAT2中的數(shù)據(jù)為運行狀態(tài)控制的有效頻率值;否則,數(shù)據(jù)無效。
3.4 應(yīng)答
下位機(如變頻器)接收到上位機(即PC機)的完整的7個字節(jié)數(shù)據(jù)后,除上位機廣播通信外均應(yīng)作出應(yīng)答。如果異或校驗無誤,其應(yīng)答格式同接收到的數(shù)據(jù)格式,只是DATA1、DATA2兩位為上位機要訪問參數(shù)碼的當(dāng)前值;若異或校驗有誤,則發(fā)回出錯幀:
STR ADDR 0DH 0DH 0FFH 0FFH BCC。
4 小結(jié)
變頻器通過采用80C196MC中的PTS SIO與計算機通信后,可在計算機上實現(xiàn)對變頻器的狀態(tài)顯示、參數(shù)修改、在線操作以及優(yōu)化控制等遠程控制功能。這樣,現(xiàn)場的操作在控制室就可以完成了,可以最大限度地減輕操作人員的負擔(dān),改善工作環(huán)境,提高企業(yè)的自動化水平。同時由于采用PTS方案,大大減少了CPU的開銷。