<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > Linux2.6下自主設計的PROFIBUS-DP單主站的實時性研究

          Linux2.6下自主設計的PROFIBUS-DP單主站的實時性研究

          作者: 時間:2011-09-21 來源:網(wǎng)絡 收藏

          在目前的工業(yè)現(xiàn)場總線中,對實時性的要求越來越高,實時性指標也成為工廠選擇總線時的一個重要因素。PROFIBUS-DP現(xiàn)場總線作為目前國際上的一種通用現(xiàn)場總線標準,隨著生產(chǎn)工藝對控制要求的提高,控制系統(tǒng)的實時性能要求也越來越高。
          為了提高PROFIBUS-DP總線的實時性,本文在嚴格按照協(xié)議完成自主設計的PROFIBUS-DP單主站情況下,探討使用Linux操作系統(tǒng)提高PROFIBUS-DP總線實時性的方案,以及在單主站情況下提高PROFIBUS-DP總線實時性的可行性。
          1 PROFIBUS-DP實時性分析
          實時性能主要體現(xiàn)在MAC層協(xié)議上,不同的總線采用不同的MAC子層協(xié)議,PROFIBUS-DP采用的是簡化令牌總線協(xié)議。同時,測控周期是衡量PROFIBUS-DP系統(tǒng)實時性能的主要指標。
          1.1 PROFIBUS-DP的MAC層協(xié)議
          PROFIBUS-DP采用簡化總線令牌總線協(xié)議作為MAC層標準,其總線設備包括主站(1類主站和2類主站)和從站,系統(tǒng)組成如圖1所示。

          對總線上的每一個站點分配一個地址,主站地址組成一個邏輯環(huán),持有令牌的主站可以在持有令牌期間輪詢訪問從站。
          PROFIBUS-DP的介質(zhì)訪問控制協(xié)議(MAC)包括主站之間通過占有令牌取得總線的占有權(quán)的主主通信和主站與從站之間的主從通信兩部分。本文考慮的是一個單主站系統(tǒng),所以只探討主從通信部分的實時性。
          1.2 測控周期
          測控周期是指控制系統(tǒng)周期性訪問網(wǎng)絡上同一節(jié)點的時間間隔,記為Dcycle,它是衡量PROFIBUS-DP系統(tǒng)實時性的一個重要指標。它主要由周期性數(shù)據(jù)交換時間Tcycle、主站維護時間TGAP和非周期性數(shù)據(jù)交換時間Tacycle(包括參數(shù)配置、從站數(shù)據(jù)診斷、通信接口配置等)三部分組成。
          所以,當主站第一次上電,第一次與從站進行通信時,單主站的測控周期可表示為:

          其中N表示系統(tǒng)中的從站個數(shù)。
          1.2.1 周期性數(shù)據(jù)交換時間Tcycle
          一次典型的數(shù)據(jù)交換過程如圖2所示。

          其中,Tbit表示在總線上傳輸1位所耗用的時間,是其他時間參數(shù)的計量單位。由于PROFIBUS-DP采用UART編碼方式,每個字符由11位組成,所以傳輸一個字符需要11Tbit。
          從圖2可知,一個報文循環(huán)由主動幀(請求或發(fā)送/請求幀)和回答幀組成。循環(huán)時間由幀傳輸時間、傳輸延遲時間和站延遲時間組成。所以:

          1.2.2 主站維護時間TGAP
          當總線上同時存在多個從站時,主站需要與總線上的每個從站進行數(shù)據(jù)交換。對于單主站系統(tǒng),該主站將一直持有令牌。所以,當主站處理完與一個從站的周期信息后,就會發(fā)出Request_FDL_Status去查詢GAP中的一個地址,更新NS值,查找是否有其他從站已經(jīng)在總線上等待與主站通信。
          由于PROFIBUS-DP主站是按地址遞增順序查找從站,并且Request_FDL_Status采用的是以SD1為起始符的報文幀,實際上,從站隨時都監(jiān)聽著總線上的數(shù)據(jù),所以當報文幀中從站地址與自身地址相同后,從站就會傳遞應答幀給主站。
          在實際應用中,總線上的從站地址一般都按順序排列(如從站5、從站6、從站7),很少出現(xiàn)跳躍,通常為:

          2 下PROFIBUS-DP的實時性分析
          由于是自主設計的PROFIBUS-DP主站(未采用協(xié)議芯片),所以Tsdr和TID1這兩個參數(shù)完全由程序決定。如果能縮短這兩個時間參數(shù),則對PROFIBUS-DP的實時性能的提高有很大的意義。
          2.1 的實時性分析
          內(nèi)核相對以前的Linux內(nèi)核在實時性方面有了很大的增強,包括O(1)調(diào)度器、可搶占式內(nèi)核、改進的線程模型以及對新的NPTL(Native Posix Threading Library)的支持。
          2.1.1 可搶占式內(nèi)核
          在2.6版的內(nèi)核中,引入了內(nèi)核的可搶占性,只要調(diào)度是安全的,內(nèi)核就可以在任何時間搶占正在執(zhí)行的任務。也就是說,只要沒有持有鎖,內(nèi)核就可以進行搶占。鎖是非搶占區(qū)域的標志,由于內(nèi)核支持SMP,所以,如果沒有持有鎖,則正在執(zhí)行的代碼就是可重入的,也就可以搶占。
          2.1.2 定時器
          時鐘粒度是否粗糙是制約實時性的一個重要方面。Linux2.6已將終端頻率改為1 000 Hz,即時鐘粒度為1 ms。
          2.1.3 虛擬內(nèi)存
          Linux2.6內(nèi)核雖然支持虛擬內(nèi)存,但是虛擬內(nèi)存的使用將會帶來系統(tǒng)響應時間的不確定性,所以在移植Linux內(nèi)核時,應盡可能去掉虛擬內(nèi)存虛擬內(nèi)存機制,盡量保證應用程序直接訪問物理內(nèi)存。
          2.1.4 調(diào)度策略
          Linux2.6中不但支持基于優(yōu)先級的調(diào)度策略,還支持基于比例共享的調(diào)度策略。同時,Linux2.6內(nèi)核進程調(diào)度算法的復雜度為O(1),這對于進程的切換效率有了很大的提高。

          2.2 Linux2.6下PROFIBUS-DP單主站的軟件設計
          PROFIBUS-DP單主站的主從通信設計圖如圖3所示。

          從“從站通信調(diào)度模塊”開始,該模塊根據(jù)上位機發(fā)送過來的詢問從站在線命令幀對相應的從站數(shù)據(jù)結(jié)構(gòu)進行初始化,然后調(diào)用“從站是否運行模塊”,判斷從站是否在線;如果在線,就進入“從站通信管理模塊”。在該模塊中,由于已經(jīng)將Linux移植到了該硬件平臺上,所以通過fork()函數(shù),建立一個進程,單獨處理與特定從站之間的通信;如果有多個從站都進入運行狀態(tài),則建立多個進程,分享CPU,按一定的調(diào)度策略處理與主站及從站之間的通信。接著,按照PROFIBUS-DP協(xié)議的規(guī)范,調(diào)用相應的“請求幀模塊”,發(fā)送命令幀給從站設備;從站在接收到請求幀后,會在規(guī)定的時間內(nèi)發(fā)送回應幀響應主站,同時,主站在特定的時間內(nèi)會調(diào)用“接收請求幀模塊”,處理接收到的響應幀。
          在軟件設計中,采用了一個單獨的數(shù)據(jù)結(jié)構(gòu)記錄PROFIBUS-DP主站的狀態(tài),其數(shù)據(jù)結(jié)構(gòu)如下:
          typedef struct host_info{
          u8 host_addr;
          u8 host_mechanism_flag;
          u16 Cycle_Interval;
          struct host_fc FC;
          u32 baud_rate;
          u8 baud_index;
          }*pHOST;
          另外,軟件設計中,對于從站也設計了單獨的數(shù)據(jù)結(jié)構(gòu)維護其狀態(tài)。從站的數(shù)據(jù)結(jié)構(gòu)如下:
          typedef struct slave_info{
          u8 global_status;
          u8 address;
          u8 baud_support;
          u8 configuration_flag;
          ……
          }*pSlave;
          同時,由于有了特定數(shù)據(jù)結(jié)構(gòu)的維護,在主從數(shù)據(jù)的交換過程中,采用了一次性內(nèi)存拷貝技術(shù)(即當讀取到DP從站的輸入數(shù)據(jù)后,直接將對應數(shù)據(jù)填充到輸出幀對應的位置),將大大縮短程序查找內(nèi)存的時間,加快響應速度。
          另外,本軟件設計還采用了單緩沖技術(shù)。所謂單緩沖區(qū)是指不考慮通信中待轉(zhuǎn)換的數(shù)據(jù)而只保留當前最新的一幀。這樣緩沖區(qū)中隨時都只有一幀有效數(shù)據(jù),從而提高整個系統(tǒng)的實時性。
          2.3 Linux操作系統(tǒng)下PROFIBUS-DP實時性的改善
          與無操作系統(tǒng)、由安全使用協(xié)議完成的PROFIBUS-DP單主站相比,使用Linux2.6操作系統(tǒng)后,實時性的改善主要體現(xiàn)在以下幾個方面。
          2.3.1 站延遲時間Tsdr
          站延遲時間是指接收方從接到請求到產(chǎn)生響應數(shù)據(jù)的時間間隔。在本設計中,由于移植的Linux操作系統(tǒng)已經(jīng)去掉了對虛擬內(nèi)存的支持,所有數(shù)據(jù)都直接存放到物理內(nèi)存中,同時使用了一次性內(nèi)存拷貝技術(shù),因此加快了數(shù)據(jù)交換的速度。
          2.3.2 從站之間的相互切換
          在未使用Linux操作系統(tǒng)設計的PROFIBUS-DP單主站中,如果總線上存在多個從站,PROFIBUS0-DP與從站的通信完全由程序的邏輯來保證,這無疑會加大編程人員的難度,如果稍有不慎,可能會導致通信出現(xiàn)混亂,從而出現(xiàn)錯誤。
          使用了Linux操作系統(tǒng)后,PROFIBUS-DP主站與各個從站的通信分別由對應的進程處理,總線中有多少個從站,程序中就會有多少個進程。這樣,對各個從站的管理就變成對各個進程的管理,只要選擇合適的調(diào)度策略,則對各個從站的管理就不會出現(xiàn)混亂。同時,Linux2.6內(nèi)核中由于調(diào)度復雜度為O(1),所以進程切換時間大大縮短,這對提高系統(tǒng)的實時性也有很大好處。
          2.3.3 從站響應時間
          從站響應時間是指當有新的從站掛到總線上時,PROFIBUS-DP單主站識別該從站的時間。在一般的系統(tǒng)中,PROFIBUS-DP主站通過輪詢識別從站,而在本設計中,當有新的從站掛到總線上時,會通過一個中斷信號告訴該主站,從而與該從站優(yōu)先通信。此設計是為了使系統(tǒng)更具智能性,這是標準PROFIBUS-DP協(xié)議中沒有的。
          3 主站平臺實時性能測試
          PROFIBUS-DP主站的主從通信的實時性能主要通過測控周期來判斷。搭建測試平臺由一臺PC機(主要用作上位機,向主站下載GSD文件)、自己設計的嵌入式主站平臺(選用的是S3C2410芯片)和3個PROFIBUS-DP從站(ET200S、mm420和自主設計的從站)構(gòu)成,如圖4。


          本次測試的比特率選定為9.6 K,同時對三個從站進行組態(tài),分別測試移植Linux操作系統(tǒng)該主站平臺的測控周期Dtop和移植Linux操作系統(tǒng)后主站的測控周期Dend。
          通過試驗,從示波器上的測試圖形可以看出ttop的寬度大于tend的寬度,具體測量后可知:
          無操作系統(tǒng)下:Dtop≈297.3 ms
          Linux操作系統(tǒng)下:Dend≈10.7 ms
          可見,移植Linux操作系統(tǒng)后,能使響應時間大大降低,提高對從站的管理效率。
          本文對影響PROFIBUS-DP實時性的因素進行了充分分析,同時,在自主設計的PROFIBUS-DP單主站平臺的基礎上,討論了無操作系統(tǒng)和Linux操作系統(tǒng)下對PROFIBUS-DP系統(tǒng)實時性的影響,提出了提高自主設計的PROFIBUS-DP實時性的方法。最后,通過實際測試,根據(jù)測控周期這個指標比較了兩個實時性之間的差異。
          參考文獻
          [1] 楊瑞霞.運用狀態(tài)機提高嵌入式軟件效率[J].單片機與嵌入式系統(tǒng)應用,2009(5):69-71.
          [2] 夏繼強,梁超眾,邢春香.工業(yè)通信用網(wǎng)關(guān)設計及其關(guān)鍵技術(shù)研究[J].電子技術(shù)應用,2010,36(2):118-125.
          [3] 劉強,甘勇梅,王兆安.PROFIBUS2DP現(xiàn)場總線通訊接口的開發(fā)[J].電子技術(shù)應用,2006,27(9):39-41.
          [4] 卜志翔,胥軍.PROFIBUS現(xiàn)場總線通信協(xié)議研究[J].現(xiàn)場總線與網(wǎng)絡技術(shù),2005(8).
          [5] 曲輝,葛麗娟.提高嵌入式系統(tǒng)可靠性軟件抗干擾措施[J].內(nèi)蒙古農(nóng)業(yè)大學學報:自然科學版,2009,30(1):229-232.
          [6] LEE K C,LEE S,LEE H H.Implementation and PID tuning of network-based control systems via Profibus polling network[J].Computer Standards and Interfaces,2004,26(3):229-240.
          [7] SUK L,KYOUNG N H.NDIS-based virtual polling algorithm for IEEE 802.11b for guaranteeing the real-time requirements.Computer Standards Interfaces,2007,29:316-324.



          關(guān)鍵詞: Linux2.6

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();