1 引言
在工業(yè)控制領(lǐng)域,隨著儀器儀表智能化的提高和工業(yè)管理自動(dòng)化的深入,大量的智能設(shè)備需要通過網(wǎng)絡(luò)相互通訊,實(shí)現(xiàn)智能化現(xiàn)場設(shè)備的功能自治性、系統(tǒng)結(jié)構(gòu)的高度分散性以及管控一體化,F(xiàn)場總線順應(yīng)了現(xiàn)場設(shè)備智能化的發(fā)展趨勢,以總線作為節(jié)點(diǎn)間實(shí)現(xiàn)數(shù)字通訊的紐帶,構(gòu)成數(shù)字式、雙向傳輸、全分散、多分支結(jié)構(gòu)的控制網(wǎng)絡(luò)。本文針對現(xiàn)場總線中比較有代表性的總線網(wǎng)絡(luò)與以太網(wǎng)之間的互聯(lián),設(shè)計(jì)了一套基于總線和以太網(wǎng)的嵌入式系統(tǒng)的核心控制部分
2 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
對于遠(yuǎn)程測控系統(tǒng),CAN總線網(wǎng)絡(luò)需要通過相應(yīng)的轉(zhuǎn)換系統(tǒng)和以太網(wǎng)互聯(lián),并且以太網(wǎng)網(wǎng)絡(luò)上的PC機(jī)可以通過以太網(wǎng)接口獲取CAN總線上所有節(jié)點(diǎn)的數(shù)據(jù),同時(shí)也能通過以太網(wǎng)接口向CAN網(wǎng)絡(luò)指定節(jié)點(diǎn)發(fā)送相應(yīng)數(shù)據(jù)和命令。由此可知,整個(gè)系統(tǒng)應(yīng)該主要包括三部分:CAN網(wǎng)絡(luò)子系統(tǒng),CAN-TCP/IP雙向接口轉(zhuǎn)換主系統(tǒng),上位機(jī)顯示控制系統(tǒng)。
由于第二部分CAN-TCP/IP雙向接口轉(zhuǎn)換主系統(tǒng)是整個(gè)系統(tǒng)的核心部分,因此本文僅對此部分進(jìn)行詳細(xì)設(shè)計(jì)。系統(tǒng)整體結(jié)構(gòu)圖如圖1所示。系統(tǒng)硬件主要由三部分組成,第一部分是由電平轉(zhuǎn)換芯片、CAN控制器、CAN驅(qū)動(dòng)芯片以及光電隔離電路組成的CAN數(shù)據(jù)收發(fā)模塊;第二部分是以網(wǎng)絡(luò)接口芯片為核心的以太網(wǎng)接口電路模塊;第三部分是聯(lián)接前兩部分,實(shí)現(xiàn)以太網(wǎng)協(xié)議和CAN協(xié)議轉(zhuǎn)換的嵌入式系統(tǒng)。
3 硬件系統(tǒng)主要模塊設(shè)計(jì)
雖然整個(gè)系統(tǒng)硬件部分由三大部分組成,但是這三部分相互聯(lián)系,很難分割,所以對本系統(tǒng)的硬件設(shè)計(jì)分為以下部分加以介紹:微控芯片選擇、時(shí)鐘電路、復(fù)位電路、存儲(chǔ)器電路、10M/100M以太網(wǎng)接口電路和CAN接口電路。
1、微控芯片選擇。本設(shè)計(jì)選用的處理器是LPC2290ARM芯片,是基于一個(gè)支持實(shí)時(shí)仿真和跟蹤的16/32位的ARM7內(nèi)核。對代碼規(guī)模有嚴(yán)格控制的應(yīng)用,可使用16位Thumb模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。由于LPC2290的144腳封裝、極低的功耗、多個(gè)32位定時(shí)器、8路10位ADC、2路CAN、PWM通道以及多達(dá)9個(gè)外部中斷使它們特別適用于汽車、工業(yè)控制應(yīng)用以及醫(yī)療系統(tǒng)和容錯(cuò)維護(hù)總線。通過配置總線,LPC2290最多可提供76個(gè)GPIO。由于內(nèi)置了寬范圍的串行通訊接口,它們也非常適合于通訊網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器以及其它各種類型的應(yīng)用。
2、時(shí)鐘電路。LPC2290系列ARM7微控制器可使用外部晶振或外部時(shí)鐘源,內(nèi)部PLL電路可調(diào)整系統(tǒng)時(shí)鐘,使系統(tǒng)運(yùn)行速度更快。倘若不使用片內(nèi)PLL功能,則外部晶振頻率為1-30MHz,外部時(shí)鐘頻率為1-50MHz。若使用了片內(nèi)PLL功能,則外部晶振頻率為10--25MHz,外部時(shí)鐘頻率為10--25MHz。本設(shè)計(jì)使用了外部11.0592MHz晶振。
3、復(fù)位電路。由于ARM芯片的高速、低功耗和低工作電壓導(dǎo)致其噪聲容限低,對電源的紋波、瞬態(tài)響應(yīng)性能、時(shí)鐘源的穩(wěn)定性和電源監(jiān)控可靠性等諸多方面也提出了更高的要求。本設(shè)計(jì)中的復(fù)位電路使用了帶IIC存儲(chǔ)器的電源監(jiān)控芯片CAT1025JI-30,提高了系統(tǒng)的可靠性。電路圖如圖2所示。
4、存儲(chǔ)器電路。對于大部分微控制器來說,存儲(chǔ)器系統(tǒng)不是必需的,但如果微控制器沒有片內(nèi)程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器,或者是這些存儲(chǔ)器容量較小時(shí),就必須設(shè)計(jì)存儲(chǔ)器系統(tǒng)。對于ARM芯片來說,存儲(chǔ)器的擴(kuò)展是通過外部總線接口實(shí)現(xiàn)的。本系統(tǒng)擴(kuò)展了2MB NOR Flash(芯片型號(hào)為SST39VF160) , 8MB PSRAM(芯片型號(hào)為MT45W4MW16)。SST39VF160是SST公司的CMOS多功能Flash器件,存儲(chǔ)容量為2MB, 16位數(shù)據(jù)寬度,工作電壓為2.7-3.6V。MT45W4MW16是一個(gè)16位的64Mb器件。
5、Ethernet接口電路。、系統(tǒng)中必不可少的一路l0M/100M Ethernet接口電路,它是通過LPC2290片內(nèi)BANK上擴(kuò)展網(wǎng)絡(luò)接口芯片DM9000實(shí)現(xiàn)的。DM9000是一款快速以太網(wǎng)控制處理器。該處理器配備有標(biāo)準(zhǔn)10M/ 100M自適應(yīng),16K大容量的FIFO,4路多功能GPIO,全雙工工作等功能。
6、CAN接口電路。LPC2290內(nèi)部集成了兩路CAN控制器,所以,在系統(tǒng)中擴(kuò)展了兩路CAN總線接口電路,其中一個(gè)作為整個(gè)系統(tǒng)的主節(jié)點(diǎn),另外一路備用,增加系統(tǒng)的可靠性。因?yàn)镃AN控制器是由芯片內(nèi)部集成的,所以CAN接口電路主要包含兩大部分:隔離部分和CAN總線驅(qū)動(dòng)器部分。為了增加CAN節(jié)點(diǎn)的抗干擾能力,LPC2290集成的CAN控制器引出端并不是直接與總線收發(fā)器的TXD, RXD相連,而是經(jīng)過高速光耦隔離之后才與總線馭動(dòng)器T3A1050相連。這樣就很好地實(shí)現(xiàn)了總線上各CAN節(jié)點(diǎn)的電氣隔離。
4 軟件系統(tǒng)設(shè)計(jì)
CAN-TCP/IP雙向接口轉(zhuǎn)換主系統(tǒng)主要完成CAN協(xié)議和以太網(wǎng)協(xié)議的解析與轉(zhuǎn)換的任務(wù),我們可以得到主系統(tǒng)(CAN-TCP/IP)的模型如圖3所示。
系統(tǒng)層次模型中的CAN總線物理層和數(shù)據(jù)鏈路層相對應(yīng)的是CAN物理接口電路和LPC2290內(nèi)嵌的CAN控制器。以太網(wǎng)控制器DM9000E本身包含了Ethernet物理層和數(shù)據(jù)鏈路層。模型中的其他層次都有處理器運(yùn)行的軟件來實(shí)現(xiàn)。
4.1 嵌入式TCP/IP協(xié)議結(jié)構(gòu)棧設(shè)計(jì)
嵌入式TCP/IP協(xié)議棧的結(jié)構(gòu)比個(gè)人電腦中Windows或UNIX的協(xié)議棧要簡單的多,功能也弱很多?梢詫(shí)現(xiàn)低流量、低速度、少接口、少連接的要求。
本系統(tǒng)TCP/IP協(xié)議棧是以μC/OS-II操作系統(tǒng)為平臺(tái)的。整個(gè)協(xié)議棧要完成兩大功能:發(fā)送數(shù)據(jù)報(bào)和接收數(shù)據(jù)報(bào)。功能的實(shí)現(xiàn)通過系統(tǒng)下編寫的三個(gè)任務(wù)完成。第一個(gè)是接收數(shù)據(jù)報(bào)并進(jìn)行ICMP, ARP處理任務(wù),第二個(gè)是UDP接收任務(wù),第三個(gè)是TCP接收任務(wù)。每個(gè)任務(wù)由若干程序模塊組成。任務(wù)之間的通訊采用的是信號(hào)量或是消息隊(duì)列實(shí)現(xiàn)。圖4所示為協(xié)議棧實(shí)現(xiàn)的流程圖。
圖示中標(biāo)出了整個(gè)協(xié)議棧的分層結(jié)構(gòu)。接收任務(wù)與UDP和TCP任務(wù)的通訊是通過消息隊(duì)列實(shí)現(xiàn)的。而UDP接收任務(wù)和TCP接收任務(wù)是通過SOCKET接口與應(yīng)用層的程序進(jìn)行通訊的。
1、數(shù)據(jù)報(bào)的接收,數(shù)據(jù)報(bào)的接收是通過一個(gè)任務(wù)進(jìn)行的,同時(shí)也包括ICMP和ARP處理,即接收和ICMP, ARP處理任務(wù)。在整個(gè)任務(wù)調(diào)度中,該任務(wù)的優(yōu)先級較高,通過時(shí)間片來觸發(fā)。數(shù)據(jù)報(bào)的接收過程是由下層協(xié)議調(diào)用上層協(xié)議進(jìn)行的。接收任務(wù)中的接收函數(shù),即數(shù)據(jù)鏈路層函數(shù)Rec_Packet(),它在接收時(shí)調(diào)用本層函數(shù)Rec_Ethernet_Packet()進(jìn)行以太網(wǎng)數(shù)據(jù)處理。而Rec_Ethernet_Packet()又調(diào)用網(wǎng)絡(luò)層函數(shù)IP_PROCESS()函數(shù)進(jìn)行處理,對不同類型的IP報(bào)進(jìn)行分類。這些都是在網(wǎng)絡(luò)層進(jìn)行。如果是ICMP報(bào),就交給icmp_process()函數(shù)處理。而TCP或UDP報(bào)就通過消息隊(duì)列交給TCP或UDP處理任務(wù)去執(zhí)行。同時(shí)Rec_Ethernet_Packet()根據(jù)不同的IP段決定是否進(jìn)行ARP處理。具體流程如圖5。
2、數(shù)據(jù)報(bào)的發(fā)送。數(shù)據(jù)的發(fā)送與數(shù)據(jù)報(bào)的接收是一個(gè)相反的過程,由上層協(xié)議函數(shù)調(diào)用下層協(xié)議函數(shù)。傳輸層TCP , UDP處理函數(shù)或SOCKET接口函數(shù)通過調(diào)用網(wǎng)絡(luò)層函數(shù)Send_Ip_Frame()來發(fā)送IP報(bào)。而Send_Ip_Frame()函數(shù)調(diào)用Send_Ip_To_LLC()函數(shù)來處理IP地址對應(yīng)MAC地址的事情,然后Send_Ip_To_LLC()調(diào)用下層數(shù)據(jù)鏈路層函數(shù)Send_ethernet_Frame()函數(shù)進(jìn)行發(fā)送,最后調(diào)用驅(qū)動(dòng)程序的發(fā)送函數(shù)Send_Pack().
4.2 系統(tǒng)應(yīng)用層程序設(shè)計(jì)
應(yīng)用層軟件操作的思路為:當(dāng)連接在CAN總線上的設(shè)備向Ethernet網(wǎng)發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)首先通過CAN接口電路發(fā)送到主系統(tǒng),通過應(yīng)用層協(xié)議中對應(yīng)的程序,提取需要傳送的數(shù)據(jù),然后對數(shù)據(jù)分別添加TCP和IP層所需要的信息。ARM處理器將經(jīng)過封裝的數(shù)據(jù)發(fā)送給以太網(wǎng)控制芯片DM9000。由于Ethernet物理層和邏輯鏈路層都是由DM9000實(shí)現(xiàn)的,所以DM9000自動(dòng)給這些數(shù)據(jù)添加以太網(wǎng)物理層和邏輯鏈路層所需要的相關(guān)信息,通過物理接口傳送到以太網(wǎng)上。這時(shí)監(jiān)控計(jì)算機(jī)就可以通過網(wǎng)卡接收到CAN總線上設(shè)備所傳遞過來的信息。反之,當(dāng)監(jiān)控計(jì)算機(jī)向總線上設(shè)備發(fā)出控制信息時(shí),它首先將數(shù)據(jù)發(fā)送到以太網(wǎng)控制器DM9000,核心處理器LPC2290從DM9000中接收到數(shù)據(jù)時(shí),提取實(shí)際要傳送的數(shù)據(jù),然后封裝成CAN總線數(shù)據(jù)格式,通過CAN總線將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)中的現(xiàn)場設(shè)備。
本文作者創(chuàng)新點(diǎn)
本文針對CAN總線網(wǎng)絡(luò)與以太網(wǎng)的互聯(lián)問題進(jìn)行介紹,開發(fā)了基于μC/OS-II的CAN-TCP/IP嵌入式系統(tǒng),完成了系統(tǒng)相關(guān)軟硬件設(shè)計(jì)。
參考文獻(xiàn):
[1] 史久根、張培仁、陳真勇.CAN現(xiàn)場總線系統(tǒng)設(shè)計(jì)技術(shù)[M].北京:國防工業(yè)出版社.2004. 10
[2] 王泓.CAN總線的消息機(jī)制[J].中國測試技術(shù).2006. 32[1]: 130-132
[3] 任泰明.TCP/IP協(xié)議與網(wǎng)絡(luò)編程[M].西安:西安電子科技大學(xué)出版社.2004.4
[4] 金衛(wèi)民,神顯豪,鞏傳雷. 基于CAN總線的DNC遠(yuǎn)程診斷及監(jiān)控系統(tǒng)[J]. 微計(jì)算機(jī)信息, 2006,12-2: 32-34