基於ARM與μClinux的RTU設計
| [日期:2008-8-20] |
來源:電子工程世界 作者:曾為民 李志康 李宏利 鄒立東 |
[字型:大 中 小] |
在電力系統變電所以及電氣化鐵道牽引變電所遠動控制系統中,遠端資料採集與監控終端(RTU)是關鍵裝置,實現遙控、遙測、遙信等功能。
採用工業控制電腦,擴充測控硬體介面電路,是RTU設計常見的方法,但是這種方法設計的RTU成本高、體積大、耗電大。採用80C196等單片機設計RTU,由於單片機的運算處理和硬體擴充等能力較低,影響RTU的效能。而基於ARM處理器設計的RTU,硬體上具有成本低、體積小、耗電省、處理能力強等優點;軟體上由於採用μClinux作業系統,有許多優秀的應用程式成果可以利用。正是由於這些優勢,採用ARM和μClinux設計RTU已經成為一個熱點[1]。
1 RTU硬體電路設計
1.1 RTU總體結構
RTU的核心部分是電腦,包括處理器、儲存空間、人機介面等。為了執行RTU的測控功能,需要擴充大量外圍介面電路。不同變電所的測控對象數量差別很大。為了提高RTU的通用性,一種普遍採用的可行的辦法是將測控電路模組化。根據模組化的設計思想以及S3C4510B[2]和μClinux[3]的特點,RTU硬體總體結構設計的原理框圖1。
各種電路按功能設計成相應模組,以母板匯流排為介面基礎。
主板模組以S3C4510B為核心。主要配置是:16M位元組動態隨機儲存空間SDRAM(兩片HY57V651620B),2M位元組的Flash(一片AM29LV160DB);處理器內部整合兩個非同步串列通訊介面,串口0和串口1;一個10Mbps乙太網路介面;看門狗與複位電路(MAX507);RTU母板匯流排驅動電路。
串口0作為控制台,用於調試;串口1接LCD顯示屏和觸控螢幕,實現當地監控的人機介面。
測控介面電路主要有遙控模組、遙信模組(開關量採集)和遙測模組(類比量採集)。遙控和搖信模組由母板匯流排直接擴充。遙測模組採用現場匯流排(CAN)通訊介面。為此在RTU母板匯流排上擴充CAN匯流排通訊模組,實現與遙測模組的通訊。
串口模組(PC16C550)從母板匯流排上擴充。用該模組串連數據機(MODEM),實現RTU遠程通訊。
1.2 RTU母板匯流排
RTU母板匯流排是測控硬體模組擴充的基礎,又是處理器匯流排上的一個外設介面。
為便於模組的擴充,RTU母板匯流排定義如下:資料匯流排H-D0~H-D7;地址匯流排H-A0~H-A7;地址片選訊號H-S0~H-S6;讀寫控制訊號H-WR和H-RD;地址鎖存控制訊號H-ALE;中斷服務要求控制訊號H-INT0~H-INT3;複位訊號H-RESET。
使用處理器的如下匯流排訊號驅動RTU母板匯流排:地址匯流排A0~A11、資料匯流排D0~D7、讀使能控制訊號nOE、寫使能控制訊號nWBE0、外設(I/O)地址片選訊號nECS0,以及4根中斷控制訊號線nINREQ0~nINREQ3。
1.2.1 匯流排驅動電路
為相容測控介面電路較常用的器件,母板匯流排按照5V的TTL電平設計。S3C4510B匯流排是3.3V的CMOS電平。
處理器匯流排與RTU母板匯流排存在速度和電平上的差別,不能直接相連,它們之間需要一個匯流排驅動電路。
匯流排驅動電路是主板模組的一部分。它實現處理器匯流排到RTU母板匯流排的介面擴充、電平轉換和驅動。匯流排驅動介面電路2。
採用雙電源供電的雙向匯流排緩衝器74LVX4245,實現處理器資料匯流排與RTU母板資料匯流排之間的電平轉換和驅動。
三八解碼器U1,將2K位元組地址空間譯為8個地址片選訊號,稱為S0~S7,其中S0~S6由匯流排驅動晶片74LS244驅動後,作為RTU母板匯流排地址片選訊號。
1.2.2 地址鎖存訊號ALE實現
一些常用的晶片,如CAN匯流排控制器SJA1000、時鐘晶片DS12887等,內部帶一個地址鎖存器,需要地址鎖存訊號ALE,才能實現介面。S3C4510B沒有ALE訊號,所以母板匯流排擴充ALE訊號,才能實現這類器件的介面。
將U1的一個地址片選訊號S7取反,寫資料到S7地址,可以類比出ALE控制訊號,並實現ALE的功能。
1.2.3 RTU母板匯流排的地址和訪問速度
RTU母板匯流排作為處理器的一個外設,其地址和訪問速度由處理器決定。
S3C4510B匯流排統一編址。nECS0是外設地址片選訊號,占外設地址空間起始的16K位元組。
nECS0接U3使能端,決定RTU母板匯流排的基地址和訪問速度。S3C4510B控制寄存器EXTDBWTH第20位置1、21位置0,表示nECS0按8位方式定址。寄存器REFEXTCON的低10位設為0x360,則nECS0的基地址是0x3600000。
置控制寄存器EXTACON0為0x0fff,則S3C4510B對RTU母板匯流排的讀寫時間是7個CPU刻度。
1.3 基於RTU母板匯流排的模組擴充
圖3是擴充CAN匯流排通訊模組的電路原理圖。CAN匯流排模組以SJA1000為核心,通訊資料經高速光電耦合器G1、G2隔離,82C250驅動,從接線端子J2串連到外部CAN匯流排。P1是1W的5V轉5V的DC/DC電源模組。CAN模組使用H-S0作為片選訊號,其基地址是0x3600000。
圖3給出了SJA1000與RTU母板匯流排的串連關係。SJA1000匯流排相容TTL電平,資料匯流排和中斷訊號線有驅動能力,可以直接與母板匯流排介面。由圖3可見,從RTU母板匯流排上擴充測控電路簡單方便。
基於母板匯流排的其它模組擴充方法類似。
2 RTU軟體設計
μClinux從linux作業系統改進而來,適合運行在S3C4510B這種無記憶體管理單元MMU的處理器中。基於工控機-linux的RTU程式,可以很方便地移植到ARM-μClinux設計的RTU中。
RTU程式的開發,包括應用程式開發和驅動程式開發兩部分,全部採用C語言編寫。
2.1 RTU應用程式調試
使用JTAG模擬器工具和相應工具軟體,將μClinux作業系統燒寫到主板模組的Flash中。μClinux在主板模組上運行後,可以使用μClinux提供的工具軟體在Flash上更新自身及應用程式。
串連PC機的串口與主板模組的串口0。用Windows超級終端,與主板模組建立互動關係。將主板模組與PC機接入同一個區域網路,配置合適的IP地址。
使用檔案傳輸服務工具FTP或TFTP,將PC機編譯的μClinux應用程式下載到主板模組/ramdisk目錄中,改為可執行屬性後執行。應用程式中加入printf()函數,輸出執行過程中的調試資訊。
2.2 JFFS2檔案系統應用
JFFS2(The Journalling Flash File System, version 2)是一種為嵌入式系統Flash隱藏檔而設計的檔案系統。μClinux編譯選項,加入JFFS2檔案系統。將2MB的Flash分成mtd0和mtd1兩個區,各為1MB。mtd0是從0地址開始的儲存空間,用於儲存μClinux作業系統鏡像檔案。mtd1用於儲存應用程式。μClinux的/dev目錄中,有字元型裝置檔案mtd0、mtd1和對應的塊裝置檔案mtdblock0、mtdblock1。
有了JFFS2檔案系統支援,使用檔案拷貝操作方法,即可將RTU的作業系統和應用程式在Flash上更新。RTU的開發和現場調試,可以脫離JTAG模擬器工具,給RTU開發和維護提供了方便。
2.3 更新μClinux的步驟
(1)用FTP傳輸作業系統檔案IMAGE.ROM到/ramdisk/目錄;(2)擦除mtd0分區:eraseall /dev/mtd0;(3)將IMAGE.ROM寫入mtd0:cp/ramdisk/IMAGE.ROM/dev/mtd0。
當提示操作完成後,複位主板模組即運行新的作業系統。由於μClinux作業系統在SDRAM中運行,更新作業系統過程中不能停電。
2.4 應用程式在Flash上的更新與執行
(1)安裝mtd1分區:mount-t-jffs2 /dev/mtdblock1/mnt。此操作將mtd1分區按塊裝置方式安裝在μClinux的/mnt目錄中。在/mnt目錄中添加的檔案,儲存在Flash中,不會因掉電而丟失。(2)將應用程式myapp下載到/ramdisk目錄,然後cp /ramdisk/myapp /mnt。即完成了應用程式在Flash上的更新。(3)修改檔案屬性:chmod 755 /mnt/myapp。(4)執行檔案:./mnt/myapp。
μClinux啟動後,讀取並執行/proc/rc檔案中的命令。要使myapp應用程式自動執行,在rc檔案中,加入
mount -t jffs2 /dev/mtdblock1 /mnt
./mnt/myapp
系統啟動後,自動安裝mtd1分區,執行應用程式myapp。
基於本文設計的RTU,串連到一個電網資料擷取與監控系統,經試運行,效能穩定可靠。證明文中設計的RTU的原理是正確的。
參考文獻
1 嚴亞勤,吳文傳,張伯明. 基於嵌入式Linux的網路RTU[J]. 電力自動化裝置,2004;24(9):27~29
2 μm_s3c4510b_rev1.pdf. www.samsung.com.
3 皺思秩.嵌入式Linux設計與應用[M].北京:清華大學出版社,2002.第1版