《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 基于80C166單片機PEC服務的PROFIBUS-FDL從站協議實現

基于80C166單片機PEC服務的PROFIBUS-FDL從站協議實現

2008-08-18
作者:莊 斌, 王東興

  摘? 要: 在詳細分析西門子80C166單片機PEC服務工作機制和PROFIBUS-FDL幀格式的基礎上,提出了基于該種單片機PEC服務機制的PROFIBUS-FDL從站協議的實現方法,并在實際工作中得到成功應用。

  關鍵詞: 80C166? PEC服務? PROFIBUS-FDL

?

  當前工業設備制造技術正向高性能、專用化、分布式、網絡化方向發展。以前,大量使用PLC實現的控制系統,實踐證明雖然安全可靠,但由于PLC本身的技術原因,很難達到更快速的實時控制要求,它們正被高性能的嵌入式專用控制器替代。這種專用控制器的設計,可以進一步提高設備的控制性能;引入現場總線技術,保證專用控制器的系統可集成性,以適應當前分布式、網絡化的應用趨勢。

??? 本文是在研制棒材生產線飛剪的專用控制器時涉及的一個子課題。為保證該控制器能與現有PLC網連接以及與遠程操作站通信,在幾乎不增加硬件的基礎上,利用核心CPU——西門子80C166所具有的一個類似DMA的功能高效率地實現PROFIBUS-FDL從站協議。

1 西門子80C166單片機

  80C166單片機是西門子C166系列16位嵌入式微控制器的第一代產品。其體系結構如圖1所示。它結合RISC處理器的優點,克服了CISC處理器在嵌入式應用中的瓶頸;在25MHz時鐘頻率下,可達到12.5MIPS,幾乎所有的指令執行時間小于80ns;在指令處理上,采用四級指令流水線管道結構;在存儲管理上,統一線性地址空間可達256KB,具有段(代碼)、頁(數據)式管理機制;采用寄存器池,上下文切換時間只要80ns;16位乘法400ns,32位除法800ns,中斷響應時間最慢400ns;外部事件控制器PEC服務具有類似DMA的功能,可實現存儲器與外設之間的高速數據傳輸;豐富的在片外設:1KB RAM、10路A/D、76路I/O、7個定時器/計數器、16個比較/捕獲單元、2個串行通信接口、在片的WATCHDOG等。

?

2 80C166的PEC服務

2.1 80C166的PEC服務機制

  PEC是外部事件控制器的英文縮寫。PEC服務是80C166提供的一種特殊數據傳輸機制。其目的是在原有的中斷控制器基礎上,用較小的硬件代價、盡可能少占用處理機周期實現內存與外部設備的快速數據交換(類似DMA,但無需專用的DMA控制器)。80C166有8路PEC服務通道。用PEC服務進行一次數據傳輸,僅占用處理機一個機器周期(20MHz時100ns),且不影響當前程序的執行。

2.2 PEC服務的工作過程

  通常,當普通中斷事件發生時,系統將保存當前CPU狀態PSW和程序的地址;然后,根據不同的中斷源,進行上下文切換,裝載相應的中斷矢量,執行相應的中斷服務程序" title="中斷服務程序">中斷服務程序;執行完后,恢復被中斷程序的上下文,繼續執行被中斷程序。

對于某一PEC服務,它總是與一具體中斷源、中斷矢量或中斷服務相聯系。在80C166中,當一個中斷的中斷優先級為最高級14或15且定義了與之相關聯的PEC服務通道時,該中斷就具有PEC服務功能。這時,當該中斷請求發生時,將不觸發中斷服務程序的執行,而是觸發PEC服務。當PEC服務經過設定的若干次的外部事件觸發后,再觸發執行相應的中斷服務程序(一個普通中斷過程)。

  如圖2所示。一次PEC服務的工作過程是由PEC控制寄存器" title="控制寄存器">控制寄存器定義的,其中計數位域(8位傳送計數器)COUNT定義了PEC服務的數據傳輸次數;源指針、目的指針指明具體的數據傳輸來源和目的;PEC服務的數據傳輸過程完全由硬件執行:當中斷請求發生時,由硬件將源指針所指單元的內容傳給目的指針所指的單元,然后由PEC控制寄存器相應定義位控制是源指針還是目的指針增加1或2,同時COUNT值減1;當多次中斷請求使COUNT減為0時,PEC服務完成,觸發與之關聯的中斷服務程序。

