《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > Linux2.6下自主設(shè)計(jì)的PROFIBUS-DP單主站的實(shí)時(shí)性研究
Linux2.6下自主設(shè)計(jì)的PROFIBUS-DP單主站的實(shí)時(shí)性研究
來源:電子技術(shù)應(yīng)用2011年第6期
滿慶豐,,陳宇翔,,夏繼強(qiáng)
北京航空航天大學(xué) 機(jī)械工程及自動化學(xué)院,,北京100191
摘要: 通過對PROFIBUS-DP實(shí)時(shí)性分析,,討論了在自主設(shè)計(jì)的PROFIBUS-DP單主站平臺上,提高Linux操作系統(tǒng)下PROFIBUS-DP實(shí)時(shí)性的措施,,為不使用協(xié)議芯片自主設(shè)計(jì)PROFIBUS-DP主站提供了參考,。
中圖分類號: TP393
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)06-0041-04
The design of PROFIBUS-DP main station based on Linux2.6
Man Qingfeng,,Chen Yuxiang,,Xia Jiqiang
Mechanical Engineering and Automation School, Beihang University, Beijing 100191,,China
Abstract: Through the analysis of the PROFIBUS-DP real-time performance, how to enhance the the PROFIBUS-DP real-time performance based on Linux OS with self-design PROFIBUS-DP main station is discussed. Provides a reference model for other PROIBUS-DP main station design without protocol chip.
Key words : PROFIBUS-DP;Linux,;real-time performance


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

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

 

 

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

1.2.2 主站維護(hù)時(shí)間TGAP
    當(dāng)總線上同時(shí)存在多個(gè)從站時(shí),主站需要與總線上的每個(gè)從站進(jìn)行數(shù)據(jù)交換,。對于單主站系統(tǒng),,該主站將一直持有令牌,。所以,當(dāng)主站處理完與一個(gè)從站的周期信息后,,就會發(fā)出Request_FDL_Status去查詢GAP中的一個(gè)地址,,更新NS值,查找是否有其他從站已經(jīng)在總線上等待與主站通信,。
    由于PROFIBUS-DP主站是按地址遞增順序查找從站,,并且Request_FDL_Status采用的是以SD1為起始符的報(bào)文幀,實(shí)際上,,從站隨時(shí)都監(jiān)聽著總線上的數(shù)據(jù),,所以當(dāng)報(bào)文幀中從站地址與自身地址相同后,從站就會傳遞應(yīng)答幀給主站,。
    在實(shí)際應(yīng)用中,,總線上的從站地址一般都按順序排列(如從站5、從站6,、從站7),,很少出現(xiàn)跳躍,通常為:
 
2 Linux2.6下PROFIBUS-DP的實(shí)時(shí)性分析
    由于是自主設(shè)計(jì)的PROFIBUS-DP主站(未采用協(xié)議芯片),,所以Tsdr和TID1這兩個(gè)參數(shù)完全由程序決定,。如果能縮短這兩個(gè)時(shí)間參數(shù),則對PROFIBUS-DP的實(shí)時(shí)性能的提高有很大的意義,。
2.1 Linux2.6的實(shí)時(shí)性分析
    Linux2.6內(nèi)核相對以前的Linux內(nèi)核在實(shí)時(shí)性方面有了很大的增強(qiáng),,包括O(1)調(diào)度器、可搶占式內(nèi)核,、改進(jìn)的線程模型以及對新的NPTL(Native Posix Threading Library)的支持,。
2.1.1 可搶占式內(nèi)核
    在2.6版的內(nèi)核中,引入了內(nèi)核的可搶占性,,只要調(diào)度是安全的,,內(nèi)核就可以在任何時(shí)間搶占正在執(zhí)行的任務(wù)。也就是說,,只要沒有持有鎖,,內(nèi)核就可以進(jìn)行搶占。鎖是非搶占區(qū)域的標(biāo)志,,由于內(nèi)核支持SMP,,所以,如果沒有持有鎖,,則正在執(zhí)行的代碼就是可重入的,也就可以搶占,。
2.1.2 定時(shí)器
    時(shí)鐘粒度是否粗糙是制約實(shí)時(shí)性的一個(gè)重要方面,。Linux2.6已將終端頻率改為1 000 Hz,,即時(shí)鐘粒度為1 ms。
2.1.3 虛擬內(nèi)存
    Linux2.6內(nèi)核雖然支持虛擬內(nèi)存,,但是虛擬內(nèi)存的使用將會帶來系統(tǒng)響應(yīng)時(shí)間的不確定性,,所以在移植Linux內(nèi)核時(shí),應(yīng)盡可能去掉虛擬內(nèi)存虛擬內(nèi)存機(jī)制,,盡量保證應(yīng)用程序直接訪問物理內(nèi)存,。
2.1.4 調(diào)度策略
    Linux2.6中不但支持基于優(yōu)先級的調(diào)度策略,還支持基于比例共享的調(diào)度策略,。同時(shí),,Linux2.6內(nèi)核進(jìn)程調(diào)度算法的復(fù)雜度為O(1),這對于進(jìn)程的切換效率有了很大的提高,。
2.2 Linux2.6下PROFIBUS-DP單主站的軟件設(shè)計(jì)
    PROFIBUS-DP單主站的主從通信設(shè)計(jì)圖如圖3所示,。

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


    本次測試的比特率選定為9.6 K,,同時(shí)對三個(gè)從站進(jìn)行組態(tài),,分別測試移植Linux操作系統(tǒng)該主站平臺的測控周期Dtop和移植Linux操作系統(tǒng)后主站的測控周期Dend。
    通過試驗(yàn),,從示波器上的測試圖形可以看出ttop的寬度大于tend的寬度,,具體測量后可知:
    無操作系統(tǒng)下:Dtop≈297.3 ms
    Linux操作系統(tǒng)下:Dend≈10.7 ms
    可見,移植Linux操作系統(tǒng)后,能使響應(yīng)時(shí)間大大降低,,提高對從站的管理效率,。
    本文對影響PROFIBUS-DP實(shí)時(shí)性的因素進(jìn)行了充分分析,同時(shí),,在自主設(shè)計(jì)的PROFIBUS-DP單主站平臺的基礎(chǔ)上,,討論了無操作系統(tǒng)和Linux操作系統(tǒng)下對PROFIBUS-DP系統(tǒng)實(shí)時(shí)性的影響,提出了提高自主設(shè)計(jì)的PROFIBUS-DP實(shí)時(shí)性的方法,。最后,,通過實(shí)際測試,根據(jù)測控周期這個(gè)指標(biāo)比較了兩個(gè)實(shí)時(shí)性之間的差異,。
參考文獻(xiàn)
[1] 楊瑞霞.運(yùn)用狀態(tài)機(jī)提高嵌入式軟件效率[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,,2009(5):69-71.
[2] 夏繼強(qiáng),梁超眾,邢春香.工業(yè)通信用網(wǎng)關(guān)設(shè)計(jì)及其關(guān)鍵技術(shù)研究[J].電子技術(shù)應(yīng)用,,2010,,36(2):118-125.
[3] 劉強(qiáng),甘勇梅,,王兆安.PROFIBUS2DP現(xiàn)場總線通訊接口的開發(fā)[J].電子技術(shù)應(yīng)用,,2006,27(9):39-41.
[4] 卜志翔,,胥軍.PROFIBUS現(xiàn)場總線通信協(xié)議研究[J].現(xiàn)場總線與網(wǎng)絡(luò)技術(shù),,2005(8).
[5] 曲輝,葛麗娟.提高嵌入式系統(tǒng)可靠性軟件抗干擾措施[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,,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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。