摘 要: 介紹了一種由三個DSP嵌入式子系統構成的基于CAN總線的分布式系統" title="分布式系統">分布式系統。該系統具有多路信號實時處理、過程控制" title="過程控制">過程控制、與外部測控中心實時交互等功能。
關鍵詞: 協同工作" title="協同工作">協同工作 DSP 分布式系統
盡管數字信號處理器(DSP)的性能越來越強,基于DSP嵌入式系統的功能也越來越多,但對于實時性、容錯性、可靠性要求很高的多任務信號處理及多路過程控制方面的應用,單個DSP嵌入式系統的處理能力是不夠的。分布式系統處理能力強、可靠性高,采用多個DSP嵌入式子系統構成分布式系統,利用分布式系統的并發性實現多個DSP的并行處理,滿足多任務、實時性的要求。同時,通過硬件和軟件冗余設計,保證了系統的可靠性。
本文采用TMS320F2812 DSP實現了三個同構的、具有多種實時信號處理和多個過程控制功能的嵌入式" title="的嵌入式">的嵌入式子系統A、B、C,以CAN總線為通信網絡構成分布式系統。該系統能夠與外部測控中心實時交互,同時完成23路模擬信號的實時采集/預處理、16路數字信號處理、16路數字信號的輸出、1路脈沖信號處理、多路過程控制參數的實時計算、各種狀態及參數的實時記錄等。三個子系統的硬件設計完全相同,通過CAN總線與RS422串口" title="串口">串口交換信息,通過軟件配置為各子系統分配資源、動態分配任務,有效地均衡了各處理機的負載。三個子系統資源共享、互為備份,提高了整個系統的可靠性。
在實時系統中,如果系統的運行不能滿足響應時間的要求,將會導致整個系統的崩潰。因此,分布式系統各組件之間的通信和協調工作是實現系統各組件并發處理、系統資源共享、均衡系統各組件的負載、提高整個系統的吞吐量、保證系統可靠工作的關鍵。
本文重點討論了各子系統之間的通信方式、系統的任務分配和系統的協調工作機制。
1 系統的構成
1.1 CAN總線
CAN(Controller Area Network)屬于總線式串行通信網絡。CAN總線有效地支持安全可靠的分布式實時控制系統,通信方式靈活、抗干擾能力強、可靠性高,直接通信距離最遠可達10km(傳輸率5kbps以下),通信速率最高達1Mbps(通信距離40m以內),網上節點數可達110個。CAN總線為多主工作方式,可以方便地構成多機備份系統[4]。
1.2 數字信號處理器
TMS320F2812 DSP是工業控制領域的一種高端產品,具有速度快、功耗低、接口方便靈活、易于開發、精度高、兼容性好、資源豐富等特點。F2812采用哈佛總線結構,具有32位高性能的CPU,時鐘頻率為150MHz并支持動態改變鎖相環的頻率,擁有Flash等多種類型存儲器、PIE中斷模塊、A/D轉換模塊、事件管理器、SCI口、SPI口、eCAN總線和McBSP通信模塊等豐富的外圍設備,可以滿足各種應用的需求。
1.3 基于DSP的嵌入式子系統的硬件構成
基于TMSF2812 DSP的嵌入式子系統(見圖1)是為滿足實時多任務而設計的,硬件、軟件可根據需要進行裁剪,可靠性高、響應速度快、自動化程度高。
三個子系統的硬件設計完全相同,除DSP片上資源外,每個子系統都擴展了非易失性存儲器(E2PROM或鐵電隨機存儲器)、SRAM、四路RS422接口(兩路RS232可選)、實時時鐘等輔助模塊。
1.4 系統的體系結構
該系統是由三個基于F2812 DSP的嵌入式子系統A、B、C通過CAN總線構成同構異步的分布式系統(見圖2)。三個子系統沒有主從關系,各子系統的功能根據系統狀態,通過任務分配策略,用軟件配置。三個子系統與硬件、軟件互為備份,提高了系統的可靠性。
三個子系統之間主要通過CAN總線進行信息交換,變化較慢的數據也可以通過UART串口進行交換。每個子系統都能夠同時接收信號,也能夠輸出控制信號。通過特殊的硬件設計,每個子系統都具有故障隔離的功能,可以防止因為一個子系統出現故障而影響整個系統的工作。
2 分布式系統的協同工作
分布式系統的資源位于不同的位置,系統需要不斷監視各組件的狀態,檢查資源的使用情況。當一個處理器出現故障時,系統應該立即響應,重新調配資源,規劃任務分配方案,確定任務分配策略,重構系統,必要時犧牲系統的某些性能,以保證系統正常工作。
2.1 系統狀態監視
系統狀態包括每個子系統各個模塊的工作狀態(CPU、UART的工作狀態、片上存儲器(SDRAM、FLASH等)和片外存儲器(SRAM)、非易失性存儲器的分配情況)、每個子系統之間的通信狀態等。
分布式系統中,各子系統難以確定系統的狀態。為此,網絡上的每個子系統應定時向其他子系統廣播,將各自的狀態通知其他子系統(見圖3)。如果在規定的時間內沒有收到某個子系統的消息,則認為該子系統出現故障,系統應重新配置系統資源、重新分配任務,重構系統。
圖3中:SCAB表示子系統A到B通信的情況。通過A、B、C之間的相互通信,確定系統的狀態。
不失一般性,令三個子系統的狀態的集合為SA、SB、SC,則系統狀態SS為:
SS=ρ(SA∪SB∪SC)
={Si|0≤i≤N} (1)
其中:ρ(A)表示A的冪集,N=|SS|
2.2 任務分配策略
一般情況下,多處理機任務分配問題是NP-完全的,通常是根據具體應用需求,確定一個可行的、比較滿意的任務分配策略。任務分配的目的是合理配置系統資源,設法減少系統中各處理器間的通信開銷和執行模塊所需的開銷。均衡負載是將系統承擔的任務合理地分配給系統中各處理機,最大限度地提高系統的吞吐量。一般來說,減少系統的通信量和均衡負載是相互矛盾的。因此,任務分配策略也就是最大限度地減少系統中各子系統間的通信量,同時均衡各子系統的負載,以此提高整個系統的性能。
系統的任務分配有兩種方式:自動方式和人工方式。自動分配方式是根據系統狀態和各子系統任務量的估計確定任務分配策略,通過軟件自動為各子系統分配任務。人工分配方式是測控中心通過指令為子系統分配任務。
不妨假設系統是由N個組件構成的一個分布式系統,承擔的任務為T,則:
T={Ti|0≤i<M},Ti為最小任務分割。
構造任務分配集合V:
確定任務分配策略TAS(Task Allocate Strategy):
在實際應用中,任務分配策略受多種因素的制約和影響,如空間限制、信號干擾、通信距離等,所以,只能在一定條件下最大限度地滿足負載均衡、任務間最小通信量等任務分配原則。
在該系統的具體應用中,考慮到信號干擾和數據傳輸的要求,將系統承擔的任務主要分為信號的采集/預處理(SP)、信號運算(SC)、過程控制(SO)。SP任務主要承擔23路模擬信號的采集、AD轉換、信號濾波等;SC任務主要承擔各類信號的運算;SO任務主要承擔過程控制的參數計算、控制信號輸出、與測控中心實時交互等。經過測試,CPU對于SP、SC、SO任務的負載基本均衡,三個子系統之間的通信量基本相同。將承擔SP任務的子系統盡量放置在信號源附近,將承擔SO任務的子系統盡量放置在控制部件附近,可以減小信號的干擾,同時也能減少數據的通信量。基于以上因素的考慮,根據系統狀態,確定如表1所示的任務分配策略。
2.3 系統的協同工作
系統協同工作包括系統資源的統一調配(CPU、各類存儲器、事件管理器、GPIO等)、根據實際需求和系統狀態確定任務分配策略以及為各子系統分配任務。當系統狀態變化時,重新配置系統資源、確定任務分配策略,為每個子系統重新分配任務(見圖4)。該系統正常工作時,三個子系統分別承擔信號采集/預處理、信號運算和過程控制任務;當一個或兩個子系統出現故障時,系統通過CAN總線檢測各子系統情況,確定系統的狀態,根據任務分配策略,由其余子系統代替故障子系統的任務。當線路出現故障時,由測控中心通過串口發送指令,人工分配任務,保證系統正常工作。
2.4 輔助通信、與測控中心交互
系統由三個子系統構成,每個子系統有四路RS422串口,記作Ai、Bi、Ci(i=1、2、3、4)。根據任務的需求,Ai、Bi、Ci連接在一起,分別完成信息采集、子系統之間輔助通信、與測控中心交互的任務。
與測控中心實時交互的目的是:一方面將系統狀態和各種參數傳送到測控中心;另一方面,測控中心可以發送指令,完成指定的任務。
測控中心實時監視系統的工作狀態。當CAN總線工作正常時,系統自動完成任務分配等任務;當CAN總線出現斷路或其他線路故障時,測控中心發送指令給系統,人工分配任務,保證系統正常工作。
根據任務的需求,三個子系統的串口Ai、Bi、Ci(i=1、2、3、4)連接在一起發送數據時會發生沖突,因此,系統應根據各串口的工作狀態確定線路狀態,根據線路狀態決定對串口的讀寫。
本文介紹了由三個DSP嵌入式子系統構成的基于CAN總線的分布式系統的軟、硬件設計方案,著重分析了各子系統之間協同工作的方式。該系統充分利用了分布式系統的并發性和可靠性等特點,在滿足多路信號實時處理、多個過程控制、與測控中心實時交互等要求的基礎上,采用自動分配任務和指令分配任務相結合的方式,有效地提高了系統的可靠性。實驗仿真和現場測試表明,該系統不僅滿足了任務要求,而且還具有很高的穩定性和可靠性。
參考文獻
1 Simon-Klar C.A Multi DSP board for real time SAR pro-cessing using the HiPAR-DSP 16.In:Proceedings of the In-ternational Geoscience and Remote Sensing Symposium 2002,2002,6
2 Coulouris G,Dollimore J,Kindberg T著,金蓓弘譯.分布系統概念與設計.北京:機械工業出版社,2004
3 Bacon J,Harris T著,陳向群譯.操作系統-并發與分布式軟件設計.北京:電子工業出版社,2005
4 何炎祥.分布式操作系統.北京:高等教育出版社,2005