<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于80C166單片機PEC服務(wù)的PROFIBUS-FDL從站協(xié)議實(shí)現

基于80C166單片機PEC服務(wù)的PROFIBUS-FDL從站協(xié)議實(shí)現

作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:在詳細分析西門(mén)子80C166PEC服務(wù)工作機制和PROFIBUS-FDL幀格式的基礎上,提出了基于該種PEC服務(wù)機制的PROFIBUS-FDL從站協(xié)議的實(shí)現方法,并在實(shí)際工作中得到成功應用。關(guān)鍵詞:80C166 PEC服務(wù) PROFIBUS-FDL 當前工業(yè)設備制造技術(shù)正向高性能、專(zhuān)用化、分布式、網(wǎng)絡(luò )化方向發(fā)展。以前,大量使用PLC實(shí)現的控制系統,實(shí)踐證明雖然安全可靠,但由于PLC本身的技術(shù)原因,很難達到更快速的實(shí)時(shí)控制要求它們正被高性能的嵌入式專(zhuān)用控制器替代。這種專(zhuān)用控制器的設計,可以進(jìn)一步提高設備的控制性能;引入現場(chǎng)總線(xiàn)技術(shù),保證專(zhuān)用控制器的系統可集成性,以適應當前分布式、網(wǎng)絡(luò )化的應用趨勢。 本文是在研制棒材生產(chǎn)線(xiàn)飛剪的專(zhuān)用控制器時(shí)涉及的一個(gè)子課題。為保證該控制器能與現有PLC網(wǎng)連接以及與遠程操作站通信,在幾乎不增加硬件的基礎上,利用核心CPU——西門(mén)子80C166所具有的一個(gè)類(lèi)似DMA的功能高效率地實(shí)現PROFIBUS-FDL從站協(xié)議。 1 西門(mén)子80C166 80C166單片機是西門(mén)子C166系列16位嵌入式微控制器的第一代產(chǎn)品。其體系結構如圖1所示。它結合RISC處理器的優(yōu)點(diǎn),克服了CISC處理器在嵌入式應用中的瓶頸;在25MHz時(shí)鐘頻率下,可達到12.5MIPS,幾乎所有的指令執行時(shí)間小于80ns;在指令處理上,采用四級指令流水線(xiàn)管道結構;在存儲管理上,統一線(xiàn)性地址空間可達256KB,具有段代碼、頁(yè)數據式管理機制;采用寄存器池,上下文切換時(shí)間只要80ns;16位乘法400ns,32位除法800ns,中斷響應時(shí)間最慢400ns;外部事件控制器PEC服務(wù)具有類(lèi)似DMA的功能,可實(shí)現存儲器與外設之間的高速數據傳輸;豐富的在片外設:1KB RAM、10路A/D、76路I/O、7個(gè)定時(shí)器/計數器、16個(gè)比較/捕獲單元、2個(gè)串行通信接口、在片的WATCHDOG等。圖1 西門(mén)子80C166體系結構2 80C166的PEC服務(wù) 2.1 80C166的PEC服務(wù)機制 PEC是外部事件控制器的英文縮寫(xiě)。PEC服務(wù)是80C166提供的一種特殊數據傳輸機制。其目的是在原有的中斷控制器基礎上,用較小的硬件代價(jià)、盡可能少占用處理機周期實(shí)現內存與外部設備的快速數據交換類(lèi)似DMA,但無(wú)需專(zhuān)用的DMA控制器。80C166有8路PEC服務(wù)通道。用PEC服務(wù)進(jìn)行一次數據傳輸,僅占用處理機一個(gè)機器周期20MHz時(shí)100ns,且不影響當前程序的執行。 2.2 PEC服務(wù)的工作過(guò)程 通常,當普通中斷事件發(fā)生時(shí),系統將保存當前CPU狀態(tài)PSW和程序的地址;然后,根據不同的中斷源,進(jìn)行上下文切換,裝載相應的中斷矢量,執行相應的中斷服務(wù)程序;執行完后,恢復被中斷程序的上下文,繼續執行被中斷程序。 對于某一PEC服務(wù),它總是與一具體中斷源、中斷矢量或中斷服務(wù)相聯(lián)系。在80C166中,當一個(gè)中斷的中斷優(yōu)先級為最高級14或15且定義了與之相關(guān)聯(lián)的PEC服務(wù)通道時(shí),該中斷就具有PEC服務(wù)功能。這時(shí),當該中斷請求發(fā)生時(shí),將不觸發(fā)中斷服務(wù)程序的執行,而是觸發(fā)PEC服務(wù)。當PEC服務(wù)經(jīng)過(guò)設定的若干次的外部事件觸發(fā)后,再觸發(fā)執行相應的中斷服務(wù)程序(一個(gè)普通中斷過(guò)程)。如圖2所示。一次PEC服務(wù)的工作過(guò)程是由PEC控制寄存器定義的,其中計數位域(8位傳送計數器)COUNT定義了PEC服務(wù)的數據傳輸次數;源指針、目的指針指明具體的數據傳輸來(lái)源和目的;PEC服務(wù)的數據傳輸過(guò)程完全由硬件執行:當中斷請求發(fā)生時(shí),由硬件將源指針所指單元的內容傳給目的指針所指的單元,然后由PEC控制寄存器相應定義位控制是源指針還是目的指針增加1或2,同時(shí)COUNT值減1;當多次中斷請求使COUNT減為0時(shí),PEC服務(wù)完成,觸發(fā)與之關(guān)聯(lián)的中斷服務(wù)程序。 2.3 PEC服務(wù)應用優(yōu)勢 以串口接收一幀16字節的數據為例。若采用傳統的串口接收方式,每接收到一字節,產(chǎn)生一個(gè)中斷;在中斷服務(wù)程序中,要將它從串口接收緩沖器中取出,順序放到幀接收緩沖區相應單元中;當接收滿(mǎn)16字節后,進(jìn)行幀處理。 如果采用PEC服務(wù)的方式,只要事先定義好PEC通道就可以了。首先,定義串口接收中斷優(yōu)先級為14或15以及與之相關(guān)聯(lián)的PEC通道。即定義相應PEC通道控制寄存器為:COUNT為16字節傳輸,源指針為串口接收緩沖器,目的指針為幀接收緩沖區首址且每次傳輸完成后,目的指針加1。這樣,串口每接收到一字節,將觸發(fā)一次PEC服務(wù),由硬件將數據從串口接收緩沖器中取出,順序放到幀接收緩沖區相應單元中,但當前執行的程序并不被中斷;當16字節完全接收完成后,觸發(fā)串口接收中斷服務(wù)程序,進(jìn)行幀的處理。 與傳統的串口接收方式相比較,PEC服務(wù)方式在進(jìn)行數據傳輸時(shí)不中斷當前程序的執行,因此節省了大量的上下文切換時(shí)間,處理機效率得到大大提高。 下面討論采用80C166的PEC服務(wù)實(shí)現PROFIBUS-FDL從站協(xié)議的方法。 3 PROFIBUS-FDL幀結構分析 3.1 PROFIBUS-FDL幀結構 PROFIBUS幀的格式有多種形式,但對于從站來(lái)說(shuō),只要處理三種幀即可。 .無(wú)數據且長(cháng)度固定的幀: .帶數據域且長(cháng)度固定的幀: . 帶數據域且長(cháng)度可變的幀: 其中,各字段說(shuō)明如下: SD1:無(wú)數據幀的開(kāi)始定界符,#10H; SD2:可變長(cháng)度幀的開(kāi)始定界符,#68H; SD3:固定長(cháng)度幀的開(kāi)始定界符,#A2H; ED:結束定界符,#16H; LE與LEr:LE與LEr相同,都表示長(cháng)度占一個(gè)字節,它是DA+SA+FC+DATA-UNIT的字節數總和; DA與SA:DA目的站地址與SA源站地址各占一個(gè)字節; FCS:校驗段,占一個(gè)字節,它采用不計進(jìn)位的求和運算得到校驗碼。校驗域為DA+SA+FC+DATA-UNIT; FC:幀控制字字段,占一個(gè)字節; SYN:同步字段,至少33空閑位(邏輯電平1),但僅在請求幀及令牌幀前出現,不允許在字符之間出現。 3.2 PROFIBUS幀結構的特點(diǎn) 從上面的幀格式可以看出幀的長(cháng)度不固定。發(fā)送時(shí),幀的長(cháng)度是已知的;但接收時(shí),幀的長(cháng)度是未知的。因此,要提高接收效率,只能采用分段方式接收,隨時(shí)解析和保存關(guān)鍵信息,并確定隨后接收的字節數。4 PROFIBUS-FDL從站協(xié)議的PEC服務(wù)實(shí)現 PROFIBUS-FDL從站的數據接收及應答過(guò)程分三個(gè)階段完成:第一階段,幀的完整接收;第二階段,根據接收到的FC幀控制字字段,判斷主站正在進(jìn)行怎樣的數據請求;第三階段,從站組織應答幀,啟動(dòng)幀的發(fā)送過(guò)程。 第二階段的幀控制字處理請參考PROFIBUS標準的相關(guān)內容。對于第三階段的組織和發(fā)送應答幀,由于數據長(cháng)度和內容已知,只要定義好串口發(fā)送中斷/服務(wù),定義好相應的PEC通道:源地址為發(fā)送數據緩沖區首址+1、目的地址為串口發(fā)送緩沖器、COUNT域為發(fā)送字節數-1,將所要發(fā)送數據的第一個(gè)字節寫(xiě)入串口發(fā)送緩沖器,即可觸發(fā)串口發(fā)送相關(guān)的PEC服務(wù);當COUNT減為0時(shí),觸發(fā)串口發(fā)送中斷服務(wù)子程序,完成串口數據發(fā)送過(guò)程。由于該過(guò)程實(shí)現簡(jiǎn)單,不作詳細討論。這里主要討論第一階段的幀完整接收實(shí)現過(guò)程。 從上面的幀結構分析可見(jiàn),幀的長(cháng)度是不固定的。因此,為提高接收效率,應用PEC服務(wù)分三步進(jìn)行數據的批量接收。 4.1 第一步:幀頭接收 首先,初始化時(shí),定義串口接收PEC服務(wù)為連續接收三字節,用于接收幀的前三字節。 由第一個(gè)字符SDx(x=1,2,3)判斷幀類(lèi)型;對于不帶數據固定長(cháng)度幀和帶數據固定長(cháng)度幀接下來(lái)的兩個(gè)字符是DA、SA,判斷DA是否為本機地址;而對于帶數據長(cháng)度可變幀,接下來(lái)的兩個(gè)字符是LE、LEr,判斷其是否相等。 若以上判斷都成立,則需定義下一次PEC服務(wù)的接收字符數:對于固定長(cháng)度幀,定義PEC批量接收三字節數據,并保存DA、SA;對于可變長(cháng)度幀,定義PEC服務(wù)接收四字節數據,轉第二步; 若LE≠LEr或DA目的地址非本站地址,則重回到初始狀態(tài),進(jìn)行幀頭接收。 4.2 第二步:幀控制字接收 由于主站幀的連續發(fā)送,會(huì )再次觸發(fā)PEC服務(wù)。由串口接收PEC服務(wù)連續接收三或四字節后,處理如下: .不帶數據固定長(cháng)度幀,接收三字節,分別為FC、FCS、ED。對FCS和ED分別完成累加和校驗與幀結束判斷后,將幀控制字FC保存,轉去執行幀控制字處理。 .帶數據固定長(cháng)度幀 接收三字節分別為FC和數據單元的前兩個(gè)字節,保存FC,定義PEC服務(wù)接收后八個(gè)數據字節,轉第三步。 .帶數據可變長(cháng)度幀,接收了四字節,分別為SD、DA、SA、FC。對SD再進(jìn)行一次判斷,之后判斷DA是否為本機地址,保存DA、SA、FC,定義PEC服務(wù)接收余下的數據字節長(cháng)度由LE確定,轉第三步。 4.3 第三步:幀數據接收 當串口接收PEC服務(wù)連續接收八或更多的字節后,處理如下: .帶數據固定長(cháng)度幀,接收八個(gè)字節,分別為余下的六字節數據和FCS、ED。在累加和校驗與幀結束判斷完畢后,轉去執行幀控制字處理。 .帶數據長(cháng)度可變幀,接收了DATA-UNIT+2個(gè)字節,分別DATA-UNIT個(gè)數據字節和FCS、ED。在累加和校驗與幀結束判斷完畢后,進(jìn)行協(xié)議要求的目的地址和原地址的地址擴展判斷和保存,轉去執行幀控制字處理。 4.4 串口接收中斷服務(wù)子程序 以上三步都由串口接收中斷服務(wù)子程序負責完成。每一步對應不同的處理狀態(tài)。為提高程序的執行效率,用有限狀態(tài)機實(shí)現。以1、2、3分別表示上述幀接收三個(gè)步驟,4表示幀控制字處理狀態(tài),其狀態(tài)轉換如圖3。 采用這種協(xié)議實(shí)現方法,在最近研制的棒材生產(chǎn)線(xiàn)的飛剪控制器中運行效果良好。

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>