?

2.3 PEC服務應用優勢

  以串口" title="串口">串口接收一幀16字節的數據為例。若采用傳統的串口接收方式,每接收到一字節,產生一個中斷;在中斷服務程序中,要將它從串口接收緩沖器中取出,順序放到幀接收緩沖區相應單元中;當接收滿16字節后,進行幀處理。

  如果采用PEC服務的方式,只要事先定義好PEC通道就可以了。首先,定義串口接收中斷優先級為14或15以及與之相關聯的PEC通道。即定義相應PEC通道控制寄存器為:COUNT為16字節傳輸,源指針為串口接收緩沖器,目的指針為幀接收緩沖區首址且每次傳輸完成后,目的指針加1。這樣,串口每接收到一字節,將觸發一次PEC服務,由硬件將數據從串口接收緩沖器中取出,順序放到幀接收緩沖區相應單元中,但當前執行的程序并不被中斷;當16字節完全接收完成后,觸發串口接收中斷服務程序,進行幀的處理。

  與傳統的串口接收方式相比較,PEC服務方式在進行數據傳輸時不中斷當前程序的執行,因此節省了大量的上下文切換時間,處理機效率得到大大提高。

  下面討論采用80C166的PEC服務實現PROFIBUS-FDL從站協議的方法。

3 PROFIBUS-FDL幀結構" title="幀結構">幀結構分析

3.1 PROFIBUS-FDL幀結構

  PROFIBUS幀的格式有多種形式,但對于從站來說,只要處理三種幀即可。

    

  其中,各字段說明如下:

  SD1:無數據幀的開始定界符,#10H;

  SD2:可變長度幀的開始定界符,#68H;

  SD3:固定長度幀的開始定界符,#A2H;

  ED:結束定界符,#16H;

  LE與LEr:LE與LEr相同,都表示長度占一個字節,它是DA+SA+FC+(DATA-UNIT)的字節數總和;

  DA與SA:DA(目的站地址)與SA(源站地址)各占一個字節;

  FCS:校驗段,占一個字節,它采用不計進位的求和運算得到校驗碼。校驗域為DA+SA+FC+(DATA-UNIT);

  FC:幀控制字" title="控制字">控制字字段,占一個字節;

  SYN:同步字段,至少33空閑位(邏輯電平1),但僅在請求幀及令牌幀前出現,不允許在字符之間出現。

3.2 PROFIBUS幀結構的特點

  從上面的幀格式可以看出幀的長度不固定。發送時,幀的長度是已知的;但接收時,幀的長度是未知的。因此,要提高接收效率,只能采用分段方式接收,隨時解析和保存關鍵信息,并確定隨后接收的字節數。

4 PROFIBUS-FDL從站協議的PEC服務實現

  PROFIBUS-FDL從站的數據接收及應答過程分三個階段完成:第一階段,幀的完整接收;第二階段,根據接收到的FC幀控制字字段,判斷主站正在進行怎樣的數據請求;第三階段,從站組織應答幀,啟動幀的發送過程。

  第二階段的幀控制字處理請參考PROFIBUS標準的相關內容。對于第三階段的組織和發送應答幀,由于數據長度和內容已知,只要定義好串口發送中斷/服務,定義好相應的PEC通道:源地址為發送數據緩沖區首址+1、目的地址為串口發送緩沖器、COUNT域為發送字節數-1,將所要發送數據的第一個字節寫入串口發送緩沖器,即可觸發串口發送相關的PEC服務;當COUNT減為0時,觸發串口發送中斷服務子程序,完成串口數據發送過程。由于該過程實現簡單,不作詳細討論。這里主要討論第一階段的幀完整接收實現過程。

  從上面的幀結構分析可見,幀的長度是不固定的。因此,為提高接收效率,應用PEC服務分三步進行數據的批量接收。

4.1 第一步:幀頭接收

  首先,初始化時,定義串口接收PEC服務為連續接收三字節,用于接收幀的前三字節。

  由第一個字符SDx(x=1,2,3)判斷幀類型;對于不帶數據固定長度幀和帶數據固定長度幀接下來的兩個字符是DA、SA,判斷DA是否為本機地址;而對于帶數據長度可變幀,接下來的兩個字符是LE、LEr,判斷其是否相等。

