Linux2.6下自主設計的PROFIBUS-DP單主站的實(shí)時(shí)性研究
在目前的工業(yè)現場(chǎng)總線(xiàn)中,對實(shí)時(shí)性的要求越來(lái)越高,實(shí)時(shí)性指標也成為工廠(chǎng)選擇總線(xiàn)時(shí)的一個(gè)重要因素。PROFIBUS-DP現場(chǎng)總線(xiàn)作為目前國際上的一種通用現場(chǎng)總線(xiàn)標準,隨著(zhù)生產(chǎn)工藝對控制要求的提高,控制系統的實(shí)時(shí)性能要求也越來(lái)越高。
為了提高PROFIBUS-DP總線(xiàn)的實(shí)時(shí)性,本文在嚴格按照協(xié)議完成自主設計的PROFIBUS-DP單主站情況下,探討使用Linux操作系統提高PROFIBUS-DP總線(xiàn)實(shí)時(shí)性的方案,以及在單主站情況下提高PROFIBUS-DP總線(xiàn)實(shí)時(shí)性的可行性。
1 PROFIBUS-DP實(shí)時(shí)性分析
實(shí)時(shí)性能主要體現在MAC層協(xié)議上,不同的總線(xiàn)采用不同的MAC子層協(xié)議,PROFIBUS-DP采用的是簡(jiǎn)化令牌總線(xiàn)協(xié)議。同時(shí),測控周期是衡量PROFIBUS-DP系統實(shí)時(shí)性能的主要指標。
1.1 PROFIBUS-DP的MAC層協(xié)議
PROFIBUS-DP采用簡(jiǎn)化總線(xiàn)令牌總線(xiàn)協(xié)議作為MAC層標準,其總線(xiàn)設備包括主站(1類(lèi)主站和2類(lèi)主站)和從站,系統組成如圖1所示。
對總線(xiàn)上的每一個(gè)站點(diǎn)分配一個(gè)地址,主站地址組成一個(gè)邏輯環(huán),持有令牌的主站可以在持有令牌期間輪詢(xún)訪(fǎng)問(wèn)從站。
PROFIBUS-DP的介質(zhì)訪(fǎng)問(wèn)控制協(xié)議(MAC)包括主站之間通過(guò)占有令牌取得總線(xiàn)的占有權的主主通信和主站與從站之間的主從通信兩部分。本文考慮的是一個(gè)單主站系統,所以只探討主從通信部分的實(shí)時(shí)性。
1.2 測控周期
測控周期是指控制系統周期性訪(fǎng)問(wèn)網(wǎng)絡(luò )上同一節點(diǎn)的時(shí)間間隔,記為Dcycle,它是衡量PROFIBUS-DP系統實(shí)時(shí)性的一個(gè)重要指標。它主要由周期性數據交換時(shí)間Tcycle、主站維護時(shí)間TGAP和非周期性數據交換時(shí)間Tacycle(包括參數配置、從站數據診斷、通信接口配置等)三部分組成。
所以,當主站第一次上電,第一次與從站進(jìn)行通信時(shí),單主站的測控周期可表示為:
其中N表示系統中的從站個(gè)數。
1.2.1 周期性數據交換時(shí)間Tcycle
一次典型的數據交換過(guò)程如圖2所示。
其中,Tbit表示在總線(xiàn)上傳輸1位所耗用的時(shí)間,是其他時(shí)間參數的計量單位。由于PROFIBUS-DP采用UART編碼方式,每個(gè)字符由11位組成,所以傳輸一個(gè)字符需要11Tbit。
從圖2可知,一個(gè)報文循環(huán)由主動(dòng)幀(請求或發(fā)送/請求幀)和回答幀組成。循環(huán)時(shí)間由幀傳輸時(shí)間、傳輸延遲時(shí)間和站延遲時(shí)間組成。所以:
1.2.2 主站維護時(shí)間TGAP
當總線(xiàn)上同時(shí)存在多個(gè)從站時(shí),主站需要與總線(xiàn)上的每個(gè)從站進(jìn)行數據交換。對于單主站系統,該主站將一直持有令牌。所以,當主站處理完與一個(gè)從站的周期信息后,就會(huì )發(fā)出Request_FDL_Status去查詢(xún)GAP中的一個(gè)地址,更新NS值,查找是否有其他從站已經(jīng)在總線(xiàn)上等待與主站通信。
由于PROFIBUS-DP主站是按地址遞增順序查找從站,并且Request_FDL_Status采用的是以SD1為起始符的報文幀,實(shí)際上,從站隨時(shí)都監聽(tīng)著(zhù)總線(xiàn)上的數據,所以當報文幀中從站地址與自身地址相同后,從站就會(huì )傳遞應答幀給主站。
在實(shí)際應用中,總線(xiàn)上的從站地址一般都按順序排列(如從站5、從站6、從站7),很少出現跳躍,通常為:
2 Linux2.6下PROFIBUS-DP的實(shí)時(shí)性分析
由于是自主設計的PROFIBUS-DP主站(未采用協(xié)議芯片),所以Tsdr和TID1這兩個(gè)參數完全由程序決定。如果能縮短這兩個(gè)時(shí)間參數,則對PROFIBUS-DP的實(shí)時(shí)性能的提高有很大的意義。
2.1 Linux2.6的實(shí)時(shí)性分析
Linux2.6內核相對以前的Linux內核在實(shí)時(shí)性方面有了很大的增強,包括O(1)調度器、可搶占式內核、改進(jìn)的線(xiàn)程模型以及對新的NPTL(Native Posix Threading Library)的支持。
2.1.1 可搶占式內核
在2.6版的內核中,引入了內核的可搶占性,只要調度是安全的,內核就可以在任何時(shí)間搶占正在執行的任務(wù)。也就是說(shuō),只要沒(méi)有持有鎖,內核就可以進(jìn)行搶占。鎖是非搶占區域的標志,由于內核支持SMP,所以,如果沒(méi)有持有鎖,則正在執行的代碼就是可重入的,也就可以搶占。
2.1.2 定時(shí)器
時(shí)鐘粒度是否粗糙是制約實(shí)時(shí)性的一個(gè)重要方面。Linux2.6已將終端頻率改為1 000 Hz,即時(shí)鐘粒度為1 ms。
2.1.3 虛擬內存
Linux2.6內核雖然支持虛擬內存,但是虛擬內存的使用將會(huì )帶來(lái)系統響應時(shí)間的不確定性,所以在移植Linux內核時(shí),應盡可能去掉虛擬內存虛擬內存機制,盡量保證應用程序直接訪(fǎng)問(wèn)物理內存。
2.1.4 調度策略
Linux2.6中不但支持基于優(yōu)先級的調度策略,還支持基于比例共享的調度策略。同時(shí),Linux2.6內核進(jìn)程調度算法的復雜度為O(1),這對于進(jìn)程的切換效率有了很大的提高。
2.2 Linux2.6下PROFIBUS-DP單主站的軟件設計
PROFIBUS-DP單主站的主從通信設計圖如圖3所示。
從“從站通信調度模塊”開(kāi)始,該模塊根據上位機發(fā)送過(guò)來(lái)的詢(xún)問(wèn)從站在線(xiàn)命令幀對相應的從站數據結構進(jìn)行初始化,然后調用“從站是否運行模塊”,判斷從站是否在線(xiàn);如果在線(xiàn),就進(jìn)入“從站通信管理模塊”。在該模塊中,由于已經(jīng)將Linux移植到了該硬件平臺上,所以通過(guò)fork()函數,建立一個(gè)進(jìn)程,單獨處理與特定從站之間的通信;如果有多個(gè)從站都進(jìn)入運行狀態(tài),則建立多個(gè)進(jìn)程,分享CPU,按一定的調度策略處理與主站及從站之間的通信。接著(zhù),按照PROFIBUS-DP協(xié)議的規范,調用相應的“請求幀模塊”,發(fā)送命令幀給從站設備;從站在接收到請求幀后,會(huì )在規定的時(shí)間內發(fā)送回應幀響應主站,同時(shí),主站在特定的時(shí)間內會(huì )調用“接收請求幀模塊”,處理接收到的響應幀。
在軟件設計中,采用了一個(gè)單獨的數據結構記錄PROFIBUS-DP主站的狀態(tài),其數據結構如下:
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;
另外,軟件設計中,對于從站也設計了單獨的數據結構維護其狀態(tài)。從站的數據結構如下:
typedef struct slave_info{
u8 global_status;
u8 address;
u8 baud_support;
u8 configuration_flag;
……
}*pSlave;
同時(shí),由于有了特定數據結構的維護,在主從數據的交換過(guò)程中,采用了一次性?xún)却婵截惣夹g(shù)(即當讀取到DP從站的輸入數據后,直接將對應數據填充到輸出幀對應的位置),將大大縮短程序查找內存的時(shí)間,加快響應速度。
另外,本軟件設計還采用了單緩沖技術(shù)。所謂單緩沖區是指不考慮通信中待轉換的數據而只保留當前最新的一幀。這樣緩沖區中隨時(shí)都只有一幀有效數據,從而提高整個(gè)系統的實(shí)時(shí)性。
2.3 Linux操作系統下PROFIBUS-DP實(shí)時(shí)性的改善
與無(wú)操作系統、由安全使用協(xié)議完成的PROFIBUS-DP單主站相比,使用Linux2.6操作系統后,實(shí)時(shí)性的改善主要體現在以下幾個(gè)方面。
2.3.1 站延遲時(shí)間Tsdr
站延遲時(shí)間是指接收方從接到請求到產(chǎn)生響應數據的時(shí)間間隔。在本設計中,由于移植的Linux操作系統已經(jīng)去掉了對虛擬內存的支持,所有數據都直接存放到物理內存中,同時(shí)使用了一次性?xún)却婵截惣夹g(shù),因此加快了數據交換的速度。
2.3.2 從站之間的相互切換
在未使用Linux操作系統設計的PROFIBUS-DP單主站中,如果總線(xiàn)上存在多個(gè)從站,PROFIBUS0-DP與從站的通信完全由程序的邏輯來(lái)保證,這無(wú)疑會(huì )加大編程人員的難度,如果稍有不慎,可能會(huì )導致通信出現混亂,從而出現錯誤。
使用了Linux操作系統后,PROFIBUS-DP主站與各個(gè)從站的通信分別由對應的進(jìn)程處理,總線(xiàn)中有多少個(gè)從站,程序中就會(huì )有多少個(gè)進(jìn)程。這樣,對各個(gè)從站的管理就變成對各個(gè)進(jìn)程的管理,只要選擇合適的調度策略,則對各個(gè)從站的管理就不會(huì )出現混亂。同時(shí),Linux2.6內核中由于調度復雜度為O(1),所以進(jìn)程切換時(shí)間大大縮短,這對提高系統的實(shí)時(shí)性也有很大好處。
2.3.3 從站響應時(shí)間
從站響應時(shí)間是指當有新的從站掛到總線(xiàn)上時(shí),PROFIBUS-DP單主站識別該從站的時(shí)間。在一般的系統中,PROFIBUS-DP主站通過(guò)輪詢(xún)識別從站,而在本設計中,當有新的從站掛到總線(xiàn)上時(shí),會(huì )通過(guò)一個(gè)中斷信號告訴該主站,從而與該從站優(yōu)先通信。此設計是為了使系統更具智能性,這是標準PROFIBUS-DP協(xié)議中沒(méi)有的。
3 主站平臺實(shí)時(shí)性能測試
PROFIBUS-DP主站的主從通信的實(shí)時(shí)性能主要通過(guò)測控周期來(lái)判斷。搭建測試平臺由一臺PC機(主要用作上位機,向主站下載GSD文件)、自己設計的嵌入式主站平臺(選用的是S3C2410芯片)和3個(gè)PROFIBUS-DP從站(ET200S、mm420和自主設計的從站)構成,如圖4。
本次測試的比特率選定為9.6 K,同時(shí)對三個(gè)從站進(jìn)行組態(tài),分別測試移植Linux操作系統該主站平臺的測控周期Dtop和移植Linux操作系統后主站的測控周期Dend。
通過(guò)試驗,從示波器上的測試圖形可以看出ttop的寬度大于tend的寬度,具體測量后可知:
無(wú)操作系統下:Dtop≈297.3 ms
Linux操作系統下:Dend≈10.7 ms
可見(jiàn),移植Linux操作系統后,能使響應時(shí)間大大降低,提高對從站的管理效率。
本文對影響PROFIBUS-DP實(shí)時(shí)性的因素進(jìn)行了充分分析,同時(shí),在自主設計的PROFIBUS-DP單主站平臺的基礎上,討論了無(wú)操作系統和Linux操作系統下對PROFIBUS-DP系統實(shí)時(shí)性的影響,提出了提高自主設計的PROFIBUS-DP實(shí)時(shí)性的方法。最后,通過(guò)實(shí)際測試,根據測控周期這個(gè)指標比較了兩個(gè)實(shí)時(shí)性之間的差異。
參考文獻
[1] 楊瑞霞.運用狀態(tài)機提高嵌入式軟件效率[J].單片機與嵌入式系統應用,2009(5):69-71.
[2] 夏繼強,梁超眾,邢春香.工業(yè)通信用網(wǎng)關(guān)設計及其關(guān)鍵技術(shù)研究[J].電子技術(shù)應用,2010,36(2):118-125.
[3] 劉強,甘勇梅,王兆安.PROFIBUS2DP現場(chǎng)總線(xiàn)通訊接口的開(kāi)發(fā)[J].電子技術(shù)應用,2006,27(9):39-41.
[4] 卜志翔,胥軍.PROFIBUS現場(chǎng)總線(xiàn)通信協(xié)議研究[J].現場(chǎng)總線(xiàn)與網(wǎng)絡(luò )技術(shù),2005(8).
[5] 曲輝,葛麗娟.提高嵌入式系統可靠性軟件抗干擾措施[J].內蒙古農業(yè)大學(xué)學(xué)報:自然科學(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.
評論