伍巧鳳,賀 理,李 昱,孫詩炎,王明星
(核反應堆系統設計技術重點實驗室,成都 610213)
數字化儀控平臺[1,2]中控制器單元通過背板AT96總線與各功能單元進行數據交互,以實現了不同功能需求[3]。AT96總線是由德國西門子公司發起制定的工控機總線標準,其作為ISA總線的兼容協議,采用PC的Wintel架構,具有抗沖擊力強、機械結構合理、適合工業現場使用,易于維護等特點。AT96總線內存使用機制與PC計算機完全一致。控制器單元的內存只能有640K~1M內存區間,并且這里面的大多數內存已經被顯卡等設備占用,因而可以使用的空間很小,基本上只能提供一個幾十KB的頁面給功能單元使用,但若功能單元數量眾多,顯然無法滿足系統設計要求,所以需要通過一種機制來擴展內存。因此,采用內存分段和頁面擴充技術,將一個內存空間擴充為多個頁面,來實現控制器單元與多個功能單元的信息交互,并且在系統中通過180°跟隨機制來防止控制器對功能單元的訪問沖突。

圖1 數字化儀控平臺構架Fig.1 Digital instrument control platform architecture

圖2 內存地址分配圖Fig.2 Memory address assignment diagram
數字化儀控平臺由主控制器、AT96總線、智能IO功能單元(模擬量輸入單元、模擬量輸出單元、開關量輸入單元、開關量輸出單元、以太網通信單元、CAN通信單元等)組成,其構架見圖1。
IO功能單元為智能設計,各功能單元自帶微處理器,獨立進行數據采集和處理,數據存放于各功能單元的雙口RAM。控制器通過AT96總線與功能單元雙口RAM進行數據交換。
一般控制器的內存只能在640K~1M內存區間,并且這里面的大多數內存已經被顯卡等設備占用。因此,可以使用的空間很小,平臺中的控制器基本上只能提供一個64KB的頁面給IO功能單元使用,但平臺中板卡數量眾多,顯然無法滿足系統設計要求,需要通過一種機制來擴展內存。
圖2是內存地址分配圖。在圖2中,將內存分為16個內存段,每個內存段4KB,標識為0~F。例如,第1段內存為0xD0000~0xD0FFF,第2段內存為0xD1000~0xD1FFF……以此類推。標識為0~E的60KB為用戶內存空間,一旦切換以后,為該功能單元獨占使用。標識為F的4KB為共享區間,為所有功能單元共用。在共享區間中,其低端的256Bytes區間為搶旗幟區間,其地址為0XDF000~0XDF0FF;其次為頁面選擇區間,占用256Bytes區間,其地址為0XDF100~0XDF1FF;依次往上的256Bytes區間為段地址選擇區間,其地址為0XDF200~0XDF2FF,剩余的區間為保留區間,暫不使用。
基于2.1節內存分配技術進行頁面擴展,本系統將64KB頁面擴充成64個頁面,每個頁面64KB,以4KB為段單位,包含16個內存段,前15個內存段(編號0~E)為用戶內存空間,用以存儲交互數據,每個功能單元可以根據實際需求占用1~15個內存段,第16個內存段(編號F)作為共享區間,用于命令發送等控制使用。
本系統各個頁面分配如下:
頁面0:為I/O類型功能單元使用區間,每個板卡占用一個4KB內存段,最大同時支持15個板卡,板卡的內存段通過4bit撥碼開關選擇。
頁面1~8:為隔離CAN通信單元使用區間,每個CAN通信單元占用2個內存段,內存段通過6bit撥碼開關選擇,其中3bit為頁面選擇,3bit為內存段地址選擇。
頁面9~16:為隔離RS485通信單元使用區間,每個RS485通信單元占用2個內存段,內存段通過6bit撥碼開關選擇,其中3bit為頁面選擇,3bit為內存段地址選擇。
頁面17~24:為隔離以太網通信單元使用區間,每個以太網通信單元占用2個內存段,內存段通過6bit撥碼開關選擇,其中3bit為頁面選擇,3bit為內存段地址選擇。

圖3 內存頁面擴展Fig.3 Memory page extensions

圖4 180°跟隨機制示意圖Fig.4 Diagram of 180°following mechanism
頁面25~63:系統保留,可擴展。
系統內存擴展由一個CPLD和雙口RAM來實現,CPLD負責進行地址譯碼和命令解析,同時輸出控制信號,以及對沖突進行檢測。
因功能單元為智能設計,各功能單元自帶微處理器,所以可在智能單元工作循環中準備數據的時刻,與控制器訪問數據的時刻錯開180°。即根據控制器的訪問周期,功能單元自行測算出控制器每兩次訪問周期的中間時刻,在這個中間時刻智能單元準備數據。這樣,即使控制器出現突發情況,造成訪問功能單元的時間點提前或者延后,但由于這個中間時刻的存在,可以盡最大可能避免控制器訪問功能單元時出現沖突或者無效。

圖5 時間片同步示意圖Fig.5 Time slice synchronization diagram

圖6 時間片同步調整示意圖Fig.6 Time slice synchronous adjustment diagram
在實際工作中,功能單元微處理器在空閑時刻時,一直監視硬件雙口RAM標志的訪問變化,并根據該變化確定控制器的訪問時刻,每經過一段時間,微處理器都會評估自己和控制器之間時刻的同步性,然后根據評估結果,調整自己對雙口RAM的訪問時刻,以實現與控制器的同步跟隨功能。在這種跟隨機制下,功能單元會隨時測量控制器的訪問周期,隨時保持與控制器訪問周期錯開180°的間隔。
圖5為正常情況下控制器對功能單元的訪問示意圖,功能單元準備好數據,控制器稍后就可以訪問,二者和諧共處,不會因此發生沖突。
當運行一段時間后,可能出現圖6所示情況。
在圖6中,控制器和功能單元循環周期沒有改變,改變是控制器對功能單元的訪問時刻,導致控制器每次訪問功能單元時,均與功能單元數據準備相沖突,從而只能放棄當前時間片。功能單元微處理器記錄每次控制器的訪問時間點,當其探測這種沖突情況后,功能單元會自動避開控制器的訪問時間點,前移自己的數據準備周期,從而有效處理沖突的情況。功能單元在前移時,可以計算好時間,使得數據準備時間正好與控制器訪問時間錯開180°。這樣聯動處理后,一是解決了控制器對功能單元數據訪問的及時性,二是提高了帶寬的利用率。
數字化儀控平臺通過AT96總線實現控制器與智能IO功能單元的數據交互,在控制器內存不足的情況下,通過內存分段和頁面擴展技術實現控制器內存擴展,從而實現控制器與眾多智能IO功能單元的數據交互。因IO單元的智能化設計,在IO功能單元微處理器中設置180°跟隨機制,實現功能單元準備數據和控制器訪問數據的180°延時,在有效處理沖突的同時,提高了帶寬的利用率。