若以上判斷都成立,則需定義下一次PEC服務的接收字符數:對于固定長度幀,定義PEC批量接收三字節數據,并保存DA、SA;對于可變長度幀,定義PEC服務接收四字節數據,轉第二步;

若LE≠LEr或DA目的地址非本站地址,則重回到初始狀態,進行幀頭接收。

4.2 第二步:幀控制字接收

  由于主站幀的連續發送,會再次觸發PEC服務。由串口接收PEC服務連續接收三或四字節后,處理如下:

  .不帶數據固定長度幀,接收三字節,分別為FC、FCS、ED。對FCS和ED分別完成累加和校驗與幀結束判斷后,將幀控制字FC保存,轉去執行幀控制字處理。

  .帶數據固定長度幀, 接收三字節,分別為FC和數據單元的前兩個字節,保存FC,定義PEC服務接收后八個數據字節,轉第三步。

  .帶數據可變長度幀,接收了四字節,分別為SD、DA、SA、FC。對SD再進行一次判斷,之后判斷DA是否為本機地址,保存DA、SA、FC,定義PEC服務接收余下的數據字節(長度由LE確定),轉第三步。

4.3 第三步:幀數據接收

當串口接收PEC服務連續接收八或更多的字節后,處理如下:

  .帶數據固定長度幀,接收八個字節,分別為余下的六字節數據和FCS、ED。在累加和校驗與幀結束判斷完畢后,轉去執行幀控制字處理。

  .帶數據長度可變幀,接收了DATA-UNIT+2個字節,分別DATA-UNIT個數據字節和FCS、ED。在累加和校驗與幀結束判斷完畢后,進行協議要求的目的地址和原地址的地址擴展判斷和保存,轉去執行幀控制字處理。

4.4 串口接收中斷服務子程序

  以上三步都由串口接收中斷服務子程序負責完成。每一步對應不同的處理狀態。為提高程序的執行效率,用有限狀態機實現。以1、2、3分別表示上述幀接收三個步驟,4表示幀控制字處理狀態,其狀態轉換如圖3。

?

  采用這種協議實現方法,在最近研制的棒材生產線的飛剪控制器中運行效果良好。

?

參考文獻

1 程 軍.億恒(西門子)C166系列-16位單片機原理與開發.北京:北京航空航天大學出版社,2001

2 復旦大學計算機科學系.億恒科技(Infineon Technologies)選編-億恒科技單片機應用指南. 上海:復旦大學出版社,

? 2000

3 SIEMENS.Microcomputer Components SAB 80C166/83C166 User's Manual. 1997

4 Germany.PROFIBUS STANDARD DIN 19245 Part 1. 1991
本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产日皮 | 怡红院视频网 | 午夜看一级特黄a大片 | a级毛片免费观看在线播放 a级毛片免费完整视频 | 一级黄色片免费观看 | 人人干人人草 | sao虎视频在线精品永久 | 国产精品亚洲精品日韩动图 | 久久天堂夜夜一本婷婷麻豆 | 美女网站在线观看视频18 | 欧美日韩第一区 | 亚洲国产精品一区二区久 | 中文亚洲动漫精品 | 18亚洲男同志videos网站 | 日韩色影院 | 亚洲永久精品一区二区三区 | 日韩成人午夜 | 成人高清在线观看 | 香蕉草草久在视频在线播放 | 国产成人免费高清在线观看 | 欧美日韩一级视频 | 久久免费毛片 | 色黄啪啪网18以下勿进动画 | 青草草视频在线观看 | 国产色啪午夜免费视频 | 日本爽爽爽爽爽爽在线观看免 | 亚洲黄网在线播放高清 | 国产精品一区二区久久精品 | 国产精品一区二区久久精品 | 亚洲国产欧美日韩第一香蕉 | 欧美很很干 | 久久亚洲国产成人影院 | 午夜国产在线观看 | 色多多污网站 | 欧美不卡一区二区三区免 | 香蕉视频好色先生 | 好色视频 | 亚洲香蕉 | 久久天堂夜夜一本婷婷麻豆 | 性中国xxx | 日本v片免费一区二区三区 日本www色视频 |