CANopen應(yīng)用以及嵌入式網(wǎng)絡(luò)多接口問(wèn)題
——
近來(lái),許多嵌入式應(yīng)用都涉及到嵌入式網(wǎng)絡(luò)問(wèn)題,應(yīng)用中使用了多個(gè)微控制器,它們之間相互通信。這樣做是因?yàn)橄到y(tǒng)的控制是分布式的,或者是因?yàn)檫h(yuǎn)程傳感器和執(zhí)行器需要連接到主控制單元。
最近的趨勢(shì)之一是在一個(gè)系統(tǒng)內(nèi)使用多個(gè)嵌入式網(wǎng)絡(luò)。使用多個(gè)網(wǎng)絡(luò)有助于使單個(gè)網(wǎng)絡(luò)上的負(fù)載保持較低和更可預(yù)測(cè)。使用多個(gè)網(wǎng)絡(luò)的另一個(gè)需求是當(dāng)需要把在嵌入式網(wǎng)絡(luò)上采集的數(shù)據(jù)傳送到更高控制層或統(tǒng)計(jì)數(shù)據(jù)采集層時(shí),經(jīng)常負(fù)責(zé)將數(shù)據(jù)向更高控制層報(bào)告的網(wǎng)絡(luò)具有一些與傳感器和執(zhí)行機(jī)構(gòu)上的網(wǎng)絡(luò)完全不同的要求,因而可能采用完全不同的技術(shù)和網(wǎng)絡(luò)協(xié)議棧。為了實(shí)現(xiàn)這兩種網(wǎng)絡(luò)之間的接口,就需要采用某種橋接或網(wǎng)關(guān)技術(shù)。
協(xié)議轉(zhuǎn)換
用于嵌入式網(wǎng)絡(luò)的網(wǎng)橋和網(wǎng)關(guān)不僅要能夠接收和轉(zhuǎn)發(fā)信息,通常還需要執(zhí)行協(xié)議轉(zhuǎn)換工作。CAN總線上使用的協(xié)議可能是DeviceNet或CANopen,而以太網(wǎng)上使用的協(xié)議則可能為TCP/IP。為了能夠?qū)?shù)據(jù)從其中一個(gè)網(wǎng)絡(luò)向其他網(wǎng)絡(luò)傳遞,可能需要執(zhí)行進(jìn)一步的數(shù)據(jù)處理,一個(gè)網(wǎng)關(guān)不僅需要實(shí)現(xiàn)所有協(xié)議棧,而且還需要能夠進(jìn)行處理。另外還需要一些詳細(xì)的配置,以便讓網(wǎng)關(guān)知道要把哪個(gè)網(wǎng)絡(luò)上的哪個(gè)數(shù)據(jù)轉(zhuǎn)發(fā)到另外的某一網(wǎng)絡(luò)上。
轉(zhuǎn)發(fā)器、網(wǎng)橋和網(wǎng)關(guān)
當(dāng)需要在不同網(wǎng)絡(luò)架構(gòu)間進(jìn)行接口時(shí),有多種多樣可實(shí)現(xiàn)這些網(wǎng)絡(luò)互連的方法,最常用的就是轉(zhuǎn)發(fā)器、網(wǎng)橋和網(wǎng)關(guān)。就硬件和軟件要求而言,包括開發(fā)和配置在內(nèi),轉(zhuǎn)發(fā)器、網(wǎng)橋和網(wǎng)關(guān)之間在復(fù)雜度上存在很大差別。轉(zhuǎn)發(fā)器不需要微控制器和軟件就可以開發(fā),網(wǎng)橋則需要有一個(gè)中等性能的微控制器/微處理器,并運(yùn)行熟悉選定網(wǎng)絡(luò)協(xié)議特性的軟件。而網(wǎng)關(guān)則需要有一個(gè)高端微控制器/微處理器,并運(yùn)行功能全面的軟件包,它需要能夠理解與之連接的“所有”網(wǎng)絡(luò)協(xié)議和“所有”傳送數(shù)據(jù)的詳盡配置信息。只有擁有這些信息,網(wǎng)關(guān)才能做出決策,決定將哪個(gè)數(shù)據(jù)如何轉(zhuǎn)發(fā)以及發(fā)往何處。
網(wǎng)橋和網(wǎng)關(guān)對(duì)微控制器的要求
對(duì)網(wǎng)橋或網(wǎng)關(guān)中使用微控制器的第一個(gè)要求是要能夠訪問(wèn)需要進(jìn)行互連的嵌入式網(wǎng)絡(luò)。所需的這些通信接口越是集成在片上,網(wǎng)橋或網(wǎng)關(guān)的實(shí)現(xiàn)就會(huì)更簡(jiǎn)單和更經(jīng)濟(jì)。添加外圍元器件來(lái)處理這些通信接口通常要花更多成本(增加芯片數(shù)量和PCB板空間)。
其次,微控制器需要具備足夠的性能來(lái)處理這些接口上惡劣情況下的通信負(fù)荷,以保證沒有信息丟失。在此,需要著重指出的是,不僅要考慮總吞吐率,還要考慮最差情況延遲,這種情況可能會(huì)在中斷服務(wù)程序從接收緩沖區(qū)中檢索數(shù)據(jù)前發(fā)生。
最后,微控制器需要能夠訪問(wèn)一定容量的RAM和非易失性存儲(chǔ)器。RAM用于在將數(shù)據(jù)轉(zhuǎn)發(fā)到其他網(wǎng)絡(luò)前對(duì)數(shù)據(jù)進(jìn)行緩沖/暫存以便處理。非易失性存儲(chǔ)器(如EEPROM或Flash)用于存儲(chǔ)配置信息,這些信息可決定將來(lái)自哪個(gè)網(wǎng)絡(luò)的哪個(gè)數(shù)據(jù),通過(guò)什么方式轉(zhuǎn)發(fā)到其他哪個(gè)網(wǎng)絡(luò)。一般而言,網(wǎng)關(guān)需要的RAM比網(wǎng)橋要多得多,網(wǎng)橋需要的RAM比轉(zhuǎn)發(fā)器要多得多。
至于所需的性能要求,一般的流行通信接口可分為三組:
◆ 面向字節(jié)通信(RS-485、LIN、I2C)
可通過(guò)低性能微控制器來(lái)處理,包括許多8位衍生系列控制器。
◆ 面向消息、小量、高速率(CAN)
如果要處理兩個(gè)接口,一般至少需要使用一個(gè)中等性能的16位微控制器。如果要處理三個(gè)或更多接口,則需要使用一個(gè)32位微控制器。
◆ 面向消息、大量、中等速率(以太網(wǎng))
要實(shí)現(xiàn)網(wǎng)橋或網(wǎng)關(guān)的高效處理,一般需要使用一個(gè)32位微控制器。
使用微控制器示例
以飛利浦公司的LPC2000系列微控制器為例,LPC2000是基于ARM7的32位高性能微控制器,具有多種通信接口。LPC2000系列產(chǎn)品目前最多具有4個(gè)CAN接口、2個(gè)UART和2個(gè)I2C接口。未來(lái)還將提供具有附加以太網(wǎng)和USB接口的衍生系列。32位性能(頻率最高可達(dá)60MHz)與眾多通信接口的結(jié)合,使LPC2000適合許多橋接和網(wǎng)關(guān)應(yīng)用。
ESAcademy的測(cè)試表明,LPC2000可在不到5毫秒的時(shí)間內(nèi)處理一條由高層協(xié)議(如CANopen)使用的CAN消息,這種處理包含了有關(guān)該數(shù)據(jù)的所有高層協(xié)議解釋。作為直接對(duì)比,一個(gè)中等性能的16位微控制器執(zhí)行同一任務(wù)需要約160毫秒。
對(duì)于使用所有4個(gè)CAN接口、通信速率為1Mbps、且總線負(fù)荷為100%時(shí)的最差情況,LPC2000平均可每12.5毫秒處理一個(gè)消息(4個(gè)CAN接口中每個(gè)接口每50毫秒一個(gè)消息),從而使CPU負(fù)荷低于50%。
采用公共協(xié)議縮短開發(fā)時(shí)間
多種網(wǎng)絡(luò)技術(shù)及協(xié)議之間的嵌入式網(wǎng)關(guān)的開發(fā)需要更高端的處理能力和進(jìn)行大量的軟件開發(fā),每種網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)必須具備將消息從一個(gè)網(wǎng)絡(luò)協(xié)議轉(zhuǎn)發(fā)到其他網(wǎng)絡(luò)協(xié)議的方法。然而,如果在不同網(wǎng)絡(luò)技術(shù)中采用一種公共協(xié)議,則可以大大減少此類網(wǎng)橋和網(wǎng)關(guān)的開發(fā)工作。
公共協(xié)議CANopen頗受歡迎
公共協(xié)議的一個(gè)例子就是CANopen,它不僅可以在CAN上運(yùn)行,而且可以在很多的各種串行總線以及以太網(wǎng)上運(yùn)行,這極大地簡(jiǎn)化了網(wǎng)橋或網(wǎng)關(guān)的開發(fā),具體表現(xiàn)在多個(gè)方面:首先,由于多個(gè)接口采用同一協(xié)議,因此協(xié)議棧的開發(fā)被大大簡(jiǎn)化,一些代碼程序和獨(dú)立于硬件的功能可以共享。其次,由于交換的數(shù)據(jù)仍然處于同一協(xié)議內(nèi),因此網(wǎng)橋或網(wǎng)關(guān)的配置得以簡(jiǎn)化。它不需要先進(jìn)行完全轉(zhuǎn)換然后再重新提交給某個(gè)網(wǎng)絡(luò)協(xié)議棧,從而能夠獲得較快的轉(zhuǎn)發(fā)機(jī)制。
需要指出的是,上述網(wǎng)橋或網(wǎng)關(guān)的開發(fā)絕非“只是容易了一點(diǎn)”,而是整個(gè)復(fù)雜度被大大簡(jiǎn)化。例如,假定一個(gè)網(wǎng)關(guān)需要處理三種不同的網(wǎng)絡(luò)技術(shù):RS-485傳統(tǒng)網(wǎng)絡(luò)、CAN及以太網(wǎng)。如果所有三種網(wǎng)絡(luò)采用不同的網(wǎng)絡(luò)協(xié)議,那么這些協(xié)議棧都必須實(shí)現(xiàn),另外還必須創(chuàng)建并維護(hù)數(shù)據(jù)轉(zhuǎn)發(fā)表和/或算法。
但如果所有三種網(wǎng)絡(luò)技術(shù)采用一種公共協(xié)議,那么協(xié)議棧的開發(fā)時(shí)間將只占到開發(fā)3種不同協(xié)議時(shí)開發(fā)時(shí)間的30%~50%。此外,數(shù)據(jù)轉(zhuǎn)發(fā)算法也將只占原來(lái)開發(fā)時(shí)間的30%~50%,因?yàn)檗D(zhuǎn)發(fā)數(shù)據(jù)是在同一協(xié)議內(nèi)進(jìn)行的,這比將數(shù)據(jù)重新打包成不同協(xié)議要簡(jiǎn)單得多。
CANopen衍生協(xié)議已應(yīng)用在多種串行總線(MicroMessaging)及以太網(wǎng)(Ethernet-Powerlink)上,并獲得很大成功,使CANopen成為公共網(wǎng)絡(luò)協(xié)議首選協(xié)議的理由還有:
◆ 其在標(biāo)準(zhǔn)可獲得性方面的開放性(規(guī)范可從CiA-CAN自動(dòng)化用戶及制造商組織獲得)
◆ 可針對(duì)深度嵌入式應(yīng)用進(jìn)行定制的開放性(可針對(duì)應(yīng)用要求進(jìn)行優(yōu)化)
◆ 最小形狀因子、最小實(shí)現(xiàn)可使用一些最小的8位微控制器
◆ 應(yīng)用程序獨(dú)立性(不只限定于某個(gè)特定的、有限的用途)
◆ 數(shù)量眾多的開發(fā)工具提供商,如配置工具、監(jiān)測(cè)器、分析儀、庫(kù)、源代碼和現(xiàn)成產(chǎn)品。
總之,CANopen非常適合用于多種通信技術(shù),只要這些技術(shù)是提供某些基本的、公共的要求。
使用嵌入式網(wǎng)絡(luò)的應(yīng)用多種多樣,汽車、工業(yè)或機(jī)械控制之類的應(yīng)用使用嵌入式網(wǎng)絡(luò)已經(jīng)有多年了。如今,幾乎任何包含執(zhí)行機(jī)構(gòu)(如電驅(qū)動(dòng)/電機(jī)、水力或氣動(dòng)機(jī)械)的機(jī)械均使用了嵌入式網(wǎng)絡(luò),而微控制器的不斷升級(jí)換代對(duì)嵌入式網(wǎng)絡(luò)橋接技術(shù)的發(fā)展也起到了關(guān)鍵的推動(dòng)作用。
評(píng)論