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