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