嵌入式Modbus/TCP網(wǎng)關的設計與實現(xiàn)
目前,構成底層控制網(wǎng)絡的現(xiàn)場總線技術已獲得了廣泛的應用。多種現(xiàn)場總線標準并存而相互間無法兼容的問題一直困擾著工業(yè)界。將工業(yè)以太網(wǎng)應用到現(xiàn)場控制網(wǎng)絡已成為當前研究的熱點和未來發(fā)展的趨勢。如何使這種網(wǎng)絡結構與工業(yè)以太網(wǎng)技術相結合,實現(xiàn)底層生產(chǎn)與上層管理的緊密集成是當前研究的熱點。
1 Modbus協(xié)議及網(wǎng)關拓撲結構
Modbus現(xiàn)場總線協(xié)議是Modicon公司于1978年提出的一種現(xiàn)場總線協(xié)議[1]。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡和其他設備之間可以進行通信。該協(xié)議內(nèi)容可以免費獲得,因此Modbus的串行鏈路版本在市場上長期占有主導地位。大量的產(chǎn)品已直接運行或兼容Modbus串行鏈路版本。
Modbus/TCP工業(yè)以太網(wǎng)協(xié)議是1999年被開發(fā)的Modbus協(xié)議的另一版本[2],允許用戶通過以太網(wǎng)訪問設備。協(xié)議的開放性及簡單易學,使它比很多受商業(yè)利益驅使的協(xié)議取得更快的發(fā)展,受到眾多第三方產(chǎn)品廠商、終端用戶、系統(tǒng)集成商的廣泛支持[3]。
本文設計和實現(xiàn)了一種嵌入式協(xié)議轉換網(wǎng)關,通過Modbus/TCP協(xié)議將傳統(tǒng)的串行鏈路通信的Modbus現(xiàn)場總線與以太網(wǎng)相連。用戶經(jīng)由以太網(wǎng)對Modbus設備進行數(shù)據(jù)采集并對Modbus設備進行遠程訪問和控制。同時網(wǎng)關還提供Web服務功能,允許通過Web瀏覽器直接配置網(wǎng)關的IP地址等信息并保存到網(wǎng)關的非易失性存儲器中。圖1是嵌入式Modbus/TCP網(wǎng)關的連接示意圖。本文引用地址:http://2s4d.com/article/151848.htm
2 網(wǎng)關總體設計
網(wǎng)關選用了ATMEL公司生產(chǎn)的AT91RM9200高性能32位工業(yè)級嵌入式微處理器作為網(wǎng)關硬件系統(tǒng)的核心。網(wǎng)關的軟件系統(tǒng)將移植μC/OS-II嵌入式實時操作系統(tǒng)和實現(xiàn)TCP/IP協(xié)議棧,并在此基礎上設計應用層程序。網(wǎng)關的總體設計結構如圖2。網(wǎng)關的設計方案將采用開放源代碼的嵌入式操作系統(tǒng)和TCP/IP協(xié)議棧,因此在取得較高性價比的基礎上可取得最佳的擴展性。
3 硬件設計
AT91RM9200是著名半導體廠商ATMEL力推的一款基于ARM920T內(nèi)核的工業(yè)級嵌入式微處理器,為最大功能、最低功耗、最低成本的嵌入式系統(tǒng)提供了一個完整的解決方案[4],它除具備ARM微處理器傳統(tǒng)優(yōu)勢以外,其性能、可靠性和擴展性都大大超過普通的商業(yè)級ARM7核心的嵌入式微處理器。硬件系統(tǒng)的結構如圖3。
4 軟件系統(tǒng)設計
嵌入式實時操作系統(tǒng)在目前的嵌入式應用中使用越來越廣泛,尤其在功能復雜、系統(tǒng)龐大的應用中顯得愈來愈重要[5]。網(wǎng)關采用了μC/OS-II實時操作系統(tǒng)。μC/OS-II實時操作系統(tǒng)是專門為嵌入式應用設計的,除了與CPU硬件相關部分是用匯編語言編寫外,其他絕大部分代碼用C語言編寫。μC/OS-II具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良、可靠性高、可擴展性強和移植性好等特點[6]。
選擇合適的ARM處理器的開發(fā)工具可以加快嵌入式系統(tǒng)的開發(fā)進度、節(jié)約成本、提高效率。CodeWarrior for ARM Developer Suite V1.2集成開發(fā)環(huán)境是ARM公司推出的新一代ARM集成開發(fā)工具,網(wǎng)關的所有程序代碼均在此集成開發(fā)環(huán)境中編譯、鏈接、調(diào)試。
4.1 μC/OS-II初始化程序設計
μC/OS-II操作系統(tǒng)運行前需要對硬件系統(tǒng)的片內(nèi)和片外存儲器、系統(tǒng)堆棧等進行初始化。這些工作與硬件系統(tǒng)相關,難以用C語言實現(xiàn),需要用匯編語言實現(xiàn)。系統(tǒng)在執(zhí)行完初始化程序之后就將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),為啟動μC/OS-II準備好正確的環(huán)境,最后通過跳轉指令執(zhí)行μC/OS-II主函數(shù)main中的第一條C語句[7]。
初始化程序的設計不屬于μC/OS-II操作系統(tǒng)的移植,但是其質量的好壞關系到整個系統(tǒng)程序的運行。初始化程序的執(zhí)行步驟如下:(1)定義程序的入口點;(2)設置異常向量; (3)執(zhí)行硬件初始化;(4)在CP15控制寄存器中,將AT91RM9200配置成小端模式; (5)初始化堆棧指針寄存器SP; (6)開放系統(tǒng)中斷;(7)初始化C變量;(8)運行μC/OS-II操作系統(tǒng)。
tcp/ip相關文章:tcp/ip是什么
評論